Forums

Home » Liferay Portal » Deutsch

Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
André Gärtner
Web-Content von einem Layout kopieren
October 5, 2012 8:12 AM
Answer

André Gärtner

Rank: New Member

Posts: 5

Join Date: October 5, 2012

Recent Posts

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?
André Gärtner
RE: Web-Content von einem Layout kopieren
October 18, 2012 12:39 AM
Answer

André Gärtner

Rank: New Member

Posts: 5

Join Date: October 5, 2012

Recent Posts

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é
lutz Bremen
RE: Web-Content von einem Layout kopieren
October 23, 2012 1:45 AM
Answer

lutz Bremen

Rank: Expert

Posts: 296

Join Date: October 20, 2011

Recent Posts

was ist denn mit Staging? da wird doch alles mitkopiert?