source: MILK/trunk/milk_server/milk_server/templates/ndgPage.html @ 5302

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/MILK/trunk/milk_server/milk_server/templates/ndgPage.html@5302
Revision 5302, 7.6 KB checked in by cbyrom, 11 years ago (diff)

Simplify structure of discovery controller, using the results template
to render searches even when no results are found. Add new error
dict to avoid confusing with the error dict used by the formencode
input checker. Add additional input checks and improve error handling.
Add dropdown list to select order by values + add new constants
module to store associated data and error keys + tidy up DiscoveryState?
object to make clearer and logic more consistent + fix paging controls
for results data.

Line 
1<html xmlns="http://www.w3.org/1999/xhtml" 
2        xmlns:py="http://genshi.edgewall.org/"
3        xmlns:xi="http://www.w3.org/2001/XInclude" py:strip="">
4        <xi:include href="utils.html" />
5<?python
6from ndg.common.src.clients.xmldb.eXist.searchclient import SearchClient
7?>   
8    <head py:def="pagehead()" py:strip="True">
9        <title py:content="c.title">title</title>
10        <!--! The following includes the javascript, note that the XML
11        function is needed to avoid escaping the < character -->
12        ${Markup(h.javascript_include_tag(builtins=True))}
13        <script type="text/javascript" src="$g.server/js/toggleDiv.js"/>
14        <link media="all, screen" href="$g.server/layout/style/ndg2.css" type="text/css" rel="stylesheet"/>
15    </head>
16   
17    <div py:def="header()">
18        <div py:if="g.browseEnabled and not g.discoveryEnabled and not g.atomEditorEnabled" id="browseheader"/>
19        <div py:if="not (g.browseEnabled and not g.discoveryEnabled and not g.atomEditorEnabled)" id="editorheader"/>
20        <div id="logo"><img src="$g.LeftLogo" alt="$g.LeftAlt" /></div>
21    </div>
22   
23    <!--! One line search box for top of many pages follows -->
24    <div py:def="searchOneLine(targets=0)" class="searchBar">
25        <table width="100%"><tr><td align="left">
26        <form action="$g.discoveryURL">
27            Discovery text search<span py:replace="helpIcon('nts_help', 'div')"/>&nbsp;
28            <input type="text" size="25" name="searchString"/>
29            <select name="textTarget">
30            <option value="Authors">Authors</option>
31            <option value="All" selected="selected">All</option>
32            <option value="Params">Parameters</option> 
33            </select>
34            <span py:if="targets"> in
35                    <?python
36                    sel=[['Discovery','Discovery'],['Browse','Browse'],['Simulation','NumSim']]
37                    ?>
38                    <select name="searchTarget">
39                        ${Markup(h.options_for_select(sel,targets))}
40                    </select>
41            </span>
42            <input type="submit" value="Search"/>
43         </form>
44         </td>
45         <td py:if="not g.standalone" align="right">
46            <span py:if="'ndgSec' in session" id="loginBar">
47            <span py:replace="logOut()"/></span>
48            <span py:if="'ndgSec' not in session" id="loginBar">
49            <span py:replace="logIn()"/></span>
50        </td></tr></table>
51          <div id="nts_help" class="hidden">
52            <div class="helptxt"><p> This will do a completely new discovery text search with no constraints beyond the target of the
53            text search from the drop down list (All, Authors, Parameters) </p></div>
54          </div>
55          <div id="ns_help" class="hidden">
56            <div class="helptxt"><p> This will return you to the new search page</p></div>
57          </div>
58    </div>
59   
60    <!--! One line search box for the local browse service -->
61    <div py:def="localTextSearch()" class="searchBar">
62        <table width="100%"><tr><td align="left">
63        <form action="$g.discoveryURL">
64            Browse text search<span py:replace="helpIcon('browse_help', 'div')"/>&nbsp;
65            <input type="text" size="25" name="searchString"/>
66            <input type="submit" value="Search"/>
67            <input type="hidden" name="searchTarget" value="Browse"/>
68            <input type="hidden" name="textTarget" value="$SearchClient.ATOM_TARGET"/>
69         </form>
70         </td>
71                </tr></table>
72          <div id="browse_help" class="hidden">
73            <div class="helptxt"><p> 
74            This will do a completely new text search against the local browse documents.
75            </p></div>
76          </div>
77    </div>
78
79   
80    <div py:def="PageTabs(tabv)" id="PageTabs">
81        <div id="PageTabRow">
82            <ul>
83                <!--! NB, for some reason, when tabv is cast into a string
84                it then is no longer accessible - so store the result in
85                a different variable  -->
86                            <span py:with="currentTab = str(tabv)" py:strip="">
87                <span py:for="tab in c.pageTabs">
88                        <span py:if="tab[0] == currentTab">
89                            <li class="current">
90                            <span class="pagetab">
91                            ${Markup(h.link_to_if(False,tab[0],tab[1]))}
92                            </span>
93                            </li>
94                        </span>
95                        <span py:if="tab[0] != currentTab">
96                            <li class="hidden">
97                            <span class="pagetab">
98                            ${Markup(h.link_to_if(True,tab[0],tab[1]))}
99                            </span>
100                            </li>
101                        </span>
102                 </span>
103                 </span>
104            </ul>
105        </div>
106        <div class="line"/>
107        <div class="clear"/>
108    </div>
109
110
111        <div py:def="corrections()" id="Corrections">
112                <p py:if="'ndgSec' in session"> Please use this
113                        <span>
114                        ${Markup(h.link_to_remote("link", dict(update="Corrections",
115                url=h.url_for(controller='trackback/trackback', action='askCorrect'))))}
116            </span>
117            to enter any errors in the metadata record above.
118        </p>
119        </div>
120
121
122    <!--! Page Footer follows -->
123    <div py:def="footer()" id="Footer">
124        <center><table><tbody>
125            <tr>
126                <td align="left" width="60%">
127                    <table><tbody>
128                    <tr><td><span py:replace="linkimage(g.ndgLink,g.ndgImage,'NDG')"/></td>
129                    <td> This portal is a product of the <a href="http://ndg.nerc.ac.uk"> NERC DataGrid</a>
130                    ${g.disclaimer} </td>
131                    </tr>
132                    </tbody></table>
133                </td>
134                <td width="40%" align="center">
135                </td>
136                <td align="right"><span py:replace="linkimage(g.stfcLink,g.stfcImage,'Hosted by the STFC CEDA')"/></td>
137            </tr>
138        </tbody></table></center>
139    </div>
140   
141    <!--! Login and out buttons --> 
142    <span py:def="logOut()" class="logOut">
143            <?python
144            from base64 import urlsafe_b64encode
145           
146            # Base 64 encode to enable passing around in 'r' argument of query
147            # string for use with login/logout
148            g.ndg.security.common.sso.state.returnToURL = str(c.requestURL)
149            g.ndg.security.common.sso.state.b64encReturnToURL = urlsafe_b64encode(c.requestURL)
150            ?>
151        <form action="$g.logout">
152            <input type="hidden" name="r" value="${g.ndg.security.common.sso.state.b64encReturnToURL}"/>
153            <input type="submit" value="Logout"/>
154        </form>
155    </span>
156   
157    <span py:def="logIn()" class="logIn">
158            <?python
159            from base64 import urlsafe_b64encode
160           
161            # Base 64 encode to enable passing around in 'r' argument of query
162            # string for use with login/logout
163            g.ndg.security.common.sso.state.returnToURL = str(c.requestURL)
164            g.ndg.security.common.sso.state.b64encReturnToURL = urlsafe_b64encode(c.requestURL)
165            ?>
166        <form action="$g.wayfuri">
167            <input type="hidden" name="r" value="${g.ndg.security.common.sso.state.b64encReturnToURL}"/>
168            <input type="submit" value="Login"/>
169        </form>
170    </span>
171   
172
173    <div class="error" py:def="displayErrorDict(errors)">
174        <h3>Input error</h3>
175        <table align="center">
176        <span py:for="key, errors in errors.items()" py:strip="">
177                <tr py:if="isinstance(errors, list)" py:for="i, error in enumerate(errors)">
178                        <td py:if="i == 0"><b>${Markup(key)}</b></td>
179                        <td py:if="i != 0" />
180                        <td align="left">${Markup(error)}</td>
181                </tr>
182                <tr py:if="not isinstance(errors, list)">
183                        <td><b>${Markup(key)}</b></td>
184                        <td align="left">${Markup(errors)}</td>
185                </tr>
186        </span>
187        </table>
188    </div>
189   
190   
191
192</html>
Note: See TracBrowser for help on using the repository browser.