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

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


development

Розбіжності

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

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

Порівняння попередніх версій Попередня ревізія
Наступна ревізія
Попередня ревізія
development [2024/12/23 11:29]
nightfly
development [2024/12/23 11:48] (поточний)
nightfly [Розташування модулю як плагіну профілю користувача]
Рядок 82: Рядок 82:
  
 Як бачите, замість рядків **Real Name** і **Address** у нас автоматично підставилися їхні мовно-залежні заміни зі словника поточної локалізації. Не перекладеним залишився один рядок **Sample module**, про який рушій локалізації поки що нічого не знає. Давайте перекладемо його скажімо російською мовою для початку.\\\ Як бачите, замість рядків **Real Name** і **Address** у нас автоматично підставилися їхні мовно-залежні заміни зі словника поточної локалізації. Не перекладеним залишився один рядок **Sample module**, про який рушій локалізації поки що нічого не знає. Давайте перекладемо його скажімо російською мовою для початку.\\\
-Зробити це досить просто - потрібно створити файл **/languages/russian/samplemod.php** такого змісту:+Зробити це досить просто - потрібно створити файл **/languages/ukrainian/samplemod.php** такого змісту:
  
 <file php samplemod.php> <file php samplemod.php>
Рядок 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/**
Рядок 132: Рядок 134:
 NAME="Sample module" NAME="Sample module"
 ; URL нашого модуля. Не повірите - буде клікабельним :) ; URL нашого модуля. Не повірите - буде клікабельним :)
-URL=""?module=samplemod"+URL="?module=samplemod"
 ; Іконка модуля. Спочатку намагається знайтися в директорії taskbar поточного скіна, якщо не існує - у глобальному skins/taskbar. ; Іконка модуля. Спочатку намагається знайтися в директорії taskbar поточного скіна, якщо не існує - у глобальному skins/taskbar.
 ICON="goat.gif" ICON="goat.gif"
 ; Право, яке вимагає модуль. Ну як мінімум право, яке потрібне для показу іконки. ; Право, яке вимагає модуль. Ну як мінімум право, яке потрібне для показу іконки.
 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.1734946187.txt.gz · Востаннє змінено: 2024/12/23 11:29 повз nightfly