Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.
| Наступна ревізія | Попередня ревізія | ||
|
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 |