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

Subversion URL: http://proj.badc.rl.ac.uk/svn/ndg/MILK/trunk/milk_server/milk_server/templates/utils.html@5784
Revision 5302, 4.8 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<?python
2 from xml.sax.saxutils import escape
3 import milk_server.lib.constants as constants
4 def et2string(x):
5     #use this to strip namespaces for children within text elements
6     cb=x.tag.find('}')
7     if cb!=-1:
8        x.tag=x.tag[cb+1:]
9     txt=(x.text or '')
10     s='<%s>%s'%(x.tag,txt)
11     # recurse through tree, if necessary
12     for a in x:
13         s+=et2string(a)
14     s+='</%s>%s'%(x.tag,(x.tail or ''))
15     return s
16     ?>
17     
18 <html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://genshi.edgewall.org/"
19        py:strip="">
20
21    <span py:def="Text(elem)" py:strip="">
22        <!--! Note that we have to expect the possibility of xhtml in these elements and we won't
23        want the parent attributes, or the namespaces -->
24        <span py:if="elem is not None" py:strip="">
25                <span py:if="hasattr(elem, 'text')" py:strip="">
26                        ${elem.text.strip()}
27                </span>
28                <!--! output any child elements  -->
29                    <span py:with="s = ''" py:strip="">
30                    <?python
31                    for a in elem:
32                        s+=et2string(a)
33                        ?>
34                        <span py:if="s" py:strip="">
35                                ${Markup(s).strip()}
36                            </span>
37                        </span>
38        </span>
39    </span>
40
41
42    <span py:def="expandHideSection(div1,div2,icon)">
43            <a href="javascript:;" title="Show/Hide details" 
44                onclick="swapLayers('$div1', '$div2'); return false;">
45            <img src="$icon" alt="Toggle expand/contract" class="helpicon"/></a>
46    </span>
47
48   
49    <div class="metadataSection" py:def="TextArea(name, value, editLink, helpText, title=None, noEscapeVal=False)">
50        <?python       
51                                divID = name + 'Div'
52                                edID = divID+'ed'
53                                helpID = divID + '_help'
54                               
55                                # adjust non-editable data to cope with newlines
56                                nonEditVal = ""
57                                if not noEscapeVal:
58                                        value = escape(value)
59                                if value:
60                                        nonEditVal = value.replace('\n', '<br />')
61                                        nonEditVal = nonEditVal.replace('\r', '<br />')
62                                if not title:
63                                        title = name
64                ?>
65        <table py:if="value or editLink">
66            <tr><td class="linehead">
67                    <table>
68                        <tr><td>${title}<span py:if="editLink" py:replace="helpIcon(helpID, 'tr')"/></td>
69                            <span py:if="editLink" py:strip="">
70                                <td align="right">
71                                        <span class="txtBlktog">
72                                        <a href="javascript:;" title="Toggle Form" 
73                                             onclick="swapLayers('$divID', '$edID'); return false;">
74                                        Add/Edit</a>
75                                        </span>
76                                    </td>
77                            </span>
78                                        </tr>
79                                <tr id="$helpID" class="hidden" >
80                                        <td class="helptxt" colspan="2">$helpText</td>
81                                        </tr>                   
82                                </table>
83            </td></tr>
84            <tr><td>
85                <div id = "$divID">
86                                ${Markup(nonEditVal or 'No data specified at present')}
87                        </div>
88                        </td></tr>
89                <tr py:if="editLink"><td>
90                        <div id="$edID" class="hidden">
91                                        <form action="${editLink}" method="post">
92                                        <table>
93                                <tr><td>
94                                        ${Markup(h.text_area(name, value or '', class_="fullWidth", rows="9"))}
95                                </td></tr>
96                                <tr><td>
97                        ${Markup(h.submit('Update', **{'onclick': 'Div_show("loading");'}))}
98                    </td></tr>
99                                        </table>
100                                        </form>
101                        </div>
102                        </td></tr>
103        </table>
104    </div>
105
106       
107    <!--! hyperlinked image -->
108    <span py:def="linkimage(linkref,imageref,alttext)">
109        <a href="$linkref"><image src="$imageref" alt="$alttext" title="$alttext"/></a>
110    </span>
111   
112    <!--! Help Icons -->
113    <span py:def="helpIcon(value, elementType = 'div')">
114        <span>
115            <a href="javascript:;" title="Toggle help" onclick="toggleDiv(1,'$value','shown','hidden','$elementType'); return false;">
116            <img src="$g.helpIcon" alt="Toggle help" class="helpicon"/></a>
117        </span>
118    </span>
119   
120   
121        <div py:def="EditTextFieldRow(title, name, value, isEditable, type, width='auto', colspan='1')" py:strip="">
122                <tr>
123                        <td class="cellhead" width="10%">${title}:</td>
124                        <div py:replace="EditTextField(name, value, isEditable, type, width='$width', colspan='$colspan')"/>
125                </tr>
126        </div>
127
128
129        <div py:def="EditTextField(name, value, isEditable, type, width='auto', colspan='1')" py:strip="">
130                <td py:if="isEditable" class="column" width="$width" colspan="$colspan">
131                        <span py:if="type == constants.TEXT_FIELD" py:strip="">
132                                ${Markup(h.text_field(name, value, class_="fullWidth"))}
133                        </span>
134                        <span py:if="type == constants.TEXT_AREA" py:strip="">
135                                ${Markup(h.text_area(name, value, class_="fullWidth", rows="4"))}
136                        </span>
137                </td>
138                <td py:if="not isEditable" class="column" width="$width" colspan="$colspan">
139                        ${Markup(value)}
140                </td>
141        </div>
142   
143</html>
Note: See TracBrowser for help on using the repository browser.