Необходимо на основании плагина [login to view URL] реализовать приложение:
Каждый элемент дерева должен быть описан структурой.
Приблизительная структура:
{
object_name: 'tp',
type: 'form',
fields: [
{label: 'Name', type: 'text', name: 'NAME'},
{label: 'Comment', type: 'text', name: 'COMMENT'},
{label: 'Prefix Add', type: 'text', name: 'PREFADD'},
{label: 'Prefix Remove', type: 'text', name: 'PREFDEL'},
],
print_fields: ['NAME', 'COMMENT'],
result: 'same = n,Macro(TranslationPattern,%PREFADD%,%PREFDEL%,%NAME%,%COMMENT%)'
}
где
object_name - название самого элемента
type - тип элемента. Может принимать значения: form - будет построена форма, html - отобразит html + javascript.
fields:
label - текст, который выводится слева от поля формы
type - тип поля (input="text", input="radio", input="checkbox", textarea, select, select2([login to view URL])). Если тип поля select или select2, т. е. предполагается список, то должно быть еще одно свойство {source: [1,2,3,4,5]} или {source: 'data/getlist'}, если список нужно получать из внешнего источника
name - название поля (<input name="...")
result - результирующая строка, в которую нужно подставлять значения введенные пользователем в поля формы
print_fields - значения полей, которые необходимо выводить внутри элемента дерева
В случае, если type = html нужно предусмотреть механизм, который позволит необходимые значения подставить в result
Каждая структура должна храниться в отдельном файле.
Взаимосвязи между элементами дерева, введенные пользователем данные нужно сохранять в бд.
Схема работы с деревом должна быть следующей:
1. Создаются файлы, в которых описываются структуры, которые были приведены выше
2. Загружается страница
3. Страница содержит 2 области: 1 - область где будет строиться дерево, 2 - блок элементов (файлы описанные на шаге 1) для этого дерева
4. При переносе (drag&drop) со 2-й области в 1-ю элемент фиксируется и до предыдущего элемента строится связь. Если элемента до этого не было, то связь не строится.
5. Открывается окно для редактирования этого элемента с кнопками ok, cancel (ok - применяет изменения, cancel - закрывает окно)
6. На странице присутствует кнопка save, которая сохраняет (значения каждого элемента дерева, связи между элементами, результирующие строки для каждого элемента) все дерево.