Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014
-
Upload
sitevision -
Category
Internet
-
view
226 -
download
4
description
Transcript of Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014
Egna mallar i moduler2
Magnus Lövgren
@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
”myObject””myOtherObject”
”Velocity Context”
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
8
<p> Sätter namnet till Anna $myObject.setName('Anna')</p><p>Hej $myObject.name</p>
● Allt som är kvar efter evaluering
<p> Sätter namnet till Anna
</p><p>Hej Anna</p>
Velocity-kod Output
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
#set ($name = 'Stina' )$name
#set ($name = $obj.tryGetOlle())$name
StinaOlle
Velocity-kod Output
StinaStina
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
● ! == ”not”● && == ”and”● || == ”or”
Operatorer/utvärdering
#if ($user && (!$user.active || $user.obsolete)) ...#end
● Icke-existerande/null är ”false”
Egna mallar i moduler – 1. Velocity
Iteration - #foreach in #end
13
#foreach ($user in $userList) … $user.age#end
● Implicit #set
Egna mallar i moduler – 2. API
2. SiteVision API● JCR
● Datamodell● Utilities
● Funktioner / modellhjälp
14
http://help.sitevision.se/apihttp://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
Children
Node
Node
PropertyType
STRINGBOOLEANLONGDOUBLEDATE...WEAKREFERENCE
Node
Properties
NodeType
Name Identifier
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ädsv:page (En sida)
sv:pageContentsv:referenceLayout (Mittenspalt)
sv:portlet (En textmodul)sv:layoutRepository
sv:layout ("Absolut innehåll")sv:localImageRepository ("Bilder på sidan")
sv:imagesv:localFileRepository ("Filer på sidan")
sv:filesv:pageCommentRepository ("Sidkommentarer")
sv:pageCommentsv:ratingRepository ("Betyg för sidan")
sv:ratingsv:metadataDefinitionRepository
sv:metadata...Definitionsv: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
24
$jcrSession
Egna mallar i moduler
25
$sitevisionUtils
Egna mallar i moduler
26
Properties
● Namn● PropertyType
$portlet har properties
● Noder har properties
Egna mallar i moduler
● Via Node
27
#set ($use = $portlet.getProperty( 'useActiveFont' ).getBoolean())
● Via PropertyUtil
#set ($propertyUtil = $sitevisionUtils.propertyUtil)...#set ($use = $propertyUtil.getBoolean($portlet, 'useActiveFont' ))
Ex: Hämta Boolean-property
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