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 var node = oilsRptCurrentFolderManager.findNode(type, folderId);
19 this.selector = DOM.oils_rpt_folder_contents_selector;
20 this.folderNode = node;
25 oilsRptFolderWindow.prototype.draw = function() {
27 _debug(this.folderNode.folder.owner().id() + ' : ' + USER.id());
29 if( this.folderNode.folder.owner().id() == USER.id() && this.type == 'template')
30 unHideMe(DOM.oils_rpt_folder_window_contents_new_template.parentNode);
31 else hideMe(DOM.oils_rpt_folder_window_contents_new_template.parentNode);
33 unHideMe(DOM.oils_rpt_folder_window_contents_div);
34 hideMe(DOM.oils_rpt_folder_manager_div);
35 hideMe(DOM.oils_rpt_top_folder);
37 DOM.oils_rpt_folder_window_manage_tab.onclick = function() {
38 unHideMe(DOM.oils_rpt_folder_window_contents_div);
39 hideMe(DOM.oils_rpt_folder_manager_div);
41 DOM.oils_rpt_folder_window_edit_tab.onclick = function() {
42 hideMe(DOM.oils_rpt_folder_window_contents_div);
43 unHideMe(DOM.oils_rpt_folder_manager_div);
46 this.setFolderEditActions();
48 hideMe(DOM.oils_rpt_template_folder_new_report);
49 unHideMe(DOM.oils_rpt_folder_table_right_td);
50 hideMe(DOM.oils_rpt_folder_table_alt_td);
51 this.drawFolderDetails();
54 DOM.oils_rpt_folder_content_action_go.onclick =
55 function() {obj.doFolderAction()}
57 this.fetchFolderData();
59 var sel = DOM.oils_rpt_folder_contents_action_selector;
61 for( var i = 0; i < sel.options.length; i++ ) {
62 var opt = sel.options[i];
63 if( opt.getAttribute('type') == this.type ) {
64 if(x) opt.selected = true;
70 sel.options[0].selected = true;
72 this.drawEditActions();
75 oilsRptFolderWindow.prototype.drawEditActions = function() {
77 DOM.oils_rpt_folder_window_contents_new_template.onclick = function() {
78 var s = location.search+'';
79 s = s.replace(/\&folder=\d+/,'');
80 goTo( 'oils_rpt_builder.xhtml'+s+'&folder='+obj.folderNode.folder.id());
84 if( this.folderNode.folder.owner().id() != USER.id() )
85 hideMe(DOM.oils_rpt_folder_manager_tab_table);
87 unHideMe(DOM.oils_rpt_folder_manager_tab_table);
89 if( isTrue(this.folderNode.folder.shared())) {
90 DOM.oils_rpt_folder_manager_share_opt.disabled = true;
91 DOM.oils_rpt_folder_manager_unshare_opt.disabled = false;
93 DOM.oils_rpt_folder_manager_share_opt.disabled = false;
94 DOM.oils_rpt_folder_manager_unshare_opt.disabled = true;
97 this.hideFolderActions();
100 DOM.oils_rpt_folder_manager_actions_submit.onclick = function() {
101 var act = getSelectorVal(DOM.oils_rpt_folder_manager_actions);
102 _debug("doing folder action: " + act);
103 obj.hideFolderActions();
106 unHideMe(DOM.oils_rpt_folder_manager_change_name_div);
108 case 'create_sub_folder':
109 unHideMe(DOM.oils_rpt_folder_manager_create_sub);
110 obj.myOrgSelector = new oilsRptMyOrgsWidget(
111 DOM.oils_rpt_folder_manager_sub_lib_picker, USER.ws_ou());
112 obj.myOrgSelector.draw();
115 obj.doFolderDelete();
123 oilsRptFolderWindow.prototype.hideFolderActions = function() {
124 hideMe(DOM.oils_rpt_folder_manager_change_name_div);
125 hideMe(DOM.oils_rpt_folder_manager_create_sub);
129 oilsRptFolderWindow.prototype.doFolderAction = function() {
130 var objs = this.fmTable.getSelected();
131 if( objs.length == 0 )
132 return alert('Please select an item from the list');
133 var action = getSelectorVal(DOM.oils_rpt_folder_contents_action_selector);
136 case 'create_report' :
137 hideMe(DOM.oils_rpt_folder_table_right_td);
138 unHideMe(DOM.oils_rpt_folder_table_alt_td);
139 unHideMe(DOM.oils_rpt_editor_div);
140 new oilsRptReportEditor(new oilsReport(objs[0]), this);
142 case 'delete_report' :
143 for(var r = 0; r < objs.length; r++)
144 this.deleteReport(objs[r]);
146 case 'delete_template' :
147 for(var r = 0; r < objs.length; r++)
148 this.deleteTemplate(objs[r]);
151 this.showOutput(objs[0]);
159 oilsRptFolderWindow.prototype.showOutput = function(sched) {
160 oilsRptFetchReport(sched.report(),
162 var url = oilsRptBuildOutputLink(r.template(), r.id(), sched.id());
169 oilsRptFolderWindow.prototype.deleteReport = function(report) {
170 if(!confirmId('oils_rpt_folder_contents_confirm_report_delete')) return;
171 var req = new Request(OILS_RPT_DELETE_REPORT, SESSION, report.id());
174 var res = r.getResultObject();
176 oilsRptAlertSuccess();
177 oilsRptCurrentFolderManager.draw();
184 oilsRptFolderWindow.prototype.deleteTemplate = function(tmpl) {
185 var req0 = new Request( OILS_RPT_TEMPLATE_HAS_RPTS, SESSION, tmpl.id() );
188 var resp = r0.getResultObject();
190 return alertId('oils_rpt_folder_contents_template_no_delete');
191 if(!confirmId('oils_rpt_folder_contents_confirm_template_delete')) return;
192 var req = new Request(OILS_RPT_DELETE_TEMPLATE, SESSION, tmpl.id());
195 var res = r.getResultObject();
197 oilsRptAlertSuccess();
198 oilsRptCurrentFolderManager.draw();
210 oilsRptFolderWindow.prototype.drawFolderDetails = function() {
211 appendClear(DOM.oils_rpt_folder_creator_label,
212 text(this.folderNode.folder.owner().usrname()));
213 appendClear(DOM.oils_rpt_folder_name_label,
214 text(this.folderNode.folder.name()));
218 oilsRptFolderWindow.prototype.fetchFolderData = function(callback) {
219 removeChildren(this.selector);
220 var req = new Request(OILS_RPT_FETCH_FOLDER_DATA,
221 SESSION, this.type, this.folderNode.folder.id());
223 if(this.type == 'output')
224 req = new Request(OILS_RPT_FETCH_OUTPUT, SESSION, this.folderNode.folder.id());
228 removeChildren(obj.selector);
231 var res = r.getResultObject();
232 obj.fmTable = drawFMObjectTable(
237 selectColName : 'Select',
238 selectAllName : 'All',
239 selectNoneName : 'None'
242 if(callback) callback();
249 oilsRptFolderWindow.prototype.setSelected = function(folderNode) {
250 this.selectedFolder = folderNode;
253 oilsRptFolderWindow.prototype.setFolderEditActions = function() {
254 var folder = this.folderNode.folder;
257 DOM.oils_rpt_folder_manager_name_input.value = folder.name();
258 DOM.oils_rpt_folder_manager_change_name_submit.onclick = function() {
259 var name = DOM.oils_rpt_folder_manager_name_input.value;
262 if(confirmId('oils_rpt_folder_manager_change_name_confirm')) {
263 oilsRptUpdateFolder(folder, obj.type,
266 oilsRptAlertSuccess();
267 oilsRptCurrentFolderManager.draw();
275 DOM.oils_rpt_folder_manager_sub_lib_create.onclick = function() {
278 if( obj.type == 'report' ) folder = new rrf();
279 if( obj.type == 'template' ) folder = new rtf();
280 if( obj.type == 'output' ) folder = new rof();
282 folder.owner(USER.id());
283 folder.parent(obj.folderNode.folder.id());
284 folder.name(DOM.oils_rpt_folder_manager_sub_name.value);
285 var shared = getSelectorVal(DOM.oils_rpt_folder_manager_sub_shared);
286 folder.shared( (shared == 'yes') ? 't' : 'f');
287 if( folder.shared() == 't' )
288 folder.share_with( obj.myOrgSelector.getValue() );
290 if(confirm(DOM.oils_rpt_folder_manager_new_confirm.innerHTML + ' "'+folder.name()+'"')) {
291 oilsRptCreateFolder(folder, obj.type,
294 oilsRptAlertSuccess();
295 oilsRptCurrentFolderManager.draw();
304 oilsRptFolderWindow.prototype.doFolderDelete = function() {
306 var cache = oilsRptFolderNodeCache[this.type];
307 /* let's see if this folder has any children */
308 for( var c in cache )
309 if( cache[c].folder.parent() == this.folderNode.folder.id() )
310 return alertId('oils_rpt_folder_cannot_delete');
312 /* lets see if the folder has contents */
313 var req = new Request(OILS_RPT_FETCH_FOLDER_DATA,
314 SESSION, this.type, this.folderNode.folder.id());
321 var contents = r.getResultObject();
322 if( contents.length > 0 )
323 return alertId('oils_rpt_folder_cannot_delete');
325 if( confirmId('oils_rpt_folder_manager_delete_confirm') ) {
326 var req2 = new Request(OILS_RPT_DELETE_FOLDER,
327 SESSION, obj.type, obj.folderNode.folder.id());
331 var res = r2.getResultObject();
333 oilsRptAlertSuccess();
334 oilsRptCurrentFolderManager.draw();
336 else alert('error: '+js2JSON(res));