SlideShare a Scribd company logo
1 of 25
Download to read offline
MONTREAL JUNE 30, JULY 1ST AND 2ND 2012




         D2W Branding
                  Using jQuery ThemeRoller
                                developed by   Farrukh Ijaz
          Senior Software Engineer at Fuego Digital Media
jQuery ThemeRoller
•   D2W - DirectToWeb
•   D2W Rule Engine & D2W Templates and “Looks”
•   “Looks” available in WebObjects and Wonder
•   Why another “Look”?
•   jQuery ThemeRoller Component Model
•   jQuery ThemeRoller D2W Templates
•   Features inherited from jQuery UI
•   Create your own jQuery ThemeRoller component
•   Setting up the application to use themes
•   Showcase Live Sites
•   Q&A
D2W - DirectToWeb



• A Java based Web Application Development
  Framework

• Transforms Data Model into fully functional UI
  based rules

• Consists of Rules Engine, set of D2W
  Templates and D2W Components

• Requires minimum or no code
D2W Rule Engine


• One of the main components of Direct To Web
• Using Rules (*.d2wmodel) and the Rule
  Engine, the user interface is dynamically
  constructed

• The Rule consists a condition (LHS) and
  assignment (RHS)

• Rules that are prioritized by setting priority
  and qualification
D2W Templates

• Templates that are used to generate user
  interface

• Page level templates such as D2WListPage,
  D2WEditPage, D2WSelectPage, ...

• Property level templates such as
  D2WEditString, D2WEditDate,
  D2WEditToManyRelationship, ...

• Page level templates are usually assigned for
  specific task such as
  D2WEditPage for task = ‘edit’,
  D2WSelectPage for task = ‘select’
D2W Templates and “Looks”

•   Templates are assigned by setting specific properties in the Rules
    file

    •   templateNameForListPage, templateNameForEditPage,
        templateNameForSelectPage, ...

•   Usually they are packaged in a separate framework for reusability
    with rules with higher priority defined to assign these templates and
    optionally bound with a property called “look” e.g.

    •   100: *true* => look = ‘fuego’

    •   100 : look = 'fuego' => templateNameForListPage =
        "FDNEUListPage"

•   WO developers are already using ERModernLook, ERDivaLook,
    ERNeutralLook, AjaxLook, R2D2W

•   Among these looks, ERModernLook is the latest one and is
    becoming the standard WOLips project template
Why a different set of templates?

• Legacy apps developed over the period of 7
  years simply can’t be switched to modern
  look

• All the apps are based on custom templates
  that inherit specific interfaces to work with
  Fuego’s customized MVC

• Client complaints about the ugly design of the
  old look

• Client requests for branded look to fit well in
  their portal environment
Neutral Look
Fuego’s Modification to Neutral Look
jQuery ThemeRoller Templates
•   Complete renovation of all the templates using jQuery UI
    components and themes

