Index: trunk/kernel/admin_templates/user_selector.tpl =================================================================== diff -u -N -r4457 -r4674 --- trunk/kernel/admin_templates/user_selector.tpl (.../user_selector.tpl) (revision 4457) +++ trunk/kernel/admin_templates/user_selector.tpl (.../user_selector.tpl) (revision 4674) @@ -5,8 +5,6 @@ - - Index: trunk/kernel/admin_templates/groups/permissions_selector.tpl =================================================================== diff -u -N -r4627 -r4674 --- trunk/kernel/admin_templates/groups/permissions_selector.tpl (.../permissions_selector.tpl) (revision 4627) +++ trunk/kernel/admin_templates/groups/permissions_selector.tpl (.../permissions_selector.tpl) (revision 4674) @@ -7,8 +7,6 @@ - -
Index: trunk/core/admin_templates/groups/permissions_selector.tpl =================================================================== diff -u -N -r4627 -r4674 --- trunk/core/admin_templates/groups/permissions_selector.tpl (.../permissions_selector.tpl) (revision 4627) +++ trunk/core/admin_templates/groups/permissions_selector.tpl (.../permissions_selector.tpl) (revision 4674) @@ -7,8 +7,6 @@ - -
Index: trunk/kernel/units/languages/languages_event_handler.php =================================================================== diff -u -N -r4637 -r4674 --- trunk/kernel/units/languages/languages_event_handler.php (.../languages_event_handler.php) (revision 4637) +++ trunk/kernel/units/languages/languages_event_handler.php (.../languages_event_handler.php) (revision 4674) @@ -20,9 +20,6 @@ $this->permMapping = array_merge($this->permMapping, $permissions); } - - - /** * Updates table structure on new language adding/removing language * Index: trunk/core/units/languages/languages_event_handler.php =================================================================== diff -u -N -r4637 -r4674 --- trunk/core/units/languages/languages_event_handler.php (.../languages_event_handler.php) (revision 4637) +++ trunk/core/units/languages/languages_event_handler.php (.../languages_event_handler.php) (revision 4674) @@ -20,9 +20,6 @@ $this->permMapping = array_merge($this->permMapping, $permissions); } - - - /** * Updates table structure on new language adding/removing language * Index: trunk/kernel/admin_templates/category_selector.tpl =================================================================== diff -u -N -r4457 -r4674 --- trunk/kernel/admin_templates/category_selector.tpl (.../category_selector.tpl) (revision 4457) +++ trunk/kernel/admin_templates/category_selector.tpl (.../category_selector.tpl) (revision 4674) @@ -7,8 +7,6 @@ - -
Index: trunk/kernel/admin_templates/popups/translator.tpl =================================================================== diff -u -N -r4457 -r4674 --- trunk/kernel/admin_templates/popups/translator.tpl (.../translator.tpl) (revision 4457) +++ trunk/kernel/admin_templates/popups/translator.tpl (.../translator.tpl) (revision 4674) @@ -52,8 +52,6 @@ - -
Index: trunk/kernel/units/email_events/email_events_event_handler.php =================================================================== diff -u -N -r4322 -r4674 --- trunk/kernel/units/email_events/email_events_event_handler.php (.../email_events_event_handler.php) (revision 4322) +++ trunk/kernel/units/email_events/email_events_event_handler.php (.../email_events_event_handler.php) (revision 4674) @@ -4,6 +4,41 @@ { /** + * Allows to override standart permission mapping + * + */ + function mapPermissions() + { + parent::mapPermissions(); + $permissions = Array( + 'OnFrontOnly' => Array('self' => 'edit'), + 'OnSaveSelected' => Array('self' => 'add|edit'), + ); + $this->permMapping = array_merge($this->permMapping, $permissions); + } + + /** + * Changes permission section to one from REQUEST, not from config + * + * @param kEvent $event + */ + function CheckPermission(&$event) + { + $module = $this->Application->GetVar('module'); + $module = explode(':', $module, 2); + if (count($module) == 1) { + $main_prefix = $this->Application->findModule('Name', $module[0], 'Var'); + } + else { + $exceptions = Array('Category' => 'c', 'Users' => 'u'); + $main_prefix = $exceptions[ $module[1] ]; + } + $section = $this->Application->getUnitOption($main_prefix.'.email', 'PermSection'); + $event->setEventParam('PermSection', $section); + return parent::CheckPermission($event); + } + + /** * Apply any custom changes to list's sql query * * @param kEvent $event @@ -26,12 +61,12 @@ */ function OnFrontOnly(&$event) { - $this->StoreSelectedIDs($event); - $ids = $this->getSelectedIDs($event); - $ids = implode(',', $ids); + $ids = implode(',', $this->StoreSelectedIDs($event)); - $table = $this->Application->getUnitOption($event->Prefix,'TableName'); - $sql = 'UPDATE '.$table.' SET Enabled = 2 WHERE EventId IN ('.$ids.')'; + $table_name = $this->Application->getUnitOption($event->Prefix, 'TableName'); + $sql = 'UPDATE '.$table_name.' + SET Enabled = 2 + WHERE EventId IN ('.$ids.')'; $this->Conn->Query($sql); } @@ -42,23 +77,33 @@ */ function OnSelectUser(&$event) { - $user_name = $this->Application->GetVar( $event->getPrefixSpecial(true).'_PopupSelectedUser' ); - if( strlen($user_name) > 0 ) - { - $this->StoreSelectedIDs($event); - $ids = $this->getSelectedIDs($event); - $ids = implode(',', $ids); + $items_info = $this->Application->GetVar('u'); + if ($items_info) { + $user_id = array_shift( array_keys($items_info) ); - $user_id = $this->Conn->GetOne('SELECT PortalUserId FROM '.TABLE_PREFIX.'PortalUser WHERE Login = '.$this->Conn->qstr($user_name) ); - - $table = $this->Application->getUnitOption($event->Prefix,'TableName'); - $sql = 'UPDATE '.$table.' SET FromUserId = '.$user_id.' WHERE EventId IN ('.$ids.')'; - + $ids = $this->Application->RecallVar($event->getPrefixSpecial().'_selected_ids'); + $id_field = $this->Application->getUnitOption($event->Prefix, 'IDField'); + $table_name = $this->Application->getUnitOption($event->Prefix, 'TableName'); + $sql = 'UPDATE '.$table_name.' + SET '.$this->Application->RecallVar('dst_field').' = '.$user_id.' + WHERE '.$id_field.' IN ('.$ids.')'; $this->Conn->Query($sql); } + + $this->finalizePopup($event); } /** + * Saves selected ids to session + * + * @param kEvent $event + */ + function OnSaveSelected(&$event) + { + $this->StoreSelectedIDs($event); + } + + /** * Raised when email message shoul be sent * * @param kEvent $event Index: trunk/core/kernel/application.php =================================================================== diff -u -N -r4653 -r4674 --- trunk/core/kernel/application.php (.../application.php) (revision 4653) +++ trunk/core/kernel/application.php (.../application.php) (revision 4674) @@ -537,9 +537,18 @@ $this->Debugger->appendMemoryUsage('Application before Run:'); } - $this->LinkVar('module'); - $this->LinkVar('section'); + if ($this->IsAdmin()) { + // for permission checking in events & templates + $this->LinkVar('module'); // for common configuration templates + $this->LinkVar('section'); // for common configuration templates + if ($this->GetVar('m_opener') == 'p') { + $this->LinkVar('main_prefix'); // window prefix, that opened selector + $this->LinkVar('dst_field'); // field to set value choosed in selector + $this->LinkVar('return_template'); // template to go, when something was coosen from popup (from finalizePopup) + } + } + if (!$this->RequestProcessed) $this->ProcessRequest(); $this->InitParser(); Index: trunk/core/units/email_events/email_events_event_handler.php =================================================================== diff -u -N -r4322 -r4674 --- trunk/core/units/email_events/email_events_event_handler.php (.../email_events_event_handler.php) (revision 4322) +++ trunk/core/units/email_events/email_events_event_handler.php (.../email_events_event_handler.php) (revision 4674) @@ -4,6 +4,41 @@ { /** + * Allows to override standart permission mapping + * + */ + function mapPermissions() + { + parent::mapPermissions(); + $permissions = Array( + 'OnFrontOnly' => Array('self' => 'edit'), + 'OnSaveSelected' => Array('self' => 'add|edit'), + ); + $this->permMapping = array_merge($this->permMapping, $permissions); + } + + /** + * Changes permission section to one from REQUEST, not from config + * + * @param kEvent $event + */ + function CheckPermission(&$event) + { + $module = $this->Application->GetVar('module'); + $module = explode(':', $module, 2); + if (count($module) == 1) { + $main_prefix = $this->Application->findModule('Name', $module[0], 'Var'); + } + else { + $exceptions = Array('Category' => 'c', 'Users' => 'u'); + $main_prefix = $exceptions[ $module[1] ]; + } + $section = $this->Application->getUnitOption($main_prefix.'.email', 'PermSection'); + $event->setEventParam('PermSection', $section); + return parent::CheckPermission($event); + } + + /** * Apply any custom changes to list's sql query * * @param kEvent $event @@ -26,12 +61,12 @@ */ function OnFrontOnly(&$event) { - $this->StoreSelectedIDs($event); - $ids = $this->getSelectedIDs($event); - $ids = implode(',', $ids); + $ids = implode(',', $this->StoreSelectedIDs($event)); - $table = $this->Application->getUnitOption($event->Prefix,'TableName'); - $sql = 'UPDATE '.$table.' SET Enabled = 2 WHERE EventId IN ('.$ids.')'; + $table_name = $this->Application->getUnitOption($event->Prefix, 'TableName'); + $sql = 'UPDATE '.$table_name.' + SET Enabled = 2 + WHERE EventId IN ('.$ids.')'; $this->Conn->Query($sql); } @@ -42,23 +77,33 @@ */ function OnSelectUser(&$event) { - $user_name = $this->Application->GetVar( $event->getPrefixSpecial(true).'_PopupSelectedUser' ); - if( strlen($user_name) > 0 ) - { - $this->StoreSelectedIDs($event); - $ids = $this->getSelectedIDs($event); - $ids = implode(',', $ids); + $items_info = $this->Application->GetVar('u'); + if ($items_info) { + $user_id = array_shift( array_keys($items_info) ); - $user_id = $this->Conn->GetOne('SELECT PortalUserId FROM '.TABLE_PREFIX.'PortalUser WHERE Login = '.$this->Conn->qstr($user_name) ); - - $table = $this->Application->getUnitOption($event->Prefix,'TableName'); - $sql = 'UPDATE '.$table.' SET FromUserId = '.$user_id.' WHERE EventId IN ('.$ids.')'; - + $ids = $this->Application->RecallVar($event->getPrefixSpecial().'_selected_ids'); + $id_field = $this->Application->getUnitOption($event->Prefix, 'IDField'); + $table_name = $this->Application->getUnitOption($event->Prefix, 'TableName'); + $sql = 'UPDATE '.$table_name.' + SET '.$this->Application->RecallVar('dst_field').' = '.$user_id.' + WHERE '.$id_field.' IN ('.$ids.')'; $this->Conn->Query($sql); } + + $this->finalizePopup($event); } /** + * Saves selected ids to session + * + * @param kEvent $event + */ + function OnSaveSelected(&$event) + { + $this->StoreSelectedIDs($event); + } + + /** * Raised when email message shoul be sent * * @param kEvent $event Index: trunk/core/kernel/db/db_event_handler.php =================================================================== diff -u -N -r4653 -r4674 --- trunk/core/kernel/db/db_event_handler.php (.../db_event_handler.php) (revision 4653) +++ trunk/core/kernel/db/db_event_handler.php (.../db_event_handler.php) (revision 4674) @@ -83,7 +83,9 @@ 'OnUpdate' => Array('self' => 'edit', 'subitem' => 'add|edit'), 'OnDelete' => Array('self' => 'delete', 'subitem' => 'edit|add'), 'OnMassDelete' => Array('self' => 'delete', 'subitem' => 'edit|add'), + 'OnSelectItems' => Array('self' => 'add|edit', 'subitem' => 'add|edit'), + 'OnSelectUser' => Array('self' => 'add|edit', 'subitem' => 'add|edit'), 'OnMassApprove' => Array('self' => 'advanced:approve|add|edit', 'subitem' => 'advanced:approve|add|edit'), 'OnMassDecline' => Array('self' => 'advanced:decline|add|edit', 'subitem' => 'advanced:decline|add|edit'), Index: trunk/core/admin_templates/stylesheets/style_editor.tpl =================================================================== diff -u -N -r4457 -r4674 --- trunk/core/admin_templates/stylesheets/style_editor.tpl (.../style_editor.tpl) (revision 4457) +++ trunk/core/admin_templates/stylesheets/style_editor.tpl (.../style_editor.tpl) (revision 4674) @@ -5,8 +5,6 @@ - -