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

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

Adjust the Atom and MolesEntity? data models to store their data
internally, 'as is' - and to escape/unescape XML unfriendly characters
on data export/import. Adjust templates and inputs processing to
cope with this change - which allows the input of most characters
without problem (NB, old method caused unfriendly errors when illegal
characters were detected).

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)">
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                                value = escape(value)
56                                if value:
57                                        nonEditVal = value.replace('\n', '<br />')
58                                        nonEditVal = nonEditVal.replace('\r', '<br />')
59                                if not title:
60                                        title = name
61                ?>
62        <table py:if="value or editLink">
63            <tr><td class="linehead">
64                    <table>
65                        <tr><td>${title}<span py:if="editLink" py:replace="helpIcon(helpID, 'tr')"/></td>
66                            <span py:if="editLink" py:strip="">
67                                <td align="right">
68                                        <span class="txtBlktog">
69                                        <a href="javascript:;" title="Toggle Form" 
70                                             onclick="swapLayers('$divID', '$edID'); return false;">
71                                        Add/Edit</a>
72                                        </span>
73                                    </td>
74                            </span>
75                                        </tr>
76                                <tr id="$helpID" class="hidden" >
77                                        <td class="helptxt" colspan="2">$helpText</td>
78                                        </tr>                   
79                                </table>
80            </td></tr>
81            <tr><td>
82                <div id = "$divID">
83                                ${Markup(nonEditVal or 'No data specified at present')}
84                        </div>
85                        </td></tr>
86                <tr py:if="editLink"><td>
87                        <div id="$edID" class="hidden">
88                                        <form action="${editLink}" method="post">
89                                        <table>
90                                <tr><td>
91                                        ${Markup(h.text_area(name, value or '', class_="fullWidth", rows="9"))}
92                                </td></tr>
93                                <tr><td>
94                        ${Markup(h.submit('Update', **{'onclick': 'Div_show("loading");'}))}
95                    </td></tr>
96                                        </table>
97                                        </form>
98                        </div>
99                        </td></tr>
100        </table>
101    </div>
102
103       
104    <!--! hyperlinked image -->
105    <span py:def="linkimage(linkref,imageref,alttext)">
106        <a href="$linkref"><image src="$imageref" alt="$alttext" title="$alttext"/></a>
107    </span>
108   
109    <!--! Help Icons -->
110    <span py:def="helpIcon(value, elementType)">
111        <span>
112            <a href="javascript:;" title="Toggle help" onclick="toggleDiv(1,'$value','shown','hidden','$elementType'); return false;">
113            <img src="$g.helpIcon" alt="Toggle help" class="helpicon"/></a>
114        </span>
115    </span>
116</html>
Note: See TracBrowser for help on using the repository browser.