SlideShare a Scribd company logo
1 of 31
Download to read offline
Egna mallar i moduler 
2
Magnus Lövgren 
magnus.lovgren@sitevision.se 
@magloven 
3 
Utvecklare - Sök & API
Egna mallar i moduler 
Agenda 
● Velocity 
● SiteVision API 
● Datamodell 
● Funktioner 
● Tillgängligt i mallen 
4
Egna mallar i moduler – 1. Velocity 
1. Velocity 
● $ 
● #set 
● #if / #elseif / #else / #end 
● #foreach #end 
● ## 
● #*... *# 
5 
http://help.sitevision.se/velocity
Egna mallar i moduler – 1. Velocity 
$ - referens 
● $<namn> 
● ${<namn>} 
6 
”Velocity Context” 
”myObject” 
”myOtherObject”
Egna mallar i moduler – 1. Velocity 
Access 
7 
$myObject.getName() 
$myObject.Name 
$myObject.name 
”myObject” 
$myObject.setName('Nisse') 
$myObject.setName("Nisse") 
$myObject.setName($myString) 
String getName() 
void setName(String aName) 
...
Egna mallar i moduler – 1. Velocity 
Output 
Velocity-kod Output 
<p> 
Sätter namnet till Anna 
$myObject.setName('Anna') 
</p> 
<p>Hej $myObject.name</p> 
8 
● Allt som är kvar efter evaluering 
<p> 
Sätter namnet till Anna 
</p> 
<p>Hej Anna</p>
Egna mallar i moduler – 1. Velocity 
Tilldelning - #set 
9 
#set ($name = 'Stina') 
#set ($age = 30) 
#set ($together = $name + ' är ' + $age + ' år') 
#set ($ageNextYear = $age + 1) 
#set ($retire = 65 - $age)
Egna mallar i moduler – 1. Velocity 
10 
● Fallgrop - Tilldelar INTE null 
Velocity-kod Output 
#set ($name = 'Stina' ) 
$name 
#set ($name = $obj.tryGetOlle()) 
$name 
Stina 
Olle 
Stina 
Stina
Egna mallar i moduler – 1. Velocity 
Selektion - #if #elseif #else #end 
11 
#if ($age <= 10) 
… 
#elseif ($age < 65) 
… 
#else 
... 
#end 
#if ($count > 0) 
... 
#end 
#if ($success) 
… 
#else 
... 
#end
Egna mallar i moduler – 1. Velocity 
12 
Operatorer/utvärdering 
● ! == ”not” 
● && == ”and” 
● || == ”or” 
● Icke-existerande/null är ”false” 
#if ($user && (!$user.active || $user.obsolete)) 
... 
#end
Egna mallar i moduler – 1. Velocity 
Iteration - #foreach in #end 
13 
● Implicit #set 
#foreach ($user in $userList) 
… 
$user.age 
#end
Egna mallar i moduler – 2. API 
2. SiteVision API 
● JCR 
● Datamodell 
● Utilities 
● Funktioner / modellhjälp 
14 
http://help.sitevision.se/api 
http://help.sitevision.se/javadoc
Egna mallar i moduler – 2. API:JCR 
API del 1 - JCR 
● Java Content Repository 
● JSR 283 (JSR 170) 
● Generell standard 
● Trädstruktur 
● SiteVision implementerar 
Level 1 (”Läs”) 
15
Egna mallar i moduler – 2. API:JCR 
Grundläggande koncept 
16 
Parent 
Name Identifier 
NodeType 
Children 
Node 
PropertyType 
Node 
STRING 
BOOLEAN 
LONG 
DOUBLE 
DATE 
... 
WEAKREFERENCE 
Node 
Properties 
Path
Egna mallar i moduler – 2. API:JCR 
Jobba med JCR 
● Träduppbyggnad? 
● Nod-typer? 
● Properties för resp. nod-typ? 
● Typ för resp. property? 
17 
http://help.sitevision.se/nodetypes
Egna mallar i moduler – 2. API:JCR 
18 
Träd 
sv:page (En sida) 
sv:pageContent 
sv:referenceLayout (Mittenspalt) 
sv:portlet (En textmodul) 
sv:layoutRepository 
sv:layout ("Absolut innehåll") 
sv:localImageRepository ("Bilder på sidan") 
sv:image 
sv:localFileRepository ("Filer på sidan") 
sv:file 
sv:pageCommentRepository ("Sidkommentarer") 
sv:pageComment 
sv:ratingRepository ("Betyg för sidan") 
sv:rating 
sv:metadataDefinitionRepository 
sv:metadata...Definition 
sv:page (En undersida) 
sv:pageContent
Egna mallar i moduler – 2. API:JCR 
Vanliga metoder 
● Parent: → Node.getParent() 
● Children: → Node.getNodes() 
● Lookup: → Node.getNode(RelativePathString) 
→ Session.getNodeByIdentifier(Identifier) 
● Property: → Node.getProperty(Name).get<TYP>() 
19
Egna mallar i moduler – 2. API:JCR 
Potentiella svårigheter 
● Hitta noder 
● Iterera ”rätt” noder 
● Hämta properties 
● RepositoryException 
20
Egna mallar i moduler – 2. API:Utilities 
API del 2 - Utilities 
● JCR-hjälp 
→ Genvägar 
→ Properties 
→ ... 
● Funktioner 
→ Skapa sida 
→ Lägg till medlem i grupp 
→ ... 
21
Egna mallar i moduler – 2. API:JCR/Utilities 
22 
javax.jcr.* 
JCR 
senselogic.* 
Utilities
Egna mallar i moduler 
3. Tillgängligt i den egna mallen 
23
Egna mallar i moduler 
$jcrSession 
24
Egna mallar i moduler 
$sitevisionUtils 
25
Egna mallar i moduler 
26 
Properties 
● Noder har properties 
● Namn 
● PropertyType 
$portlet har properties
Egna mallar i moduler 
Ex: Hämta Boolean-property 
● Via Node 
27 
#set ($use = $portlet.getProperty( 'useActiveFont' ).getBoolean()) 
● Via PropertyUtil 
#set ($propertyUtil = $sitevisionUtils.propertyUtil) 
... 
#set ($use = $propertyUtil.getBoolean($portlet, 'useActiveFont' ))
Egna mallar i moduler 
28 
Demo 
● Söklistningsmodulen
Egna mallar i moduler – 2. API:Utilities 
API-tips: JCR-utilities 
● PropertyUtil 
→ läsa properties 
● PortletContextUtil + ResourceLocatorUtil 
→ hitta noder 
● NodeIteratorUtil + NodeTreeUtil 
→ iterera och filtrera noder 
● NodeComparatorUtil + NodeFilterUtil 
→ sortera och filtrera noder/collections 
29
Egna mallar i moduler – 2. API:Utilities 
API-tips: Skript/Velocity-utilities 
● ScriptUtil 
→ underlätta 
● InstanceTypeUtil 
→ kontrollera typ 
● InstanceCreatorUtil 
→ skapa objekt 
30
Egna mallar i moduler – 2. API:Utilities 
API-tips: Renderings-utilities 
● LinkRenderer 
→ rendera länkar 
● ImageRenderer + ImageLinkRenderer 
→ rendera bilder 
● OutputUtil 
→ rendera annan modul 
● BuddyIconRenderer 
→ rendera profilbilds-miniatyren för en social identitet 
31

