KMAIN-385: Standard Patron Messages
authorBill Erickson <berickxx@gmail.com>
Wed, 29 Oct 2014 21:06:45 +0000 (17:06 -0400)
committerBill Erickson <berickxx@gmail.com>
Thu, 21 Mar 2019 19:46:23 +0000 (15:46 -0400)
    Cross-port: a5efc1a

Conflicts:
Open-ILS/xul/staff_client/chrome/content/main/about.html

KCLS/sql/kmain-385-standard-default-messages.sql [new file with mode: 0644]
Open-ILS/examples/fm_IDL.xml
Open-ILS/src/templates/conify/global/config/patron_messages.tt2 [new file with mode: 0644]
Open-ILS/web/js/ui/default/conify/global/config/patron_messages.js [new file with mode: 0644]
Open-ILS/web/opac/locale/en-US/lang.dtd
Open-ILS/xul/staff_client/chrome/content/main/menu.js
Open-ILS/xul/staff_client/chrome/content/main/menu_frame_menus.xul

diff --git a/KCLS/sql/kmain-385-standard-default-messages.sql b/KCLS/sql/kmain-385-standard-default-messages.sql
new file mode 100644 (file)
index 0000000..d0f142e
--- /dev/null
@@ -0,0 +1,54 @@
+--KCM-16 Rollback
+-----------------------------------
+--DROP TABLE config.patron_message;
+
+BEGIN;
+
+CREATE TABLE config.patron_message
+(
+    id serial NOT NULL,
+    message text NOT NULL,
+    weight integer DEFAULT 0,
+    CONSTRAINT patron_message_pkey PRIMARY KEY (id)
+)
+WITH (
+    OIDS=FALSE
+);
+
+INSERT INTO config.patron_message(message, weight)
+    VALUES ('Address verifying documentation needed \96 Limit 2', 0);
+INSERT INTO config.patron_message(message, weight)
+    VALUES ('Annual address verifying documentation next needed:', 0);
+INSERT INTO config.patron_message(message, weight)
+    VALUES ('Banned from computer use until:', 0);
+INSERT INTO config.patron_message(message, weight)
+    VALUES ('Card lost/stolen/left. Require photo ID.', 0);
+INSERT INTO config.patron_message(message, weight)
+    VALUES ('Foreign-exchange student', 0);
+INSERT INTO config.patron_message(message, weight)
+    VALUES ('Items missing from holds shelf. Review CKO with patron.', 0);
+INSERT INTO config.patron_message(message, weight)
+    VALUES ('Limited Checkout due to:', 0);
+INSERT INTO config.patron_message(message, weight)
+    VALUES ('No Laptop CKO:', 0);
+INSERT INTO config.patron_message(message, weight)
+    VALUES ('Patron has protected address', 0);
+INSERT INTO config.patron_message(message, weight)
+    VALUES ('Patron knows one card per year. Card issue date:', 0);
+INSERT INTO config.patron_message(message, weight)
+    VALUES ('Photo ID required for CKO', 0);
+INSERT INTO config.patron_message(message, weight)
+    VALUES ('Seattle to King County verifying documentation needed', 0);
+INSERT INTO config.patron_message(message, weight)
+    VALUES ('Shelf check done:', 0);
+INSERT INTO config.patron_message(message, weight)
+    VALUES ('Visiting missionary', 0);
+INSERT INTO config.patron_message(message, weight)
+    VALUES ('Per Unique new Seattle address needed', 1);
+INSERT INTO config.patron_message(message, weight)
+    VALUES ('Address check needed \96 verbal approval okay', 2);
+
+ALTER TABLE config.patron_message
+    OWNER TO evergreen;
+
+COMMIT;
\ No newline at end of file
index cce74fd..4ae53b1 100644 (file)
@@ -4294,6 +4294,24 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
             </actions>
         </permacrud>
        </class>
