<?xml version="1.0" encoding="utf-8"?>
<dictionary>
<item key="data"><![CDATA[<dtml-comment>
##########################################################################################
# Author:   Dr. Frank Hoffmann <fh@hoffmannliebenberg.de>
# Company:  HOFFMANN+LIEBENBERG GmbH
# WWW:      http://www.hoffmannliebenberg.de
# Date:     07.02.2007
# Version:  0.41
# Comments: Action for searches & replaces all occurences of given substring.
#           All string-, text- and url-attributes of all kinds of objects 
#           are processed.
##########################################################################################
</dtml-comment>

<dtml-comment>
------------------------------------------------------------------------------------------
-
- Process
-
------------------------------------------------------------------------------------------
</dtml-comment>
<dtml-if process>

 <!-- # Init counter: -->
 <dtml-unless count>
  <dtml-call expr="REQUEST.set('count',0)">
 </dtml-unless>

 <!-- # Search and replace: -->
 <dtml-in "getObjAttrs().keys()">
  <dtml-let obj_attr="getObjAttr(_['sequence-item'])">
   <dtml-if "obj_attr['datatype'] in ['string','text','url']">
    <dtml-call "REQUEST.set('s_src',getObjProperty(obj_attr['key'],REQUEST))">
    <dtml-call "REQUEST.set('s_dst','')">
    <dtml-try>
    <!-- # Init subcounter: -->
    <dtml-call "REQUEST.set('subcount',0)">
    <dtml-if "_.len(REQUEST.get('s_old','')) > 0">
     <dtml-in "_.string.split(s_src,REQUEST.get('s_old',''))">
      <dtml-call "REQUEST.set('s_dst',s_dst+_['sequence-item'])">
      <dtml-unless sequence-end>
       <dtml-call "REQUEST.set('s_dst',s_dst+REQUEST.get('s_new',''))">
       <!-- Increase subcounter: -->
       <dtml-call "REQUEST.set('subcount',REQUEST['subcount']+1)">
      </dtml-unless>
     </dtml-in>
    </dtml-if>
    <dtml-if "REQUEST['subcount'] > 0">
     <dtml-call "setObjStateModified(REQUEST)">
     <dtml-call "setObjProperty(obj_attr['key'],s_dst,lang)">
     <dtml-call "onChangeObj(REQUEST)">
     <!-- Increase counter: -->
     <dtml-call "REQUEST.set('count',REQUEST['count']+REQUEST['subcount'])">
    </dtml-if>
    <dtml-except>
     [<dtml-var meta_type>@<dtml-var absolute_url>] <dtml-var error_type>: <dtml-var error_value><br/>
    </dtml-try>
   </dtml-if>
  </dtml-let>
 </dtml-in>

 <!-- # Recurse child-objects: -->
 <dtml-in "getObjChildren('',REQUEST)">
  <dtml-call manage_searchReplace>
 </dtml-in>

 <!-- # Return with message: -->
 <dtml-call expr="REQUEST.set('message','%i Vorkommnisse ersetzt.'%REQUEST['count'])">
 <dtml-return message>

<dtml-comment>
------------------------------------------------------------------------------------------
-
- Process execution form
-
------------------------------------------------------------------------------------------
</dtml-comment>
<dtml-elif "REQUEST.get('btn','') == ' Ersetzen '">

 <dtml-var manage_page_header>
 <head>
  <title><dtml-var "getLangStr('TAB_CONFIGURATION',manage_lang)"> <dtml-var "display_type(REQUEST)"></title>
 </head>
 <dtml-var "manage_tabs(_,_,my_manage_options=[{'label':'Suchen & Ersetzen...','action':''}])">
 <dtml-var f_bo_area>

  <div class="form-text">
    <dtml-var "manage_searchReplace(_,_,process=1)"><br><br>
    [<a href="<dtml-var absolute_url>/manage_main?lang=<dtml-var lang>&manage_lang=<dtml-var manage_lang>">Zurück...</a>]
  </div>

 <dtml-var f_eo_area>
 <dtml-var manage_page_footer>

<dtml-comment>
------------------------------------------------------------------------------------------
-
- Process cancellation form
-
------------------------------------------------------------------------------------------
</dtml-comment>
<dtml-elif "REQUEST.get('btn','') == ' Abbrechen '">

 <dtml-call "RESPONSE.redirect('%s/manage_main?lang=%s&manage_lang=%s'%(absolute_url(),lang,manage_lang))">

<dtml-comment>
------------------------------------------------------------------------------------------
-
- Default form
-
------------------------------------------------------------------------------------------
</dtml-comment>
<dtml-else>

 <dtml-var manage_page_header>
 <head>
  <title>Suchen & Ersetzen...</title>
 </head>
 <dtml-var "manage_tabs(_,_,my_manage_options=[{'label':'Suchen & Ersetzen...','action':''}])">
 <dtml-var f_bo_area>

  <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>
  <form name="form0">
   <input type="hidden" name="preview" value="preview">
   <input type="hidden" name="lang" value="<dtml-var lang>">
   <input type="hidden" name="manage_lang" value="<dtml-var manage_lang>">
   <table cellspacing="1" cellpadding="1" border="0">
   <tr>
    <td class="form-label">Search for:</td>
    <td class="form-element"><input class="form-element" type="text" name="s_old" value="" size="30"></td>
   </tr>
   <tr>
    <td class="form-label">Replace by:</td>
    <td class="form-element"><input class="form-element" type="text" name="s_new" value="" size="30"></td>
   </tr>
   <tr>
    <td class="form-label"></td>
    <td class="form-element">
     <input class="form-element" type="submit" name="btn" value=" Ersetzen ">
     <input class="form-element" type="submit" name="btn" value=" Abbrechen ">
    </td>
   </tr>
   </table>
  </form>

 <dtml-var f_eo_area>
 <dtml-var manage_page_footer>

<dtml-comment>
------------------------------------------------------------------------------------------
</dtml-comment>
</dtml-if>]]></item>
<item key="description"></item>
<item key="exec" type="int">0</item>
<item key="id"><![CDATA[manage_searchReplace]]></item>
<item key="meta_type"><![CDATA[DTML Method]]></item>
<item key="meta_types" type="list"><list>
<item><![CDATA[ZMSDocument]]></item>
<item><![CDATA[ZMSRubrik]]></item>
<item><![CDATA[ZMS]]></item>
</list>
</item>
<item key="name"><![CDATA[Search + replace...]]></item>
<item key="roles" type="list"><list>
<item><![CDATA[ZMSAdministrator]]></item>
<item><![CDATA[ZMSAuthor]]></item>
<item><![CDATA[ZMSEditor]]></item>
</list>
</item>
</dictionary>
