Создать dev crash course (DCC), который будет содержаться пример работы функционала и ссылку на файл с кодом, который его реализует Выглядеть это будет так:
[Page Header] [Short description] Code File: /ow_plugins/skeleton/routing.php |При этом, в коде, через комментарии указать всю необходимую техническую инфу: какие параметры принимаются, какие отдаются. У человека, читающего код, не должно возникать вопросов какие данные передаются и отдаются.| Ниже следует пример функционала, сделанный по сценарию.
===Skeleton=== Это должен быть самодостаточнй плагин, который устанавлиается/активируется/деактивируется и работает на сайте без дополнительных телодвижений. Он должен содержать весб набор дефолтных папок и файлов для работы плагина в Oxwall ===Сценарий=== ==File structure== - схема папок и файлов, с описанием где что лежит и за что отвечает. Положить read.info в каждую подпапку, в котором добавить краткое описание предназначения этой подпапки ==Debug/Dev tools== Указать инструменты в софте для debug и dev. Расписать каждую константу: - где активируется - зачем нужно, на что влияет указать адрес странички по добавлению ключей. ( dev tools). ==plugin.xml== - указать в кратце зачем он нужен - указать путь, по которому он находится - описать каждый параметр в этом файле: зачем он нужен и какие возможные значения может принимать ==Routing== URL: /skeleton/routing -name: "Item name". type "input box". invitation label:"My item". required -name: "Menu name". type "select box". values: val1=footer, val2=header. required. -name: "Page Title". type "input pox". invitation label: "My page title". required -name: "Page Meta Tags". type "text area". invitation label: "My meta tags" -name: "Page Content". type: "text area". invitation label: "My page content". required -name: "Visible for". type "select box". values: val1=guests, val2=registered members. required. -name: "Сreate". type: "submit". -table name: "Created Pages". columns:2. rows:min 1. column1="Page title"; column2="Actions": button name "Delete". *Количество cтраниц которые можно создавать не ограничено. *Все добавленные страницы выводить в таблице. table name: "Created Pages" *Если не все required поля заполнены display notice. notice text: "Fill in the form properly". *Если все поля заполнены то создать страницу и добавить меню айтем в указанное место. *Если нажимают на "Delete", то страница и ее item в меню удаляются ==Localization== URL: /skeleton/localization -name: "Enter text key". type: "text-input". invitation label: "Hello World". -name: "Enter original value". type: "text-input". invitation label: "Welcome to my site". -name: "Create". type: "submit". -table name: "Сreated Text Keys". columns: 3. rows: min.1 column1= "Text Key Values" сolumn2= "Original Values" column3="Actions" {text key='skeleton+hello_world'} Welcome to my site name:"Delete". type:"button" *Количество ключей которые можно создавать не ограничено. Все ключи после создания выводить в таблицу Created Text Keys (см. выше). *Ко всем созданным ключам автоматически добавлять префикс 'skeleton+'. *Если нажимают "Delete" ключ и его значение удаляются и убираются с таблицы. *Если нажимают "Create" не заполнив "Enter text key" и "Enter original value" выводить notice. notice text: "Fill in the form properly". *Если нажимают "Create", но создаваемый ключ уже существует, то выводить notice.notice text: "Text key already exists". То есть должна быть проверка на дублирующиеся ключи. ==Forms== URL: /skeleton/forms - name: text("Text") / type: text-input / description: text("additional field's description") - name: text("Extended text") / type: textarea - name: text("Single Choice(dropdown)") / type: selectbox / values: invitation=text("Select any"), val1=text("Red"), val2=text("Blue") - name: text("Multiple Choice") / type: multicheckbox / values: val1=New York, val2=Boston, val3=Chicago - name: text("Upload files") / type: file - name: text("Hidden") / type: hidden - name: text("Submit ME") / type: submit * для каждого элемента добавить PHP/JS проверки валидации ** указать ссылку на form_element.php и validator.php и сказать что там лежит полный список возможных типов и их валидаторов - указать все возможные опции у формы - дать инструкции, как вывести на той же странице введенные данные в табличном виде. Для файла вывести только название подгруженного файла ==Using database== - как выполнить несколько самых частоиспользуемых типов запросов - DBO и DTO на примере полей из пункта Forms. Для файлов записать в таблицу только имя файла ==File storage== URL: /skeleton/file-storage. - name: "Upload Image". type "file". button name "Browse". - name: "Image Description". type "text". predefined label:("describe your image") - name: "Upload". type: "submit" - После успешной загрузки отобразить изображение с Short Description. - Если изображение не подгрузилось то display notice. notice text: "Unacceptable file extension". ==Decorators== пропускаем ==Mail sending== URL: /skeleton/mail-sending -name: "From". type: "text-input".invitation label: "youremail@example.com" -name: "To". type: "text-input". invitation label: "recepientemail@example.com" -name: "Topic". type: "text input". invitation label: "enter email title" -name: "Body". type: "text area". invitation label: "enter email body" -name: "Deliver". type: "radio-button". values: val1=Immediately val2=Add to Queue.Рядом отобразить notice.notice text: "Email will be sent when Cron runs" -name: "Send". type: "submit". *invitation label: это текст который отображается по дефолту. При клике на поле, текст исчезает. *К полям "To" и "From" добавить простейшую проверку на формат email (ex: что бы была @ и не было запрещенных символов). *Если письмо было отправлено успешно то display notice. notice text: "Your message was sent successfully". Если письмо не было отправлено по какой то причине display notice: notice text: "Error sending message". ==Activity Notifications== URL: /skeleton/notifications name: "Notification sender"|" {$username} name: "Notification Content". type: "input text". invitation label: "My new notification". required name: "Notification URL". type: "input text". invitation label:"www.mysitename.com/dashboard". name: "Attach image". type "file". button name: "Browse". optional. name: "Notify by email". type "check box". optional NOTE: created real time notification will be delivered by email depending on your profile's email notification settings name: "Send". type "Submit" * Сделать проверку на загрузку изображения ( что бы можно было добавлять только картинки а не .doc или .pdf к примеру) * Можно создавать хоть сколько нотификейшенов. * Если были заполнены не все required поля выводить ностис. notice text: "Fill in the form properly". Если все было заполнено корректно то создать нотфикейшен * Если подгружаемый файл не является картинкой выводить нотис. notice text: "Unacceptable file extension". ==Newsfeed== URL: /skeleton/newsfeed name: название и аватрка того кто залогинен.( sender) name: "Newsfeed Item Content". type "text input".required. name: "Place on:". type "select-box". val1=Dashboard Newsfeed val2=Index Newsfeed. val3=Profile Newsfeed. required name: "Add entry". type "Submit". * Если все заполнено правильно вывести нотис "You have successfully added newsfeed item added to {$ место тут}". ==Widgets== URL: /skeleton/widgets name: "Widget Content"|{$profiles_list_widget} ( заметка: отобразить стандартный виджет с latest users profiles). name: "Place widget on page". type "select box". vales: val1="User Profile", val2="User Dashboard", val3="Index". name: "Add". type:"Submit". table name: "Created widgets". number of col=2. rows=min 1 col1="Latest Users Widget" col2= "Widget placement". col=3 "Actions" (delete) ==Floatbox== URL: /skeleton/floatbox text: "This is a component" button: "Reload me", after click text changes to "Component has been reloaded via ajax" button: "Close floatbox" ==Ping request== раз в секунду. посоветоваться с Зарифом как добить его. == Сron Jobs== подумать ==Profile questions== URL: /skeleton/profile_questions name: "Username", type: text, value name: "Gender", type: radio, selected value name: "Birthday", type: date (birthday), selected value name: "Save" ==ACL== URL: /skeleton/access_level Описать метод проверки action для текущего юзера Описать метод проверки для модератора Описать метод добавления action при установке плагина ==Admin Settings== URL: /skeleton/admin_settings/ name: "Configuration name". type: "text-input". invitation label: "My New Configuration". required. name: "Place configuration under:". type: "list". val1=Dashboard, val2=Users, val3=Settings, val4=Privacy&Permissions, val5=Appearance, val6=Pages&Menus, val7=Plugins. required name: "Configuration URL". not editable. Заметка: cгенерить и отобразить УРЛ admin/skeleton /{$selected_menu_item_name}/configuration_name name: "Upload your php code:". type: "file". required. Ex: СONFIG type . select box с типами.( узнать у девелоперов). и если юзер выбирает малтипль значение то попросить ввести возможные значения. name: "Add". type "submit". name: "Created Configurations". type: "Table". number of cols=2, number of rows=min1 col1=Configuration name, col2=Actions (delete). для зарифа. конфига обязательно должан появиться в сетингах плагина Skeleton. *Если поля какое то из обязательных полей не было заполнено display notice: "Fill in the form properly". *Если все поля были заполнены display notice: "Configuration was added successfully. Configuration URL: {$configuration-url}." *После перехода по урлу открыть страницу с залитым кодом юзера. ==Pre Installation/Activation== сценарий добавления какого то функционала плагином при установке. Больше Серегеина работа. ==Post Uninstallation/Deactivate== то же самое. Сереге