Разработка:modlibs/widgets — различия между версиями

Материал из DOF
Перейти к: навигация, поиск
(API)
(Добавлены примеры кода)
Строка 64: Строка 64:
 
=== dof_modlib_widgets_form ===
 
=== dof_modlib_widgets_form ===
 
Пустой класс. Наследует moodleform. Подробнее об использовании moodleQuickForm можно прочитать в разделе [[Разработка:Стандарт_кодирования#Работа с moodleQuickForm|Работа с moodleQuickForm]].
 
Пустой класс. Наследует moodleform. Подробнее об использовании moodleQuickForm можно прочитать в разделе [[Разработка:Стандарт_кодирования#Работа с moodleQuickForm|Работа с moodleQuickForm]].
 +
 +
== Примеры кода ==
 +
'''Подключение библиотеки форм'''
 +
    $DOF->modlib('widgets')->'''form_classname'''();
 +
'''Использование прогрессбара'''
 +
 +
1. Устанавливаем параметры
 +
    $name        = 'pbar'; ''// имя html-элемента, только латинские буквы''
 +
    $percent    = 1;      ''// начинаем с отметки 1%''
 +
    $width      = 200;    ''// длинна полоски 200 пикселей''
 +
    $process    = 'Идет сохранение...'; ''// какой процесс происходит''
 +
    $auto_create = true;  ''// вывести прогрессбар сразу же после создания объекта''
 +
2. Создаем нужный объект
 +
    $progressbar = $DOF->modlib('widgets')->'''progressbar'''($name, $percent, $width, $process, $auto_create)
 +
3. Вставляем прогрессбар внутрь цикла с выполняемым процессом
 +
    for ($i=1; $i<=333; $i++)
 +
    {
 +
        ''// номер текущей выполняемой задачи''
 +
        $cur_task  = $i;
 +
        ''// общее количество задач, которое надо выполнить их количество можно менять в ходе выполнения процесса''
 +
        ''(например, если сразу неясно сколько точно шагов будет у цикла)''
 +
        $num_tasks = 333;
 +
        ''// внутри цикла производим все трудоемкие операции...''
 +
       
 +
        ...
 +
       
 +
        sleep(0.1);''// '''для теста''': чтобы было видно как ползет полоска''
 +
        ''// после того как проведены все операции увеличиваем длину полоски на чуть-чуть''
 +
        $progressbar->'''set_percent_adv'''($cur_task,$num_tasks);
 +
    }

Версия 11:32, 1 июня 2009

Плагин
Название widgets
Тип modlibs


Описание

В этом плагине располагаются все виджеты - дополнительные средства визуального оформления интерфейса.

Структура папок

Для каждого виджета в папке widgets создается отдельная папка с его названием. Внутри этой папки должен лежать файл lib.php, в котором содержится класс виджета. Все дополнительные файлы, относящиеся к этому виджету (если они требуются) - должны лежать в этой же папке.

Стандарт именования классов

Все классы виджетов должны называться по схеме dof_modlib_widgets_<название_виджета>.

API

  • form_classname()

Инициализировать библиотеку форм. Этот метод отвечает за подключение библиотеки moodleQuickForm. Если вы хотите использовать moodleQuickForm, то она подключается только при помощи этого метода. Подключение moodleQuickForm напрямую из moodle не допускается.

  • progressbar($name, $percent, $width, $process, $auto_create)

Эта функция пригодится, если вам понадобится вывести прогрессбар - полоску, которая в реальном времени отображает ход выполнения какого-либо долгого процесса.

Возвращает экземпляр класса dof_modlib_widgets_progress_bar. Параметры:

$name - имя html-элемента. Если прогрессбаров несколько на странице, то имена не должны повторяться.

$percent - начальное процентное значение.

$width - длина в пикселях.

$process - название процесса, который выполняется в текущий момент (загрузка... сохранение... и т. п.)

$auto_create - для этого формата возможны два значения:

true - сразу же отправить html-код прогрессбара в выходной поток. false - только создать объект, не выводя progressbar. По умолчанию true.

Дополнительные классы

dof_modlib_widgets_progress_bar

  • __construct($name, $percent, $width, $process, $auto_create)

Параметры:

$name - имя html-элемента. Если прогрессбаров несколько на странице, то имена не должны повторяться.

$percent - начальное процентное значение.

$width - длина в пикселях.

$process - название процесса, который выполняется в текущий момент (загрузка... сохранение... и т. п.)

$auto_create - для этого формата возможны два значения:

true - сразу же отправить html-код прогрессбара в выходной поток. false - только создать объект, не выводя progressbar. По умолчанию true.

  • create() - вывести html-код прогрессбара в браузер. Эту функцию не нужно использовать, в случае если в конструкторе $auto_create стоит true.
  • set_name($name) - установить имя html-элемента, которым является прогрессбар. Внутренний метод, вызывается из конструктора.
  • set_percent($percent) - установить начальное процентное значение для полоски прогрессбара.

$percent - количество начальных процентов, от 0 до 100.

  • set_percent_adv($cur_amount,$max_amount) - увеличить полоску прогрессбара. Полоска увеличивается в зависимости от того, сколько задач уже выполнено, а сколько еще осталось.

$cur_amount - количество уже выполненных задач

$max_amount - общее количество задач, которое надо выполнить.

  • set_width($width) - установить длину прогрессбара в пикселях. Внутренний метод, используется из конструктора.

dof_modlib_widgets_form

Пустой класс. Наследует moodleform. Подробнее об использовании moodleQuickForm можно прочитать в разделе Работа с moodleQuickForm.

Примеры кода

Подключение библиотеки форм

   $DOF->modlib('widgets')->form_classname();

Использование прогрессбара

1. Устанавливаем параметры

   $name        = 'pbar'; // имя html-элемента, только латинские буквы
   $percent     = 1;      // начинаем с отметки 1%
   $width       = 200;    // длинна полоски 200 пикселей
   $process     = 'Идет сохранение...'; // какой процесс происходит
   $auto_create = true;   // вывести прогрессбар сразу же после создания объекта

2. Создаем нужный объект

   $progressbar = $DOF->modlib('widgets')->progressbar($name, $percent, $width, $process, $auto_create)

3. Вставляем прогрессбар внутрь цикла с выполняемым процессом

   for ($i=1; $i<=333; $i++)
   {
       // номер текущей выполняемой задачи
       $cur_task  = $i;
       // общее количество задач, которое надо выполнить их количество можно менять в ходе выполнения процесса
       (например, если сразу неясно сколько точно шагов будет у цикла)
       $num_tasks = 333; 
       // внутри цикла производим все трудоемкие операции...
       
       ...
       
       sleep(0.1);// для теста: чтобы было видно как ползет полоска
       // после того как проведены все операции увеличиваем длину полоски на чуть-чуть
       $progressbar->set_percent_adv($cur_task,$num_tasks);
   }