Fixed grp_tree to work with Dojo 1.6.
authorJoseph Lewis <joehms22@gmail.com>
Mon, 18 Jun 2012 21:07:05 +0000 (15:07 -0600)
committerThomas Berezansky <tsbere@mvlc.org>
Wed, 10 Oct 2012 14:22:37 +0000 (10:22 -0400)
Signed-off-by: Joseph Lewis <joehms22@gmail.com>
Signed-off-by: Thomas Berezansky <tsbere@mvlc.org>
Open-ILS/web/conify/global/permission/grp_tree.html
Open-ILS/web/conify/global/permission/grp_tree.js

index ac2026f..4567900 100644 (file)
@@ -22,7 +22,8 @@
                <title>&conify.grp_tree.group_tree.title;</title>
 
                <style type="text/css">
-                       @import url('/js/dojo/dojox/grid/_grid/tundraGrid.css');
+                       @import url('/js/dojo/dojox/grid/resources/Grid.css');
+                       @import url('/js/dojo/dojox/grid/resources/tundraGrid.css');
                        @import url('/js/dojo/dojo/resources/dojo.css');
                        @import url('/js/dojo/dijit/themes/tundra/tundra.css');
                        @import url('/js/dojo/dojox/widget/Toaster/Toaster.css');
                 width: 75%;
                 height: 100%;
             }
-
+            
+                       .dojoxGrid table {
+                               margin: 0;
+                         }
                </style>
 
                <!-- The OpenSRF API writ JS -->
-               <script language='javascript' src='/IDL2js' type='text/javascript'></script>
-               <script language='javascript' src='/opac/common/js/utils.js' type='text/javascript'></script>
-               <script language='javascript' src='/opac/common/js/CGI.js' type='text/javascript'></script>
-               <script language='javascript' src='/opac/common/js/JSON_v1.js' type='text/javascript'></script>
+               <script src='/IDL2js' type='text/javascript'></script>
+               <script src='/opac/common/js/utils.js' type='text/javascript'></script>
+               <script src='/opac/common/js/CGI.js' type='text/javascript'></script>
+               <script src='/opac/common/js/JSON_v1.js' type='text/javascript'></script>
 
                <!-- Dojo goodness -->
                <script type="text/javascript" src="../admin.js"></script>
                <script type="text/javascript" src="/js/dojo/dojo/dojo.js"></script>
-               <script type="text/javascript" src="/js/dojo/dojo/openils_dojo.js"></script>
+               <script type="text/javascript" src="/js/dojo/dojo/openils_dojo.js"></script>
                <script type="text/javascript" src="/js/dojo/dijit/dijit.js"></script>
 
                <script type="text/javascript" src="grp_tree.js"></script>
 
-        <script type="text/javascript"><![CDATA[
-            var dirtyStore = [];
-            var current_group;
-
-            var _group_list = server.pcrud.retrieveAll('pgt', { order_by : { pgt : 'name' } });
-            var _group_data = pgt.toStoreData( _group_list );
-            var group_store = new dojo.data.ItemFileWriteStore({ data : _group_data });
-
-            group_store.onSet = function (item, attr, o, n) {
-                if (attr == 'ischanged') return;
-                if (n == o) return;
-                this.setValue( item, 'ischanged', 1);
-            };
-
-            dojo.addOnUnload( function (event) {
-
-                group_store.fetch({
-                    query : { ischanged : 1 },
-                    queryOptions : { deep : true },
-                    onItem : function (item, req) { try { if (this.isItem( item )) dirtyStore.push( item ); } catch (e) { /* meh */ } },
-                    scope : group_store
-                });
-
-                if (dirtyStore.length > 0) {
-                    var confirmation = confirm( pgt_strings.CONFIRM_EXIT_PGT );
-
-                    if (confirmation) {
-                        for (var i in dirtyStore) {
-                            current_group = dirtyStore[i];
-                            save_group(true);
-                        }
-                    }
-                }
-
-            });
-
-            var _ou_type_list = server.pcrud.retrieveAll('aout', { order_by : { aout : 'depth' } });
-            var _ou_type_data = aout.toStoreData( _ou_type_list );
-            var ou_type_store = new dojo.data.ItemFileReadStore({ data : _ou_type_data });
-
-            var _perm_list = server.pcrud.retrieveAll('ppl', { order_by : { ppl : 'code' } });
-            var _perm_data = ppl.toStoreData( _perm_list, 'code' );
-            var _perm_name_data = ppl.toStoreData( _perm_list, 'code', { identifier : 'code' } );
-
-            var perm_store = new dojo.data.ItemFileWriteStore({ data : _perm_data });
-            var perm_name_store = new dojo.data.ItemFileWriteStore({ data : _perm_name_data });
-
-            var _perm_map_list = server.pcrud.retrieveAll('pgpm');
-            var _perm_map_data = pgpm.toStoreData( _perm_map_list, 'id' );
-            var perm_map_store = new dojo.data.ItemFileWriteStore({ data : _perm_map_data });
-
-            perm_map_store.onSet = function (item, attr, o, n) {
-                if (attr == 'ischanged') return;
-                if (n == o) return;
-
-                this.setValue( item, 'ischanged', 1);
-
-                if (attr == 'grantable' && (typeof (n) != 'string'))
-                    this.setValue(item, 'grantable', n ? 't' : 'f');
-            }
-
-            dojo.addOnUnload( function (event) { save_them_all(); });
-
-        ]]></script>
 
        </head>
 
                                  minSize="200"
                                  jsId="group_tree"
                                >
