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

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

Tighten up use of xhtml in atom:content element - NB, this requires a
fix when data is re-ingested via elementtree, as this doesn't respect
inner namespaces properly. Also add new keyword to TextArea? template
function, to allow the content to be displayed 'as is' - i.e. without
the XML escaping.

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