Index: trunk/admin/relation_select.php
===================================================================
diff -u -r4457 -r4689
--- trunk/admin/relation_select.php (.../relation_select.php) (revision 4457)
+++ trunk/admin/relation_select.php (.../relation_select.php) (revision 4689)
@@ -33,8 +33,11 @@
$application->Init();
$application->ProcessRequest();
-$application->InitParser();
-$application->ProcessParsedTag('adm', 'StoreMainPrefix', Array());
+// save K4 redirection from popup stuff: begin
+$application->LinkVar('main_prefix'); // window prefix, that opened selector
+$application->LinkVar('dst_field'); // field to set value choosed in selector
+$application->LinkVar('return_template'); // template to go, when something was coosen from popup (from finalizePopup)
+// save K4 redirection from popup stuff: end
if( $application->GetVar('CatId') ) $application->SetVar('m_cat_id', $application->GetVar('CatId') );
//KERNEL4 END
Index: trunk/core/units/categories/categories_config.php
===================================================================
diff -u -r4675 -r4689
--- trunk/core/units/categories/categories_config.php (.../categories_config.php) (revision 4675)
+++ trunk/core/units/categories/categories_config.php (.../categories_config.php) (revision 4689)
@@ -53,7 +53,7 @@
'tree_site' => Array('format' => '!la_selecting_categories!'),
),
- 'PermSection' => Array(/*'search' => 'in-portal:configuration_search',*/ 'email' => 'in-portal:configuration_email', 'custom' => 'in-portal:configuration_custom'),
+ 'PermSection' => Array('main' => 'in-portal:categories', /*'search' => 'in-portal:configuration_search',*/ 'email' => 'in-portal:configuration_email', 'custom' => 'in-portal:configuration_custom'),
'Sections' => Array(
// "Structure & Data" section
Index: trunk/core/kernel/event_handler.php
===================================================================
diff -u -r4637 -r4689
--- trunk/core/kernel/event_handler.php (.../event_handler.php) (revision 4637)
+++ trunk/core/kernel/event_handler.php (.../event_handler.php) (revision 4689)
@@ -308,46 +308,10 @@
*/
function CheckPermission(&$event)
{
- $section = $event->getSection();
- $main_prefix = $this->Application->GetTopmostPrefix($event->Prefix);
-
- $pefix_type = ($main_prefix == $event->Prefix) ? 'self' : 'subitem';
- $perm_mapping = getArrayValue($this->permMapping, $event->Name);
-
- if (!$perm_mapping[$pefix_type]) {
- trigger_error('Permission mappings not defined for event '.$main_prefix.' <- '.$event->Prefix.':'.$event->Name.'', E_USER_ERROR);
- }
-
- $perm_status = false;
- if ($perm_mapping[$pefix_type] === true) {
- // event is defined in mapping but is not checked by permissions
- return true;
- }
-
- $check_perms = explode('|', $perm_mapping[$pefix_type]);
-
- foreach ($check_perms as $perm_name) {
- // check if at least one of required permissions is set
- $perm_name = $section.'.'.$perm_name;
- $perm_status = $this->Application->CheckPermission($perm_name, 1);
- if (($perm_name == $section.'.add') && $perm_status && ($main_prefix == $event->Prefix)) {
- // main item, add permission allowed, but ID is > 0, then deny permission
- // how to get id here
- }
- if ($perm_status) {
- return $perm_status;
- }
- }
-
- if (!$perm_status) {
- // for debugging purposes
- $event->SetRedirectParam('section', $section);
- $event->SetRedirectParam('main_prefix', $main_prefix);
- $event->SetRedirectParam('event_name', $event->Name);
- $event->status = erPERM_FAIL;
- }
- return $perm_status;
+ $perm_helper =& $this->Application->recallObject('PermissionsHelper');
+ return $perm_helper->CheckPermission($event, $this->permMapping);
}
+
}
Index: trunk/kernel/units/categories/categories_config.php
===================================================================
diff -u -r4675 -r4689
--- trunk/kernel/units/categories/categories_config.php (.../categories_config.php) (revision 4675)
+++ trunk/kernel/units/categories/categories_config.php (.../categories_config.php) (revision 4689)
@@ -53,7 +53,7 @@
'tree_site' => Array('format' => '!la_selecting_categories!'),
),
- 'PermSection' => Array(/*'search' => 'in-portal:configuration_search',*/ 'email' => 'in-portal:configuration_email', 'custom' => 'in-portal:configuration_custom'),
+ 'PermSection' => Array('main' => 'in-portal:categories', /*'search' => 'in-portal:configuration_search',*/ 'email' => 'in-portal:configuration_email', 'custom' => 'in-portal:configuration_custom'),
'Sections' => Array(
// "Structure & Data" section
Index: trunk/kernel/units/reviews/reviews_event_handler.php
===================================================================
diff -u -r4637 -r4689
--- trunk/kernel/units/reviews/reviews_event_handler.php (.../reviews_event_handler.php) (revision 4637)
+++ trunk/kernel/units/reviews/reviews_event_handler.php (.../reviews_event_handler.php) (revision 4689)
@@ -27,8 +27,6 @@
$main_prefix = $this->Application->GetTopmostPrefix($event->Prefix);
// this will return LINK for l, ARTICLE for n, TOPIC for bb, PRODUCT for p
$item_prefix = $this->Application->getUnitOption($main_prefix, 'PermItemPrefix');
-
- if (!$item_prefix) $item_prefix = 'PRODUCT';
return $item_prefix;
}
Index: trunk/core/kernel/event_manager.php
===================================================================
diff -u -r4637 -r4689
--- trunk/core/kernel/event_manager.php (.../event_manager.php) (revision 4637)
+++ trunk/core/kernel/event_manager.php (.../event_manager.php) (revision 4689)
@@ -265,6 +265,7 @@
$event->redirect = true;
$event_handler =& $this->Application->recallObject($event->Prefix.'_EventHandler');
+ $event->setEventParam('top_prefix', $this->Application->GetTopmostPrefix($event->Prefix));
if (($this->Application->GetVar('u_id') == -1) || $event_handler->CheckPermission($event)) {
$this->HandleEvent($event);
}
Index: trunk/core/units/reviews/reviews_event_handler.php
===================================================================
diff -u -r4637 -r4689
--- trunk/core/units/reviews/reviews_event_handler.php (.../reviews_event_handler.php) (revision 4637)
+++ trunk/core/units/reviews/reviews_event_handler.php (.../reviews_event_handler.php) (revision 4689)
@@ -27,8 +27,6 @@
$main_prefix = $this->Application->GetTopmostPrefix($event->Prefix);
// this will return LINK for l, ARTICLE for n, TOPIC for bb, PRODUCT for p
$item_prefix = $this->Application->getUnitOption($main_prefix, 'PermItemPrefix');
-
- if (!$item_prefix) $item_prefix = 'PRODUCT';
return $item_prefix;
}
Index: trunk/kernel/action.php
===================================================================
diff -u -r4645 -r4689
--- trunk/kernel/action.php (.../action.php) (revision 4645)
+++ trunk/kernel/action.php (.../action.php) (revision 4689)
@@ -2338,7 +2338,7 @@
$rs->MoveNext();
}
- if(($_REQUEST['CategoryId'] > 0) || ($Action == 'm_add_category')) // not root category is updated
+ if(($_REQUEST['CategoryId'] > 0) || ($Action == 'm_add_category') || ($Action == 'm_edit_category')) // not root category is updated
{
$cat_ids = $objCatList->CopyFromEditTable("CategoryId");
if ($cat_ids) {
Index: trunk/core/units/general/helpers/permissions_helper.php
===================================================================
diff -u -r4611 -r4689
--- trunk/core/units/general/helpers/permissions_helper.php (.../permissions_helper.php) (revision 4611)
+++ trunk/core/units/general/helpers/permissions_helper.php (.../permissions_helper.php) (revision 4689)
@@ -49,6 +49,157 @@
{
return $section_name == 'in-portal:root' && $perm_name != 'view';
}
+
+ /**
+ * Returns permission names to check based on event name and item prefix (main item or subitem)
+ *
+ * @param kEvent $event
+ * @return Array
+ */
+ function getPermissionByEvent(&$event, $perm_mapping)
+ {
+ $top_prefix = $event->getEventParam('top_prefix');
+
+ $pefix_type = ($top_prefix == $event->Prefix) ? 'self' : 'subitem';
+ $perm_mapping = getArrayValue($perm_mapping, $event->Name);
+
+ if (!$perm_mapping[$pefix_type]) {
+ trigger_error('Permission mappings not defined for event '.$top_prefix.' <- '.$event->Prefix.':'.$event->Name.'', E_USER_ERROR);
+ }
+
+ if ($perm_mapping[$pefix_type] === true) {
+ // event is defined in mapping but is not checked by permissions
+ return true;
+ }
+
+ return explode('|', $perm_mapping[$pefix_type]);
+ }
+
+ /**
+ * Checks permissions of user
+ *
+ * @param kEvent $event
+ */
+ function CheckPermission(&$event, $perm_mapping)
+ {
+ $section = $event->getSection();
+ if (preg_match('/^CATEGORY:(.*)/', $section)) {
+ return $this->CheckCategoryPermission($event, $perm_mapping);
+ }
+
+ $top_prefix = $event->getEventParam('top_prefix');
+ $check_perms = $this->getPermissionByEvent($event, $perm_mapping);
+
+ if ($check_perms === true) {
+ // event is defined in mapping but is not checked by permissions
+ return true;
+ }
+
+ $perm_status = false;
+ foreach ($check_perms as $perm_name) {
+ // check if at least one of required permissions is set
+ $perm_name = $section.'.'.$perm_name;
+ $perm_status = $this->Application->CheckPermission($perm_name, 1);
+ if (($perm_name == $section.'.add') && $perm_status && ($top_prefix == $event->Prefix)) {
+ // main item, add permission allowed, but ID is > 0, then deny permission
+ // how to get id here
+ }
+ if ($perm_status) {
+ return $perm_status;
+ }
+ }
+
+ if (!$perm_status) {
+ // for debugging purposes
+ $event->SetRedirectParam('section', $section);
+ $event->SetRedirectParam('main_prefix', $top_prefix);
+ $event->SetRedirectParam('event_name', $event->Name);
+ $event->status = erPERM_FAIL;
+ }
+ return $perm_status;
+ }
+
+ /**
+ * Check permissions
+ *
+ * @param kEvent $event
+ */
+ function CheckCategoryPermission(&$event, $event_perm_mapping)
+ {
+ // would be better to check this too, but we have no such ermission for now
+ /*if ($event->Name == 'OnRateProduct') {
+ return $this->Application->CheckPermission('PRODUCT.RATE', 0);
+ }*/
+
+ // mapping between specific permissions and common permissions
+ $perm_mapping = Array('add' => 'ADD', 'edit' => 'MODIFY', 'delete' => 'DELETE', 'view' => 'VIEW');
+
+ $top_prefix = $event->getEventParam('top_prefix');
+ $event_handler =& $this->Application->recallObject($event->Prefix.'_EventHandler');
+ if ($event->Prefix != $top_prefix) {
+ $top_event = new kEvent($top_prefix.':'.$event->Name);
+ $id = $event_handler->getPassedID($top_event);
+ }
+ else {
+ $id = $event_handler->getPassedID($event);
+ }
+
+ $item_prefix = $this->Application->getUnitOption($top_prefix, 'PermItemPrefix');
+
+ // 1. get primary category of category item
+ $id_field = $this->Application->getUnitOption($top_prefix, 'IDField');
+ $table_name = $this->Application->getUnitOption($top_prefix, 'TableName');
+ $ci_table = $this->Application->getUnitOption($top_prefix.'-ci', 'TableName');
+
+ if (!$id) {
+ // item being created -> check by current (before editing started, saved in OnPreCreate event) category permissions
+ $category_id = $this->Application->RecallVar('m_cat_id');
+ }
+ else {
+ // item being edited -> check by it's primary category permissions
+ $sql = 'SELECT ci.CategoryId
+ FROM '.$table_name.' main_table
+ LEFT JOIN '.$ci_table.' ci ON ci.ItemResourceId = main_table.ResourceId
+ WHERE (main_table.'.$id_field.' = '.$id.') AND (ci.PrimaryCat = 1)';
+ $category_id = $this->Conn->GetOne($sql);
+ }
+
+ if ((substr($event->Name, 0, 9) == 'OnPreSave') || ($event->Name == 'OnSave')) {
+ if ($event_handler->isNewItemCreate($event)) {
+ return $this->Application->CheckPermission($item_prefix.'.ADD', 0, $category_id);
+ }
+ else {
+ return $this->Application->CheckPermission($item_prefix.'.ADD', 0, $category_id) || $this->Application->CheckPermission($item_prefix.'.MODIFY', 0, $category_id);
+ }
+ }
+
+ $perm_status = false;
+ $check_perms = $this->getPermissionByEvent($event, $event_perm_mapping);
+
+ foreach ($check_perms as $perm_name) {
+ // check if at least one of required permissions is set
+ if (!isset($perm_mapping[$perm_name])) {
+ // not mapped permission (e.g. advanced:approve) -> skip
+ continue;
+ }
+ $perm_name = $item_prefix.'.'.$perm_mapping[$perm_name];
+ echo 'event_name: '.$event->Name.'; permission: '.$perm_name.'
';
+ $perm_status = $this->Application->CheckPermission($perm_name, 0, $category_id);
+
+ if ($perm_status) {
+ return $perm_status;
+ }
+ }
+
+ if (!$perm_status) {
+ // for debugging purposes
+ $event->SetRedirectParam('section', $event->getSection());
+ $event->SetRedirectParam('main_prefix', $top_prefix);
+ $event->SetRedirectParam('event_name', $event->Name);
+ $event->status = erPERM_FAIL;
+ }
+ return $perm_status;
+ }
}
?>
\ No newline at end of file
Index: trunk/kernel/units/general/helpers/permissions_helper.php
===================================================================
diff -u -r4611 -r4689
--- trunk/kernel/units/general/helpers/permissions_helper.php (.../permissions_helper.php) (revision 4611)
+++ trunk/kernel/units/general/helpers/permissions_helper.php (.../permissions_helper.php) (revision 4689)
@@ -49,6 +49,157 @@
{
return $section_name == 'in-portal:root' && $perm_name != 'view';
}
+
+ /**
+ * Returns permission names to check based on event name and item prefix (main item or subitem)
+ *
+ * @param kEvent $event
+ * @return Array
+ */
+ function getPermissionByEvent(&$event, $perm_mapping)
+ {
+ $top_prefix = $event->getEventParam('top_prefix');
+
+ $pefix_type = ($top_prefix == $event->Prefix) ? 'self' : 'subitem';
+ $perm_mapping = getArrayValue($perm_mapping, $event->Name);
+
+ if (!$perm_mapping[$pefix_type]) {
+ trigger_error('Permission mappings not defined for event '.$top_prefix.' <- '.$event->Prefix.':'.$event->Name.'', E_USER_ERROR);
+ }
+
+ if ($perm_mapping[$pefix_type] === true) {
+ // event is defined in mapping but is not checked by permissions
+ return true;
+ }
+
+ return explode('|', $perm_mapping[$pefix_type]);
+ }
+
+ /**
+ * Checks permissions of user
+ *
+ * @param kEvent $event
+ */
+ function CheckPermission(&$event, $perm_mapping)
+ {
+ $section = $event->getSection();
+ if (preg_match('/^CATEGORY:(.*)/', $section)) {
+ return $this->CheckCategoryPermission($event, $perm_mapping);
+ }
+
+ $top_prefix = $event->getEventParam('top_prefix');
+ $check_perms = $this->getPermissionByEvent($event, $perm_mapping);
+
+ if ($check_perms === true) {
+ // event is defined in mapping but is not checked by permissions
+ return true;
+ }
+
+ $perm_status = false;
+ foreach ($check_perms as $perm_name) {
+ // check if at least one of required permissions is set
+ $perm_name = $section.'.'.$perm_name;
+ $perm_status = $this->Application->CheckPermission($perm_name, 1);
+ if (($perm_name == $section.'.add') && $perm_status && ($top_prefix == $event->Prefix)) {
+ // main item, add permission allowed, but ID is > 0, then deny permission
+ // how to get id here
+ }
+ if ($perm_status) {
+ return $perm_status;
+ }
+ }
+
+ if (!$perm_status) {
+ // for debugging purposes
+ $event->SetRedirectParam('section', $section);
+ $event->SetRedirectParam('main_prefix', $top_prefix);
+ $event->SetRedirectParam('event_name', $event->Name);
+ $event->status = erPERM_FAIL;
+ }
+ return $perm_status;
+ }
+
+ /**
+ * Check permissions
+ *
+ * @param kEvent $event
+ */
+ function CheckCategoryPermission(&$event, $event_perm_mapping)
+ {
+ // would be better to check this too, but we have no such ermission for now
+ /*if ($event->Name == 'OnRateProduct') {
+ return $this->Application->CheckPermission('PRODUCT.RATE', 0);
+ }*/
+
+ // mapping between specific permissions and common permissions
+ $perm_mapping = Array('add' => 'ADD', 'edit' => 'MODIFY', 'delete' => 'DELETE', 'view' => 'VIEW');
+
+ $top_prefix = $event->getEventParam('top_prefix');
+ $event_handler =& $this->Application->recallObject($event->Prefix.'_EventHandler');
+ if ($event->Prefix != $top_prefix) {
+ $top_event = new kEvent($top_prefix.':'.$event->Name);
+ $id = $event_handler->getPassedID($top_event);
+ }
+ else {
+ $id = $event_handler->getPassedID($event);
+ }
+
+ $item_prefix = $this->Application->getUnitOption($top_prefix, 'PermItemPrefix');
+
+ // 1. get primary category of category item
+ $id_field = $this->Application->getUnitOption($top_prefix, 'IDField');
+ $table_name = $this->Application->getUnitOption($top_prefix, 'TableName');
+ $ci_table = $this->Application->getUnitOption($top_prefix.'-ci', 'TableName');
+
+ if (!$id) {
+ // item being created -> check by current (before editing started, saved in OnPreCreate event) category permissions
+ $category_id = $this->Application->RecallVar('m_cat_id');
+ }
+ else {
+ // item being edited -> check by it's primary category permissions
+ $sql = 'SELECT ci.CategoryId
+ FROM '.$table_name.' main_table
+ LEFT JOIN '.$ci_table.' ci ON ci.ItemResourceId = main_table.ResourceId
+ WHERE (main_table.'.$id_field.' = '.$id.') AND (ci.PrimaryCat = 1)';
+ $category_id = $this->Conn->GetOne($sql);
+ }
+
+ if ((substr($event->Name, 0, 9) == 'OnPreSave') || ($event->Name == 'OnSave')) {
+ if ($event_handler->isNewItemCreate($event)) {
+ return $this->Application->CheckPermission($item_prefix.'.ADD', 0, $category_id);
+ }
+ else {
+ return $this->Application->CheckPermission($item_prefix.'.ADD', 0, $category_id) || $this->Application->CheckPermission($item_prefix.'.MODIFY', 0, $category_id);
+ }
+ }
+
+ $perm_status = false;
+ $check_perms = $this->getPermissionByEvent($event, $event_perm_mapping);
+
+ foreach ($check_perms as $perm_name) {
+ // check if at least one of required permissions is set
+ if (!isset($perm_mapping[$perm_name])) {
+ // not mapped permission (e.g. advanced:approve) -> skip
+ continue;
+ }
+ $perm_name = $item_prefix.'.'.$perm_mapping[$perm_name];
+ echo 'event_name: '.$event->Name.'; permission: '.$perm_name.'
';
+ $perm_status = $this->Application->CheckPermission($perm_name, 0, $category_id);
+
+ if ($perm_status) {
+ return $perm_status;
+ }
+ }
+
+ if (!$perm_status) {
+ // for debugging purposes
+ $event->SetRedirectParam('section', $event->getSection());
+ $event->SetRedirectParam('main_prefix', $top_prefix);
+ $event->SetRedirectParam('event_name', $event->Name);
+ $event->status = erPERM_FAIL;
+ }
+ return $perm_status;
+ }
}
?>
\ No newline at end of file
Index: trunk/kernel/units/general/cat_event_handler.php
===================================================================
diff -u -r4476 -r4689
--- trunk/kernel/units/general/cat_event_handler.php (.../cat_event_handler.php) (revision 4476)
+++ trunk/kernel/units/general/cat_event_handler.php (.../cat_event_handler.php) (revision 4689)
@@ -4,7 +4,7 @@
$application->Factory->includeClassFile('kDBEventHandler');
class kCatDBEventHandler extends InpDBEventHandler {
-
+
function OnCopy(&$event)
{
$object = $event->getObject();
Index: trunk/kernel/units/relationship/relationship_event_handler.php
===================================================================
diff -u -r4309 -r4689
--- trunk/kernel/units/relationship/relationship_event_handler.php (.../relationship_event_handler.php) (revision 4309)
+++ trunk/kernel/units/relationship/relationship_event_handler.php (.../relationship_event_handler.php) (revision 4689)
@@ -3,6 +3,19 @@
class RelationshipEventHandler extends InpDBEventHandler
{
/**
+ * Allows to override standart permission mapping
+ *
+ */
+ function mapPermissions()
+ {
+ parent::mapPermissions();
+ $permissions = Array(
+ 'OnAddRelation' => Array('subitem' => 'add|edit'),
+ );
+ $this->permMapping = array_merge($this->permMapping, $permissions);
+ }
+
+ /**
* Add new relation
*
* @param kEvent $event
Index: trunk/core/units/general/cat_event_handler.php
===================================================================
diff -u -r4476 -r4689
--- trunk/core/units/general/cat_event_handler.php (.../cat_event_handler.php) (revision 4476)
+++ trunk/core/units/general/cat_event_handler.php (.../cat_event_handler.php) (revision 4689)
@@ -4,7 +4,7 @@
$application->Factory->includeClassFile('kDBEventHandler');
class kCatDBEventHandler extends InpDBEventHandler {
-
+
function OnCopy(&$event)
{
$object = $event->getObject();
Index: trunk/core/units/relationship/relationship_event_handler.php
===================================================================
diff -u -r4309 -r4689
--- trunk/core/units/relationship/relationship_event_handler.php (.../relationship_event_handler.php) (revision 4309)
+++ trunk/core/units/relationship/relationship_event_handler.php (.../relationship_event_handler.php) (revision 4689)
@@ -3,6 +3,19 @@
class RelationshipEventHandler extends InpDBEventHandler
{
/**
+ * Allows to override standart permission mapping
+ *
+ */
+ function mapPermissions()
+ {
+ parent::mapPermissions();
+ $permissions = Array(
+ 'OnAddRelation' => Array('subitem' => 'add|edit'),
+ );
+ $this->permMapping = array_merge($this->permMapping, $permissions);
+ }
+
+ /**
* Add new relation
*
* @param kEvent $event
Index: trunk/core/kernel/db/db_event_handler.php
===================================================================
diff -u -r4679 -r4689
--- trunk/core/kernel/db/db_event_handler.php (.../db_event_handler.php) (revision 4679)
+++ trunk/core/kernel/db/db_event_handler.php (.../db_event_handler.php) (revision 4689)
@@ -57,16 +57,24 @@
*/
function CheckPermission(&$event)
{
- if ((substr($event->Name, 0, 9) == 'OnPreSave') || ($event->Name == 'OnSave')) {
- $section = $event->getSection();
- if ($this->isNewItemCreate($event)) {
- return $this->Application->CheckPermission($section.'.add');
+ $section = $event->getSection();
+ if (!preg_match('/^CATEGORY:(.*)/', $section)) {
+ // only if not category item events
+ if ((substr($event->Name, 0, 9) == 'OnPreSave') || ($event->Name == 'OnSave')) {
+ if ($this->isNewItemCreate($event)) {
+ return $this->Application->CheckPermission($section.'.add', 1);
+ }
+ else {
+ return $this->Application->CheckPermission($section.'.add', 1) || $this->Application->CheckPermission($section.'.edit', 1);
+ }
}
- else {
- return $this->Application->CheckPermission($section.'.add', 1) || $this->Application->CheckPermission($section.'.edit', 1);
- }
}
+ if ($event->Name == 'OnPreCreate') {
+ // save category_id before item create (for item category selector not to destroy permission checking category)
+ $this->Application->LinkVar('m_cat_id');
+ }
+
return parent::CheckPermission($event);
}
@@ -78,7 +86,7 @@
{
parent::mapPermissions();
$permissions = Array(
- 'OnNew' => Array('self' => 'add', 'subitem' => 'add'),
+ 'OnNew' => Array('self' => 'add', 'subitem' => 'add|edit'),
'OnCreate' => Array('self' => 'add', 'subitem' => 'add|edit'),
'OnUpdate' => Array('self' => 'edit', 'subitem' => 'add|edit'),
'OnSetPrimary' => Array('self' => 'add|edit', 'subitem' => 'add|edit'),
@@ -944,7 +952,7 @@
function OnEdit(&$event)
{
$this->StoreSelectedIDs($event);
-
+
$temp =& $this->Application->recallObject($event->getPrefixSpecial().'_TempHandler', 'kTempTablesHandler');
$temp->PrepareEdit();
@@ -1114,7 +1122,7 @@
$this->Application->setUnitOption($event->Prefix,'AutoLoad',false);
$object =& $event->getObject();
-
+
$temp =& $this->Application->recallObject($event->Prefix.'_TempHandler', 'kTempTablesHandler');
$temp->PrepareEdit();
Index: trunk/core/kernel/utility/event.php
===================================================================
diff -u -r4670 -r4689
--- trunk/core/kernel/utility/event.php (.../event.php) (revision 4670)
+++ trunk/core/kernel/utility/event.php (.../event.php) (revision 4689)
@@ -287,11 +287,11 @@
return $perm_section;
}
- $main_prefix = $this->Application->GetTopmostPrefix($this->Prefix);
- $section = $this->Application->getUnitOption($main_prefix.'.main', 'PermSection');
+ $top_prefix = $this->getEventParam('top_prefix');
+ $section = $this->Application->getUnitOption($top_prefix.'.main', 'PermSection');
if (!$section) {
- trigger_error('Permission section not specified for prefix '.$main_prefix.'', E_USER_ERROR);
+ trigger_error('Permission section not specified for prefix '.$top_prefix.'', E_USER_ERROR);
}
return $section;
}