•   Branding UI is just a matter of generating a new theme using jQuery
    ThemeRoller app and drop it in the application’s web resources
    folder. (http://jqueryui.com/themeroller)

•   Graphics designers can easily generate them using client branding
    colours without any WO knowledge

•   Additional features such as:

    •   Additional branch buttons in the header of the component

    •   Collapsible components

    •   Draggable components (in progress)

•   It’s not just the HTML change, it’s a complete component
Select Page “Client-1 Theme”
Select Page “Client-2 Theme”
Edit Page “Client-1 Theme”
Edit Page “Client-2 Theme”
Grouping Edit Page “Client-1 Theme”
Grouping Edit Page “Client-2 Theme”
jQuery ThemeRoller Component Model

                                 Complete hierarchy of foundation components



                                       JQueryComponent




                      JQueryCustomComponent        JQueryStatelessComponent




                  JQueryCustomStatelessComponent         JQueryView                                       JQueryLayout




JQueryIcon    JQueryLinkButton     JQueryHeader       JQueryContainer     JQueryFooter   JQueryMessage   JQueryGridLayout   JQueryBorderLayout




             JQuerySubmitButton
jQuery ThemeRoller Component Model



• The jQuery ThemeRoller component model
  consists of reusable components
• They all can be used in composition to build
  other custom components
• All D2W templates reuse these components so
  change in the core components is reflected
  across all the templates
JQueryIcon, JQueryLinkButton / JQuerySubmitButton


 <wo:JQueryIcon icon="pencil" />




 <wo:JQueryLinkButton icon = "disk" text = "Save" />
 <wo:JQueryLinkButton icon = "cancel" text = "Cancel" />




 <span class = "jq-buttonset">
    <wo:JQuerySubmitButton icon = "disk" text = "Save" />
    <wo:JQueryLinkButton icon = "cancel" text = "Cancel" />
 </span>
JQueryMessage


<wo:JQueryMessage message = "Hello World!" />




<wo:JQueryMessage type="error" icon="alert" message =
"Houston! We've a problem." />




<wo:JQueryMessage type="highlight" icon="info" message =
"The file has been uploaded successfully!" />
JQueryView and JQueryGridLayout


<wo:JQueryView cssClass = "ui-state-default" padding = "5px" corner = "all"
maxWidth = "500px">
   <wo:JQueryGridLayout rows = "3" cols = "3" prefix = "grid" debug =
   "true" />
</wo:JQueryView>




<wo:JQueryView cssClass = "ui-state-default" padding = "5px" corner = "all"
maxWidth = "500px">
   <wo:JQueryGridLayout rows = "1" cols = "1,*,1" prefix = "grid">
       <wo:ERXWOTemplate templateName = "grid_1_1">
          <wo:JQueryLinkButton text = "Button 1" />
       </wo:ERXWOTemplate>
       <wo:ERXWOTemplate templateName = "grid_1_3">
          <wo:JQueryLinkButton icon = "close" />
       </wo:ERXWOTemplate>
   </wo:JQueryGridLayout>
</wo:JQueryView>
JQueryCustomComponent


<wo:JQueryCustomComponent debug = "$true" />




<wo:JQueryCustomComponent maxWidth = "500px" contentPadding = "10px"
      shouldShowTopBar = "$false" shouldShowFooter = "$false" heading = "My First Component"
      shouldShowMinMaxButton = "$true">
      <wo:ERXWOTemplate templateName = "rightHeaderButtons">
            <wo:JQueryLinkButton icon = "close" />
      </wo:ERXWOTemplate>
      <wo:ERXWOTemplate templateName = "content"> Test content </wo:ERXWOTemplate>
      <wo:ERXWOTemplate templateName = "bottomBar">
            <wo:JQuerySubmitButton text = "Save" />
            <wo:JQueryLinkButton text = "Cancel" />
      </wo:ERXWOTemplate>
</wo:JQueryCustomComponent>
Setting up the application to use themes




Include in <head> of PageWrapper:

<wo:JQueryResources themeroller = "$true" theme =
"themename" uniform = "$true" />


Assign class to <body> same as theme name:

<body class = "themename">
Live Application
         +
Klok+D2W Integration
Q&A
      MONTREAL JUNE 30, JULY 1ST AND 2ND 2012




Q&A

More Related Content

What's hot

RESTful OSGi Web Applications Tutorial - Khawaja S Shams & Jeff Norris
RESTful OSGi Web Applications Tutorial - Khawaja S Shams & Jeff NorrisRESTful OSGi Web Applications Tutorial - Khawaja S Shams & Jeff Norris
RESTful OSGi Web Applications Tutorial - Khawaja S Shams & Jeff Norris
mfrancis
 
D2W Stateful Controllers
D2W Stateful ControllersD2W Stateful Controllers
D2W Stateful Controllers
WO Community
 
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter PilgrimJavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
 
J query presentation
J query presentationJ query presentation
J query presentation
akanksha17
 

What's hot (20)

Local storage in Web apps
Local storage in Web appsLocal storage in Web apps
Local storage in Web apps
 
Mule 2.2.1-users-guide
Mule 2.2.1-users-guideMule 2.2.1-users-guide
Mule 2.2.1-users-guide
 
React js
React jsReact js
React js
 
RESTful OSGi Web Applications Tutorial - Khawaja S Shams & Jeff Norris
RESTful OSGi Web Applications Tutorial - Khawaja S Shams & Jeff NorrisRESTful OSGi Web Applications Tutorial - Khawaja S Shams & Jeff Norris
RESTful OSGi Web Applications Tutorial - Khawaja S Shams & Jeff Norris
 
Handlebars & Require JS
Handlebars  & Require JSHandlebars  & Require JS
Handlebars & Require JS
 
D2W Stateful Controllers
D2W Stateful ControllersD2W Stateful Controllers
D2W Stateful Controllers
 
Apache Wicket Web Framework
Apache Wicket Web FrameworkApache Wicket Web Framework
Apache Wicket Web Framework
 
MVC 1.0 als alternative Webtechnologie
MVC 1.0 als alternative WebtechnologieMVC 1.0 als alternative Webtechnologie
MVC 1.0 als alternative Webtechnologie
 
Go Fullstack: JSF for Public Sites (CONFESS 2013)
Go Fullstack: JSF for Public Sites (CONFESS 2013)Go Fullstack: JSF for Public Sites (CONFESS 2013)
Go Fullstack: JSF for Public Sites (CONFESS 2013)
 
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter PilgrimJavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
JavaCro'14 - Scala and Java EE 7 Development Experiences – Peter Pilgrim
 
Angular Data Binding
Angular Data BindingAngular Data Binding
Angular Data Binding
 
HTML5 and CSS3 refresher
HTML5 and CSS3 refresherHTML5 and CSS3 refresher
HTML5 and CSS3 refresher
 
Web Components v1
Web Components v1Web Components v1
Web Components v1
 
Building and Managing Projects with Maven
Building and Managing Projects with MavenBuilding and Managing Projects with Maven
Building and Managing Projects with Maven
 
Go Fullstack: JSF for Public Sites (CONFESS 2012)
Go Fullstack: JSF for Public Sites (CONFESS 2012)Go Fullstack: JSF for Public Sites (CONFESS 2012)
Go Fullstack: JSF for Public Sites (CONFESS 2012)
 
Node.js Development with Apache NetBeans
Node.js Development with Apache NetBeansNode.js Development with Apache NetBeans
Node.js Development with Apache NetBeans
 
Angular beans
Angular beansAngular beans
Angular beans
 
MWLUG 2015 - AD114 Take Your XPages Development to the Next Level
MWLUG 2015 - AD114 Take Your XPages Development to the Next LevelMWLUG 2015 - AD114 Take Your XPages Development to the Next Level
MWLUG 2015 - AD114 Take Your XPages Development to the Next Level
 
Getting Started with jQuery
Getting Started with jQueryGetting Started with jQuery
Getting Started with jQuery
 
J query presentation
J query presentationJ query presentation
J query presentation
 

Similar to D2W Branding Using jQuery ThemeRoller

Knockout implementing mvvm in java script with knockout
Knockout implementing mvvm in java script with knockoutKnockout implementing mvvm in java script with knockout
Knockout implementing mvvm in java script with knockout
Andoni Arroyo
 
jQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPagesjQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPages
Mark Roden
 
J query presentation
J query presentationJ query presentation
J query presentation
sawarkar17
 
Rp 6 session 2 naresh bhatia
Rp 6  session 2 naresh bhatiaRp 6  session 2 naresh bhatia
Rp 6 session 2 naresh bhatia
sapientindia
 

Similar to D2W Branding Using jQuery ThemeRoller (20)

Lotusphere 2012 Speedgeeking - jQuery & Domino, a RAD Combination
Lotusphere 2012 Speedgeeking - jQuery & Domino, a RAD CombinationLotusphere 2012 Speedgeeking - jQuery & Domino, a RAD Combination
Lotusphere 2012 Speedgeeking - jQuery & Domino, a RAD Combination
 
WOdka
WOdkaWOdka
WOdka
 
DirectToWeb 2.0
DirectToWeb 2.0DirectToWeb 2.0
DirectToWeb 2.0
 
From Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) AgainFrom Backbone to Ember and Back(bone) Again
From Backbone to Ember and Back(bone) Again
 
