we can add (mostly) and update permissions now
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 30 Mar 2008 00:59:24 +0000 (00:59 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 30 Mar 2008 00:59:24 +0000 (00:59 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/branches/dojo-admin@9162 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/web/conify/global/permission/perm_list.html
Open-ILS/web/conify/global/permission/perm_list.js

index b042df1..480be87 100644 (file)
                        #perm_grid {
                                border: 0px;
                                width: 100%;
-                               height: 88%;
+                               height: 100%;
+                       }
+
+                       #grid_container {
+                               width: 100%;
+                               height: 100%;
                        }
                </style>
 
@@ -48,7 +53,7 @@
 
        <body class="tundra" id='pagebody'>
 
-               <div dojoType="dijit.layout.ContentPane" id="grid_container" jsId="grid_container">
+               <div dojoType="dijit.layout.LayoutContainer" id="grid_container" jsId="grid_container" orientation="vertical">
                        <script type="dojo/method">
                                window.highlighter= {};
                                window.highlighter.green = dojox.fx.highlight( { color : '#B4FFB4', node : 'grid_container', duration : 500 } );
 
                        </script>
 
-                       <div dojoType="dojox.grid.data.DojoData" id="perm_data_model"jsId="perm_data_model" rowsPerPage="20" store="perm_store" query="{ code : '*' }"></div>
-                       <div id="perm_grid" dojoType="dojox.Grid" model="perm_data_model" structure="perm_grid_layout" jsId="perm_grid">
-                               <script type="dojo/connect" event="onSet" args="item,attr,oldVal,newVal">
-                               </script>
+                       <div dojoType="dijit.layout.LayoutContainer" orientation="horizontal" style="margin-top: 5px;" layoutAlign="top">
+                               <span>New Permission:</span>
+                               <div dojoType="dijit.form.TextBox" id="new_perm_code" jsId="new_perm_code" label="New Code"></div>
+                               <button dojoType="dijit.form.Button" id="save_new_perm_code" jsId="save_new_perm_code" label="Add"> 
+                                       <script type="dojo/connect" event="onClick">
+
+                                               var new_code = new_perm_code.getValue();
+                                               if (!new_code) return;
+
+                       var new_fm_obj = new ppl().fromHash({
+                               isnew           : 1,
+                           code            : new_code
+                           });
+    
+                       var err = false;
+                           pCRUD.request({
+                           method : 'open-ils.permacrud.create.ppl',
+                               timeout : 10,
+                           params : [ ses, new_fm_obj ],
+                               onerror : function (r) {
+                               highlighter.red.play();
+                                   status_update( 'Problem calling method to create new Permission' );
+                               err = true;
+                               },
+                               oncomplete : function (r) {
+                               var res = r.recv();
+                                   if ( res && res.content() ) {
+                                   var new_item_hash = res.content().toHash();
+                                   perm_store.newItem( new_item_hash );
+                                                                       status_update( 'New ' + new_item_hash.code + ' permission created' );
+                                                                       highlighter.green.play();
+                               } else {
+                                       highlighter.red.play();
+                                   status_update( 'Problem creating new Permission' );
+                                       err = true;
+                               }
+                               }
+                       }).send();
+    
+                       </script>
+                               </button>
                        </div>
 
-               </div>
+                       <div dojoType="dijit.layout.ContentPane" style="width:100%; height:100%;" layoutAlign="client">
+                               <div dojoType="dojox.grid.data.DojoData" id="perm_data_model"jsId="perm_data_model" rowsPerPage="20" store="perm_store" query="{ code : '*' }"></div>
+                               <div id="perm_grid" dojoType="dojox.Grid" model="perm_data_model" structure="perm_grid_layout" jsId="perm_grid">
+                                       <!!--
+                                       <script type="dojo/connect" event="onSet" args="item,attr,oldVal,newVal">
+                                       </script>
+                                       -->
+                               </div>
+                       </div>
 
