Создать dev crash course (DCC), который будет содержаться пример работы функционала и ссылку на файл с кодом, который его реализует Выглядеть это будет так:
Code File: /ow_plugins/skeleton/routing.php
|При этом, в коде, через комментарии указать всю необходимую техническую инфу: какие параметры принимаются, какие отдаются. У человека, читающего код, не должно возникать вопросов какие данные передаются и отдаются.|
Ниже следует пример функционала, сделанный по сценарию.
-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==
то же самое. Сереге