Ignore:
Timestamp:
24/05/06 10:18:57 (16 years ago)
Author:
lawrence
Message:

Further changes associated with the browse/discovery
look and feel

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browseCGI.py

    r991 r996  
    1515from renderEntity import renderEntity 
    1616from renderPage import renderPage 
     17from renderDiscoverySet import renderDiscoverySet 
    1718from Utilities import * 
    1819from ETxmlView import * 
     20from DiscoveryWS import * 
    1921 
    2022import Cookie 
     
    2527        to work with the discovery portal as well ''' 
    2628         
    27         def __init__(self,cookie,url,config): 
     29        def __init__(self,cookie,config): 
    2830                 
    2931                '''Instantiate with an unsecured browse session (security only 
     
    3436                self.history=RingBuffer(10) 
    3537                self.__loadBrowseHistory() 
    36                 self.url=url  
    3738         
    3839        def __toXML(self): 
     
    9697                ''' This method actually responds to the user''' 
    9798                 
    98                 #Instantiate the Session Environment 
     99                self.ViewTextOnly,self.ViewXML=0,0 
     100                 
     101                #Instantiate the Session Environment 
    99102                self.cookie=self.env.get('HTTP_COOKIE',None) 
    100  
     103                self.session=BrowseSession(self.cookie,self.config) 
     104                if self.config.logfile is not None: self.config.log(self.cookie) 
     105                 
    101106                #this will do for the moment, although I'd rather the whole 
    102107                #URI was self consistent ... 
    103108                 
     109                #use name as an error return as well in the following calls ... 
    104110                if self.FieldStorage.has_key('uri'): 
    105111                        self.uri=self.FieldStorage['uri'].value 
    106                 else:  
     112                        content,name=self.__browse() 
     113                elif self.FieldStorage.has_key('search'): 
     114                        self.searchType=self.FieldStorage['search'].value 
     115                        content,name=self.__search() 
     116                else:  
    107117                        self.response.content=self.error('No valid URI') 
    108118                        return self.response 
    109                  
    110                 self.ViewTextOnly,self.ViewXML=0,0 
     119                
     120                if not self.ViewTextOnly and name !=0: 
     121                    historyHTML='<p>' 
     122                    for item in self.session.getHistory(): 
     123                        historyHTML+='<a href="%s">%s</a><br/>'%item 
     124                    historyHTML+='</p>' 
     125                    self.response.content=renderPage( 
     126                        content,historyHTML,historyHTML,name,self.config) 
     127                else: 
     128                    self.response.content=content 
     129                return self.response 
     130                 
     131        def __browse(self): 
     132                ''' Handle orthodox browsing ''' 
     133                 
    111134                if self.FieldStorage.has_key('text'): 
    112135                    self.ViewTextOnly=1 
     
    116139                if self.FieldStorage.has_key('ndgSec'): 
    117140                    pass 
    118                      
    119                 self.session=BrowseSession(self.cookie,self.uri,self.config) 
    120                  
    121                 if self.config.logfile is not None: self.config.log(self.cookie) 
    122                  
     141                 
    123142                #this is where we invoke NDG security setup 
    124143                self.makeGateway() 
     
    133152                if self.b.xml is None: 
    134153                    content=self.error('Unable to obtain stub-B from database') 
     154                    return content,0 
    135155                else: 
    136156                    self.session.addToHistory(self.b.Burl,self.b.abbreviation) 
     
    146166                        access=1 
    147167                    if access: 
     168                        name=self.b.name 
    148169                        if self.ViewTextOnly: 
    149170                            self.response.contentType='text/plain' 
     
    154175                            content=self.b.toHTML() 
    155176                    else: 
     177                        name='NDG Browse' 
    156178                        content=result 
    157                  
    158                 if not self.ViewTextOnly: 
    159                     historyHTML='<p>' 
    160                     for item in self.session.getHistory(): 
    161                         historyHTML+='<a href="%s">%s</a><br/>'%item 
    162                     historyHTML+='</p>' 
    163                     self.response.content=renderPage( 
    164                         content,historyHTML,historyHTML,self.b.name,self.config) 
    165                 else: 
    166                     self.response.content=content 
    167                  
    168                 return self.response 
    169                  
     179 
     180                    return content,name 
     181                 
     182        def __search(self): 
     183            ''' Handle simple searching within the context of the browse ''' 
     184            if self.FieldStorage.has_key('SEARCHSTRING'): 
     185                searchString=self.FieldStorage['SEARCHSTRING'].value 
     186                ws=DiscoveryWS() 
     187                ws.SearchFullText(searchString) 
     188                results=ws.GetResults(number=5) 
     189                difs=[] 
     190                for result in results: 
     191                    difs.append(xmlCleanup(result)) 
     192                html=renderDiscoverySet(difs,summary=1,spatial=1,temporal=1) 
     193                title='Search for '+searchString 
     194                return html,title 
     195            else: 
     196                return self.error('No valid search optoin'),0 
     197               
    170198        def error(self,message): 
    171199                ''' Construct a nice formal response, but don't throw a 404 ... ''' 
Note: See TracChangeset for help on using the changeset viewer.