From 42ca875599077b745c4caa7542f3eaea722b1640 Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Wed, 18 Jun 2014 17:59:49 -0400 Subject: [PATCH] LP#1332138 Report template / field docs repairs * Various sanity checks and misc. repairs * Add missing strings * oils_rpt_editor.xhtml XML repair; XMLENT is strict * links to external resources open XUL tabs (to avoid HTTP dialogs) * avoid displaying bare HTML in labels * show hints for display fields Signed-off-by: Bill Erickson Signed-off-by: Kathy Lussier Signed-off-by: Ben Shum --- Open-ILS/web/opac/common/js/fm_table.js | 9 ++++---- Open-ILS/web/opac/common/js/fm_table_conf.js | 14 ++++++++----- Open-ILS/web/opac/locale/en-US/reports.dtd | 1 + Open-ILS/web/reports/oils_rpt.css | 6 ++++++ Open-ILS/web/reports/oils_rpt.js | 3 ++- Open-ILS/web/reports/oils_rpt.xhtml | 1 + Open-ILS/web/reports/oils_rpt_editor.xhtml | 5 ++++- Open-ILS/web/reports/oils_rpt_param_editor.js | 15 +++++++++++-- .../web/reports/oils_rpt_report_editor.js | 15 ++++++++++++- Open-ILS/web/reports/oils_rpt_utils.js | 6 +----- Open-ILS/web/reports/xul/template-config.js | 21 +++++++++++++++---- Open-ILS/web/reports/xul/template_builder.xul | 2 +- 12 files changed, 74 insertions(+), 24 deletions(-) diff --git a/Open-ILS/web/opac/common/js/fm_table.js b/Open-ILS/web/opac/common/js/fm_table.js index 11602dbb2d..7f33ef22e2 100644 --- a/Open-ILS/web/opac/common/js/fm_table.js +++ b/Open-ILS/web/opac/common/js/fm_table.js @@ -198,12 +198,13 @@ FMObjectBuilder.prototype.buildObjectRow = function(obj) { for( var i = 0; i < this.keys.length; i++ ) { var td = elem('td'); var data = ''; - if (this.caclulate[i]) { // fake data! pass the object - td.appendChild(this.calculate[i](obj); + var key = this.keys[i]; + if (this.calculate && this.calculate[key]) { // fake data! pass the object + td.appendChild(this.calculate[key](obj)); } else { - data = obj[this.keys[i]](); + data = obj[key](); data = this.munge(data); - this.fleshData(td, data, this.keys[i]); + this.fleshData(td, data, key); } row.appendChild(td); diff --git a/Open-ILS/web/opac/common/js/fm_table_conf.js b/Open-ILS/web/opac/common/js/fm_table_conf.js index b7f2887ad0..41ab3f43d5 100644 --- a/Open-ILS/web/opac/common/js/fm_table_conf.js +++ b/Open-ILS/web/opac/common/js/fm_table_conf.js @@ -114,11 +114,15 @@ var FM_TABLE_DISPLAY = { docs : function (t) { var d = JSON2js(t.data()); if (d.version >= 4 && d.doc_url) { - return elem( - 'a', - { href : d.doc_url, target : '_blank'}, - 'External Documentation' - ); + var args = {}; + if (typeof xulG == 'undefined') { + args.href = d.doc_url; + args.target = '_blank'; + } else { + args.href = ''; + args.onclick = "xulG.new_tab('" + d.doc_url + "'); return false" + } + return elem('a', args, 'External Documentation') } return text(''); } diff --git a/Open-ILS/web/opac/locale/en-US/reports.dtd b/Open-ILS/web/opac/locale/en-US/reports.dtd index 2c9e8f9ecb..367e68ce4a 100644 --- a/Open-ILS/web/opac/locale/en-US/reports.dtd +++ b/Open-ILS/web/opac/locale/en-US/reports.dtd @@ -221,3 +221,4 @@ + diff --git a/Open-ILS/web/reports/oils_rpt.css b/Open-ILS/web/reports/oils_rpt.css index d4db1f2b16..512095864b 100644 --- a/Open-ILS/web/reports/oils_rpt.css +++ b/Open-ILS/web/reports/oils_rpt.css @@ -319,3 +319,9 @@ button:disabled { border-left: 1px solid #808080; } +.oils_rpt_field_hint { + font-weight: bold; + text-decoration:underline; + padding-left: 5px; +} + diff --git a/Open-ILS/web/reports/oils_rpt.js b/Open-ILS/web/reports/oils_rpt.js index 67d6654338..3d212def50 100644 --- a/Open-ILS/web/reports/oils_rpt.js +++ b/Open-ILS/web/reports/oils_rpt.js @@ -135,7 +135,8 @@ oilsReport.prototype._gatherParams = function(params, arr, type, field) { path : obj.path, type : type, relation : obj.relation, - field : field + field : field, + field_doc : obj.field_doc }); } } diff --git a/Open-ILS/web/reports/oils_rpt.xhtml b/Open-ILS/web/reports/oils_rpt.xhtml index 9aa70a554d..f3ceac565b 100644 --- a/Open-ILS/web/reports/oils_rpt.xhtml +++ b/Open-ILS/web/reports/oils_rpt.xhtml @@ -26,6 +26,7 @@ +
&reports.common.logged_in_as;
diff --git a/Open-ILS/web/reports/oils_rpt_editor.xhtml b/Open-ILS/web/reports/oils_rpt_editor.xhtml index c2cf7082d8..2c0b911376 100644 --- a/Open-ILS/web/reports/oils_rpt_editor.xhtml +++ b/Open-ILS/web/reports/oils_rpt_editor.xhtml @@ -14,7 +14,10 @@ - &reports.oils_rpt_editor.doc_url; + + &reports.oils_rpt_editor.doc_url; + + diff --git a/Open-ILS/web/reports/oils_rpt_param_editor.js b/Open-ILS/web/reports/oils_rpt_param_editor.js index 947f0649e0..a4302f0db8 100644 --- a/Open-ILS/web/reports/oils_rpt_param_editor.js +++ b/Open-ILS/web/reports/oils_rpt_param_editor.js @@ -37,7 +37,14 @@ oilsRptParamEditor.prototype.draw = function() { var par = params[p]; var row = oilsRptParamEditor.row.cloneNode(true); this.tbody.appendChild(row); - $n(row, 'column').appendChild(text(oilsRptMakeLabel(par.path, par.field_doc))); + $n(row, 'column').appendChild(text(oilsRptMakeLabel(par.path))); + + if (par.field_doc) { + $n(row, 'column').appendChild( + elem('div', {'class':'oils_rpt_field_hint'}, par.field_doc)); + } + + //$n(row, 'column').appendChild(text(oilsRptMakeLabel(par.path, par.field_doc))); $n(row, 'transform').appendChild(text(OILS_RPT_TRANSFORMS[par.column.transform].label)); $n(row, 'action').appendChild(text(OILS_RPT_FILTERS[par.op].label)); par.widget = this.buildWidget(par, $n(row, 'widget')); @@ -52,7 +59,11 @@ oilsRptParamEditor.prototype.draw = function() { var par = tparams[p]; var row = oilsRptParamEditor.row.cloneNode(true); this.tbody.appendChild(row); - $n(row, 'column').appendChild(text(oilsRptMakeLabel(par.path, par.field_doc))); + $n(row, 'column').appendChild(text(oilsRptMakeLabel(par.path))); + if (par.field_doc) { + $n(row, 'column').appendChild( + elem('div', {'class':'oils_rpt_field_hint'}, par.field_doc)); + } $n(row, 'transform').appendChild(text(OILS_RPT_TRANSFORMS[par.column.transform].label)); $n(row, 'action').appendChild(text(OILS_RPT_FILTERS[par.op].label)); par.widget = this.buildWidget(par, $n(row, 'widget')); diff --git a/Open-ILS/web/reports/oils_rpt_report_editor.js b/Open-ILS/web/reports/oils_rpt_report_editor.js index 41c8db406a..a36a820550 100644 --- a/Open-ILS/web/reports/oils_rpt_report_editor.js +++ b/Open-ILS/web/reports/oils_rpt_report_editor.js @@ -18,7 +18,16 @@ function oilsRptReportEditor(rptObject, folderWindow) { appendClear(DOM.oils_rpt_report_editor_template_description, tmpl.description()); if (rptObject.def.version >= 4) { - DOM.oils_rpt_report_editor_template_doc_url.setAttribute( 'href', rptObject.def.doc_url ); + if (URL = rptObject.def.doc_url) { + var link = DOM.oils_rpt_report_editor_template_doc_url; + link.innerHTML = URL; + if (typeof xulG == 'undefined') { + link.setAttribute('href', URL); + link.setAttribute('target', '_blank'); + } else { + link.onclick = function() {xulG.new_tab(URL); return false} + } + } } else { hideMe(DOM.oils_rpt_report_editor_template_doc_url_row); } @@ -28,6 +37,10 @@ function oilsRptReportEditor(rptObject, folderWindow) { function(i) { if(i) DOM.oils_rpt_report_editor_cols.appendChild(text(i.alias)); + if (i.field_doc) { + DOM.oils_rpt_report_editor_cols.appendChild( + elem('span', {'class':'oils_rpt_field_hint'}, i.field_doc)); + } DOM.oils_rpt_report_editor_cols.appendChild(document.createElement('br')); } ); diff --git a/Open-ILS/web/reports/oils_rpt_utils.js b/Open-ILS/web/reports/oils_rpt_utils.js index 3d7602dd69..dfde0fcad5 100644 --- a/Open-ILS/web/reports/oils_rpt_utils.js +++ b/Open-ILS/web/reports/oils_rpt_utils.js @@ -89,7 +89,7 @@ function oilsRptPathRel(path) { } /* creates a label "path" based on the column path */ -function oilsRptMakeLabel(path, hint) { +function oilsRptMakeLabel(path) { var parts = path.split(/-/); var str = ''; for( var i = 0; i < parts.length; i++ ) { @@ -104,10 +104,6 @@ function oilsRptMakeLabel(path, hint) { } } - if (hint) { - str += '
' + hint + '' - } - return str; } diff --git a/Open-ILS/web/reports/xul/template-config.js b/Open-ILS/web/reports/xul/template-config.js index 69f70d2d03..a1cb3a22b7 100644 --- a/Open-ILS/web/reports/xul/template-config.js +++ b/Open-ILS/web/reports/xul/template-config.js @@ -80,7 +80,7 @@ function addReportAtoms () { var colname = item.getAttribute('idlfield'); var jointype = item.getAttribute('join'); var field_label = item.firstChild.firstChild.getAttribute('label'); - var field_doc = item.firstChild.lastChild.getAttribute('label'); + var field_doc = ''; var table_name = getSourceDefinition(field_class); @@ -708,6 +708,14 @@ function renderSources (selected) { fieldtree = tabpanel.getElementsByTagName('treechildren')[0]; for (var colname in rpt_rel_cache[relation_alias].fields[tabname]) { + + // TODO: code would be clearer if we could access the loaded template + // version from here. Not sure how... it's not in rpt_rel_cache. + // Existing templates (e.g. from cloning) will not have a field_doc + // attribute. with() is not tolerant of nonexistent attributes. + if (!rpt_rel_cache[relation_alias].fields[tabname][colname].field_doc) + rpt_rel_cache[relation_alias].fields[tabname][colname].field_doc = ''; + with (rpt_rel_cache[relation_alias].fields[tabname][colname]) { fieldtree.appendChild( createTreeItem( @@ -737,9 +745,9 @@ function renderSources (selected) { ); } - fieldtree.lastChild.firstChild.appendChild( - createTreeCell({ label : field_doc }) - ); + fieldtree.lastChild.firstChild.appendChild( + createTreeCell({ label : field_doc }) + ); } } } @@ -760,6 +768,11 @@ function renderSources (selected) { ) continue; } + // Existing templates (e.g. from cloning) will not have a field_doc + // attribute. with() is not tolerant of nonexistent attributes. + if (!rpt_rel_cache[order.relation].fields.dis_tab[order.field].field_doc) + rpt_rel_cache[order.relation].fields.dis_tab[order.field].field_doc = ''; + with (rpt_rel_cache[order.relation].fields.dis_tab[order.field]) { fieldtree.appendChild( createTreeItem( diff --git a/Open-ILS/web/reports/xul/template_builder.xul b/Open-ILS/web/reports/xul/template_builder.xul index 5b27102c06..89976924aa 100644 --- a/Open-ILS/web/reports/xul/template_builder.xul +++ b/Open-ILS/web/reports/xul/template_builder.xul @@ -154,7 +154,7 @@ -- 2.43.2