-
-                                       <script type="dojo/method" event="onClick" args="item,node">
-<![CDATA[
-                                               right_pane_toggler.show();
-
-                                               current_group = item;
-                                               window.current_fm_group = new pgt().fromStoreItem(item);
-
-                                               perm_map_model.query = { grp : current_group ? group_store.getValue(current_group,'id') : -1 };
-                                               perm_map_model.refresh();
-                                               perm_grid.refresh();
-
-                                               highlighter.editor_pane.green.play();
-                                               status_update( dojo.string.substitute( pgt_strings.STATUS_EDITING, [this.store.getValue( item, 'name' )]) );
-
-                                               new_kid_button.disabled = false;
-                                               save_group_button.disabled = false;
-                                               delete_group_button.disabled = false;
-
-                                               var main_settings_fields = [ 'name', 'perm_interval', 'description'];
-                                               for ( var i in main_settings_fields ) {
-                                                       var field = main_settings_fields[i];
-                                                       var value = this.store.getValue( current_group, field );
-
-                                                       if (!value) {
-                                                               window["editor_pane_" + field].setValue( '' ); // unset the value
-                                                               if (field != 'description') window["editor_pane_" + field].setDisplayedValue( '' ); // unset the value
-                                                       } else window["editor_pane_" + field].setValue( value );
-                                               }
-
-                                               if ( this.store.getValue( current_group, '_trueRoot' ) == 'true' ) {
-                                                       editor_pane_parent.disabled = true;
-                                                       editor_pane_parent.setValue(null);
-                                                       editor_pane_parent.setDisplayedValue('');
-                                                       editor_pane_parent.validate(false);
-                                               } else {
-                                                       editor_pane_parent.disabled = false;
-                                                       editor_pane_parent.validate(true);
-                                                       editor_pane_parent.setValue( this.store.getValue( current_group, 'parent' ) );
-                                               }
-
-                                               editor_pane_application_perm.setValue( this.store.getValue( current_group, 'application_perm' ) );
-                                               editor_pane_hold_priority.setValue( this.store.getValue( current_group, 'hold_priority' ) );
-
-                                               editor_pane_usergroup.setChecked( this.store.getValue( current_group, 'usergroup' ) == 't' ? true : false );
-]]>
-                                       </script>
-
-                                       <script type="dojo/method" event="getLabel" args="item,pI">
-                                               var label = this.store.getValue(item,'name');
-                                               if (this.store.getValue(item,'ischanged') == 1) label = '* ' + label;
-                                               return label;
-                                       </script>
-
                                </div>
                        </div>
 
                        <div id="right_pane" dojoType="dijit.layout.ContentPane"  sizeShare="300">
-                               <script type="dojo/method">
-                                       window.right_pane_toggler = new dojo.fx.Toggler({ node: 'right_pane'});
-                                       window.right_pane_toggler.hide();
-                               </script>
 
                                <div dojoType="dijit.layout.TabContainer">
                                        <div id="editor_pane" dojoType="dijit.layout.ContentPane" title="&conify.grp_tree.group_config.label;">
-                                               <script type="dojo/method">
-                                                       highlighter.group_tree = {};
-                                                       highlighter.editor_pane = {};
-                                                       highlighter.group_tree.green = dojox.fx.highlight( { color : '#B4FFB4', node : 'group_tree', duration : 500 } );
-                                                       highlighter.group_tree.red = dojox.fx.highlight( { color : '#FF2018', node : 'group_tree', duration : 500 } );
-                                                       highlighter.editor_pane.green = dojox.fx.highlight( { color : '#B4FFB4', node : 'editor_pane', duration : 500 } );
-                                                       highlighter.editor_pane.red = dojox.fx.highlight( { color : '#FF2018', node : 'editor_pane', duration : 500 } );
-                                               </script>
        
                                                <table class="tundra" style="margin:10px;">
                                                        <tr>
                                                                <th>&conify.grp_tree.group_name.label;</th>
                                                                <td>
                                                                        <span id="editor_pane_name" dojoType="dijit.form.ValidationTextBox" jsId="editor_pane_name" regExp=".+" required="true">
-                                                                               <script type="dojo/connect" event="onChange">
-                                                                                       if (current_group) {
-                                                                                               group_store.setValue( current_group, "name", this.getValue() );
-                                                                                       }
-                                                                               </script>
                                                                        </span>
                                                                        <span dojoType="openils.widget.TranslatorPopup" targetObject="current_fm_group" field="name"></span>
                                                                </td>
                                                                <th>&conify.grp_tree.permission_interval.label;</th>
                                                                <td>
                                                                        <span id="editor_pane_perm_interval" dojoType="dijit.form.ValidationTextBox" jsId="editor_pane_perm_interval" regExp="^\d+ (?:y.*|mo.*|d.*)$" required="true">
-                                                                               <script type="dojo/connect" event="onChange">
-                                                                                       if (current_group) {
-                                                                                               group_store.setValue( current_group, "perm_interval", this.getValue() );
-                                                                                       }
-                                                                               </script>
                                                                        </span>
                                                                </td>
                                                        </tr>
                                                                          searchAttr="code"
                                                                          jsId="editor_pane_application_perm"
                                                                        >
-                                                                               <script type="dojo/connect" event="onChange">
-<![CDATA[
-                                                                                       if (current_group && this.getValue()) {
-                                                                                               group_store.setValue( current_group, "application_perm", this.getValue() );
-                                                                                       }
-]]>
-                                                                               </script>
                                                                        </div>
                                                                </td>
                                                        </tr>
                                                                          dojoType="dijit.form.NumberSpinner"
                                                                          jsId="editor_pane_hold_priority"
                                                                        >
-                                                                               <script type="dojo/connect" event="onChange">
-<![CDATA[
-                                                                                       if (current_group && this.getValue()) {
-                                                                                               group_store.setValue( current_group, "hold_priority", this.getValue() );
-                                                                                       }
-]]>
-                                                                               </script>
                                                                        </div>
                                                                </td>
                                                        </tr>
                                                                          ignoreCase="true"
                                                                          required="true"
                                                                        >
-                                                                               <script type="dojo/connect" event="onChange">
-<![CDATA[
-                                                                                       if (current_group && this.getValue()) {
-                                                                                               this.store.setValue( current_group, "parent", this.getValue() );
-                                                                                       }
-]]>
-                                                                               </script>
                                                                        </div>
                                                                </td>
                                                        </tr>
                                                <div dojoType="dijit.layout.ContentPane" orientation="horizontal" style="margin-bottom: 20px;">
        
                                                        <button jsId="save_group_button" dojoType="dijit.form.Button" label="&conify.grp_tree.save_button.label;" onClick="save_group()">
-                                                               <script type="dojo/connect" event="startup">
-                                                                       this.disabled = true;
-                                                               </script>
                                                        </button>
        
                                                        <button jsId="delete_group_button" dojoType="dijit.form.Button" label="&conify.grp_tree.delete_button.label;">
