5 * @link http://www.open-emr.org
6 * @author Kevin Yeh <kevin.y@integralemr.com>
7 * @copyright Copyright (c) 2016 Kevin Yeh <kevin.y@integralemr.com>
8 * @license https://github.com/openemr/openemr/blob/master/LICENSE GNU General Public License 3
12 targets['Calendar']='lst';
13 targets['Flow Board']='lst';
14 targets['Messages ']='pat';
15 targets['Administration']='adm';
16 targets['Reports']='rep';
17 targets['Miscellaneous']='msc';
19 targets['Patients']='lst';
24 //Billing Menu Restrictions
25 acl_reqs['EDI History']=['acct','eob'];
26 global_reqs['EDI History']='enable_edihistory_in_left_menu'
28 // Administration Menu restrictions
29 acl_reqs['Globals']=['admin','super'];
30 acl_reqs['Facilities']=['admin','users'];
31 acl_reqs['Users']=['admin','users'];
32 acl_reqs['Addr Book']=['admin','practice'];
33 acl_reqs['Practice']=['admin','practice'];
34 acl_reqs['Codes']=['admin','superbill'];
35 acl_reqs['Layouts']=['admin','super'];
36 acl_reqs['Lists']=['admin','super'];
37 acl_reqs['ACL']=['admin','acl'];
38 acl_reqs['Files']=['admin','super'];
39 acl_reqs['Backup']=['admin','super'];
42 acl_reqs['Rules']=['admin','super'];
43 global_reqs['Rules']='enable_cdr'
45 acl_reqs['Alerts']=['admin','super'];
46 global_reqs['Alerts']='enable_cdr'
48 acl_reqs['Patient Reminders']=['admin','super'];
49 global_reqs['Patient Reminders']='enable_cdr'
52 acl_reqs['Language']=['admin','language'];
53 acl_reqs['Forms']=['admin','forms'];
55 acl_reqs['Calendar']=['admin','calendar','main/calendar/index.php?module=PostCalendar&type=admin&func=modifyconfig']
57 acl_reqs['Logs']=['admin','users'];
59 acl_reqs['Certificates']=['admin','users'];
61 acl_reqs['Native Data Loads']=['admin','super'];
62 acl_reqs['External Data Loads']=['admin','super'];
63 acl_reqs['Merge Patient']=['admin','super'];
65 global_reqs['Fax/Scan']=['enable_hylafax','enable_scanner'];
68 function set_acl_reqs(entry)
72 if(entry.label in acl_reqs)
74 var reqs=acl_reqs[entry.label];
77 if(entry.url.indexOf(reqs[2])!==-1)
79 entry.acl_req=[reqs[0],reqs[1]];
84 entry.acl_req=acl_reqs[entry.label];
87 if(entry.label in global_reqs)
89 entry.global_req=global_reqs[entry.label];
94 function setTarget(entry,target)
102 for(var idx=0;idx<entry.children.length;idx++)
104 setTarget(entry.children[idx],target);
108 function post_process(menu_entries)
110 for(var idx=0;idx<menu_entries.length;idx++)
112 var curEntry=menu_entries[idx];
113 set_acl_reqs(curEntry);
114 if(curEntry.label in targets)
116 setTarget(curEntry,targets[curEntry.label]);
118 post_process(curEntry.children);
121 function parse_link(link,entry)
125 var parameters=link.substring(link.indexOf('(')+1,link.indexOf(')'));
130 if(link.indexOf("loadFrame2")===-1)
132 var url=parameters.replace(/'/g,"").replace(/"/g,"").replace("../","/interface/");
134 entry.target="report";
138 parameters=parameters.replace(/'/g,"").replace(/"/g,"");
139 var params=parameters.split(",");
140 entry.target=params[1];
141 if(entry.target==='RTop')
145 if(entry.target==='RBot')
151 entry.url=params[2].replace("../","/");
152 if(entry.url.indexOf("/")>0)
154 entry.url="/interface/"+entry.url;
161 function menu_entry(label,link,menu_id)
165 self.menu_id=menu_id;
166 parse_link(link,self);
169 self.helperText=helperText;
173 if(menu_id.charAt(3)==='1')
175 if(self.label==='Summary')
185 if(menu_id.charAt(3)==='2')
189 // Special case for "Current" visit entry
190 if(self.label==="Current")
201 function menu_entry_from_jq(elem)
203 return new menu_entry(elem.text(),elem.attr("onClick"),elem.attr("id"));
206 function analyze_menu()
208 alert('I think you will never see this. --Rod'); // debugging
212 setTimeout(analyze_menu,1000);
220 setTimeout(analyze_menu,1000);
224 var jqLeft=top.left_nav.$(top.left_nav.document);
225 var $=top.left_nav.$;
226 jqLeft.ready(function(){
228 var menuTop=jqLeft.find("#navigation-slide");
229 menuTop.children().each(
234 var anchor=jqElem.children("a");
235 var subMenu = jqElem.children("ul");
237 var newEntry=menu_entry_from_jq(anchor);
240 // 2 (Second) level menu items
241 subMenu.children("li").each(function(idx,elem)
243 var sub_anchor=$(elem).children("a");
244 var sub_entry=menu_entry_from_jq(sub_anchor);
245 if(sub_anchor.length!==1)
247 alert(sub_anchor.text());
249 var subSubMenu=$(elem).children("ul");
250 //Third Level Menu Items
251 if(subSubMenu.length>0 && sub_entry.label !=="Visit Forms")
253 subSubMenu.children("li").each(function(idx,elem)
255 var sub_sub_anchor=$(elem).children("a");
256 var sub_sub_entry=menu_entry_from_jq(sub_sub_anchor);
257 sub_entry.children.push(sub_sub_entry);
262 //End Third Level Menu Items
263 newEntry.children.push(sub_entry);
265 // End Second level menu items
267 menu_entries.push(newEntry);
273 var popups = jqLeft.find("select[name='popups'] option");
274 var popups_menu_header=new menu_entry("Popups","","popup");
275 menu_entries.push(popups_menu_header);
276 popups.each(function(idx,elem)
279 if(jqElem.val()!=='')
281 var popup_entry=new menu_entry(jqElem.text(),jqElem.val(),"Popup:"+jqElem.text());
282 popup_entry.target="pop";
283 popup_entry.requirement=1;
284 popups_menu_header.children.push(popup_entry);
289 post_process(menu_entries);
290 var data=$("<div id='#menuData'></div>");
291 data.text("$menu_json=\""+JSON.stringify(menu_entries).replace(/"/g,"\\\"")+"\";");
292 $("body").append(data);
295 var toID=setTimeout(analyze_menu,1000);