+
+<class id="cpm" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="config::patron_message" oils_persist:tablename="config.patron_message" reporter:label="Patron Message">
+        <fields oils_persist:primary="id" oils_persist:sequence="config.patron_message_id_seq">
+            <field name="id" reporter:selector="name" reporter:datatype="id"/>
+            <field name="message" reporter:datatype="text"/>
+            <field name="weight" reporter:datatype="int" />
+        </fields>
+        <links/>
+        <permacrud xmlns="http://open-ils.org/spec/opensrf/IDL/permacrud/v1">
+            <actions>
+                <create permission="ADMIN_STANDING_PENALTY" global_required="true"/>
+                <retrieve permission="ADMIN_STANDING_PENALTY VIEW_STANDING_PENALTY" global_required="true"/>
+                <update permission="ADMIN_STANDING_PENALTY" global_required="true"/>
+                <delete permission="ADMIN_STANDING_PENALTY" global_required="true"/>
+            </actions>
+        </permacrud>
+    </class>
+
        <class id="pgpt" controller="open-ils.cstore open-ils.pcrud" oils_obj:fieldmapper="permission::grp_penalty_threshold" oils_persist:tablename="permission.grp_penalty_threshold" reporter:label="Group Penalty Threshold">
                <fields oils_persist:primary="id" oils_persist:sequence="permission.grp_penalty_threshold_id_seq">
                        <field name="id" reporter:selector="name" reporter:datatype="id" reporter:label="ID"/>
diff --git a/Open-ILS/src/templates/conify/global/config/patron_messages.tt2 b/Open-ILS/src/templates/conify/global/config/patron_messages.tt2
new file mode 100644 (file)
index 0000000..f3955a5
--- /dev/null
@@ -0,0 +1,39 @@
+[% WRAPPER base.tt2 %]
+[% ctx.page_title = l('Patron Message Editor') %]
+<!--
+<script type="text/javascript" src='[% ctx.media_prefix %]/js/ui/default/conify/global/config/patron_messages.js'> </script>
+-->
+
+<div dojoType="dijit.layout.ContentPane" layoutAlign="client">
+    <div dojoType="dijit.layout.ContentPane" layoutAlign="top" class='oils-header-panel'>
+        <div>[% ctx.page_title %]</div>
+        <div>
+            <button dojoType='dijit.form.Button' onClick='thingGrid.showCreateDialog()'>[% l('New Patron Message') %]</button>
+            <button dojoType='dijit.form.Button' onClick='thingGrid.deleteSelected()'>[% l('Delete Selected') %]</button>
+        </div>
+    </div>
+    <table jsId="thingGrid"
+            dojoType="openils.widget.AutoGrid"
+            fieldOrder="['id', 'message', 'weight']"
+            query="{id: '*'}"
+            fmClass='cpm'
+            editOnEnter='true'>
+
+            <thead>
+                <tr>
+                    <th field="message" get='getField' width='auto'>Message</th>
+                    <th field="weight" get='getField' width='auto'>Weight</th>
+                </tr>
+            </thead>
+
+    </table>
+</div>
+<script>
+    dojo.require('openils.widget.AutoGrid');
+    dojo.addOnLoad(
+        function() {
+            thingGrid.loadAll({order_by : {cpm : 'weight, message'}});
+        }
+    );
+</script>
+[% END %]
\ No newline at end of file
diff --git a/Open-ILS/web/js/ui/default/conify/global/config/patron_messages.js b/Open-ILS/web/js/ui/default/conify/global/config/patron_messages.js
new file mode 100644 (file)
index 0000000..7f6ca77
--- /dev/null
@@ -0,0 +1,46 @@
+dojo.require('dojox.grid.DataGrid');
+dojo.require('openils.widget.AutoGrid');
+dojo.require('dojox.grid.cells.dijit');
+dojo.require('dojo.data.ItemFileWriteStore');
+dojo.require('dijit.Dialog');
+dojo.require('openils.PermaCrud');
+
+var thingList;
+
+function thingInit() {
+
+    thingGrid.disableSelectorForRow = function(rowIdx) {
+        var item = thingGrid.getItem(rowIdx);
+        return (thingGrid.store.getValue(item, 'id') < 0);
+    }
+
+    buildGrid();
+}
+
+function buildGrid() {
+
+    fieldmapper.standardRequest(
+        ['open-ils.pcrud', 'open-ils.pcrud.search.cpm.atomic'],
+        { async: true,
+            params: [
+                openils.User.authtoken,
+                {"id":{"!=":null}},
+                {"order_by":
+                    {"cpm":"message"}
+                }
+            ],
+            oncomplete: function(r) {
+                if(thingList = openils.Util.readResponse(r)) {
+                    thingList = openils.Util.objectSort(thingList,'message');
+                    dojo.forEach(thingList,
+                                 function(e) {
+                                     thingGrid.store.newItem(cpm.toStoreItem(e));
+                                 }
+                                );
+                }
+            }
+        }
+    );
+}
+
+openils.Util.addOnLoad(thingInit);
\ No newline at end of file
index d1e553c..b755ef9 100644 (file)
 <!ENTITY staff.main.menu.admin.local_admin.conify.action_trigger.label "Notifications / Action Triggers">
 <!ENTITY staff.main.menu.admin.local_admin.conify.survey.label "Surveys">
 <!ENTITY staff.main.menu.admin.local_admin.conify.idl_field_doc.label "Field Documentation">
