""" An AJAX based theme """ import pyflag.conf config=pyflag.conf.ConfObject() import pyflag.FlagFramework as FlagFramework import pyflag.Registry as Registry import pyflag.Theme as Theme import pyflag.DB as DB from plugins.Themes.Menus import Menu class AJAX(Menu): header=''' %s
Search Column
Search expression:
''' footer="\n" def make_menu_javascript(self,query): """ Creates the javascript required to generate the menu """ ## Find all families: module_list = Registry.REPORTS.get_families() Theme.order_families(module_list) menus = [] menus_titles=[] result = '' for k in module_list: submenu_text = '' ## Add the reports in the family: report_list = Registry.REPORTS.family[k] for r in report_list: if r.hidden: continue submenu_text+='''
\n''' % (r.name,FlagFramework.query_type((),family=k,report=r.name)) if len(submenu_text)>0: menus.append('
%s
\n' % (k,submenu_text)) menus_titles.append('
\n'%(k,k)) return result+''' %s
''' % ('\n'.join(menus),'\n'.join(menus_titles)) def naked_render(self,data='',ui=None,title="FLAG - Forensic Log Analysis GUI. %s" % config.VERSION): """ Render the ui with minimal interventions """ result= data #print result return result def render(self, query=FlagFramework.query_type(()), meta='',data='',next=None,previous=None,pageno=None,ui=None,title="FLAG - Forensic Log Analysis GUI. %s" % config.VERSION): ## This is a little scriptlet to ensure we are loaded within ## dojo environment FIXME: How do we solve the link problem? ## Is it possible? The problem is that the URL is not enough ## to specify the state because it might include stored UIs. if not query.has_key('__main__'): result = '' else: result = '' #print data+result return data+result def raw_render(self,data='',ui=None,title="FLAG - Forensic Log Analysis GUI. %s" % config.VERSION): #print data return data def menu(self,flag,query, result): result=flag.ui() self.menu_javascript = self.make_menu_javascript(query) title="FLAG - Forensic Log Analysis GUI. %s" % config.VERSION result.result+=" ".join( (self.header % (title), '''
''', self.menu_javascript,)) ## If we have something to put in the main pane we put it here:' del query['__main__'] result.result+= '''
''' ## Now create the initial front page: result.result+="" + self.footer try: result.result+=''' ''' % (query['__pane__'],query) except KeyError: pass return result