From: dbwells Date: Mon, 18 Oct 2010 16:46:52 +0000 (+0000) Subject: Very rough distribution tab placeholder code. X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=7d070fcbd8b1744c5b80bc7e2216b7ad7cbe62c5;p=Evergreen.git Very rough distribution tab placeholder code. Includes some changes to make editor_base.js more flexible. git-svn-id: svn://svn.open-ils.org/ILS/branches/serials-integration@18379 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- diff --git a/Open-ILS/web/opac/locale/en-US/lang.dtd b/Open-ILS/web/opac/locale/en-US/lang.dtd index 9ce45a69d5..01c58d92a3 100644 --- a/Open-ILS/web/opac/locale/en-US/lang.dtd +++ b/Open-ILS/web/opac/locale/en-US/lang.dtd @@ -1589,8 +1589,6 @@ - - @@ -1610,6 +1608,10 @@ + + + + diff --git a/Open-ILS/xul/staff_client/server/locale/en-US/serial.properties b/Open-ILS/xul/staff_client/server/locale/en-US/serial.properties index 84b0669f5a..52353283f1 100644 --- a/Open-ILS/xul/staff_client/server/locale/en-US/serial.properties +++ b/Open-ILS/xul/staff_client/server/locale/en-US/serial.properties @@ -28,6 +28,13 @@ staff.serial.sitem_editor.create.accesskey=C staff.serial.sitem_editor.modify=Modify Item(s) staff.serial.sitem_editor.modify.accesskey=M staff.serial.sitem_editor.notes=Item Notes +staff.serial.sstr_editor.count=1 stream +staff.serial.sstr_editor.count.plural=%1$s streams +staff.serial.sstr_editor.create=Create Stream(s) +staff.serial.sstr_editor.create.accesskey=C +staff.serial.sstr_editor.modify=Modify Stream(s) +staff.serial.sstr_editor.modify.accesskey=M +staff.serial.sstr_editor.notes=Stream Notes staff.serial.ssub_editor.count=1 subscription staff.serial.ssub_editor.count.plural=%1$s subscriptions staff.serial.ssub_editor.create=Create Subscription(s) diff --git a/Open-ILS/xul/staff_client/server/serial/editor_base.js b/Open-ILS/xul/staff_client/server/serial/editor_base.js index 4caf526462..abbb0b7212 100644 --- a/Open-ILS/xul/staff_client/server/serial/editor_base.js +++ b/Open-ILS/xul/staff_client/server/serial/editor_base.js @@ -45,6 +45,11 @@ serial.editor_base = { if (!retrieve_params) { retrieve_params = []; } + if (params.xul_id_prefix) { + obj.xul_id_prefix = params.xul_id_prefix; + } else { + obj.xul_id_prefix = fm_type; + } /******************************************************************************************************/ /* Get the fm_type ids from various sources and flesh them */ @@ -136,7 +141,7 @@ serial.editor_base = { } if (obj.do_edit) { - $(fm_type + '_save').setAttribute('hidden','false'); + $(obj.xul_id_prefix + '_save').setAttribute('hidden','false'); } else { $('top_nav').setAttribute('hidden','true'); } @@ -147,14 +152,14 @@ serial.editor_base = { if (obj[fm_type_plural].length > 0 && obj[fm_type_plural][0].isnew()) { obj.mode = 'create'; - if (obj.can_have_notes) $(fm_type + '_notes').setAttribute('hidden','true'); - $(fm_type + '_save').setAttribute('label', $('serialStrings').getString('staff.serial.' + fm_type + '_editor.create')); - $(fm_type + '_save').setAttribute('accesskey', $('serialStrings').getString('staff.serial.' + fm_type + '_editor.create.accesskey')); + if (obj.can_have_notes) $(obj.xul_id_prefix + '_notes').setAttribute('hidden','true'); + $(obj.xul_id_prefix + '_save').setAttribute('label', $('serialStrings').getString('staff.serial.' + fm_type + '_editor.create')); + $(obj.xul_id_prefix + '_save').setAttribute('accesskey', $('serialStrings').getString('staff.serial.' + fm_type + '_editor.create.accesskey')); } else if (obj.mode == 'create') { // switching from create to modify obj.mode = 'modify'; - if (obj.can_have_notes) $(fm_type + '_notes').setAttribute('hidden','false'); - $(fm_type + '_save').setAttribute('label', $('serialStrings').getString('staff.serial.' + fm_type + '_editor.modify')); - $(fm_type + '_save').setAttribute('accesskey', $('serialStrings').getString('staff.serial.' + fm_type + '_editor.modify.accesskey')); + if (obj.can_have_notes) $(obj.xul_id_prefix + '_notes').setAttribute('hidden','false'); + $(obj.xul_id_prefix + '_save').setAttribute('label', $('serialStrings').getString('staff.serial.' + fm_type + '_editor.modify')); + $(obj.xul_id_prefix + '_save').setAttribute('accesskey', $('serialStrings').getString('staff.serial.' + fm_type + '_editor.modify.accesskey')); } /*else { obj.panes_and_field_names.left_pane = diff --git a/Open-ILS/xul/staff_client/server/serial/manage_dists.js b/Open-ILS/xul/staff_client/server/serial/manage_dists.js new file mode 100644 index 0000000000..6d9fc6a795 --- /dev/null +++ b/Open-ILS/xul/staff_client/server/serial/manage_dists.js @@ -0,0 +1,1742 @@ +dump('entering serial/manage_dists.js\n'); +// vim:noet:sw=4:ts=4: + +if (typeof serial == 'undefined') serial = {}; +serial.manage_dists = function (params) { + try { + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + JSAN.use('util.error'); this.error = new util.error(); + } catch(E) { + dump('serial/manage_dists: ' + E + '\n'); + } +}; + +serial.manage_dists.prototype = { + + 'map_tree' : {}, + 'map_sdist' : {}, + //'map_sstr' : {}, + 'sel_list' : [], + 'funcs' : [], + 'editor_indexes' : { 'sdist' : 1, 'sstr' : 2, 'summary' : 3, 'act' : 4 }, + + 'ids_from_sel_list' : function(type) { + var obj = this; + JSAN.use('util.functional'); + + var list = util.functional.map_list( + util.functional.filter_list( + obj.sel_list, + function (o) { + return o.split(/_/)[0] == type; + } + ), + function (o) { + return o.split(/_/)[1]; + } + ); + + return list; + }, + + 'editor_init' : function(type, mode, params) { + var obj = this; + try { + $('serial_manage_dists_editor_deck').selectedIndex = obj.editor_indexes[type]; + var editor_type = type + '_editor'; + if (typeof obj[editor_type] == 'undefined') { + JSAN.use('serial.' + editor_type); + obj[editor_type] = new serial[editor_type](); + } + + params.do_edit = true; + params.handle_update = true; + if (mode == 'add') { + params.trigger_refresh = true; + params.refresh_command = function () {obj.refresh_list();}; + } + obj[editor_type].init(params); + } catch(E) { + obj.error.standard_unexpected_error_alert('editor_init() error',E); + } + }, + + 'do_delete' : function(type, method, overridable_events) { + var obj = this; + try { + JSAN.use('util.functional'); + + var list = util.functional.filter_list( + obj.sel_list, + function (o) { + return o.split(/_/)[0] == type; + } + ); + + list = util.functional.map_list( + list, + function (o) { + return JSON2js( js2JSON( obj['map_' + type][ type + '_' + o.split(/_/)[1] ] ) ); + } + ); + + //TODO: proper messages + var delete_msg; + if (list.length != 1) { + delete_msg = document.getElementById('serialStrings').getFormattedString('staff.serial.manage_subs.delete_' + type + '.confirm.plural', [list.length]); + } else { + delete_msg = document.getElementById('serialStrings').getString('staff.serial.manage_subs.delete_' + type + '.confirm'); + } + var r = obj.error.yns_alert( + delete_msg, + document.getElementById('serialStrings').getString('staff.serial.manage_subs.delete_' + type + '.title'), + document.getElementById('catStrings').getString('staff.cat.copy_browser.delete_items.delete'), + document.getElementById('catStrings').getString('staff.cat.copy_browser.delete_items.cancel'), + null, + document.getElementById('commonStrings').getString('common.confirm') + ); + + if (r == 0) { + for (var i = 0; i < list.length; i++) { + list[i].isdeleted('1'); + } + var robj = obj.network.request( + 'open-ils.serial', + method, + [ ses(), list, true ], + null, + { + 'title' : document.getElementById('serialStrings').getString('staff.serial.manage_subs.delete_' + type + '.override'), + 'overridable_events' : overridable_events + } + ); + if (robj == null) throw(robj); + if (typeof robj.ilsevent != 'undefined') { + if (robj.ilsevent != 0) { + var overridable = false; + for (i = 0; i < overridable_events.length; i++) { + if (overridable_events[i] == robj.ilsevent) { + overridable = true; + break; + } + } + if (!overridable) throw(robj); + } + } + obj.refresh_list(); + } + } catch(E) { + obj.error.standard_unexpected_error_alert(document.getElementById('serialStrings').getString('staff.serial.manage_subs.delete.error'),E); + obj.refresh_list(); + } + }, + + 'init' : function( params ) { + + try { + netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); + var obj = this; + + obj.docid = params.docid; + + JSAN.use('util.network'); obj.network = new util.network(); + JSAN.use('OpenILS.data'); obj.data = new OpenILS.data(); obj.data.init({'via':'stash'}); + JSAN.use('util.controller'); obj.controller = new util.controller(); + obj.controller.init( + { + control_map : { + 'save_columns' : [ [ 'command' ], function() { obj.list.save_columns(); } ], + 'sel_clip' : [ + ['command'], + function() { obj.list.clipboard(); } + ], + 'cmd_broken' : [ + ['command'], + function() { + alert(document.getElementById('commonStrings').getString('common.unimplemented')); + } + ], + 'cmd_show_my_libs' : [ + ['command'], + function() { + obj.show_my_libs(); + } + ], + 'cmd_show_all_libs' : [ + ['command'], + function() { + obj.show_all_libs(); + } + ], + 'cmd_show_libs_with_distributions' : [ + ['command'], + function() { + obj.show_libs_with_distributions(); + } + ], + 'cmd_clear' : [ + ['command'], + function() { + obj.map_tree = {}; + obj.list.clear(); + } + ], + 'cmd_add_act' : [ + ['command'], + function() { + try { + var list = obj.ids_from_sel_list('sdist'); + if (list.length == 0) list = obj.ids_from_sel_list('act-group'); + if (list.length == 0) return; + + /*TODO: permission check? + //populate 'list' with owning_libs of subs, TODO + var edit = 0; + try { + edit = obj.network.request( + api.PERM_MULTI_ORG_CHECK.app, + api.PERM_MULTI_ORG_CHECK.method, + [ + ses(), + obj.data.list.au[0].id(), + list, + [ 'CREATE_COPY' ] + ] + ).length == 0 ? 1 : 0; + } catch(E) { + obj.error.sdump('D_ERROR','batch permission check: ' + E); + } + + if (edit==0) return; // no read-only view for this interface */ + var new_act = new act(); + new_act.subscription(list[0]);//TODO: add multiple at once support? + new_act.isnew(1); + var params = {}; + params.acts = [new_act]; + obj.editor_init('act', 'add', params); + } catch(E) { + obj.error.standard_unexpected_error_alert(document.getElementById('serialStrings').getString('staff.serial.manage_subs.add.error'),E); + } + } + ], + 'cmd_add_siss' : [ + ['command'], + function() { + try { + var list = obj.ids_from_sel_list('sdist'); + if (list.length == 0) list = obj.ids_from_sel_list('siss-group'); + if (list.length == 0) return; + + /*TODO: permission check? + //populate 'list' with owning_libs of subs, TODO + var edit = 0; + try { + edit = obj.network.request( + api.PERM_MULTI_ORG_CHECK.app, + api.PERM_MULTI_ORG_CHECK.method, + [ + ses(), + obj.data.list.au[0].id(), + list, + [ 'CREATE_COPY' ] + ] + ).length == 0 ? 1 : 0; + } catch(E) { + obj.error.sdump('D_ERROR','batch permission check: ' + E); + } + + if (edit==0) return; // no read-only view for this interface */ + var new_siss = new siss(); + new_siss.subscription(list[0]);//TODO: add multiple at once support? + new_siss.isnew(1); + var params = {}; + params.sisses = [new_siss]; + obj.editor_init('siss', 'add', params); + } catch(E) { + obj.error.standard_unexpected_error_alert(document.getElementById('serialStrings').getString('staff.serial.manage_subs.add.error'),E); + } + } + ], + 'cmd_add_sstr' : [ + ['command'], + function() { + try { + var list = obj.ids_from_sel_list('sdist'); + if (list.length == 0) list = obj.ids_from_sel_list('sstr-group'); + if (list.length == 0) return; + + /*TODO: permission check? + //populate 'list' with owning_libs of subs, TODO + var edit = 0; + try { + edit = obj.network.request( + api.PERM_MULTI_ORG_CHECK.app, + api.PERM_MULTI_ORG_CHECK.method, + [ + ses(), + obj.data.list.au[0].id(), + list, + [ 'CREATE_COPY' ] + ] + ).length == 0 ? 1 : 0; + } catch(E) { + obj.error.sdump('D_ERROR','batch permission check: ' + E); + } + + if (edit==0) return; // no read-only view for this interface */ + var new_sstr = new sstr(); + new_sstr.subscription(list[0]);//TODO: add multiple at once support? + new_sstr.holding_lib(obj.map_sdist['sdist_' + list[0]].owning_lib());//default to sub owning lib + new_sstr.label('Default'); + new_sstr.isnew(1); + var params = {}; + params.sstrs = [new_sstr]; + obj.editor_init('sstr', 'add', params); + } catch(E) { + obj.error.standard_unexpected_error_alert(document.getElementById('serialStrings').getString('staff.serial.manage_subs.add.error'),E); + } + } + ], + 'cmd_delete_act' : [ + ['command'], + function() { + var overridable_events = [ + 11001 // SERIAL_CAPTION_AND_PATTERN_HAS_ISSUANCES + ]; + obj.do_delete('act', 'open-ils.serial.caption_and_pattern.batch.update', overridable_events); + } + ], + 'cmd_delete_sstr' : [ + ['command'], + function() { + var overridable_events = [ //TODO: proper overrides + ]; + obj.do_delete('sstr', 'open-ils.serial.distribution.fleshed.batch.update', overridable_events); + } + ], + 'cmd_delete_siss' : [ + ['command'], + function() { + var overridable_events = [ //TODO: proper overrides + ]; + obj.do_delete('siss', 'open-ils.serial.issuance.fleshed.batch.update', overridable_events); + } + ], + 'cmd_delete_sdist' : [ + ['command'], + function() { + var overridable_events = [ + 11000 // SERIAL_SUBSCRIPTION_NOT_EMPTY + ]; + obj.do_delete('sdist', 'open-ils.serial.subscription.fleshed.batch.update', overridable_events); + } + ], + /*dbw2 'cmd_delete_sdist' : [ + ['command'], + function() { + try { + JSAN.use('util.functional'); + + var list = util.functional.filter_list( + obj.sel_list, + function (o) { + return o.split(/_/)[0] == 'sdist'; + } + ); + + list = util.functional.map_list( + list, + function (o) { + return JSON2js( js2JSON( obj.map_sdist[ 'sdist_' + o.split(/_/)[1] ] ) ); + } + ); + + var del_prompt; + if (list.length == 1) { + //TODO: correct prompts + del_prompt = document.getElementById('catStrings').getString('staff.cat.copy_browser.delete_volume.prompt'); + } else { + del_prompt = document.getElementById('catStrings').getFormattedString('staff.cat.copy_browser.delete_volume.prompt.plural', [list.length]); + } + + var r = obj.error.yns_alert( + del_prompt, + document.getElementById('catStrings').getString('staff.cat.copy_browser.delete_volume.title'), + document.getElementById('catStrings').getString('staff.cat.copy_browser.delete_volume.delete'), + document.getElementById('catStrings').getString('staff.cat.copy_browser.delete_volume.cancel'), + null, + document.getElementById('commonStrings').getString('common.confirm') + ); + + if (r == 0) { + for (var i = 0; i < list.length; i++) { + list[i].isdeleted('1'); + } + var robj = obj.network.simple_request( + 'FM_ACN_TREE_UPDATE', + [ ses(), list, true ], + null, + { + 'title' : document.getElementById('catStrings').getString('staff.cat.copy_browser.delete_volume.override'), + 'overridable_events' : [ + ] + } + ); + if (robj == null) throw(robj); + if (typeof robj.ilsevent != 'undefined') { + if (robj.ilsevent == 1206 ) { // VOLUME_NOT_EMPTY + alert(document.getElementById('catStrings').getString('staff.cat.copy_browser.delete_volume.copies_remain')); + return; + } + if (robj.ilsevent != 0) throw(robj); + } + alert(document.getElementById('catStrings').getString('staff.cat.copy_browser.delete_volume.success')); + obj.refresh_list(); + } + } catch(E) { + obj.error.standard_unexpected_error_alert(document.getElementById('catStrings').getString('staff.cat.copy_browser.delete_volume.exception'),E); + obj.refresh_list(); + } + + } + ], dbw2*/ + 'cmd_mark_library' : [ + ['command'], + function() { + try { + var list = obj.ids_from_sel_list('aou'); + if (list.length == 1) { + obj.data.marked_library = { 'lib' : list[0], 'docid' : obj.docid }; + obj.data.stash('marked_library'); + alert(document.getElementById('catStrings').getString('staff.cat.copy_browser.mark_library.alert')); + } else { + obj.error.yns_alert( + document.getElementById('catStrings').getString('staff.cat.copy_browser.mark_library.prompt'), + document.getElementById('catStrings').getString('staff.cat.copy_browser.mark_library.title'), + document.getElementById('commonStrings').getString('common.ok'), + null, + null, + document.getElementById('commonStrings').getString('common.confirm') + ); + } + } catch(E) { + obj.error.standard_unexpected_error_alert('manage_dists.js -> mark library',E); + } + } + ], + + 'cmd_mark_distribution' : [ + ['command'], + function() { + try { + var list = obj.ids_from_sel_list('sdist'); + if (list.length == 1) { + obj.data.marked_distribution = list[0]; + obj.data.stash('marked_distribution'); + alert(document.getElementById('catStrings').getString('staff.cat.copy_browser.mark_volume.alert')); + } else { + obj.error.yns_alert( + document.getElementById('catStrings').getString('staff.cat.copy_browser.mark_volume.prompt'), + document.getElementById('catStrings').getString('staff.cat.copy_browser.mark_volume.title'), + document.getElementById('commonStrings').getString('common.ok'), + null, + null, + document.getElementById('commonStrings').getString('common.confirm') + ); + } + } catch(E) { + obj.error.standard_unexpected_error_alert('manage_dists.js -> mark distribution',E); + } + } + ], + 'cmd_add_distributions' : [ + ['command'], + function() { + try { + var list = obj.ids_from_sel_list('aou'); + if (list.length == 0) return; + //TODO: permission check? + /*var edit = 0; + try { + edit = obj.network.request( + api.PERM_MULTI_ORG_CHECK.app, + api.PERM_MULTI_ORG_CHECK.method, + [ + ses(), + obj.data.list.au[0].id(), + list, + [ 'CREATE_VOLUME', 'CREATE_COPY' ] + ] + ).length == 0 ? 1 : 0; + } catch(E) { + obj.error.sdump('D_ERROR','batch permission check: ' + E); + } + + if (edit==0) { + alert(document.getElementById('catStrings').getString('staff.cat.copy_browser.add_volume.permission_error')); + return; // no read-only view for this interface + } */ + var new_sdist = new sdist(); + new_sdist.owning_lib(list[0]);//TODO: add multiple at once support? + new_sdist.isnew(1); + new_sdist.record_entry(obj.docid); + var params = {}; + params.sdists = [new_sdist]; + obj.editor_init('sdist', 'add', params); + } catch(E) { + obj.error.standard_unexpected_error_alert(document.getElementById('serialStrings').getString('staff.serial.manage_subs.add.error'),E); + } + } + ], + 'cmd_transfer_distribution' : [ + ['command'], + function() { + try { + obj.data.stash_retrieve(); + if (!obj.data.marked_library) { + alert(document.getElementById('catStrings').getString('staff.cat.copy_browser.transfer_volume.alert')); + return; + } + + var list = obj.ids_from_sel_list('sdist'); + + netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect UniversalBrowserWrite'); + + JSAN.use('util.functional'); + + var sdist_list = util.functional.map_list( + list, + function (o) { + return obj.map_sdist[ 'sdist_' + o ].start_date(); + } + ).join(document.getElementById('commonStrings').getString('common.grouping_string')); + + var xml = ''; + xml += ''; + xml += document.getElementById('catStrings').getFormattedString('staff.cat.copy_browser.transfer.prompt', [sdist_list, obj.data.hash.aou[ obj.data.marked_library.lib ].shortname()]); + xml += ''; + xml += '