2 function oilsRptFetchTemplate(id) {
3 var t = oilsRptGetCache('rt', id);
5 var r = new Request(OILS_RPT_FETCH_TEMPLATE, SESSION, id);
8 oilsRptCacheObject('rt', t, id);
14 /* generic folder window class */
15 oilsRptSetSubClass('oilsRptFolderWindow', 'oilsRptObject');
16 function oilsRptFolderWindow(type, folderId) {
18 _debug("initted folderwindow with id "+this.id);
19 var node = oilsRptCurrentFolderManager.findNode(type, folderId);
20 this.selector = DOM.oils_rpt_folder_contents_selector;
21 this.folderNode = node;
26 oilsRptFolderWindow.prototype.draw = function() {
27 unHideMe(DOM.oils_rpt_folder_window_contents_div);
28 hideMe(DOM.oils_rpt_folder_manager_div);
29 hideMe(DOM.oils_rpt_top_folder);
31 DOM.oils_rpt_folder_window_manage_tab.onclick = function() {
32 unHideMe(DOM.oils_rpt_folder_window_contents_div);
33 hideMe(DOM.oils_rpt_folder_manager_div);
35 DOM.oils_rpt_folder_window_edit_tab.onclick = function() {
36 hideMe(DOM.oils_rpt_folder_window_contents_div);
37 unHideMe(DOM.oils_rpt_folder_manager_div);
40 this.setFolderEditActions();
42 hideMe(DOM.oils_rpt_template_folder_new_report);
43 unHideMe(DOM.oils_rpt_folder_table_right_td);
44 hideMe(DOM.oils_rpt_folder_table_alt_td);
45 this.drawFolderDetails();
48 DOM.oils_rpt_folder_content_action_go.onclick =
49 function() {obj.doFolderAction()}
51 this.fetchFolderData();
53 var sel = DOM.oils_rpt_folder_contents_action_selector;
54 for( var i = 0; i < sel.options.length; i++ ) {
55 var opt = sel.options[i];
56 if( opt.getAttribute('type') == this.type )
61 this.drawEditActions();
65 oilsRptFolderWindow.prototype.drawEditActions = function() {
67 DOM.oils_rpt_folder_window_contents_new_template.onclick = function() {
68 var s = location.search+'';
69 s = s.replace(/\&folder=\d+/,'');
70 goTo( 'oils_rpt_builder.xhtml'+s+'&folder='+obj.folderNode.folder.id());
73 if( this.type == 'template' )
74 unHideMe(DOM.oils_rpt_folder_window_contents_new_template)
76 hideMe(DOM.oils_rpt_folder_window_contents_new_template)
78 if( this.folderNode.folder.owner().id() != USER.id() )
79 hideMe(DOM.oils_rpt_folder_manager_tab_table);
81 unHideMe(DOM.oils_rpt_folder_manager_tab_table);
83 if( isTrue(this.folderNode.folder.shared())) {
84 DOM.oils_rpt_folder_manager_share_opt.disabled = true;
85 DOM.oils_rpt_folder_manager_unshare_opt.disabled = false;
87 DOM.oils_rpt_folder_manager_share_opt.disabled = false;
88 DOM.oils_rpt_folder_manager_unshare_opt.disabled = true;
91 this.hideFolderActions();
94 DOM.oils_rpt_folder_manager_actions_submit.onclick = function() {
95 var act = getSelectorVal(DOM.oils_rpt_folder_manager_actions);
96 _debug("doing folder action: " + act);
97 obj.hideFolderActions();
100 unHideMe(DOM.oils_rpt_folder_manager_change_name_div);
102 case 'create_sub_folder':
103 unHideMe(DOM.oils_rpt_folder_manager_create_sub);
104 obj.myOrgSelector = new oilsRptMyOrgsWidget(
105 DOM.oils_rpt_folder_manager_sub_lib_picker, USER.ws_ou());
106 obj.myOrgSelector.draw();
109 obj.doFolderDelete();
117 oilsRptFolderWindow.prototype.hideFolderActions = function() {
118 hideMe(DOM.oils_rpt_folder_manager_change_name_div);
119 hideMe(DOM.oils_rpt_folder_manager_create_sub);
123 oilsRptFolderWindow.prototype.doFolderAction = function() {
124 var objs = this.fmTable.getSelected();
125 if( objs.length == 0 )
126 return alert('Please select an item from the list');
127 var action = getSelectorVal(DOM.oils_rpt_folder_contents_action_selector);
130 case 'create_report' :
131 hideMe(DOM.oils_rpt_folder_table_right_td);
132 unHideMe(DOM.oils_rpt_folder_table_alt_td);
133 unHideMe(DOM.oils_rpt_editor_div);
134 new oilsRptReportEditor(new oilsReport(objs[0]), this);
136 case 'delete_report' :
137 for(var r = 0; r < objs.length; r++)
138 this.deleteReport(objs[r]);
140 case 'delete_template' :
141 for(var r = 0; r < objs.length; r++)
142 this.deleteTemplate(objs[r]);
149 oilsRptFolderWindow.prototype.deleteReport = function(report) {
150 if(!confirmId('oils_rpt_folder_contents_confirm_report_delete')) return;
151 var req = new Request(OILS_RPT_DELETE_REPORT, SESSION, report.id());
154 var res = r.getResultObject();
156 oilsRptAlertSuccess();
157 oilsRptCurrentFolderManager.draw();
164 oilsRptFolderWindow.prototype.deleteTemplate = function(tmpl) {
165 var req0 = new Request( OILS_RPT_TEMPLATE_HAS_RPTS, SESSION, tmpl.id() );
168 var resp = r0.getResultObject();
170 return alertId('oils_rpt_folder_contents_template_no_delete');
171 if(!confirmId('oils_rpt_folder_contents_confirm_template_delete')) return;
172 var req = new Request(OILS_RPT_DELETE_TEMPLATE, SESSION, tmpl.id());
175 var res = r.getResultObject();
177 oilsRptAlertSuccess();
178 oilsRptCurrentFolderManager.draw();
190 oilsRptFolderWindow.prototype.drawFolderDetails = function() {
191 appendClear(DOM.oils_rpt_folder_creator_label,
192 text(this.folderNode.folder.owner().usrname()));
193 appendClear(DOM.oils_rpt_folder_name_label,
194 text(this.folderNode.folder.name()));
198 oilsRptFolderWindow.prototype.fetchFolderData = function(callback) {
199 removeChildren(this.selector);
200 var req = new Request(OILS_RPT_FETCH_FOLDER_DATA,
201 SESSION, this.type, this.folderNode.folder.id());
203 removeChildren(obj.selector);
206 obj.fmTable = drawFMObjectTable(
209 obj : r.getResultObject(),
211 selectColName : 'Select Row'
215 if(callback) callback();
222 oilsRptFolderWindow.prototype.setSelected = function(folderNode) {
223 this.selectedFolder = folderNode;
226 oilsRptFolderWindow.prototype.setFolderEditActions = function() {
227 var folder = this.folderNode.folder;
230 DOM.oils_rpt_folder_manager_name_input.value = folder.name();
231 DOM.oils_rpt_folder_manager_change_name_submit.onclick = function() {
232 var name = DOM.oils_rpt_folder_manager_name_input.value;
235 if(confirmId('oils_rpt_folder_manager_change_name_confirm')) {
236 oilsRptUpdateFolder(folder, obj.type,
239 oilsRptAlertSuccess();
240 oilsRptCurrentFolderManager.draw();
248 DOM.oils_rpt_folder_manager_sub_lib_create.onclick = function() {
251 if( obj.type == 'report' ) folder = new rrf();
252 if( obj.type == 'template' ) folder = new rtf();
253 if( obj.type == 'output' ) folder = new rof();
255 folder.owner(USER.id());
256 folder.parent(obj.folderNode.folder.id());
257 folder.name(DOM.oils_rpt_folder_manager_sub_name.value);
258 var shared = getSelectorVal(DOM.oils_rpt_folder_manager_sub_shared);
259 folder.shared( (shared == 'yes') ? 't' : 'f');
260 if( folder.shared() == 't' )
261 folder.share_with( obj.myOrgSelector.getValue() );
263 _debug("Creating new folder: " + js2JSON(folder));
265 if(confirm(DOM.oils_rpt_folder_manager_new_confirm.innerHTML + ' "'+folder.name()+'"')) {
266 oilsRptCreateFolder(folder, obj.type,
269 oilsRptAlertSuccess();
270 oilsRptCurrentFolderManager.draw();
279 oilsRptFolderWindow.prototype.doFolderDelete = function() {
281 var cache = oilsRptFolderNodeCache[this.type];
282 /* let's see if this folder has any children */
283 for( var c in cache )
284 if( cache[c].folder.parent() == this.folderNode.folder.id() )
285 return alertId('oils_rpt_folder_cannot_delete');
287 /* lets see if the folder has contents */
288 var req = new Request(OILS_RPT_FETCH_FOLDER_DATA,
289 SESSION, this.type, this.folderNode.folder.id());
296 var contents = r.getResultObject();
297 if( contents.length > 0 )
298 return alertId('oils_rpt_folder_cannot_delete');
300 if( confirmId('oils_rpt_folder_manager_delete_confirm') ) {
301 var req2 = new Request(OILS_RPT_DELETE_FOLDER,
302 SESSION, obj.type, obj.folderNode.folder.id());
306 var res = r2.getResultObject();
308 oilsRptAlertSuccess();
309 oilsRptCurrentFolderManager.draw();
311 else alert('error: '+js2JSON(res));