Web components - An Introduction
Web components - An IntroductionWeb components - An Introduction
Web components - An Introduction
 
Knockout implementing mvvm in java script with knockout
Knockout implementing mvvm in java script with knockoutKnockout implementing mvvm in java script with knockout
Knockout implementing mvvm in java script with knockout
 
JavaScript for ASP.NET programmers (webcast) upload
JavaScript for ASP.NET programmers (webcast) uploadJavaScript for ASP.NET programmers (webcast) upload
JavaScript for ASP.NET programmers (webcast) upload
 
ME vs WEB - AngularJS Fundamentals
ME vs WEB - AngularJS FundamentalsME vs WEB - AngularJS Fundamentals
ME vs WEB - AngularJS Fundamentals
 
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
 
Jquery Mobile
Jquery MobileJquery Mobile
Jquery Mobile
 
jQuery Mobile
jQuery MobilejQuery Mobile
jQuery Mobile
 
jQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPagesjQuery - the world's most popular java script library comes to XPages
jQuery - the world's most popular java script library comes to XPages
 
J query presentation
J query presentationJ query presentation
J query presentation
 
J query module1
J query module1J query module1
J query module1
 
MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!
 
Rp 6 session 2 naresh bhatia
Rp 6  session 2 naresh bhatiaRp 6  session 2 naresh bhatia
Rp 6 session 2 naresh bhatia
 
