# Container kopieren

<!-- last_modified: 25. Nov 2016 -->
Diese Aktion kopiert Daten aus einem Container in einen anderen. Felder mit gleichen Namen und Typ werden automatisch übernommen. Für weitere Felder kann über eine Konfiguration eine Zuordnung geschaffen werden. Über solch eine Konfigurationseinstellung können auch mehrere Felder in ein Feld hineinkopiert werden.

Funktionen:

## Parameter

| | |
|--|--|
| `source-listid` | gibt die ID der Quell-Liste an |
| `target-listid` | dies ist die ID der Ziel-Liste |
| `idfield` | der Name des Request-Parameters, der die ID des zu kopierenden Datensatzes enthält |
| `config` | die Kopierzuordnung in XML |

Auf die ID des erzeugen Kopie-DS kann man in einem weiteren Actionbaustein über das Action-Attribute `copyrecord` zugreifen.

Weitere Eigenschaften:
`include-child-lists=true` (es werden die Untercontainer mit kopiert - wie in der Verwaltung - ab V2.6.6)
`attribute-recordid=copyrecord` (es kann statt `copyrecord` für die ID des neuen DS ein anderer Name definiert werden)

## XML-Syntax

Die Syntax der Kopierzuordnung folgt diesem Muster:

```xml
<rules>
  <field name="Titel" source="Name"/>
  <field name="Datum"><![CDATA[<bx:recordfield.Datum_Beginn pattern="dd.MM.yyyy"/><bx:if> - <bx:recordfield.Datum_Ende pattern="dd.MM.yyyy"/></bx:if>]]></field>
  <field name="Alter"><![CDATA[<bx:pagedata.request name="neuesAlter"/>]]></field>
  <field name="Kategorie/Titel" source="Titel"/>
</rules>
```

| | |
|--|--|
| name | Feldname des Zielfelds |
| source | Feldname des Quellfelds |
| \<![CDATA[...]]> | zu speichernder Inhalt als Tag-Inhalt<br>es können auch Tags wie `bx:recordfield` verwendet werden |
| Feld/Unterfeld | Unterelemente einer Einzelverknüpfung ansprechen |

### Beispiele

**Die XML Datei hat folgendes Format:**

**Beispiel Titel**

```xml
<rules>
  <field name="Datum" source="Datum_Beginn"/>
  <field name="Flat_Ausgabe"><![CDATA[
Beschreibung:
<bx:recordfield.Beschreibung type="plain"/>
Bemerkungen:
<bx:recordfield.Bemerkungen type="plain"/>
]]></field>
  <field name="Kategorie" source="Kategorie/Titel"/>
  <field name="Zeitstempel" source=""/>
</rules>
```

Das Haupt-Tag heißt `<rules>`. Dazwischen dürfen beliebig viele `<field>`-Einträge stehen, die das Pflicht-Attribut `name` haben müssen, das den Feldnamen des Zielcontainers enthält.

Bei geschlossenen `<field/>`-Tag muß in einem Parameter `source` der Name des Feldes im Quellcontainer angegeben werden. Mit "/" kann auch ein Feld hinter einer Einzelverknüpfung aufgerufen werden.

Wenn ein Feld aus dem Quellcontainer nicht übernommen werden soll, kann bei `name` der Feldname und `source=""` angegeben werden. (Hier im Beispiel würde nicht der Inhalt des Timestamp-Feldes des Quellcontainers kopiert werden und so ein aktueller Timestamp im Zielcontainer erstellt werden)

Wenn `<field>` geöffnet wird, können <a href="http://wiki.batix.net/index.php/Kategorie:Tag" target="_blank">Batix-Tags</a> benutzt werden, um den Inhalt von Textfeldern im Zieldatensatz aus mehreren Feldern des Quelldatensatzes zusammenzusetzen. An &lt;bx&gt;-Tags können nur einige verwendet werden, z. B. <a href="http://wiki.batix.net/index.php/Bx:pagedata" target="_blank">bx:pagedata</a> um der Aktion übergebene Parameter weiterzuleiten oder <a href="http://wiki.batix.net/index.php/Bx:recordfield" target="_blank">bx:recordfield</a> bzw. <a href="http://wiki.batix.net/index.php/Bx:recorddata" target="_blank">bx:recorddata</a> um Informationen zum aktuellen Datensatz zu übergeben. Der Inhalt sollte in einem CDATA-Block eingeschlossen sein, wenn er XML-Sonderzeichen (z. B. "<", "&") enthalten könnte.