Каждый контентный объект Limb поддерживает версионность. Когда пользователь изменяет контентный объект (например, статью или документ), номер версии объекта увеличивается, а копия объекта помещается в БД. Некоторые формы имеют флаг 'Незначительные изменения', который сообщает действию edit не создавать новую версию объекта.
Метод Update контентного объекта получает логический флаг надо ли создавать новую версию или нет:
content_object :: update((bool) $new_version);
В настоящее время версионное поведение по умолчанию может быть переопределено созданием потомка form_edit_site_object_action и заменой в нем метода _update_object_operation():
class your_action extends form_edit_site_object_action { [...] function _update_object_operation() { if(!$this->object->update(false)) return false; else return true; } }
Чтобы просмотреть список версий объекта и проверить его состояние для любой версии Вам необходимо добавить дополнительное действие к контроллеру контентного объекта:
class document_controller extends site_object_controller { function _define_actions() { return array( [...] 'admin_detail' => array( 'template_path' => '/admin/object_detail_info.html', 'popup' => true, 'JIP' => true, 'img_src' => '/shared/images/admin_detail.gif', 'action_name' => strings :: get('detail_info'), ), ); } }
Системный шаблон 'object_detail_info.html' отображает содержание системную информацию о контентном объекте о список версий.
Чтобы востановить версию или просмотреть все атрибуты контентного объекта для любой версии Вам необходимо иметь доступ к контентному объекту /root/version (в частности к действиям display и recover).
Действие восстановление (recover action) создает новую версию контентного объекта на основе указанной версии, то есть если Вы восстанавливаете версию 5, а текущая версия - 7, то 5-я версия копируется в новую 8-ю версию.
Система версионности в Limb2 находится на начальной стадии развития. Она обеспечивает простое и тем не менее эффективное решение для предметной области с простыми объектами. It provides a simple yet effective solution for the domain of simple objects. Все более сложное требует ручной обработки.
Обсуждение