-                                                               <script type="dojo/connect" event="startup">
-                                                                       this.disabled = true;
-                                                               </script>
-                                                               <script type="dojo/connect" event="onClick">
-<![CDATA[
-       
-                                                                       if (group_store.getValue( current_group, '_trueRoot' ) == 'true') {
-                                                                               highlighter.editor_pane.red.play();
-                                                                               status_update( dojo.string.substitute( pgt_strings.STATUS_ERR_DELETING, [group_store.getValue( current_group, 'name' )])  );
-                                                                               return false;
-                                                                       }
-
-                                                                       if ( current_group.children ) {
-                                                                               var kids = current_group.children;
-                                                                               if (!dojo.isArray(kids)) kids = [kids];
-       
-                                                                               var existing_kids = dojo.filter(
-                                                                                       kids,
-                                                                                       function(kid){ return kid.isdeleted[0] != 1 }
-                                                                               );
-                                                                               if ( existing_kids.length > 0) {
-                                                                                       highlighter.editor_pane.red.play();
-                                                                                       status_update( dojo.string.substitute( pgt_strings.STATUS_ERR_DELETING_DEPENDENCY, [group_store.getValue( current_group, 'name' ), existing_kids.length]) );
-                                                                                       return;
-                                                                               }
-                                                                       }
-       
-                                                                       if ( confirm( dojo.string.substitute( pgt_strings.CONFIRM_DELETE, [current_group.name]) ) ) {
-                                                                               group_store.setValue( current_group, 'isdeleted', 1 );
-       
-                                                                               var modified_pgt = new pgt().fromStoreItem( current_group );
-                                                                               modified_pgt.isdeleted( 1 );
-       
-                                                                               server.pcrud.eliminate( modified_pgt, {
-                                                                                       onerror : function (r) {
-                                                                                               highlighter.editor_pane.red.play();
-                                                                                               status_update( dojo.string.substitute( pgt_strings.CONFIRM_DELETE, [group_store.getValue( current_group, 'name' )]) );
-                                                                                       },
-                                                                                       oncomplete : function (r) {
-                                                                                               var old_name = group_store.getValue( current_group, 'name' );
-
-                                                                                               group_store.fetch({
-                                                                                                       query : { id : group_store.getValue( current_group, 'id' ) },
-                                                                                                       queryOptions : { deep : true },
-                                                                                                       onItem : function (item, req) { try { if (this.isItem( item )) this.deleteItem( item ); } catch (e) { /* meh */ } },
-                                                                                                       scope : group_store
-                                                                                               });
-
-                                                                                               current_group = null;
-
-                                                                                               new_kid_button.disabled = true;
-                                                                                               save_group_button.disabled = true;
-                                                                                               delete_group_button.disabled = true;
-               
-                                                                                               var main_settings_fields = [ 'name', 'perm_interval', 'description' ];
-                                                                                               for ( var i in main_settings_fields ) {
-                                                                                                       var field = main_settings_fields[i];
-                                                                                                       window["editor_pane_" + field].setValue( '' ); // unset the value
-                                                                                                       window["editor_pane_" + field].setDisplayedValue( '' ); // unset the value
-                                                                                               }
-
-                                                                                               window["editor_pane_usergroup"].setChecked( false ); // unset the value
-               
-                                                                                               highlighter.editor_pane.green.play();
-                                                                                               status_update( dojo.string.substitute( pgt_strings.STATUS_DELETED, [old_name]) );
-                                                                                       }
-                                                                               });
-       
-                                                                       }
-]]>    
-                                                               </script>
                                                        </button>
        
                                                </div>
        
                                                <button jsId="new_kid_button" dojoType="dijit.form.Button" label="&conify.grp_tree.new_child_button.label;">
-                                                       <script type="dojo/connect" event="startup">
-                                                               this.disabled = true;
-                                                       </script>
-                                                       <script type="dojo/connect" event="onClick">
-<![CDATA[
-       
-                                                               var new_fm_obj = new pgt().fromHash({
-                                                                       isnew                   : 1,
-                                                                       name                    : pgt_strings.LABEL_NEW_GROUP,
-                                                                       usergroup               : 'f',
-                                                                       parent                  : group_store.getValue( current_group, 'id' )
-                                                               });
-       
-                                                               var err = false;
-
-                                                               server.pcrud.create( new_fm_obj, {
-                                                                       onerror : function (r) {
-                                                                               highlighter.editor_pane.red.play();
-                                                                               status_update( pgt_strings.ERROR_CALLING_METHOD_PGT );
-                                                                               err = true;
-                                                                       },
-                                    oncomplete : function (r,list) {
-                                                                       group_store.newItem( list[0].toStoreItem(), { parent : current_group, attribute : 'children' } );
-                                    }
-                                });
-
-                                                               if (!err) {
-                                                                       highlighter.editor_pane.green.play();
-                                                                       highlighter.group_tree.green.play();
-                                                                       status_update( dojo.string.substitute( pgt_strings.SUCCESS_NEW_CHILD_GROUP, [group_store.getValue( current_group, 'name' )]) );
-                                                               }
-]]>    
-                                                       </script>
                                                </button>
        
                                        </div>
 
-                                       <div id="perm_pane" dojoType="dijit.layout.ContentPane" title="&conify.grp_tree.group_permissions.title;">
-                                               <script type="dojo/connect" event="onShow">
-                                                       perm_map_model.query = { grp : current_group ? group_store.getValue(current_group,'id') : -1 };
-                                                       perm_map_model.refresh();
-                                                       perm_grid.refresh();
-                                               </script>
+                                       <div id="perm_pane" jsId="perm_pane" dojoType="dijit.layout.ContentPane" title="&conify.grp_tree.group_permissions.title;">
                                                <div dojoType="dijit.layout.LayoutContainer" orientation="horizontal" style="width:100%; height:100%;">
                                                        <div id="grid_container" dojoType="dijit.layout.ContentPane" sizeShare="1" layoutAlign="left">
