Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
Наступна ревізія | Попередня ревізія | ||
development [2022/09/24 14:39] 127.0.0.1 зовнішнє редагування |
development [2024/12/23 11:48] (поточний) nightfly [Розташування модулю як плагіну профілю користувача] |
||
---|---|---|---|
Рядок 1: | Рядок 1: | ||
- | ====== Краткое пособие по разработке модулей для Ubilling ====== | + | ====== Короткий посібник із розробки модулів для Ubilling ====== |
- | Писать дополнительные | + | Писати додаткові модулі для Ubilling |
- | Типичный модуль Ubilling размещается в отдельном подкаталоге **/ | + | Типовий модуль Ubilling розміщується в окремому підкаталозі **/ |
\\ | \\ | ||
{{: | {{: | ||
\\ | \\ | ||
- | Давайте | + | Давайте детально розберемо що-ж знаходиться в цих двох містичних файликах.\\ |
<file php module.php> | <file php module.php> | ||
<?php | <?php | ||
$this-> | $this-> | ||
- | ?> | ||
</ | </ | ||
- | Содержит в себе стандартный набор описывающий | + | Містить у собі стандартний набір, який |
- | Все, | + | Все, |
\\ | \\ | ||
\\ | \\ | ||
Рядок 24: | Рядок 23: | ||
<file php index.php> | <file php index.php> | ||
<?php | <?php | ||
- | // проверяем имеет ли пользователь | + | // перевіряємо чи має користувач права на користування цим модулем |
if (cfr(' | if (cfr(' | ||
| | ||
- | //делаем запрос к БД с целью получить логины всех пользователей | + | //робимо запит до БД з метою отримати логіни всіх користувачів |
$query=" | $query=" | ||
$alllogins=simple_queryall($query); | $alllogins=simple_queryall($query); | ||
| | ||
- | //получаем масивы всех Ф.И.О. пользователей и их адресов | + | //отримуємо масиви всіх П.І.Б. користувачів |
$allrealnames=zb_UserGetAllRealnames(); | $allrealnames=zb_UserGetAllRealnames(); | ||
$alladdress=zb_AddressGetFulladdresslist(); | $alladdress=zb_AddressGetFulladdresslist(); | ||
| | ||
- | //проверяем, есть ли вообще | + | //перевіряємо, чи є взагалі |
if (!empty ($alllogins)) { | if (!empty ($alllogins)) { | ||
| | ||
- | //Собираем заголовок таблички для вывода | + | //Збираємо заголовок таблички для виведення |
$tablecells=wf_TableCell(__(' | $tablecells=wf_TableCell(__(' | ||
$tablecells.=wf_TableCell(__(' | $tablecells.=wf_TableCell(__(' | ||
Рядок 45: | Рядок 44: | ||
$tablerows=wf_TableRow($tablecells, | $tablerows=wf_TableRow($tablecells, | ||
| | ||
- | // Перебираем всех пользователей | + | // Перебираємо всіх користувачів |
foreach ($alllogins as $io=> | foreach ($alllogins as $io=> | ||
$userlogin=$eachlogin[' | $userlogin=$eachlogin[' | ||
$userip=$eachlogin[' | $userip=$eachlogin[' | ||
| | ||
- | //Собирая для каждого | + | //Збираючи |
$tablecells=wf_TableCell($userlogin); | $tablecells=wf_TableCell($userlogin); | ||
$tablecells.=wf_TableCell($userip); | $tablecells.=wf_TableCell($userip); | ||
Рядок 58: | Рядок 57: | ||
} | } | ||
| | ||
- | // объявляем как результат табличку | + | // оголошуємо |
- | // а также шириной в 100%, бордюром в 0 и классом sotrable | + | // а також шириною в 100%, бордюром в 0 і класом sotrable |
$result=wf_TableBody($tablerows, | $result=wf_TableBody($tablerows, | ||
| | ||
} else { | } else { | ||
- | //если | + | //якщо |
$result=__(' | $result=__(' | ||
} | } | ||
| | ||
- | // выводим наш результат | + | // виводимо наш результат |
show_window(__(' | show_window(__(' | ||
| | ||
} else { | } else { | ||
- | // если | + | // якщо |
show_error(__(' | show_error(__(' | ||
} | } | ||
- | |||
- | ?> | ||
</ | </ | ||
- | Доступ | + | Доступ |
{{: | {{: | ||
- | Как видите | + | Як бачите, замість рядків **Real Name** |
- | Сделать это довольно просто - нужно создать файл **/ | + | Зробити це досить просто - потрібно створити файл **/ |
<file php samplemod.php> | <file php samplemod.php> | ||
<?php | <?php | ||
- | $lang[' | + | $lang[' |
- | $lang[' | + | $lang[' |
- | ?> | + | |
</ | </ | ||
- | После чего мы увидим как строка локализовалась сама по себе в нашем модуле:\\ | + | Після чого ми побачимо як рядок локалізувався сам по собі в нашому модулі:\\ |
{{: | {{: | ||
\\ | \\ | ||
- | Из нестандартных вещей чуждых чистому PHP мы использовали только функции библиотеки** api.astral** для | + | З нестандартних речей, чужих чистому PHP, ми використовували тільки функції бібліотеки** api.astral** для |
- | А что делать, если | + | А що робити, якщо |
<file php sampleClass.php> | <file php sampleClass.php> | ||
Рядок 120: | Рядок 117: | ||
} | } | ||
- | $sampleObject=new SampleClass(); | + | $sampleObject=new SampleClass(); |
?> | ?> | ||
</ | </ | ||
- | Также отличным (**и рекомендуемым!**)способом может быть помещение вашей библиотеки в **api/ | + | Також чудовим (**і рекомендованим!**) способом може бути розміщення вашої бібліотеки в **api/ |
- | А как добавляются модули на панель задач? Ну там | + | ====== Розташування модуля на панелі задач ====== |
+ | |||
+ | А як додаються модулі на панель завдань? Ну там | ||
<file ini sample.ini> | <file ini sample.ini> | ||
- | ; Идентификатор модуля. | + | ; Ідентифікатор модуля. |
ID=" | ID=" | ||
- | ; Подпись иконки модуля - будет автоматически | + | ; Підпис |
NAME=" | NAME=" | ||
- | ; URL нашего модуля. Не поверите - будет кликабельным :) | + | ; URL нашого модуля. Не повірите - буде клікабельним :) |
URL="? | URL="? | ||
- | ; Иконка модуля. Сначала пытается найтись в директории taskbar текущего скина, если не существует - в глобальном skins/ | + | ; Іконка модуля. Спочатку |
ICON=" | ICON=" | ||
- | ; Право которое требует | + | ; Право, яке вимагає |
NEED_RIGHT=" | NEED_RIGHT=" | ||
- | ; Опция конфига alter.ini | + | ; Опція конфіга alter.ini |
NEED_OPTION=" | NEED_OPTION=" | ||
- | ; Данный параметр сигнализирует, что опция является необязательной. | + | ; Цей параметр сигналізує, що опція є необов'язковою. |
- | ; Если удалить данный параметр - панель задач будет орать о недостающей | + | ; Якщо видалити цей параметр - панель завдань буде |
UNIMPORTANT=1 | UNIMPORTANT=1 | ||
- | ; Тип елемента. | + | ; Тип елемента. |
TYPE=" | TYPE=" | ||
+ | ; Ця необов' | ||
+ | ; Може бути відсутньою чи порожньою або приймати значення _blank, _self, _parent, _top чи ім' | ||
+ | ; детальніше тут: https:// | ||
+ | LINK_TARGET= | ||
+ | </ | ||
+ | |||
+ | та отримуємо результат очікуваний результат | ||
+ | |||
+ | {{: | ||
+ | |||
+ | А що ж із віджетами, | ||
+ | |||
+ | ====== Приклад використання dataTable ====== | ||
+ | |||
+ | <code php> | ||
+ | // jQuery dataTable construction and rendering | ||
+ | $myUrl = '? | ||
+ | $callbackRoute = ' | ||
+ | $columns = array(' | ||
+ | $dataTable = wf_JqDtLoader($columns, | ||
+ | show_window(__(' | ||
+ | |||
+ | // JSON dataTable data output on some callback route | ||
+ | if (ubRouting:: | ||
+ | $json = new wf_JqDtHelper(); | ||
+ | $json-> | ||
+ | $json-> | ||
+ | $json-> | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | |||
+ | результат | ||
+ | |||
+ | {{: | ||
+ | |||
+ | ====== Розташування модулю як плагіну профілю користувача ====== | ||
+ | Формат plugins.ini дуже близький до формату опису елементу панелі задач. Тільки імена опцій в лаверкейсі. | ||
+ | |||
+ | <file ini plugins.ini> | ||
+ | [унікальний ідентифікатор модуля] | ||
+ | name = " | ||
+ | icon = " | ||
+ | need_right=Право яке необхідне модулю | ||
+ | need_option=Опція яка необхідна | ||
+ | ; | ||
+ | ; | ||
+ | ; | ||
</ | </ | ||
- | А что же с виджетами, и как они вообще выглядят? А вот как-то [[taskbarwidgets|так]]. | + | також модуль може бути описаним у оверлеї "чорної магії" в bmagic.ini |