1 var oilsRptFolderNodeCache = {};
2 oilsRptFolderNodeCache.template = {};
3 oilsRptFolderNodeCache.report = {};
4 oilsRptFolderNodeCache.output = {};
6 oilsRptSetSubClass('oilsRptFolderManager','oilsRptObject');
8 function oilsRptFolderManager() {
11 this.tId = oilsNextId();
12 this.rId = oilsNextId();
13 this.oId = oilsNextId();
14 this.stId = oilsNextId();
15 this.srId = oilsNextId();
16 this.soId = oilsNextId();
18 this.orgTrail.template = {};
19 this.orgTrail.report = {};
20 this.orgTrail.output = {};
23 oilsRptFolderManager.prototype.draw = function(auth) {
25 oilsRptTemplateFolderTree =
27 DOM.oils_rpt_template_folder_tree,
28 'oilsRptTemplateFolderTree');
29 //'images/template-page.gif');
31 oilsRptTemplateFolderTree.addNode(this.tId, -1, 'Templates')
33 oilsRptReportFolderTree =
35 DOM.oils_rpt_report_folder_tree,
36 'oilsRptReportFolderTree');
37 //'images/report-page.gif');
39 oilsRptReportFolderTree.addNode(this.rId, -1, 'Reports')
42 oilsRptOutputFolderTree =
44 DOM.oils_rpt_output_folder_tree,
45 'oilsRptOutputFolderTree');
46 //'images/output-page.gif');
48 oilsRptOutputFolderTree.addNode(this.oId, -1, 'Output')
50 oilsRptSharedTemplateFolderTree =
52 DOM.oils_rpt_template_shared_folder_tree,
53 'oilsRptSharedTemplateFolderTree');
54 //'images/template-page.gif');
56 oilsRptSharedTemplateFolderTree.addNode(this.stId, -1, 'Templates')
58 oilsRptSharedReportFolderTree =
60 DOM.oils_rpt_report_shared_folder_tree,
61 'oilsRptSharedReportFolderTree');
62 //'images/report-page.gif');
64 oilsRptSharedReportFolderTree.addNode(this.srId, -1, 'Reports')
66 oilsRptSharedOutputFolderTree =
68 DOM.oils_rpt_output_shared_folder_tree,
69 'oilsRptSharedOutputFolderTree');
70 //'images/output-page.gif');
72 oilsRptSharedOutputFolderTree.addNode(this.soId, -1, 'Output')
74 this.fetchFolders(auth);
77 oilsRptFolderManager.prototype.fetchFolders = function(auth) {
79 var req = new Request(OILS_RPT_FETCH_FOLDERS, auth, 'template');
80 req.callback( function(r) { obj.drawFolders('template', r.getResultObject()); } );
83 var req = new Request(OILS_RPT_FETCH_FOLDERS, auth, 'report');
84 req.callback( function(r) { obj.drawFolders('report', r.getResultObject()); } );
87 var req = new Request(OILS_RPT_FETCH_FOLDERS, auth, 'output');
88 req.callback( function(r) { obj.drawFolders('output', r.getResultObject()); } );
93 oilsRptFolderManager.prototype.drawFolders = function(type, folders) {
96 folders = folders.sort(
98 var asw = a.share_with().id();
99 var bsw = b.share_with().id();
100 if( asw ) asw = findOrgDepth(findOrgUnit(asw));
102 if( bsw ) bsw = findOrgDepth(findOrgUnit(bsw));
104 if( asw < bsw ) return 1;
105 if( asw > bsw ) return -1;
111 for( var i = 0; i < folders.length; i++ ) {
112 var folder = folders[i];
113 var id = oilsNextId();
114 var node = { folder : folder, treeId : id };
115 oilsRptFolderNodeCache[type][folder.id()] = node;
116 node.folderWindow = new oilsRptFolderWindow(type, folder.id())
120 for( var i = 0; i < folders.length; i++ ) {
122 var folder = folders[i];
123 var mine = (folder.owner().id() == USER.id());
130 tree = oilsRptTemplateFolderTree;
131 treename = 'oilsRptTemplateFolderTree';
134 tree = oilsRptSharedTemplateFolderTree;
135 treename = 'oilsRptSharedTemplateFolderTree';
141 tree = oilsRptTemplateFolderTree;
142 treename = 'oilsRptTemplateFolderTree';
145 tree = oilsRptSharedTemplateFolderTree;
146 treename = 'oilsRptSharedTemplateFolderTree';
152 tree = oilsRptTemplateFolderTree;
153 treename = 'oilsRptTemplateFolderTree';
156 tree = oilsRptSharedTemplateFolderTree;
157 treename = 'oilsRptSharedTemplateFolderTree';
162 if( folder.parent() )
163 pid = this.findNode(type, folder.parent()).treeId;
167 if(!this.orgTrail[type][folder.share_with().id()]) {
168 tree.addNode(id, pid, folder.share_with().shortname());
172 this.orgTrail[type][folder.share_with().id()] = pid;
174 pid = this.orgTrail[type][folder.share_with().id()];
179 var action = 'javascript:oilsRptObject.find('+
180 node.folderWindow.id+').draw();'+treename+'.toggle("'+id+'");';
181 _debug('adding node '+folder.name()+' pid = '+pid);
182 tree.addNode(id, pid, folder.name(), action);
188 oilsRptFolderManager.prototype.findNode = function(type, id) {
189 return oilsRptFolderNodeCache[type][id];