top level folder work, added template creation code
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 1 Oct 2006 19:11:55 +0000 (19:11 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Sun, 1 Oct 2006 19:11:55 +0000 (19:11 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@6316 dcc99617-32d9-48b4-a31d-7c20da2025e4

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_folder_window.js
Open-ILS/web/reports/oils_rpt_folder_window.xhtml
Open-ILS/web/reports/oils_rpt_folders.js

index 2c87fee..1463383 100644 (file)
                        <span>You are logged in as </span><b><span id='oils_rpt_user'/></b>
                </div>
 
+               <!--
                <div>
                        <a class='oils_rpt_main_link' href='javascript:_l("oils_rpt_builder.xhtml");'>Build a New Report Template</a>
                </div>
+               -->
 
                <div id='oils_rpt_tree_loading'>
                        Loading...
                                                <div class='oils_rpt_folder_window'>
                                                        <!--#include virtual="oils_rpt_editor.xhtml"-->
                                                </div>
+
+                                               <div id='oils_rpt_top_folder' class='hide_me oils_rpt_folder_window'>
+                                                       <div>
+                                                               <span><b>Create a new sub-folder</b>.  Folder type: </span> <b id='oils_rpt_top_folder_type'/>
+                                                       </div>
+                                                       <table class='oils_rpt_generic_table'>
+                                                               <tbody>
+                                                                       <tr>
+                                                                               <td>Folder Name:</td>
+                                                                               <td><input id='oils_rpt_top_folder_name' type='text'/></td>
+                                                                       </tr>
+                                                                       <tr>
+                                                                               <td>Share this folder:</td>
+                                                                               <td>
+                                                                                       <select id='oils_rpt_top_folder_shared'>
+                                                                                               <option value='f'>Do not share</option>
+                                                                                               <option value='t'>Share</option>
+                                                                                       </select>
+                                                                               </td>
+                                                                       </tr>
+                                                                       <tr>
+                                                                               <td>Share with:</td>
+                                                                               <td><select id='oils_rpt_top_folder_lib_picker'/></td>
+                                                                       </tr>
+                                                                       <tr><td colspan='2' align='center'>
+                                                                               <input type='submit' value='Create Sub Folder' id='oils_rpt_top_folder_create'/>
+                                                                       </td></tr>
+                                                               </tbody>
+                                                       </table>
+                                               </div>
                                        </td>
 
+
                                </tr>
                        </tbody>
                </table>
                        Action Succeeded
                </span>
 
+
+
+
        </body>
 </html>
 
index f15f43b..0f833e8 100644 (file)
@@ -14,7 +14,6 @@ function oilsInitReportBuilder() {
        );
 
        DOM.oils_rpt_builder_save_template.onclick = oilsReportBuilderSave;
-       oilsRpt.folder = new CGI().param('folder');
 }
 
 function oilsReportBuilderReset() {
@@ -32,17 +31,20 @@ function oilsReportBuilderReset() {
 }
 
 function oilsReportBuilderSave() {
-       if(!confirm('Name : '+oilsRpt.name + '\nDescription: ' 
-                       + oilsRpt.description+'\nSave Template?'))
-               return;
 
        var tmpl = new rt();
-       tmpl.name( oilsRpt.name );
-       tmpl.description( oilsRpt.desc );
-       tmpl.ower(USER.id());
-       tmpl.folder(oilsRpt.folder);
+       tmpl.name(DOM.oils_rpt_builder_new_name.value);
+       tmpl.description(DOM.oils_rpt_builder_new_desc.value);
+       tmpl.owner(USER.id());
+       tmpl.folder(new CGI().param('folder'));
        tmpl.data(js2JSON(oilsRpt.def));
 
+       _debug('folder = ' + tmpl.folder());
+
+       if(!confirm('Name : '+tmpl.name() + '\nDescription: ' + tmpl.description()+'\nSave Template?'))
+               return;
+
+
        var req = new Request(OILS_RPT_CREATE_TEMPLATE, SESSION, tmpl);
        req.callback(
                function(r) {
index fd7d5e7..c7ffcf8 100644 (file)
                                                <table id='oils_rpt_name_table'><tbody>
                                                        <tr>
                                                                <td width='20%'>Template Name: </td>
-                                                               <td><input size='32' onchange="oilsRpt.name=this.value"/></td>
+                                                               <td><input size='32' id='oils_rpt_builder_new_name'/></td>
                                                        </tr><tr>
                                                                <td>Template Description: </td>
-                                                               <td><textarea cols='50' rows='2' id='oils_rpt_builder_desc_text' onchange='oilsRpt.desc = this.value;'/></td>
+                                                               <td><textarea cols='50' rows='2' id='oils_rpt_builder_new_desc'/></td>
                                                        </tr><tr>
                                                                <td>Template Type: </td>
                                                                <td><select id='oils_rpt_builder_type_selector'/></td>
index c3ab9bc..9874dea 100644 (file)
@@ -26,6 +26,7 @@ function oilsRptFolderWindow(type, folderId) {
 oilsRptFolderWindow.prototype.draw = function() {
        unHideMe(DOM.oils_rpt_folder_window_contents_div);
        hideMe(DOM.oils_rpt_folder_manager_div);
+       hideMe(DOM.oils_rpt_top_folder);
 
        DOM.oils_rpt_folder_window_manage_tab.onclick = function() {
                unHideMe(DOM.oils_rpt_folder_window_contents_div);
@@ -62,6 +63,18 @@ oilsRptFolderWindow.prototype.draw = function() {
 }
 
 oilsRptFolderWindow.prototype.drawEditActions = function() {
+
+       DOM.oils_rpt_folder_window_contents_new_template.onclick = function() {
+               var s = location.search+'';
+               s = s.replace(/\&folder=\d+/,'');
+               goTo( 'oils_rpt_builder.xhtml'+s+'&folder='+obj.folderNode.folder.id());
+       }
+
+       if( this.type == 'template' )
+               unHideMe(DOM.oils_rpt_folder_window_contents_new_template)
+       else
+               hideMe(DOM.oils_rpt_folder_window_contents_new_template)
+
        if( this.folderNode.folder.owner().id() != USER.id() )
                hideMe(DOM.oils_rpt_folder_manager_tab_table);
        else
@@ -95,9 +108,6 @@ oilsRptFolderWindow.prototype.drawEditActions = function() {
                        case 'delete':
                                obj.doFolderDelete();
                                break;
-                       case 'create_template':
-                               goTo( 'oils_rpt_builder.xhtml'+location.search+'&folder='+obj.folderNode.folder.id());
-                               break;
                }
        }
 
@@ -120,6 +130,7 @@ oilsRptFolderWindow.prototype.doFolderAction = function() {
                case 'create_report' :
                        hideMe(DOM.oils_rpt_folder_table_right_td);
                        unHideMe(DOM.oils_rpt_folder_table_alt_td);
+                       unHideMe(DOM.oils_rpt_editor_div);
                        new oilsRptReportEditor(new oilsReport(objs[0]), this);
                        break;
                case 'delete_report' :
index 083f7ba..f6df979 100644 (file)
@@ -1,11 +1,13 @@
 <div id='oils_rpt_folder_window_contents_div'>
+       <div style='width:100%;text-align: center; margin: 10px;'>
+               <a id='oils_rpt_folder_window_contents_new_template' href='javascript:void(0);'><b>Create a new Template</b></a>
+       </div>
        <table id='oils_rpt_folder_window_contents_table'>
                <tbody>
                        <tr>
                                <td> 
                                        <span>
                                                <select id='oils_rpt_folder_contents_action_selector' style='width: auto;'>
-                                                       <option value='create_template' type='template'>Create a new template in this folder</option>
                                                        <option type='template' value='create_report'>Create a new report from selected template</option>
                                                        <option type='template' value='clone_template'>Clone selected template</option>
                                                        <option type='template' value='delete_template'>Delete selected template(s)</option>
index 9817811..fb7c8b0 100644 (file)
@@ -31,13 +31,29 @@ oilsRptFolderManager.prototype.draw = function(auth) {
        removeChildren(DOM.oils_rpt_report_shared_folder_tree); 
        removeChildren(DOM.oils_rpt_output_shared_folder_tree); 
 
+       var obj = this;
+       var orgsel = new oilsRptMyOrgsWidget(
+               DOM.oils_rpt_top_folder_lib_picker, USER.ws_ou());
+       orgsel.draw();
+
        oilsRptTemplateFolderTree = 
                new SlimTree(
                        DOM.oils_rpt_template_folder_tree, 
                        'oilsRptTemplateFolderTree');
                        //'images/template-page.gif');
 
-       oilsRptTemplateFolderTree.addNode(this.tId, -1, 'Templates')
+       oilsRptTemplateFolderTree.addNode(this.tId, -1, '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'));
+                       hideMe(DOM.oils_rpt_folder_table_right_td);
+                       DOM.oils_rpt_top_folder_create.onclick = function() {
+                               obj.createTopFolder('template', orgsel);
+                       }
+               }
+       );
 
        oilsRptReportFolderTree = 
                new SlimTree(
@@ -45,7 +61,20 @@ oilsRptFolderManager.prototype.draw = function(auth) {
                        'oilsRptReportFolderTree');
                        //'images/report-page.gif');
 
-       oilsRptReportFolderTree.addNode(this.rId, -1, 'Reports')
+
+       oilsRptReportFolderTree.addNode(this.rId, -1, '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'));
+                       DOM.oils_rpt_top_folder_create.onclick = function() {
+                               obj.createTopFolder('report', orgsel);
+                       }
+               }
+       );
+
 
 
        oilsRptOutputFolderTree = 
@@ -54,7 +83,19 @@ oilsRptFolderManager.prototype.draw = function(auth) {
                        'oilsRptOutputFolderTree');
                        //'images/output-page.gif');
 
-       oilsRptOutputFolderTree.addNode(this.oId, -1, 'Output')
+       oilsRptOutputFolderTree.addNode(this.oId, -1, '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'));
+                       DOM.oils_rpt_top_folder_create.onclick = function() {
+                               obj.createTopFolder('output', orgsel);
+                       }
+               }
+       );
+
 
        oilsRptSharedTemplateFolderTree = 
                new SlimTree(
@@ -64,6 +105,7 @@ oilsRptFolderManager.prototype.draw = function(auth) {
 
        oilsRptSharedTemplateFolderTree.addNode(this.stId, -1, 'Templates')
 
+
        oilsRptSharedReportFolderTree = 
                new SlimTree(
                        DOM.oils_rpt_report_shared_folder_tree, 
@@ -83,6 +125,36 @@ oilsRptFolderManager.prototype.draw = function(auth) {
        this.fetchFolders(auth);
 }
 
+oilsRptFolderManager.prototype.createTopFolder = function(type, orgsel) {
+
+       if( type == 'report' ) folder = new rrf();
+       if( type == 'template' ) folder = new rtf();
+       if( type == 'output' ) folder = new rof();
+
+       folder.owner(USER.id());
+       folder.parent(null);
+       folder.name(DOM.oils_rpt_top_folder_name.value);
+       folder.shared(getSelectorVal(DOM.oils_rpt_top_folder_shared));
+
+       if( folder.shared() == 't' )
+               folder.share_with( orgsel.getValue() );
+
+       if(confirm(DOM.oils_rpt_folder_manager_new_confirm.innerHTML + ' "'+folder.name()+'"')) {
+               oilsRptCreateFolder(folder, type,
+                       function(success) {
+                               if(success) {
+                                       oilsRptAlertSuccess();
+                                       oilsRptCurrentFolderManager.draw();
+                                       hideMe(DOM.oils_rpt_top_folder);
+                                       hideMe(DOM.oils_rpt_folder_table_alt_td);
+                                       unHideMe(DOM.oils_rpt_editor_div);
+                               }
+                       }
+               );
+       }
+}
+
+
 oilsRptFolderManager.prototype.fetchFolders = function(auth) {
        var obj = this;
        var req = new Request(OILS_RPT_FETCH_FOLDERS, auth, 'template');