More Related Content

More from SiteVision AB

Göteborgs Stadsmission - Smarta intranät 2015
Göteborgs Stadsmission - Smarta intranät 2015Göteborgs Stadsmission - Smarta intranät 2015
Göteborgs Stadsmission - Smarta intranät 2015SiteVision AB
 
Så lyckas du med ditt sociala intranät - Webbinarium den 15 april
Så lyckas du med ditt sociala intranät - Webbinarium den 15 aprilSå lyckas du med ditt sociala intranät - Webbinarium den 15 april
Så lyckas du med ditt sociala intranät - Webbinarium den 15 aprilSiteVision AB
 
Kriskommunikation och beredskap på webben - Solinarium 2015
Kriskommunikation och beredskap på webben - Solinarium 2015Kriskommunikation och beredskap på webben - Solinarium 2015
Kriskommunikation och beredskap på webben - Solinarium 2015SiteVision AB
 
Infografik: Därför behöver din organisation ett socialt intranät
Infografik: Därför behöver din organisation ett socialt intranätInfografik: Därför behöver din organisation ett socialt intranät
Infografik: Därför behöver din organisation ett socialt intranätSiteVision AB
 
Nyttan med sociala intranät inklusive flera kundexempel - SiteVision och Offi...
Nyttan med sociala intranät inklusive flera kundexempel - SiteVision och Offi...Nyttan med sociala intranät inklusive flera kundexempel - SiteVision och Offi...
Nyttan med sociala intranät inklusive flera kundexempel - SiteVision och Offi...SiteVision AB
 
