Ah! Dann muss man hier natürlich etwas anders rangehen.
Ich denke, das Einfachste ist ein Executable, das per
$CMS_RENDER(script:"do_something_with_categories, formdata:set_row)$
bei der Generierung gestartet wird.
Das Executable könnte dann so ausfallen:
public class DoSomethingWithCategoriesExecutable extends Executable {
private Writer out;
private Writer err;
private final Map<String, Object> params = new HashMap<String, Object>();
@Override
public final Object execute(final Map<String, Object> params) {
return execute(params, ScriptUtil.getInfoLogWriter(getClass()), ScriptUtil.getErrorLogWriter(getClass()));
}
@Override
public final Object execute(final Map<String, Object> params, final Writer out, final Writer err) {
this.params.putAll(params);
this.out = out;
this.err = err;
return execute();
}
@Override
public Object execute() {
BaseContext context = (BaseContext) params.get("context");
Language masterLanguage = context.requireSpecialist(LanguageAgent.TYPE).getMasterLanguage();
FormData formData = (FormData) params.get("formdata");
FormField<?> categoryField = (FormField<?>) formData.get(masterLanguage, "cs_categories");
categoryField.get(); // hier bekommt man die Kategorien, mit denen man nun nach Belieben Unfug treiben kann.
return null;
}
}
Die Executable-Klasse muss hierfür noch in der module.xml angegeben sein
<public>
<name>do-something-with-categories-executable</name>
<description>lorem ipsum uswusf</description>
<class>de.pfad.zu.DoSomethingWithCategoriesExecutable</class>
</public>
Damit kommt das Skript in FirstSpirit mit folgendem Inhalt aus:
#!executable-class
do-something-with-categories-executable