Index: trunk/kernel/units/categories/categories_event_handler.php =================================================================== diff -u -N -r5176 -r5177 --- trunk/kernel/units/categories/categories_event_handler.php (.../categories_event_handler.php) (revision 5176) +++ trunk/kernel/units/categories/categories_event_handler.php (.../categories_event_handler.php) (revision 5177) @@ -234,8 +234,22 @@ )'); } + /** + * Set correct parent path for newly created categories + * + * @param kEvent $event + */ + function OnAfterCopyToLive(&$event) + { + if ($event->getEventParam('temp_id') == 0) { + $object =& $this->Application->recallObject($event->Prefix.'.-item', null, Array('skip_autoload' => true, 'live_table' => true)); + $object->Load($event->getEventParam('id')); + + $fields_hash = Array('ParentPath' => $object->buildParentPath()); + $this->Conn->doUpdate($fields_hash, $object->TableName, 'CategoryId = '.$object->GetID()); + } + } - /** * Set cache modification mark if needed * @@ -282,6 +296,31 @@ $this->Application->StoreVar('opener_stack', serialize($opener_stack)); } } + + /** + * Deletes all selected items. + * Automatically recurse into sub-items using temp handler, and deletes sub-items + * by calling its Delete method if sub-item has AutoDelete set to true in its config file + * + * @param kEvent $event + */ + function OnMassDelete(&$event) + { + if ($this->Application->CheckPermission('SYSTEM_ACCESS.READONLY', 1)) { + return; + } + +// $event->status = erSUCCESS; + + $ids = $this->StoreSelectedIDs($event); + if ($ids) { + $recursive_helper =& $this->Application->recallObject('RecursiveHelper'); + foreach ($ids as $id) { + $recursive_helper->DeleteCategory($id); + } + } + $this->clearSelectedIDs($event); + } } ?> \ No newline at end of file