Example #1
0
    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")
Example #2
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_')
Example #3
0
    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