source: ZMS/trunk/import/manage_searchReplace.metacmd.xml @ 1604

Revision 1604, 4.7 KB checked in by zmsdev, 10 months ago (diff)

revised search&replace-action: replace directly in all object-versions

Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<dictionary>
3  <item key="custom"/>
4  <item key="data"><![CDATA[<dtml-comment>
5################################################################################
6# Execute
7################################################################################
8</dtml-comment>
9<dtml-if process>
10
11 <!-- # Init counter: -->
12 <dtml-unless count>
13  <dtml-call expr="REQUEST.set('count',0)">
14 </dtml-unless>
15
16 <!-- # Search and replace: -->
17 <dtml-in "getObjAttrs().keys()">
18  <dtml-let key=sequence-item objAttr="getObjAttr(key)">
19   <dtml-if "objAttr['datatype'] in ['string','text']">
20    <dtml-in "getObjVersions()">
21     <dtml-let objVers=sequence-item>
22      <dtml-in "getLangIds()">
23       <dtml-let langId=sequence-item objAttrName="getObjAttrName(objAttr,langId)" objAttrVal="operator_getattr(objVers,objAttrName,None)">
24        <dtml-if objAttrVal>
25         <dtml-try>
26          <dtml-if "len(objAttrVal.split(s_old))>1">
27           <dtml-call "operator_setattr(objVers,objAttrName,objAttrVal.replace(s_old,s_new))">
28           <dtml-call "REQUEST.set('count',REQUEST['count']+len(objAttrVal.split(s_old))-1)">
29          </dtml-if>
30         <dtml-except>
31         </dtml-try>
32        </dtml-if>
33       </dtml-let>
34      </dtml-in>
35     </dtml-let>
36    </dtml-in>
37   </dtml-if>
38  </dtml-let>
39 </dtml-in>
40
41 <!-- # Recurse child-objects: -->
42 <dtml-in "getChildNodes(REQUEST)">
43  <dtml-call manage_searchReplace>
44 </dtml-in>
45
46 <!-- # Return with message: -->
47 <dtml-call expr="REQUEST.set('message','%i Vorkommnisse ersetzt.'%REQUEST['count'])">
48 <dtml-return message>
49
50<dtml-comment>
51################################################################################
52# Process execution
53################################################################################
54</dtml-comment>
55<dtml-elif "REQUEST.get('btn','') == ' Ersetzen '">
56
57 <dtml-var manage_page_header>
58 </head>
59 <dtml-var "manage_tabs(_,_,my_manage_options=[{'label':'Replace...','action':''}])">
60
61  <div class="form-text">
62    <dtml-var "manage_searchReplace(_,_,process=1)"><br/><br/>
63    [<a href="<dtml-var absolute_url>/manage_main?lang=<dtml-var lang>">ZurÃŒck...</a>]
64  </div>
65
66 <dtml-var manage_page_footer>
67
68<dtml-comment>
69################################################################################
70# Process cancellation
71################################################################################
72</dtml-comment>
73<dtml-elif "REQUEST.get('btn','') == ' Abbrechen '">
74
75 <dtml-call "RESPONSE.redirect('%s/manage_main?lang=%s'%(absolute_url(),lang))">
76
77<dtml-comment>
78################################################################################
79# Form
80################################################################################
81</dtml-comment>
82<dtml-else>
83
84 <dtml-var manage_page_header>
85 </head>
86 <dtml-var "manage_tabs(_,_,my_manage_options=[{'label':'Replace...','action':''}])">
87
88  <div class="form-text">Sie können jedes oder alle Vorkommen von einem Textmuster im aktuellen Objekt und auch allen Unterobjekten suchen und ersetzen.</div>
89  <form name="form0">
90   <input type="hidden" name="preview" value="preview">
91   <input type="hidden" name="lang" value="<dtml-var lang>">
92   <table cellspacing="1" cellpadding="1" border="0">
93   <tr>
94    <td><div class="form-label">Search for:</div></td>
95    <td><input class="form-element" type="text" name="s_old" value="" size="30"></td>
96   </tr>
97   <tr>
98    <td><div class="form-label">Replace by:</div></td>
99    <td><input class="form-element" type="text" name="s_new" value="" size="30"></td>
100   </tr>
101   <tr>
102    <td></td>
103    <td>
104     <input class="ui-button ui-state-default ui-corner-all" type="submit" name="btn" value=" Ersetzen ">
105     <input class="ui-button ui-state-default ui-corner-all" type="submit" name="btn" value=" Abbrechen ">
106    </td>
107   </tr>
108   </table>
109  </form>
110
111 <dtml-var manage_page_footer>
112
113<dtml-comment>
114################################################################################
115</dtml-comment>
116
117</dtml-if>]]>
118  </item>
119  <item key="description"/>
120  <item key="exec" type="int">0</item>
121  <item key="id"><![CDATA[manage_searchReplace]]></item>
122  <item key="meta_type"><![CDATA[DTML Method]]></item>
123  <item key="meta_types" type="list">
124    <list>
125      <item><![CDATA[ZMSGraphic]]></item>
126      <item><![CDATA[ZMSDocument]]></item>
127      <item><![CDATA[ZMSFolder]]></item>
128      <item><![CDATA[ZMS]]></item>
129    </list>
130  </item>
131  <item key="name"><![CDATA[Search+Replace...]]></item>
132  <item key="roles" type="list">
133    <list>
134      <item><![CDATA[ZMSAdministrator]]></item>
135      <item><![CDATA[ZMSAuthor]]></item>
136      <item><![CDATA[ZMSEditor]]></item>
137    </list>
138  </item>
139</dictionary>
Note: See TracBrowser for help on using the repository browser.