moodle plugins programing manual

9
0 7/20/2014 Moodle Plugins programing Manual يل برمجة إضافات موديل دل بإشراف قرعوني م.روانح الدوه جي د.صب إعداد الطلسايقس اينا القصارريم ا مدة البوش محمد عباشلبي محمد تحسين ال

Upload: mohammad-tahsin-al-shalabi

Post on 06-Aug-2015

53 views

Category:

Education


3 download

TRANSCRIPT

Page 1: Moodle plugins programing manual

0

7/20/2014

Moodle Plugins programing Manual دليل برمجة إضافات موديل

بإشراف

د.صالح الدوه جي م.روان قرعوني

إعداد الطالب

مريم القصار ايناس السايق

محمد تحسين الشلبي محمد عبادة البوش

Page 2: Moodle plugins programing manual

1 | P a g e

.مقدمة1

( خاصة بهم لاستخدامها فيBlocksهذه الفقرة دليل للمطورين الذين يرغبون في ا نشاء كتل) تحويMoodle. صدار ا ي ا صدار ا حدث( فقط.و) Moodleمن تطوير 0.2ينطبق على الا

بشكل رئيسي يستهدفالدليل . HTMLا لى تطوير كتلة متعددة الا غراض التي تعرض هذه الدليل يهدف نشاءظهار كم هو سهل ا لا و البرمجة بشكل عام ويهدف Moodleمع قليلة الخبرةالناس كتل جديدة لا

Moodle وهناك كمية صغيرة معينة من المعرفة البرمجة .PHP مطلوبةزال تلا.

. مفاهيم أساسية2

" من الصفر من ا جل ا ظهار معظم الميزات HTML( "Blockسيتم ا نشاء كتلة ) الدليل،من خلال هذا ". حيث سيتم تخزين الملفات SimpleHTMLكتلة الخاصة بنا ب "ال(. سيتم تسمية Blockكتلة )ال

، ولكن من ا جل التناسق سوف نتابع ممارسة استخدام (serverبمجلد بنفس الاسم على الخادم) لكتلة لدينا الاسم.في ا ي حال من الا حوال التي تتطلب مثل هذا simplehtml " lowercasedشكل "

"، فا نه من المهم ا ن نتذكر ا ن فقط simplehtmlوهو الاسم الذي يحتوي على " ا لى الملف كلما نشير"simplehtmlموحد وضروريوالباقي هو به؛ " جزء متروك لنا لتغيير (Moodle) .للعمل بشكل صحيح

. كيفية البداية بالناحية البرمجية3

. تذكر، في هذا المثال نقوم با نشاء كتلة PHP، نحن بحاجة ا لى ا ربعة ملفات Moodleلتعريف "كتلة" في الملفات الا ربعة كونت. يجب ا ن صة' باسم كتلتك الخاsimplehtml'، استبدال 'simplehtmlتسمى ' ، وهي كالتالي:blocks/simplehtmlالمسار في موجودة

Page 3: Moodle plugins programing manual

2 | P a g e

3.3.block_simplehtml.php

دارة الكتلة الشاشة. وا ظهاره علىسيحوي هذا الملف صفوف تعريف الكتلة، وسيتم استخدامها لا

':block_simplehtml.phpنبدا من خلال ا نشاء ملف الكائن الرئيسي، '

<?php

