Користувальницькькі налаштування

Налаштування сайту


development

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Порівняння попередніх версій Попередня ревізія
Наступна ревізія
Попередня ревізія
development [2024/12/23 11:33]
nightfly [Короткий посібник із розробки модулів для Ubilling]
development [2024/12/23 11:48] (поточний)
nightfly [Розташування модулю як плагіну профілю користувача]
Рядок 96: Рядок 96:
  
 \\ \\
-З нестандартних речей, чужих чистому PHP, ми використовували тільки функції бібліотеки** api.astral** для збирання таблиць за допомогою **wf_**, що не є об'язковою, просто виглядає красивіше та читабельніше, а також висновок крізь **show_window($title,$data)** замість **print()**, що вже є об'язковою для роботи шаблонізатора фреймворка.\\+З нестандартних речей, чужих чистому PHP, ми використовували тільки функції бібліотеки** api.astral** для збирання таблиць за допомогою **wf_**, що не є обов'язковою, просто виглядає красивіше та читабельніше, а також результат крізь **show_window($title,$data)** замість **print()**, що вже є обов'язковою для роботи шаблонізатора фреймворка.\\
  
-А що робити, якщо нашому модулю потрібна якась бібліотека/клас потрібна йому одному? Варіантів є кілька. Перший з них менш красивий, але більш портабельний - вставити її прямо всередину нашого модуля в **modules/general/smaplemod/index.php**. Другий - просто покласти цю бібліотеку в директорію **modules/engine/**. У цьому разі вона буде довантажена до виконання нашого модуля. Хорошим тоном у цьому випадку буде переконатися, що під час свого завантаження вона не буде виробляти якогось виводу, і друге - постарайтеся уникати створення великих об'єктів у цій бібліотеці, щоб уникнути деградації продуктивності загалом. Що мається на увазі під цим? Наведемо на прикладі бібліотеки, яка описує якийсь клас SampleClass і знаходиться в **modules/engine/sampleClass.php**+А що робити, якщо нашому модулю потрібна якась бібліотека/клас потрібна йому одному? Варіантів є кілька. Перший з них менш красивий, але більш портабельний - вставити її прямо всередину нашого модуля в **modules/general/samplemod/index.php**. Другий - просто покласти цю бібліотеку в директорію **modules/engine/**. У цьому разі вона буде довантажена до виконання нашого модуля. Хорошим тоном у цьому випадку буде переконатися, що під час свого завантаження вона не буде виробляти якогось виводу, і друге - постарайтеся уникати створення великих об'єктів у цій бібліотеці, щоб уникнути деградації продуктивності загалом. Що мається на увазі під цим? Наведемо на прикладі бібліотеки, яка описує якийсь клас SampleClass і знаходиться в **modules/engine/sampleClass.php**
  
 <file php sampleClass.php> <file php sampleClass.php>
Рядок 117: Рядок 117:
 } }
  
-$sampleObject=new SampleClass(); // вот этого тут быть не должно - ему место в modules/general/samplemod/index.php+$sampleObject=new SampleClass(); // ось цього тут бути не повинномісце йому в modules/general/samplemod/index.php
  
 ?> ?>
 </file> </file>
  
-Також чудовим (**і рекомендованим!**) способом може бути поміщення вашої бібліотеки в **api/libs/**, звідки її може підхопити автозавантажувач, якщо ім'я класу створюваного об'єкта відповідає імені бібліотеки з префксом "**api.**" у лаверкейсі. Для прикладу вище це має бути файл **api/libs/api.sampleclass.php**. Під час створення об'єкта $sampleObject=new SampleClass(); цю бібліотеку буде автоматично завантажено, і вам взагалі нічого не потрібно для цього робити. Ця механіка звилася починаючи з релізу Ubilling 0.8.6 Chainsaw.+Також чудовим (**і рекомендованим!**) способом може бути розміщення вашої бібліотеки в **api/libs/**, звідки її може підхопити автозавантажувач, якщо ім'я класу створюваного об'єкта відповідає імені бібліотеки з префіксом "**api.**" у лаверкейсі. Для прикладу вище це має бути файл **api/libs/api.sampleclass.php**. Під час створення об'єкта $sampleObject=new SampleClass(); цю бібліотеку буде автоматично завантажено, і вам взагалі нічого не потрібно для цього робити. 
 + 
 +====== Розташування модуля на панелі задач ======
  
 А як додаються модулі на панель завдань? Ну там з іконками, правами та опціями? А все так само дуже просто - розкладанням потрібних файликів у потрібні місця. Починаючи з релізу 0.8.0 цими місцями є директорія **config/taskbar.d/**, а точніше її підкаталоги. Припустимо, наш тестовий модуль є з нашої точки зору звітом. Також ми хочемо, щоб вмикався він за допомогою необов'язкової опції [[alteriniconf|alter.ini]] на ім'я SAMPLE_ENABLED. Разом кладемо файлик sample.ini в директорію **config/taskbar.d/reports/** А як додаються модулі на панель завдань? Ну там з іконками, правами та опціями? А все так само дуже просто - розкладанням потрібних файликів у потрібні місця. Починаючи з релізу 0.8.0 цими місцями є директорія **config/taskbar.d/**, а точніше її підкаталоги. Припустимо, наш тестовий модуль є з нашої точки зору звітом. Також ми хочемо, щоб вмикався він за допомогою необов'язкової опції [[alteriniconf|alter.ini]] на ім'я SAMPLE_ENABLED. Разом кладемо файлик sample.ini в директорію **config/taskbar.d/reports/**
Рядок 137: Рядок 139:
 ; Право, яке вимагає модуль. Ну як мінімум право, яке потрібне для показу іконки. ; Право, яке вимагає модуль. Ну як мінімум право, яке потрібне для показу іконки.
 NEED_RIGHT="SAMPLE" NEED_RIGHT="SAMPLE"
-; Опція конфіга alter.ini необхідна для показу іконки таскбара.+; Опція конфіга alter.ini необхідна для показу іконки таскбару.
 NEED_OPTION="SAMPLE_ENABLED" NEED_OPTION="SAMPLE_ENABLED"
 ; Цей параметр сигналізує, що опція є необов'язковою.  ; Цей параметр сигналізує, що опція є необов'язковою. 
Рядок 149: Рядок 151:
 LINK_TARGET= LINK_TARGET=
 </file> </file>
 +
 +та отримуємо результат очікуваний результат
 +
 +{{:undefined:samplemod4.png|}}
  
 А що ж із віджетами, і як вони взагалі виглядають? А ось якось так [[taskbarwidgets|так]]. А що ж із віджетами, і як вони взагалі виглядають? А ось якось так [[taskbarwidgets|так]].
Рядок 175: Рядок 181:
  
 {{:jqdt.png|}} {{:jqdt.png|}}
 +
 +====== Розташування модулю як плагіну профілю користувача ======
 +Формат plugins.ini дуже близький до формату опису елементу панелі задач. Тільки імена опцій в лаверкейсі.
 +
 +<file ini plugins.ini>
 +[унікальний ідентифікатор модуля]
 +name = "Ім'я модулю"
 +icon = "ім'я файлу іконки модулю"
 +need_right=Право яке необхідне модулю
 +need_option=Опція яка необхідна
 +;Наступна опція не є обов`язковою. Просто вказує те де буде відкрито посилання.
 +;детальніше тут: https://www.w3schools.com/tags/att_a_target.asp
 +;link_target=_self
 +</file>
 +
 +також модуль може бути описаним у оверлеї "чорної магії" в bmagic.ini в тому ж форматі.
development.1734946424.txt.gz · Востаннє змінено: 2024/12/23 11:33 повз nightfly