Changeset 1006


Ignore:
Timestamp:
24/05/06 22:01:06 (13 years ago)
Author:
lawrence
Message:

More discovery/browse convergence, starting support
for linking to services ...

Location:
TI07-MOLES/trunk/StubB/XSLT/browse/portal
Files:
8 edited

Legend:

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

    r996 r1006  
    6161        #that would include any security info ... 
    6262         
    63         self.services=[] 
    64         for item in self.elem.find('Related_URL'): 
     63        self.services={} 
     64        for item in self.elem.findall('Related_URL'): 
    6565            s=Service() 
    66             s.name=item.find('URL_Content_Type') 
    67             s.description=item.find('Description') 
    68             s.url=item.find('URL') 
    69             self.services.append(s) 
     66            s.name=wrapGetText(item,'URL_Content_Type') 
     67             
     68            s.description=wrapGetText(item,'Description') 
     69            s.url=wrapGetText(item,'URL') 
     70            self.services[s.name]=s 
    7071             
    7172    def toHTML(self): 
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/DiscoveryWS.py

    r938 r1006  
    3333        except Exception, e: 
    3434            raise Exception(str(e)+os.linesep) 
    35  
    3635 
    3736    def SearchFullText(self,query): 
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/People.py

    r940 r1006  
    4545                    html+=br+makelink(self.data['orgURL'],self.data['orgName']) 
    4646            if self.data['searchlink']!='': html+='<br/>'+self.data['searchlink'] 
     47            html+='</p>' 
    4748            return html 
    4849         
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/browseCGI.py

    r996 r1006  
    116116                else:  
    117117                        self.response.content=self.error('No valid URI') 
    118                         return self.response 
    119                 
    120                 if not self.ViewTextOnly and name !=0: 
     118                         
     119                if not self.ViewTextOnly: 
    121120                    historyHTML='<p>' 
    122121                    for item in self.session.getHistory(): 
     
    184183            if self.FieldStorage.has_key('SEARCHSTRING'): 
    185184                searchString=self.FieldStorage['SEARCHSTRING'].value 
    186                 ws=DiscoveryWS() 
     185                try: 
     186                    ws=DiscoveryWS() 
     187                except Exception, e: 
     188                    return self.error('<p>%s<br/>%s'%(e,'Unable to connect to Search BackEnd')),'Error' 
    187189                ws.SearchFullText(searchString) 
    188190                results=ws.GetResults(number=5) 
     
    190192                for result in results: 
    191193                    difs.append(xmlCleanup(result)) 
    192                 html=renderDiscoverySet(difs,summary=1,spatial=1,temporal=1) 
     194                html=renderDiscoverySet(difs,summary=1,spatial=1,temporal=1,services=1) 
    193195                title='Search for '+searchString 
    194196                return html,title 
    195197            else: 
    196                 return self.error('No valid search optoin'),0 
     198                return self.error('No valid search option'),'Error' 
    197199               
    198200        def error(self,message): 
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/geoUtilities.py

    r949 r1006  
    3939        if self.box is not None: 
    4040            html='''<table><tbody><tr><td colspan="2" align="center">%s</td></tr> 
    41                     <tr><td>%s</td?><td>%s</td></tr> 
     41                    <tr><td>%s</td><td>%s</td></tr> 
    4242                    <tr><td colspan="2" align="center">%s</td></tr></tbody></table>'''%tuple(self.box) 
    4343        else: 
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/renderDiscoverySet.py

    r996 r1006  
    1515    # List of methods which deal with the actual row content ... 
    1616    #    
    17     def row(rowList,bgcolor='#EEEEEE'): 
    18         h='<tr bgcolor="%s">'%bgcolor 
     17    def span(x,id): 
     18        return '<span class="%s">%s</span>'%(id,x) 
     19     
     20    def hyperlink(n,u): 
     21        return '<a href="%s">%s</a>'%(u,n) 
     22     
     23    def row(rowList,bgcolor='rbgWhite'): 
     24        h='<tr class="%s">'%bgcolor 
    1925        for item in rowList: 
    2026            if type(item)==type((1,2)): 
     
    2228            else:h+='<td>%s</td>'%item 
    2329        h+='</tr>' 
    24         return h 
    25           
     30        return h#span(h,bgcolor) 
     31 
    2632    def spatialBox(elem): 
    2733        return elem.bbox.toHTMLbox() 
     
    3036        return '' 
    3137    
    32     def serviceList(elem,linkDefault): 
    33         return '' 
     38    def serviceList(d): 
     39        ll='<br/>Services: '+hyperlink('Full Record','url') 
     40        for item in d.services: 
     41            ll+=', ' 
     42            if item == 'NDG_A_SERVICE':  
     43                ll+=hyperlink('data',d.services[item].url) 
     44            elif item == 'NDG_B_SERVICE': 
     45                ll+=hyperlink('metadata',d.services[item].url) 
     46            else: 
     47                ll+=hyperlink(item,d.services[item].url) 
     48        return ll 
     49     
     50    def abbreviate(string,newlen): 
     51        ''' We want to ensure that a particular block of text does not exceed 
     52        a specific length - and finishes on a word boundary. ''' 
     53        if len(string)< newlen: 
     54            return string 
     55        else: 
     56            r='' 
     57            for w in string[0:newlen].split(' ')[:-1]:r+='%s '%w 
     58            r+=' ...' 
     59            return r 
    3460     
    3561    # ################################## 
     
    4369    if temporal:  
    4470        #two columns for temporal but put a column header across both columns 
    45         header='''<table><tr><td colspan="2" align="center">Temporal Coverage</td></tr><tr> 
    46         <td align="center">Start Date</td><td align="center"> End Date</td></tr></table>''' 
     71        header='''<table><tbody><tr><td colspan="2" align="center">Temporal Coverage</td></tr><tr> 
     72        <td align="center">Start Date</td><td align="center"> End Date</td></tr></tbody></table>''' 
    4773        columns.insert(-1,(header,2)) 
    48     if services: columns.insert(-1,'Services') 
    49     html='<div class="ListOfResults"><table><tbody>'+row(columns,bgcolor="#FDFFCC") 
     74    html='<div class="ListOfResults"><table><tbody>'+row(columns,bgcolor="rbgBeige") 
    5075     
    51     # ok, now let's cycle through the hits, nb, look and feel should be 
    52     # factored out to css .. 
    53      
     76    # ok, now let's cycle through the hits 
    5477    i=1 
    5578    for item in difSet: 
    5679        d=DIF(item) 
    57         bgc={1:'#FFFFFF',-1:'#EEEEEE'}[i] 
     80        bgc={1:'rbgWhite',-1:'rbgGrey'}[i] 
    5881        i=-1*i 
    59         rlist=[d.name[0:60],d.centre.toHTML()] 
     82        rlist=[abbreviate(d.name,60),d.centre.toHTML()] 
    6083        if summary: 
    61             rlist[0]='Name: '+rlist[0] 
    62             rlist[0]+='</br>Summary: %s'%d.abstract[0:200] 
    63         rlist[0]+='<br/>+' 
     84            rlist[0]='Name: %s'%rlist[0] 
     85            rlist[0]+='<br/>Summary: %s'%abbreviate(d.abstract,200) 
     86        if services: 
     87            rlist[0]+=serviceList(d) 
    6488        if spatial: rlist.insert(-1,spatialBox(d)) 
    6589        if temporal:  
    6690            rlist.insert(-1,d.timeCoverage[0]) 
    6791            rlist.insert(-1,d.timeCoverage[1]) 
    68         if services: rlist.insert(-1,serviceList(d,linkto)) 
     92         
    6993         
    7094        html+=row(rlist,bgcolor=bgc) 
    71   
     95 
    7296    html+='</tbody></table></div>' 
    7397    return html 
     
    77101    from ETxmlView import xmlCleanup 
    78102    ws=DiscoveryWS() 
    79     ws.SearchFullText('humidity') 
     103    ws.SearchFullText('acsoe') 
    80104    results=ws.GetResults(number=5) 
    81105    difs=[] 
    82     g=file('log.xml','w') 
     106    #g=file('log.xml','w') 
    83107    for result in results: 
    84         g.write(xmlCleanup(result)+'\n') 
     108        #g.write(xmlCleanup(result)+'\n') 
    85109        difs.append(xmlCleanup(result)) 
    86110    html=renderDiscoverySet(difs,summary=1,spatial=1,temporal=1) 
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/cgi/renderPage.py

    r996 r1006  
    1717        #set up search box form ... 
    1818        searchBox=''' 
    19             <FORM NAME="SEARCH" ACTION="browse.py" METHOD="POST> 
    20             <INPUT TYPE="HIDDEN" NAME="task" VALUE="discovery"/> 
    21             <INPUT TYPE="HIDDEN" NAME="dispSum" VALUE="false"/> 
    22             <INPUT TYPE="HIDDEN" NAME="search" VALUE="text"/> 
    23             <INPUT TYPE="HIDDEN" NAME="start" VALUE="1"/> 
    24             <INPUT TYPE="HIDDEN" NAME="orderInit" VALUE=""/> 
    25             <INPUT TYPE="HIDDEN" NAME="howmany" VALUE="10"/> 
     19            <form name="SEARCH" action="browse.py" method="post"> 
     20            <input type="hidden" name="task" value="discovery"/> 
     21            <input type="hidden" name="dispSum" value="false"/> 
     22            <input type="hidden" name="search" value="text"/> 
     23            <input type="hidden" name="start" value="1"/> 
     24            <input type="hidden" name="orderInit" value=""/> 
     25            <input type="hidden" name="howmany" value="10"/> 
    2626            <table border="0" cellspacing="0" cellpadding="1"> 
    2727            <tbody> 
    2828              <tr><td align="center">Discovery Search</td></tr> 
    29               <tr><td align="middle"><INPUT class="text" name="SEARCHSTRING"/></td></tr> 
    30               <tr><td><INPUT class="Button" type="submit" value="GO" name="Submit"/></td></tr> 
     29              <tr><td align="middle"><input class="text" name="SEARCHSTRING"/></td></tr> 
     30              <tr><td><input class="Button" type="submit" value="GO" name="Submit"/></td></tr> 
    3131            </tbody> 
    3232            </table> 
    33             </FORM>''' 
     33            </form>''' 
    3434         
    3535        #set up html header 
    36         html='''<?xml version="1.0" encoding="UTF-8"?> 
     36        html='''<?xml version="1.0" encoding="iso-8859-1"?> 
    3737                <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
    38                 <html xmlsns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
     38                <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> 
    3939                <head> 
    40                   <META http-equiv="Content-Type" content="text/xhtml; charset=iso-8859-1"/> 
     40                  <meta http-equiv="Content-Type" content="text/xhtml; charset=iso-8859-1"/> 
    4141                  <title>Browse: %s</title> 
    42                   <LINK media="all, screen" href="/layout/style.css" type="text/css" rel="stylesheet"/> 
     42                  <link media="all, screen" href="/layout/style.css" type="text/css" rel="stylesheet"/> 
    4343                </head>'''%name 
    4444                         
    4545        #now get the banner section 
    4646        #note we have to escape the % ... 
    47         html+='''<div class="ndgHeader"> 
     47        html+='''<body><div class="ndgHeader"> 
    4848            <table cellpadding="0" cellspacing="0" width="100%%"> 
    49             <tr> 
    50             <td width=10%% align="center" valign="center"><a href="%s"><img src="%s"></a></td> 
    51             <td width="80%%" align="center" valign="middle" ><p>Browse Datasets</p></td> 
    52             <td width="10%% align="center" valign="center"><a href="%s"><img src="%s"></a> </td> 
     49            <tbody><tr> 
     50            <td width="10%%" align="center" valign="middle"> 
     51              <a href="%s"> <img src="%s" alt="%s"/> </a> </td> 
     52            <td width="80%%" align="center" valign="middle" > 
     53              <p>Browse Datasets</p></td> 
     54            <td width="10%%" align="center" valign="middle"> 
     55              <a href="%s"> <img src="%s" alt="%s"/> </a> </td> 
    5356            </tr> 
    54             </table></td></tr></table></div>'''%(ndgLink,ndgImage,localLink,localImage) 
     57            </tbody></table></div>'''%(ndgLink,ndgImage,ndgAlt,localLink,localImage,localAlt) 
    5558                         
    5659        #now layout the main parts of the page (importing relevant HTML)                 
    5760        html+=''' 
    58           <DIV id="Main"> 
    59             <DIV id="LeftColumn"> 
    60                <DIV id="ndgSearchBox">%s</DIV> 
    61                <DIV id="Selected"><H1>Selected Items</H1>%s</DIV> 
    62                <DIV id="SearchHistory"><H1>Browse History</H1>%s</DIV> 
    63             </DIV> 
    64             <DIV id="Content"> 
    65                <DIV style="CLEAR: none; LEFT: 0px; WIDTH: 98%%; TOP: 0px"> 
    66                <DIV style="CLEAR: none; WIDTH: 98%%"> 
    67                   <TABLE cellSpacing="0" cellPadding="0" width="100%%" border="0"> 
    68                   <TBODY> 
    69                     <TR> 
    70                       <TD> 
    71                         <DIV id="RecordCornersTop"> 
    72                         <IMG height="11" alt="" src="/layout/record_top_right_corner.gif" width="11" align="right"/></DIV> 
    73                         <DIV id="RecordBox"><br/>%s</DIV> 
    74                         <DIV id="RecordCornersBot"> 
    75                         <IMG height="11" alt="" src="/layout/record_bottom_right_corner.gif" width="11" align="right"/></DIV> 
    76                       </TD> 
    77                     </TR> 
    78                   </TBODY> 
    79                   </TABLE> 
    80                 </DIV> 
    81                 </DIV 
    82               </DIV>  
    83               <DIV id="Footer"> </DIV> 
    84             </DIV>       
     61          <div id="Main"> 
     62            <div id="LeftColumn"> 
     63               <div id="ndgSearchBox">%s</div> 
     64               <div id="Selected"><h1>Selected Items</h1>%s</div> 
     65               <div id="SearchHistory"><h1>Browse History</h1>%s</div> 
     66            </div> 
     67            <div id="Content"> 
     68               <div style="CLEAR: none; LEFT: 0px; WIDTH: 98%%; TOP: 0px"> 
     69               <div style="CLEAR: none; WIDTH: 98%%"> 
     70                  <table cellSpacing="0" cellPadding="0" width="100%%" border="0"> 
     71                  <tbody> 
     72                    <tr> 
     73                      <td> 
     74                        <div id="RecordCornersTop"> 
     75                        <img height="11" alt="" src="/layout/record_top_right_corner.gif" width="11" align="right"/></div> 
     76                        <div id="RecordBox"><br/>%s</div> 
     77                        <div id="RecordCornersBot"> 
     78                        <img height="11" alt="" src="/layout/record_bottom_right_corner.gif" width="11" align="right"/></div> 
     79                      </td> 
     80                    </tr> 
     81                  </tbody> 
     82                  </table> 
     83                </div> 
     84                </div 
     85              </div>  
     86              <div id="Footer"> </div> 
     87            </div>       
    8588            </body> 
    8689            </html>'''%(searchBox,selectHTML,historyHTML,contentHTML) 
  • TI07-MOLES/trunk/StubB/XSLT/browse/portal/layout/style.css

    r993 r1006  
    11BODY { 
    2         PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 75%; BACKGROUND: #fff; PADDING-BOTTOM: 0px; MARGIN: 10px 0px 0px; COLOR: #333; PADDING-TOP: 0px; FONT-FAMILY: tahoma, verdana, arial, sans-serif 
     2        PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 75%; BACKGROUND: #fff; PADDING-BOTTOM: 0px; MARGIN: 10px 0px 0px; COLOR: #333; PADDING-TOP: 0px; FONT-FAMILY: tahoma, verdana, arial, sans-serif; 
    33} 
    44FORM { 
     
    1111        PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 90%; PADDING-BOTTOM: 0px; TEXT-TRANSFORM: capitalize; PADDING-TOP: 0px 
    1212} 
    13 #Header { 
    14         PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 5px 5px 0px; PADDING-TOP: 0px; HEIGHT: 130px 
    15 } 
     13 
    1614DIV.ndgHeader { 
    1715    MARGIN-LEFT: 10px; MARGIN-RIGHT: 10px;  
    1816    MARGIN-TOP: 10px; MARGIN-BOTTOM: 10px; 
    19     BORDER: #cccccc 1px solid; 
     17    BORDER: #cccccc 1px solid; BACKGROUND-COLOR: white; 
    2018    FONT-SIZE: 20px; COLOR: #CC3333; FONT-FAMILY: Arial, Verdana, serif, sans-serif; } 
    2119 
     
    2422} 
    2523 
    26 #LeftColumn { MARGIN: 10px; WIDTH: 160px; FLOAT: left; BORDER: #cccccc 1px solid; } 
     24#LeftColumn { MARGIN: 10px; WIDTH: 160px; FLOAT: left; BORDER: #cccccc 1px solid;  
     25} 
    2726 
    2827#Content { 
     
    3029        MARGIN-LEFT: 190px;  
    3130} 
     31tr.rbgWhite {BACKGROUND-COLOR: #FFFFFF} 
     32tr.rbgGrey  {BACKGROUND-COLOR: #EEEEEE} 
     33tr.rbgBeige {BACKGROUND-COLOR: #FDFFCC} 
     34 
     35#ListOfResults a {COLOR: blue;} 
     36 
    3237#RecordCornersTop { 
    3338        BACKGROUND-POSITION: left top; BACKGROUND-IMAGE: url(record_top_left_corner.gif); BACKGROUND-REPEAT: no-repeat; HEIGHT: 11px 
     
    211216} 
    212217.subText { 
    213         FONT-WEIGHT: FONT-SIZE: 9px; normal; COLOR: #666666 
     218        FONT-WEIGHT: normal; FONT-SIZE: 9px; COLOR: #666666 
    214219} 
    215220.blue { 
     
    343348} 
    344349.subText { 
    345         FONT-WEIGHT: FONT-SIZE: 9px; normal; COLOR: #666666 
     350        FONT-WEIGHT: normal; FONT-SIZE: 9px;COLOR: #666666 
    346351} 
    347352.blue { 
     
    372377.xmlAttrTyp {COLOR:Green; } 
    373378.xmlElemTag {COLOR:Blue; } 
    374 highlight {BACKGROUND-COLOR:Yellow; } 
     379.highlight {BACKGROUND-COLOR:Yellow; } 
    375380 
    376381DIV.ndgSearchBox{MARGIN-LEFT: 5px;} 
    377382 
    378383 
    379  
Note: See TracChangeset for help on using the changeset viewer.