Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Админка для маленького приложения 
:(
    Опции темы
ksnk
Дата 11.8.2013, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 96
Всего: 386



Окончательный вариант языка разметки админки (последняя на данный момент итерация  smile  ) теперь выглядит примерно так:

Язык разметки базируется на phpDoc. В качестве главного файла с разметкой исользуется файл admin.php (настраивается снаружи). Никаких соглашений о специальном именовании параметров (вроде тип_имя) нет. Используются обычные теги @param и 4 дополнительных тега @template, @menu, @submit, @context.

Каждый тег занимает одну строку, некоторые параметры занимают слово (type, $variable, template), некоторые (все остальные)- фразу.
  • @param [<type>] $variable [<description>] - определяется переменная с типом type, Если тип отсутствует, считается обычным коротким текстовым полем. Используется для получения списка параметром с типом и описанием для конструирования форм вывода.
  • @menu <name> [;<group>] - определяется пункт меню админки, страница. Name - эта фраза появляется в меню. Group может появиться после символа `;`, имеет специальное значение. О нем - ниже.
  • @submit <value> - подпись в кнопке отправки формы.
  • @context <type> <name> - при выводе элемента с типом type, представляющего собой список, для каждого элемента списка можно вызвать контекстное меню с пунктом name.
  • @template <template> - определение шаблона вывода текущей формы. Если на странице выводится несколько форм - побеждает явное указание шаблона.
Общий алгоритм строительства странички: Вычисляется текущий пункт меню, сканируются все функции с указанным пунктом меню. По параметрам всех функций строится список полей. Если функция имеет тег @submit - в список полей добавляется "кнопка отправки" именно этой функции. Если функция не определяет @submit - делается попытка добыть текущее значение поля по имени из системного реестра. Шаблон вывода формы переопределяется тегом @template.
при POST'е такой формы проверяется, не нажата ли "кнопка отправки". Если нажата она - вызывается конкретная функция. Иначе вызываются все функции этого меню без тега @submit c нужными им параметрами.

Что с помощью этого языка можно смастерить?

Главное (дополнительно или какое там удобнее) меню. Оно вычисляется с помощью уникального перечисления всех <name> тегов @menu. Специальное значение имеет пункт меню default - он считается выбранным при входе в админку.

Редактор системных параметров приложения. Параметры всех функций, отмеченных тегом @menu Системные параметры являются системными параметрами. У этих функций не должно быть тегов @submit. Должен быть указан хотя бы один раз @template parameters, чтобы гарантировать расположение полей в виде списка "сверху-вниз описание-значение". Старые значения параметров берутся по имени из системного реестра. После проверки, в случае, если параметры валидны, изменения уходят в системный реестр. Редактор системных параметров вызывается пунктом меню "Системные параметры" (сюрприз!). Дополнительный параметр Group тега @menu служит для группировки, определяет подзаголовок перед группой параметров. 

Форма "сделай-мне-все-за-один-клик". Форма, в которой собраны небольшие системные утилитки, типа "сохрани текущий бякап, оттестируй таблицы базы, восстанови таблицы, ets...". Представляет собой таблицу "одна строка на действие". Каждая строка имеет описание, возможный параметр (не более одного) и "кнопку отправки". При сабмите такой формы, вызывается только функция, соответствующая нажатой кнопке. 

Контекстное меню для reach-contol. При выводе элемента управления с типом <type>, сканируются все функции с установленным тегом @context <type>. Формируется контекстное меню, которое показывается при правом клике на элементе списка. При выборе нужного пункта, Javascript формирует нужный post запрос для вызова конкретной функции с конкретными параметрами.

Обычная форма админки. Представляет собой reach-control определенного типа, с редактором данных такого типа. 

Это сообщение отредактировал(а) ksnk - 30.8.2013, 10:24


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0535 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.