Внешний вид коллекции
Внешний вид модуля
Мы пилили-пилили и наконец-то допилили) Модуль evoCollection практически полностью повторяет функционал модуля Collection для MODX Revolution, и создает вкладку в корневых документах для табличного отображения дочерних ресурсов, быстрого их редактирования и создания.

С момента первого релиза сделано множество изменений и улучшений.
  1. Исправил мелкие и большие ошибки
  2. Написал модуль для задания конфигурации (очень похож по смыслу на Рево)
  3. Добавил различные настройки, список будет расширяться
  4. Сохранение по потере фокуса, либо по нажатию enter
  5. Сделал возможность кастомной обработки полей (подробнее ниже)
  6. Сделал install
  7. Выложил код на github (я с ним на «вы», поэтому если буду тупить — не ругайтесь=))

На данный момент есть ряд косяков:

  • Нормально подружить tinyMCE у меня не удалось. Он запускается, сохраняется, но не рекомендую использовать, если у вас есть тэги code, pre и т.п. — может не очень корректно с ними поступиить.
  • Наблюдается небольшой глюк при изменении фотографий.
Эти глюки поправлю в ближайшее время, ибо все равно хочу переписать все на нативный JS.

Обработка данных.

Для кастомной обработки данных необходимо в конфиге выбрать пользовательский тип данных и рядом вписать имя сниппета-обработчика.
В обработчике доступно три состояния: вывод, ввод, обработка. Ниже код, который обрабатывает дату (включен по умолчанию, чисто для приера) с пояснениями, думаю из него все будет понятно.

<?php
// $mode - получает одно из трех значений: input для ввода, output для вывода, execute при обработке.
if ($mode=='input') 
{
	//Выводим не страндартный type="text", а type="date" для ввода данных, плюс приводим его к нужному виду. Допустимы любые input и select. $value - значение поля.
	if ($value>0)
		{
			$value = gmdate("Y-m-d", $value); 
			return '<input type="date" value="'.strip_tags($value).'">';
		}
	else return '<input type="date">';
}
if ($mode=='output') 
{
	// Выводим не в unixtime, а красивше)
	if ($value)
		{
			$d = gmdate("d", $value); 
			$m = gmdate("m", $value); 
			if ($m==1) $m = 'января';
			if ($m==2) $m = 'февраля';
			if ($m==3) $m = 'марта';
			if ($m==4) $m = 'апреля';
			if ($m==5) $m = 'мая';
			if ($m==6) $m = 'июня';
			if ($m==7) $m = 'июля';
			if ($m==8) $m = 'августа';
			if ($m==9) $m = 'сентября';
			if ($m==10) $m = 'октября';
			if ($m==11) $m = 'ноября';
			if ($m==12) $m = 'деабря';
			$y = gmdate("Y", $value); 
			return = $d.' '.$m.' '.$y; 
		}
	return 'не задано';
}
if ($mode=='execute') 
{
	//Т.к. получаем данные в формате YYYY-MM-DD, то нужно их привести виду Unixtime
	$startdate = date($value." 12:00:00");
	return strtotime($startdate);		
	
}


Также в сниппете доступны переменные:
$did — id документа, которому принадлежит поле
$table — tv/content
$field — название текущего поля

Планы на будущее.

1) Переписать js на натив
2) Добавить мультязычность
3) Добавить различные виджеты
4) Переписать install для нового репозитария)))

Установка.

Проверено на 1.3.0+ — как на других — не знаю, но вполне вероятно что запустится)

Я устанавливаю его через текущий репозитарий =) Ссылка на архив.
Ручная установка:
Ссылка на гитхаб — github.com/liber87/evoCollection

Копируем содержимое папки /assets/plugins/evocollection/ в соответствующую на сайте
Создаем модуль «Коллекции», вставляем в него содержимое /install/assets/modules/evocollection.tpl
Создаем плагин «evoCollection», вставляем в него содержимое /install/assets/plugins/evocollection.tpl не забываем ставить галочку «Анализировать Doc».

Сейчас уезжаю на недельку — ответить, если будут вопросы, смогу чуть позже.