pdresel
Occasional Observer

Kontextmenü Skript im ContentCreator

Jump to solution

Hallo zusammen,

gibt es eine Möglichkeit im ContentCreator ein Skript, analog zum SiteArchitect über das Kontextmenü zu starten?
Also im linken Menü im "Seite" Tab per Rechtsklick auf ein Element?

 

Hintergrund: Da sich die Ids von Anchor-Tags (und somit auch die resultierenden URLs) aus den Referenznamen der Absätze bestimmen, möchte der Kunde gerne seinen Redakteuren die Möglichkeit geben den Referenznamen von Absätzen nachträglich zu ändern.
Im SiteArchitekt ist das einfach über die "Umbenennen" Option möglich. Im ContentCreator nicht.
Daher war die Idee ein kurzes Skript zu schreiben das den Referenznamen über die API ändert. Das klappt auch super, aber auch wieder nur im SiteArchitekt, da Kontextmenü-Skripte im CC offenbar nicht angezeigt werden.

Bisher habe ich es nur geschafft Skripte oder Workflows auf Seitenebene zu starten. Ich schaffe es aber nicht einen spezifischen Absatz als Kontext zu haben.

Hat jemand eine Idee? Oder gibt es evtl. eine ganz andere Möglichkeit die Referenznamen im CC zu ändern?

 

Grüße

Patrick

0 Kudos
1 Solution

Accepted Solutions

Hi,

kann es sein, dass du es im SA ausgeführt hast, während die Seite bereits (manuell) in den Bearbeitungsmodus gesetzt war?

Hintergrund der Frage: Ich vermisse den üblichen „Rahmen“ aus setlock(true)/save()/setLock(false).

Das kann so im SA eigentlich nur funktionieren (bzw. insbesondere ein Refresh „überleben“), wenn ein save() passiert, für das wiederum ein setLock(true) erforderlich ist. Im SA erfolgt das auch beim Starten bzw. Beenden des Bearbeitungsmodus.

Im CC gibt es das separate „Starten des Bearbeitungsmodus“ so „getrennt“ nicht, dort wird das Lock (=Starten des Bearbeitungsmodus) immer automatisch beim Öffnen von Formularen gesetzt und bei „Speichern“ erfolgt dann das save() und setLock(false).

Heißt: Im SA hat es dann sozusagen eher „zufällig“ funktioniert.

Dass kein Fehler fliegt liegt daran, dass Dinge wie setName(…) erstmal nur Operationen auf „lokalen Objekten“ sind, die sind eh erstmal „temporär“. Der „entscheidende Punkt“ ist dann erst das Speichern. Da das im Code fehlt, wird diese „temporäre Änderung“ schlicht verworfen.

Im SA hat - wenn meine Vermutung zutrifft - das manuelle Starten und spätere Beenden des Bearbeitungsmodus die im Skript „fehlenden“ Teile „beigesteuert“.

Viele Grüße 

Michael

View solution in original post

0 Kudos
2 Replies
pdresel
Occasional Observer

Ich habe es jetzt geschafft das Skript im ContentCreator über das Kontextmenü zu starten.

Es war denkbar einfach. Ich musste als Geltungsbereich "ContentCreator" statt "Kontextmenü" auswählen. Aber das Skript funktioniert nicht. Im SiteArchitekt ist das kein Problem.

 

Das Skript hat folgenden Code

//!Beanshell

import de.espirit.firstspirit.access.store.pagestore.Section;
import de.espirit.firstspirit.forms.FormData;

if(context.getElement() instanceof Section) {

	Section section = context.getElement();
	FormData formData = context.showForm();
	String newName = formData.get(null, "sc_name").get();
	section.setName(newName);
}

 Mit dem Formular

<CMS_MODULE>

  <CMS_INPUT_TEXT name="sc_name" allowEmpty="no" hFill="yes" singleLine="no">
    <LANGINFOS>
      <LANGINFO lang="*" label="New name"/>
      <LANGINFO lang="DE" label="Neuer Name"/>
    </LANGINFOS>
  </CMS_INPUT_TEXT>

</CMS_MODULE>

 

Wenn ich das im SiteArchitect ausführe (Im grünen Bereich Rechtsklick auf die Section und dann "Skript ausführen") funktioniert es problemlos.

Das selbe Im ContentCreator (Im "Seite" Tab des linken Menüs Rechtsklick auf die Section und dann "Skript ausführen") funktioniert nicht. Es kommt zwar das Formular, aber er übernimmt den neuen Namen nicht. Es kommt aber auch kein Fehler.

Woran kann das liegen?

0 Kudos

Hi,

kann es sein, dass du es im SA ausgeführt hast, während die Seite bereits (manuell) in den Bearbeitungsmodus gesetzt war?

Hintergrund der Frage: Ich vermisse den üblichen „Rahmen“ aus setlock(true)/save()/setLock(false).

Das kann so im SA eigentlich nur funktionieren (bzw. insbesondere ein Refresh „überleben“), wenn ein save() passiert, für das wiederum ein setLock(true) erforderlich ist. Im SA erfolgt das auch beim Starten bzw. Beenden des Bearbeitungsmodus.

Im CC gibt es das separate „Starten des Bearbeitungsmodus“ so „getrennt“ nicht, dort wird das Lock (=Starten des Bearbeitungsmodus) immer automatisch beim Öffnen von Formularen gesetzt und bei „Speichern“ erfolgt dann das save() und setLock(false).

Heißt: Im SA hat es dann sozusagen eher „zufällig“ funktioniert.

Dass kein Fehler fliegt liegt daran, dass Dinge wie setName(…) erstmal nur Operationen auf „lokalen Objekten“ sind, die sind eh erstmal „temporär“. Der „entscheidende Punkt“ ist dann erst das Speichern. Da das im Code fehlt, wird diese „temporäre Änderung“ schlicht verworfen.

Im SA hat - wenn meine Vermutung zutrifft - das manuelle Starten und spätere Beenden des Bearbeitungsmodus die im Skript „fehlenden“ Teile „beigesteuert“.

Viele Grüße 

Michael

0 Kudos