Улучшения внутренних функций и новые планы

Работа со строками 

Для фильтрации строк использовался оператор [filter], который выполнял операции [if] над всеми входящими строками, а результат записывал в виде переменной, или в виде "субстрок" таблицы данных. От этого подхода решено было уйти в пользу оператора .SEL. Также и от сортировки [order] перешли к более удобным операторам .DESC, .ASC и .RAND

Если мы фильтруем многоуровневую таблицу данных, то для фильтрации дочерних элементов в [filter] устанавливался знак ^ перед перебираемыми данными. В .SEL эта возможность отсутствовала до вчерашнего дня. Теперь по умолчанию .SEL использует глубинную фильтрацию и сортировку. Возможно, позже предётся вводить дополнительные команды для отключения глубинности просмотра.

Напомним разницу конструкций:

Конструкция Filter
[filter cex.articles.rows "active_rows" enable==1]
И далее мы имеем доступ к отобранным строкам через cex.articles.active_rows

Конструкция Sel
[active_rows=cex.articles.rows.sel(enable==1)]
Доступ к элементам через [$active_rows]

Доработаны операторы NEXT и PREV

Теперь они указывают на предыдущий/следующий элемент с учётом вложенных строк. Например, если у строки есть "дети", то следующим указателем NEXT будет его первая подстрока, а у этой подстроки, указатель PREV будет указывать на родителя. У второй подстроки - на первую строку, у последней подстроки - на следующую за родителем строку.

Сейчас операторы NEXT работают с параметром X, и находят следующий от X элемент.
Например: cex.articles.rows.next(Номер статьи)

Это не очень удобно, хотябы потому, что возможны такие варианты:
cex.articles.rows.next(cex.articles.rows.sel(title=="1 новость").first)

Вместо логичного cex.articles.rows.sel(title=="1 новость").first.next (и вообще если элемент поиска 1, то зачем first?)

По этому я планирую ввести NEXT и FIRST также и в обработчике строки. При этом их значения будут равны их значению в админке (в отличие от предыдущего NEXT-а, где показывается следующий элемент в зависимости от любой входящей выборки).

Работа пользователя с собственными строками

Для этого планируется несколько решений.

1. Usel. Оператор, который выполняется над любым набором строк - выявляя только те, в которых присутствует поле "пользователь" с текущим пользователем. Usel("user") указывает на конкретный столбец, с которым нужно сравнивать пользователя (если у таблицы более 1 поля "пользователь"). Usel2 - выбирает те строки, которые непосредственно создал пользователь.
Например: cex.articles.rows.usel

2. User.module.ex.table. Данная конструкция довольно громоздкая из-за необходимости указывать модуль, его экземпляр и таблицу (в предыдущем способе достаточно указать экземпляр и таблицу. Скорее всего будут упращения в виде user.cex.table или user.cm.ex.table

Новые виды полей

"Группы" - ссылка на одну из групп пользователей, или на целый набор групп. Таким образом, мы сможем добавлять поле "Разрешить доступ для групп" в таблицу "Содержание" сайта. Далее, для каждой отдельной страницы мы сможем указывать для каких групп возможен доступ (если не отмечено - то доступ соответственно имеют все группы).

Поле "Пользователь" возможно получит множественное значение.

Автор: E5 Developer

Дата: 12 июля 2013



Добавить комментарий

Имя

E-mail

Комментарий

Контрольный вопрос:
Сколько будет: 19+15-10


 
Наши работы
Массажные кровати LongLife

Благотворительная организация Преображение

Автомобили из Кореи СК-МОТОРС

Мобильные бани МОБИБА

Европейские ограждения Евростандарт

Портал недвижимости Аренда 911

Сеть саун Кантри

Строительная компания Сибирский Стиль

Автомобили из Кореи СК-МОТОРС

Арбитражный суд НСО

Сервис-кухня Ланч

Ремонт и обслуживание компьютеров ПК-Сервис

Интернет-каталог велосипедов и детской мебели Дами

 

Главная О студии Расценки Портфолио Статьи Контакты