sbalkan
I'm new here

Problem: Erstellung von inline-Tabellen über die API im DOM-Editor (Vergabe von Zell-Eigenschaften)

FS-Version: 4.2.446.45868

Hallo,

ich beschäftigte mich momentan damit, eine CMS_INPUT_DOM-Editorkomponente über die API mit Daten aus einem XML-Dokument (HTML-Input) zu bedienen. Dabei stoße ich gelegentlich auf Tabellen, die ich in dem DOM-Editor rekonstruieren möchte. Hierzu gehe ich wie in dem Beispiel "DomEditorValueExample" beschrieben vor. Die Erstellung einer Inline-Tabelle im DOM-Editor funktioniert problemlos. Die verwendete Inline-Tabelle ist hierbei eine Standard-Tabellenformatvorlage, die mit einer bestimmten Stilvorlage verknüpft ist. Über diesen können Redakteure künftig diverse Eigenschaften für jede einzelne Zelle definieren.

Meine Frage ist nun:

Wie kann ich diesen redaktionellen Arbeitsschritt bei der Erstellung einer Inline-Tabelle im DOM-Editor rekonstruieren? Die einzigen Eigenschaften, die ich nach dem Prinzip in dem Beispiel "DomEditorValueExample" für eine Zelle setzen kann, ist der colspan. Mir ist nicht ganz schlüßig, wie ich an die Formularfelder der Stilvorlage über das Objekt "TableCell" gelange und diese für die aktuelle Zelle zuweise.

Anbei noch ein Auszug des Quellcodes für die Erstellung der Inline-Tabelle im DOM-Editor:

...

TableFormatTemplate tableFormatTemplate = fTemplates.getTableFormatTemplate("default_inline_table");

FormatTemplate rowTemplate = fTemplates.getFormatTemplate("tr");

FormatTemplate cellTemplate = fTemplates.getFormatTemplate("td");

List<?> trList = ele.getChildren();

for (int t = 0; t < trList.size(); t++) {

     Element tr = (Element) trList.get(t);    

     if (tr.getName().equals("tr")) {         

          TableRowDomNode tableRow = (TableRowDomNode) table.appendChild(rowTemplate);                 

          List<?> tdList = tr.getChildren();

          for (int c = 0; c < tdList.size(); c++) {

               Element td = (Element) tdList.get(c);                        

               TableCell tableCell = (TableCell) tableRow.appendChild(cellTemplate);

                if (td.getAttribute("colspan") != null) tableCell.setColSpan(Integer.parseInt(td.getAttributeValue("colspan")));

                ...

          }

     }

}

Und die DOM-Editor-Komponente:

<CMS_INPUT_DOM name="news_content" hFill="yes" rows="30" table="yes" useLanguages="yes">

        <FORMATS>

          <TEMPLATE name="p"/>

        </FORMATS>

        <LANGINFOS>

          <LANGINFO lang="*" label="Content"/>

        </LANGINFOS>

        <LINKEDITORS>

          <LINKEDITOR name="internal_link_media"/>

          <LINKEDITOR name="internal_link"/>

          <LINKEDITOR name="external_link"/>

          <LINKEDITOR name="email_link"/>

        </LINKEDITORS>

</CMS_INPUT_DOM>

0 Kudos
2 Replies
feddersen
Community Manager

Das ist über die API momentan nicht möglich, wie Sie schon festgestellt haben, gibt es momentan keine öffentliche TableCell.setAttribute() Methode. Bitte erstellen Sie einen entsprechenden Feature-Request.

Dazu als Hinweis: Statt TableCell.getAttribute("colspan") sollten die TableCell.getColSpan() verwenden.

Der Feature-Request wurde erstellt und ist hier zu finden:

Erstellung von inline-Tabellen über die API im DOM-Editor (Vergabe von Zell-Eigenschaften).

Vielen Dank!

0 Kudos