Download presentation
Presentation is loading. Please wait.
Published byOsborne Mitchell Modified over 9 years ago
1
uPortal Presentation Layer For FLUID Summit September 27, 2007 Susan Bramhall, Yale University http://wiki.fluidproject.org/display/fluid/uPortal+Presentation+Layer
2
Summer 2007 JA_SIG Conference DLM the uPortal Pushmi-pullyu: http://www.ja- sig.org/wiki/download/attachments/606 3795/DLM-TheuPortalPushmi- Pullyu_Bramhall-Helwig-JA- SIG_20070626.ppt?version=1 Good conceptual overview of DLM
3
What is a layout? tab column channels
4
A fragment is a piece of a tree tab column channels tab column channels A predefined fragment including 2 tabs, 3 columns, several channels
5
How is the “tree of content” created? Some content is pushed to the user Some is subscribed to by the user Some is allowed to go anywhere on the tree Some must remain is a certain place
6
That is the layout manager’s job
7
uPortal 2.0 December 2001 Justin Tilton http://www.ja- sig.org/wiki/download/attachments/13455/looknf eel.pdfhttp://www.ja- sig.org/wiki/download/attachments/13455/looknf eel.pdf (Works in IE) This is a great presentation of base uPortal presentation / layout management using Simple Layout Manager. With thanks to uPortal 2.0 architect Peter Kharchenko:
22
SLM issues… Layouts were based on template selected based on user attributes. Whenever the user modified the layout the ENTIRE layout tree was saved User never saw changes to template after that
23
Summer 2007 JA_SIG Conference Mark Boyd Summer 2007 DLM seminar http://www.ja- sig.org/wiki/download/attachments/6063795/DlmSummer20 07.ppt?version=1 No notes but excellent presentation of 2.6 Distributed Layout Manager as released in 2.6 plus features in Luminis IV not yet in uPortal
24
What is DLM? Fragment User Owned
25
What is DLM? Fragment Owned Tab Fragment Owned Channel User Owned Channel
26
DLM History 2001 2002 uPortal adopted by Campus Pipeline, DLM work starts DLM 1.0 pushed fragments debut in Luminis 2003 2004 2005 2006 ALM work begins in earnest SCT asked to contribute DLM DLM 1.0 debuts in uPortal 2.5 DLM 2.0 Processing Pipeline 2007 DLM 2.0 in Luminis
27
DLM History DLM 1.0 (uPortal 2.5) –Pushed fragments –Variable Restrictions –User Modifications to fragment –XML file based configuration DLM 2.0 –Graceful Fragment Degratation –Processor pipeline (uPortal 2.6) –Subscribed fragments –Fragment Manager channel/DB based configuration
28
uPortal Layouts: pre-DLM UP_LAYOUT_STRUCT UP_LAYOUT_PARAM LayoutStore Loads Structure XSLT LayoutManager manages Theme XSLT
29
uPortal Layouts: DLM Style UP_LAYOUT_STRUCT UP_LAYOUT_PARAM DLM LayoutStore Loads DLM Structure XSLT DLM LayoutManager manages DLM Theme XSLT ILF PLF Fragment Cache Merge ILF = Incorporated Layout Fragment (user’s viewed layout) PLF = PersonalLayoutFragment (user’s persisted layout)
30
uPortal Layouts: Fragment Owners UP_LAYOUT_STRUCT UP_LAYOUT_PARAM DLM LayoutStore Loads DLM Structure XSLT DLM LayoutManager manages DLM Theme XSLT ILF PLF Fragment Cache ILF = Incorporated Layout Fragment (user’s viewed layout) PLF = PersonalLayoutFragment (user’s persisted layout) same
31
Configuring DLM Fragments Dlm.xml Fragment owner Audience Precedence Properties
32
Configuring Fragments /properties/dlm.xml /WEB-INF/classes/properties/dlm.xml –Properties. –Fragment account declarations. –Audiences that receive those fragments automatically.
33
DLM.XML Properties –Identifies account whose layout should be copied for any newly created fragment accounts.
34
DLM.XML Properties –Deprecated. –Identifies implementation of interface org.jasig.portal.layout.dlm.LayoutDecorator. public void decorate (Document layout, IPerson person, UserProfile profile) –Allowed customizations to post-merging layout.
35
DLM.XML Properties –Determines refresh period of cached fragment layouts for layout change propagation to other servers. –Value in minutes.
36
DLM.XML Fragments –name = name of fragment, shows when owner is logged in. –ownerID = username for account whose layout is the fragment’s layout. –precedence = determine’s ordering and bumping rights. If same as another fragment then index of declaration in dlm.xml is used. –Content is zero to many tags.
37
DLM.XML Audiences –Audience identifies who should get the fragment layout. –Factory must implement org.jasig.portal.layout.dlm.EvaluatorFactory. public Evaluator getEvaluator( Node audience ); –Audience parameter is DOM representation of audience tag’s XML content. –Content must be well-formed XML understood by declared factory.
38
DLM.XML Audiences Determines
39
Demo –All users but guest should see Entertainment fragment. –Entertainment fragment owned by ent-lo account. –Changes to layout should appear for other users.
40
DLM.XML Audience Factories –Factory implements org.jasig.portal.layout.dlm.EvaluatorFactory. public Evaluator getEvaluator( Node audience ); –Evaluator interface public boolean isApplicable( IPerson person ); –If any audience evaluator answers true then the fragment is granted. –Four factories included in org.jasig.portal.layout.dlm.provider package.
41
DLM.XML Audience Factories –AllUsersEvaluatorFactory No content. Always returns true. –GuestUserEvaluatorFactory No content. Returns true if IPerson.isGuest() returns true.
42
DLM.XML Audience Factories –PersonEvaluatorFactory Evaluates IPerson.getAttribute(name) values. Audience can have one to many paren or attribute elements and “ORs” their responses together. Paren element has single attribute “mode” with allowed values of “AND”, “OR”, and “NOT” and nested element outcomes combine accordingly with NOT acting as if it contained a nested, envelopting “OR” paren. Attribute element has three attributes: –name: used as the key for IPerson.getAttribute(key). –mode: can be “contains”, “startsWith”, “exists”, “equals”, and “endsWith”. –value: is the value used for comparison
43
DLM.XML Audience Factories –PersonEvaluatorFactory quiz Will grant the fragment to anyone with green or hazel or brown eyes.
44
DLM.XML Audience Factories –PersonEvaluatorFactory quiz Will grant the fragment to anyone without both green eyes AND blonde hair. If they have one or the other or both they don’t get it. Expression: NOT( eyes=green OR hair=blonde) Expression: (eyes NOT green) AND (hair NOT blonde)
45
DLM.XML Audience Factories –PersonEvaluatorFactory quiz Will grant the fragment to anyone with eyes NOT(brown) OR brown so everyone gets it.
46
DLM.XML Audience Factories –GroupMembershipEvaluatorFactory Inherits same logical expressions as in PersonEvaluatorFactory “attribute” element only supports attributes: –mode: “memberOf” and “deepMemberOf” –name: name of the group being checked for membership
47
DLM.XML Audience Factories –GroupMembershipEvaluatorFactory quiz –true for Sam, false for Jill. –true for both Sam and Jill. Everyone Students contains Sam Jill
48
DLM.XML Audience Factories –Extra Credit quiz –Multiple audience tags OR’ed together. –Eyes equal brown OR member of Students.
49
Custom Evaluator Factories If you need it, build it. –Factory implements org.jasig.portal.layout.dlm.EvaluatorFactory. public Evaluator getEvaluator( Node audience ); –Evaluator interface public boolean isApplicable( IPerson person );
50
DLM.XML Fragment Precedence Location, Location, Location – screen real-estate is not created equal. –DLM’s merging algorithm pushes tabs from granted fragments into user’s layout view. –Tabs to left bump tabs to the right off of the screen. –Channels at top bump channels at the bottom off of the screen. –Identical precedence reverts to index in dlm.xml.
51
DLM.XML Fragment Precedence User tab “E” and no restrictions (to be discussed shortly) Quiz: In what order would merged tabs appear? ACBDE
52
DLM 2.0 Features Graceful fragment degradation (uPortal 2.6) Processor pipeline (uPortal 2.6) Subscribe Fragments Fragment Manager channel/DB based configuration
53
Processing Pipeline Parameter Processors processParameters( ) Distributed Layout Manager ProcessLayout Parameters() Processing Pipe User Instance processParameters() method called on all processors
54
getContentHandler( ) User Instance Content Handler SAX Event Stream Processing Pipeline SAX Processors User Instance Content Handler Distributed Layout Manager getUserLayout() Processing Pipe User Instance Some Content Handler returns
55
Processing Pipeline Configured in properties/dlmContext.xml – … … –
56
Processing Pipeline in uPortal 2.6 Defined by dlmContext.xml ThemeParamInjector –Passes full name to theme RegularViewChannelRemover –Watches for removal of channel AjaxPreferencesThemeParamInjector –Sets isAjaxEnabled and isLoggedInUser
57
Examples ExampleStickyTabEnforcer Watches for a tab with name "Sticky Tab" and if found sets that tab as the currently active tab on every request ExampleBookmarksRemover Alters the SAX event stream coming from the DistributedLayoutManager by stripping out any events related to a channel with name="Bookmarks".
58
Nowadays layouts are not everything
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.