<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>مدونة مبدع</title>
	
	<link>http://www.mubde3.net/blog</link>
	<description>مدونة أعرض من خلالها مواضيع في التقنية وتطوير المواقع والتصميم وأشياء أخرى.</description>
	<lastBuildDate>Tue, 09 Mar 2010 21:22:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/mobde3net" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="mobde3net" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">mobde3net</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>مختارات من تويتر #2</title>
		<link>http://www.mubde3.net/blog/archives/chosen-from-twitter-2</link>
		<comments>http://www.mubde3.net/blog/archives/chosen-from-twitter-2#comments</comments>
		<pubDate>Tue, 09 Mar 2010 21:19:31 +0000</pubDate>
		<dc:creator>أحمد الكثيري</dc:creator>
				<category><![CDATA[من هنا وهناك]]></category>
		<category><![CDATA[روابط]]></category>

		<guid isPermaLink="false">http://www.mubde3.net/blog/?p=1776</guid>
		<description><![CDATA[روابط إخترتها لكم من التغريدات التي نشرتها عبر حسابي في تويتر إما  مباشرة مني أو عبر إعادة تغريدة أحد الذين أتابعهم.
CSS3 Dropdown Menu

درس يشرح طريقة عمل قائمة روابط منزلقة عند تمرير الفأرة عليها بطريقة جميلة جداً وبإستخدام CSS3.

مقابلة مع مصمم ومطور المواقع سو تاناكا

25jQuery Tutorials for Creating and Working with Forms

25 درس حول التعامل [...]]]></description>
			<content:encoded><![CDATA[<p><em>روابط إخترتها لكم من التغريدات التي نشرتها عبر <a href="http://twitter.com/mobde3net/">حسابي في تويتر</a> إما  مباشرة مني أو عبر إعادة تغريدة أحد الذين أتابعهم.</em></p>
<h3><a href="http://www.webdesignerwall.com/tutorials/css3-dropdown-menu/">CSS3 Dropdown Menu</a></h3>
<p style="text-align: center;"><a href="http://www.webdesignerwall.com/tutorials/css3-dropdown-menu/"><img class="alignnone size-full wp-image-1777" title="css3dropdown" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/css3dropdown.jpg" alt="" width="530" height="190" /></a></p>
<p>درس يشرح طريقة عمل قائمة روابط منزلقة عند تمرير الفأرة عليها بطريقة جميلة جداً وبإستخدام CSS3.</p>
<p><span id="more-1776"></span></p>
<h3><a href="http://www.qaswlasq.com/2010/02/23/%D9%85%D9%82%D8%A7%D8%A8%D9%84%D8%A9-%D9%85%D8%B9-%D9%85%D8%B5%D9%85%D9%85-%D9%88%D9%85%D8%B7%D9%88%D8%B1-%D8%A7%D9%84%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D8%B3%D9%88-%D8%AA%D8%A7%D9%86%D8%A7%D9%83%D8%A7/">مقابلة مع مصمم ومطور المواقع سو تاناكا</a></h3>
<p style="text-align: center;"><a href="http://www.qaswlasq.com/2010/02/23/%D9%85%D9%82%D8%A7%D8%A8%D9%84%D8%A9-%D9%85%D8%B9-%D9%85%D8%B5%D9%85%D9%85-%D9%88%D9%85%D8%B7%D9%88%D8%B1-%D8%A7%D9%84%D9%85%D9%88%D8%A7%D9%82%D8%B9-%D8%B3%D9%88-%D8%AA%D8%A7%D9%86%D8%A7%D9%83%D8%A7/"><img class="size-full wp-image-1778 aligncenter" title="sotanoka" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/sotanoka.jpg" alt="" width="530" height="190" /></a></p>
<h3><a href="http://designm.ag/tutorials/jquery-forms/">25jQuery Tutorials for Creating and Working with Forms</a></h3>
<p style="text-align: center;"><a href="http://designm.ag/tutorials/jquery-forms/"><img class="alignnone size-full wp-image-1779" title="25jquery" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/25jquery.jpg" alt="" width="530" height="190" /></a></p>
<p>25 درس حول التعامل مع نماذج HTML بإستخدام مكتبة jQuery.</p>
<h3><a href="http://ahmedhamouda.me/2035">عن Google Analytics نتحدث</a></h3>
<p style="text-align: center;"><a href="http://ahmedhamouda.me/2035"><img class="size-full wp-image-1780 aligncenter" title="googleanalytics" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/googleanalytics.jpg" alt="" width="530" height="190" /></a></p>
<h3><a href="http://www.smashingshare.com/2010/01/19/10-tips-to-create-a-motivating-working-environment-at-home/">10Tips to Create a Motivating Working Environment at Home</a></h3>
<p style="text-align: center;"><a href="http://www.smashingshare.com/2010/01/19/10-tips-to-create-a-motivating-working-environment-at-home/"><img class="size-full wp-image-1781 aligncenter" title="motivatework" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/motivatework.jpg" alt="" width="530" height="190" /></a></p>
<p>مقالة تتحدث عن كيفية تكوين البيئة الدافعة أو المحفزة على الإنتاجية عند العمل من المنزل.</p>
<h3><a href="http://www.noupe.com/tutorial/70-ultimate-cinema-4d-tutorials-techniques.html">70Ultimate Cinema 4D Tutorials &amp; Techniques</a></h3>
<p style="text-align: center;"><a href="http://www.noupe.com/tutorial/70-ultimate-cinema-4d-tutorials-techniques.html"><img class="size-full wp-image-1782 aligncenter" title="cinema4d" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/cinema4d.jpg" alt="" width="530" height="190" /></a></p>
<p>مقالة تعرض 70 درس عملي جديد حول برنامج Cinema 4D، أعجبتني جداً الدروس المعروضة في هذا الرابط وخاصة أفضل هذا البرنامج لسهولة إستعماله وجودة عمله ولكنه غير متاح مجاناً.</p>
<h3 style="text-align: right;"><a href="http://www.myinkblog.com/2010/03/01/brainstorming-tips-techniques-for-bloggers/">Brainstorming Tips  &amp; Techniques for Bloggers</a></h3>
<h3 style="text-align: center;"><a href="http://www.myinkblog.com/2010/03/01/brainstorming-tips-techniques-for-bloggers/"><img title="brainstormbloggers" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/brainstormbloggers.jpg" alt="" width="530" height="190" /></a></h3>
<p style="text-align: right;">مقالة توفر عدة نصائح وطرق حول العصف الذهني للمدونين، وهي تفيد المدونين في عدة أمور مثل كتابة المواضيع وتنظيمها.</p>
<h3><a href="http://www.sparab.com/2010/02/%D9%85%D9%82%D8%A7%D8%B7%D8%B9-%D9%85%D8%B1%D8%A6%D9%8A%D8%A9-%D9%84%D8%AE%D8%B7%D9%88%D8%A7%D8%AA-%D8%A7%D9%84%D8%B1%D8%B3%D9%85/">مقاطع  مرئية لخطوات الرسم</a></h3>
<p style="text-align: center;"><a href="http://www.sparab.com/2010/02/%D9%85%D9%82%D8%A7%D8%B7%D8%B9-%D9%85%D8%B1%D8%A6%D9%8A%D8%A9-%D9%84%D8%AE%D8%B7%D9%88%D8%A7%D8%AA-%D8%A7%D9%84%D8%B1%D8%B3%D9%85/"><img class="aligncenter" title="paintvedios" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/paintvedios.jpg" alt="" width="530" height="190" /></a></p>
<h3 style="text-align: right;"><a href="http://www.alhrbi-m.com/%D8%A7%D8%B3%D9%84%D8%A7%D9%85%D9%86%D8%A7-%D9%87%D9%88-%D9%86%D9%87%D8%B6%D8%AA%D9%86%D8%A7">اسلامنا هو نهضتنا</a></h3>
<p style="text-align: center;"><a href="http://www.alhrbi-m.com/%D8%A7%D8%B3%D9%84%D8%A7%D9%85%D9%86%D8%A7-%D9%87%D9%88-%D9%86%D9%87%D8%B6%D8%AA%D9%86%D8%A7"><img class="size-full wp-image-1826 aligncenter" title="islamrebirth" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/islamrebirth.jpg" alt="" width="530" height="190" /></a></p>
<div class="tweetmeme_button" style="float: left; margin: 10px 500px 10px 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.mubde3.net%2Fblog%2Farchives%2Fchosen-from-twitter-2"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.mubde3.net%2Fblog%2Farchives%2Fchosen-from-twitter-2" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.mubde3.net/blog/archives/chosen-from-twitter-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>6 أفكار تساعد على الإستفادة الفعالة من الوقت</title>
		<link>http://www.mubde3.net/blog/archives/5-ideas-help-to-active-benefiting-from-time</link>
		<comments>http://www.mubde3.net/blog/archives/5-ideas-help-to-active-benefiting-from-time#comments</comments>
		<pubDate>Tue, 09 Mar 2010 21:17:13 +0000</pubDate>
		<dc:creator>أحمد الكثيري</dc:creator>
				<category><![CDATA[مواضيع عامة]]></category>
		<category><![CDATA[تغيير]]></category>

		<guid isPermaLink="false">http://www.mubde3.net/blog/?p=1792</guid>
		<description><![CDATA[الكل يسعى للإستفادة من وقته بشكل فعال، بالرغم من وجود الظروف التي تسبب تضييق للوقت، الإنشغال بأمور لا تريد عملها أو بأمور أخرى عامة.
في هذه التدوينة سأعرض 6 أفكار تساعد على الإستفادة الفعالة من الوقت، وكتبتها خاصة للمطورين والمصممين أو مستخدمي الإنترنت عموماً وهي موجهة لهم أكثر من غيرهم. يمكن أن يستفيد منها بالأخص المضغوطين [...]]]></description>
			<content:encoded><![CDATA[<p>الكل يسعى للإستفادة من وقته بشكل فعال، بالرغم من وجود الظروف التي تسبب تضييق للوقت، الإنشغال بأمور لا تريد عملها أو بأمور أخرى عامة.</p>
<p>في هذه التدوينة <strong>سأعرض 6 أفكار تساعد على الإستفادة الفعالة من الوقت</strong>، وكتبتها خاصة للمطورين والمصممين أو مستخدمي الإنترنت عموماً وهي موجهة لهم أكثر من غيرهم. يمكن أن يستفيد منها بالأخص المضغوطين في أعمالهم مثل أصحاب الأعمال الحرة مثل المصممين، المطورين، الكتاب، .. وغيرهم.</p>
<p><span id="more-1792"></span></p>
<h3>أفكار تساعد على الإستفادة من الوقت أكثر</h3>
<p>بالنسبة لجدوى هذه الأفكار قد لاتناسب الجميع والكل له رأيه، بالطبع هي من أفكاري يمكن أن تكون صحيحة أو خاطئة ولكن أعتبرها مفيدة  بالنسبة لي وأنا أعمل بها إلى الآن.</p>
<h4>التركيز على شيء واحد</h4>
<p style="text-align: center;"><img class="size-full wp-image-1800 aligncenter" title="focus-on-one-thing" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/focus-on-one-thing.jpg" alt="" width="530" height="190" /></p>
<p>من الطرق المنطقية للإنجاز هي أن تركز على عمل شيء لفترة أطول دون الإنشغال بغيره بحيث أيضاً تتجنب المهمات المتعددة ومن الصعوبة أن تركز في شيئين في نفس الوقت، وأنا أقصد في هذه الفكرة أن يتم <strong>التركيز على المهمة لمدة كافية</strong> دون الإنقطاع.</p>
<p>هناك مثال أعتقد أنه قد يمر بالمستخدم يومياً مثلاً أثناء تصفحه على الإنترنت ويكون لديه عمل على الجهاز ويدخل لأكثر من 10 مرات إلى البريد الإلكتروني! حتى تصبح هذه العادة تسير بشكل لا إرادي! بغض النظر عن مميزات البريد الذي يجعلك لا تفارقه عدة مرات مثل Gmail إلا أن الأفضل تأجيل مثل هذه الأشياء إلى ما بعد إنجاز المهمة التي لديك إلا إذا كان هذا الشيء ضروري أو قبل البدأ بمهمة أخرى تقوم بالدخول إلى البريد الإلكتروني أو عمل أشياء الروتينية الغير مهمة.</p>
<p>كذلك إختصار الوقت في الوصول إلى المصادر المتعلقة بالعمل الذي تقوم به إذا كنت تعمل على مشروع معين فهذا يختصر عليك ويجنبك تحويل مجرد البحث عن مشكلة ما في المشروع إلى مهمة أخرى!</p>
<h4>التخلص من عدة أشياء</h4>
<p style="text-align: center;"><img class="size-full wp-image-1802 aligncenter" title="leave-many-things" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/leave-many-things.jpg" alt="" width="530" height="190" /></p>
<p>هناك <strong>أشياء يجب التخلص منها يمكن أن تعيق عملك</strong>، ربما الكثير من الأشياء التي تضيع وقتك تأتي أثناء تصفحك للإنترنت. إذا كنت تتابع مدونات عبر قاريء الخلاصات يمكنك أن تجعل هذه المهمة في آخر اليوم أو بعد إنجاز مهمتك لا تجعلها تأخذ الكثير من وقتك وخاصةً إن كان لديك الكثير من المدونات هذه فرصة للتخلص من المدونات التي لم تتابعها من فترة أو التي لم تستفد منها الكثير.</p>
<p>أيضاً روابط المفضلة المؤقتة، الملفات القديمة التي لم تستخدمها من فترة (ما لم تكن مهمة بالطبع) تخلص منها! كذلك التطبيقات المعقدة التي تأخذ من وقتك الكثير يفضل أن تجد بدائل بسيطة لها .</p>
<p>إهتم بالتنفيذ أكثر من التخطيط لأن التخطيط سهل جداً والذي يفترض ألا يأخذ الكثير من وقتك، وتجنب التأجيل أيضاً لكي لا تتراكم عليك المهمات دائماً.</p>
<h4>إستخدام قائمة المهمات &#8211; To Do List</h4>
<p style="text-align: center;"><img class="aligncenter" title="to-do-list" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/to-do-list.jpg" alt="" width="530" height="190" /></p>
<p>الطريقة الأسهل والأسرع في التخطيط هي <strong>كتابة قائمة بالمهمات التي تريد أن تنفذها</strong> أو ما يسمى To-do list، أبسط تنفيذ لها أن تكتب مهامك اليومية على ورقة وخاصة المهام الجديدة عليك أو التي نادراً ما تفعلها والتي تريد تجنب نسيانها. وإلتزم بتفيذ هذه المهام وأشطب المهمة التي أنجزتها وهكذا.</p>
<p>أنصحك بتجنب كتابة المهام الروتينية لأن كتابتها مضيعة للوقت، ما الفائدة من كتابة مهمة تفعلها يومياً دون الحاجة إلى أن تذكر نفسك بها!</p>
<p>هناك الكثير من التطبيقات التي توفر كتابة المهام بهذه الطريقة توفرة كتطبيقات على سطح المكتب أو تطبيقات ويب، تجدها في أسفل الموضوع.</p>
<h4>تخصيص مدة معينة لإنجاز المهمات</h4>
<p style="text-align: center;"><img class="size-full wp-image-1803 aligncenter" title="specific-time" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/specific-time.jpg" alt="" width="530" height="190" /></p>
<p>إن أعطيت شيء من وقتك <strong>ستجد نتائجه بالقدر الذي حددته</strong>، هذه الفكرة من الصعب تنفيذها لسبب بسيط وهو وجود الموعد النهائي للإنجاز، تذكر أني ذكرت أنها صعبة يعني أنها ليست مستحيلة وهي ممكنة ولكن هذا يعتمد عليك.</p>
<p>المزاج قد يكون متغير حسب الظرف الذي يمر فيه الشخص، هناك فرق بين أن تنفذ مهمة خاصة لك ومهمة خاصة لغيرك مثل عميل الخدمة التي تقدمها، بالطبع الثانية أصعب ومسؤوليتها قد تكون أكبر من الأولى. اما إذا كانت مهامك شخصية أو متعلقة بك مثل مشروع تملكه وتقوم بتنفيذه فهناك عدة فرص للإهمال!</p>
<p>لتفادي المماطلة في تنفيذ المهام وإهمالها هناك عدة نقاط أقترحها عليك:</p>
<ul>
<li>عمل تحدي مع النفس لإنجاز عدة مهام خلال فترة معينة أو مهمة واحدة وكبيرة خلال فترة معينة وكافيء نفسك على هذا الإنجاز.</li>
<li>إيجاد الدافع، المادي و المعنوي أو أحدهما لتحقيق الإنجاز الذي تريده. وذلك لا يتم إلا بوضع الأهداف وتوقع النتيجة.</li>
<li>تقسيم العمل إلى أجزاء، خاصة عند التعامل مع المشاريع الضخمة ولكن في نفس الوقت يمكنك فعل ذلك مع المشاريع الصغيرة وهذه الطريقة تساعدك على الإنجاز بوقت قصير.</li>
<li>الكتابة عن المرحلة التي تمر فيها، مثل ممارسة التدوين والكتابة عن الإنجازات والإخفاقات وتلقي تعليقات مقترحة من القراء. (يجب أن تستثني الردود السلبية)</li>
<li>إنحاز واحد كل شهر، يعني أن تنجز كل شهر هدف معين من الأهداف السنوية التي وضعتها. (إذا كنت تعتمد على نمط الأهداف السنوية)</li>
</ul>
<h4>تغيير طريقة العمل</h4>
<p style="text-align: center;"><img class="size-full wp-image-1804 aligncenter" title="change-method" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/change-method.jpg" alt="" width="530" height="190" /></p>
<p>تغيير طريقة العمل <strong>تساعد بشكل كبير في زيادة الإنتاجية وإنجاز المهمات</strong>، خاصة إذا زادت المسؤوليات والمهمات أكثر فهنا إذا كانت النتيجة الحالية سيئة يجب تغيير طريقة التعامل معها.</p>
<p>في إدارة الوقت هناك أنظمة أو تقنيات منهجية متوفرة وإستخداماتها مفيدة مثل:</p>
<ul>
<li><a href="http://en.wikipedia.org/wiki/Getting_Things_Done">نظام GTD</a>، إختصار لـ Getting Things Done.</li>
<li><a href="http://en.wikipedia.org/wiki/Pomodoro_Technique">تقنية Pomodoro</a>، وتعتمد على وقت محدد لكل إنجاز ( مثل 25 دقيقة لكل مهمة و5 دقائق راحة و15 إلى 20 دقيقة راحة لكل  4 مهمات) يمكن تعديل المسار حسب إحتياجاتك.</li>
</ul>
<h4>إستخدام أسلوب التعويض</h4>
<p style="text-align: center;"><img class="size-full wp-image-1805 aligncenter" title="compensation" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/compensation.jpg" alt="" width="530" height="190" /></p>
<p>إقتبست الفكرة من <a href="http://en.wikipedia.org/wiki/Compensation_%28psychology%29">مفهوم التعويض</a> في علم النفس وهو <strong>محاولة الفرد النجاح في ميدان لتعويض عجزه في ميدان آخر</strong>، وهي فكرة ليست إيجابية بعض الشيء <img src='http://www.mubde3.net/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ولكن للتوضيح أكثر نضعها نستخدمها في موضع آخر، مثل المهمة التي تتوقف فجأة وتنتظر فترة من الوقت وربما الوقت يكون مجهول! ولكنك في تقوم بإستغلال الوقت بدلاً من تضييعه في الإنتظار في تنفيذ مهمة أخرى إلى أن تكمل المهمة السابقة وهنا تنجح إستغلال وقتك بشيء مفيد.</p>
<p>أيضاً، تعوض فشلك في مهمة أو مشروع بنجاحك في مشروع آخر، وهذه هي النقطة الرئيسية للفكرة مع أنها قد تكون سلبية في رأي الآخرين.</p>
<h3>تلميحات حول الإستفادة من الوقت</h3>
<p>هناك عدة تلميحات حول الإستفادة من الوقت بشكل أفضل عند تنفيذ المهام التي تريدها، هذه قائمة ببعض الملاحظات حول ما ذكرت في الموضوع لتوضيح عملية كل واحدة منها:</p>
<h4>إستعن بالله في أداء مهامك</h4>
<p>التوفيق أولاً وأخيراً بيد الله، فأستعن بالله في كافة أعمالك وتنفيذ مهامك.</p>
<h4>إستفد من الأخطاء</h4>
<p>مهما عملت بهذه الأفكار أو بأفكار أخرى ستقع  على الأقل في خطأ واحد، فكر دائماً كيفية تجنب الأخطاء التي تحصل عند تنفيذ  مهامك، وللإستفادة أكثر اكتب قائمة بالأشياء التي تعيق العمل من التخطيط  له إلى تنفيذه بالكامل، وتخلص منها بأسرع وقت!</p>
<h4>تعامل مع المفاجآت!</h4>
<p>في بعض الأحيان تصادف شيء إضطراري يجعلك تترك ما لديك وتذهب لتنفيذه.  بالطبع هنا أقصد بالمفاجأت الأعمال/المواعيد/المهام الإضطرارية التي تأتيك  (غالباً من أشخاص معينين) ويمكن أن تقطع هذه الأعمال المفاجأة الفترة التي  حددتها لإنجاز عمل معين. هذا كانت الأشياء التي تفاجئك غير مهمة فلا تلقي  لها بالاً إلا إذا خططت لها مسبقاً أو كنت متفرغ في وقتها.</p>
<h4>إيجاد الفرص</h4>
<p>بعض الأحيان هناك من الأشخاص من يعانون من فقدان جزء ضروري لتكملة مهمة معينة لهم سواء كان الجزئية المفقودة كبيرة أو صغيرة. هنا يجب أن تجد الفرصة المناسبة  لإكمال الجزئية المفقودة وذلك في إيجاد حلول لها أنظر <strong>ما الذي متوفر لديك  وكيف يمكن أن تستفيد منه</strong> في علاج المشكلة إلى أن تصل إلى الجزئية أو  المرحلة التي تريدها.</p>
<h4>تجاهل المحبطين</h4>
<p>بعض الأحيان تمر بأشخاص لا تتدخل بعملهم ولكن تجدهم يتدخلون في شؤونك وسؤون  الآخرين إلى درجة أنهم يزعجوك في مرة! وخاصة إذا رأيت شخص يظن أنه يريد  مصلحتك ويعتبر ما تفعله شيء تافه أو غير مفيد فهذا أنصحك بتجاهله أو تجاهل  كلامه ولا تجعله يفسد عملك.</p>
<h3>أدوات تساعدك على تنظيم وقتك والإستفادة منه</h3>
<p>أضع هنا أدوات لتنظيم الوقت عبارة عن تطبيقات سطح المكتب وتطبيقات ويب.</p>
<ul>
<li><strong><a href="http://tadalist.com/">Ta-da-List</a>،</strong> أحد خدمات شركة 37signals وهي عبارة عن تطبيق ويب بسيط وواضح لكتابة المهام. ويمكن من خلاله كتابة أكثر من مجموعة قوائم ومشاركة المهام مع الإصدقاء.</li>
<li><strong><a href="http://www.rememberthemilk.com/">Remember the Milk</a>، </strong>وهو تطبيق ويب لإدارة المهام يتيح لك تسجيل مهامك ضمن الأوسمة Tags والألسنة Tabs لتسهيل التصنيف والبحث عن المهام وهنا مزايا أخرى أيضاً.</li>
<li><strong><a href="http://www.doominow.com/">Doomi</a>،</strong> تطبيق يعتمد على Adobe  Air، فكرته كتابة المهمات على شكل To-do list مع تحديد الفترة بشكل بسيط  وهو برنامج سهل ورائع.</li>
<li><strong><a href="http://mail.google.com/tasks/">Google Tasks</a>،</strong> أحد خدمات جوجل وهي مدمجة مع بريد Gmail أيضاً، تستطيع كتابة مهامك على نمط to-do-list بسهولة والتشطيب عليها وتوفر إمكانية إنشاء أكثر من قائمة للمهمات.</li>
<li><strong><a href="http://code.google.com/p/pomodairo/">Pomodairo</a>،</strong> تطبيق آخر يعتمد على Adobe Air، ويستخدم <a href="http://en.wikipedia.org/wiki/Pomodoro_Technique">تقنية Pomodoro</a> في أداء المهام.</li>
</ul>
<p><strong>هل لديك أفكار أخرى؟</strong> يمكنك عرض أفكارك حول التدوينة <a href="#respond">بكتابة تعليقك</a>.</p>
<div class="tweetmeme_button" style="float: left; margin: 10px 500px 10px 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.mubde3.net%2Fblog%2Farchives%2F5-ideas-help-to-active-benefiting-from-time"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.mubde3.net%2Fblog%2Farchives%2F5-ideas-help-to-active-benefiting-from-time" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.mubde3.net/blog/archives/5-ideas-help-to-active-benefiting-from-time/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>إضافة ePermissions</title>
		<link>http://www.mubde3.net/blog/archives/epermissions-plugin</link>
		<comments>http://www.mubde3.net/blog/archives/epermissions-plugin#comments</comments>
		<pubDate>Sat, 06 Mar 2010 20:48:00 +0000</pubDate>
		<dc:creator>أحمد الكثيري</dc:creator>
				<category><![CDATA[ملحقات]]></category>
		<category><![CDATA[تطوير مواقع]]></category>
		<category><![CDATA[ووردبريس]]></category>

		<guid isPermaLink="false">http://www.mubde3.net/blog/?p=1745</guid>
		<description><![CDATA[إنتهيت من إضافة ووردبريس جديدة وهي إضافة ePermissions وجعلتها إختصار لـ editors permissions تعني تصريحات المحررين، تفيد أصحاب المدونات الجماعية غالباً أو المدونات التي لديها أعضاء محررين (مثل كتاب ومحرري المواضيع والتعليقات) ووظيفتها إدارة الأعضاء المحررين بشكل أفضل (الذين يحملون رتبة محرر Editor Role فقط) بإعطائهم القدرات أو الإمكانيات التي يوفرها الووردبريس لهم كمحررين أو [...]]]></description>
			<content:encoded><![CDATA[<p>إنتهيت من إضافة ووردبريس جديدة وهي <a href="http://wordpress.org/extend/plugins/epermissions/"><strong>إضافة ePermissions</strong></a> وجعلتها إختصار لـ editors permissions تعني تصريحات المحررين، تفيد أصحاب المدونات الجماعية غالباً أو المدونات التي لديها أعضاء محررين (مثل كتاب ومحرري المواضيع والتعليقات) ووظيفتها <strong>إدارة الأعضاء المحررين بشكل أفضل</strong> (الذين يحملون رتبة محرر Editor Role فقط) بإعطائهم القدرات أو الإمكانيات التي يوفرها الووردبريس لهم كمحررين أو ما تسمى Capabilities وتعطيل أياً منها من قبل المدير أو إتاحتها مثل:</p>
<p><span id="more-1745"></span></p>
<ul>
<li>إدارة التدوينات</li>
<li>إدارة التعليقات</li>
<li>إدارة الوسائط (الملفات المرفقة)</li>
<li>إدارة الصفحات</li>
<li>إدارة الروابط</li>
</ul>
<p>إذا كان لدى المدونة عضو أو مجموعة أعضاء برتبة محرر يستطيعون إضافة وتحرير وحذف أي محتوى من القائمة السابقة، ماذا لو أن صاحب المدونة يريد إعطاء المحرر تصريح بإدارة جميع التدوينات فقط دون التدخل بالتعليقات والوسائط والصفحات والروابط؟ أو التدوينات والتعليقات فقط؟ أو أي من الإمكانيات التي يريدها للمحرر من إختياره؟ بهذه الإضافة <strong>تستطيع عمل تصريحات خاصة للمحررين</strong> بإختيار وتعطيل الإمكانيات المتاحة لهم <strong>بالشروط التي تختارها أنت</strong> كمدير للمدونة.</p>
<p>الإمكانيات المتوفرة التي تستطيع أن تنشيء بها تصريح خاص للمحرر بالطبع هي المذكورة القائمة السابقة، إذا تم تعطيل أي من الإمكانيات أو الإمكانيات المتاحة بالأساس للمحرر يتم <strong>إخفائها في القائمة الجانبية</strong> إضافةً إلى ذلك يتم <strong>منع الوصول إلى روابط قوائم الإمكانيات المعطلة</strong>.</p>
<p>إضافة ePermissions <strong>متوفرة باللغة العربية والإنجليزية</strong> معاً، بحيث إذا كانت نسخة الووردبريس باللغة العربية تكون الإضافة باللغة العربية وذلك ينطبق على اللغة الإنجليزية أيضاً. بالطبع حاولت أن أجعل كتابة الإضافة باللغة العربية والإنجليزية بأفضل صورة لدي إذا هناك أي ملاحظات أو أخطاء في هذا الجانب يمكنك مراسلتي لتجنبها في النسخة القادمة من الإضافة.</p>
<h3>مميزات الرئيسية لإضافة ePermissions</h3>
<p>هذه المميزات الرئيسية بشكل مختصر:</p>
<ul>
<li>إخفاء وإظهار الإمكانيات التي يتم إختيارها للمحرر في القائمة الجانبية.</li>
<li>منع الوصول إلى روابط قوائم الإمكانيات الموجودة في القائمة الجانبية. (إذا كان لدى التصريح إمكانيات لرتبة المحرر وكانت هذه الإمكانيات معطلة في التصريح بحيث تكون ايضاً ممنوعة الوصول والظهور عبر القائمة الجانبية)</li>
<li>تستطيع كتابة رسالة خاصة بالتصريح للأعضاء الذين تم توحيه التصريح لهم، والرسالة ستكون موجودة في أعلى صفحات الإدارة. (هذا الحقل إختياري وسأحاول أن أحسن شكل الشكل الحالي لرسالة التصريح)</li>
<li>تستطيع فتح وإغلاق التصريح، والأعضاء المحررين الذين لديهم تصريح مغلق يستطيعون تصفح كافة الإمكانيات المتوفرة لهم.</li>
</ul>
<h3>صور لإضافة uPermissions</h3>
<p style="text-align: right;">مجموعة صور للإضافة بداخل لوحة تحكم الووردبريس.</p>
<h4 style="text-align: right;">جدول التصريحات للمحررين</h4>
<p style="text-align: center;"><img class="aligncenter" title="permissions-table" src="http://www.mubde3.net/blog/wp-content/uploads/2010/02/permissions-table.jpg" alt="" width="550" height="162" /></p>
<h4>إضافة تصريح جديد</h4>
<p style="text-align: center;"><img class="size-full wp-image-1758 aligncenter" title="add-new-permission" src="http://www.mubde3.net/blog/wp-content/uploads/2010/02/add-new-permission.jpg" alt="" width="550" height="450" /></p>
<h4>إختيار تصريح لأحد المحررين</h4>
<p style="text-align: center;"><img class="size-full wp-image-1759 aligncenter" title="select-permission-for-user" src="http://www.mubde3.net/blog/wp-content/uploads/2010/02/select-permission-for-user.jpg" alt="" width="550" height="391" /></p>
<p>صورة القائمة الجانبية للوحة تحكم أحد الأعضاء المحررين يحمل <strong>تصريح إدارة الوسائط والصفحات</strong> (يمكنه إدارة الملفات المرفقة وصفحات المدونة فقط)</p>
<p style="text-align: center;"><img class="size-full wp-image-1760 aligncenter" title="example-of-perimssion-effect-in-user" src="http://www.mubde3.net/blog/wp-content/uploads/2010/02/example-of-perimssion-effect-in-user.jpg" alt="" width="550" height="317" /></p>
<p>لمن يريد أن يستعمل الإضافة، أرجو إبلاغي بأي خطأ أو ملاحظات حول الإصدارة الحالية أو إقتراحات لتحسين الإضافة في المستقبل حسب متطلبات أصحاب المدونات الجماعية فيما يتعلق بإمكانيات المحررين.</p>
<h3>تحميل الإضافة</h3>
<p>عبر <a href="http://wordpress.org/extend/plugins/epermissions/">صفحة إضافة ePermissions في موقع الووردبريس</a>.</p>
<div class="tweetmeme_button" style="float: left; margin: 10px 500px 10px 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.mubde3.net%2Fblog%2Farchives%2Fepermissions-plugin"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.mubde3.net%2Fblog%2Farchives%2Fepermissions-plugin" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.mubde3.net/blog/archives/epermissions-plugin/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>مختارات من تويتر #1</title>
		<link>http://www.mubde3.net/blog/archives/chosen-from-twitter-1</link>
		<comments>http://www.mubde3.net/blog/archives/chosen-from-twitter-1#comments</comments>
		<pubDate>Thu, 04 Mar 2010 04:51:26 +0000</pubDate>
		<dc:creator>أحمد الكثيري</dc:creator>
				<category><![CDATA[من هنا وهناك]]></category>
		<category><![CDATA[روابط]]></category>

		<guid isPermaLink="false">http://www.mubde3.net/blog/?p=1763</guid>
		<description><![CDATA[روابط إخترتها لكم من التغريدات التي نشرتها عبر حسابي في تويتر إما مباشرة مني أو عبر إعادة تغريدة أحد الذين أتابعهم.
سبق أن طرحت عدة روابط وتوقفت عن نشر الروابط الخارجية، ولكن ستكون هذه الروابط المختارة من تويتر إستعادة لتدوينات الروابط التي كنت أكتبها سابقاَ ولكن بشكل مختلف قليلاً وأن تكون المختارات مفيدة وفريدة.
سيتم إضافة مجموعة [...]]]></description>
			<content:encoded><![CDATA[<p><em>روابط إخترتها لكم من التغريدات التي نشرتها عبر <a href="http://twitter.com/mobde3net/">حسابي في تويتر</a> إما مباشرة مني أو عبر إعادة تغريدة أحد الذين أتابعهم.</em></p>
<p>سبق أن طرحت عدة روابط وتوقفت عن نشر الروابط الخارجية، ولكن ستكون هذه الروابط المختارة من تويتر إستعادة لتدوينات الروابط التي كنت أكتبها سابقاَ ولكن بشكل مختلف قليلاً وأن تكون المختارات مفيدة وفريدة.</p>
<p>سيتم إضافة مجموعة من مختارات الروابط  على فترات بشكل شبه يومي أو  أسبوعي أو شبه أسبوعي على الأقل لكي تساهم على تنشيط المدونة في حال عدم وجود مواضيع جديدة وفي نفس الوقت تعتبر تدوينة خفيفة بين المواضيع العملية التي تكتب في هذه المدونة.</p>
<h3><a href="http://www.webdesignerwall.com/trends/47-amazing-css3-animation-demos/">47Amazing CSS3 Animation Demos</a></h3>
<p style="text-align: center;"><a href="http://www.webdesignerwall.com/trends/47-amazing-css3-animation-demos/"><img class="size-full wp-image-1765 aligncenter" title="css30ani" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/css30ani.jpg" alt="" width="530" height="190" /></a></p>
<p>يعرض 47 مثال مدهش عن الحركة في CSS3.</p>
<p><span id="more-1763"></span></p>
<h3><a href="http://www.cnn.com/interactive/2010/01/world/haiti.360/index.html">Haiti: 360°</a></h3>
<p style="text-align: center;"><a href="http://www.cnn.com/interactive/2010/01/world/haiti.360/index.html"><img class="size-full wp-image-1766 aligncenter" title="haiti" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/haiti.jpg" alt="" width="530" height="190" /></a></p>
<p>شاهد هاييتي بتقنية 360°</p>
<h3><a href="http://www.wimp.com/bombexplosion/">Underwater bomb explosion</a></h3>
<p style="text-align: center;"><a href="http://www.wimp.com/bombexplosion/"><img class="size-full wp-image-1767 aligncenter" title="explode" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/explode.jpg" alt="" width="530" height="190" /></a></p>
<p>مشهد عن لانفجار قنبلة تحت الماء، تصفح المشاهد الأخرى الموجودة مع هذا المشهد، فهي رائعة بالفعل.</p>
<h3><a href="http://www.webdesignerwall.com/trends/what-to-expect-in-2010-uxui-design-simplicity/">What to Expect in 2010: UX/UI Design Simplicity</a></h3>
<p style="text-align: center;"><a href="http://www.webdesignerwall.com/trends/what-to-expect-in-2010-uxui-design-simplicity/"><img class="size-full wp-image-1768 aligncenter" title="uxuisimplicity" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/uxuisimplicity.jpg" alt="" width="530" height="190" /></a></p>
<p>توقعات عام 2010 فيما يخص بساطة التصميم في تجربة المستخدم وواجهة المستخدم أو ما يسمى UX/UI.</p>
<h3><a href="http://www.qaswlasq.com/2010/02/19/%D9%83%D9%8A%D9%81-%D8%AA%D9%88%D8%B8%D9%81-%D8%A7%D9%84%D9%85%D8%B5%D9%85%D9%85%D8%A7%D9%84%D9%85%D8%B7%D9%88%D8%B1-%D8%A7%D9%84%D9%85%D9%86%D8%A7%D8%B3%D8%A8/">كيف توظف المصمم/المطور المناسب</a></h3>
<p style="text-align: center;"><a href="http://www.qaswlasq.com/2010/02/19/%D9%83%D9%8A%D9%81-%D8%AA%D9%88%D8%B8%D9%81-%D8%A7%D9%84%D9%85%D8%B5%D9%85%D9%85%D8%A7%D9%84%D9%85%D8%B7%D9%88%D8%B1-%D8%A7%D9%84%D9%85%D9%86%D8%A7%D8%B3%D8%A8/"><img class="size-full wp-image-1769 aligncenter" title="findesigners" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/findesigners.jpg" alt="" width="530" height="190" /></a></p>
<h3><a href="http://hosam.ws/?p=201">تطبيقات عربية بدأت في اللمعان</a></h3>
<p style="text-align: center;"><a href="http://hosam.ws/?p=201"><img class="size-full wp-image-1773 aligncenter" title="arabicapplications" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/arabicapplications.jpg" alt="" width="530" height="190" /></a></p>
<h3><a href="http://www.islamonline.net/servlet/Satellite?c=ArticleA_C&amp;cid=1264250005382&amp;pagename=Zone-Arabic-News/NWALayout&amp;utm_source=Twitter&amp;utm_medium=Tweets&amp;utm_campaign=Twitter+Official%20account">ألف وواحد اختراع إسلامي يحيا عليها العالم</a></h3>
<p style="text-align: center;"><a href="http://www.islamonline.net/servlet/Satellite?c=ArticleA_C&amp;cid=1264250005382&amp;pagename=Zone-Arabic-News/NWALayout&amp;utm_source=Twitter&amp;utm_medium=Tweets&amp;utm_campaign=Twitter+Official%20account"><img class="size-full wp-image-1770 aligncenter" title="muslmsinvention" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/muslmsinvention.jpg" alt="" width="530" height="190" /></a></p>
<h3><a href="http://www.tech-wd.com/wd/2010/02/24/ie6funeral/">دعوة لحضور مراسم دفن IE6</a></h3>
<p style="text-align: center;"><a href="http://www.tech-wd.com/wd/2010/02/24/ie6funeral/"><img class="size-full wp-image-1771 aligncenter" title="ie6rip" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/ie6rip.jpg" alt="" width="530" height="190" /></a></p>
<h3><a href="http://www.apple-wd.com/2010/02/trapster-for-locating-trafic-radar-for-iphone/">برنامج Trapster لتحديد مواقع الرادارات المرورية للآيفون</a></h3>
<p style="text-align: center;"><a href="http://www.apple-wd.com/2010/02/trapster-for-locating-trafic-radar-for-iphone/"><img class="size-full wp-image-1772 aligncenter" title="applewdradar" src="http://www.mubde3.net/blog/wp-content/uploads/2010/03/applewdradar.jpg" alt="" width="530" height="190" /></a></p>
<div class="tweetmeme_button" style="float: left; margin: 10px 500px 10px 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.mubde3.net%2Fblog%2Farchives%2Fchosen-from-twitter-1"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.mubde3.net%2Fblog%2Farchives%2Fchosen-from-twitter-1" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.mubde3.net/blog/archives/chosen-from-twitter-1/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>توافق متصفحات الويب بإستخدام jQuery</title>
		<link>http://www.mubde3.net/blog/archives/approval-with-web-browser-with-jquery</link>
		<comments>http://www.mubde3.net/blog/archives/approval-with-web-browser-with-jquery#comments</comments>
		<pubDate>Sun, 28 Feb 2010 08:48:25 +0000</pubDate>
		<dc:creator>أحمد الكثيري</dc:creator>
				<category><![CDATA[تطوير المواقع]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[تطوير مواقع]]></category>
		<category><![CDATA[دروس]]></category>

		<guid isPermaLink="false">http://www.mubde3.net/blog/?p=1726</guid>
		<description><![CDATA[أهمية توافق متصفحات الويب ضرورية وخاصة في توافق خصائص CSS مع هذه المتصفحات، بالرغم من أن متصفحات الويب الحالية تدعم أغلب خصائص CSS أو ظهور تأثير خصائص CSS على الصفحة بالشكل المطلوب إلا أن يمكن أن تصادف ظهور الصفحة بشكل مختلف من متصفح إلى آخر بسبب إختلاف محرك المستخدم في كل متصفح وربما يكون السبب [...]]]></description>
			<content:encoded><![CDATA[<p>أهمية توافق متصفحات الويب ضرورية وخاصة في توافق خصائص CSS مع هذه المتصفحات، بالرغم من أن متصفحات الويب الحالية تدعم أغلب خصائص CSS أو ظهور تأثير خصائص CSS على الصفحة بالشكل المطلوب إلا أن يمكن أن تصادف ظهور الصفحة بشكل مختلف من متصفح إلى آخر بسبب إختلاف محرك المستخدم في كل متصفح وربما يكون السبب إصدارة المتصفح نفسه.</p>
<p>في هذا الموضوع سأتحدث عن <strong>كيفية عمل التوافق مع متصفحات الويب بإستخدام مكتبة jQuery</strong> سواء كان في خصائص CSS أو التأكد من تحديث إصدار المتصفح أو أي شيء آخر، لدينا خاصيتين في هذه المكتبة وسنشرح كل واحدة منها.</p>
<ul class="post-information">
<li class="demo-tut"><a href="http://www.mubde3.net/blog/wp-content/uploads/2010/02/normalBrowser.html">مثال على الدرس</a></li>
<li class="download-files"><a href="http://www.mubde3.net/blog/wp-content/uploads/2010/02/browser-property-in-jquery.zip">تحميل المرفقات</a></li>
</ul>
<p><span id="more-1726"></span></p>
<h3>خاصية browser</h3>
<p>تحتوي <a href="http://api.jquery.com/jQuery.browser/">خاصية browser</a> على معلومات حول المتصفح الجاري حالياً (المشغل من قبل المستخدم)، والقيمة المرجعه له هي الأعلام المنطقية أو ما يسمى Boolean flags لكل وكيل مستخدم محتمل (متصفح ويب).</p>
<p>الأعلام المنطقية المرجعة ستكون عبارة عن أسماء المتصفحات السائدة مرفقة بأنواع محركاتها إضافةً إلى رقم إصدار المتصفح، سنتعرف طريقة إستدعائها عبر الأمثلة، تكتب خاصية browser بهذا الشكل:</p>
<pre class="brush: jscript;">
$.browser
</pre>
<p>من خلال إستخدام خاصية browser سنتمكن من كشف المتصفح الحالي للمستخدم مع تمرير الأعلام Flags وهي عبارة عن أسماء المتصفحات السائدة لدينا كما ذكرت مثل Opera ،Safari ،Mozilla و Internet Explorer.</p>
<h4>طريقة إستخدام الخاصية عبر طرق jQuery أخرى</h4>
<p>يمكن إستخدام خاصية browser عبر طرق jQuery أخرى، لو أردنا معرفة المتصفح الحالي للمستخدم بإرجاع إما قيمة true أو false يمكن أن نستخدم طريقة each على سبيل المثال، بهذه الطريقة:</p>
<pre class="brush: jscript;">
 $(function(){
     jQuery.each(jQuery.browser,function(i, val){
         $(&quot;&lt;div&gt;&quot; + i + &quot; : &lt;span&gt;&quot; + val + &quot;&lt;/span&gt;&lt;/div&gt;&quot;).appendTo(document.body);
     });
 });
</pre>
<p>لو كنا نستخدم متصفح Safari أو متصفح آخر يستخدم محرك webkit مثل Google Chrome سنتظهر لدينا النتيجة كما توضح الصورة:</p>
<p style="text-align: center;"><img class="size-full wp-image-1731 aligncenter" style="border: 0;" title="safari-browser" src="http://www.mubde3.net/blog/wp-content/uploads/2010/02/safari-browser.jpg" alt="" width="550" height="231" /></p>
<p>وهذا إستخدام آخر بدالة log بإستخدام <a href="http://getfirebug.com/wiki/index.php/Console_API">متغير console</a> الموجود في <a href="http://getfirebug.com/">إضافة Firebug</a>:</p>
<pre class="brush: jscript;">
 $(function(){
     console.log('Mozilla: ' + $.browser.mozilla)
     console.log('Safari: ' + $.browser.safari)
     console.log('Opera: ' + $.browser.opera)
     console.log('MEIE: ' + $.browser.msie);
 });
</pre>
<p>يمكن رؤية النتيجة بإستخدام إضافة Firebug الموجودة في متصفح Firefox.</p>
<p style="text-align: center;"><img class="size-full wp-image-1732 aligncenter" title="console-log-in-firebug" src="http://www.mubde3.net/blog/wp-content/uploads/2010/02/console-log-in-firebug.jpg" alt="" width="550" height="186" /></p>
<p>بإستخدامك خاصية browser يمكن التعامل مع المتصفحات بشكل عام عبر هذه الأعلام التي ستضيفها للخاصية:</p>
<ul>
<li>safari</li>
<li>opera</li>
<li>msie</li>
<li>mozilla</li>
<li>webkit (أضيف في jQuery 1.4)</li>
</ul>
<h4>معرفة رقم الإصدار</h4>
<p>يمكنك معرفة إصدار المتصفح بإستخدام خاصية browser عن طريق خاصية version، إستخدام هذه الخاصية يكون بهذه الطريقة:</p>
<pre class="brush: jscript;">
$.browser.version
</pre>
<p>مثال: تستطيع إظهار رسالة لمستخدمي متصفح Firefox بأن يحدثوا متصفحهم إذا كانوا يستخدمون الإصدار الأول أو الثاني من متصفح Firefox، عبر هذه الشفرة:</p>
<pre class="brush: jscript;">
 $(function(){
     if($.browser.mozilla &amp; $.browser.version &lt; '1.9') {
         $('.alert').show().html('&lt;p&gt;You should update your Firefox browser.&lt;/p&gt;');
     }
 });
</pre>
<h4>مثال عملي على خاصية browser</h4>
<p>مثال عملي بسيط على إستخدام خاصية browser قبل إنهاء الدرس، وهو إظهار رسالة بإسم المتصفح أو المحرك المستخدم إضافة إلى الإصدار الحالي منه، شفرة HTML:</p>
<pre class="brush: xml;">
&lt;div id=&quot;ie&quot;&gt;
 &lt;p&gt;You are using &lt;strong&gt;Internet Explorer&lt;/strong&gt; version &lt;strong&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;/div&gt;

&lt;div id=&quot;mozilla&quot;&gt;
 &lt;p&gt;You are using &lt;strong&gt;Mozille&lt;/strong&gt; version &lt;strong&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;/div&gt;

&lt;div id=&quot;webkit&quot;&gt;
 &lt;p&gt;You are using &lt;strong&gt;Safari&lt;/strong&gt; version &lt;strong&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;/div&gt;

&lt;div id=&quot;opera&quot;&gt;
 &lt;p&gt;You are using &lt;strong&gt;Opera&lt;/strong&gt; version &lt;strong&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;/div&gt;
</pre>
<p>شفرة CSS:</p>
<pre class="brush: css;">
.alert {
     display: none;
     margin: 10px auto;
     width: 90%;
     background-color: #d3d3d3;
}
.alert p {
     padding: 5px;
     font: 14px tahoma;
     color: #5c5d5e;
}
</pre>
<p>الآن نأتي لشفرة Javascript لكتابة إسم المتصفح والإصدار الحالي عن طريق خاصية browser بإستخدام مكتبة jQuery بالطبع، ستكون الشفرة الأخيرة بهذه الطريقة:</p>
<pre class="brush: jscript;">
 $(function(){
     if($.browser.mozilla) {
         $('#mozilla').show();
         $('.ver').html($.browser.version);
     }
     else if ($.browser.msie) {
         $('#ie').show();
         $('.ver').html($.browser.version);
     }
     else if ($.browser.webkit) {
         $('#webkit').show();
         $('.ver').html($.browser.version);
     }
     else if ($.browser.opera) {
         $('#opera').show();
         $('.ver').html($.browser.version);
     }
 });
</pre>
<p>وبعدها تستطيع التأكد من نوع المتصفح وإصداره كما تظهر هذه الصورة للمتصفحات الأربع التي لدي:</p>
<p style="text-align: center;"><img class="size-full wp-image-1739 aligncenter" title="example-in-many-browsers" src="http://www.mubde3.net/blog/wp-content/uploads/2010/02/example-in-many-browsers.jpg" alt="" width="550" height="389" /></p>
<p>جميع الأمثلة المكتوبة موجودة في المرفقات.</p>
<ul class="post-information">
<li class="demo-tut"><a href="http://www.mubde3.net/blog/wp-content/uploads/2010/02/normalBrowser.html">مثال على الدرس</a></li>
<li class="download-files"><a href="http://www.mubde3.net/blog/wp-content/uploads/2010/02/browser-property-in-jquery.zip">تحميل المرفقات</a></li>
</ul>
<div class="tweetmeme_button" style="float: left; margin: 10px 500px 10px 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.mubde3.net%2Fblog%2Farchives%2Fapproval-with-web-browser-with-jquery"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.mubde3.net%2Fblog%2Farchives%2Fapproval-with-web-browser-with-jquery" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.mubde3.net/blog/archives/approval-with-web-browser-with-jquery/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>متفرقات حول المدونة #5</title>
		<link>http://www.mubde3.net/blog/archives/motafarekat-blog-5</link>
		<comments>http://www.mubde3.net/blog/archives/motafarekat-blog-5#comments</comments>
		<pubDate>Fri, 26 Feb 2010 18:03:46 +0000</pubDate>
		<dc:creator>أحمد الكثيري</dc:creator>
				<category><![CDATA[من هنا وهناك]]></category>
		<category><![CDATA[متفرقات]]></category>

		<guid isPermaLink="false">http://www.mubde3.net/blog/?p=1720</guid>
		<description><![CDATA[هذه  التدوينة ضمن المتفرقات التي تتحدث عن المدونة والتحديثات التي   إضيفت  إليها وللتواصل مع القراء بما مر على المدونة خلال فترة معينة بين   مواضيع  المتفرقات التي أكتبها في المدونة.
لدي بعض المتفرقات السريعة حول المدونة ،منها ما حدث خلال الشهر الجاري حول كتابة المواضيع، أيضاً حول إضافة جديدة سأنتهي [...]]]></description>
			<content:encoded><![CDATA[<p><em>هذه  التدوينة ضمن المتفرقات التي تتحدث عن المدونة والتحديثات التي   إضيفت  إليها وللتواصل مع القراء بما مر على المدونة خلال فترة معينة بين   مواضيع  المتفرقات التي أكتبها في المدونة.</em></p>
<p>لدي بعض المتفرقات السريعة حول المدونة ،منها ما حدث خلال الشهر الجاري حول كتابة المواضيع، أيضاً حول إضافة جديدة سأنتهي منها قبل نهاية الشهر إن شاء الله لأكمل ما خططت له في هذه المدونة خلال هذا شهر فبراير.</p>
<p><span id="more-1720"></span></p>
<h3>مشاركة في مدونات أخرى</h3>
<p>شاركت في <a href="http://www.qaswlasq.com/">مدونة قص ولصق</a> في مقال حول <a href="http://www.qaswlasq.com/2010/02/13/%D8%AA%D8%AD%D9%88%D9%8A%D9%84-%D8%A7%D9%84%D8%AA%D8%B5%D9%85%D9%8A%D9%85-%D9%85%D9%86-psd-%D8%A5%D9%84%D9%89-html/">تحويل تصميم من PSD إلى HTML</a>، وهي ليست المرة الأولى التي أشارك فيها كمدون ضيف ولكن أتمنى أن يستفيد منها الباحثين عن مثل هذه الدروس وحاولت أشرح فيها تفاصيل أكثر حول عملية التحويل.</p>
<h3>كتابة معظم مواضيع سلسلة الأجاكس بسهولة</h3>
<p>أكملت معظم المواضيع الخاصة بسلسلة الأجاكس بسهولة (5 مواضيع كتبت حتى  الآن)، وخلال الجزء الثاني من السلسلة شرحت <a href="http://www.mubde3.net/blog/archives/ajax-easily-2-jquery">التعامل  مع الأجاكس في مكتبة jQuery</a> و<a href="http://www.mubde3.net/blog/archives/ajax-easily-2-mootools">التعامل  مع الأجاكس في مكتبة MooTools</a> و سأرى إن كان هناك إمكانية إكتمال  الجزء الثاني أكثر بعرض مكتبات أخرى أو الدخول في الجزء الثالث مباشرة حول  مصادر السلسلة.</p>
<h3>إضافة ووردبريس جديدة</h3>
<p>سأكتب موضوع في الأيام القادمة حول إضافة ووردبريس جديدة أنشأتها وتبقى القليل لإكمالها وهي تساعد مدير أي مدونة جماعية لديه مجموعة أعضاء من رتبة محرر (Editor role) في إمكانية تقسيم قدرات الأعضاء الذين يحملون رتبة المحرر وهي إدارة التدوينات، الصفحات، الروابط، الوسائط والتعليقات بحيث يمكن إتاحة أو تعطيل بعضها للمحرر (إذا أردت مثلاً محرر خاص لإدارة التعليقات فقط بدون إدارة التدوينات والوسائط والصفحات) بإضافة تصريحات عن طريق الإضافة وإختيار التصريحات عبر صفحة العضو.</p>
<p>ولا يمكن تعطيل كافة القدرات لأنه يمكن تعطيلها بإعطاء العضو رتبة أقل مثل &#8216;مشارك&#8217; أو &#8216;مساهم&#8217; فلماذا يكون العضو محرر وجميع القدرات معطلة لديه! .. المزيد من التفاصيل ستكون في الموضوع خاص للإضافة مع إمكانية تحميلها.</p>
<div class="tweetmeme_button" style="float: left; margin: 10px 500px 10px 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.mubde3.net%2Fblog%2Farchives%2Fmotafarekat-blog-5"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.mubde3.net%2Fblog%2Farchives%2Fmotafarekat-blog-5" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.mubde3.net/blog/archives/motafarekat-blog-5/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>الأجاكس بسهولة: إستخدام الأجاكس في مكتبات Javascript (مكتبة MooTools)</title>
		<link>http://www.mubde3.net/blog/archives/ajax-easily-2-mootools</link>
		<comments>http://www.mubde3.net/blog/archives/ajax-easily-2-mootools#comments</comments>
		<pubDate>Tue, 23 Feb 2010 08:57:57 +0000</pubDate>
		<dc:creator>أحمد الكثيري</dc:creator>
				<category><![CDATA[تطوير المواقع]]></category>
		<category><![CDATA[MooTools]]></category>
		<category><![CDATA[أجاكس]]></category>
		<category><![CDATA[تطوير مواقع]]></category>
		<category><![CDATA[دروس]]></category>

		<guid isPermaLink="false">http://www.mubde3.net/blog/?p=1662</guid>
		<description><![CDATA[هذا هو الموضوع الثاني حول إستخدام الأجاكس في مكتبات Javascript ضمن سلسلة الأجاكس بسهولة، في المرة سابقة تحدثنا عن إستخدام الأجاكس في مكتبة jQuery وفي الحقيقة مع الإمكانيات التي توفرها هذه المكتبة تعتبر كتابة الشفرة فيها سواء كان كتابة شفرة أجاكس أو غيرها سهلة ولا تحتاج إلى تعقيد.
اليوم سنتحدث عن إستخدام الأجاكس في مكتبة MooTools [...]]]></description>
			<content:encoded><![CDATA[<p>هذا هو الموضوع الثاني حول إستخدام الأجاكس في مكتبات Javascript ضمن سلسلة <a href="http://www.mubde3.net/blog/archives/ajax-easily">الأجاكس بسهولة</a>، في المرة سابقة تحدثنا عن <a href="http://www.mubde3.net/blog/archives/ajax-easily-2-jquery">إستخدام الأجاكس في مكتبة jQuery</a> وفي الحقيقة مع الإمكانيات التي توفرها هذه المكتبة تعتبر كتابة الشفرة فيها سواء كان كتابة شفرة أجاكس أو غيرها سهلة ولا تحتاج إلى تعقيد.</p>
<p>اليوم سنتحدث عن <strong>إستخدام الأجاكس في مكتبة MooTools</strong> و<a href="http://mootools.net/">مكتبة MooTools</a> هي مكتبة كبقية مكتبات Javascript لها مستخدميها وتوفر نسخة للتحميل حسب طلب المطور الخصائص التي سيحتاجها وذلك سيساعد على تقليل الحجم وإختيار ما تريده بالضبط.</p>
<ul class="post-information">
<li class="demo-tut"><a href="http://demos.mubde3.net/ajax-easily/events-withMootools.php">مثال على الدرس</a></li>
<li class="download-files"><a href="http://www.mubde3.net/blog/wp-content/uploads/2010/02/ajax-event-year-MooTools.zip">تحميل المرفقات</a></li>
</ul>
<p><span id="more-1662"></span></p>
<h3>الأجاكس في مكتبة MooTools</h3>
<p>في مكتبة MooTools سنتعرف على كتابة الأجاكس عن طريق كائن Request وطرق مختصرة أخرى لإرسال المتغيرات مع طريقة send العامة، قبل ذلك نجهز أساسيات المثال المعد لهذا الدرس ثم ندخل في بقية التفاصيل.</p>
<h4>كائن Request</h4>
<p>كائن Request في مكتبة MooTools هو المسؤول عن عملية إرسال وإستقبال البيانات من الخادم إلى الصفحة عن طريق الاجاكس، كتابة الكائن تكون بهذه الطريقة:</p>
<pre class="brush: jscript;">new Request(options);</pre>
<p>إذا أردنا كتابة الكائن ومع الخيارات المرفقه معه والتي ستحتوي على عنوان رابط الملف ونوع الإرسال وغيره من الخصائص نضمنه إلى متغير جديد بحيث يكون بهذا الشكل:</p>
<pre class="brush: jscript;">
var myRequest = new Request({
     url: '/reqHandler.php'.
     method: 'get'.
     onSuccess: function(response) {
         alert(response);
     }
});
</pre>
<p>إستخدمنا حدث onSuccess ويستخدم هذا الحدث عند نجاح العملية وتوجد أحداث كثيرة تستطيع التعامل معها ضمن الكائن Request وأضعها في هذه القائمة:</p>
<ul>
<li><strong>onSuccess:</strong> هذا الحدث يتم عندما تكون الإستجابة ناجحة لإستقبال البيانات من الخادم.</li>
<li><strong>onFailure:</strong> هذا الحدث يتم عندما تكون الإستجابة غير ناجحة (فاشلة) لإستقبال البيانات من الخادم. (مثل خطا 404)</li>
<li><strong>onCancel:</strong> هذا الحدث يتم عندما تكون الإستجابة الطلب ملغية. (إلغاء العملية)</li>
<li><strong>onException:</strong> هذا الحدث يتم عندما يكون هناك إستثناء عند وضع خيار رأس الكائن XMLHttpResponse.</li>
<li><strong>onRequest:</strong> هذا الحدث يتم عندما يكون في وقت إرسال الطلب لإستقبال البيانات.</li>
<li><strong>onComplete:</strong> هذا الحدث يتم عند حدوث نجاح أو فشل للعملية كاملة (بإستخدام onSuccess أو onFailure) أي بعد إتمام الطلب كامل.</li>
</ul>
<h4>طرق إرسال المتغيرات</h4>
<p>بعد أن كتابة كائن Request والأحداث المطلوبة لن ترسل المتغيرات التي كتبتها حتى تُرسل لإستدعاء البيانات من الخادم وذلك عبر طريقة أو دالة send، ومهمتها إرسال الطلب إلى الخادم، طريقة إستخدامها تكون بهذا الشكل:</p>
<pre class="brush: jscript;">
myRequest.send();
</pre>
<p>ويمكن أن تحتوي على المتغيرات التي تريد إرسالها إلى الخادم، وهناك طريقتين الأولى وضع المتغيرات كمصفوفة والثانية وضع المتغيرات في سطر واحد كما ستشاهد في الشفرة التالية:</p>
<pre class="brush: jscript;">
myRequest.send('username=mobde3net&amp;email=mobde3net@gmail.com');

myRequest.send({
     username: 'mobde3net',
     email: 'mobde3net@gmail.com'
});
</pre>
<p>تلاحظ الفرق البسيط في الطريقتين في كتابة المتغيرات، وهذا إختياري إذ يمكنك إرسال المتغيرات ضمن كائن myRequest قبل تنفيذ الطريقة send.</p>
<h4>طرق أخرى لإرسال الطلب إلى الخادم</h4>
<p>كائن Request يوفر طرق مختصرة لإرسال البيانات مثل طريقة send، وتمثل الطرق أسماء نوع الطلب أو طريقة الطلب مثل get،post،put،delete .. يمكن إرسال الطلب بهذا الشكل إذا إستخدمنا الطرق المذكورة في هذه الفقرة:</p>
<pre class="brush: jscript;">
// get إرسال الطلب بطريقة
myRequest.get({ username: 'mobde3net' });
// post إرسال الطلب بطريقة
myRequest.post({ username: 'mobde3net' });
// put إرسال الطلب بطريقة
myRequest.put({ username: 'mobde3net' });
// delete إرسال الطلب بطريقة
myRequest.delete({ username: 'mobde3net' });
</pre>
<h4>إرسال المتغيرات عن طريق إعداد العنصر</h4>
<p>يمكن إرسال طلب جديد عن طريق عنصر محدد مباشرة دون إنشاء كائن Request، فمكتبة MooTools توفر إختصارات عند التعامل مع العنصر Element وهي خاصة عند التعامل مع حقل input ضمن نموذج HTML، لإرسال طلب مباشرة عن طريق عنصر form مثلاً تكون التركيبة بهذه الطريقة:</p>
<pre class="brush: jscript;">
$('form').send(url);
</pre>
<p>في مثال بسيط، إذا أردنا إرسال طلب إلى الخادم عن طريق نموذج HTML، وكان رابط النموذج (قيمة خاصية action في وسم form) موجود يمكن أن نمنع النموذج من المواصلة وبدلاً من الذهاب إلى رابط آخر نقوم بإرسال طلب إلى الخادم بإضافة أو إستدعاء بيانات.</p>
<p>في مكتبة MooTools هناك طرق للتعامل مع العناصر مثل طريقة set أو get وتستخدم الأولى على سبيل المثال في تعديل أو إضافة عدة أشياء مثل تعديل خصائص CSS أو إضافة شفرة HTML مباشرة داخل العنصر أما الثانية لأخذ أشياء أخرى من العنصر كخصائص الوسم (Attributes) وهكذا، يمكن إستعمال المحرف send مع طريقة set وهو يقوم بنفس عمل طريقة send في كائن Request، كما يوضح المثال البسيط التالي:</p>
<pre class="brush: jscript;">
$('form').set('send', {
     // في حال نجاح إستجابة الطلب
     onSuccess: function(response){
             alert(response);
     }
}).addEvent('submit', function(event){
     event.preventDefault(); // لمنع المتصفح من الإنتقال إلى رابط النموذج
     this.send(); // action إرسال الطلب وأخذ رابط النموذج من خاصية
});
</pre>
<h3>مثال عملي على إستخدام الأجاكس في مكتبة MooTools</h3>
<p>سنطبق ما تعلمناه كما في المثال العملي الموجود في <a href="http://www.mubde3.net/blog/archives/ajax-easily-1-3">الجزء الثالث من كتابة الأجاكس في Javascript</a> وسنستخدم نفس المثال  ولكن بإستخدام مكتبة MooTools بدلاً من كتابة الأجاكس من الصفر، يجب <a href="http://mootools.net/download">تحميل مكتبة MooTools</a> قبل البدأ بتطبيق المثال أو أن تكون لديك مرفقة في الجهاز أو الموقع.</p>
<p>صفحة HTML ستكون مثل ما هي التي كتبناها في المثال العلمي خلال <a href="http://www.mubde3.net/blog/archives/ajax-easily-1-3">الجزء الثالث من كتابة الأجاكس في Javascript</a>، وهذه شفرة HTML لهذا الدرس ( مع إستخدام لغة  PHP لإستدعاء السنوات المسجلة في قاعدة البيانات في الحقل):</p>
<pre class="brush: php;">
&lt;?php
$connect = mysql_connect('localhost', 'root', '');
$db_connect = mysql_select_db($table, $connect);
if (!$connect) { die('Could not connect: ' . mysql_error()); }
mysql_query(&quot;set charset UTF8&quot;);
?&gt;

&lt;div id=&quot;form&quot;&gt;
     &lt;p&gt;تطبيق بسيط يطرح حدث معين مرتبط بالسنة التي يضعها الزائر.&lt;/p&gt;
     &lt;form method=&quot;GET&quot;&gt;
     &lt;p&gt;إختر السنة التي تم فيها الحدث
         &lt;select name=&quot;year&quot;&gt;
         &lt;option selected=&quot;selected&quot;&gt;إختر السنة&lt;/option&gt;

         &lt;?php
         $result2 = mysql_query(&quot;SELECT * FROM events WHERE event_cloned = 'N' ORDER BY event_year DESC&quot;);
         while($row = mysql_fetch_array($result2)) {
         echo '&lt;option value=&quot;'.$row['event_year'].'&quot;&gt;'.$row['event_year'].'&lt;/option&gt;';
         }
         ?&gt;

         &lt;/select&gt;

     &lt;/p&gt;
 &lt;/form&gt;
 &lt;/div&gt;

&lt;div id=&quot;content&quot;&gt; &lt;/div&gt;
</pre>
<p>التغييرات التي سنشاهدها في الصفحة ستكون عن طريق عنصر div الذي يحمل  الصنف content# ، نفس الشيء لملف query.php (الملف الذي يستقبل متغيرات  الصفحة للتعامل مع قاعدة البيانات في إستدعاء البيانات المطلوبة لصفحة  HTML)، ليس هناك تغييرات في ملف PHP:</p>
<pre class="brush: php;">
&lt;?php

// شفرة الإتصال بقاعدة البيانات
$connect = mysql_connect('localhost', 'root', '');
$db_connect = mysql_select_db('test', $connect);
mysql_query(&quot;set charset UTF8&quot;);
if (!$connect) { die('لم يتم الإتصال: ' . mysql_error()); }

// تعريف المتغير event_year
// ولإستقبال هذا المتغير في إكمال الإتصال بالأجاكس
if($_GET['year']) {
     $event_year = $_GET['year'];
     $result = mysql_query(&quot;SELECT * FROM events WHERE event_year = '$event_year'&quot;);

     // عرض المعلومات من قاعدة بيانات بإستخدام التكرار
     // وبواسطة الدالة while
     while($row=mysql_fetch_array($result)) {
         echo '&lt;div&gt;&lt;h2&gt;'.$row['event_name'].'&lt;/h2&gt;';
         echo '&lt;p&gt;'.$row['event_description'].' &lt;span&gt;(تاريخ '.$row['event_date'].')&lt;/span&gt;&lt;/p&gt;';
         echo '&lt;/div&gt;';
     }
}
?&gt;
</pre>
<h4>كتابة الأجاكس في مكتبة MooTools</h4>
<p>سأضع شفرة Javascript الخاصة بمكتبة MooTools، التطبيق سيكون بإستخدام كائن Request وشرحناه في الأعلى:</p>
<pre class="brush: jscript;">
window.addEvent('domready',function(){
    var ajax_load = '&lt;span class=&quot;loading&quot;&gt;Loading&lt;/span&gt;';
    var contentElement = $('content');

    $$('.year').addEvent('change',function(){
        var getCurYear = this.get('value');
        var req = new Request({
            method: 'get',
            url: 'query.php',
            data: { year : getCurYear },
            onRequest: function() {
                contentElement.set('html',ajax_load);
            },
            onComplete: function(response) {
                contentElement.set('html',response).setStyle('opacity', '0');
                var FxElement = new Fx.Tween(contentElement,{property: 'opacity', duration: '900'});
                FxElement.start('0','1');
            }
        }).send();
    });
});
</pre>
<p>سأشرح ما تم كتابته في الشفرة السابقة على هذه القوائم:</p>
<ul>
<li>السطر 1: إضافة حدث domready قبل بداية التعامل مع مكتبة MooTools.</li>
<li>السطر 2: كتابة متغير خاص لمقطع التحميل (صورة التحميل).</li>
<li>السطر 3: كتابة متغير خاص بعنصر content#.</li>
<li>السطر 5: إضافة حدث change للعنصر الذي يحمل الصنف year. (عنصر الإختيارات أو الوسم select)</li>
<li>السطر 6: كتابة متغير يشير إلى القيمة الحالية لعنصر الإختيارات.</li>
<li>السطر 7: متغير جديد لكتابة كائن Request.</li>
<li>السطر 8: إشارة إلى طريقة الطلب أو نوع الطلب، إخترنا الطريقة GET.</li>
<li>السطر 9: إشارة إلى عنوان الطلب.</li>
<li>السطر 10: إشارة إلى البيانات، هنا نكتب المتغيرات التي سترسل مع الطلب بواسطة طريقة send.</li>
<li>السطر 11: حدث onRequest، أي أنه أثناء حدوث الطلب ونضع فيه مقطع التحميل قبل إستدعاء البيانات وهو موجود في السطر 12.</li>
<li>السطر 14: حدث onComplete، يستخدم كما ذكرنا في حالة إكتمال الطلب ونستخدم عند كتابة الدالة متغير response ويحتوي على البيانات المستدعاه من الخادم.</li>
<li>السطر 19: إستخدام الطريقة send بعد الطلب لإرساله إلى الخادم.</li>
</ul>
<p>الآن شرحنا الأجزاء الرئيسية لكتابة الأجاكس، بالنسبة لمحتويات الحدث onComplete فضلت شرحها بشكل منفصل وإستخدمناه فيها كائن Fx الخاص بالمؤثرات في مكتبة MooTools ، هنا شرح بقية السطور:</p>
<ul>
<li>السطر 15: وضع محتويات المتغير response ضمن عنصر content#، وإشارة خاصيةopacity فيه إلى الصفر. (قبل عمل التأثير)</li>
<li>السطر 16: متغير FxElement ونكتب فيه كائن Fx ونستخدم <a href="http://mootools.net/docs/core/Fx/Fx.Tween">تأثير Tween</a> للمتغير contentElement (عنصر content#) في التحكم بخاصية opacity ومع كتابة مدة التأثير وأشرنا إلى أن التأثير مدته 900 جزء من الألف من الثانية.</li>
<li>السطر 17: إستخدام طريقة أو دالة start في تحويل القيمة خاصية opacity من 0 إلى 1 وهنا تكون مدة التحويل هي المدة التي حددناها في السطر السابق 900 جزء من الألف من الثانية (duration: 900).</li>
</ul>
<p>سطور التأثيرات ليس لها دخل في الأجاكس، ولكن أحببنا إستخدامها إضافة عليها فقط.</p>
<ul class="post-information">
<li class="demo-tut"><a href="http://demos.mubde3.net/ajax-easily/events-withMootools.php">مثال على الدرس</a></li>
<li class="download-files"><a href="http://www.mubde3.net/blog/wp-content/uploads/2010/02/ajax-event-year-MooTools.zip">تحميل المرفقات</a></li>
</ul>
<div class="tweetmeme_button" style="float: left; margin: 10px 500px 10px 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.mubde3.net%2Fblog%2Farchives%2Fajax-easily-2-mootools"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.mubde3.net%2Fblog%2Farchives%2Fajax-easily-2-mootools" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.mubde3.net/blog/archives/ajax-easily-2-mootools/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>درس: عمل قائمة ألسنة Tabs بإستخدام jQuery</title>
		<link>http://www.mubde3.net/blog/archives/create-tabs-list-with-jquery</link>
		<comments>http://www.mubde3.net/blog/archives/create-tabs-list-with-jquery#comments</comments>
		<pubDate>Tue, 23 Feb 2010 08:55:31 +0000</pubDate>
		<dc:creator>أحمد الكثيري</dc:creator>
				<category><![CDATA[تطوير المواقع]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[تطوير مواقع]]></category>
		<category><![CDATA[دروس]]></category>

		<guid isPermaLink="false">http://www.mubde3.net/blog/?p=1629</guid>
		<description><![CDATA[القوائم التي تأتي على شكل ألسنة معروفة لدى الجميع ويأتي الشكل من مفهوم Tabs أو الألسنة ونجدها في أكثر من تطبيق سواء كان تطبيق ويب أو سطح المكتب، يمكن بالتأكيد عملها بتقنية HTML و CSS وبمساعدة لغة javascript.
اليوم سوف نتعرف على كيفية عمل قائمة ألسنة Tabs بإستخدام مكتبة jQuery وتأتي الألسنة بشكل أفقي وتحتها يكون [...]]]></description>
			<content:encoded><![CDATA[<p>القوائم التي تأتي على شكل ألسنة معروفة لدى الجميع ويأتي الشكل من مفهوم Tabs أو الألسنة ونجدها في أكثر من تطبيق سواء كان تطبيق ويب أو سطح المكتب، يمكن بالتأكيد عملها بتقنية HTML و CSS وبمساعدة لغة javascript.</p>
<p>اليوم سوف نتعرف على <strong>كيفية عمل قائمة ألسنة Tabs بإستخدام مكتبة jQuery</strong> وتأتي الألسنة بشكل أفقي وتحتها يكون صندوق المحتويات، وبنفس أسلوب <a href="http://www.mubde3.net/blog/archives/create-slide-list-with-jquery">درس القوائم المنزلقة</a> سوف أشرح الدرس بإستخدام الصور لطرح فكرة الدرس.</p>
<ul class="post-information">
<li class="demo-tut"><a href="http://www.mubde3.net/blog/wp-content/uploads/2010/02/tabs.html">مثال على الدرس</a></li>
<li class="download-files"><a href="http://www.mubde3.net/blog/wp-content/uploads/2010/02/jQTabs.zip">تحميل المرفقات</a></li>
</ul>
<p><span id="more-1629"></span></p>
<h3>تركيبة القائمة</h3>
<p>القوائم التي سأصممها على شكل ألسنة أو Tabs تكون أفقية وفي العادة نجدها إما في القائمة الجانبية لتصفح أجزاء من القائمة الجانبية وإخفاء الباقي كالروابط أو الأقسام أو ما شابه ويمكن أن تكون قائمة التصفح الرئيسية التي تحتوى على الروابط المهمة ويتم تصفح محتويات الموقع عن طريقها بدلاً من تحديث الصفحة دائماً.</p>
<p>هذه الصورة تمثل قائمة الألسنة التي سنبدأ بها وتمثل الشكل الخارجي الرئيسي:</p>
<p style="text-align: center;"><img class="size-full wp-image-1646 aligncenter" style="border: 0;" title="tabs-1" src="http://www.mubde3.net/blog/wp-content/uploads/2010/02/tabs-1.jpg" alt="" width="550" height="393" /></p>
<p>أما هذه الصورة تبين جميع المحتويات التي سوف تظهر بعد الضغط على أحد الألسنة التي فوق هذه المحتويات، وسيتم إخفائها وإظهار أحدها في حال الضغط على أحد الألسنة المرتبطة بأي محتوى من المحتويات المعروضة:</p>
<p style="text-align: center;"><img class="size-full wp-image-1647 aligncenter" style="border: 0;" title="tabs-2" src="http://www.mubde3.net/blog/wp-content/uploads/2010/02/tabs-2.jpg" alt="" width="550" height="288" /></p>
<p>الآن نأتي إلى تشريح القائمة بشكل سريع عن طريق إظهار الأصناف التي سنستخدمها في تقنية CSS، علماً بأن تركيبة HTML ستكون بإستخدام وسم القوائم li للألسنة ووسم div لمحتوى القائمة الواحدة ووسم div آخر يجمع المحتويات كلها لكي يكون ثابت على إرتفاع واحد:</p>
<p style="text-align: center;"><img class="size-full wp-image-1648 aligncenter" style="border: 0;" title="tabs-3" src="http://www.mubde3.net/blog/wp-content/uploads/2010/02/tabs-3.jpg" alt="" width="550" height="450" /></p>
<h3>شفرة HTML</h3>
<p>نأتي إلى شفرة HTML قبل محتويات القائمة، لتوضيح كيف ستكون التركيبة الخاصة بها ووضع التصور الذي وضعناه في الشكل السابق أو النقطة السابقة حول التشريح السريع عن طريق أصناف CSS، وبالطبع بدون عناوين أو نصوص:</p>
<pre class="brush: xml;">
&lt;div id=&quot;tabs&quot;&gt;
	&lt;ul id=&quot;nav&quot;&gt;
		&lt;li&gt;...&lt;/li&gt;
		&lt;li&gt;...&lt;/li&gt;
		&lt;li&gt;...&lt;/li&gt;
	&lt;/ul&gt;
 	&lt;div id=&quot;content&quot;&gt;
		&lt;div id=&quot;slide-1&quot; style=&quot;display: block&quot;&gt;
			..
		&lt;/div&gt;

		&lt;div id=&quot;slide-2&quot;&gt;
			..
		&lt;/div&gt;

		&lt;div id=&quot;slide-3&quot;&gt;
			..
		&lt;/div&gt;
	&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>بعد إضافة الأشياء التي نريدها من قوائم الألسنة ومحتوياتها ستكون محتويات الألسنة مخفية ما عدى واحدة نختارها ستكون مفتوحة في البداية وبعدها يتنقل المستخدم إلى أي قائمة ويختفي المحتوى الخاص بالقائمة أو اللسان السابق السابقة، ونرى كيف سيكون تنسيق الشكل بتقنية CSS بعد ذلك:</p>
<pre class="brush: xml;">
&lt;div id=&quot;tabs&quot;&gt;
    &lt;ul id=&quot;nav&quot;&gt;
        &lt;li&gt;&lt;a id=&quot;tab-1&quot; href=&quot;#&quot;&gt;آخر الأخبار&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a id=&quot;tab-2&quot; href=&quot;#&quot;&gt;خلاصات&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a id=&quot;tab-3&quot; href=&quot;#&quot;&gt;أشياء أخرى&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
    &lt;div id=&quot;content&quot;&gt;
        &lt;div id=&quot;slide-1&quot; style=&quot;display: block&quot;&gt;
            &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;http://www.mubde3.net/blog/archives/motafarekat-blog-4&quot;&gt;متفرقات حول المدونة #4&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;http://www.mubde3.net/blog/archives/motafarekat-blog-3&quot;&gt;متفرقات حول المدونة #3&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;http://www.mubde3.net/blog/archives/motafarekat-blog-2&quot;&gt;متفرقات حول المدونة #2&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;http://www.mubde3.net/blog/archives/motafarekat-blog-1&quot;&gt;متفرقات حول المدونة #1&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;http://www.mubde3.net/blog/archives/links-5-4-2009&quot;&gt;روابط .. 5 إبريل 2009 ..&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;http://www.mubde3.net/blog/archives/links-27-3-2009&quot;&gt;روابط .. 27 مارس 2009 ..&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;http://www.mubde3.net/blog/archives/links-21-3-2009&quot;&gt;روابط .. 21 مارس 2009 ..&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/div&gt;

        &lt;div id=&quot;slide-2&quot;&gt;
            &lt;ul&gt;
            &lt;li&gt;&lt;a href=&quot;http://www.mubde3.net/blog/archives/ajax-easily&quot;&gt;الأجاكس بسهولة&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;http://www.mubde3.net/blog/archives/the-best-of-2009-posts-from-several-blogs&quot;&gt;أفضل مواضيع لعام 2009 من عدة مدونات&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;http://www.mubde3.net/blog/archives/5-methods-for-actual-benefiting-from-blogging&quot;&gt;5 طرق للإستفادة الفعلية من التدوين&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;http://www.mubde3.net/blog/archives/principles-of-design&quot;&gt;مبادئ التصميم الستة&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;http://www.mubde3.net/blog/archives/the-future-of-arabic-forums&quot;&gt;وضع المنتديات العربية&lt;/a&gt;&lt;/li&gt;
            &lt;li&gt;&lt;a href=&quot;http://www.mubde3.net/blog/archives/more-details-about-html-forms&quot;&gt;تفاصيل أكثر عن نماذج HTML&lt;/a&gt;&lt;/li&gt;
            &lt;/ul&gt;
        &lt;/div&gt;

        &lt;div id=&quot;slide-3&quot;&gt;
            &lt;p&gt;مدونة تحتوي على مواضيع متخصصة بالتقنية والأخص في تطوير المواقع والتصميم ومواضيع متفرقة لها علاقة بهذه التخصصات أو قريبة منها.&lt;/p&gt;
            &lt;p&gt;نبذه عن &lt;strong&gt;مدونة مبدع&lt;/strong&gt; في الفقرة السابقة.&lt;/p&gt;
        &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
</pre>
<h3>شفرة CSS</h3>
<p>الصنف الرئيسي الذي سيضم القائمة الرئيسية لكل الألسنة وهو tabs# وسيتم تنسيق جميع الأصناف عن طريق هذا الصنف ويمكنك الإستغناء عنه لأنه غير مهم كثيراً، سأضع الأصناف التي سنستخدمها على شكل قائمة لكي يسهل معرفة فائدة إستخدامها أو غرض إستخدامها:</p>
<ul>
<li><strong>nav#</strong>، صنف خاص للألسنة التي ستكون على شكل أفقي وستحتوي على وسم القوائم  li.</li>
<li><strong>current.</strong>، صنف خاص لتمثيل القائمة الحالية (التي تم الضغط عليها  والمختاره  من قبل المستخدم) وستكون للقائمة التي تظهر اول مرة عند فتح  الصفحة.</li>
<li><strong>content#</strong>، صنف خاص لضم المحتويات الخاصة بالألسنة بحيث هو يكون العنصر الأب  لهم.</li>
<li><strong>tab-slide.</strong>، صنف يمثل محتوى كل قائمة سيتم إخفاء القوائم وإظهارها عن طريق  هذا الصنف.</li>
<li><strong>tab-list.</strong>، صنف خاص بالوسم ul (للقوائم) وعنصر أب لوسم li.</li>
</ul>
<p>أما عن الربط من بين الألسنة ومحتوياتها وفستكون هذه الأصناف مستخدمة للربط بينها عندما تأتي مرحلة إكتمال الدرس بإستخدام مكتبة jQuery:</p>
<ul>
<li><strong>tab-1#</strong>، <strong>#tab-2</strong>، <strong>#tab-3</strong>، أرقام الألسنة الحالية المعروضة.</li>
<li><strong>slide-1#</strong> ،<strong>#slide-1</strong> ،<strong>#slide-1</strong>، أرقام المحتويات المخفية أو الظاهرة. (ستكون  مربوطة برقم اللسان أو tab لأستخدامها لاحقاً في jQuery كما ذكرنا)</li>
</ul>
<p>الآن نأتي لعرض شفرة CSS المجهزة:</p>
<pre class="brush: css;">
#tabs {
 width: 250px;
}
#tabs #content  {
 background-color: #e3e3e3;
}
#tabs #nav {
 float: right;
 width: 250px;
 border-bottom: 1px solid #5f5f5f;
}
#tabs #nav li {
 padding: 0;
 float: right;
 margin: 1px 0 -1px 3px;
 background: #e3e3e3 url(top-gra.png) repeat-x top;
}
#tabs #nav li a {
 padding: 7px 10px;
 display: block;
 font: bold 15px arial;
 color: #454545;
 border: 1px solid #5f5f5f;
}
#tabs #nav li a.current {
 border-bottom: 1px solid #e3e3e3;
}
#tabs #content {
 padding: 10px;
 clear: right;
 text-align: right;
 min-height: 240px;
 border: 1px solid #5f5f5f;
 border-top: 0;
 -moz-border-radius-bottomleft: 4px;
 -moz-border-radius-bottomright: 4px;
 -webkit-border-radius-bottomleft: 4px;
 -webkit-border-bottom-right-radius: 4px;
 -webkit-border-bottom-left-radius: 4px;
}
#tabs #content .tab-slide { display: none; }
#tabs #content .tab-slide .tab-list li {
 margin: 1px 0;
 padding: 5px 0;
 border-bottom: 1px solid #7c7c7c;
 font: 13px tahoma;
 line-height: 22px;
}
#tabs #content .tab-slide p {
 margin: 0 0 10px;
 padding: 0;
 font: 13px tahoma;
 line-height: 22px;
}
#tabs #content .tab-slide a {
 color: #353433;
}
#tabs #content .tab-slide a:hover {
 color: #000000;
}
</pre>
<h3>إستخدام مكتبة jQuery في عمل تأثيرات على القوائم</h3>
<p>نأتي إلى جزء أساسي من درسنا وهو إستخدام مكتبة jQuery في تكملة عمل الشكل، لدينا شكلين أحدهم سريع والثاني بسرعة ملاحظة، المهم هو هو طريقة العمل.</p>
<p>كنت سأضع إثنين من الأشكال ولكن سأكتفي بواحد لأن لا فرق بينهما إلا في ملاحظة سرعة تحول المحتوى إلى محتوى آخر، في البداية ستكون محتويات الألسنة غير ملاحظة وهي عادية كأن تضغط على أحد الألسنة ولا تشاعد سرعة تنقل محتوياته في أسفله،  أي أننا لم نحدد سرعة معينة.</p>
<p>خلال الشفرة التالية ستشاهد تكملة الدرس، وسترى وصف الشفرة بعدها مباشرة:</p>
<pre class="brush: jscript;">
$(function(){
     $('#tabs #nav li a').click(function(){
         var currentNum = $(this).attr('id').slice(-1);
         $('#tabs #nav li a').removeClass('current');
         $(this).addClass('current');

         $('#tabs #content .tab-slide').hide();
         $('#tabs #content #slide-'+currentNum+'.tab-slide').show();
     });
});
</pre>
<p>سأضع وصف الشفرة السابقة عبر هذه القائمة:</p>
<ul>
<li><strong>السطر 2:</strong> تنفيذ أوامر في حال الضغط على رابط أياً من الألسنة الموجودة بإستخدام الحدث click.</li>
<li><strong>السطر 3:</strong> أخذ رقم الرابط الحالي والموجود في خاصية id في الوسم a.</li>
<li><strong>السطر 4:</strong> حذف الصنف current (لإظهار اللسان الحالي) من جميع روابط الألسنة.</li>
<li><strong>السطر 5:</strong> إضافة الصنف current إلى رابط اللسان الخاص بالرابط الحالي (الرابط المضغوط من قبل المستخدم)</li>
<li><strong>السطر 7:</strong> إخفاء جميع محتويات الألسنة.</li>
<li><strong>السطر 8:</strong> إظهار محتوى اللسان الحالي وبإستخدام رقم اللسان الذي تم ضغطه.</li>
</ul>
<p>عرضنا في شفرة javascript السابقة طريقة إظهار وإخفاء الألسنة ومحتوياتها بإستخدام jQuery، تلاحظ في الشفرة السابقة أن التطبيق يكون بدون سرعة ملاحظة أو إستخدام تأثيرات غير show وhide تستطيع وضع سرعة محددة بإدخال <a href="http://en.wikipedia.org/wiki/Millisecond">millisecond</a> وهي تساوي جزء من ألف جزء من الثانية لأي تأثير حتى التأثيرات التي إستخدناها show وhide مثل هذا التعديل (تعديل على الشفرة السابقة بظهور وإخفاء ملاحظ):</p>
<pre class="brush: jscript;">
$('#tabs #content .tab-slide').hide(300);
$('#tabs #content #slide-'+currentNum+'.tab-slide').show(300);
</pre>
<p>يمكن إستخدام تأثيرات أخرى مثل slideUp و slideDown ، ستجد مثال بإستخدام هذين التأثيرين مع المثال المرفق ويمكنك كتابته مثل أي تأثيرات jQuery أخرى وهذا أيضاً تعديل على الشفرة الرئيسية التي كتبناها وفي السطر 7 و 8 بالتحديد:</p>
<pre class="brush: jscript;">
$('#tabs #content .tab-slide').slideUp(300);
$('#tabs #content #slide-'+currentNum+'.tab-slide').slideDown(300);
</pre>
<h3>إضافات jQuery</h3>
<p>وبالأمكان الإعتماد على إضافات توفر عليك الوقت في عمل مثل هذه القوائم، بالنسبة لشكل الألسنة التي يتم تصفحها بشكل أفقي فتوجد إضافات لذلك وخاصة في المكتبات التي تعتمد على مكتبة jQuery وهي تهدف إلى تحسين واجهة المستخدم وهي التي شرحتها أيضاً في <a href="http://www.mubde3.net/blog/archives/create-slide-list-with-jquery">درس القوائم المنزلقة</a>، إنها مكتبة <a href="http://flowplayer.org/tools/index.html">jQuery Tools</a> و <a href="http://jqueryui.com/home">jQuery UI</a>.</p>
<p>كلا المكتبتين تحتوي على الأمثلة مع مصادرها بحيث تستطيع معرفة كيفية إستخدامها وعمل مثل هذه الأشكال، إضافةً إلى أكثر من مثال على عمل الأشكال التي شرحناها، بالنسبة لمكتبة jQuery UI ستجد في قسم Widgets <a href="http://jqueryui.com/demos/tabs/">مثال للألسنة Tabs</a> خلال تصفحك <a href="http://jqueryui.com/demos/">لوثائق مكتبة jQuery UI</a>.</p>
<p>أما مكتبة jQuery Tools فستجد عدة أمثلة وهي مكتبة رائعة عموماً، من خلال <a href="http://flowplayer.org/tools/demos/index.html">صفحة الأمثلة</a> ستجد أمثلة Tabs بين الأمثلة الأخرى وقسم Tabs به أكثر من 10 أمثلة.</p>
<ul class="post-information">
<li class="demo-tut"><a href="http://www.mubde3.net/blog/wp-content/uploads/2010/02/tabs.html">مثال على الدرس</a></li>
<li class="download-files"><a href="http://www.mubde3.net/blog/wp-content/uploads/2010/02/jQTabs.zip">تحميل المرفقات</a></li>
</ul>
<div class="tweetmeme_button" style="float: left; margin: 10px 500px 10px 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.mubde3.net%2Fblog%2Farchives%2Fcreate-tabs-list-with-jquery"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.mubde3.net%2Fblog%2Farchives%2Fcreate-tabs-list-with-jquery" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.mubde3.net/blog/archives/create-tabs-list-with-jquery/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>درس: عمل قائمة منزلقة بإستخدام JQuery</title>
		<link>http://www.mubde3.net/blog/archives/creating-new-slide-list-with-jquery</link>
		<comments>http://www.mubde3.net/blog/archives/creating-new-slide-list-with-jquery#comments</comments>
		<pubDate>Sat, 20 Feb 2010 22:18:37 +0000</pubDate>
		<dc:creator>أحمد الكثيري</dc:creator>
				<category><![CDATA[تطوير المواقع]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[تطوير مواقع]]></category>
		<category><![CDATA[دروس]]></category>
		<category><![CDATA[قائمة]]></category>

		<guid isPermaLink="false">http://www.mubde3.net/blog/?p=1554</guid>
		<description><![CDATA[يعجبني هذا النوع من القوائم والتي تعتمد على تأثير مثل Slide ضمن تأثيرات jQuery وهي قد لا تكون قوائم من حيث البنية ولكنها  على شكل قوائم ويكون الشكل عمودي وليس أفقي.
هذا الدرس يشرح كيفية عمل قائمة منزلقة بإستخدام مكتبة jQuery بسهولة وبشكل عمودي وسأستخدم  صور سريعة لطرح فكرة الدرس، قبل أيام عرضت عدة [...]]]></description>
			<content:encoded><![CDATA[<p>يعجبني هذا النوع من القوائم والتي تعتمد على تأثير مثل Slide ضمن تأثيرات jQuery وهي قد لا تكون قوائم من حيث البنية ولكنها  على شكل قوائم ويكون الشكل عمودي وليس أفقي.</p>
<p>هذا الدرس يشرح كيفية <strong>عمل قائمة منزلقة بإستخدام مكتبة jQuery بسهولة</strong> وبشكل عمودي وسأستخدم  صور سريعة لطرح فكرة الدرس، قبل أيام عرضت عدة <a href="http://www.mubde3.net/blog/archives/jquery-library-resources">مصادر سريعة حول مكتبة jQuery</a> بدلاً من كتابة تفاصيل تجدها بسهولة عند بحثك  في جوجل أو حتى طريقة عمل هذا الدرس.</p>
<ul class="post-information">
<li class="demo-tut"><a href="http://www.mubde3.net/blog/wp-content/uploads/2010/02/jQVerSlides.html">مثال على الدرس</a></li>
<li class="download-files"><a href="http://www.mubde3.net/blog/wp-content/uploads/2010/02/jQVerSlides.zip">تحميل المرفقات</a></li>
</ul>
<p><span id="more-1554"></span><br />
إعتماد الدرس كما ذكرت سيكون على <a href="http://www.jquery.com">مكتبة jQuery</a> ويمكن أن تكون بداية لكتابة دروس حول هذه المكتبة ولكن بالطرح الذي أراه مناسب للمستفيدين من المدونة.</p>
<h3>تركيبة القائمة</h3>
<p>القوائم التي سأصممها ستكون أشكالها عمودية وهي عادة نجدها في القائمة الجانبية عند تصفح المواقع، الشكل الذي اعتمدت عليه في تصميم القائمة موضحة الصورة التالية:</p>
<p style="text-align: center;"><img class="size-full wp-image-1556 aligncenter" style="border: none;" title="slide-1" src="http://www.mubde3.net/blog/wp-content/uploads/2010/02/slide-1.jpg" alt="" width="284" height="159" /></p>
<p>وهذه الصورة تبين جميع القوائم مفتوحة قبل أن أشرح تركيبها وهذا سيفيدنا أثناء كتابة شفرة HTML و CSS:</p>
<p style="text-align: center;"><img class="size-full wp-image-1557 aligncenter" style="border: none;" title="slide-2" src="http://www.mubde3.net/blog/wp-content/uploads/2010/02/slide-2.jpg" alt="" width="417" height="360" /></p>
<p>سأضع صورة وهي عبارة عن تصوّر لشكل القائمة وأشرح بها أوسمة HTML وأصناف CSS لتتضح الصورة أكثر بهذا الشكل:</p>
<p style="text-align: center;"><img class="size-full wp-image-1558 aligncenter" style="border: none;" title="slide-3" src="http://www.mubde3.net/blog/wp-content/uploads/2010/02/slide-3.jpg" alt="" width="550" height="489" /></p>
<h3>شفرة HTML</h3>
<p>نضع شفرة HTML قبل محتويات القائمة للتأكد من التصوّر الذي وضعناه في النقطة السابقة، أي بدون العناوين والنصوص:</p>
<pre class="brush: xml;">
 &lt;!-- box-slide --&gt;
 &lt;div id=&quot;box-slide&quot;&gt;

     &lt;!-- box-content --&gt;
     &lt;div class=&quot;box-content&quot;&gt;
         &lt;div class=&quot;title&quot;&gt; .. &lt;/div&gt;
         &lt;div class=&quot;contain&quot;&gt; .. &lt;/div&gt;
     &lt;/div&gt;
     &lt;!-- /box-content --&gt;

     &lt;!-- box-content --&gt;
     &lt;div class=&quot;box-content&quot;&gt;
         &lt;div class=&quot;title&quot;&gt; .. &lt;/div&gt;
         &lt;div class=&quot;contain&quot;&gt; .. &lt;/div&gt;
     &lt;/div&gt;
     &lt;!-- /box-content --&gt;

     &lt;!-- box-content --&gt;
     &lt;div class=&quot;box-content&quot;&gt;
         &lt;div class=&quot;title&quot;&gt; .. &lt;/div&gt;
         &lt;div class=&quot;contain&quot;&gt; .. &lt;/div&gt;
     &lt;/div&gt;
     &lt;!-- /box-content --&gt;

     &lt;!-- box-content --&gt;
     &lt;div class=&quot;box-content&quot;&gt;
         &lt;div class=&quot;title&quot;&gt; .. &lt;/div&gt;
         &lt;div class=&quot;contain&quot;&gt; .. &lt;/div&gt;
     &lt;/div&gt;
     &lt;!-- /box-content --&gt;

 &lt;/div&gt;
 &lt;!-- /box-slide --&gt;
</pre>
<p>بعد إضافة العناوين والنصوص، سيكون محتوى الصندوق والذي سيحتوي على النصوص أو القوائم على سبيل المثال مخفي في جميع الأشكال التي سنضعها في الأمثلة وسنبين ذلك عند تنسيق الشكل بتقنية CSS:</p>
<pre class="brush: xml;">
 &lt;!-- box-slide --&gt;
 &lt;div id=&quot;box-slide&quot;&gt;

 &lt;!-- box-content --&gt;
     &lt;div class=&quot;box-content&quot;&gt;
         &lt;div class=&quot;title&quot;&gt;&lt;h3&gt;&lt;a href=&quot;#&quot;&gt;القائمة الأولى&lt;/a&gt;&lt;/h3&gt;&lt;/div&gt;
         &lt;div class=&quot;contain&quot;&gt;&lt;p&gt;مكان القائمة أو النصوص الخاصة بالقائمة الأولى، يمكنك إضافة المزيد.&lt;/p&gt;&lt;/div&gt;
     &lt;/div&gt;
 &lt;!-- /box-content --&gt;

 &lt;!-- box-content --&gt;
     &lt;div class=&quot;box-content&quot;&gt;
         &lt;div class=&quot;title&quot;&gt;&lt;h3&gt;&lt;a href=&quot;#&quot;&gt;القائمة الثانية&lt;/a&gt;&lt;/h3&gt;&lt;/div&gt;
         &lt;div class=&quot;contain&quot;&gt;&lt;p&gt;مكان القائمة أو النصوص الخاصة بالقائمة الثانية، يمكنك إضافة المزيد.&lt;/p&gt;&lt;/div&gt;
     &lt;/div&gt;
 &lt;!-- /box-content --&gt;

 &lt;!-- box-content --&gt;
     &lt;div class=&quot;box-content&quot;&gt;
         &lt;div class=&quot;title&quot;&gt;&lt;h3&gt;&lt;a href=&quot;#&quot;&gt;القائمة الثالثة&lt;/a&gt;&lt;/h3&gt;&lt;/div&gt;
         &lt;div class=&quot;contain&quot;&gt;&lt;p&gt;مكان القائمة أو النصوص الخاصة بالقائمة الثالثة، يمكنك إضافة المزيد.&lt;/p&gt;&lt;/div&gt;
     &lt;/div&gt;
 &lt;!-- /box-content --&gt;

 &lt;!-- box-content --&gt;
     &lt;div class=&quot;box-content&quot;&gt;
         &lt;div class=&quot;title&quot;&gt;&lt;h3&gt;&lt;a href=&quot;#&quot;&gt;القائمة الرابعة&lt;/a&gt;&lt;/h3&gt;&lt;/div&gt;
         &lt;div class=&quot;contain&quot;&gt;&lt;p&gt;مكان القائمة أو النصوص الخاصة بالقائمة الرابعة، يمكنك إضافة المزيد.&lt;/p&gt;&lt;/div&gt;
     &lt;/div&gt;
 &lt;!-- /box-content --&gt;

 &lt;/div&gt;
 &lt;!-- /box-slide --&gt;
</pre>
<h3>تنسيق CSS</h3>
<p>الأصناف التي سيتم تنسيقها في شفرة CSS التالية هي box-slide# ويحتوي على جميع القوائم وهو ليس مهم بالدرجة الكبيرة، أما box-content. فيحتوي على مجموعة واحدة من العنوان والمحتوى الدال عليه، وبالنسبة للصنف title. فهو للعنوان و contain. لمحتوى القائمة الواحدة.</p>
<p>بالطبع هناك إضافات خاصة بأشكال القوائم مثل الصنف current. وهو للعنوان الذي تم الضغط عليه (خاص بأحد أشكال القوائم الموجودة في الأسفل) والصنف hide. لإخفاء محتوى القائمة وهو أيضاً أحد الأصناف التي سنستعملها في شكل من الأشكال، هذه الشفرة المجهزة للدرس:</p>
<pre class="brush: css; highlight: [35,57];">
 #box-slide{
     margin: 10px auto;
     width: 250px;
     text-align: right;
 }

 .box-content .title {
     margin: 1px 0 0;
     padding: 1.5px 5px 1px;
     width: 250px;
     height: 26px;
     -moz-border-radius-topleft: 7px;
     -moz-border-radius-topright: 7px;
     -moz-border-radius-bottomleft: 2px;
     -moz-border-radius-bottomright: 2px;
     -webkit-border-top-left-radius: 7px;
     -webkit-border-top-right-radius: 7px;
     -webkit-border-bottom-left-radius: 2px;
     -webkit-border-bottom-right-radius: 2px;
     background: #c5c5c5 url(box-light.png) repeat-x top;
 }
 .box-content .title h3 {
     margin: 0;
     padding: 4px 5px;
     font: bold 15px &quot;Times New Roman&quot;;
     color: #353232;
 }
 .box-content .title h3 a {
     padding: 5px 0;
     color: #353232;
 }
 .box-content .title h3 a:hover {
     color: #ffffff;
 }
 .box-content .title.current {
     background-color: #5f5f5f;
 }
 .box-content .title.current h3 a {
     color: #fff;
 }
 .box-content .contain {
     margin: 1px 0 0;
     padding: 5px 5px;
     width: 248px;
     display: none;
     border: 1px solid #5f5f5f;
     -moz-border-radius: 2px;
     -webkit-border-radius: 2px;
 }
 .box-content .contain p {
     font: 13px tahoma;
     color: #383737;
 }
 #box-slide .box-content .contain {
     border-color: #909090;
 }
 #box-slide .box-content .contain .hide { display: none; }
</pre>
<h3>إستخدام مكتبة jQuery في عمل تأثيرات على القوائم</h3>
<p>الآن نأتي لجزء التأثيرات وباستخدام مكتبة jQuery، قسمنا الأمثلة إلى ثلاثة سأشرح كل منها وشفرة Javascript الخاصة بها.</p>
<h4>الشكل الأول: بسيط وعادي</h4>
<p>الشكل الأول سيكون شكل عادي للقوائم بحيث فقط يتيح للمستخدم الضغط على عنوان القائمة وعرض محتويات القائمة بدون تحديد سرعة معينة، الأصناف والأوسمة التي سنستخدمها هي التي عرضناها في الأعلى في بداية الدرس، سترى الوصف بعد الشفرة التالية:</p>
<pre class="brush: jscript;">
$(function(){
 $('#box-slide .box-content .title').click(function(){
 $(this).next().slideToggle(0);
 });
});
</pre>
<p>في الشفرة السابقة كان الإستخدام عادي جداً وسهل أيضاً بحيث يتم الضغط على عنوان القائمة فيظهر محتواها، في السطر الثالث حددنا الصنف الحالي الذي تم ضغطه وهو title. ثم العنصر الذي بعده وهو محتواه بإستخدام الخاصية next وبعد ذلك إستخدمنا <a href="http://api.jquery.com/slideToggle/">تاثير slideToggle</a> وهو للإنزلاق التبادلي مع كل حدث.</p>
<h4>الشكل الثاني: ملاحظة الفتح والإغلاق</h4>
<p>الشكل الثاني سيكون نفس الشكل السابق ولكن مع ملاحظة تأثير الإنزلاق أي أنه تغيير في السرعة في تأثير slideToggle إلى السرعة التي نريدها سنحدد في هذا الشكل وستكون 300 جزء من ألف جزء من الثانية، الشرح سيكون هو نفسه في الشفرة السابقة ولا داعي لإعادة الشرح.</p>
<pre class="brush: jscript;">
$(function(){
     $('#box-slide .box-content .title').click(function(){
         $(this).next().slideToggle(300);
     });
});
</pre>
<h4>الشكل الثالث: فتح نافذة واحدة على الأقل</h4>
<p>الشكل الثالث ستفتح من خلالها نافدة واحدة وتبقى نافذة واحدة على مفتوحة بعد الضغط بحيث يتيح للمستخدم الضغط على عنوان القائمة وتمييز القائمة المفتوحة عن غيرها وإخفاء بقية محتوى القائمة المفتوح والغير مستخدم تلقائياً، سترى الوصف بعد الشفرة التالية:</p>
<pre class="brush: jscript;">
$(function(){
     $('#box-slide .box-content .title').click(function(){

         $('#box-slide .box-content .title').removeClass('current');
         $('#box-slide .box-content .contain').addClass('hide');
         $(this).next().removeClass('hide');

         $('#box-slide .box-content .contain.hide').slideUp(300);
         $(this).addClass('current');

         $(this).next().slideDown(300);
     });
});
</pre>
<p>تستطيع أن ترى وصف ما كتبته في الأعلى على هذه القائمة:</p>
<ul>
<li><strong>السطر 2:</strong> إنشاء دالة لحدث click (أعني عند الضغط على الصنف title.)</li>
<li><strong>السطر 4:</strong> حدف الصنف current. من جميغ عناوين القوائم التي تحمل الصنف title.</li>
<li><strong>السطر 5:</strong> إضافة الصنف hide. من محتوى القائمة والتي تمثل الصنف contain.</li>
<li><strong>السطر 6:</strong> حذف الصنف .hide من المحتوى القائمة الحالية ( والعملية هي أن يُفتح  محتوى القائمة التي ضغطنا على عنوانها ) وتم تحديد محتوى القائمة مباشرة عبر الخاصية next</li>
<li><strong>السطر 8:</strong> إنزلاق جميع المحتويات التي تحمل الصنف hide. إلى الأعلى (أعني  إغلاقها)</li>
<li><strong>السطر 9:</strong> إضافة الصنف current. إلى عنوان القائمة الحالية (التي تم ضغطها)</li>
<li><strong>السطر 11:</strong> إنزلاق محتوى القائمة الحالية إلى الأسفل (فتح القائمة)</li>
<li><strong>السطر 11:</strong> تم تحديد سرعة الإنزلاق بـ 300 جزء من ألف جزء من الثانية</li>
</ul>
<p>تلاحظ أن صنف hide. و current. تم إضافتهم عن طريق الشفرة لأستخدام  الأول في إخفاء المحتويات والثاني في تغيير لون عنوان القائمة لكي تدل على  أنك ضغطت عليها.</p>
<p><strong>هل تريد إظهار نافذة واحدة مفتوحة عند زيارة الصفحة؟</strong> بدلاً من أن تجد النافذة مغلقة يمكن جعلها مفتوحة عند زيارة الصفحة ثم يقوم المستخدم بإختيار القائمة التي يريدها ويتم إغلاقها، ببساطة أضف صنف current. إلى عنوان القائمة و صنف آخر تضيفه إلى محتوى القائمة التي تريد أن تراها مفتوحة عند فتح الصفحة.</p>
<p style="text-align: center;"><img class="size-full wp-image-1556 aligncenter" style="border: none;" title="slide-1" src="http://www.mubde3.net/blog/wp-content/uploads/2010/02/slide-4.jpg" alt="" /></p>
<p>مثلاً، إذا أردنا جعل القائمة الأولى مفتوحة عند فتح الصفحة نضيف صنف current. إلى عنوان القائمة الأولى ونكتب صنف آخر يفتح محتوى القائمة فليكن display. ستكون شفرة القائمة الأولى بهذا الشكل:</p>
<pre class="brush: xml;">
&lt;div class=&quot;box-content&quot;&gt;
	&lt;div class=&quot;title current&quot;&gt;&lt;h3&gt;&lt;a href=&quot;#&quot;&gt;القائمة الأولى&lt;/a&gt;&lt;/h3&gt;&lt;/div&gt;
	&lt;div class=&quot;contain display&quot;&gt;
		&lt;p&gt;مكان القائمة أو النصوص الخاصة بالقائمة الأولى، يمكنك إضافة المزيد.&lt;/p&gt;
	&lt;/div&gt;
&lt;/div&gt;
</pre>
<p>أما بالنسبة لصنف display. تستطيع تحذفه وتضيف تنسيق أو صنف آخر من عندك لأن الصنف display. يحتوي على خاصية واحدة:</p>
<pre class="brush: css;">
.display {
	display: block;
}
</pre>
<h3>إضافات jQuery</h3>
<p>وبالأمكان الإعتماد على إضافات توفر عليك الوقت في عمل مثل هذه القوائم، أضع عدة طرق أخرى لإستخدام هذه الإضافات بعد التعرف على أحد طرق عملها بمكتبة jQuery، بالنسبة لهذا الشكل من القوائم التي يتم تصفحها بشكل عمودي لم أجد إضافة متخصصة لها، أعتقد أنه يوجد ولكن قليل.</p>
<p>ولكن يوجد طريقة عمل لها عبر <a href="http://jqueryui.com/">مكتبة jQuery UI</a> ويمكنك رؤية <a href="http://jqueryui.com/demos/accordion/">صفحة المثال الخاص لعمل إنزلاق القوائم في مكتبة jQuery UI</a> وأما عن طريق <a href="http://flowplayer.org/tools/index.html">مكتبة jQuery Tools</a> ستجد طريقة عملها في قسم Tabs بالتحديد لاحظ الأمثلة التالية:</p>
<ul>
<li><a href="http://flowplayer.org/tools/demos/tabs/accordion.html">Making Accordions with the Tabs</a></li>
<li><a href="http://flowplayer.org/tools/demos/tabs/accordion-custom.html">Customizing the Accordion effect</a></li>
</ul>
<p>سأكتفي بوضع مثال خاص بمكتبة jQuery Tools، في الرابطين السابقين ستجد بداخل كل صفحة منهما طريقة عمل الشكل، وهو يعتمد على نفس الشكل الذي شرحته هنا، سأعرض مثال على إنزلاق القوائم بإستخدام مكتبة jQuery Tools، الشفرة التي أعددتها للمثال وضعتها بهذا الشكل وتستطيع إختيار أسماء الأصناف مثل ما تريد وإضافتها إلى خاصية tabs الموجودة في الإضافة:</p>
<pre class="brush: xml;">
&lt;div id=&quot;accordion&quot;&gt;

     &lt;h2&gt;القائمة الأولى&lt;/h2&gt;
     &lt;div style=&quot;display:block&quot;&gt;&lt;p&gt;مكان القائمة أو النصوص الخاصة بالقائمة الأولى، يمكنك إضافة المزيد.&lt;/p&gt;&lt;/div&gt;

     &lt;h2&gt;القائمة الثانية&lt;/h2&gt;
     &lt;div&gt;&lt;p&gt;مكان القائمة أو النصوص الخاصة بالقائمة الثانية، يمكنك إضافة المزيد.&lt;/p&gt;&lt;/div&gt;

     &lt;h2&gt;القائمة الثالثة&lt;/h2&gt;
     &lt;div&gt;&lt;p&gt;مكان القائمة أو النصوص الخاصة بالقائمة الثالثة، يمكنك إضافة المزيد.&lt;/p&gt;&lt;/div&gt;

&lt;/div&gt;
</pre>
<p>بعد إستدعاء مكتبة jQuery مع مكتبة jQuery Tools يمكنك تنفيذ الإنزلاق، لاحظ أنك تستطيع إستدعاء المكتبة مباشرة عبر الموقع بوضع هذه الشفرة لديك وهو ما سيوفر عليك الوقت:</p>
<pre class="brush: xml;">
&lt;script src=&quot;http://cdn.jquerytools.org/1.1.2/jquery.tools.min.js&quot;&gt;&lt;/script&gt;
</pre>
<p>أما بالنسبة لعمل الإنزلاق فسيكون عن طريق دالة أو خاصية tabs التابعة لمكتبة jQuery Tools:</p>
<pre class="brush: jscript;">
$(function(){
     $(&quot;#accordion&quot;).tabs(&quot;#accordion div.pane&quot;, {tabs: 'h2', effect: 'slide', initialIndex: null});
 });
</pre>
<p>سيكون الشكل الأخير جاهز بسهولة بإستخدام مكتبة jQuery Tools، يمكنك <a href="http://www.mubde3.net/blog/wp-content/uploads/2010/02/jQTools-slides.html">مشاهدة المثال مباشرةً</a> إذا أردت.</p>
<ul class="post-information">
<li class="demo-tut"><a href="http://www.mubde3.net/blog/wp-content/uploads/2010/02/jQVerSlides.html">مثال على الدرس</a></li>
<li class="download-files"><a href="http://www.mubde3.net/blog/wp-content/uploads/2010/02/jQVerSlides.zip">تحميل المرفقات</a></li>
</ul>
<div class="tweetmeme_button" style="float: left; margin: 10px 500px 10px 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.mubde3.net%2Fblog%2Farchives%2Fcreating-new-slide-list-with-jquery"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.mubde3.net%2Fblog%2Farchives%2Fcreating-new-slide-list-with-jquery" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.mubde3.net/blog/archives/creating-new-slide-list-with-jquery/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>الأجاكس بسهولة: إستخدام الأجاكس في مكتبات Javascript (مكتبة jQuery)</title>
		<link>http://www.mubde3.net/blog/archives/ajax-easily-2-jquery</link>
		<comments>http://www.mubde3.net/blog/archives/ajax-easily-2-jquery#comments</comments>
		<pubDate>Wed, 17 Feb 2010 06:23:02 +0000</pubDate>
		<dc:creator>أحمد الكثيري</dc:creator>
				<category><![CDATA[تطوير المواقع]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[أجاكس]]></category>
		<category><![CDATA[تطوير مواقع]]></category>
		<category><![CDATA[دروس]]></category>

		<guid isPermaLink="false">http://www.mubde3.net/blog/?p=1241</guid>
		<description><![CDATA[بعد أن تحدثنا في الأجزاء الأولى من طريقة كتابة الأجاكس في Javascript، نأتي لتطبيق ذلك بإستخدام مكتبات Javascript التي ستوفر علينا الوقت بالتأكيد، هذا الدرس سيتحدث عن إستخدام الأجاكس في مكتبات Javascript ضمن سلسلة الأجاكس بسهولة، كما قلت في هذه الفقرة سيكون علينا بسهولة إختصار المزيد من بإستخدام مكتبات Javascript.
البعض يفضل ذلك لسبب أنه يستخدم [...]]]></description>
			<content:encoded><![CDATA[<p>بعد أن تحدثنا في الأجزاء الأولى من طريقة <a href="http://www.mubde3.net/blog/archives/ajax-easily-1-1">كتابة الأجاكس في Javascript</a>، نأتي لتطبيق ذلك بإستخدام مكتبات Javascript التي ستوفر علينا الوقت بالتأكيد، هذا الدرس سيتحدث عن <strong>إستخدام الأجاكس في مكتبات Javascript</strong> ضمن سلسلة <a href="http://www.mubde3.net/blog/archives/ajax-easily">الأجاكس بسهولة</a>، كما قلت في هذه الفقرة سيكون علينا بسهولة إختصار المزيد من بإستخدام مكتبات Javascript.</p>
<p>البعض يفضل ذلك لسبب أنه يستخدم المكتبة معينة لتطبيق معين ويريد إستخدام الأجاكس في نفس التطبيق وبما أن المكتبة التي يستخدمها موجودة يفضل إستخدامها ليتجنب إعادة ما يريد كتابته من الصفر.</p>
<ul class="post-information">
<li class="demo-tut"><a href="http://demos.mubde3.net/ajax-easily/events-withjQuery_ajax.php">مثال على الدرس</a></li>
<li class="download-files"><a href="http://www.mubde3.net/blog/wp-content/uploads/2010/02/ajax-event-year-jQuery.zip">تحميل المرفقات</a></li>
</ul>
<p><span id="more-1241"></span></p>
<h3>الأجاكس في مكتبة jQuery</h3>
<p>في هذه الجزئية ستعرف على كتابة الأجاكس في <a href="http://jquery.com/">مكتبة jQuery</a>، سأشرح ثلاثة طرق للتعامل مع البيانات المستقبلة من طرق الخادم وهي ()ajax.$ و ()post.$ و ()get.$.</p>
<p>الآن، سنطبق ما تعلمناه كما في المثال العملي للدرس الاول وسنستخدم نفس المثال ولكن بإستخدام مكتبة jQuery بدلاً من كتابة الأجاكس من الصفر.</p>
<p>صفحة HTML ستكون مثل ما هي، وهذه شفرة HTML لهذا الدرس ( مع إستخدام لغة PHP لإستدعاء السنوات المسجلة في قاعدة البيانات في الحقل):</p>
<pre class="brush: php;">
&lt;?php
$connect = mysql_connect('localhost', 'root', '');
$db_connect = mysql_select_db($table, $connect);
if (!$connect) { die('Could not connect: ' . mysql_error()); }
mysql_query(&quot;set charset UTF8&quot;);
?&gt;

&lt;div id=&quot;form&quot;&gt;
     &lt;p&gt;تطبيق بسيط يطرح حدث معين مرتبط بالسنة التي يضعها الزائر.&lt;/p&gt;
     &lt;form method=&quot;GET&quot;&gt;
     &lt;p&gt;إختر السنة التي تم فيها الحدث
         &lt;select name=&quot;year&quot;&gt;
         &lt;option selected=&quot;selected&quot;&gt;إختر السنة&lt;/option&gt;

         &lt;?php
         $result2 = mysql_query(&quot;SELECT * FROM events WHERE event_cloned = 'N' ORDER BY event_year DESC&quot;);
         while($row = mysql_fetch_array($result2)) {
         echo '&lt;option value=&quot;'.$row['event_year'].'&quot;&gt;'.$row['event_year'].'&lt;/option&gt;';
         }
         ?&gt;

         &lt;/select&gt;

     &lt;/p&gt;
 &lt;/form&gt;
 &lt;/div&gt;

&lt;div id=&quot;content&quot;&gt; &lt;/div&gt;
</pre>
<p>التغييرات التي سنشاهدها في الصفحة ستكون عن طريق عنصر div الذي يحمل الصنف content# ، نفس الشيء لملف query.php (الملف الذي يستقبل متغيرات الصفحة للتعامل مع قاعدة البيانات في إستدعاء البيانات المطلوبة لصفحة HTML)، ليس هناك تغييرات في ملف PHP:</p>
<pre class="brush: php;">
&lt;?php

// شفرة الإتصال بقاعدة البيانات
$connect = mysql_connect('localhost', 'root', '');
$db_connect = mysql_select_db('test', $connect);
mysql_query(&quot;set charset UTF8&quot;);
if (!$connect) { die('لم يتم الإتصال: ' . mysql_error()); }

// تعريف المتغير event_year
// ولإستقبال هذا المتغير في إكمال الإتصال بالأجاكس
if($_GET['year']) {
     $event_year = $_GET['year'];
     $result = mysql_query(&quot;SELECT * FROM events WHERE event_year = '$event_year'&quot;);

     // عرض المعلومات من قاعدة بيانات بإستخدام التكرار
     // وبواسطة الدالة while
     while($row=mysql_fetch_array($result)) {
         echo '&lt;div&gt;&lt;h2&gt;'.$row['event_name'].'&lt;/h2&gt;';
         echo '&lt;p&gt;'.$row['event_description'].' &lt;span&gt;(تاريخ '.$row['event_date'].')&lt;/span&gt;&lt;/p&gt;';
         echo '&lt;/div&gt;';
     }
}
?&gt;
</pre>
<h3>طريقة ()ajax.$</h3>
<p>سنتعرف على أول طريقة وهي ()ajax.$ التي تعتبر كتطبيق منخفض المستوى في مكتبة jQuery، كتابة شفرة ()ajax.$ تكون بهذه التركيبة (مع شرح أجزاء الشفرة):</p>
<pre class="brush: jscript;">
 $.ajax({
     type: METHOD, // الطريقة أو نوع المستخدمة في الإتصال مثل GET, POST
     url: &quot;example.php&quot;, // عنوان الإتصال
     data: &quot;var=value&quot;, // المتغيرات المرسلة
     success: function(data) {} // الدالة المستخدمة عند نجاح الإتصال
 });
 </pre>
<p>الآن نعود إلى تطبيق الدرس، نضع شفرة Javascript التي ستحتوي على إتصال الأجاكس بإستخدام مكتبة jQuery وبطريقة ()ajax.$ (شرح الأوامر موجودة في الشفرة) (لوضع شفرة Javascript في الصفحة تكون الشفرة ضمن العنصر head كما ستشاهدها الآن):</p>
<pre class="brush: jscript;">
 $(document).ready(function() {
     var ajax_load = '&lt;span&gt;Loading&lt;/span&gt;'; // صورة التحميل قبل إستدعاء البيانات من الخادم
     $(&quot;select&quot;).change(function() { // في حال تغيير إختيارات الحقل select
         var year = &quot;year=&quot; + $(this).val() // نآخذ القيمة المختارة من إختيارات الحقل select
         $(&quot;#content&quot;).html(ajax_load); // نضع صورة التحميل قبل البدأ بالإتصال
         $.ajax({
             type: &quot;GET&quot;, // إستخدام طريقة GET في الإتصال
             url: &quot;query.php&quot;, // عنوان الإتصال هو ملف PHP
             data: year, // لدينا متغير واحد وهو السنة أو المتغير year
             success: function(data) { // في حال نجاح الإتصال يتم عرض البيانات
                 $('#content').hide().fadeIn(1000).html(data); // يتم عرض البيانات في العنصر الذي يحمل إسم الصنف #content
             }
         });
     });
});
</pre>
<p>بالنسبة لهذه لطريقة أو نوع الإتصال ()get.$ أو ()post.$ تستخدم لتخصيص الإتصال بطريقة GET أو POST وهي أفضل كما هو <a href="http://docs.jquery.com/Ajax/jQuery.ajax">مذكور في وثائق موقع مكتبة jQuery</a> من إستخدام ()ajax.$ إذا لم تدع الحاجة إلى ذلك. وتعتبر كتطبيق عالي المستوى في مكتبة jQuery.</p>
<h3>طريقة ()get.$</h3>
<p>المثال الآخر هو بإستخدام طريقة ()get.$ ضمن مكتبة jQuery لكتابة الإتصال، الشفرة التالية ستوضح كيفية عمل ذلك:</p>
<pre class="brush: jscript;">
$.get(url , // عنوان الإتصال
     { variable: value}, // المتغيرات المرسلة
     function(data){ // الدالة المستخدمة عند نجاح الإتصال
         ..
     });
</pre>
<p>لتطبيق المثال العملي على هذا الدرس بإستخدام هذه الطريقة، كتبت هذه الشفرة لإستدعاء البيانات من القاعدة (إظهار الأحداث بناءاً على السنة التي يختارها المستخدم) وهي بنفس التركيبة التي كتبتها في الشفرة السابقة:</p>
<pre class="brush: jscript;">
$(document).ready(function() {
     var ajax_load = '&lt;span&gt;Loading&lt;/span&gt;'; // صورة التحميل قبل إستدعاء البيانات من الخادم
     $(&quot;select&quot;).change(function() { // في حال تغيير إختيارات الحقل select
         $(&quot;#content&quot;).html(ajax_load); // نضع صورة التحميل قبل البدأ بالإتصال
         $.get(&quot;query.php&quot;, { year: $(this).val() }, function(data) { // الطريقة تحتوي على عنوان الإتصال والمتغيرات المرسلة إضافةً إلى دالة الإتصال
             $('#content').hide().fadeIn(1000).html(data);  // يتم عرض البيانات في العنصر الذي يحمل إسم الصنف #content
         });
     });
 });
</pre>
<h3>طريقة ()post.$</h3>
<p>تركيبة هذه الطريقة في مكتبة jQuery لكتابة الإتصال موضحة في الشفرة التالية:</p>
<pre class="brush: jscript;">
$.post(url , // عنوان الإتصال
     { variable: value}, // المتغيرات المرسلة
     function(data){ // الدالة المستخدمة عند نجاح الإتصال
         ..
     });
</pre>
<p>بما أننا طبقنا المثال العملي بطريقة ()get.$ فهي لا تختلف في تركيبتها عن طريقة ()post.$ (أقصد في كتابة الشفرة)، أكتفي <a href="http://demos.mubde3.net/ajax-easily/events-withjQuery_get.php">بتطبيق المثال بإستخدام طريقة ()get.$</a>.</p>
<ul class="post-information">
<li class="demo-tut"><a href="http://demos.mubde3.net/ajax-easily/events-withjQuery_ajax.php">مثال على الدرس</a></li>
<li class="download-files"><a href="http://www.mubde3.net/blog/wp-content/uploads/2010/02/ajax-event-year-jQuery.zip">تحميل المرفقات</a></li>
</ul>
<div class="tweetmeme_button" style="float: left; margin: 10px 500px 10px 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.mubde3.net%2Fblog%2Farchives%2Fajax-easily-2-jquery"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.mubde3.net%2Fblog%2Farchives%2Fajax-easily-2-jquery" height="61" width="51" /></a></div>]]></content:encoded>
			<wfw:commentRss>http://www.mubde3.net/blog/archives/ajax-easily-2-jquery/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
