Make editing of asset.copy_template a little more friendly (AutoGrid w/ pcrud
authorsenator <senator@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 18 Oct 2010 21:53:44 +0000 (21:53 +0000)
committersenator <senator@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 18 Oct 2010 21:53:44 +0000 (21:53 +0000)
can't deal with editor/creator fields for you).

Incidentally add createPaneOnSubmit and editPaneOnSubmit attributes to
AutoGrid that take a function name as their values, specifying an alternate
callback function to use instead of pcrud.create/update

git-svn-id: svn://svn.open-ils.org/ILS/trunk@18386 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Cat.pm
Open-ILS/web/js/dojo/openils/widget/AutoGrid.js
Open-ILS/web/js/dojo/openils/widget/EditPane.js
Open-ILS/web/js/ui/default/conify/global/asset/copy_template.js
Open-ILS/web/templates/default/conify/global/asset/copy_template.tt2

index df16b4e..dad96ee 100644 (file)
@@ -1191,4 +1191,35 @@ HERE
        return $mfhd->id;
 }
 
+__PACKAGE__->register_method(
+    method             => "create_update_asset_copy_template",
+    api_name    => "open-ils.cat.asset.copy_template.create_or_update"
+);
+
+sub create_update_asset_copy_template {
+    my ($self, $client, $authtoken, $act) = @_;
+
+    my $e = new_editor("xact" => 1, "authtoken" => $authtoken);
+    return $e->die_event unless $e->checkauth;
+    return $e->die_event unless $e->allowed(
+        "ADMIN_ASSET_COPY_TEMPLATE", $act->owning_lib
+    );
+
+    $act->editor($e->requestor->id);
+    $act->edit_date("now");
+
+    my $retval;
+    if (!$act->id) {
+        $act->creator($e->requestor->id);
+        $act->create_date("now");
+
+        $e->create_asset_copy_template($act) or return $e->die_event;
+        $retval = $e->data;
+    } else {
+        $e->update_asset_copy_template($act) or return $e->die_event;
+        $retval = $e->retrieve_asset_copy_template($e->data);
+    }
+    $e->commit and return $retval;
+}
+
 1;
index 4495e1c..aceff7e 100644 (file)
@@ -15,6 +15,8 @@ if(!dojo._hasResource['openils.widget.AutoGrid']) {
         {
 
             /* if true, pop up an edit dialog when user hits Enter on a give row */
+            editPaneOnSubmit : null,
+            createPaneOnSubmit : null,
             editOnEnter : false, 
             defaultCellWidth : null,
             editStyle : 'dialog',
@@ -404,6 +406,8 @@ if(!dojo._hasResource['openils.widget.AutoGrid']) {
                     }
                 });
 
+                if (typeof this.editPaneOnSubmit == "function")
+                    pane.onSubmit = this.editPaneOnSubmit;
                 pane.fieldOrder = this.fieldOrder;
                 pane.mode = 'update';
                 return pane;
@@ -438,6 +442,8 @@ if(!dojo._hasResource['openils.widget.AutoGrid']) {
                         if(onCancel) onCancel();
                     }
                 });
+                if (typeof this.createPaneOnSubmit == "function")
+                    pane.onSubmit = this.createPaneOnSubmit;
                 pane.fieldOrder = this.fieldOrder;
                 pane.mode = 'create';
                 return pane;
index 4e98b04..7938695 100644 (file)
@@ -213,6 +213,7 @@ if(!dojo._hasResource['openils.widget.EditPane']) {
             },
 
             performEditAction : function(opts) {
+                var self = this;
                 var fields = this.getFields();
                 if(this.mode == 'create')
                     this.fmObject = new fieldmapper[this.fmClass]();
@@ -221,7 +222,7 @@ if(!dojo._hasResource['openils.widget.EditPane']) {
                 if(this.mode == 'create' && this.fmIDL.pkey_sequence)
                     this.fmObject[this.fmIDL.pkey](null);
                 if (typeof(this.onSubmit) == "function") {
-                    this.onSubmit(this.fmObject);
+                    this.onSubmit(this.fmObject, opts, self);
                 } else {
                     (new openils.PermaCrud())[this.mode](this.fmObject, opts);
                 }
index 70d3812..37fbf7c 100644 (file)
@@ -9,6 +9,21 @@ var pcrud;
 var actOwner;
 var actList;
 
+function create_or_update_act(obj, opts, edit_pane) {
+    fieldmapper.standardRequest(
+        ["open-ils.cat", "open-ils.cat.asset.copy_template.create_or_update"], {
+            "params": [openils.User.authtoken, obj],
+            "async": true,
+            "oncomplete": function(r) {
+                if (r = openils.Util.readResponse(r)) {
+                    if (edit_pane.onPostSubmit)
+                        edit_pane.onPostSubmit();
+                }
+            }
+        }
+    );
+}
+
 function actInit() {
     pcrud = new openils.PermaCrud();
 
index 0da0537..fc5ef34 100644 (file)
     <table jsId="actGrid"
         dojoType="openils.widget.AutoGrid"
         fieldOrder="['name', 'owning_lib']"
-        suppressFields="['creator','editor','edit_date', 'create_date']"
+        suppressFields="['creator','editor','edit_date','create_date']"
+        suppressEditFields="['creator','editor','edit_date','create_date']"
         query="{id: '*'}"
         editStyle="pane"
         fmClass="act"
         autoHeight="true"
+        createPaneOnSubmit="create_or_update_act"
+        editPaneOnSubmit="create_or_update_act"
         editOnEnter="true">
     </table>
 </div>