====== Версионный контроль контентных объектов ======
Каждый контентный объект 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. Все более сложное требует ручной обработки.//