Presentation från webbinarium om sociala intranät och SiteVision
Presentation från webbinarium om sociala intranät och SiteVisionPresentation från webbinarium om sociala intranät och SiteVision
Presentation från webbinarium om sociala intranät och SiteVisionSiteVision AB
 
Därför behöver du responsiv design på din webbplats - Fakta och 6 tips - Site...
Därför behöver du responsiv design på din webbplats - Fakta och 6 tips - Site...Därför behöver du responsiv design på din webbplats - Fakta och 6 tips - Site...
Därför behöver du responsiv design på din webbplats - Fakta och 6 tips - Site...SiteVision AB
 
Webbdagarna Växjö: Så lyckas du med ditt sociala intranät - SiteVision
Webbdagarna Växjö: Så lyckas du med ditt sociala intranät - SiteVisionWebbdagarna Växjö: Så lyckas du med ditt sociala intranät - SiteVision
Webbdagarna Växjö: Så lyckas du med ditt sociala intranät - SiteVisionSiteVision AB
 
"Enklast vinner" - Tomas Johansson Haavik och Per Axbom om nya SKL.se under W...
"Enklast vinner" - Tomas Johansson Haavik och Per Axbom om nya SKL.se under W..."Enklast vinner" - Tomas Johansson Haavik och Per Axbom om nya SKL.se under W...
"Enklast vinner" - Tomas Johansson Haavik och Per Axbom om nya SKL.se under W...SiteVision AB
 
Webbinarium 5 november - Sociala intranät och SiteVision Social Collaboration
Webbinarium 5 november - Sociala intranät och SiteVision Social CollaborationWebbinarium 5 november - Sociala intranät och SiteVision Social Collaboration
Webbinarium 5 november - Sociala intranät och SiteVision Social CollaborationSiteVision AB
 
Så lyckas du med ditt sociala intranät - Smarta Intranät 2014
Så lyckas du med ditt sociala intranät - Smarta Intranät 2014Så lyckas du med ditt sociala intranät - Smarta Intranät 2014
Så lyckas du med ditt sociala intranät - Smarta Intranät 2014SiteVision AB
 
Påverka dina formatmallar - SiteVisiondagarna 2014
Påverka dina formatmallar - SiteVisiondagarna 2014Påverka dina formatmallar - SiteVisiondagarna 2014
Påverka dina formatmallar - SiteVisiondagarna 2014SiteVision AB
 
Trimma sök i SiteVision - SiteVisiondagarna 2014
Trimma sök i SiteVision - SiteVisiondagarna 2014Trimma sök i SiteVision - SiteVisiondagarna 2014
Trimma sök i SiteVision - SiteVisiondagarna 2014SiteVision AB
 
