def menu_iframemenuPane(self, pane, **kwargs): b = Bag() b['root'] = MenuResolver(path=getattr(self,'menu_path',None), pagepath=self.pagepath,_page=self) b.getIndex() pane.data('gnr.appmenu', b) #leftPane = parentBC.contentPane(width='20%',_class='menupane',**kwargs) pane.tree(id="_gnr_main_menu_tree", storepath='gnr.appmenu.root', selected_file='gnr.filepath', labelAttribute='label', hideValues=True, _class='menutree', persist='site', inspect='shift', identifier='#p', getIconClass='return node.attr.iconClass || "treeNoIcon"', getLabelClass="return node.attr.labelClass;", openOnClick=True, connect_onClick="""var labelClass= $1.attr.labelClass; if(labelClass.indexOf('menu_existing_page')<0){ $1.setAttribute('labelClass',labelClass+' menu_existing_page'); } var inattr = $1.getInheritedAttributes(); this.publish("selected", objectUpdate({name:$1.label,pkg_menu:inattr.pkg_menu,"file":null,table:null,formResource:null,viewResource:null,fullpath:$1.getFullpath(null,true),modifiers:$2.__eventmodifier}, $1.attr)); """, autoCollapse=True, nodeId='_menutree_') pane.dataController("genro.wdgById('_gnrRoot').showHideRegion('left', false);", fired='^gnr.onStart', appmenu="=gnr.appmenu", _if="appmenu.len()==0")
def menu_iframemenuPane(self, pane, **kwargs): b = Bag() root_id = None customMenu = self.db.table('adm.menu').getMenuBag(root_id=root_id,userTags=self.userTags) if customMenu: b['root'] = customMenu else: b['root'] = MenuResolver(path=getattr(self,'menu_path',None), pagepath=self.pagepath,_page=self) b.getIndex() pane.data('gnr.appmenu', b) #leftPane = parentBC.contentPane(width='20%',_class='menupane',**kwargs) pane.tree(id="_gnr_main_menu_tree", storepath='gnr.appmenu.root', selected_file='gnr.filepath', labelAttribute='label', hideValues=True, _class='menutree', persist='site', inspect='shift', identifier='#p', getIconClass="""function(item,opened){ if(!item.attr.isDir){ return "treeNoIcon"; } return opened? 'opendir':'closedir'; }""", getLabelClass="return node.attr.labelClass;", openOnClick=True, connect_onClick="""var labelClass= $1.attr.labelClass; if(labelClass.indexOf('menu_existing_page')<0){ $1.setAttribute('labelClass',labelClass+' menu_existing_page'); } var inattr = $1.getInheritedAttributes(); this.publish("selected", objectUpdate({name:$1.label,pkg_menu:inattr.pkg_menu,"file":null,table:null,formResource:null,viewResource:null,fullpath:$1.getFullpath(null,true),modifiers:$2.__eventmodifier}, $1.attr)); """, autoCollapse=True, nodeId='_menutree_')
def getMenuBag(self,root_id=None,userTags=None,exportMode=None): root_id = root_id or self.rootId() q = self.query(where="$hierarchical_pkey LIKE :root_id || '/%%' " , root_id=root_id,columns='*,$hlevel,$page_label,$page_filepath,$page_tbl,$page_metadata', order_by='$_h_count') f = q.fetch() if not f: return result = Bag() app = self.db.application forbidden = [] for i,r in enumerate(f): if userTags is True or (app.checkResourcePermission(r['tags'], userTags) and not r['parent_id'] in forbidden): kw = dict() r = dict(r) if r['page_id']: kw['table'] = r.pop('page_tbl',None) kw['file'] = r.pop('page_filepath',None) if r['page_metadata']: kw.update(asDict(r['page_metadata'])) labelClass = 'menu_shape menu_page' else: kw['isDir'] = True labelClass='menu_shape menu_level_%i' %(r['hlevel']-2) if not exportMode: kw['labelClass'] = labelClass result.setItem(r['hierarchical_pkey'].split('/')[1:],None,label=r['label'],tags=r['tags'], **kw) else: forbidden.append(r['id']) empty = True while empty: empty = False for pathlist,n in result.getIndex(): if n.attr.get('isDir') and ( (n.value is None) or not n.value): result.popNode(pathlist) empty = True return result