Backport r11085, r11086, r11087, r11088 from trunk: partially addresses #26 (thanks...
authordbs <dbs@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 6 Nov 2008 22:37:59 +0000 (22:37 +0000)
committerdbs <dbs@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Thu, 6 Nov 2008 22:37:59 +0000 (22:37 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/branches/rel_1_4@11090 dcc99617-32d9-48b4-a31d-7c20da2025e4

13 files changed:
Open-ILS/examples/apache/eg_vhost.conf
Open-ILS/web/js/dojo/openils/reports/nls/reports.js [new file with mode: 0644]
Open-ILS/web/reports/oils_rpt.xhtml
Open-ILS/web/reports/oils_rpt_builder.js
Open-ILS/web/reports/oils_rpt_builder.xhtml
Open-ILS/web/reports/oils_rpt_common.xhtml
Open-ILS/web/reports/oils_rpt_filters.js
Open-ILS/web/reports/oils_rpt_folder_window.js
Open-ILS/web/reports/oils_rpt_folders.js
Open-ILS/web/reports/oils_rpt_report_editor.js
Open-ILS/web/reports/oils_rpt_tforms.js
Open-ILS/web/reports/oils_rpt_widget.js
Open-ILS/web/reports/xul/template_builder.xul

index ebf4217..e35c13e 100644 (file)
@@ -269,16 +269,16 @@ RewriteRule ^/opac/[^/]+/extras/slimpac/(.*)$ /opac/%1/extras/slimpac/$1? [redir
 # ----------------------------------------------------------------------------------
 # Reports GUI
 # ----------------------------------------------------------------------------------
-<LocationMatch /reports/>
+<LocationMatch /reports>
     Options +Includes
     SetEnvIfNoCase Accept-Language "en" locale=en-US
     SetEnvIfNoCase Accept-Language "fr-CA" locale=fr-CA
     SetEnvIfNoCase Accept-Language "hy-AM" locale=hy-AM
-    AddOutputFilter INCLUDES .xhtml
+    AddOutputFilter INCLUDES;XMLENT .xhtml
 </LocationMatch>
 <LocationMatch /reports/fm_IDL.xml>
     Options +Includes
-    XMLEntStripDoctype "no"
+    XMLEntStripDoctype "yes"
     XMLEntStripComments "no"
     XMLEntContentType "text/xml; charset=utf-8"
     AddOutputFilter INCLUDES;XMLENT .xml
diff --git a/Open-ILS/web/js/dojo/openils/reports/nls/reports.js b/Open-ILS/web/js/dojo/openils/reports/nls/reports.js
new file mode 100644 (file)
index 0000000..b9c6df8
--- /dev/null
@@ -0,0 +1,82 @@
+{
+       "RPT_BUILDER_CONFIRM_SAVE": "Name : ${0}\nDescription: ${1}\nSave Template?",
+       
+       "FILTERS_LABEL_EQUALS":"Equals",
+       "FILTERS_LABEL_LIKE": "Contains Matching substring",
+       "FILTERS_LABEL_ILIKE": "Contains Matching substring (ignore case)",
+       "FILTERS_LABEL_GREATER_THAN": "Greater than",
+       "FILTERS_LABEL_GT_TIME": "After (Date/Time)",
+       "FILTERS_LABEL_GT_EQUAL": "Greater than or equal to",
+       "FILTERS_LABEL_GTE_TIME": "On or After (Date/Time)",
+       "FILTERS_LABEL_LESS_THAN": "Less than",
+       "FILTERS_LABEL_LT_TIME": "Before (Date/Time)",
+       "FILTERS_LABEL_LT_EQUAL": "Less than or equal to",
+       "FILTERS_LABEL_LSE_TIME": "On or Before (Date/Time)",
+       "FILTERS_LABEL_IN": "In list",
+       "FILTERS_LABEL_NOT_IN": "Not in list",
+       "FILTERS_LABEL_BETWEEN": "Between",
+       "FILTERS_LABEL_NOT_BETWEEN": "Not between",
+       "FILTERS_LABEL_NULL": "Is NULL",
+       "FILTERS_LABEL_NOT_NULL": "Is not NULL",
+       "FILTERS_LABEL_NULL_BLANK": "Is NULL or Blank",
+       "FILTERS_LABEL_NOT_NULL_BLANK": "Is not NULL or Blank",
+       
+       "FOLDERS_TEMPLATES": "Templates",
+       "FOLDERS_TEMPLATE": "Template",
+       "FOLDERS_REPORTS": "Reports",
+       "FOLDERS_REPORT": "Report",
+       "FOLDERS_OUTPUT": "Output",
+       
+       "FOLDER_WINDOW_SELECT_ITEM": "Please select an item from the list",
+       "FOLDER_WINDOW_CHANGE_FOLDERS": "Change Folders",
+       "FOLDER_WINDOW_REPORT_OUTPUT": "Report Output: ${0}",
+       "FOLDER_WINDOW_COLNAME_SELECT": "Select",
+       "FOLDER_WINDOW_COLNAME_ALL": "All",
+       "FOLDER_WINDOW_COLNAME_NONE": "None",
+       
+       "REPORT_EDITOR_REPORT_FOLDERS": "Report Folders",
+       "REPORT_EDITOR_OUTPUT_FOLDERS": "Output Folders",
+       "REPORT_EDITOR_PROVIDE_FOLDER_ALERT": "Please provide a report folder",
+       "REPORT_EDITOR_ENTER_NAME_ALERT": "Please enter a report name",
+       "REPORT_EDITOR_INVALID_DATE_ALERT": "invalid start date -  YYYY-MM-DD",
+       "REPORT_EDITOR_PROVIDE_OUTPUT_ALERT": "Please provide an output folder",
+       
+       "TFORMS_LABEL_RAW_DATA": "Raw Data",
+       "TFORMS_LABEL_FIRST": "First Value",
+       "TFORMS_LABEL_LAST": "Last Value",
+       "TFORMS_LABEL_COUNT": "Count",
+       "TFORMS_LABEL_COUNT_DISTINCT": "Count Distinct",
+       "TFORMS_LABEL_MIN": "Min",
+       "TFORMS_LABEL_MAX": "Max",
+       "TFORMS_LABEL_LOWER": "Lower case",
+       "TFORMS_LABEL_UPPER": "Upper case",
+       "TFORMS_LABEL_FIRST5": "First 5 characters (for US ZIP code)",
+       "TFORMS_LABEL_FIRST_WORD": "First contiguous non-space string",
+       "TFORMS_LABEL_DOW": "Day of Week",
+       "TFORMS_LABEL_DOM": "Day of Month",
+       "TFORMS_LABEL_DOY": "Day of Year",
+       "TFORMS_LABEL_WOY": "Week of Year",
+       "TFORMS_LABEL_MOY": "Month of Year",
+       "TFORMS_LABEL_QOY": "Quarter of Year",
+       "TFORMS_LABEL_HOD": "Hour of day",
+       "TFORMS_LABEL_DATE": "Date",
+       "TFORMS_LABEL_MONTH_TRUNC": "Year + Month",
+       "TFORMS_LABEL_YEAR_TRUNC": "Year",
+       "TFORMS_LABEL_HOUR_TRUNC": "Hour",
+       "TFORMS_LABEL_DAY_NAME": "Day Name",
+       "TFORMS_LABEL_MONTH_NAME": "Month Name'",
+       "TFORMS_LABEL_AGE": "Age",
+       "TFORMS_LABEL_MONTHS_AGO": "Months ago",
+       "TFORMS_LABEL_QUARTERS_AGO": "Quarters ago",
+       "TFORMS_LABEL_SUM": "Sum",
+       "TFORMS_LABEL_AVERAGE": "Average",
+       "TFORMS_LABEL_ROUND": "Round",
+       "TFORMS_LABEL_INT": "Drop trailing decimals",
+       
+       "WIDGET_DAYS": "Day(s)",
+       "WIDGET_MONTHS": "Month(s)",
+       "WIDGET_YEARS": "Year(s)",
+       "WIDGET_QUARTERS": "Quarter(s)",
+       "WIDGET_REAL_DATE": "Real Date",
+       "WIDGET_RELATIVE_DATE": "Relative Date"
+}
index 3b58958..fdda302 100644 (file)
        <head>
                <title>Evergreen: Reports</title>
                <!--#include virtual="oils_rpt_common.xhtml"-->
+               <script type="text/javascript">
+               <![CDATA[
+                       var rptInit = function() {
+                               if (oilsInitReports()) {
+                                       oilsRtpInitFolders();
+                               }
+                       }
+                       dojo.addOnLoad(rptInit);
+                       dojo.addOnUnload(oilsCleanupReports);
+               ]]>
+               </script>
        </head>
 
-       <body onload='if(oilsInitReports())oilsRtpInitFolders();' onunload='oilsCleanupReports();'>
+       <body>
                <div class='welcome_box'>
                        <span>You are logged in as </span><b><span id='oils_rpt_user'/></b>
                </div>
index 285807a..0b82c21 100644 (file)
@@ -1,7 +1,9 @@
 /** initializes reports, some basid display settings, 
   * grabs and builds the IDL tree
   */
+dojo.requireLocalization("openils.reports", "reports");
 
+var rpt_strings = dojo.i18n.getLocalization("openils.reports", "reports");
 var __dblclicks = {}; /* retain a cache of the selector value doubleclick event handlers */
 
 function oilsInitReportBuilder() {
@@ -105,7 +107,7 @@ function oilsReportBuilderSave() {
        tmpl.folder(new CGI().param('folder'));
        tmpl.data(js2JSON(oilsRpt.def));
 
-       if(!confirm('Name : '+tmpl.name() + '\nDescription: ' + tmpl.description()+'\nSave Template?'))
+       if(!confirm(dojo.string.substitute( rpt_strings.RPT_BUILDER_CONFIRM_SAVE, [tmpl.name(), tmpl.description()] )) )
                return;
 
        debugFMObject(tmpl);
index 8054e00..4a68835 100644 (file)
        <head>
                <title>Evergreen: Report Builder</title>
                <!--#include virtual="oils_rpt_common.xhtml"-->
+               <script type="text/javascript">
+               <![CDATA[
+                       dojo.addOnLoad(oilsInitReportBuilder);
+                       dojo.addOnUnload(oilsCleanupReports);
+               ]]>
+               </script>
+
        </head>
 
-       <body onload='oilsInitReportBuilder();' onunload='oilsCleanupReports();'>
+       <body>
 
                <div class='welcome_box'>
                        <span>You are logged in as </span><b><span id='oils_rpt_user'/></b>
index 570b8a9..bbb4b4a 100644 (file)
@@ -1,22 +1,43 @@
-<script language='javascript' src='/opac/common/js/utils.js'> </script>
-<script language='javascript' src='/opac/common/js//config.js'> </script> 
-<script language='javascript' src='/opac/common/js/CGI.js'> </script>
-<script language='javascript' src='/opac/common/js/Cookie.js'> </script>
-<script language='javascript' src='/opac/common/js/JSON_v1.js'> </script>
-<script language='javascript' src='/opac/common/js/fmall.js'> </script>
-<script language='javascript' src='/opac/common/js/fmgen.js'> </script>
-<script language='javascript' src='/opac/common/js/Cookies.js'> </script>
-<script language='javascript' src='/opac/common/js/opac_utils.js'> </script>
-<script language='javascript' src='/opac/common/js/OrgTree.js'> </script>
-<script language='javascript' src='/opac/common/js/org_utils.js'> </script>
-<script language='javascript' src='/opac/common/js/init.js'> </script>
-<script language='javascript' src='/opac/common/js/RemoteRequest.js'> </script>
-<script language='javascript' src='/opac/common/js/slimtree.js'> </script>
-<script language='javascript' src='/opac/common/js/sorttable.js'> </script>
-<script language='javascript' src='/opac/common/js/fm_table.js'> </script>
-<script language='javascript' src='/opac/common/js/fm_table_conf.js'> </script>
-<script language='javascript' src='/opac/common/js/md5.js'> </script>
-<script>
+<!-- Load dojo -->
+<style type="text/css">
+       @import url('/js/dojo/dojo/resources/dojo.css');
+       @import url('/js/dojo/dijit/themes/tundra/tundra.css');
+       @import url('/js/dojo/dojox/widget/Toaster/Toaster.css');
+</style>
+<script type="text/javascript">
+       var djConfig= {
+               isDebug: false,
+               parseOnLoad: true
+       }
+</script>
+<script type="text/javascript" src="/js/dojo/dojo/dojo.js"></script>
+<script type="text/javascript">
+       dojo.require('dojo.parser');
+
+       function status_update (markup) {
+               dojo.byId('status_text').innerHTML = markup;
+       }
+</script>
+
+<script type='text/javascript' src='/opac/common/js/utils.js'> </script>
+<script type='text/javascript' src='/opac/common/js//config.js'> </script> 
+<script type='text/javascript' src='/opac/common/js/CGI.js'> </script>
+<script type='text/javascript' src='/opac/common/js/Cookie.js'> </script>
+<script type='text/javascript' src='/opac/common/js/JSON_v1.js'> </script>
+<script type='text/javascript' src='/opac/common/js/fmall.js'> </script>
+<script type='text/javascript' src='/opac/common/js/fmgen.js'> </script>
+<script type='text/javascript' src='/opac/common/js/Cookies.js'> </script>
+<script type='text/javascript' src='/opac/common/js/opac_utils.js'> </script>
+<script type='text/javascript' src='/opac/common/js/OrgTree.js'> </script>
+<script type='text/javascript' src='/opac/common/js/org_utils.js'> </script>
+<script type='text/javascript' src='/opac/common/js/init.js'> </script>
+<script type='text/javascript' src='/opac/common/js/RemoteRequest.js'> </script>
+<script type='text/javascript' src='/opac/common/js/slimtree.js'> </script>
+<script type='text/javascript' src='/opac/common/js/sorttable.js'> </script>
+<script type='text/javascript' src='/opac/common/js/fm_table.js'> </script>
+<script type='text/javascript' src='/opac/common/js/fm_table_conf.js'> </script>
+<script type='text/javascript' src='/opac/common/js/md5.js'> </script>
+<script type="text/javascript">
        stpicopen  = '../opac/images/slimtree/folder2.gif';
        stpicclose = '../opac/images/slimtree/folderopen2.gif';
        stpicblank = '../opac/images/slimtree/page.gif';
@@ -50,7 +71,7 @@
 <link type='text/css' rel='stylesheet' href="/opac/common/css/fm_table.css"/>
 <link rel="stylesheet" type="text/css" href="oils_rpt.css"> </link>
 
-<script>function _l(l) { location.href = l + location.search; }</script>
+<script type="text/javascript">function _l(l) { location.href = l + location.search; }</script>
 
 
 
index 07bdce3..714cb7b 100644 (file)
@@ -1,67 +1,71 @@
+dojo.requireLocalization("openils.reports", "reports");
+
+var rpt_strings = dojo.i18n.getLocalization("openils.reports", "reports");
+
 var OILS_RPT_FILTERS = {
        '=' : {
-               label : 'Equals',
+               label : rpt_strings.FILTERS_LABEL_EQUALS
        },
 
        'like' : {
-               label : 'Contains Matching substring',
+               label : rpt_strings.FILTERS_LABEL_LIKE
        }, 
 
        ilike : {
-               label : 'Contains Matching substring (ignore case)',
+               label : rpt_strings.FILTERS_LABEL_ILIKE
        },
 
        '>' : {
-               label : 'Greater than',
-               labels : { timestamp : 'After (Date/Time)' }
+               label : rpt_strings.FILTERS_LABEL_GREATER_THAN,
+               labels : { timestamp : rpt_strings.FILTERS_LABEL_GT_TIME }
        },
 
        '>=' : {
-               label : 'Greater than or equal to',
-               labels : { timestamp : 'On or After (Date/Time)' }
+               label : rpt_strings.FILTERS_LABEL_GT_EQUAL,
+               labels : { timestamp : rpt_strings.FILTERS_LABEL_GTE_TIME }
        }, 
 
 
        '<' : {
-               label : 'Less than',
-               labels : { timestamp : 'Before (Date/Time)' }
+               label : rpt_strings.FILTERS_LABEL_LESS_THAN,
+               labels : { timestamp : rpt_strings.FILTERS_LABEL_LT_TIME }
        }, 
 
        '<=' : {
-               label : 'Less than or equal to', 
-               labels : { timestamp : 'On or Before (Date/Time)' }
+               label : rpt_strings.FILTERS_LABEL_LT_EQUAL,
+               labels : { timestamp : rpt_strings.FILTERS_LABEL_LSE_TIME }
        },
 
        'in' : {
-               label : 'In list',
+               label : rpt_strings.FILTERS_LABEL_IN
        },
 
        'not in' : {
-               label : 'Not in list',
+               label : rpt_strings.FILTERS_LABEL_NOT_IN
        },
 
        'between' : {
-               label : 'Between',
+               label : rpt_strings.FILTERS_LABEL_BETWEEN
        },
 
        'not between' : {
-               label : 'Not between',
+               label : rpt_strings.FILTERS_LABEL_NOT_BETWEEN
        },
 
        'is' : {
-               label : 'Is NULL'
+               label : rpt_strings.FILTERS_LABEL_NULL
        },
 
        'is not' : {
-               label : 'Is not NULL'
+               label : rpt_strings.FILTERS_LABEL_NOT_NULL
     },
 
     'is blank' : {
-        label : 'Is NULL or Blank'
+        label : rpt_strings.FILTERS_LABEL_NULL_BLANK
     },
 
     'is not blank' : {
-        label : 'Is not NULL or Blank'
+        label : rpt_strings.FILTERS_LABEL_NOT_NULL_BLANK
        }
 }
 
index 8fdcb11..49f6645 100644 (file)
@@ -1,3 +1,6 @@
+dojo.requireLocalization("openils.reports", "reports");
+
+var rpt_strings = dojo.i18n.getLocalization("openils.reports", "reports");
 var OILS_TEMPLATE_INTERFACE = 'xul/template_builder.xul';
 var OILS_LEGACY_TEMPLATE_INTERFACE = 'oils_rpt_builder.xhtml';
 
@@ -209,7 +212,7 @@ oilsRptFolderWindow.prototype.doFolderAction = function() {
                objs = objs.concat( this.fmTable2.getSelected() );
 
        if( objs.length == 0 ) 
-               return alert('Please select an item from the list');
+               return alert(rpt_strings.FOLDER_WINDOW_SELECT_ITEM);
        var action = getSelectorVal(DOM.oils_rpt_folder_contents_action_selector);
 
        var obj = this;
@@ -326,7 +329,7 @@ oilsRptFolderWindow.prototype.drawFolderOptions = function(type, callback) {
                type,
                DOM.oils_rpt_move_folder_picker,
                'tree9807897',
-               'Change Folders',
+               rpt_strings.FOLDER_WINDOW_CHANGE_FOLDERS,
                function(node) { 
                        appendClear(DOM.oils_rpt_move_folder_selected, node.folder.name());
                        selectedFolder = node.folder.id();
@@ -368,7 +371,7 @@ oilsRptFolderWindow.prototype.showOutput = function(sched) {
                        _debug("launching report output view at URL: " + url);
                        if(isXUL()) 
                                xulG.new_tab('/xul/server/util/rbrowser.xul?url=' + url,  /* this comes from urls.XUL_REMOTE_BROWSER */
-                                       {tab_name:'Report Output: ' + r.name(), browser:true},
+                                       {tab_name: dojo.string.substitute( rpt_strings.FOLDER_WINDOW_REPORT_OUTPUT, [r.name] ), browser:true},
                                        {no_xulG:false, show_nav_buttons:true, show_print_button:true});
                        else {
                                //goTo(url);
@@ -505,9 +508,9 @@ oilsRptFolderWindow.prototype.fetchFolderData = function(callback) {
                                                dest : obj.selector, 
                                                obj : res,
                                                selectCol : true,
-                                               selectColName : 'Select',
-                                               selectAllName : 'All',
-                                               selectNoneName : 'None'
+                                               selectColName : rpt_strings.FOLDER_WINDOW_COLNAME_SELECT,
+                                               selectAllName : rpt_strings.FOLDER_WINDOW_COLNAME_ALL,
+                                               selectNoneName : rpt_strings.FOLDER_WINDOW_COLNAME_NONE
                                        }
                                );
                        }
@@ -570,9 +573,9 @@ oilsRptFolderWindow.prototype.fleshSchedules = function(list, idx, selector, isS
                                                                dest : selector, 
                                                                obj : [sched],
                                                                selectCol : true,
-                                                               selectColName : 'Select',
-                                                               selectAllName : 'All',
-                                                               selectNoneName : 'None'
+                                                               selectColName : rpt_strings.FOLDER_WINDOW_COLNAME_SELECT,
+                                                               selectAllName : rpt_strings.FOLDER_WINDOW_COLNAME_ALL,
+                                                               selectNoneName : rpt_strings.FOLDER_WINDOW_COLNAME_NONE
                                                        }
                                                );
 
index adf5a6a..028e939 100644 (file)
@@ -1,3 +1,7 @@
+dojo.requireLocalization("openils.reports", "reports");
+
+var rpt_strings = dojo.i18n.getLocalization("openils.reports", "reports");
+
 var oilsRptFolderNodeCache = {};
 oilsRptFolderNodeCache.template = {};
 oilsRptFolderNodeCache.report  = {};
@@ -46,12 +50,12 @@ oilsRptFolderManager.prototype.draw = function(auth) {
                        'oilsRptTemplateFolderTree');
                        //'images/template-page.gif');
 
-       oilsRptTemplateFolderTree.addNode(this.tId, -1, 'Templates',
+       oilsRptTemplateFolderTree.addNode(this.tId, -1, rpt_strings.FOLDERS_TEMPLATES,
                function() {
                        unHideMe(DOM.oils_rpt_folder_table_alt_td);
                        unHideMe(DOM.oils_rpt_top_folder);
                        hideMe(DOM.oils_rpt_editor_div);
-                       appendClear(DOM.oils_rpt_top_folder_type,text('Template'));
+                       appendClear(DOM.oils_rpt_top_folder_type,text(rpt_strings.FOLDERS_TEMPLATE));
                        hideMe(DOM.oils_rpt_folder_table_right_td);
                        DOM.oils_rpt_top_folder_create.onclick = function() {
                                obj.createTopFolder('template', orgsel);
@@ -66,13 +70,13 @@ oilsRptFolderManager.prototype.draw = function(auth) {
                        //'images/report-page.gif');
 
 
-       oilsRptReportFolderTree.addNode(this.rId, -1, 'Reports',
+       oilsRptReportFolderTree.addNode(this.rId, -1, rpt_strings.FOLDERS_REPORTS,
                function() {
                        unHideMe(DOM.oils_rpt_folder_table_alt_td);
                        unHideMe(DOM.oils_rpt_top_folder);
                        hideMe(DOM.oils_rpt_editor_div);
                        hideMe(DOM.oils_rpt_folder_table_right_td);
-                       appendClear(DOM.oils_rpt_top_folder_type,text('Report'));
+                       appendClear(DOM.oils_rpt_top_folder_type,text(rpt_strings.FOLDERS_REPORT));
                        DOM.oils_rpt_top_folder_create.onclick = function() {
                                obj.createTopFolder('report', orgsel);
                        }
@@ -87,13 +91,13 @@ oilsRptFolderManager.prototype.draw = function(auth) {
                        'oilsRptOutputFolderTree');
                        //'images/output-page.gif');
 
-       oilsRptOutputFolderTree.addNode(this.oId, -1, 'Output',
+       oilsRptOutputFolderTree.addNode(this.oId, -1, rpt_strings.FOLDERS_OUTPUT,
                function() {
                        unHideMe(DOM.oils_rpt_folder_table_alt_td);
                        unHideMe(DOM.oils_rpt_top_folder);
                        hideMe(DOM.oils_rpt_editor_div);
                        hideMe(DOM.oils_rpt_folder_table_right_td);
-                       appendClear(DOM.oils_rpt_top_folder_type,text('Output'));
+                       appendClear(DOM.oils_rpt_top_folder_type,text(rpt_strings.FOLDERS_OUTPUT));
                        DOM.oils_rpt_top_folder_create.onclick = function() {
                                obj.createTopFolder('output', orgsel);
                        }
@@ -107,7 +111,7 @@ oilsRptFolderManager.prototype.draw = function(auth) {
                        'oilsRptSharedTemplateFolderTree');
                        //'images/template-page.gif');
 
-       oilsRptSharedTemplateFolderTree.addNode(this.stId, -1, 'Templates')
+       oilsRptSharedTemplateFolderTree.addNode(this.stId, -1, rpt_strings.FOLDERS_TEMPLATES)
 
 
        oilsRptSharedReportFolderTree = 
@@ -116,7 +120,7 @@ oilsRptFolderManager.prototype.draw = function(auth) {
                        'oilsRptSharedReportFolderTree');
                        //'images/report-page.gif');
 
-       oilsRptSharedReportFolderTree.addNode(this.srId, -1, 'Reports')
+       oilsRptSharedReportFolderTree.addNode(this.srId, -1, rpt_strings.FOLDERS_REPORTS)
 
        oilsRptSharedOutputFolderTree = 
                new SlimTree(
@@ -124,7 +128,7 @@ oilsRptFolderManager.prototype.draw = function(auth) {
                        'oilsRptSharedOutputFolderTree');
                        //'images/output-page.gif');
 
-       oilsRptSharedOutputFolderTree.addNode(this.soId, -1, 'Output')
+       oilsRptSharedOutputFolderTree.addNode(this.soId, -1, rpt_strings.FOLDERS_OUTPUT)
 
        this.fetchFolders(auth);
 }
index f51348d..b613e29 100644 (file)
@@ -1,3 +1,7 @@
+dojo.requireLocalization("openils.reports", "reports");
+
+var rpt_strings = dojo.i18n.getLocalization("openils.reports", "reports");
+
 oilsRptSetSubClass('oilsRptReportEditor', 'oilsRptObject');
 var oilsRptReportEditorFolderTree;
 
@@ -76,7 +80,7 @@ oils_rpt_editor_pivot_data
                'report',
                DOM.oils_rpt_report_editor_dest_folder,
                'oilsRptReportEditorFolderTree',
-               'Report Folders',
+               rpt_strings.REPORT_EDITOR_REPORT_FOLDERS,
                function(node) { 
                        appendClear(DOM.oils_rpt_report_editor_selected_folder, node.folder.name());
                        obj.selectedFolder = node; });
@@ -86,7 +90,7 @@ oils_rpt_editor_pivot_data
                'output',
                DOM.oils_rpt_output_dest_folder,
                'oilsRptReportEditorOutputTree',
-               'Output Folders',
+               rpt_strings.REPORT_EDITOR_OUTPUT_FOLDERS,
                function(node) { 
                        appendClear(DOM.oils_rpt_output_selected_folder, node.folder.name());
                        obj.selectedOutputFolder = node; });
@@ -105,10 +109,10 @@ oilsRptReportEditor.prototype.save = function() {
        var report = new rr();
 
        if(!this.selectedFolder) 
-               return alert('Please provide a report folder');
+               return alert(rpt_strings.REPORT_EDITOR_PROVIDE_FOLDER_ALERT);
 
        if(!DOM.oils_rpt_report_editor_name.value)
-               return alert('Please enter a report name');
+               return alert(rpt_strings.REPORT_EDITOR_ENTER_NAME_ALERT);
 
        report.owner( USER.id() );
        report.template( this.template.id() );
@@ -163,7 +167,7 @@ oilsRptReportEditor.prototype.save = function() {
                var dt = DOM.oils_rpt_param_editor_sched_start_date.value;
                if(!dt || !dt.match(/^\d{4}-\d{2}-\d{2}$/) ) {
                        /* for now.. make this better in the future */
-                       alert('invalid start date -  YYYY-MM-DD');
+                       alert(rpt_strings.REPORT_EDITOR_INVALID_DATE_ALERT);
                        return;
                }
                var hour = getSelectorVal(DOM.oils_rpt_param_editor_sched_start_hour);
@@ -172,7 +176,7 @@ oilsRptReportEditor.prototype.save = function() {
        }
 
        if(!this.selectedOutputFolder) 
-               return alert('Please provide an output folder');
+               return alert(rpt_strings.REPORT_EDITOR_PROVIDE_OUTPUT_ALERT);
 
        var schedule = new rs();
        schedule.folder(this.selectedOutputFolder.folder.id());
index 38781f8..ff9da55 100644 (file)
@@ -1,35 +1,39 @@
+dojo.requireLocalization("openils.reports", "reports");
+
+var rpt_strings = dojo.i18n.getLocalization("openils.reports", "reports");
+
 
 var OILS_RPT_TRANSFORMS = {
        Bare : {
-               label : 'Raw Data'
+               label : rpt_strings.TFORMS_LABEL_RAW_DATA
        },
 
        first : {
-               label : 'First Value'
+               label : rpt_strings.TFORMS_LABEL_FIRST
        },
 
        last : {
-               label : 'Last Value'
+               label : rpt_strings.TFORMS_LABEL_LAST
        },
 
        count : {
                aggregate : true,
-               label :  'Count'
+               label :  rpt_strings.TFORMS_LABEL_COUNT
        },
 
        count_distinct : {
                aggregate : true,
-               label : 'Count Distinct'
+               label : rpt_strings.TFORMS_LABEL_COUNT_DISTINCT
        },
 
        min : {
                aggregate : true,
-               label : 'Min'
+               label : rpt_strings.TFORMS_LABEL_MIN
        },
 
        max : {
                aggregate : true,
-               label : 'Max'
+               label : rpt_strings.TFORMS_LABEL_MAX
        },
 
        /* string transforms ------------------------- */
@@ -43,69 +47,69 @@ var OILS_RPT_TRANSFORMS = {
 
        lower : {
                datatype : [OILS_RPT_DTYPE_STRING, 'text'],
-               label : 'Lower case'
+               label : rpt_strings.TFORMS_LABEL_LOWER
        },
 
        upper : {
                datatype : [OILS_RPT_DTYPE_STRING, 'text'],
-               label : 'Upper case'
+               label : rpt_strings.TFORMS_LABEL_UPPER
        },
 
        first5 : {
                datatype : [OILS_RPT_DTYPE_STRING, 'text'],
-               label : 'First 5 characters (for US ZIP code)'
+               label : rpt_strings.TFORMS_LABEL_FIRST5
        },
 
        first_word : {
                datatype : [OILS_RPT_DTYPE_STRING, 'text'],
-               label : 'First contiguous non-space string'
+               label : rpt_strings.TFORMS_LABEL_FIRST_WORD
        },
 
        /* timestamp transforms ----------------------- */
        dow : {
                datatype : OILS_RPT_DTYPE_TIMESTAMP,
-               label : 'Day of Week',
+               label : rpt_strings.TFORMS_LABEL_DOW,
                regex : /^[0-6]$/
        },
        dom : {
                datatype : OILS_RPT_DTYPE_TIMESTAMP,
-               label : 'Day of Month',
+               label : rpt_strings.TFORMS_LABEL_DOM,
                regex : /^[0-9]{1,2}$/
        },
 
        doy : {
                datatype : OILS_RPT_DTYPE_TIMESTAMP,
-               label : 'Day of Year',
+               label : rpt_strings.TFORMS_LABEL_DOY,
                regex : /^[0-9]{1,3}$/
        },
 
        woy : {
                datatype : OILS_RPT_DTYPE_TIMESTAMP,
-               label : 'Week of Year',
+               label : rpt_strings.TFORMS_LABEL_WOY,
                regex : /^[0-9]{1,2}$/
        },
 
        moy : {
                datatype : OILS_RPT_DTYPE_TIMESTAMP,
-               label : 'Month of Year',
+               label : rpt_strings.TFORMS_LABEL_MOY,
                regex : /^\d{1,2}$/
        },
 
        qoy : {
                datatype : OILS_RPT_DTYPE_TIMESTAMP,
-               label : 'Quarter of Year',
+               label : rpt_strings.TFORMS_LABEL_QOY,
                regex : /^[1234]$/
        }, 
 
        hod : {
                datatype : OILS_RPT_DTYPE_TIMESTAMP,
-               label : 'Hour of day',
+               label : rpt_strings.TFORMS_LABEL_HOD,
                regex : /^\d{1,2}$/
        }, 
 
        date : {
                datatype : OILS_RPT_DTYPE_TIMESTAMP,
-               label : 'Date',
+               label : rpt_strings.TFORMS_LABEL_DATE,
                regex : /^\d{4}-\d{2}-\d{2}$/,
                hint  : 'YYYY-MM-DD',
                cal_format : '%Y-%m-%d',
@@ -114,7 +118,7 @@ var OILS_RPT_TRANSFORMS = {
 
        month_trunc : {
                datatype : OILS_RPT_DTYPE_TIMESTAMP,
-               label : 'Year + Month',
+               label : rpt_strings.TFORMS_LABEL_MONTH_TRUNC,
                regex : /^\d{4}-\d{2}$/,
                hint  : 'YYYY-MM',
                cal_format : '%Y-%m',
@@ -123,7 +127,7 @@ var OILS_RPT_TRANSFORMS = {
 
        year_trunc : {
                datatype : OILS_RPT_DTYPE_TIMESTAMP,
-               label : 'Year',
+               label : rpt_strings.TFORMS_LABEL_YEAR_TRUNC,
                regex : /^\d{4}$/,
                hint  : 'YYYY',
                cal_format : '%Y',
@@ -132,7 +136,7 @@ var OILS_RPT_TRANSFORMS = {
 
        hour_trunc : {
                datatype : OILS_RPT_DTYPE_TIMESTAMP,
-               label : 'Hour',
+               label : rpt_strings.TFORMS_LABEL_HOUR_TRUNC,
                regex : /^\d{2}$/,
                hint  : 'HH',
                cal_format : '%H',
@@ -141,49 +145,49 @@ var OILS_RPT_TRANSFORMS = {
 
        day_name : {
                datatype : OILS_RPT_DTYPE_TIMESTAMP,
-               label : 'Day Name'
+               label : rpt_strings.TFORMS_LABEL_DAY_NAME
        }, 
 
        month_name : {
                datatype : OILS_RPT_DTYPE_TIMESTAMP,
-               label : 'Month Name'
+               label : rpt_strings.TFORMS_LABEL_MONTH_NAME
        },
        age : {
                datatype : OILS_RPT_DTYPE_TIMESTAMP,
-               label : 'Age'
+               label : rpt_strings.TFORMS_LABEL_AGE
        },
 
        months_ago : {
                datatype : OILS_RPT_DTYPE_TIMESTAMP,
-               label : 'Months ago'
+               label : rpt_strings.TFORMS_LABEL_MONTHS_AGO
        },
 
        quarters_ago : {
                datatype : OILS_RPT_DTYPE_TIMESTAMP,
-               label : 'Quarters ago'
+               label : rpt_strings.TFORMS_LABEL_QUARTERS_AGO
        },
 
        /* int  / float transforms ----------------------------------- */
        sum : {
                datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT ],
-               label : 'Sum',
+               label : rpt_strings.TFORMS_LABEL_SUM,
                aggregate : true
        }, 
 
        average : {
                datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT ],
-               label : 'Average',
+               label : rpt_strings.TFORMS_LABEL_AVERAGE,
                aggregate : true
        },
 
        round : {
                datatype : [ OILS_RPT_DTYPE_INT, OILS_RPT_DTYPE_FLOAT ],
-               label : 'Round',
+               label : rpt_strings.TFORMS_LABEL_ROUND,
        },
 
        'int' : {
                datatype : OILS_RPT_DTYPE_FLOAT,
-               label : 'Drop trailing decimals'
+               label : rpt_strings.TFORMS_LABEL_INT
        }
 }
 
index 8c333e5..7e644ec 100644 (file)
@@ -309,9 +309,9 @@ oilsRptAgeWidget.prototype.draw = function() {
                insertSelectorVal(this.count, -1, i, i);
 
        //insertSelectorVal(this.type, -1, ' -- Select One -- ', '');
-       insertSelectorVal(this.type, -1, 'Day(s)', 'days');
-       insertSelectorVal(this.type, -1, 'Month(s)', 'months');
-       insertSelectorVal(this.type, -1, 'Year(s)', 'years');
+       insertSelectorVal(this.type, -1, rpt_strings.WIDGET_DAYS, 'days');
+       insertSelectorVal(this.type, -1, rpt_strings.WIDGET_MONTHS, 'months');
+       insertSelectorVal(this.type, -1, rpt_strings.WIDGET_YEARS, 'years');
        this.node.appendChild(this.count);
        this.node.appendChild(this.type);
 }
@@ -433,17 +433,17 @@ function oilsRptTruncPicker(args) {
        args.node = this.node;
 
        this.selector = elem('select');
-       insertSelectorVal(this.selector,-1,'Real Date',1);
-       insertSelectorVal(this.selector,-1,'Relative Date',2);
+       insertSelectorVal(this.selector,-1,rpt_strings.WIDGET_REAL_DATE,1);
+       insertSelectorVal(this.selector,-1,rpt_strings.WIDGET_RELATIVE_DATE,2);
 
        this.numberPicker = 
                new oilsRptNumberWidget({node:this.relSpan,size:90,start:1});
 
        this.label = 'Day(s)';
-       if(this.type == 'month') this.label = 'Month(s)';
-       if(this.type == 'quarter') this.label = 'Quarter(s)';
-       if(this.type == 'year') this.label = 'Year(s)';
-       if(this.type == 'date') this.label = 'Day(s)';
+       if(this.type == 'month') this.label = rpt_strings.WIDGET_MONTHS;
+       if(this.type == 'quarter') this.label = rpt_strings.WIDGET_QUARTERS;
+       if(this.type == 'year') this.label = rpt_strings.WIDGET_YEARS;
+       if(this.type == 'date') this.label = rpt_strings.WIDGET_DAYS;
 }
 
 oilsRptTruncPicker.prototype.draw = function() {
index b62a41a..766923a 100644 (file)
@@ -2,8 +2,25 @@
 <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
 <?xml-stylesheet href="reporter.css" type="text/css"?>
 <?xml-stylesheet href="/opac/common/js/jscalendar/calendar-brown.css" type="text/css" ?>
+<?xml-stylesheet href='/js/dojo/dojo/resources/dojo.css' type='text/css'?>
 
-<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:xhtml="http://www.w3.org/1999/xhtml" onload="loadIDL()">
+<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" xmlns:xhtml="http://www.w3.org/1999/xhtml">
+
+<!-- Load dojo -->
+<script type="text/javascript">
+<![CDATA[
+       var djConfig= {
+               isDebug: false,
+               parseOnLoad: true
+       }
+]]>
+</script>
+<script type="text/javascript" src="/js/dojo/dojo/dojo.js"></script>
+<script type="text/javascript">
+<![CDATA[
+       dojo.require('dojo.parser');
+]]>
+</script>
 
 <script src='/opac/common/js/utils.js' type="application/x-javascript; e4x=1"/>
 <script src='/opac/common/js/config.js' type="application/x-javascript; e4x=1"/>
 <script src="transforms.js" type="application/x-javascript; e4x=1"/>
 <script src="operators.js" type="application/x-javascript; e4x=1"/>
 
+<script type="text/javascript">
+<![CDATA[
+       dojo.addOnLoad(loadIDL);
+]]>
+</script>
+
 <script type="application/x-javascript; e4x=1" src="/opac/common/js/jscalendar/calendar.js"/>
 <script type="application/x-javascript; e4x=1" src="/opac/common/js/jscalendar/lang/calendar-en.js"/>
 <script type="application/x-javascript; e4x=1" src="/opac/common/js/jscalendar/calendar-setup.js"/>