Index: trunk/kernel/admin_templates/incs/ajax.js =================================================================== diff -u -N -r5110 -r5302 --- trunk/kernel/admin_templates/incs/ajax.js (.../ajax.js) (revision 5110) +++ trunk/kernel/admin_templates/incs/ajax.js (.../ajax.js) (revision 5302) @@ -121,26 +121,8 @@ /*$div.style.border = '1px solid green'; $div.style.backgroundColor = '#FF0000';*/ - $div.innerHTML = '
'+Request.progressText+'
'+escape(Request.progressText)+'
'; - - /*var $table = addElement($div, 'table'); - $table.style.width = '100%'; - $table.style.height = '100%'; - var $tbody = addElement($table, 'tbody'); - var $row = addElement($tbody, 'tr'); - var $cell = addElement($row, 'td'); - $cell.style.textAlign = 'center'; - - $cell.appendChild( document.createTextNode(Request.progressText) ); - addElement($cell, 'br'); - - var $img = addElement($cell, 'img'); - $img.src = 'img/ajax_progress.gif'; - $img.align = 'absmiddle'; - $img.width = 100; - $img.height = 7; - $img.alt = Request.progressText;*/ - + var $image_base = img_path.replace('#MODULE#', 'kernel'); + $div.innerHTML = '
'+Request.progressText+'
'+escape(Request.progressText)+'
'; return $div; } Index: trunk/core/admin_templates/categories/categories_edit_permissions.tpl =================================================================== diff -u -N -r5296 -r5302 --- trunk/core/admin_templates/categories/categories_edit_permissions.tpl (.../categories_edit_permissions.tpl) (revision 5296) +++ trunk/core/admin_templates/categories/categories_edit_permissions.tpl (.../categories_edit_permissions.tpl) (revision 5302) @@ -1,7 +1,7 @@ - + @@ -24,33 +24,34 @@ // ActivePrefix not set or has non-existing prefix value this.ActivePrefix = this.TabRegistry[0]['prefix']; } - this.go_to_group(); + Grids['g'].SelectFirst(); } Catalog.prototype.go_to_group = function($group_id) { if (!isset($group_id)) { $group_id = 0; // gets current group } else { - set_hidden_field('group_id', $group_id); + set_hidden_field('current_group_id', $group_id); } this.switchTab(); // refresh current item tab } Catalog.prototype.refreshTab = function($prefix, $div_id) { - var $group_id = get_hidden_field('group_id'); + var $group_id = get_hidden_field('current_group_id'); +// alert('refreshTab. GroupID: '+$group_id); var $tab_group_id = document.getElementById($div_id).getAttribute('group_id'); if ($group_id != $tab_group_id) { // query tab content only in case if not queried or category don't match var $url = this.URLMask.replace('#ITEM_PREFIX#', $prefix).replace('#GROUP_ID#', $group_id); this.BusyRequest[$prefix] = false; - alert('quering_url: '+$url); + Request.makeRequest($url, this.BusyRequest[$prefix], $div_id, this.successCallback, this.errorCallback, $div_id, this); } - else { + /*else { alert('refresh disabled = {tab: '+this.ActivePrefix+'; group_id: '+$group_id+'}'); - } + }*/ } // adds information about tab to tab_registry @@ -64,6 +65,14 @@ this.TabRegistry[$index]['index'] = $index; } + Catalog.prototype.submit_event = function($prefix_special, $event, $t) { + if (isset($event)) set_hidden_field('events[' + $prefix_special + ']', $event); + if (isset($t)) set_hidden_field('t', $t); + + var $tab_id = this.queryTabRegistry('prefix', this.ActivePrefix, 'tab_id'); + this.submit_kernel_form($tab_id); + } + var $PermManager = new Catalog('', 'permmanager_'); a_toolbar = new ToolBar(); @@ -150,20 +159,19 @@ } Grids['g'].OnUnSelect = function ($id) { - /*set_hidden_field('group_id', $id); + set_hidden_field('group_id', $id); set_hidden_field('item_prefix', $PermManager.ActivePrefix); - $PermManager.submit_event($PermManager.ActivePrefix, 'OnPreSave', 'categories/permissions_tab');*/ + $PermManager.submit_event('c', 'OnPreSave', 'categories/permissions_tab'); } - Grids['g'].SelectFirst = function ($id) { + Grids['g'].SelectFirst = function () { for (var $i in this.Items) { this.Items[$i].Select(); break; } } Grids['g'].RadioMode = true; - Grids['g'].SelectFirst(); \ No newline at end of file Index: trunk/kernel/admin_templates/categories/categories_edit_permissions.tpl =================================================================== diff -u -N -r5296 -r5302 --- trunk/kernel/admin_templates/categories/categories_edit_permissions.tpl (.../categories_edit_permissions.tpl) (revision 5296) +++ trunk/kernel/admin_templates/categories/categories_edit_permissions.tpl (.../categories_edit_permissions.tpl) (revision 5302) @@ -1,7 +1,7 @@ - + @@ -24,33 +24,34 @@ // ActivePrefix not set or has non-existing prefix value this.ActivePrefix = this.TabRegistry[0]['prefix']; } - this.go_to_group(); + Grids['g'].SelectFirst(); } Catalog.prototype.go_to_group = function($group_id) { if (!isset($group_id)) { $group_id = 0; // gets current group } else { - set_hidden_field('group_id', $group_id); + set_hidden_field('current_group_id', $group_id); } this.switchTab(); // refresh current item tab } Catalog.prototype.refreshTab = function($prefix, $div_id) { - var $group_id = get_hidden_field('group_id'); + var $group_id = get_hidden_field('current_group_id'); +// alert('refreshTab. GroupID: '+$group_id); var $tab_group_id = document.getElementById($div_id).getAttribute('group_id'); if ($group_id != $tab_group_id) { // query tab content only in case if not queried or category don't match var $url = this.URLMask.replace('#ITEM_PREFIX#', $prefix).replace('#GROUP_ID#', $group_id); this.BusyRequest[$prefix] = false; - alert('quering_url: '+$url); + Request.makeRequest($url, this.BusyRequest[$prefix], $div_id, this.successCallback, this.errorCallback, $div_id, this); } - else { + /*else { alert('refresh disabled = {tab: '+this.ActivePrefix+'; group_id: '+$group_id+'}'); - } + }*/ } // adds information about tab to tab_registry @@ -64,6 +65,14 @@ this.TabRegistry[$index]['index'] = $index; } + Catalog.prototype.submit_event = function($prefix_special, $event, $t) { + if (isset($event)) set_hidden_field('events[' + $prefix_special + ']', $event); + if (isset($t)) set_hidden_field('t', $t); + + var $tab_id = this.queryTabRegistry('prefix', this.ActivePrefix, 'tab_id'); + this.submit_kernel_form($tab_id); + } + var $PermManager = new Catalog('', 'permmanager_'); a_toolbar = new ToolBar(); @@ -150,20 +159,19 @@ } Grids['g'].OnUnSelect = function ($id) { - /*set_hidden_field('group_id', $id); + set_hidden_field('group_id', $id); set_hidden_field('item_prefix', $PermManager.ActivePrefix); - $PermManager.submit_event($PermManager.ActivePrefix, 'OnPreSave', 'categories/permissions_tab');*/ + $PermManager.submit_event('c', 'OnPreSave', 'categories/permissions_tab'); } - Grids['g'].SelectFirst = function ($id) { + Grids['g'].SelectFirst = function () { for (var $i in this.Items) { this.Items[$i].Select(); break; } } Grids['g'].RadioMode = true; - Grids['g'].SelectFirst(); \ No newline at end of file Index: trunk/core/admin_templates/categories/permissions_tab.tpl =================================================================== diff -u -N -r5296 -r5302 --- trunk/core/admin_templates/categories/permissions_tab.tpl (.../permissions_tab.tpl) (revision 5296) +++ trunk/core/admin_templates/categories/permissions_tab.tpl (.../permissions_tab.tpl) (revision 5302) @@ -4,15 +4,23 @@ document.getElementById('_div').setAttribute('group_id', ); #separator# + "> works - +
+ + + + + +
+ from ajax [prefix: ]; [group_id: ] \ No newline at end of file Index: trunk/kernel/admin_templates/incs/grid.js =================================================================== diff -u -N -r5257 -r5302 --- trunk/kernel/admin_templates/incs/grid.js (.../grid.js) (revision 5257) +++ trunk/kernel/admin_templates/incs/grid.js (.../grid.js) (revision 5302) @@ -155,8 +155,11 @@ this.Toggle() } else { - this.Grid.ClearSelection(null,'GridItem.Click'); - this.Toggle(); + if (!(this.Grid.RadioMode && this.Grid.LastSelectedId == this.ItemId)) { + // don't clear selection if item same as current is selected + this.Grid.ClearSelection(null,'GridItem.Click'); + this.Toggle(); + } } } this.Grid.CheckDependencies(); Index: trunk/kernel/admin_templates/categories/permissions_tab.tpl =================================================================== diff -u -N -r5296 -r5302 --- trunk/kernel/admin_templates/categories/permissions_tab.tpl (.../permissions_tab.tpl) (revision 5296) +++ trunk/kernel/admin_templates/categories/permissions_tab.tpl (.../permissions_tab.tpl) (revision 5302) @@ -4,15 +4,23 @@ document.getElementById('_div').setAttribute('group_id', ); #separator# + "> works - +
+ + + + + +
+ from ajax [prefix: ]; [group_id: ] \ No newline at end of file Index: trunk/kernel/units/permissions/permissions_event_handler.php =================================================================== diff -u -N -r5206 -r5302 --- trunk/kernel/units/permissions/permissions_event_handler.php (.../permissions_event_handler.php) (revision 5206) +++ trunk/kernel/units/permissions/permissions_event_handler.php (.../permissions_event_handler.php) (revision 5302) @@ -3,11 +3,34 @@ class PermissionsEventHandler extends InpDBEventHandler { /** + * Save category permissions + * + * @param kEvent $event + */ + function OnCategorySavePermissions(&$event) + { + $group_id = $this->Application->GetVar('group_id'); + $permissions = $this->Application->GetVar($event->getPrefixSpecial(true)); + if (isset($permissions[$group_id])) { + $permissions = $permissions[$group_id]; + + + + + + + } + + $event->MasterEvent->SetRedirectParam('item_prefix', $this->Application->GetVar('item_prefix')); + $event->MasterEvent->SetRedirectParam('group_id', $this->Application->GetVar('group_id')); + } + + /** * Saves permissions while editing group * * @param kEvent $event */ - function OnSavePermissions(&$event) + function OnGroupSavePermissions(&$event) { $permissions = $this->Application->GetVar($event->getPrefixSpecial(true)); if (!$permissions) { Index: trunk/core/units/permissions/permissions_config.php =================================================================== diff -u -N -r4790 -r5302 --- trunk/core/units/permissions/permissions_config.php (.../permissions_config.php) (revision 4790) +++ trunk/core/units/permissions/permissions_config.php (.../permissions_config.php) (revision 5302) @@ -8,32 +8,45 @@ 'TagProcessorClass' => Array('class'=>'PermissionsTagProcessor','file'=>'permissions_tag_processor.php','build_event'=>'OnBuild'), 'AutoLoad' => true, - 'Hooks' => Array( - Array( - 'Mode' => hAFTER, - 'Conditional' => true, - 'HookToPrefix' => '#PARENT#', - 'HookToSpecial' => '*', - 'HookToEvent' => Array('OnPreSave'), - 'DoPrefix' => '', - 'DoSpecial' => '*', - 'DoEvent' => 'OnSavePermissions', - ), - ), - 'Clones' => Array( 'c-perm' => Array( 'Constrain' => 'Type = 0', // non-system 'ParentPrefix' => 'c', 'ForeignKey' => 'CatId', 'ParentTableKey' => 'CategoryId', + + 'Hooks' => Array( + Array( + 'Mode' => hAFTER, + 'Conditional' => true, + 'HookToPrefix' => '#PARENT#', + 'HookToSpecial' => '*', + 'HookToEvent' => Array('OnPreSave'), + 'DoPrefix' => '', + 'DoSpecial' => '*', + 'DoEvent' => 'OnCategorySavePermissions', + ), + ), ), 'g-perm' => Array( 'Constrain' => 'Type = 1', // system 'ParentPrefix' => 'g', 'ForeignKey' => 'GroupId', 'ParentTableKey' => 'GroupId', + + 'Hooks' => Array( + Array( + 'Mode' => hAFTER, + 'Conditional' => true, + 'HookToPrefix' => '#PARENT#', + 'HookToSpecial' => '*', + 'HookToEvent' => Array('OnPreSave'), + 'DoPrefix' => '', + 'DoSpecial' => '*', + 'DoEvent' => 'OnGroupSavePermissions', + ), + ), ), ), Index: trunk/core/units/permissions/permissions_event_handler.php =================================================================== diff -u -N -r5206 -r5302 --- trunk/core/units/permissions/permissions_event_handler.php (.../permissions_event_handler.php) (revision 5206) +++ trunk/core/units/permissions/permissions_event_handler.php (.../permissions_event_handler.php) (revision 5302) @@ -3,11 +3,34 @@ class PermissionsEventHandler extends InpDBEventHandler { /** + * Save category permissions + * + * @param kEvent $event + */ + function OnCategorySavePermissions(&$event) + { + $group_id = $this->Application->GetVar('group_id'); + $permissions = $this->Application->GetVar($event->getPrefixSpecial(true)); + if (isset($permissions[$group_id])) { + $permissions = $permissions[$group_id]; + + + + + + + } + + $event->MasterEvent->SetRedirectParam('item_prefix', $this->Application->GetVar('item_prefix')); + $event->MasterEvent->SetRedirectParam('group_id', $this->Application->GetVar('group_id')); + } + + /** * Saves permissions while editing group * * @param kEvent $event */ - function OnSavePermissions(&$event) + function OnGroupSavePermissions(&$event) { $permissions = $this->Application->GetVar($event->getPrefixSpecial(true)); if (!$permissions) { Index: trunk/kernel/units/permissions/permissions_config.php =================================================================== diff -u -N -r4790 -r5302 --- trunk/kernel/units/permissions/permissions_config.php (.../permissions_config.php) (revision 4790) +++ trunk/kernel/units/permissions/permissions_config.php (.../permissions_config.php) (revision 5302) @@ -8,32 +8,45 @@ 'TagProcessorClass' => Array('class'=>'PermissionsTagProcessor','file'=>'permissions_tag_processor.php','build_event'=>'OnBuild'), 'AutoLoad' => true, - 'Hooks' => Array( - Array( - 'Mode' => hAFTER, - 'Conditional' => true, - 'HookToPrefix' => '#PARENT#', - 'HookToSpecial' => '*', - 'HookToEvent' => Array('OnPreSave'), - 'DoPrefix' => '', - 'DoSpecial' => '*', - 'DoEvent' => 'OnSavePermissions', - ), - ), - 'Clones' => Array( 'c-perm' => Array( 'Constrain' => 'Type = 0', // non-system 'ParentPrefix' => 'c', 'ForeignKey' => 'CatId', 'ParentTableKey' => 'CategoryId', + + 'Hooks' => Array( + Array( + 'Mode' => hAFTER, + 'Conditional' => true, + 'HookToPrefix' => '#PARENT#', + 'HookToSpecial' => '*', + 'HookToEvent' => Array('OnPreSave'), + 'DoPrefix' => '', + 'DoSpecial' => '*', + 'DoEvent' => 'OnCategorySavePermissions', + ), + ), ), 'g-perm' => Array( 'Constrain' => 'Type = 1', // system 'ParentPrefix' => 'g', 'ForeignKey' => 'GroupId', 'ParentTableKey' => 'GroupId', + + 'Hooks' => Array( + Array( + 'Mode' => hAFTER, + 'Conditional' => true, + 'HookToPrefix' => '#PARENT#', + 'HookToSpecial' => '*', + 'HookToEvent' => Array('OnPreSave'), + 'DoPrefix' => '', + 'DoSpecial' => '*', + 'DoEvent' => 'OnGroupSavePermissions', + ), + ), ), ),