class block_simplehtml extends block_base {

public function init() {

$this->title = get_string('simplehtml', 'block_simplehtml');

}

// The PHP tag and the curly bracket for the class definition

// will only be closed after there is another function added in the

next section.

تغييره." هو الذي يمكن simplehtml“والجزء المرفقةالسطر الا ول يجب ا ن يكون بالطريقة

البسيط سنقوم في مثالنالصف الكتلة . هو ا ساسي بكل الكتل و مهمته تهيئة المتحولات ()initالتابع في هذه الحالة تم ضبطه على قراءة الكتلة،برا س والذي سيظهر this->title$ بتحديد العنوان للكتلة

كنت تريد كتلة لعرض ا نه ا ذاا لى الا مام قليلا هنا وا قول ا ذا تخطيتالعنوان من ملف اللغة المذكورة ا دناه، بلا عنوان يجب عليك تعيين هذا ا لى ا ي قيمة تريد )ولكن لا يمكن ا ن تكون فارغة(. سنرى لاحقا كيفية

تعطيل عرض عنوان لكتلة.

3.2.db/access.php

للكتل الا ساسية. ا نها ا دخلت بحيث كان myaddinstanceو addinstance ا مكانيات Moodle 0.2 قدممكانياتكتل الفردية. وينبغي ا يضا ا ن تضاف هذه الاستخدام ب التحكممن الممكن صة بكاالخ لكتلةل الا مكانيات:ما يلي هو . blocks/simplehtml/db/access.phpفي الملف مجموعة الا

Page 4: Moodle plugins programing manual

3 | P a g e

<?php

$capabilities = array(

'block/simplehtml:myaddinstance' => array(

'captype' => 'write',

'contextlevel' => CONTEXT_SYSTEM,

'archetypes' => array(

'user' => CAP_ALLOW

),

'clonepermissionsfrom' => 'moodle/my:manageblocks'

),

'block/simplehtml:addinstance' => array(

'riskbitmask' => RISK_SPAM | RISK_XSS,

'captype' => 'write',

'contextlevel' => CONTEXT_BLOCK,

'archetypes' => array(

'editingteacher' => CAP_ALLOW,

'manager' => CAP_ALLOW

),

'clonepermissionsfrom' => 'moodle/site:manageblocks'

),

);

Page 5: Moodle plugins programing manual

4 | P a g e

3.3. lang/eng/block_simplehtml.php

نجليزية للكتلة الخاص بك. نجليزية، يمكنك استبدال "هذا هو ملف اللغة الا " مع enا ذا لم تكن متحدث الا من مجلد التثبيت /langرمز اللغة المناسبة الخاصة بك. جميع ملفات اللغة للكتل تذهب تحت المجلد

الكتل.

مكانيات المضافة ا علاه تحتاج لتوصيف الصفحات وينبغي ا يضا ا ن تضاف هذه ا لى ملف اللغة. الا

<?php

$string['pluginname'] = 'Simple HTML block';

$string['simplehtml'] = 'Simple HTML';

$string['simplehtml:addinstance'] = 'Add a new simple HTML block';

$string['simplehtml:myaddinstance'] = 'Add a new simple HTML block to

the My Moodle page';

3.3 .version.php

ضافة) يحويوسوف صدار للا غير المشمولة متقدمة )(، ا يضا لها تفاصيل pluginهذا الملف معلومات الا ا ذا كنت تريد المزيد من التفاصيل(. version.php راجع-هنا

<?php

$plugin->version = 2011062800; // YYYYMMDDHH (year, month, day, 24-hr

time)

$plugin->requires = 2010112400; // YYYYMMDDHH (This is the release

version for Moodle 2.0)

ضافة ا لىدلالة على رقم ا صدار كتلة، لهيحتوي هذا الملف تعريفات حقل ا صدار الحد الا دنى من بالا Moodle هنا يسمى دائما المستخدمامها. يرجى ملاحظة ا ن الكائن التي يجب ا ن يتم تثبيت من ا جل استخدplugin$ نشاء هذا نفسك داخل الملف. ب الغرض، والتي لا تحتاج لا

Page 6: Moodle plugins programing manual

5 | P a g e

ا لى من التوابععلى الشاشة، نحن بحاجة ا لى ا ضافة المزيد اعرضهومن ا جل الحصول على كتلةغلاق النهائي في ملف لديناالبرمجي )صفنا (:قبل قوس الا

public function get_content() {

if ($this->content !== null) {

return $this->content;

}

$this->content = new stdClass;

$this->content->text = 'The content of our SimpleHTML

block!';

$this->content->footer = 'Footer here...';

return $this->content;

}

} // Here's the closing brac

:ا ضف كتلتك الخاصة ا لى الصفحة الرئيسية ضافة كتلة الخاص بك ا لى ل( الجدد Moodleلا ننسى )وخاصة ا ذا كنت من مستخدمي ا

فعل التعديل وا ضافة كتلتك ا لى الصفحة.الرئيسية الصفحة

ا لا ستحسبها. و Nullليست this->content$ا ن القيمة الحالية ل ار ختبابادئ ذي بدء، هناك سواء في النص ا و في HTMLسنبدا من نقطة الصفر. نا خذ في الاعتبار ا ن نتمكن من استخدام

