added sanity checks to user params to verify data is getting filled in
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 8 Oct 2006 18:37:18 +0000 (18:37 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 8 Oct 2006 18:37:18 +0000 (18:37 +0000)
added permission check to folder sharing

git-svn-id: svn://svn.open-ils.org/ILS/trunk@6404 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/web/reports/oils_rpt.js
Open-ILS/web/reports/oils_rpt.xhtml
Open-ILS/web/reports/oils_rpt_editor.xhtml
Open-ILS/web/reports/oils_rpt_folder_manager.xhtml
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_widget.js

index 5728bcc..32325a3 100644 (file)
@@ -1,3 +1,5 @@
+var perms = [ 'RUN_REPORTS', 'SHARE_REPORT_FOLDER' ];
+
 function oilsInitReports() {
        oilsRptIdObjects();
 
@@ -11,13 +13,14 @@ function oilsInitReports() {
        fetchUser(cgi.param('ses'));
        DOM.oils_rpt_user.appendChild(text(USER.usrname()));
 
-       fetchHighestPermOrgs(SESSION, USER.id(), ['RUN_REPORTS']);
-       if( PERMS['RUN_REPORTS'] == -1 ) {
+       fetchHighestPermOrgs(SESSION, USER.id(), perms);
+       if( PERMS.RUN_REPORTS == -1 ) {
                unHideMe(DOM.oils_rpt_permission_denied);
                hideMe(DOM.oils_rpt_tree_loading);
                return false;
        }
 
+
        oilsRptCookie = new HTTP.Cookies();
        oilsRptCurrentOrg = USER.ws_ou();
        cookieManager.write(COOKIE_SES, SESSION, -1, '/');
index cba0efd..dbeb6c8 100644 (file)
                                                                                <td>Share this folder:</td>
                                                                                <td>
                                                                                        <select id='oils_rpt_top_folder_shared'>
-                                                                                               <option value='f'>Do not share</option>
+                                                                                               <option value='f' selected='selected'>Do not share</option>
                                                                                                <option value='t'>Share</option>
                                                                                        </select>
                                                                                </td>
index a460e1e..f5def67 100644 (file)
 
                </tbody>
        </table>
+
+       <span id='oils_rpt_empty_param' class='hide_me'>
+               One or more of the user-defined parameters has been left empty.
+               Please fill in all fields.
+       </span>
+
 </div>
index 723c2db..9f70843 100644 (file)
@@ -30,7 +30,7 @@
                                                <td>Share this folder:</td>
                                                <td>
                                                        <select id='oils_rpt_folder_manager_sub_shared'>
-                                                               <option value='no'>Do not share</option>
+                                                               <option value='no' selected='selected'>Do not share</option>
                                                                <option value='yes'>Share</option>
                                                        </select>
                                                </td>
index fad99fb..1a4066d 100644 (file)
@@ -75,6 +75,11 @@ oilsRptFolderWindow.prototype.draw = function() {
                */
 
        this.drawEditActions();
+
+
+       var porg = PERMS.SHARE_REPORT_FOLDER;
+       if( porg < 1 ) 
+               DOM.oils_rpt_folder_manager_share_opt.disabled = true;
 }
 
 oilsRptFolderWindow.prototype.drawEditActions = function() {
@@ -111,9 +116,13 @@ oilsRptFolderWindow.prototype.drawEditActions = function() {
                                unHideMe(DOM.oils_rpt_folder_manager_change_name_div);
                                break;
                        case 'create_sub_folder':
+                               var porg = PERMS.SHARE_REPORT_FOLDER;
+                               if( porg < 1 ) 
+                                       DOM.oils_rpt_folder_manager_sub_shared.disabled = true;
+                               removeChildren(DOM.oils_rpt_folder_manager_sub_lib_picker);
                                unHideMe(DOM.oils_rpt_folder_manager_create_sub);
                                obj.myOrgSelector = new oilsRptMyOrgsWidget(
-                                       DOM.oils_rpt_folder_manager_sub_lib_picker, USER.ws_ou());
+                                       DOM.oils_rpt_folder_manager_sub_lib_picker, USER.ws_ou(), porg)
                                obj.myOrgSelector.draw();
                                break;
                        case 'delete':
@@ -137,8 +146,10 @@ oilsRptFolderWindow.prototype.shareFolder = function() {
                return alertId('oils_rpt_folder_already_shared');
        unHideMe(DOM.oils_rpt_folder_manager_share_div);
 
+
        var orgsel = new oilsRptMyOrgsWidget(
-               DOM.oils_rpt_folder_manager_share_lib_picker, USER.ws_ou());
+               DOM.oils_rpt_folder_manager_share_lib_picker, 
+               USER.ws_ou(), PERMS.SHARE_REPORT_FOLDER);
        orgsel.draw();
 
        var type = this.type;
index fadbfce..b82a65b 100644 (file)
@@ -31,9 +31,13 @@ oilsRptFolderManager.prototype.draw = function(auth) {
        removeChildren(DOM.oils_rpt_report_shared_folder_tree); 
        removeChildren(DOM.oils_rpt_output_shared_folder_tree); 
 
+       var porg = PERMS.SHARE_REPORT_FOLDER;
+       if( porg < 1 ) 
+               DOM.oils_rpt_top_folder_shared.disabled = true;
+
        var obj = this;
        var orgsel = new oilsRptMyOrgsWidget(
-               DOM.oils_rpt_top_folder_lib_picker, USER.ws_ou());
+               DOM.oils_rpt_top_folder_lib_picker, USER.ws_ou(), porg)
        orgsel.draw();
 
        oilsRptTemplateFolderTree = 
index 9e231fe..cdf6ca0 100644 (file)
@@ -16,7 +16,8 @@ function oilsRptReportEditor(rptObject, folderWindow) {
        appendClear(DOM.oils_rpt_report_editor_cols,' | ');
        iterate(rptObject.def.select, 
                function(i) {
-                       DOM.oils_rpt_report_editor_cols.appendChild(text(i.alias +' | '));
+                       if(i)
+                               DOM.oils_rpt_report_editor_cols.appendChild(text(i.alias +' | '));
                }
        );
 
@@ -77,12 +78,10 @@ oilsRptReportEditor.prototype.save = function() {
        for( var p in this.paramEditor.params ) {
                var par = this.paramEditor.params[p];
                _debug("adding report param "+par.key+" to report data");
-               /*
-               if( par.relWidgetChecked )
-                       data[par.key] = par.relWidget.getValue();
-               else
-               */
-               data[par.key] = par.widget.getValue();
+               var val = par.widget.getValue();
+               if(!val || val.length == 0 )
+                       return alertId('oils_rpt_empty_param');
+               data[par.key] = val;
        }
 
        data = js2JSON(data);
index 44f6965..cbcc511 100644 (file)
@@ -616,9 +616,16 @@ oilsRptTruncPicker.prototype.getDisplayValue = function() {
 /* --------------------------------------------------------------------- 
        custom my-orgs picker 
        --------------------------------------------------------------------- */
-function oilsRptMyOrgsWidget(node, orgid) {
+function oilsRptMyOrgsWidget(node, orgid, maxorg) {
+       _debug('fetching my orgs with max org of ' + maxorg);
        this.node = node;
        this.orgid = orgid;
+       this.maxorg = maxorg || 1;
+       this.active = true;
+       if( maxorg < 1 ) {
+               this.node.disabled = true;
+               this.active = false;
+       }
 }
 
 oilsRptMyOrgsWidget.prototype.draw = function() {
@@ -632,12 +639,18 @@ oilsRptMyOrgsWidget.prototype.draw = function() {
 
 oilsRptMyOrgsWidget.prototype.drawWidget = function(orglist) {
        var sel = this.node;
+       var started = false;
        for( var i = 0; i < orglist.length; i++ ) {
                var org = orglist[i];
                var opt = insertSelectorVal( this.node, -1, 
                        org.name(), org.id(), null, findOrgDepth(org) );
                if( org.id() == this.orgid )
                        opt.selected = true;
+               if(!started) {
+                       if( org.id() == this.maxorg ) 
+                               started = true;
+                       else opt.disabled = true;
+               }
        }
 }