Jquery
Jquery Jquery
Jquery
 
JQuery mobile
JQuery mobileJQuery mobile
JQuery mobile
 
Introduction to jquery mobile with Phonegap
Introduction to jquery mobile with PhonegapIntroduction to jquery mobile with Phonegap
Introduction to jquery mobile with Phonegap
 
Wicket Intro
Wicket IntroWicket Intro
Wicket Intro
 

More from WO Community

In memory OLAP engine
In memory OLAP engineIn memory OLAP engine
In memory OLAP engine
WO Community
 
Using Nagios to monitor your WO systems
Using Nagios to monitor your WO systemsUsing Nagios to monitor your WO systems
Using Nagios to monitor your WO systems
WO Community
 
Build and deployment
Build and deploymentBuild and deployment
Build and deployment
WO Community
 
Chaining the Beast - Testing Wonder Applications in the Real World
Chaining the Beast - Testing Wonder Applications in the Real WorldChaining the Beast - Testing Wonder Applications in the Real World
Chaining the Beast - Testing Wonder Applications in the Real World
WO Community
 
Deploying WO on Windows
Deploying WO on WindowsDeploying WO on Windows
Deploying WO on Windows
WO Community
 
Unit Testing with WOUnit
Unit Testing with WOUnitUnit Testing with WOUnit
Unit Testing with WOUnit
WO Community
 
Advanced Apache Cayenne
Advanced Apache CayenneAdvanced Apache Cayenne
Advanced Apache Cayenne
WO Community
 
Migrating existing Projects to Wonder
Migrating existing Projects to WonderMigrating existing Projects to Wonder
Migrating existing Projects to Wonder
WO Community
 
iOS for ERREST - alternative version
iOS for ERREST - alternative versioniOS for ERREST - alternative version
iOS for ERREST - alternative version
WO Community
 
"Framework Principal" pattern
"Framework Principal" pattern"Framework Principal" pattern
"Framework Principal" pattern
WO Community
 
Filtering data with D2W
Filtering data with D2W Filtering data with D2W
Filtering data with D2W
WO Community
 
Localizing your apps for multibyte languages
Localizing your apps for multibyte languagesLocalizing your apps for multibyte languages
Localizing your apps for multibyte languages
WO Community
 

More from WO Community (20)

KAAccessControl
KAAccessControlKAAccessControl
KAAccessControl
 
In memory OLAP engine
In memory OLAP engineIn memory OLAP engine
In memory OLAP engine
 
Using Nagios to monitor your WO systems
Using Nagios to monitor your WO systemsUsing Nagios to monitor your WO systems
Using Nagios to monitor your WO systems
 
Build and deployment
Build and deploymentBuild and deployment
Build and deployment
 
High availability
High availabilityHigh availability
High availability
 
Reenabling SOAP using ERJaxWS
Reenabling SOAP using ERJaxWSReenabling SOAP using ERJaxWS
Reenabling SOAP using ERJaxWS
 