نريد.تذييل الصفحة، ا ذا كنا للكتلة. يمكنك ا يضا ا نشاء قوائم ومن الجدير بالذكر ا ن هذه ليست النوع الوحيد من المحتويات

نتاج، مثل القوائم. هذه ا نواع والا شجار الهرمية، والتي هي ا كثر ملاءمة لا نواع معينة من الا المحتويات المختلفة يكون لها تا ثير على الكائن المحتوى وكيفية بنائه.

Page 7: Moodle plugins programing manual

6 | P a g e

قم زيارة صفحة ؛ Moodleعند هذه النقطة يجب ا ن تكون لدينا كتلة قابلة للتثبيت تلقائيا في دارة لتثبيته )انقر "ا شعارات" تحت ا دارة كتلة الموقع( وبعد رؤيتها ُعد لمواصلة دليلنا الا

التعليمي. الخرج:تهيئة

صدار الحالي من الكتلة لدينا يعرض فقط رسالة ثابتة، وهي ليست مفيدة للغاية. ما نود حقا الا وضعت ا ي صفحة ا لى "وضع التحرير"، ا ذا الكتلة،القيام به هو السماح لتخصيص ما بداخل

النقر على هذا يا خذك ا لى بعد. استلاحظ ا ن كل كتلة لديها زر تحرير في شريط العنوان الخاص به .كتلةال ا عداداتنموذج

عدادات وا ضافة حقول بحيث يمكن للمستخدمين تصميم كتلة مخصصة،يمكننا توسيع نموذج الا , مع /blocks/simplehtml/edit_form.php نشا ملفا لمهمة معينة. لتوسيع النموذج

التعليمات البرمجية التالية:

<?php

class block_simplehtml_edit_form extends block_edit_form {

protected function specific_definition($mform) {

// Section header title according to language file.

$mform->addElement('header', 'configheader',

get_string('blocksettings', 'block'));

// A sample string variable with a default value.

Page 8: Moodle plugins programing manual

7 | P a g e

$mform->addElement('text', 'config_text',

get_string('blockstring', 'block_simplehtml'));

$mform->setDefault('config_text', 'default value');

$mform->setType('config_text', PARAM_TEXT);

}

}

ضافة Moodle، وهذا يسمح block_edit_formالسطر الا ول يصرح عن صف برمجي يرث من لا

عدادات في صفحة برمجي لتنفيذهكود عناصر النموذج يعّرف ()specific_definitionتابع . الا من . القياسية Moodleالخاص بك، وهذه تا خذ نفس الشكل كما هو الحال مع مكتبة النماذج

وحقل المدخلات التي تقبل النص المراد العنوان ا نشا نا specific_definitionالتابع خلال استخدامه داخل الكتلة.

ل وتضيف قيمة( lang/en/block_simplehtml.phpاللغة ) توسيع ملفيجب ملاحظة:"blockstring ا علاه." المعرفة بالكود

. ”_config“كل ا سماء الحقول يجب ا ن تبدا ب هام: البرمجية:التعليمات وذلك باستخدامالمدخلات الخاصة بك وبذلك يمكن ا ظهار

if (! empty($this->config->text)) {

$this->content->text = $this->config->text;

}

()initبكل التوابع ما عدا متاح this->config$المتحول لاحظ ا ن ا لىل قح الكتلة نضيفعنوان التخصيص ولتعديل علىولمزيد من

/blocks/simplehtml/edit_form.php

Page 9: Moodle plugins programing manual

8 | P a g e

// A sample string variable with a default value.

$mform->addElement('text', 'config_title', get_string('blocktitle',

'block_simplehtml'));

$mform->setDefault('config_title', 'default value');

$mform->setType('config_title', PARAM_MULTILANG);

البرمجية ا لى ونضيف التعليمات

public function specialization() {

if (!empty($this->config->title)) {

$this->title = $this->config->title;

} else {

$this->config->title = 'Default title ...';

}

if (empty($this->config->text)) {

$this->config->text = 'Default text ...';

}

}

. ()initهذا التابع يستدعى بشكل تلقائي و دائما بعد التابع