YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
Page 1: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014
Page 2: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

Egna mallar i moduler2

Page 3: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

Magnus Lövgren

[email protected]

@magloven

3

Utvecklare - Sök & API

Page 4: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

Egna mallar i moduler

Agenda● Velocity● SiteVision API

● Datamodell● Funktioner

● Tillgängligt i mallen

4

Page 5: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

Egna mallar i moduler – 1. Velocity

1. Velocity● $● #set● #if / #elseif / #else / #end● #foreach #end

● ##● #*... *#

5

http://help.sitevision.se/velocity

Page 6: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

Egna mallar i moduler – 1. Velocity

$ - referens● $<namn>● ${<namn>}

6

”myObject””myOtherObject”

”Velocity Context”

Page 7: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

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)...

Page 8: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

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

Page 9: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

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)

Page 10: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

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

Page 11: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

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

Page 12: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

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”

Page 13: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

Egna mallar i moduler – 1. Velocity

Iteration - #foreach in #end

13

#foreach ($user in $userList) … $user.age#end

● Implicit #set

Page 14: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

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

Page 15: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

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

Page 16: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

Egna mallar i moduler – 2. API:JCR

Grundläggande koncept

16

Parent

Children

Node

Node

PropertyType

STRINGBOOLEANLONGDOUBLEDATE...WEAKREFERENCE

Node

Properties

NodeType

Name Identifier

Path

Page 17: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

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

Page 18: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

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

Page 19: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

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

Page 20: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

Egna mallar i moduler – 2. API:JCR

Potentiella svårigheter● Hitta noder● Iterera ”rätt” noder● Hämta properties

● RepositoryException

20

Page 21: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

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

Page 22: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

Egna mallar i moduler – 2. API:JCR/Utilities

22

javax.jcr.*

JCR

senselogic.*

Utilities

Page 23: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

Egna mallar i moduler

3. Tillgängligt i den egna mallen

23

Page 24: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

Egna mallar i moduler

24

$jcrSession

Page 25: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

Egna mallar i moduler

25

$sitevisionUtils

Page 26: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

Egna mallar i moduler

26

Properties

● Namn● PropertyType

$portlet har properties

● Noder har properties

Page 27: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

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

Page 28: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

Egna mallar i moduler

28

Demo● Söklistningsmodulen

Page 29: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

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

Page 30: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

Egna mallar i moduler – 2. API:Utilities

API-tips: Skript/Velocity-utilities● ScriptUtil

underlätta→● InstanceTypeUtil

kontrollera typ→● InstanceCreatorUtil

skapa objekt→

30

Page 31: Egna mallar i moduler - Magnus Lövgren - SiteVisiondagarna 2014

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


Related Documents