--- /dev/null
+--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
</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"/>
--- /dev/null
+[% 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
--- /dev/null
+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
<!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">
['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); }
<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"/>