acq - break off Add to Purchase Order dialog into separate thing
authorLebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Tue, 5 Mar 2013 21:47:41 +0000 (16:47 -0500)
committerLebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Thu, 7 Mar 2013 23:06:10 +0000 (18:06 -0500)
will need to fuss with it more, i'm sure

Signed-off-by: Lebbeous Fogle-Weekley <lebbeous@esilibrary.com>
Open-ILS/src/templates/acq/common/add_to_po.tt2 [new file with mode: 0644]
Open-ILS/src/templates/acq/lineitem/related.tt2
Open-ILS/web/js/ui/default/acq/lineitem/related.js

diff --git a/Open-ILS/src/templates/acq/common/add_to_po.tt2 b/Open-ILS/src/templates/acq/common/add_to_po.tt2
new file mode 100644 (file)
index 0000000..6d167bb
--- /dev/null
@@ -0,0 +1,56 @@
+[%# We require add_to_po.js to be included, but can't do it ourselves. %]
+        <div dojoType="dijit.Dialog" jsId='addToPoDialog'>
+            <script type="dojo/connect" event="execute">
+                var dia = this;
+                var poId = addToPoInput.attr('value');
+                if (!poId) return false;
+
+                /* XXX we rely on a global liTable singleton. Ugh. */
+                var liId =  liTable.getSelected()[0].id();
+                console.log("adding li " + liId + " to PO " + poId);
+
+                fieldmapper.standardRequest(
+                    ['open-ils.acq',
+                        'open-ils.acq.purchase_order.add_lineitem'],
+                    {   async : true,
+                        params : [openils.User.authtoken, poId, liId],
+                        oncomplete : function(r) {
+                            if ((r = openils.Util.readResponse(r))) {
+                                if (r.success) {
+                                    location.href = oilsBasePath +
+                                        '/acq/po/view/' + poId;
+                                } else {
+                                    if (r.error == 'bad-po-state') {
+                                        alert(localeStrings.ADD_LI_TO_PO_BAD_PO_STATE);
+                                    } else if (r.error == 'bad-li-state') {
+                                        alert(localeStrings.ADD_LI_TO_PO_BAD_LI_STATE);
+                                    }
+                                }
+                            }
+                            dia.hide();
+                        }
+                    }
+                );
+            </script>
+            <script type="dojo/connect" event="onShow">
+                if (!window._already_addToPo_onShow) {
+                    var dia = this;
+                    openils.Util.registerEnterHandler(
+                        addToPoInput.domNode,
+                        function() { dia.execute(); }
+                    );
+                    window._already_addToPo_onShow = true;
+                }
+            </script>
+            <table class='dijitTooltipTable'>
+                <tr>
+                    <td><label>[% l('Enter the PO Name: ') %]</label></td>
+                    <td><input jsId='addToPoInput' name='addToPoInput' dojoType="dijit.form.TextBox" /></td>
+                </tr>
+                <tr>
+                    <td colspan='2' align='center'>
+                        <span dojoType='dijit.form.Button' type="submit">[% l('Save') %]</span>
+                    </td>
+                </tr>
+            </table>
+        </div>
index fe2f527..337a64f 100644 (file)
     </div>
 
     <div class="hidden">
-        <div dojoType="dijit.Dialog" jsId='addToPoDialog'>
-            <table class='dijitTooltipTable'>
-                <tr>
-                    <td><label>[% l('Enter the PO #: ') %]</label></td>
-                    <td><input jsId='addToPoInput' dojoType="dijit.form.TextBox" /></td>
-                </tr>
-                <tr>
-                    <td colspan='2' align='center'>
-                        <button dojoType='dijit.form.Button' jsId='addToPoSave' type="submit">[% l('Save') %]</button>
-                    </td>
-                </tr>
-            </table>
-        </div>
+        [% INCLUDE "acq/common/add_to_po.tt2" %]
     </div>
 
 </div>
 [% INCLUDE "acq/common/info.tt2" which = "Related" %]
 [% INCLUDE "acq/common/li_table.tt2" %]
+<script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/common/add_to_po.js"></script>
 <script type="text/javascript" src="[% ctx.media_prefix %]/js/ui/default/acq/lineitem/related.js"></script>
 [% END %]
index eb04bc4..ba6dbdc 100644 (file)
@@ -148,44 +148,6 @@ function load() {
 
     prepareButtons();
     fetchRelated();
-    dojo.connect(addToPoSave, 'onClick', addToPo)
-    openils.Util.registerEnterHandler(addToPoInput.domNode, addToPo);
-}
-
-var _addToPoHappened = false;
-function addToPo(args) {
-    var poId = addToPoInput.attr('value');
-    if (!poId) return false;
-    if (_addToPoHappened) return false;
-
-    var liId =  liTable.getSelected()[0].id();
-    console.log("adding li " + liId + " to PO " + poId);
-
-    // hmm, addToPo is invoked twice for some reason...
-    _addToPoHappened = true;
-
-    fieldmapper.standardRequest(
-        ['open-ils.acq', 'open-ils.acq.purchase_order.add_lineitem'],
-        {   async : true,
-            params : [openils.User.authtoken, poId, liId],
-            oncomplete : function(r) {
-                var resp = openils.Util.readResponse(r);
-                if (resp.success) {
-                    location.href = oilsBasePath + '/acq/po/view/' + poId;
-                } else {
-                    _addToPoHappened = false;
-                    if (resp.error == 'bad-po-state') {
-                        alert(localeStrings.ADD_LI_TO_PO_BAD_PO_STATE);
-                    } else if (resp.error == 'bad-li-state') {
-                        alert(localeStrings.ADD_LI_TO_PO_BAD_LI_STATE);
-                    }
-                }
-            }
-        }
-    );
-
-    addToPoDialog.hide();
-    return false; // prevent form submission
 }
 
 openils.Util.addOnLoad(load);