Chaining the Beast - Testing Wonder Applications in the Real World
Chaining the Beast - Testing Wonder Applications in the Real WorldChaining the Beast - Testing Wonder Applications in the Real World
Chaining the Beast - Testing Wonder Applications in the Real World
 
Deploying WO on Windows
Deploying WO on WindowsDeploying WO on Windows
Deploying WO on Windows
 
Unit Testing with WOUnit
Unit Testing with WOUnitUnit Testing with WOUnit
Unit Testing with WOUnit
 
Life outside WO
Life outside WOLife outside WO
Life outside WO
 
Advanced Apache Cayenne
Advanced Apache CayenneAdvanced Apache Cayenne
Advanced Apache Cayenne
 
Migrating existing Projects to Wonder
Migrating existing Projects to WonderMigrating existing Projects to Wonder
Migrating existing Projects to Wonder
 
iOS for ERREST - alternative version
iOS for ERREST - alternative versioniOS for ERREST - alternative version
iOS for ERREST - alternative version
 
iOS for ERREST
iOS for ERRESTiOS for ERREST
iOS for ERREST
 
"Framework Principal" pattern
"Framework Principal" pattern"Framework Principal" pattern
"Framework Principal" pattern
 
Filtering data with D2W
Filtering data with D2W Filtering data with D2W
Filtering data with D2W
 
WOver
WOverWOver
WOver
 
Localizing your apps for multibyte languages
Localizing your apps for multibyte languagesLocalizing your apps for multibyte languages
Localizing your apps for multibyte languages
 
ERGroupware
ERGroupwareERGroupware
ERGroupware
 
CMS / BLOG and SnoWOman
CMS / BLOG and SnoWOmanCMS / BLOG and SnoWOman
CMS / BLOG and SnoWOman
 

Recently uploaded

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 

Recently uploaded (20)

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 