Metadata i SiteVision - SiteVisiondagarna 2014
Metadata i SiteVision - SiteVisiondagarna 2014Metadata i SiteVision - SiteVisiondagarna 2014
Metadata i SiteVision - SiteVisiondagarna 2014SiteVision AB
 
Så lyckas du med ditt sociala intranät - Webbdagarna 2014
Så lyckas du med ditt sociala intranät - Webbdagarna 2014Så lyckas du med ditt sociala intranät - Webbdagarna 2014
Så lyckas du med ditt sociala intranät - Webbdagarna 2014SiteVision AB
 

More from SiteVision AB (15)

Göteborgs Stadsmission - Smarta intranät 2015
Göteborgs Stadsmission - Smarta intranät 2015Göteborgs Stadsmission - Smarta intranät 2015
Göteborgs Stadsmission - Smarta intranät 2015
 
Så lyckas du med ditt sociala intranät - Webbinarium den 15 april
Så lyckas du med ditt sociala intranät - Webbinarium den 15 aprilSå lyckas du med ditt sociala intranät - Webbinarium den 15 april
Så lyckas du med ditt sociala intranät - Webbinarium den 15 april
 
Kriskommunikation och beredskap på webben - Solinarium 2015
Kriskommunikation och beredskap på webben - Solinarium 2015Kriskommunikation och beredskap på webben - Solinarium 2015
Kriskommunikation och beredskap på webben - Solinarium 2015
 
Infografik: Därför behöver din organisation ett socialt intranät
Infografik: Därför behöver din organisation ett socialt intranätInfografik: Därför behöver din organisation ett socialt intranät
Infografik: Därför behöver din organisation ett socialt intranät
 
Nyttan med sociala intranät inklusive flera kundexempel - SiteVision och Offi...
Nyttan med sociala intranät inklusive flera kundexempel - SiteVision och Offi...Nyttan med sociala intranät inklusive flera kundexempel - SiteVision och Offi...
Nyttan med sociala intranät inklusive flera kundexempel - SiteVision och Offi...
 
Presentation från webbinarium om sociala intranät och SiteVision
Presentation från webbinarium om sociala intranät och SiteVisionPresentation från webbinarium om sociala intranät och SiteVision
Presentation från webbinarium om sociala intranät och SiteVision
 
Därför behöver du responsiv design på din webbplats - Fakta och 6 tips - Site...
Därför behöver du responsiv design på din webbplats - Fakta och 6 tips - Site...Därför behöver du responsiv design på din webbplats - Fakta och 6 tips - Site...
Därför behöver du responsiv design på din webbplats - Fakta och 6 tips - Site...
 
Webbdagarna Växjö: Så lyckas du med ditt sociala intranät - SiteVision
Webbdagarna Växjö: Så lyckas du med ditt sociala intranät - SiteVisionWebbdagarna Växjö: Så lyckas du med ditt sociala intranät - SiteVision
Webbdagarna Växjö: Så lyckas du med ditt sociala intranät - SiteVision
 
"Enklast vinner" - Tomas Johansson Haavik och Per Axbom om nya SKL.se under W...
"Enklast vinner" - Tomas Johansson Haavik och Per Axbom om nya SKL.se under W..."Enklast vinner" - Tomas Johansson Haavik och Per Axbom om nya SKL.se under W...
"Enklast vinner" - Tomas Johansson Haavik och Per Axbom om nya SKL.se under W...
 
Webbinarium 5 november - Sociala intranät och SiteVision Social Collaboration
Webbinarium 5 november - Sociala intranät och SiteVision Social CollaborationWebbinarium 5 november - Sociala intranät och SiteVision Social Collaboration
Webbinarium 5 november - Sociala intranät och SiteVision Social Collaboration
 
Så lyckas du med ditt sociala intranät - Smarta Intranät 2014
Så lyckas du med ditt sociala intranät - Smarta Intranät 2014Så lyckas du med ditt sociala intranät - Smarta Intranät 2014
Så lyckas du med ditt sociala intranät - Smarta Intranät 2014
 
