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);
30 DOM.oils_rpt_folder_window_manage_tab.onclick = function() {
31 unHideMe(DOM.oils_rpt_folder_window_contents_div);
32 hideMe(DOM.oils_rpt_folder_manager_div);
34 DOM.oils_rpt_folder_window_edit_tab.onclick = function() {
35 hideMe(DOM.oils_rpt_folder_window_contents_div);
36 unHideMe(DOM.oils_rpt_folder_manager_div);
39 this.setFolderEditActions();
41 hideMe(DOM.oils_rpt_template_folder_new_report);
42 unHideMe(DOM.oils_rpt_folder_table_right_td);
43 hideMe(DOM.oils_rpt_folder_table_alt_td);
44 this.drawFolderDetails();
47 DOM.oils_rpt_folder_content_action_go.onclick =
48 function() {obj.doFolderAction()}
50 this.fetchFolderData();
52 var sel = DOM.oils_rpt_folder_contents_action_selector;
53 for( var i = 0; i < sel.options.length; i++ ) {
54 var opt = sel.options[i];
55 if( opt.getAttribute('type') == this.type )
60 this.drawEditActions();
64 oilsRptFolderWindow.prototype.drawEditActions = function() {
65 if( this.folderNode.folder.owner().id() != USER.id() )
66 hideMe(DOM.oils_rpt_folder_manager_tab_table);
68 unHideMe(DOM.oils_rpt_folder_manager_tab_table);
70 if( isTrue(this.folderNode.folder.shared())) {
71 DOM.oils_rpt_folder_manager_share_opt.disabled = true;
72 DOM.oils_rpt_folder_manager_unshare_opt.disabled = false;
74 DOM.oils_rpt_folder_manager_share_opt.disabled = false;
75 DOM.oils_rpt_folder_manager_unshare_opt.disabled = true;
78 this.hideFolderActions();
81 DOM.oils_rpt_folder_manager_actions_submit.onclick = function() {
82 var act = getSelectorVal(DOM.oils_rpt_folder_manager_actions);
83 _debug("doing folder action: " + act);
84 obj.hideFolderActions();
87 unHideMe(DOM.oils_rpt_folder_manager_change_name_div);
89 case 'create_sub_folder':
90 unHideMe(DOM.oils_rpt_folder_manager_create_sub);
91 obj.myOrgSelector = new oilsRptMyOrgsWidget(
92 DOM.oils_rpt_folder_manager_sub_lib_picker, USER.ws_ou());
93 obj.myOrgSelector.draw();
103 oilsRptFolderWindow.prototype.hideFolderActions = function() {
104 hideMe(DOM.oils_rpt_folder_manager_change_name_div);
105 hideMe(DOM.oils_rpt_folder_manager_create_sub);
109 oilsRptFolderWindow.prototype.doFolderAction = function() {
110 var objs = this.fmTable.getSelected();
111 if( objs.length == 0 )
112 return alert('Please select an item from the list');
113 var action = getSelectorVal(DOM.oils_rpt_folder_contents_action_selector);
116 case 'create_report' :
117 hideMe(DOM.oils_rpt_folder_table_right_td);
118 unHideMe(DOM.oils_rpt_folder_table_alt_td);
119 new oilsRptReportEditor(new oilsReport(objs[0]), this);
125 oilsRptFolderWindow.prototype.drawFolderDetails = function() {
126 appendClear(DOM.oils_rpt_folder_creator_label,
127 text(this.folderNode.folder.owner().usrname()));
128 appendClear(DOM.oils_rpt_folder_name_label,
129 text(this.folderNode.folder.name()));
133 oilsRptFolderWindow.prototype.fetchFolderData = function(callback) {
134 removeChildren(this.selector);
135 var req = new Request(OILS_RPT_FETCH_FOLDER_DATA,
136 SESSION, this.type, this.folderNode.folder.id());
138 removeChildren(obj.selector);
141 obj.fmTable = drawFMObjectTable(
144 obj : r.getResultObject(),
146 selectColName : 'Select Row'
150 if(callback) callback();
157 oilsRptFolderWindow.prototype.setSelected = function(folderNode) {
158 this.selectedFolder = folderNode;
161 oilsRptFolderWindow.prototype.setFolderEditActions = function() {
162 var folder = this.folderNode.folder;
165 DOM.oils_rpt_folder_manager_name_input.value = folder.name();
166 DOM.oils_rpt_folder_manager_change_name_submit.onclick = function() {
167 var name = DOM.oils_rpt_folder_manager_name_input.value;
170 if(confirmId('oils_rpt_folder_manager_change_name_confirm')) {
171 oilsRptUpdateFolder(folder, obj.type,
174 oilsRptAlertSuccess();
175 oilsRptCurrentFolderManager.draw();
183 DOM.oils_rpt_folder_manager_sub_lib_create.onclick = function() {
186 if( obj.type == 'report' ) folder = new rrf();
187 if( obj.type == 'template' ) folder = new rtf();
188 if( obj.type == 'output' ) folder = new rof();
190 folder.owner(USER.id());
191 folder.parent(obj.folderNode.folder.id());
192 folder.name(DOM.oils_rpt_folder_manager_sub_name.value);
193 var shared = getSelectorVal(DOM.oils_rpt_folder_manager_sub_shared);
194 folder.shared( (shared == 'yes') ? 't' : 'f');
195 if( folder.shared() == 't' )
196 folder.share_with( obj.myOrgSelector.getValue() );
198 _debug("Creating new folder: " + js2JSON(folder));
200 if(confirm(DOM.oils_rpt_folder_manager_new_confirm.innerHTML + ' "'+folder.name()+'"')) {
201 oilsRptCreateFolder(folder, obj.type,
204 oilsRptAlertSuccess();
205 oilsRptCurrentFolderManager.draw();
214 oilsRptFolderWindow.prototype.doFolderDelete = function() {
216 var cache = oilsRptFolderNodeCache[this.type];
217 /* let's see if this folder has any children */
218 for( var c in cache )
219 if( cache[c].folder.parent() == this.folderNode.folder.id() )
220 return alertId('oils_rpt_folder_cannot_delete');
222 /* lets see if the folder has contents */
223 var req = new Request(OILS_RPT_FETCH_FOLDER_DATA,
224 SESSION, this.type, this.folderNode.folder.id());
231 var contents = r.getResultObject();
232 if( contents.length > 0 )
233 return alertId('oils_rpt_folder_cannot_delete');
235 if( confirmId('oils_rpt_folder_manager_delete_confirm') ) {
236 var req2 = new Request(OILS_RPT_DELETE_FOLDER,
237 SESSION, obj.type, obj.folderNode.folder.id());
241 var res = r2.getResultObject();
243 oilsRptAlertSuccess();
244 oilsRptCurrentFolderManager.draw();
246 else alert('error: '+js2JSON(res));