+<!ENTITY staff.main.menu.admin.local_admin.conify.patron_message_editor.label "Patron Message Editor">
 <!ENTITY staff.main.menu.admin.local_admin.conify.standing_penalty.label "Standing Penalties">
 <!ENTITY staff.main.menu.admin.local_admin.conify.grp_penalty_threshold.label "Group Penalty Thresholds">
 <!ENTITY staff.main.menu.admin.local_admin.conify.copy_location_order.label "Copy Location Order">
index 0f983da..65af057 100644 (file)
@@ -814,6 +814,10 @@ main.menu.prototype = {
                 ['oncommand'],
                 function(event) { open_eg_web_page('conify/global/config/standing_penalty', null, event); }
             ],
+            'cmd_local_admin_patron_messages' : [
+                ['oncommand'],
+                function(event) { open_eg_web_page('conify/global/config/patron_messages', null, event); }
+            ],
             'cmd_local_admin_grp_penalty_threshold' : [
                 ['oncommand'],
                 function(event) { open_eg_web_page('conify/global/permission/grp_penalty_threshold', null, event); }
index 2e4d8d5..ca21c6c 100644 (file)
     <command id="cmd_local_admin_standing_penalty" 
              perm="ADMIN_STANDING_PENALTY" 
              />
+
+    <command id="cmd_local_admin_patron_messages"
+             perm="ADMIN_STANDING_PENALTY"
+             />
+
     <command id="cmd_local_admin_grp_penalty_threshold" 
              perm="ADMIN_GROUP_PENALTY_THRESHOLD" 
              />
                 <menuitem label="&staff.server.admin.index.reports;" command="cmd_local_admin_reports"/>
                 <menuitem label="&staff.main.menu.admin.local_admin.search_filter_group.label;" command="cmd_local_admin_search_filter_group"/>
                 <menuitem label="&staff.main.menu.admin.local_admin.conify.standing_penalty.label;" command="cmd_local_admin_standing_penalty"/>
+                <menuitem label="&staff.main.menu.admin.local_admin.conify.patron_message_editor.label;" command="cmd_local_admin_patron_messages"/>
                 <menuitem label="&staff.server.admin.index.statistical_categories;" command="cmd_local_admin_stat_cats"/>
                 <menuitem label="&staff.main.menu.admin.local_admin.conify.survey.label;" command="cmd_local_admin_survey"/>
                 <menuitem label="&staff.server.admin.index.transit_list;" command="cmd_local_admin_transit_list"/>