Forums

Home » Liferay Portal » česky a slovensky

Combination View Flat View Tree View
Threads [ Previous | Next ]
toggle
Jiri Ambroz
Webservices - změna defaultního template pro vytváření nové Sítě
July 3, 2012 6:57 AM
Answer

Jiri Ambroz

Rank: New Member

Posts: 10

Join Date: May 24, 2012

Recent Posts

Ahoj
Přes Webservices vytvářím pro každou organizaci Síť (GroupService). Tato síť se implicitně generuje s prázdným template.
Potřeboval bych nastavit jiný defaultní template, aby se využil při generování nové sítě.
Nebo lze nějak jinak přes Webservices přiřadit template k síti?

Používám Liferay 6.1

Díky za pomoc
Jiri
Tomas Polesovsky
RE: Webservices - změna defaultního template pro vytváření nové Sítě
July 10, 2012 3:04 AM
Answer

Tomas Polesovsky

LIFERAY STAFF

Rank: Liferay Master

Posts: 645

Join Date: February 13, 2009

Recent Posts

Ahoj,

předpokládám, že se bavime o site (angl.), tedy cesky weby (ne sítě) emoticon

Přes webové služby to volat nejde.

Funguje to totiž trochu jinak - v základu: šablony jsou nádstavbou nad weby a něco jako defaultní šablona neexistuje. Defaultně se vytváří prázdný web a pokud zvolíš nějakou šablonu, tak se potom vykopírují stránky, portlety a nastavení z té šablony do toho nového webu.

Přesněji řečeno, je to trochu složitější, protože se to vztahuje na LayoutSety (ne na Group) a kromě kopírování stránek s portlety se přebírají další věci (preference, typeSettingProperties, vazby v DB, téma) a kopírování přes tzv. LAR, což je zip s XML soubory.

Celá funkcionalita je nádstavba jádra portálu (není to v jádře), takže to nemá v současné době podporu přímo z liferay služeb a neexistuje tedy ani přístup před webové služby. Samozřejmě existují entitiní služby pro přímou manipulaci s objekty, ale neexistuje business logika, která by se mohla volat přes webové služby.

Pokud se chceš podívat, jak se to volá přímo v Liferay, tak zde je strutsová EditGroupAction pro 6.1.0, zvýraznil jsem tam tu důležitou část.

Pokud to chceš volat z 3. systému, potom je asi ideální cesta nasadit si něco vlastního do portálu, co můžeš zavolat z vnějška.

-- tom
Milan Jaroš
RE: Webservices - změna defaultního template pro vytváření nové Sítě
July 13, 2012 1:23 PM
Answer

Milan Jaroš

Rank: Expert

Posts: 269

Join Date: August 18, 2008

Recent Posts

Ahoj, tak mě napadá, není to (site) někde špatně přeložené? emoticon
Tomas Polesovsky
RE: Webservices - změna defaultního template pro vytváření nové Sítě
July 16, 2012 5:43 AM
Answer

Tomas Polesovsky

LIFERAY STAFF

Rank: Liferay Master

Posts: 645

Join Date: February 13, 2009

Recent Posts

Ahoj Milane, nenašel jsem to nikde. Buď je to v celé anglické větě nebo je tam český překlad s webem. Anebo jsem se špatně díval emoticon
Jiri Ambroz
RE: Webservices - změna defaultního template pro vytváření nové Sítě
July 17, 2012 10:46 AM
Answer

Jiri Ambroz

Rank: New Member

Posts: 10

Join Date: May 24, 2012

Recent Posts

Ahoj
Milane:
to s tím (site) sem zpackal já, nějak sem nad tím neuvazoval, jak sem to psal. Jinak je to přeloženo dobře.

Tome:
Moc dík za radu, byla hodně nápomocna. Problém sem vyřešil tak že sem si vytvořil na Liferay službu která se mě o to stará. Jak si poradil
Jen mě trvalo trochu poprat se s webovými službami přes Liferay.

-V podstatě sem si založil skupinu
1
2Group group = GroupLocalServiceUtil.addGroup(userId, null, 0, nameSite, "", idType, nameURLFrendly, true, true, serviceContext);


-Nastavil práva
 1
 2PrincipalThreadLocal.setName(userId);
 3User user = UserLocalServiceUtil.getUserById(userId);
 4      
 5PermissionChecker permissionChecker;
 6permissionChecker = PermissionCheckerFactoryUtil.create(user, false);
 7       
 8GroupPermissionUtil.check(permissionChecker, group.getGroupId(), ActionKeys.VIEW);
 9PermissionThreadLocal.setPermissionChecker(permissionChecker);   


-Definoval třidu SitesUtil, metodu applyLayoutSetPrototypes a datové typy, které slouží pro práci funkci applyLayoutSetPrototypes
1   
2MethodKey key = new MethodKey("com.liferay.portlet.sites.util.SitesUtil", "applyLayoutSetPrototypes", Group.class, long.class, long.class,ServiceContext.class);


-Přirazeni layotu k webu. - applyLayoutSetPrototypes(group, publicLayoutSetPrototypeId, privateLayoutSetPrototypeId,serviceContext)
1   
2PortalClassInvoker.invoke(true, key, group, idSiteTemplate , 0, serviceContext);


-S tím že idSiteTemplate přidávám na pevno ale pokud bych ho chtěl vyhledat z databáze dalo by se použít:
 1
 2List<LayoutSetPrototype> allLayoutPrototypes = LayoutSetPrototypeLocalServiceUtil.getLayoutSetPrototypes(-1, -1);            
 3LayoutSetPrototype projectDefaultLayout = null;
 4for (LayoutSetPrototype layoutSetPrototype : allLayoutPrototypes) {
 5            if (layoutSetPrototype.getName().contains("DefaultniTemplate")) {
 6                projectDefaultLayout = layoutSetPrototype;
 7                break;
 8            }
 9}
10idSiteTemplate = projectDefaultLayout.getLayoutSetPrototypeId();



Dik za pomoc.
Jiri