-                                                               <div dojoType="dojox.grid.data.DojoData" id="perm_map_model" jsId="perm_map_model" store="perm_map_store"></div>
-       
-                                                               <div id="perm_grid" dojoType="dojox.Grid" model="perm_map_model" jsId="perm_grid">
-                                                                       <script type="dojo/connect" event="startup">
-<![CDATA[
-                                                                               function get_item_part(model_field, item_search_field, item_part, model, store, datum, row) {
-                                                                                       var formatter = true;
-       
-                                                                                       if (!row && row != '0') {
-                                                                                               row = datum;
-                                                                                               formatter = false;
-                                                                                       }
-       
-                                                                                       if(!model.getRow(row)) return null;
-                                                                                       var value = null;
-       
-                                                                                       if(!formatter) { //this.editor && (this.editor.alwaysOn || (this.grid.edit.info.rowIndex==row && this.grid.edit.info.cell==this))) {
-                                                                                               return model.getRow(row)[model_field];
-                                                                                       }
-       
-                                                                                       var q = {};
-                                                                                       q[item_search_field] = model.getRow(row)[model_field];
-       
-                                                                                       store.fetch({
-                                                                                               query : q,
-                                                                                               onItem : function (item) { value = store.getValue( item, item_part ) }
-                                                                                       });
-
-                                                                                       return value;
-                                                                               }
-       
-                                                   window.current_perm_grid_layout = [
-                                                       {   cells : [
-                                                                   [
-                                                                           {   name : pgt_strings.LABEL_CODE,
-                                                                                                                       field: "perm",
-                                                                                                                       formatter : dojo.partial(get_item_part, "perm", "id", "code", perm_map_model, perm_store),
-                                                                                                                       width : "auto"
-                                                                                                               },
-                                                                                               {       name : pgt_strings.LABEL_DEPTH,
-                                                                                                                       field : "depth",
-                                                                                                                       formatter : dojo.partial(get_item_part, "depth", "depth", "name", perm_map_model, ou_type_store),
-                                                                                                                       editor : dojox.grid.editors.select,
-                                                                                                                       options : dojo.map( _ou_type_list, function (x) { return x.name() } ),
-                                                                                                                       values : dojo.map( _ou_type_list, function (x) { return x.depth() } )
-                                                                                                               }, 
-                                                                   {   name : pgt_strings.LABEL_GRANTABLE,
-                                                                                                                       field : "grantable",
-                                                                                                                       editor : dojox.grid.editors.bool,
-                                                                                                                       get : function (row) {
-                                                                                                                               var gr = get_item_part("id", "id", "grantable", perm_map_model, perm_map_model.store, row, row);
-                                                                                                                               if (gr == 't' || gr === true) return true;
-                                                                                                                               return false;
-                                                                                                                       },
-                                                                                                               }
-                                                                                               ]
-                                                                                               ]
-                                                       }
-                                                   ];
-
-                                                                               perm_grid.setStructure(window.current_perm_grid_layout);
-]]>
-                                                                       </script>
-                                                               </div>
+<!--TODO FIXME                                                         <div dojoType="dojox.grid.data.DojoData" id="perm_map_model" jsId="perm_map_model" store="perm_map_store"></div>-->
+                                                               <div id="grid_node"></div>
                                                        </div>
 
                                                        <div id="new_perm_container" dojoType="dijit.layout.ContentPane" sizeShare="1" layoutAlign="client">
                                                                                                <td>
                                                                                                        <div
                                                                                                          dojoType="dijit.form.FilteringSelect"
-                                                                                                         Id="new_perm_select"
+                                                                                                         id="new_perm_select"
                                                                                                          jsId="new_perm_select"
                                                                                                          store="perm_store"
                                                                                                          searchAttr="code"
                                                                                                <td>
                                                                                                        <div
                                                                                                          dojoType="dijit.form.FilteringSelect"
-                                                                                                         Id="new_depth_select"
+                                                                                                         id="new_depth_select"
                                                                                                          jsId="new_depth_select"
                                                                                                          store="ou_type_store"
                                                                                                          searchAttr="name"
                                                                                                        <input
                                                                                                          type="checkbox"
                                                                                                          dojoType="dijit.form.CheckBox"
-                                                                                                         Id="new_grant_checkbox"
+                                                                                                         id="new_grant_checkbox"
                                                                                                          jsId="new_grant_checkbox"
                                                                                                          value="t"></input>
                                                                                                </td>
                                                                                        </tr>
                                                                                </table>
 
-                                                                               <button dojoType="dijit.form.Button" jsId="new_mapping_add" label="&conify.grp_tree.add_mapping_button.label;">
-                                                                   <script type="dojo/connect" event="onClick">
-<![CDATA[
-                                                                       var new_perm = new_perm_select.getValue();
-                                                                       if (!new_perm) return;
-               
-                                                                       var new_type_id = new_depth_select.getValue();
-                                                                       if (!new_type_id) return;
-               
-                                                                                               var new_type;
-                                                               window.ou_type_store.fetch({
-                                                               query : { id : new_type_id },
-                                                               onItem : function (item, req) { try { new_type = item } catch (e) { /* meh */ } },
-                                                               });
-               
-                                                                       var new_depth = ou_type_store.getValue( new_type, 'depth')
-                                                                       var new_grant = new_grant_checkbox.getValue();
-                                               
-                                                                       var new_fm_obj = new pgpm().fromHash({
-                                                                           isnew       : 1,
-                                                                           perm        : new_perm,
-                                                                           depth       : new_depth,
-                                                                                                       grp                     : group_store.getValue( current_group, 'id' ),
-                                                                                                       grantable       : new_grant ? 't' : 'f'
-                                                                       });
-                                                   
-                                                                       var err = false;
-                                                                       server.pcrud.create(new_fm_obj, {
-                                                                           onerror : function (r) {
-                                                                               highlighter.group_tree.red.play();
-                                                                               status_update( pgt_strings.ERROR_CALLING_METHOD_PERM_MAP );
-                                                                               err = true;
-                                                                           },
-                                                                           oncomplete : function (r, list) {
-               
-                                                                               var new_item_hash = list[0].toStoreItem();
-                                                                               perm_map_store.newItem( new_item_hash );
-                                                                               status_update( pgt_strings.SUCCESS_NEW_PERM_MAP );
-                                                                               highlighter.group_tree.green.play();
-               
-                                                                                       perm_map_model.query = { grp : current_group ? group_store.getValue(current_group,'id') : -1 };
-                                                                               perm_grid.model.sort(-1);
-                                                                                       perm_map_model.refresh();
-                                                                                       perm_grid.refresh();
-               
-                                                                           }
-                                                                       });
-
-                                                                                               new_popup._closeDropDown();
-]]>    
-                                                                   </script>
-               
-                                                                               </button>
+                                                                               <button dojoType="dijit.form.Button" jsId="new_mapping_add" label="&conify.grp_tree.add_mapping_button.label;"></button>
                                                                        </div>
                                                                </div>
 
                                                                <button jsId="save_pgpm_button" dojoType="dijit.form.Button" label="&conify.grp_tree.save_changes.label;" onClick="save_them_all()"></button><br/>
 
                                                <button jsId="delete_pgpm_button" dojoType="dijit.form.Button" label="&conify.grp_tree.remove_selected.label;">