D2W Branding Using jQuery ThemeRoller

  • 1. MONTREAL JUNE 30, JULY 1ST AND 2ND 2012 D2W Branding Using jQuery ThemeRoller developed by Farrukh Ijaz Senior Software Engineer at Fuego Digital Media
  • 2. jQuery ThemeRoller • D2W - DirectToWeb • D2W Rule Engine & D2W Templates and “Looks” • “Looks” available in WebObjects and Wonder • Why another “Look”? • jQuery ThemeRoller Component Model • jQuery ThemeRoller D2W Templates • Features inherited from jQuery UI • Create your own jQuery ThemeRoller component • Setting up the application to use themes • Showcase Live Sites • Q&A
  • 3. D2W - DirectToWeb • A Java based Web Application Development Framework • Transforms Data Model into fully functional UI based rules • Consists of Rules Engine, set of D2W Templates and D2W Components • Requires minimum or no code
  • 4. D2W Rule Engine • One of the main components of Direct To Web • Using Rules (*.d2wmodel) and the Rule Engine, the user interface is dynamically constructed • The Rule consists a condition (LHS) and assignment (RHS) • Rules that are prioritized by setting priority and qualification
  • 5. D2W Templates • Templates that are used to generate user interface • Page level templates such as D2WListPage, D2WEditPage, D2WSelectPage, ... • Property level templates such as D2WEditString, D2WEditDate, D2WEditToManyRelationship, ... • Page level templates are usually assigned for specific task such as D2WEditPage for task = ‘edit’, D2WSelectPage for task = ‘select’
  • 6. D2W Templates and “Looks” • Templates are assigned by setting specific properties in the Rules file • templateNameForListPage, templateNameForEditPage, templateNameForSelectPage, ... • Usually they are packaged in a separate framework for reusability with rules with higher priority defined to assign these templates and optionally bound with a property called “look” e.g. • 100: *true* => look = ‘fuego’ • 100 : look = 'fuego' => templateNameForListPage = "FDNEUListPage" • WO developers are already using ERModernLook, ERDivaLook, ERNeutralLook, AjaxLook, R2D2W • Among these looks, ERModernLook is the latest one and is becoming the standard WOLips project template
  • 7. Why a different set of templates? • Legacy apps developed over the period of 7 years simply can’t be switched to modern look • All the apps are based on custom templates that inherit specific interfaces to work with Fuego’s customized MVC • Client complaints about the ugly design of the old look • Client requests for branded look to fit well in their portal environment
  • 10. jQuery ThemeRoller Templates • Complete renovation of all the templates using jQuery UI components and themes • Branding UI is just a matter of generating a new theme using jQuery ThemeRoller app and drop it in the application’s web resources folder. (http://jqueryui.com/themeroller) • Graphics designers can easily generate them using client branding colours without any WO knowledge • Additional features such as: • Additional branch buttons in the header of the component • Collapsible components • Draggable components (in progress) • It’s not just the HTML change, it’s a complete component
  • 15. Grouping Edit Page “Client-1 Theme”
  • 16. Grouping Edit Page “Client-2 Theme”
  • 17. jQuery ThemeRoller Component Model Complete hierarchy of foundation components JQueryComponent JQueryCustomComponent JQueryStatelessComponent JQueryCustomStatelessComponent JQueryView JQueryLayout JQueryIcon JQueryLinkButton JQueryHeader JQueryContainer JQueryFooter JQueryMessage JQueryGridLayout JQueryBorderLayout JQuerySubmitButton
  • 18. jQuery ThemeRoller Component Model • The jQuery ThemeRoller component model consists of reusable components • They all can be used in composition to build other custom components • All D2W templates reuse these components so change in the core components is reflected across all the templates
  • 19. JQueryIcon, JQueryLinkButton / JQuerySubmitButton <wo:JQueryIcon icon="pencil" /> <wo:JQueryLinkButton icon = "disk" text = "Save" /> <wo:JQueryLinkButton icon = "cancel" text = "Cancel" /> <span class = "jq-buttonset"> <wo:JQuerySubmitButton icon = "disk" text = "Save" /> <wo:JQueryLinkButton icon = "cancel" text = "Cancel" /> </span>
  • 20. JQueryMessage <wo:JQueryMessage message = "Hello World!" /> <wo:JQueryMessage type="error" icon="alert" message = "Houston! We've a problem." /> <wo:JQueryMessage type="highlight" icon="info" message = "The file has been uploaded successfully!" />
  • 21. JQueryView and JQueryGridLayout <wo:JQueryView cssClass = "ui-state-default" padding = "5px" corner = "all" maxWidth = "500px"> <wo:JQueryGridLayout rows = "3" cols = "3" prefix = "grid" debug = "true" /> </wo:JQueryView> <wo:JQueryView cssClass = "ui-state-default" padding = "5px" corner = "all" maxWidth = "500px"> <wo:JQueryGridLayout rows = "1" cols = "1,*,1" prefix = "grid"> <wo:ERXWOTemplate templateName = "grid_1_1"> <wo:JQueryLinkButton text = "Button 1" /> </wo:ERXWOTemplate> <wo:ERXWOTemplate templateName = "grid_1_3"> <wo:JQueryLinkButton icon = "close" /> </wo:ERXWOTemplate> </wo:JQueryGridLayout> </wo:JQueryView>
  • 22. JQueryCustomComponent <wo:JQueryCustomComponent debug = "$true" /> <wo:JQueryCustomComponent maxWidth = "500px" contentPadding = "10px" shouldShowTopBar = "$false" shouldShowFooter = "$false" heading = "My First Component" shouldShowMinMaxButton = "$true"> <wo:ERXWOTemplate templateName = "rightHeaderButtons"> <wo:JQueryLinkButton icon = "close" /> </wo:ERXWOTemplate> <wo:ERXWOTemplate templateName = "content"> Test content </wo:ERXWOTemplate> <wo:ERXWOTemplate templateName = "bottomBar"> <wo:JQuerySubmitButton text = "Save" /> <wo:JQueryLinkButton text = "Cancel" /> </wo:ERXWOTemplate> </wo:JQueryCustomComponent>
  • 23. Setting up the application to use themes Include in <head> of PageWrapper: <wo:JQueryResources themeroller = "$true" theme = "themename" uniform = "$true" /> Assign class to <body> same as theme name: <body class = "themename">
  • 24. Live Application + Klok+D2W Integration
  • 25. Q&A MONTREAL JUNE 30, JULY 1ST AND 2ND 2012 Q&A