Fórumok

Web-Content von einem Layout kopieren

thumbnail
André Gärtner, módosítva 11 év-val korábban

Web-Content von einem Layout kopieren

New Member Bejegyzések: 5 Csatlakozás dátuma: 2012.10.05. Legújabb bejegyzések
Hallo,

ich möchte gerne die Layouts und den damit verbundenen Web-Content einer bestehenden Organisation per Hook auf eine neue Organisation übertragen. Das mit dem Layout klappt sehr gut , allerdings fehlt mir im Moment der Ansatz, wie der mit den Layouts verbundenen Web-Content übertragen werden kann. Genau eingegrenzt, möchte ich den Web-Content nicht einfach kopieren, wie es bei Im- und Export schon möglich ist, sondern den bestehenden Web-Content in die neue Organisation verlinken. Eine Änderung des Content in der einen Organisation soll sich also auch in der anderen Organisation auswirken.

Hat jemand einen Vorschlag, wie das gelöst werden kann?
thumbnail
André Gärtner, módosítva 11 év-val korábban

RE: Web-Content von einem Layout kopieren

New Member Bejegyzések: 5 Csatlakozás dátuma: 2012.10.05. Legújabb bejegyzések
Um den Web-Content verlinken zu können, lassen sich die PortletPreferences verwenden. Hier sind die JournalArticle verlinkt.

An dieser Stelle möchte ich einmal meine Lösung für das obige Problem darlegen:

  • Wir suchen die Organisation deren Struktur und Content wir kopieren wollen mit CompanyLocalServiceUtil.getCompanyByWebId(companyName)
  • Wir erzeugen eine neue Organisation mit OrganizationLocalServiceUtil.addOrganization(...),
  • und holen alle Layouts der Quell-Organisation mit LayoutLocalServiceUtil.getLayouts(srcGroupID, ....)
  • Anschließend kopieren wir die Layouts mit LayoutLocalServiceUtil.addLayout(...)
  • Wie müssen zwei unterschiedliche Typen von Layouts unterscheiden: 'link_to_layout' und 'portlet'. Wenn es sich um einen Link handelt, merken wir uns die Verlinkung in einer Map. In einem nachgelagerten Schritt wird diese Verbindung auf die neuen Layouts der Zielorganisation übertragen.
  • Wie kopieren die 'TypeSettings' des Quelllayouts mit targetLayout.setTypeSettingsProperties(srcLayout.getTypeSettingsProperties())
  • Anschließend lesen wir die Portlet-Ids aus, die mit dem Quell-Layout verbunden sind, diese erhalten wir über die LayoutTypePortlet des Quelllayouts.
  • Mit PortletPreferencesLocalServiceUtil.getPreferences(..... , srcLayout.getPlid(), srcPortletId) erhalten wir dann die Preferences eines Portlet in Verbindung mit dem Layout. Um den Web-Content einfach zu verlinken, nutzen wir setValue(key, value) des javax.portlet.PortletPreferences und setzen für den Schlüssel 'group-id' die Group-Id der Zielorganisation.
  • Anschließend speichern wir die PortletPreferences mit PortletPreferencesLocalServiceUtil.updatePreferences(), hierfür nutzen wir die Preferences der Quelle und setzen beim Update einfach die Plid und die Layout-Id des Ziel-Layouts.
  • Verlinken von Web-Content ist so lange okay, wie dieser aus dem globalen Kontext kommt Ist es aber ein JournalArticle welcher zu den 'privaten' der Quell-Organisation gehört, müssen wir diesen kopieren und in den PortletPreferences. über den Schlüssel 'article-id' setzen.


Viele Grüße
André
thumbnail
lutz Bremen, módosítva 11 év-val korábban

RE: Web-Content von einem Layout kopieren

Expert Bejegyzések: 291 Csatlakozás dátuma: 2011.10.20. Legújabb bejegyzések
was ist denn mit Staging? da wird doch alles mitkopiert?