-               <div dojoType="dijit.layout.ContentPane" orientation="horizontal" style="margin-bottom: 20px;">
-       
-                       <button jsId="save_ppl_button" dojoType="dijit.form.Button" label="Save" onClick="save_perm()">
-                               <script type="dojo/connect" event="startup">
-                                       this.disabled = true;
-                               </script>
-                       </button>
-       
-                       <button jsId="delete_ppl_button" dojoType="dijit.form.Button" label="Delete">
-                               <script type="dojo/connect" event="startup">
-                                       this.disabled = true;
-                               </script>
-                               <script type="dojo/connect" event="onClick">
-       
-                                       if (perm_store.getValue( current_perm, '_trueRoot' ) == 'true') {
-                                               highlighter.red.play();
-                                               status_update( 'Cannot delete' + perm_store.getValue( current_perm, 'code' ) + ', you need at least one.' );
-                                               return false;
-                                       }
-
-                                       if ( current_perm.children ) {
-                                               var kids = current_perm.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) {
+                       <div dojoType="dijit.layout.ContentPane" orientation="horizontal" style="margin-bottom: 5px;" layoutAlign="bottom">
+               
+                               <button jsId="save_ppl_button" dojoType="dijit.form.Button" label="Save Changes" onClick="save_them_all()">
+                               </button>
+               
+                               <button jsId="delete_ppl_button" dojoType="dijit.form.Button" label="Delete Selected">
+                                       <script type="dojo/connect" event="onClick">
+               
+                                               if (perm_store.getValue( current_perm, '_trueRoot' ) == 'true') {
                                                        highlighter.red.play();
-                                                       status_update( 'Cannot delete' + perm_store.getValue( current_perm, 'code' ) + ', ' + existing_kids.length + ' subordinates still exist.' );
-                                                       return;
+                                                       status_update( 'Cannot delete' + perm_store.getValue( current_perm, 'code' ) + ', you need at least one.' );
+                                                       return false;
                                                }
-                                       }
        