Påverka dina formatmallar - SiteVisiondagarna 2014
Påverka dina formatmallar - SiteVisiondagarna 2014Påverka dina formatmallar - SiteVisiondagarna 2014
Påverka dina formatmallar - SiteVisiondagarna 2014
 
Trimma sök i SiteVision - SiteVisiondagarna 2014
Trimma sök i SiteVision - SiteVisiondagarna 2014Trimma sök i SiteVision - SiteVisiondagarna 2014
Trimma sök i SiteVision - SiteVisiondagarna 2014
 
Metadata i SiteVision - SiteVisiondagarna 2014
Metadata i SiteVision - SiteVisiondagarna 2014Metadata i SiteVision - SiteVisiondagarna 2014
Metadata i SiteVision - SiteVisiondagarna 2014
 
Så lyckas du med ditt sociala intranät - Webbdagarna 2014
Så lyckas du med ditt sociala intranät - Webbdagarna 2014Så lyckas du med ditt sociala intranät - Webbdagarna 2014
Så lyckas du med ditt sociala intranät - Webbdagarna 2014
 

Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

  • 1.
  • 2. Egna mallar i moduler 2
  • 3. Magnus Lövgren magnus.lovgren@sitevision.se @magloven 3 Utvecklare - Sök & API
  • 4. Egna mallar i moduler Agenda ● Velocity ● SiteVision API ● Datamodell ● Funktioner ● Tillgängligt i mallen 4
  • 5. Egna mallar i moduler – 1. Velocity 1. Velocity ● $ ● #set ● #if / #elseif / #else / #end ● #foreach #end ● ## ● #*... *# 5 http://help.sitevision.se/velocity
  • 6. Egna mallar i moduler – 1. Velocity $ - referens ● $<namn> ● ${<namn>} 6 ”Velocity Context” ”myObject” ”myOtherObject”
  • 7. Egna mallar i moduler – 1. Velocity Access 7 $myObject.getName() $myObject.Name $myObject.name ”myObject” $myObject.setName('Nisse') $myObject.setName("Nisse") $myObject.setName($myString) String getName() void setName(String aName) ...
  • 8. Egna mallar i moduler – 1. Velocity Output Velocity-kod Output <p> Sätter namnet till Anna $myObject.setName('Anna') </p> <p>Hej $myObject.name</p> 8 ● Allt som är kvar efter evaluering <p> Sätter namnet till Anna </p> <p>Hej Anna</p>
  • 9. Egna mallar i moduler – 1. Velocity Tilldelning - #set 9 #set ($name = 'Stina') #set ($age = 30) #set ($together = $name + ' är ' + $age + ' år') #set ($ageNextYear = $age + 1) #set ($retire = 65 - $age)
  • 10. Egna mallar i moduler – 1. Velocity 10 ● Fallgrop - Tilldelar INTE null Velocity-kod Output #set ($name = 'Stina' ) $name #set ($name = $obj.tryGetOlle()) $name Stina Olle Stina Stina
  • 11. Egna mallar i moduler – 1. Velocity Selektion - #if #elseif #else #end 11 #if ($age <= 10) … #elseif ($age < 65) … #else ... #end #if ($count > 0) ... #end #if ($success) … #else ... #end
  • 12. Egna mallar i moduler – 1. Velocity 12 Operatorer/utvärdering ● ! == ”not” ● && == ”and” ● || == ”or” ● Icke-existerande/null är ”false” #if ($user && (!$user.active || $user.obsolete)) ... #end
  • 13. Egna mallar i moduler – 1. Velocity Iteration - #foreach in #end 13 ● Implicit #set #foreach ($user in $userList) … $user.age #end
  • 14. Egna mallar i moduler – 2. API 2. SiteVision API ● JCR ● Datamodell ● Utilities ● Funktioner / modellhjälp 14 http://help.sitevision.se/api http://help.sitevision.se/javadoc
  • 15. Egna mallar i moduler – 2. API:JCR API del 1 - JCR ● Java Content Repository ● JSR 283 (JSR 170) ● Generell standard ● Trädstruktur ● SiteVision implementerar Level 1 (”Läs”) 15
  • 16. Egna mallar i moduler – 2. API:JCR Grundläggande koncept 16 Parent Name Identifier NodeType Children Node PropertyType Node STRING BOOLEAN LONG DOUBLE DATE ... WEAKREFERENCE Node Properties Path
  • 17. Egna mallar i moduler – 2. API:JCR Jobba med JCR ● Träduppbyggnad? ● Nod-typer? ● Properties för resp. nod-typ? ● Typ för resp. property? 17 http://help.sitevision.se/nodetypes
  • 18. Egna mallar i moduler – 2. API:JCR 18 Träd sv:page (En sida) sv:pageContent sv:referenceLayout (Mittenspalt) sv:portlet (En textmodul) sv:layoutRepository sv:layout ("Absolut innehåll") sv:localImageRepository ("Bilder på sidan") sv:image sv:localFileRepository ("Filer på sidan") sv:file sv:pageCommentRepository ("Sidkommentarer") sv:pageComment sv:ratingRepository ("Betyg för sidan") sv:rating sv:metadataDefinitionRepository sv:metadata...Definition sv:page (En undersida) sv:pageContent
  • 19. Egna mallar i moduler – 2. API:JCR Vanliga metoder ● Parent: → Node.getParent() ● Children: → Node.getNodes() ● Lookup: → Node.getNode(RelativePathString) → Session.getNodeByIdentifier(Identifier) ● Property: → Node.getProperty(Name).get<TYP>() 19
  • 20. Egna mallar i moduler – 2. API:JCR Potentiella svårigheter ● Hitta noder ● Iterera ”rätt” noder ● Hämta properties ● RepositoryException 20
  • 21. Egna mallar i moduler – 2. API:Utilities API del 2 - Utilities ● JCR-hjälp → Genvägar → Properties → ... ● Funktioner → Skapa sida → Lägg till medlem i grupp → ... 21
  • 22. Egna mallar i moduler – 2. API:JCR/Utilities 22 javax.jcr.* JCR senselogic.* Utilities
  • 23. Egna mallar i moduler 3. Tillgängligt i den egna mallen 23
  • 24. Egna mallar i moduler $jcrSession 24
  • 25. Egna mallar i moduler $sitevisionUtils 25
  • 26. Egna mallar i moduler 26 Properties ● Noder har properties ● Namn ● PropertyType $portlet har properties
  • 27. Egna mallar i moduler Ex: Hämta Boolean-property ● Via Node 27 #set ($use = $portlet.getProperty( 'useActiveFont' ).getBoolean()) ● Via PropertyUtil #set ($propertyUtil = $sitevisionUtils.propertyUtil) ... #set ($use = $propertyUtil.getBoolean($portlet, 'useActiveFont' ))
  • 28. Egna mallar i moduler 28 Demo ● Söklistningsmodulen
  • 29. Egna mallar i moduler – 2. API:Utilities API-tips: JCR-utilities ● PropertyUtil → läsa properties ● PortletContextUtil + ResourceLocatorUtil → hitta noder ● NodeIteratorUtil + NodeTreeUtil → iterera och filtrera noder ● NodeComparatorUtil + NodeFilterUtil → sortera och filtrera noder/collections 29
  • 30. Egna mallar i moduler – 2. API:Utilities API-tips: Skript/Velocity-utilities ● ScriptUtil → underlätta ● InstanceTypeUtil → kontrollera typ ● InstanceCreatorUtil → skapa objekt 30
  • 31. Egna mallar i moduler – 2. API:Utilities API-tips: Renderings-utilities ● LinkRenderer → rendera länkar ● ImageRenderer + ImageLinkRenderer → rendera bilder ● OutputUtil → rendera annan modul ● BuddyIconRenderer → rendera profilbilds-miniatyren för en social identitet 31