This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
dev:skeleton:draft [2013/07/03 06:40] Alia |
dev:skeleton:draft [2013/07/30 13:34] (current) |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | Создать dev crash course (DCC), который будет содержаться в себе вводные инструкции по работе с кодом Oxwall, сопровождаемые последовательно расставлеными (закоменченными) примерами в плагине-скелетоне. Которые юзер может раскомменчивать по ходу чтения DCC. | + | Создать dev crash course (DCC), который будет содержаться пример работы функционала и ссылку на файл с кодом, который его реализует |
| Выглядеть это будет так: | Выглядеть это будет так: | ||
| - | === Add menu item === | + | <html><div style="border: 1px solid #000; padding: 10px"></html> |
| - | чтобы добавить новую странице в главное меню, расскоменьте: | + | |
| - | File: /ow_plugins/skeleton/routing.php | + | [Page Header] |
| - | Line: 83 | + | |
| - | <code>Some PHP here</code> | + | [Short description] |
| - | При этом, в коде, через комментарии указать всю необходимую техническую инфу: какие параметры принимаются, какие отдаются. У человека, читающего код, не должно возникать вопросов какие данные передаются и отдаются. | + | <code>Code File: /ow_plugins/skeleton/routing.php</code> |
| + | |||
| + | |При этом, в коде, через комментарии указать всю необходимую техническую инфу: какие параметры принимаются, какие отдаются. У человека, читающего код, не должно возникать вопросов какие данные передаются и отдаются.| | ||
| + | |||
| + | Ниже следует пример функционала, сделанный по сценарию. | ||
| + | |||
| + | <html></div></html> | ||
| ===Skeleton=== | ===Skeleton=== | ||
| Line 31: | Line 35: | ||
| - где активируется | - где активируется | ||
| - зачем нужно, на что влияет | - зачем нужно, на что влияет | ||
| + | указать адрес странички по добавлению ключей. ( dev tools). | ||
| ==plugin.xml== | ==plugin.xml== | ||
| Line 39: | Line 44: | ||
| ==Routing== | ==Routing== | ||
| + | URL: /skeleton/routing | ||
| - | - добавить в меню новый айтем text("Skeleton") | + | <code> |
| - | - добавить новый маршрут "/skeleton" | + | -name: "Item name". type "input box". invitation label:"My item". required |
| - | - задать meta данные страницы (title: text("Skeleton Page"), meta description: text("skeleton description"), header: text("Skeleton Header") ). | + | -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". | ||
| + | </code> | ||
| + | |||
| + | *Количество cтраниц которые можно создавать не ограничено. | ||
| + | |||
| + | *Все добавленные страницы выводить в таблице. table name: "Created Pages" | ||
| + | |||
| + | *Если не все required поля заполнены display notice. notice text: "Fill in the form properly". | ||
| + | |||
| + | *Если все поля заполнены то создать страницу и добавить меню айтем в указанное место. | ||
| + | *Если нажимают на "Delete", то страница и ее item в меню удаляются | ||
| ==Localization== | ==Localization== | ||
| - | - добавить новый ключ в админке (key: hello-world, text: Hello world), с префиксом skeleton (создается автоматом, при установке) <link-to-user-manual|Ask-Den>. Оставить ссылку на секцию с описанием Pre Installation/Activation. | + | URL: /skeleton/localization |
| - | - вызвать текстовый ключ hello-world в PHP коде на странице /skeleton и присвоить значение переменной. | + | |
| - | - вызвать текстовый ключ hello-world в шаблоне компонента | + | |
| - | ==Forms== | + | <code> |
| + | -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 | ||
| - | - создать форму, на странице /skeleton с полями: | + | column1= "Text Key Values" сolumn2= "Original Values" column3="Actions" |
| + | {text key='skeleton+hello_world'} Welcome to my site name:"Delete". type:"button" | ||
| + | |||
| + | </code> | ||
| + | *Количество ключей которые можно создавать не ограничено. Все ключи после создания выводить в таблицу 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("Text") / type: text-input / description: text("additional field's description") | ||
| Line 75: | Line 115: | ||
| ==File storage== | ==File storage== | ||
| URL: /skeleton/file-storage. | URL: /skeleton/file-storage. | ||
| - | |||
| - | создать форму, на странице /skeleton с полями: | ||
| <code> | <code> | ||
| - | - name "Upload Image". type "file". button name "Browse". | + | - name: "Upload Image". type "file". button name "Browse". |
| - | - name "Allowed extensions". type: input-box. Values: .png, .jpeg, .jpg. | + | - name: "Image Description". type "text". predefined label:("describe your image") |
| - | *в этом боксе можно будет вводить нужные разрешения для изображений. | + | - name: "Upload". type: "submit" |
| - | - name "Short Description". type "text". predefined label:("describe your image") | + | - После успешной загрузки отобразить изображение с Short Description. |
| - | - name: text("Submit Image". type: submit | + | - Если изображение не подгрузилось то display notice. notice text: "Unacceptable file extension". |
| - | + | ||
| - | - Если загрузка прошла успешно отобразить изображение с Short Description. | + | |
| - | - Если изображение не прошло проверку по extension: | + | |
| - | display error. error text: (" File extension not allowed"). | + | |
| - | + | ||
| </code> | </code> | ||
| + | |||
| + | |||
| ==Decorators== | ==Decorators== | ||
| Line 95: | Line 130: | ||
| ==Mail sending== | ==Mail sending== | ||
| URL: /skeleton/mail-sending | URL: /skeleton/mail-sending | ||
| - | |||
| - | создать форму на странице /skeleton со следующими полями: | ||
| <code> | <code> | ||
| - | -name: From. type: text-input.predefined label: youremail@example.com | + | -name: "From". type: "text-input".invitation label: "youremail@example.com" |
| - | -name: To. type: text-input. predefined label: recepientemail@example.com | + | -name: "To". type: "text-input". invitation label: "recepientemail@example.com" |
| - | | Predefined label: это текст который отображается по дефолту. При клике на поле, текст исчезает | | + | -name: "Topic". type: "text input". invitation label: "enter email title" |
| - | * добавить простейшую проверку на формат email (ex: что бы была @ и не было запрещенных символов). | + | -name: "Body". type: "text area". invitation label: "enter email body" |
| - | -name: Topic. type: text input. predefined label: enter email title | + | -name: "Deliver". type: "radio-button". values: |
| - | -name: Body. type: text-area. predefined label: enter email body | + | val1=Immediately |
| - | -name: Deliver. type: radio-button. values val1=Immediately, val2=Add to Queue. | + | val2=Add to Queue.Рядом отобразить notice.notice text: "Email will be sent when Cron runs" |
| - | *рядом/под val2=Add to Queue отобразить notice. notice text: ("email will be sent when Cron runs") | + | -name: "Send". type: "submit". |
| - | -name: Send. type: submit. | + | |
| </code> | </code> | ||
| + | |||
| + | *invitation label: это текст который отображается по дефолту. При клике на поле, текст исчезает. | ||
| + | |||
| + | *К полям "To" и "From" добавить простейшую проверку на формат email (ex: что бы была @ и не было запрещенных символов). | ||
| + | |||
| + | *Если письмо было отправлено успешно то display notice. notice text: "Your message was sent successfully". | ||
| + | Если письмо не было отправлено по какой то причине display notice: notice text: "Error sending message". | ||
| ==Activity Notifications== | ==Activity Notifications== | ||
| - | подумать какие сценарии можно добавлять. "нажмите сюда что бы появилось то то то "... | + | |
| - | Идеи: | + | URL: /skeleton/notifications |
| + | <code> | ||
| + | name: "Notification sender"|"<img src="{$link_to_loged_in_user_avatar}"/> {$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" | ||
| + | </code> | ||
| + | |||
| + | * Сделать проверку на загрузку изображения ( что бы можно было добавлять только картинки а не .doc или .pdf к примеру) | ||
| + | |||
| + | * Можно создавать хоть сколько нотификейшенов. | ||
| + | |||
| + | * Если были заполнены не все required поля выводить ностис. notice text: "Fill in the form properly". Если все было заполнено корректно то создать нотфикейшен | ||
| + | |||
| + | * Если подгружаемый файл не является картинкой выводить нотис. notice text: "Unacceptable file extension". | ||
| ==Newsfeed== | ==Newsfeed== | ||
| - | как добавить новый айтем в ньюсфид. | + | URL: /skeleton/newsfeed |
| + | |||
| + | <code> | ||
| + | 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". | ||
| + | </code> | ||
| + | |||
| + | * Если все заполнено правильно вывести нотис "You have successfully added newsfeed item added to {$ место тут}". | ||
| ==Widgets== | ==Widgets== | ||
| - | как добавитьс вой виджетв коде. "нажмите на эту кнопку"... | + | URL: /skeleton/widgets |
| - | ==Javascript== | + | |
| - | подумать. | + | <code> |
| - | ==Ajax== | + | 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) | ||
| + | </code> | ||
| + | |||
| + | ==Floatbox== | ||
| + | URL: /skeleton/floatbox | ||
| + | |||
| + | |||
| + | |||
| + | <code> | ||
| + | text: "This is a component" | ||
| + | |||
| + | button: "Reload me", after click text changes to "Component has been reloaded via ajax" | ||
| + | |||
| + | button: "Close floatbox" | ||
| + | |||
| + | </code> | ||
| + | |||
| + | |||
| + | ==Ping request== | ||
| + | раз в секунду. посоветоваться с Зарифом | ||
| + | как добить его. | ||
| + | |||
| + | == Сron Jobs== | ||
| подумать | подумать | ||
| + | |||
| ==Profile questions== | ==Profile questions== | ||
| - | подумать. keywords- считывание значений, добавление кастомного поля, редактирование. | + | URL: /skeleton/profile_questions |
| + | |||
| + | <code> | ||
| + | |||
| + | name: "Username", type: text, value | ||
| + | name: "Gender", type: radio, selected value | ||
| + | name: "Birthday", type: date (birthday), selected value | ||
| + | |||
| + | name: "Save" | ||
| + | |||
| + | </code> | ||
| + | |||
| + | | ||
| ==ACL== | ==ACL== | ||
| - | access...level . управление пермишенами.создавание новых сервисов и считывание пермишенов | + | |
| + | URL: /skeleton/access_level | ||
| + | |||
| + | Описать метод проверки action для текущего юзера | ||
| + | |||
| + | Описать метод проверки для модератора | ||
| + | |||
| + | Описать метод добавления action при установке плагина | ||
| + | |||
| ==Admin Settings== | ==Admin Settings== | ||
| - | как добавлять новые конфиги. | + | URL: /skeleton/admin_settings/ |
| + | |||
| + | <code> | ||
| + | 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). | ||
| + | </code> | ||
| + | |||
| + | для зарифа. конфига обязательно должан появиться в сетингах плагина Skeleton. | ||
| + | *Если поля какое то из обязательных полей не было заполнено display notice: "Fill in the form properly". | ||
| + | |||
| + | *Если все поля были заполнены display notice: "Configuration was added successfully. Configuration URL: | ||
| + | {$configuration-url}." | ||
| + | |||
| + | *После перехода по урлу открыть страницу с залитым кодом юзера. | ||
| ==Pre Installation/Activation== | ==Pre Installation/Activation== | ||
| сценарий добавления какого то функционала плагином при установке. Больше Серегеина работа. | сценарий добавления какого то функционала плагином при установке. Больше Серегеина работа. | ||
| ==Post Uninstallation/Deactivate== | ==Post Uninstallation/Deactivate== | ||
| то же самое. Сереге | то же самое. Сереге | ||