-                                       if ( confirm('Are you sure you want to delete ' + current_perm.name + '?')) {
-                                               perm_store.setValue( current_perm, 'isdeleted', 1 );
-       
-                                               var modified_ppl = new ppl().fromStoreItem( current_perm );
-                                               modified_ppl.isdeleted( 1 );
-       
-                                               pCRUD.request({
-                                                       method : 'open-ils.permacrud.delete.ppl',
-                                                       timeout : 10,
-                                                       params : [ ses, modified_ppl ],
-                                                       onerror : function (r) {
+                                               if ( current_perm.children ) {
+                                                       var kids = current_perm.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.red.play();
-                                                               status_update( 'Problem deleting ' + perm_store.getValue( current_perm, 'code' ) );
-                                                       },
-                                                       oncomplete : function (r) {
-                                                               var res = r.recv();
-                                                               if ( res && res.content() ) {
-       
-                                                                       var old_name = perm_store.getValue( current_perm, 'code' );
-
-                                                                       perm_store.fetch({
-                                                                               query : { id : perm_store.getValue( current_perm, 'id' ) },
-                                                                               onItem : function (item, req) { try { if (this.isItem( item )) this.deleteItem( item ); } catch (e) { /* meh */ } },
-                                                                               scope : perm_store
-                                                                       });
+                                                               status_update( 'Cannot delete' + perm_store.getValue( current_perm, 'code' ) + ', ' + existing_kids.length + ' subordinates still exist.' );
+                                                               return;
+                                                       }
+                                               }
+               
+                                               if ( confirm('Are you sure you want to delete ' + current_perm.name + '?')) {
+                                                       perm_store.setValue( current_perm, 'isdeleted', 1 );
+               
+                                                       var modified_ppl = new ppl().fromStoreItem( current_perm );
+                                                       modified_ppl.isdeleted( 1 );
+               
+                                                       pCRUD.request({
+                                                               method : 'open-ils.permacrud.delete.ppl',
+                                                               timeout : 10,
+                                                               params : [ ses, modified_ppl ],
+                                                               onerror : function (r) {
+                                                                       highlighter.red.play();
+                                                                       status_update( 'Problem deleting ' + perm_store.getValue( current_perm, 'code' ) );
+                                                               },
+                                                               oncomplete : function (r) {
+                                                                       var res = r.recv();
+                                                                       if ( res && res.content() ) {
+               
+                                                                               var old_name = perm_store.getValue( current_perm, 'code' );
        
-                                                                       current_perm = null;
+                                                                               perm_store.fetch({
+                                                                                       query : { id : perm_store.getValue( current_perm, 'id' ) },
+                                                                                       onItem : function (item, req) { try { if (this.isItem( item )) this.deleteItem( item ); } catch (e) { /* meh */ } },
+                                                                                       scope : perm_store
+                                                                               });
+               
+                                                                               current_perm = null;
+               
+                                                                               new_kid_button.disabled = true;
+                                                                               save_ppl_button.disabled = true;
+                                                                               delete_ppl_button.disabled = true;
+                               
+                                                                               var main_settings_fields = [ 'code', '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
+                                                                               }
        
-                                                                       new_kid_button.disabled = true;
-                                                                       save_ppl_button.disabled = true;
-                                                                       delete_ppl_button.disabled = true;
-                       
-                                                                       var main_settings_fields = [ 'code', '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
+                                                                               highlighter.green.play();
+                                                                               status_update( old_name + ' deleted' );
+                                                                       } else {
+                                                                               highlighter.red.play();
+                                                                               status_update( 'Problem deleting ' + old_name );
                                                                        }
-
-                                                                       highlighter.green.play();
-                                                                       status_update( old_name + ' deleted' );
-                                                               } else {
-                                                                       highlighter.red.play();
-                                                                       status_update( 'Problem deleting ' + old_name );
                                                                }
-                                                       }
-                                               }).send();
+                                                       }).send();
        
-                                       }
+                                               }
        
-                               </script>
-                       </button>
+                                       </script>
+                               </button>
        
+                       </div>
                </div>
        
        </body>
index fb103e8..b91b425 100644 (file)
@@ -8,6 +8,8 @@ dojo.require('dijit.form.TextBox');
 dojo.require('dijit.form.ValidationTextBox');
 dojo.require('dijit.form.Textarea');
 dojo.require('dijit.layout.ContentPane');
+dojo.require('dijit.layout.LayoutContainer');
+dojo.require('dijit.layout.BorderContainer');
 dojo.require('dojox.widget.Toaster');
 dojo.require('dojox.fx');
 dojo.require('dojox.grid.Grid');
@@ -34,10 +36,6 @@ function save_perm () {
        var modified_ppl = new ppl().fromStoreItem( current_perm );
        modified_ppl.ischanged( 1 );
 
-       new_kid_button.disabled = false;
-       save_out_button.disabled = false;
-       delete_out_button.disabled = false;
-
        pCRUD.request({
                method : 'open-ils.permacrud.update.ppl',
                timeout : 10,
@@ -60,3 +58,33 @@ function save_perm () {
        }).send();
 }
 
+function save_them_all (event) {
+
+       perm_store.fetch({
+               query : { ischanged : 1 },
+               onItem : function (item, req) { try { if (this.isItem( item )) window.dirtyStore.push( item ); } catch (e) { /* meh */ } },
+               scope : perm_store
+       });
+
+       var confirmation = true;
+
+
+       if (event && dirtyStore.length > 0) {
+               confirmation = confirm(
+                       'There are unsaved modified Permissions!  '+
+                       'OK to save these changes, Cancel to abandon them.'
+               );
+       }
+
+       if (confirmation) {
+               for (var i in window.dirtyStore) {
+                       window.current_perm = window.dirtyStore[i];
+                       save_perm(true);
+               }
+
+               window.dirtyStore = [];
+       }
+}
+
+dojo.addOnUnload( save_them_all );
+