-                                                       <script type="dojo/connect" event="onClick">
-<![CDATA[
-                                                       var selected_rows = perm_grid.selection.getSelected();
-                                       
-                                                       var selected_items = [];
-                                                       for (var i in selected_rows) {
-                                                           selected_items.push(
-                                                               perm_grid.model.getRow( selected_rows[i] ).__dojo_data_item
-                                                           );
-                                                       }
-                       
-                                                       perm_grid.selection.clear();
-                               
-                                                           for (var i in selected_items) {
-                                                                   window.current_perm_map = selected_items[i];
-                       
-                                                                       perm_map_store.setValue( window.current_perm_map, 'isdeleted', 1 );
-                                                       
-                                                                           var modified_pgpm = new pgpm().fromStoreItem( window.current_perm_map );
-                                                                               modified_pgpm.isdeleted( 1 );
-                                   
-                                                       server.pcrud.eliminate( modified_pgpm, {
-                                                                   onerror : function (r) {
-                                                                                                       highlighter.editor_pane.red.play();
-                                                                               status_update( dojo.string.substitute( pgt_strings.ERROR_DELETING_PERM_MAPPING, [perm_map_store.getValue( window.current_perm_map, 'id' )] ) );
-                                                                               },
-                                                                                   oncomplete : function (r, list) {
-                                               
-                                                                           perm_map_store.fetch({
-                                                                                   query : { id : perm_map_store.getValue( window.current_perm_map, 'id' ) },
-                                                                                       onItem : function (item, req) { try { if (this.isItem( item )) this.deleteItem( item ); } catch (e) { /* meh */ } },
-                                                                                           scope : perm_map_store
-                                                                                           });
-                           
-                                                                                               window.current_perm_map = null;
-                                               
-                                                                                                       highlighter.editor_pane.green.play();
-                                                                               status_update( pgt_strings.SUCCESS_DELETED_PERM_MAP );
-                                                           }
-                                                       });
-                                       
-                                                       }
-]]>
-                                                       </script>
                                                        </button>
        
                                                        </div>
index b4bacce..067a278 100644 (file)
@@ -1,19 +1,19 @@
 /*
-# ---------------------------------------------------------------------------
-# Copyright (C) 2008  Georgia Public Library Service / Equinox Software, Inc
-# Mike Rylander <miker@esilibrary.com>
-# 
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-# 
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-# ---------------------------------------------------------------------------
-*/
+ # ---------------------------------------------------------------------------
+ # Copyright (C) 2008  Georgia Public Library Service / Equinox Software, Inc
+ # Mike Rylander <miker@esilibrary.com>
+ #
+ # This program is free software; you can redistribute it and/or
+ # modify it under the terms of the GNU General Public License
+ # as published by the Free Software Foundation; either version 2
+ # of the License, or (at your option) any later version.
+ #
+ # This program is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ # GNU General Public License for more details.
+ # ---------------------------------------------------------------------------
+ */
 
 dojo.require('fieldmapper.AutoIDL');
 dojo.require('fieldmapper.dojoData');
@@ -39,8 +39,10 @@ dojo.require('dijit.layout.LayoutContainer');
 dojo.require('dijit.layout.SplitContainer');
 dojo.require('dojox.widget.Toaster');
 dojo.require('dojox.fx');
-dojo.require('dojox.grid.Grid');
 dojo.require('openils.XUL');
+dojo.require('dojox.grid.cells.dijit');
+dojo.require('dojo.data.ItemFileWriteStore');
+dojo.require('dojox.grid.DataGrid');
 dojo.requireLocalization("openils.conify", "conify");
 
 // some handy globals
@@ -51,7 +53,9 @@ if(!ses && openils.XUL.isXUL()) {
     ses = stash.session.key;
 }
 var server = {};
-server.pcrud = new openils.PermaCrud({ authtoken : ses });
+server.pcrud = new openils.PermaCrud({
+       authtoken : ses
+});
 server.actor = new OpenSRF.ClientSession('open-ils.actor');
 
 var pgt_strings = dojo.i18n.getLocalization('openils.conify', 'conify');
@@ -60,73 +64,591 @@ var virgin_out_id = -1;
 
 var highlighter = {};
 
-function status_update (markup) {
-       if (parent !== window && parent.status_update) parent.status_update( markup );
+
+var _ou_type_list = server.pcrud.retrieveAll('aout', {
+       order_by : {
+               aout : 'depth'
+       }
+});
+
+var _ou_type_data = aout.toStoreData(_ou_type_list);
+var ou_type_store = new dojo.data.ItemFileReadStore({data : _ou_type_data});
+
+var _perm_list = server.pcrud.retrieveAll('ppl', {
+       order_by : {
+               ppl : 'code'
+       }
+});
+var _perm_data = ppl.toStoreData(_perm_list, 'code');
+var _perm_name_data = ppl.toStoreData(_perm_list, 'code', {
+       identifier : 'code'
+});
+
+var perm_store = new dojo.data.ItemFileWriteStore({
+       data : _perm_data
+});
+var perm_name_store = new dojo.data.ItemFileWriteStore({
+       data : _perm_name_data
+});
+
+var _perm_map_list = server.pcrud.retrieveAll('pgpm');
+var _perm_map_data = pgpm.toStoreData(_perm_map_list, 'id');
+var perm_map_store = new dojo.data.ItemFileWriteStore({
+       data : _perm_map_data
+});
+
+perm_map_store.onSet = function(item, attr, o, n) {
+       if (attr == 'ischanged')
+               return;
+       if (n == o)
+               return;
+
+       this.setValue(item, 'ischanged', 1);
+
+       if (attr == 'grantable' && ( typeof (n) != 'string'))
+               this.setValue(item, 'grantable', n ? 't' : 'f');
 }
 
-function save_group () {
 
-       var modified_pgt = new pgt().fromStoreItem( current_group );
-       modified_pgt.ischanged( 1 );
+function status_update(markup) {
+       if (parent !== window && parent.status_update)
+               parent.status_update(markup);
+}
+
+function save_group() {
+
+       var modified_pgt = new pgt().fromStoreItem(current_group);
+       modified_pgt.ischanged(1);
 
        new_kid_button.disabled = false;
        save_group_button.disabled = false;
        delete_group_button.disabled = false;
 
        server.pcrud.update(modified_pgt, {
-               onerror : function (r) {
+               onerror : function(r) {
                        highlighter.editor_pane.red.play();
-                       status_update( dojo.string.substitute( pgt_strings.ERROR_SAVING_DATA, [group_store.getValue( current_group, 'name' )]) );
+                       status_update(dojo.string.substitute(pgt_strings.ERROR_SAVING_DATA, [group_store.getValue(current_group, 'name')]));
                },
-               oncomplete : function (r) {
-                       group_store.setValue( current_group, 'ischanged', 0 );
+               oncomplete : function(r) {
+                       group_store.setValue(current_group, 'ischanged', 0);
                        highlighter.editor_pane.green.play();
-                       status_update( dojo.string.substitute(pgt_strings.SUCCESS_SAVE, [group_store.getValue( current_group, 'name' )]) );
+                       status_update(dojo.string.substitute(pgt_strings.SUCCESS_SAVE, [group_store.getValue(current_group, 'name')]));
                },
        });
 }
 
-function save_perm_map (storeItem) {
+function save_perm_map(storeItem) {
 
-       var modified_pgpm = new pgpm().fromStoreItem( storeItem );
-       modified_pgpm.ischanged( 1 );
+       var modified_pgpm = new pgpm().fromStoreItem(storeItem);
+       modified_pgpm.ischanged(1);
 
        server.pcrud.update(modified_pgpm, {
-               onerror : function (r) {
+               onerror : function(r) {
                        highlighter.editor_pane.red.play();
-                       status_update( dojo.string.substitute(pgt_strings.ERROR_SAVING_PERM_DATA, [group_store.getValue( current_group, 'name' )]) );
+                       status_update(dojo.string.substitute(pgt_strings.ERROR_SAVING_PERM_DATA, [group_store.getValue(current_group, 'name')]));
                },
-               oncomplete : function (r) {
-                       perm_map_store.setValue( storeItem, 'ischanged', 0 );
+               oncomplete : function(r) {
+                       perm_map_store.setValue(storeItem, 'ischanged', 0);
                        highlighter.editor_pane.green.play();
-                       status_update( dojo.string.substitute(pgt_strings.SUCCESS_SAVE_PERM, [group_store.getValue( current_group, 'name' )]) );
+                       status_update(dojo.string.substitute(pgt_strings.SUCCESS_SAVE_PERM, [group_store.getValue(current_group, 'name')]));
                },
        });
 }
 
-function save_them_all (event) {
+function save_them_all(event) {
 
        var dirtyMaps = [];
 
-    perm_map_store.fetch({
-        query : { ischanged : 1 },
-        onItem : function (item, req) { try { if (this.isItem( item )) dirtyMaps.push( item ); } catch (e) { /* meh */ } },
-        scope : perm_map_store
-    });
-
-    var confirmation = true;
+       perm_map_store.fetch({
+               query : {
+                       ischanged : 1
+               },
+               onItem : function(item, req) {
+                       try {
+                               if (this.isItem(item))
+                                       dirtyMaps.push(item);
+                       } catch (e) {/* meh */
+                       }
+               },
+               scope : perm_map_store
+       });
 
+       var confirmation = true;
 
-    if (event && dirtyMaps.length > 0) {
-        confirmation = confirm( pgt_strings.CONFIRM_EXIT);
-    }
+       if (event && dirtyMaps.length > 0) {
+               confirmation = confirm(pgt_strings.CONFIRM_EXIT);
+       }
 
-    if (confirmation) {
-        for (var i in dirtyMaps) {
-            save_perm_map(dirtyMaps[i]);
-        }
-    }
+       if (confirmation) {
+               for (var i in dirtyMaps) {
+                       save_perm_map(dirtyMaps[i]);
+               }
+       }
 }
 
-dojo.addOnUnload( save_them_all );
+dojo.addOnUnload(save_them_all);
+
+var dirtyStore = [];
+var current_group;
+
+var _group_list = server.pcrud.retrieveAll('pgt', {
+       order_by : {
+               pgt : 'name'
+       }
+});
+var _group_data = pgt.toStoreData(_group_list);
+var group_store = new dojo.data.ItemFileWriteStore({
+       data : _group_data
+});
+
+group_store.onSet = function(item, attr, o, n) {
+       if (attr == 'ischanged')
+               return;
+       if (n == o)
+               return;
+       this.setValue(item, 'ischanged', 1);
+};
+
+dojo.addOnUnload(function(event) {
+
+       group_store.fetch({
+               query : {
+                       ischanged : 1
+               },
+               queryOptions : {
+                       deep : true
+               },
+               onItem : function(item, req) {
+                       try {
+                               if (this.isItem(item))
+                                       dirtyStore.push(item);
+                       } catch (e) {/* meh */
+                       }
+               },
+               scope : group_store
+       });
+
+       if (dirtyStore.length > 0) {
+               var confirmation = confirm(pgt_strings.CONFIRM_EXIT_PGT);
+
+               if (confirmation) {
+                       for (var i in dirtyStore) {
+                               current_group = dirtyStore[i];
+                               save_group(true);
+                       }
+               }
+       }
 
+});
+
+
+
+dojo.addOnUnload(function(event) {
+       save_them_all();
+});
+
+/** Called once everything has loaded, getting us ready for 1.7 **/
+dojo.addOnLoad(function() {
+       window.right_pane_toggler = new dojo.fx.Toggler({
+               node : 'right_pane'
+       });
+       window.right_pane_toggler.hide();
+
+       highlighter.group_tree = {};
+       highlighter.editor_pane = {};
+       highlighter.group_tree.green = dojox.fx.highlight({
+               color : '#B4FFB4',
+               node : 'group_tree',
+               duration : 500
+       });
+       highlighter.group_tree.red = dojox.fx.highlight({
+               color : '#FF2018',
+               node : 'group_tree',
+               duration : 500
+       });
+       highlighter.editor_pane.green = dojox.fx.highlight({
+               color : '#B4FFB4',
+               node : 'editor_pane',
+               duration : 500
+       });
+       highlighter.editor_pane.red = dojox.fx.highlight({
+               color : '#FF2018',
+               node : 'editor_pane',
+               duration : 500
+       });
+
+       dojo.connect(group_tree, "getLabel", group_tree, function(item, pI) {
+               var label = this.store.getValue(item, 'name');
+
+               if (this.store.getValue(item, 'ischanged') == 1)
+                       label = '* ' + label;
+
+               return label;
+       });
+
+       dojo.connect(group_tree, "onClick", group_tree, function(item, node) {
+               right_pane_toggler.show();
+
+               current_group = item;
+               window.current_fm_group = new pgt().fromStoreItem(item);
+
+               perm_grid.filter({
+                       grp : current_group ? group_store.getValue(current_group, 'id') : -1
+               });
+               //perm_map_store.refresh();
+               //perm_grid.refresh();
+
+               highlighter.editor_pane.green.play();
+               status_update(dojo.string.substitute(pgt_strings.STATUS_EDITING, [this.store.getValue(item, 'name')]));
+
+               new_kid_button.disabled = false;
+               save_group_button.disabled = false;
+               delete_group_button.disabled = false;
+
+               var main_settings_fields = ['name', 'perm_interval', 'description'];
+               for (var i in main_settings_fields ) {
+                       var field = main_settings_fields[i];
+                       var value = this.store.getValue(current_group, field);
+
+                       if (!value) {
+                               window["editor_pane_" + field].setValue('');
+                               // unset the value
+                               if (field != 'description')
+                                       window["editor_pane_" + field].setDisplayedValue('');
+                               // unset the value
+                       } else
+                               window["editor_pane_" + field].setValue(value);
+               }
+
+               if (this.store.getValue(current_group, '_trueRoot') == 'true') {
+                       editor_pane_parent.disabled = true;
+                       editor_pane_parent.setValue(null);
+                       editor_pane_parent.setDisplayedValue('');
+                       editor_pane_parent.validate(false);
+               } else {
+                       editor_pane_parent.disabled = false;
+                       editor_pane_parent.validate(true);
+                       editor_pane_parent.setValue(this.store.getValue(current_group, 'parent'));
+               }
+
+               editor_pane_application_perm.setValue(this.store.getValue(current_group, 'application_perm'));
+               editor_pane_hold_priority.setValue(this.store.getValue(current_group, 'hold_priority'));
+
+               editor_pane_usergroup.setChecked(this.store.getValue(current_group, 'usergroup') == 't' ? true : false);
+       });
+
+       dojo.connect(editor_pane_name, "onChange", editor_pane_name, function() {
+               if (current_group) {
+                       group_store.setValue(current_group, "name", this.getValue());
+               }
+       });
+
+       dojo.connect(editor_pane_perm_interval, "onChange", editor_pane_perm_interval, function() {
+               if (current_group) {
+                       group_store.setValue(current_group, "perm_interval", this.getValue());
+               }
+       });
+
+       dojo.connect(editor_pane_application_perm, "onChange", editor_pane_application_perm, function() {
+               if (current_group && this.getValue()) {
+                       group_store.setValue(current_group, "application_perm", this.getValue());
+               }
+       });
+
+       dojo.connect(editor_pane_hold_priority, "onChange", editor_pane_hold_priority, function() {
+               if (current_group && this.getValue()) {
+                       group_store.setValue(current_group, "hold_priority", this.getValue());
+               }
+       });
+
+       dojo.connect(editor_pane_parent, "onChange", editor_pane_parent, function() {
+               if (current_group && this.getValue()) {
+                       this.store.setValue(current_group, "parent", this.getValue());
+               }
+       });
+
+       save_group_button.disabled = true;
+       delete_group_button.disabled = true;
+
+       dojo.connect(delete_group_button, "onClick", delete_group_button, function() {
+               if (group_store.getValue(current_group, '_trueRoot') == 'true') {
+                       highlighter.editor_pane.red.play();
+                       status_update(dojo.string.substitute(pgt_strings.STATUS_ERR_DELETING, [group_store.getValue(current_group, 'name')]));
+                       return false;
+               }
+
+               if (current_group.children) {
+                       var kids = current_group.children;
+                       if (!dojo.isArray(kids))
+                               kids = [kids];
+
+                       var existing_kids = dojo.filter(kids, function(kid) {
+                               if(kid == null)
+                                       return false;
+                               return kid.isdeleted[0] != 1
+                       });
+                       if (existing_kids.length > 0) {
+                               highlighter.editor_pane.red.play();
+                               status_update(dojo.string.substitute(pgt_strings.STATUS_ERR_DELETING_DEPENDENCY, [group_store.getValue(current_group, 'name'), existing_kids.length]));
+                               return;
+                       }
+               }
+
+               if (confirm(dojo.string.substitute(pgt_strings.CONFIRM_DELETE, [current_group.name]))) {
+                       group_store.setValue(current_group, 'isdeleted', 1);
+
+                       var modified_pgt = new pgt().fromStoreItem(current_group);
+                       modified_pgt.isdeleted(1);
+
+                       server.pcrud.eliminate(modified_pgt, {
+                               onerror : function(r) {
+                                       highlighter.editor_pane.red.play();
+                                       status_update(dojo.string.substitute(pgt_strings.CONFIRM_DELETE, [group_store.getValue(current_group, 'name')]));
+                               },
+                               oncomplete : function(r) {
+                                       var old_name = group_store.getValue(current_group, 'name');
+
+                                       group_store.fetch({
+                                               query : {
+                                                       id : group_store.getValue(current_group, 'id')
+                                               },
+                                               queryOptions : {
+                                                       deep : true
+                                               },
+                                               onItem : function(item, req) {
+                                                       try {
+                                                               if (this.isItem(item))
+                                                                       this.deleteItem(item);
+                                                       } catch (e) {/* meh */
+                                                       }
+                                               },
+                                               scope : group_store
+                                       });
+
+                                       current_group = null;
+
+                                       new_kid_button.disabled = true;
+                                       save_group_button.disabled = true;
+                                       delete_group_button.disabled = true;
+
+                                       var main_settings_fields = ['name', 'perm_interval', 'description'];
+                                       for (var i in main_settings_fields ) {
+                                               var field = main_settings_fields[i];
+                                               window["editor_pane_" + field].setValue('');
+                                               // unset the value
+                                               window["editor_pane_" + field].setDisplayedValue('');
+                                               // unset the value
+                                       }
+
+                                       window["editor_pane_usergroup"].setChecked(false);
+                                       // unset the value
+
+                                       highlighter.editor_pane.green.play();
+                                       status_update(dojo.string.substitute(pgt_strings.STATUS_DELETED, [old_name]));
+                               }
+                       });
+
+               }
+       });
+
+       new_kid_button.disabled = true;
+
+       dojo.connect(new_kid_button, "onClick", new_kid_button, function() {
+               var new_fm_obj = new pgt().fromHash({
+                       isnew : 1,
+                       name : pgt_strings.LABEL_NEW_GROUP,
+                       usergroup : 'f',
+                       parent : group_store.getValue(current_group, 'id')
+               });
+
+               var err = false;
+
+               server.pcrud.create(new_fm_obj, {
+                       onerror : function(r) {
+                               highlighter.editor_pane.red.play();
+                               status_update(pgt_strings.ERROR_CALLING_METHOD_PGT);
+                               err = true;
+                       },
+                       oncomplete : function(r, list) {
+                               group_store.newItem(list[0].toStoreItem(), {
+                                       parent : current_group,
+                                       attribute : 'children'
+                               });
+                       }
+               });
+
+               if (!err) {
+                       highlighter.editor_pane.green.play();
+                       highlighter.group_tree.green.play();
+                       status_update(dojo.string.substitute(pgt_strings.SUCCESS_NEW_CHILD_GROUP, [group_store.getValue(current_group, 'name')]));
+               }
+       });
+
+       dojo.connect(perm_pane, "onShow", perm_pane, function() {
+               perm_grid.filter({
+                       grp : current_group ? group_store.getValue(current_group, 'id') : -1
+               });
+               //perm_map_model.refresh();
+               //perm_grid.refresh();
+       });
+       
+       perm_grid = new dojox.grid.DataGrid({
+               query: {perm: '*'},
+               store: perm_map_store,
+               structure: [{
+                       cells : [[{
+                               name : pgt_strings.LABEL_CODE,
+                               field : "perm",
+                               formatter : function(val, rowIndex)
+                               {
+                                       console.log(this.grid.getItem(rowIndex)["perm"][0]);
+                                       var perm_val = this.grid.getItem(rowIndex)["perm"][0];
+                                       
+                                       var returnval = "undefined";
+                                       console.log("items");
+                                       dojo.map(_perm_data.items, function(x)
+                                       {
+                                               if(x.id == perm_val)
+                                               {
+                                                       returnval = x.code;
+                                               }
+                                       });
+                                       return returnval;
+                                       
+                                       
+                                       perm_store.fetch({query : {id: perm_val},
+                                               onItem: function(item) {
+                                                       console.log(perm_store.getValue(item));
+                                               }});
+                                       return "";
+                               },
+                               width : "auto"
+                       }, {
+                               editable:true,
+                               name : pgt_strings.LABEL_DEPTH,
+                               field : "depth",
+                               formatter : function(item){
+                                       return _ou_type_list[item].name();
+                               },
+                               cellType : dojox.grid.cells.Select,
+                               options : dojo.map(_ou_type_list, function(x) {
+                                       return x.name()
+                               }),
+                               values : dojo.map(_ou_type_list, function(x) {
+                                       return x.depth()
+                               })
+                       }, {
+                               name : pgt_strings.LABEL_GRANTABLE,
+                               field : "grantable",
+                               editable:true,
+                               cellType : dojox.grid.cells.Bool,
+                               get : function(rowIndex, store) {
+                                       var gr = this.grid.getItem(rowIndex)["grantable"][0];
+                                       return (gr == 't' || gr === true);
+                               },
+                       }]]
+               }],
+       }, 'grid_node');
+       perm_grid.startup();
+
+       dojo.connect(new_mapping_add, "onClick", new_mapping_add, function() {
+               var new_perm = new_perm_select.getValue();
+               if (!new_perm)
+                       return;
+
+               var new_type_id = new_depth_select.getValue();
+               if (!new_type_id)
+                       return;
+
+               var new_type;
+               window.ou_type_store.fetch({
+                       query : {
+                               id : new_type_id
+                       },
+                       onItem : function(item, req) {
+                               try {
+                                       new_type = item
+                               } catch (e) {/* meh */
+                               }
+                       },
+               });
+
+               var new_depth = ou_type_store.getValue(new_type, 'depth')
+               var new_grant = new_grant_checkbox.getValue();
+
+               var new_fm_obj = new pgpm().fromHash({
+                       isnew : 1,
+                       perm : new_perm,
+                       depth : new_depth,
+                       grp : group_store.getValue(current_group, 'id'),
+                       grantable : new_grant ? 't' : 'f'
+               });
+
+               var err = false;
+               server.pcrud.create(new_fm_obj, {
+                       onerror : function(r) {
+                               highlighter.group_tree.red.play();
+                               status_update(pgt_strings.ERROR_CALLING_METHOD_PERM_MAP);
+                               err = true;
+                       },
+                       oncomplete : function(r, list) {
+
+                               var new_item_hash = list[0].toStoreItem();
+                               perm_map_store.newItem(new_item_hash);
+                               status_update(pgt_strings.SUCCESS_NEW_PERM_MAP);
+                               highlighter.group_tree.green.play();
+
+                               perm_grid.filter({
+                                       grp : current_group ? group_store.getValue(current_group, 'id') : -1
+                               });
+                               perm_grid.sort(-1);
+                               //perm_map_model.refresh();
+                               //perm_grid.refresh();
+
+                       }
+               });
+
+               new_popup.closeDropDown();
+       });
+
+       dojo.connect(delete_pgpm_button, "onClick", delete_pgpm_button, function() {
+               var selected_items = perm_grid.selection.getSelected();
+
+               for (var i in selected_items) {
+                       window.current_perm_map = selected_items[i];
+
+                       perm_map_store.setValue(window.current_perm_map, 'isdeleted', 1);
+
+                       var modified_pgpm = new pgpm().fromStoreItem(window.current_perm_map);
+                       modified_pgpm.isdeleted(1);
+
+                       server.pcrud.eliminate(modified_pgpm, {
+                               onerror : function(r) {
+                                       highlighter.editor_pane.red.play();
+                                       status_update(dojo.string.substitute(pgt_strings.ERROR_DELETING_PERM_MAPPING, [perm_map_store.getValue(window.current_perm_map, 'id')]));
+                               },
+                               oncomplete : function(r, list) {
+
+                                       perm_map_store.fetch({
+                                               query : {
+                                                       id : perm_map_store.getValue(window.current_perm_map, 'id')
+                                               },
+                                               onItem : function(item, req) {
+                                                       try {
+                                                               if (this.isItem(item))
+                                                                       this.deleteItem(item);
+                                                       } catch (e) {/* meh */
+                                                       }
+                                               },
+                                               scope : perm_map_store
+                                       });
+
+                                       window.current_perm_map = null;
+
+                                       highlighter.editor_pane.green.play();
+                                       status_update(pgt_strings.SUCCESS_DELETED_PERM_MAP);
+                               }
+                       });
+               }
+       });
+});