SlideShare a Scribd company logo
1 of 60
Stupid Index Block Tricks...
they’re not just for navigation
Dave Shaykewich
University of Victoria
Agenda
• UVic Cascade environment
• Index block basics
• Tricks
• Navigation
• Reporting
• Content aggregation
• Decision tree wizard
• Content searching
• Is there something you’d like to share with the class?
The University of Victoria
• The University of Victoria is on an island on the west coast
of Canada (~70 miles from Seattle)
• ~18,000 FTEs, 11 Faculties, ~70 Departments
UVic Cascade Environment
• Cascade WCMS is offered as a service to all faculties,
departments/units, and research projects on campus (not
to individuals)
• Currently ~190 sites, 850 users in Cascade
• Started with Cascade 6.x, now on 7.07
UVic Cascade Environment
• One template for all ‘UVic’ sites
• One config set/site (referencing central template, formats)
• Many site-specific blocks/formats
• XSLT shop (history with Banner’s “Luminis” tools)
Index blocks
• Getting started with index blocks & formats
• “An index block is a special type of block asset that
returns a listing of assets from the CMS directory
structure in the form of XML data.”
• A format is a “transformation asset that can be applied
at the region-level” … “the same way that a stylesheet
can be applied.”
Index blocks
• XML representation of folders, pages, blocks, files, and
external links
• Folder, page and block attributes
• modified date, by
• published date, by
• metadata (including custom metadata)
• Page (and block) content (HTML/XML)
• “Default” region content on pages, and
• Data definition structure and content
Index block tricks
• Index blocks know a whole lot about your site...
Let’s have a look at some tricks we can use to use them to
our advantage.
Index blocks
• Rethinking index blocks
• They’re more than just navigation generators...
• Index blocks are self-updating, query-able databases of
site content (and all of its attributes)
• Formats are the means to query index blocks and output
structured HTML markup
• and/or CSS
• and/or JavaScript
• and/or server-side code (e.g., PHP)
Trick 1: Navigation
• Purpose:
• Have Cascade generate navigation that maintains
context
• i.e., highlights current page’s ancestors’ navigation
Trick 1: Navigation
• Sample:
http://www.uvic.ca/future-students/undergraduate/programs/distance/index.php
Trick 1: Navigation
• Recipe:
• Build out site structure in Cascade
• Folder hierarchy to correspond to navigational elements
• Create index block of site folders and pages
• Transform index block into navigation HTML
• Recursively step through folders to create a nested
unordered list
• Add class of ‘selected’ to each with an descendant that’s
“current”
• Add class of ‘expandable’ to each list item that contains
child folders
Trick 1: Navigation
Trick 1: Navigation
• The good:
• Navigation is automatically constructed as the site is constructed
• Context is maintained (so users know where they are in a site)
• Format code is relatively simple
• Write format once, use it on all your sites, maintain consistency
• Example scripts delivered with Cascade (example.com site)
• The bad:
• The ugly
• When folders are added/removed, pages need to be re-published
• Before index block caching, big sites were very slow to load
Trick 2: Content reporting
• Purpose:
• Provide project managers, content contributors with on-
demand reports about the content in their site
• Particularly useful during site development
• Search within code/tags
• Answer questions like:
• Are there any links to an old site in the content?
• Are there any pages ready for me to work on?
• Which pages are required for prototype usability testing?
• Are there any unpublished pages?
Trick 2: Content reporting
• Examples:
• Unpublished pages
• http://cms.uvic.ca:8080/entity/open.act?id=dd8008958e
68c4483630fb71a436440a&type=page&#highlight
• Hardcoded links to an old site
• http://cms.uvic.ca:8080/entity/open.act?id=6546095d8e6
8c4482eb9eee92ab7d09c&type=page&#highlight
• Content status (using custom metadata)
• http://cms.uvic.ca:8080/entity/open.act?id=af5e6bd08e6
8c4481ea0171187018fa1&type=page&#highlight
Trick 2: Content reporting
• Recipe:
• If applicable, create custom metadata for site for attributes
you want to search
• Our default metadata set includes the development
lifecycle metadata
• Create an index block of all site content (this may require
changing max index block size)
• With your format, query index block
• Display results
• Create links within Cascade to ‘View’, ‘Edit’, ‘Publish’
page/block (index block has “id” of assets)
`
Trick 2: Content reporting
Who?
When?
‘Bad’ links?
View |
Edit |
Publish
Trick 2: Getting started
• Reports:
• Identify questions you have (or are continually asked) about
a site’s content
• When was it last updated?
• Who last published it?
• Are there any ‘bad’ links to an old site/URL?
• Configure index block
• Write format to query index block to answer the question
• Make the output actionable with direct links to page options
(e.g., Edit, Publish, View)
Trick 2: Content reporting
• The good:
• On-demand answers to common questions
• Very fast to re-purpose and tweak
• Example scripts delivered with Cascade (check the _common
site)
• The bad:
• The ugly:
• Writing the XPath queries can be challenging (especially
when getting started)
• using XML dev tools like oXygen can really help
Aside: Blocks in Default Region
• Our previous CMS supported ‘block’ equivalents in content
areas
• We had to emulate this in Cascade
• Created data definition for our standard page
• Content Group (repeatable)
• WYSIWYG (for typed-in content)
• Block chooser (render-content-depth="unlimited“)
• (we haven’t explored ‘bricks’ yet...)
Aside to the Aside: Structuring XSLT formats for your
site
• We wanted the blocks in Default to be data definition
blocks (not just straight XTHML/text)
• Therefore, the format for the Default region needed to be
able to transform many different types of data definitions
Aside to the Aside: Structuring XSLT formats for your
site
• XSLT formats in Cascade can ‘include’ others
<xsl:include href="site://UVicCa/_internal/formats/…"/>
• This can be really helpful
• widget formats can be included into the standard page format (i.e., the format for
the Default region)
• widget blocks can be added to pages Default regions via Data Definitions
choosers
• then, if the Default region format <xsl:apply-templates>
• > and the widget block has a unique namespace
• > and there’s a <xsl:template > that matches that namespace
• > the widget XML will be transformed into the widget’s markup
Aside to the Aside: Structuring XSLT formats for your
site
1. Create structured page data-definitions
Aside to the Aside: Structuring XSLT formats for your
site
1. Create structured page data-definitions
2. Create format for the default region that includes widgetry formats
Aside to the Aside: Structuring XSLT formats for your
site
1. Create structured page data-definitions
2. Create format for the default region that includes widgetry formats
3. In format for default region, capture your page content’s DD regions and
xsl:apply-templates
Aside to the Aside: Structuring XSLT formats for your
site
1. Create structured page data-definitions
2. Create format for the default region that includes widgetry formats
3. In format for default region, capture your page content’s DD regions and
xsl:apply-templates
4. Create widget data-definitions with a ‘group’ container with unique id (e.g.,
contacts-by-hr-dept)
Aside to the Aside: Structuring XSLT formats for your
site
1. Create structured page data-definitions
2. Create format for the default region that includes widgetry formats
3. In format for default region, capture your page content’s DD regions and
xsl:apply-templates
4. Create widget data-definitions with a ‘group’ container with unique id
(e.g., contacts-by-hr-dept)
5. In widget’s XSLT format, capture widget’s matching template
• <xsl:template match=“contacts-by-hr-dept”>
Aside to the Aside: Structuring XSLT formats for your
site
• So? Isn’t this supposed about index block tricks?
• Many of the following index block-driven widgets rely this
structure:
• widgetry formats are called/applied by the ‘Default’
region’s format
• and the blocks are automatically transformed properly
Trick 3: Content aggregation – Staff profiles
• Purpose:
• Display staff profiles in a consistent, structured way
• Have Cascade automatically aggregate and sort staff
profiles
• Give non-technical content contributors ability to CrUD
staff profiles easily
Trick 3: Content aggregation
• Sample:
http://www.uvic.ca:8080/hr/contact/home/organization/in
dex.php
Trick 3: Content aggregation
• The recipe:
• Develop a data definition to capture and organize profile
data (e.g., name, dept, responsibilities, etc)
• Build out Cascade folders to hold profiles
• can be used as one way of sorting
• Populate data def profile blocks into folders
Trick 3: Content aggregation
• The recipe continued:
• Create an index block to aggregate profile info
• This index block will be the data source for all three
different pages
• Create a container data def block with a distinct id and block
chooser (to refer back to index block)
• Depending sorting criteria, write formats to sort/organize
profiles and output HTML
• switch format based on namespace of container block
(<xsl:apply-templates >)
Trick 3: Content aggregation
By department
By service
By org
by-dept.php
by-service.php
by-org.php
Trick 3: Content aggregation
• The good:
• One, structured source for profile data
• Easy to maintain, automatically sorts
• Contributors require very minimal tech skills
• Models can be tweaked and re-purposed for any structured content
• Some sample code delivered with Cascade (‘news’ in example.com)
• The bad:
• Contributors need to be trained to update content somewhere other
than on the page where they see it
• … then trained to publish pages they weren’t editing
Trick 3: Content aggregation
• The ugly
• Managing the inclusion of formats and naming of format
files (vs. namespace of switcher blocks)
• Can be very challenging to troubleshoot
• “Which transformation, in which format file, from which
site, is being applied to this block?” (consider printing out
comments in <xsl:template match=“…” >)
• Working within Cascade to develop your formats can be
tedious and inefficient
• Consider an XML tool like oXygen
Trick 3: Getting started
• Content aggregation:
• Identify common content types that you’re ‘manually’ aggregating
• Granular content in data definitions is especially queryable
(and generally easier for contributors to maintain)
• E.g., [re-]grouped lists of people, events, services, news
• Develop static fully-functional model in HTML/Javascript (so you
know what your format needs to output)
• Configure index block
• “Folder” (or “Content type” for pages)
• Write format to query for sorted/ordered assets and transform
into markup from model
Trick 4: Decision tree wizard
• The purpose
• Give end-users a wizard tool to sort through a deep list
of resources (without linking around a site)
• Have Cascade automatically aggregate content and build
wizard HTML and JS based on native Cascade structures
• Give non-technical content contributors ability to CrUD
the wizard easily(ish)
Trick 4: Decision tree wizard
• Sample:
• http://www.uvic.ca/coopandcareer/index-wizard.php
Trick 4: Decision tree wizard
• The recipe:
• Build out Cascade folder structure to match the decision tree
• Each folder is a ‘question’
• Each child folder is a ‘response’
• … and so on
• Add custom meta data fields to capture each folder’s:
• ‘response’ (to its parent folder’s question), and
• ‘question’ (to its child folders)
• To each applicable ‘answer’ folder, add:
• ‘External link’ objects for each resource
• Images for icons
Trick 4: Decision tree wizard
• The recipe continued:
• Create an index block to aggregate tree info
• Create a container data def block with a distinct id and
block chooser (to refer back to index block)
• Write format to:
• Output HTML, CSS and JS to create wizard interaction
Trick 4: Decision tree wizard
Trick 4: Getting started
• Decision tree wizard:
• Develop a model outside of Cascade
• Construct the decision tree on paper
• HTML, CSS, JS
• Build out custom metadata for the folders
• Translate decision tree into to folder hierarchy with metadata
• Create index block
• Based on the model, write format to query for sorted/ordered
assets and transform into
• HTML
• CSS
• JS
Trick 4: Decision tree wizard
• The good:
• Ability for semi-technical users to produce a very technical widget
• Logical & understandable structuring of decision tree concepts
• Re-usable/re-purposable/copyable
• The bad:
• Many moving parts
• Difficult to troubleshoot once it’s in/published from Cascade
• Contributors have to be able to translate decision tree in their heads into Cascade
structures
• The Ugly
• Did I mention… many moving parts
• Write XSL to write HTML, CSS & JavaScript
Trick 5: PHP Search & Browse
• The purpose
• Allow end-users to search structured information in your
Cascade site (e.g., keyword search for academic
programs)
• Have Cascade automatically aggregate and make
content ‘findable’
• Give non-technical content contributors ability to CrUD
content easily
Trick 5: PHP Search & Browse
• Sample:
• http://www.uvic.ca/future-
students/undergraduate/programs/index.php
Trick 5: PHP Search & Browse
• The recipe:
• Develop a data definition to capture and organize
program data (e.g., name, dept, URL, etc)
• Populate data def program blocks into folders
• Create an index block to aggregate program info
• This index block will be the data source for all three
different pages
Trick 5: PHP Search & Browse
• The recipe continued:
• Create a container data def block with a distinct id and block
chooser (to refer back to index block)
• For this DD block, write format to:
• Output PHP code that will search index block XML
• Add HTML search form to page
• Call search function on server, passing index block
XML as parameter
• Output HTML results from PHP function
• Add DD block to Cascade page
• Publish to PHP web server for endusers
Trick 5: PHP Search & Browse
Trick 5: PHP Search & Browse
• The good:
• A framework for searching organized content from Cascade
• Customized search & display
• The bad:
• Many moving parts
• Difficult to troubleshoot once it’s in/published from Cascade
• The Ugly
• Did I mention… many moving parts
• Write XSL to write PHP to write HTML, CSS & JavaScript
Trick 5: PHP Search & Browse
• U-G-L-Y
• XSLT required to publish a PHP ‘open’ tag:
[system-view:external]
<xsl:comment>#START-CODE<![CDATA[ <?php ]]>
Trick 5: Getting started
• Search and browse:
• Cascade
• Identify content type and attributes for searching
• Content in data definitions is especially parse-able
(and generally easier for contributors to manage)
• Configure index block
• Collect the XML of the index block
Trick 5: Getting started
• Search and browse:
• Front-end
• Develop static model of tool in HTML/Javascript (so
you know what your format needs to output)
Trick 5: Getting started
• Search and browse:
• Server-side processing
• Develop framework for searching XML (regardless of
whether it is called by Cascade page or not)
• Using the sample index block as your datasource,
write code to search the XML
• Output markup of results
• Use HTML model to test ‘manually’
Trick 5: Getting started
• Search and browse:
• Back to Cascade
• Write format to output
• Client-side markup for form, results display
• Server-side code to call functions to perform
search passing as a parameter, the XML from the
index block
• Nail down how to escape code in your XSLT
Conclusions
• Start to think of Cascade as a database of content
• mildly relational: blocks/pages can relate to other
blocks/pages with (repeatable) data definition
block/page choosers
• Index blocks are like ‘views’ on the content database
• Formats can
• ‘query’ index blocks
• transform the results into HTML, JavaScript, server-side
code
Conclusions
• Getting started with index block tricks
• Beg, borrow and steal:
• The most difficult widget you write will be your first
• Reuse and repurpose code to kick start future
widgets
Conclusions
• Getting started with index block tricks
• Get organized
• Consider where you want to be able to insert your widgets (i.e.,
template regions)
• How will you apply your widgetry formats to those
regions?
• Consider your Data Definitions’ and Formats’ structure and
names ahead of time
• structure (i.e., name) your DDs uniquely – use ‘groups’ as
well-named containers that can be uniquely XPath queried
• name your format files to match
• in your ‘default’ format, include widget formats
Questions? Comments? Ideas?
Contact info
• Dave Shaykewich
Client Account Manager, UVic Online
University of Victoria
dshaykew@uvic.ca
250-853-3233

More Related Content

What's hot

SEF2013 - A jQuery Primer for SharePoint
SEF2013 - A jQuery Primer for SharePointSEF2013 - A jQuery Primer for SharePoint
SEF2013 - A jQuery Primer for SharePointMarc D Anderson
 
Managing Ontologies
Managing OntologiesManaging Ontologies
Managing OntologiesIWMW
 
Building Rich Internet Applications with Ext JS
Building Rich Internet Applications  with Ext JSBuilding Rich Internet Applications  with Ext JS
Building Rich Internet Applications with Ext JSMats Bryntse
 
Howcssworks 100207024009-phpapp01
Howcssworks 100207024009-phpapp01Howcssworks 100207024009-phpapp01
Howcssworks 100207024009-phpapp01Likitha47
 
No sql or Not only SQL
No sql or Not only SQLNo sql or Not only SQL
No sql or Not only SQLAjay Jha
 
Shooting rabbits with sling
Shooting rabbits with slingShooting rabbits with sling
Shooting rabbits with slingTomasz Rękawek
 
Entities in Drupal 8 - Drupal Tech Talk - Bart Feenstra
Entities in Drupal 8 - Drupal Tech Talk - Bart FeenstraEntities in Drupal 8 - Drupal Tech Talk - Bart Feenstra
Entities in Drupal 8 - Drupal Tech Talk - Bart FeenstraTriquanta
 
Content by query web part
Content by query web partContent by query web part
Content by query web partIslamKhattab
 
SEF2013 - Create a Business Solution, Step by Step, with No Managed Code
SEF2013 - Create a Business Solution, Step by Step, with No Managed CodeSEF2013 - Create a Business Solution, Step by Step, with No Managed Code
SEF2013 - Create a Business Solution, Step by Step, with No Managed CodeMarc D Anderson
 
HTML5 Local Storage
HTML5 Local StorageHTML5 Local Storage
HTML5 Local StorageLior Zamir
 
Advanced Site Studio Class, June 18, 2012
Advanced Site Studio Class, June 18, 2012Advanced Site Studio Class, June 18, 2012
Advanced Site Studio Class, June 18, 2012Lee Klement
 
The SharePoint & jQuery Guide
The SharePoint & jQuery GuideThe SharePoint & jQuery Guide
The SharePoint & jQuery GuideMark Rackley
 
Rich internet application development using the dojo toolkit
Rich internet application development using the dojo toolkitRich internet application development using the dojo toolkit
Rich internet application development using the dojo toolkitalexklaeser
 
Local Storage for Web Applications
Local Storage for Web ApplicationsLocal Storage for Web Applications
Local Storage for Web ApplicationsMarkku Laine
 
AOS Canadian Tour SharePoint ECM
AOS Canadian Tour SharePoint ECMAOS Canadian Tour SharePoint ECM
AOS Canadian Tour SharePoint ECMSerge Tremblay
 
Building Real-World Dojo Web Applications
Building Real-World Dojo Web ApplicationsBuilding Real-World Dojo Web Applications
Building Real-World Dojo Web ApplicationsAndrew Ferrier
 
Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...
Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...
Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...Yu-Hsin Hung
 

What's hot (20)

SEF2013 - A jQuery Primer for SharePoint
SEF2013 - A jQuery Primer for SharePointSEF2013 - A jQuery Primer for SharePoint
SEF2013 - A jQuery Primer for SharePoint
 
Managing Ontologies
Managing OntologiesManaging Ontologies
Managing Ontologies
 
Building Rich Internet Applications with Ext JS
Building Rich Internet Applications  with Ext JSBuilding Rich Internet Applications  with Ext JS
Building Rich Internet Applications with Ext JS
 
Howcssworks 100207024009-phpapp01
Howcssworks 100207024009-phpapp01Howcssworks 100207024009-phpapp01
Howcssworks 100207024009-phpapp01
 
No sql or Not only SQL
No sql or Not only SQLNo sql or Not only SQL
No sql or Not only SQL
 
Shooting rabbits with sling
Shooting rabbits with slingShooting rabbits with sling
Shooting rabbits with sling
 
Drupal Skils Lab 302Labs
Drupal Skils Lab 302Labs Drupal Skils Lab 302Labs
Drupal Skils Lab 302Labs
 
Entities in Drupal 8 - Drupal Tech Talk - Bart Feenstra
Entities in Drupal 8 - Drupal Tech Talk - Bart FeenstraEntities in Drupal 8 - Drupal Tech Talk - Bart Feenstra
Entities in Drupal 8 - Drupal Tech Talk - Bart Feenstra
 
Content by query web part
Content by query web partContent by query web part
Content by query web part
 
SEF2013 - Create a Business Solution, Step by Step, with No Managed Code
SEF2013 - Create a Business Solution, Step by Step, with No Managed CodeSEF2013 - Create a Business Solution, Step by Step, with No Managed Code
SEF2013 - Create a Business Solution, Step by Step, with No Managed Code
 
Local storage
Local storageLocal storage
Local storage
 
HTML5 Local Storage
HTML5 Local StorageHTML5 Local Storage
HTML5 Local Storage
 
Advanced Site Studio Class, June 18, 2012
Advanced Site Studio Class, June 18, 2012Advanced Site Studio Class, June 18, 2012
Advanced Site Studio Class, June 18, 2012
 
Ron
RonRon
Ron
 
The SharePoint & jQuery Guide
The SharePoint & jQuery GuideThe SharePoint & jQuery Guide
The SharePoint & jQuery Guide
 
Rich internet application development using the dojo toolkit
Rich internet application development using the dojo toolkitRich internet application development using the dojo toolkit
Rich internet application development using the dojo toolkit
 
Local Storage for Web Applications
Local Storage for Web ApplicationsLocal Storage for Web Applications
Local Storage for Web Applications
 
AOS Canadian Tour SharePoint ECM
AOS Canadian Tour SharePoint ECMAOS Canadian Tour SharePoint ECM
AOS Canadian Tour SharePoint ECM
 
Building Real-World Dojo Web Applications
Building Real-World Dojo Web ApplicationsBuilding Real-World Dojo Web Applications
Building Real-World Dojo Web Applications
 
Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...
Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...
Group meeting: Polaris - Faster Page Loads Using Fine-grained Dependency Trac...
 

Viewers also liked

PRASHANT SEMINAR REPORT CONTENT TABLE NTPC ANTA
PRASHANT SEMINAR REPORT CONTENT TABLE NTPC ANTAPRASHANT SEMINAR REPORT CONTENT TABLE NTPC ANTA
PRASHANT SEMINAR REPORT CONTENT TABLE NTPC ANTAprashant shukla
 
Science grade 8 module table of contents
Science grade 8 module  table of contentsScience grade 8 module  table of contents
Science grade 8 module table of contentssherwen
 
Front page format summer project
Front page format   summer projectFront page format   summer project
Front page format summer projectNithin Varghese
 
Project report format
Project report formatProject report format
Project report formatrohtb2010
 
Project report-format by vishal
Project report-format by vishalProject report-format by vishal
Project report-format by vishalvishal18900
 
Human Capital Management Why And How
Human Capital Management   Why And HowHuman Capital Management   Why And How
Human Capital Management Why And HowDarin Phillips
 
Research Project Report on Growth of Venture Capital Finance in India and Rol...
Research Project Report on Growth of Venture Capital Finance in India and Rol...Research Project Report on Growth of Venture Capital Finance in India and Rol...
Research Project Report on Growth of Venture Capital Finance in India and Rol...Piyush Gupta
 
Project front page, index, certificate, and acknowledgement
Project front page, index, certificate, and acknowledgementProject front page, index, certificate, and acknowledgement
Project front page, index, certificate, and acknowledgementAnupam Narang
 
Title Page For Assignment, A sample
Title Page For Assignment, A sampleTitle Page For Assignment, A sample
Title Page For Assignment, A samples junaid
 
Sample project -Marketing Management
Sample project -Marketing Management Sample project -Marketing Management
Sample project -Marketing Management Mamta Narula
 

Viewers also liked (15)

PRASHANT SEMINAR REPORT CONTENT TABLE NTPC ANTA
PRASHANT SEMINAR REPORT CONTENT TABLE NTPC ANTAPRASHANT SEMINAR REPORT CONTENT TABLE NTPC ANTA
PRASHANT SEMINAR REPORT CONTENT TABLE NTPC ANTA
 
Cover page of an Assignment
Cover page of an Assignment Cover page of an Assignment
Cover page of an Assignment
 
Cover page
Cover pageCover page
Cover page
 
Assignment resume
Assignment resumeAssignment resume
Assignment resume
 
Front pages of practical file
Front pages of practical fileFront pages of practical file
Front pages of practical file
 
Science grade 8 module table of contents
Science grade 8 module  table of contentsScience grade 8 module  table of contents
Science grade 8 module table of contents
 
Front page format summer project
Front page format   summer projectFront page format   summer project
Front page format summer project
 
Project report format
Project report formatProject report format
Project report format
 
Project report-format by vishal
Project report-format by vishalProject report-format by vishal
Project report-format by vishal
 
Human Capital Management Why And How
Human Capital Management   Why And HowHuman Capital Management   Why And How
Human Capital Management Why And How
 
Research Project Report on Growth of Venture Capital Finance in India and Rol...
Research Project Report on Growth of Venture Capital Finance in India and Rol...Research Project Report on Growth of Venture Capital Finance in India and Rol...
Research Project Report on Growth of Venture Capital Finance in India and Rol...
 
Project Report Format
Project Report FormatProject Report Format
Project Report Format
 
Project front page, index, certificate, and acknowledgement
Project front page, index, certificate, and acknowledgementProject front page, index, certificate, and acknowledgement
Project front page, index, certificate, and acknowledgement
 
Title Page For Assignment, A sample
Title Page For Assignment, A sampleTitle Page For Assignment, A sample
Title Page For Assignment, A sample
 
Sample project -Marketing Management
Sample project -Marketing Management Sample project -Marketing Management
Sample project -Marketing Management
 

Similar to Stupid Index Block Tricks

Web design-workflow
Web design-workflowWeb design-workflow
Web design-workflowPeter Kaizer
 
CUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in ShareCUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in ShareAlfresco Software
 
Advanced guide to develop ajax applications using dojo
Advanced guide to develop ajax applications using dojoAdvanced guide to develop ajax applications using dojo
Advanced guide to develop ajax applications using dojoFu Cheng
 
Getting started with CSS frameworks using Zurb foundation
Getting started with CSS frameworks using Zurb foundationGetting started with CSS frameworks using Zurb foundation
Getting started with CSS frameworks using Zurb foundationMelanie Archer
 
OmniUpdate User Training Conference 2014: Our "Special Sauce" Responsive Desi...
OmniUpdate User Training Conference 2014: Our "Special Sauce" Responsive Desi...OmniUpdate User Training Conference 2014: Our "Special Sauce" Responsive Desi...
OmniUpdate User Training Conference 2014: Our "Special Sauce" Responsive Desi...C. Daniel Chase
 
Creating Landing Pages and Layouts for Drupal 8 - DrupalCon Baltimore
Creating Landing Pages and Layouts for Drupal 8 - DrupalCon BaltimoreCreating Landing Pages and Layouts for Drupal 8 - DrupalCon Baltimore
Creating Landing Pages and Layouts for Drupal 8 - DrupalCon BaltimoreSuzanne Dergacheva
 
Gutenberg (WidgiLabs Training Sessions)
Gutenberg  (WidgiLabs Training Sessions)Gutenberg  (WidgiLabs Training Sessions)
Gutenberg (WidgiLabs Training Sessions)Nuno Morgadinho
 
Knowledge.Wiki Semantics Conference 2022
Knowledge.Wiki Semantics Conference 2022Knowledge.Wiki Semantics Conference 2022
Knowledge.Wiki Semantics Conference 2022Bernhard Krabina
 
Getting Started with Drupal
Getting Started with DrupalGetting Started with Drupal
Getting Started with DrupalBrian Pichman
 
SharePoint Saturday Belgium 2014 Creating product centric sites using product...
SharePoint Saturday Belgium 2014 Creating product centric sites using product...SharePoint Saturday Belgium 2014 Creating product centric sites using product...
SharePoint Saturday Belgium 2014 Creating product centric sites using product...BIWUG
 
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...Anupam Ranku
 
Maintainable Sitecore Solutions
Maintainable Sitecore SolutionsMaintainable Sitecore Solutions
Maintainable Sitecore SolutionsThomas Eldblom
 
Winter%200405%20-%20Advanced%20Javascript
Winter%200405%20-%20Advanced%20JavascriptWinter%200405%20-%20Advanced%20Javascript
Winter%200405%20-%20Advanced%20Javascripttutorialsruby
 
Winter%200405%20-%20Advanced%20Javascript
Winter%200405%20-%20Advanced%20JavascriptWinter%200405%20-%20Advanced%20Javascript
Winter%200405%20-%20Advanced%20Javascripttutorialsruby
 
Produce and consume_linked_data_with_drupal
Produce and consume_linked_data_with_drupalProduce and consume_linked_data_with_drupal
Produce and consume_linked_data_with_drupalSTIinnsbruck
 
Tech Talk Live on Share Extensibility
Tech Talk Live on Share ExtensibilityTech Talk Live on Share Extensibility
Tech Talk Live on Share ExtensibilityAlfresco Software
 
Share point 2013 WCM for Developers
Share point 2013 WCM for DevelopersShare point 2013 WCM for Developers
Share point 2013 WCM for DevelopersSuhas R Satish
 

Similar to Stupid Index Block Tricks (20)

Where to save my data, for devs!
Where to save my data, for devs!Where to save my data, for devs!
Where to save my data, for devs!
 
Web design-workflow
Web design-workflowWeb design-workflow
Web design-workflow
 
CUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in ShareCUST-2 New Client Configuration & Extension Points in Share
CUST-2 New Client Configuration & Extension Points in Share
 
Bootstrap [part 1]
Bootstrap [part 1]Bootstrap [part 1]
Bootstrap [part 1]
 
Advanced guide to develop ajax applications using dojo
Advanced guide to develop ajax applications using dojoAdvanced guide to develop ajax applications using dojo
Advanced guide to develop ajax applications using dojo
 
Getting started with CSS frameworks using Zurb foundation
Getting started with CSS frameworks using Zurb foundationGetting started with CSS frameworks using Zurb foundation
Getting started with CSS frameworks using Zurb foundation
 
OmniUpdate User Training Conference 2014: Our "Special Sauce" Responsive Desi...
OmniUpdate User Training Conference 2014: Our "Special Sauce" Responsive Desi...OmniUpdate User Training Conference 2014: Our "Special Sauce" Responsive Desi...
OmniUpdate User Training Conference 2014: Our "Special Sauce" Responsive Desi...
 
Creating Landing Pages and Layouts for Drupal 8 - DrupalCon Baltimore
Creating Landing Pages and Layouts for Drupal 8 - DrupalCon BaltimoreCreating Landing Pages and Layouts for Drupal 8 - DrupalCon Baltimore
Creating Landing Pages and Layouts for Drupal 8 - DrupalCon Baltimore
 
Gutenberg (WidgiLabs Training Sessions)
Gutenberg  (WidgiLabs Training Sessions)Gutenberg  (WidgiLabs Training Sessions)
Gutenberg (WidgiLabs Training Sessions)
 
Knowledge.Wiki Semantics Conference 2022
Knowledge.Wiki Semantics Conference 2022Knowledge.Wiki Semantics Conference 2022
Knowledge.Wiki Semantics Conference 2022
 
Getting Started with Drupal
Getting Started with DrupalGetting Started with Drupal
Getting Started with Drupal
 
SharePoint Saturday Belgium 2014 Creating product centric sites using product...
SharePoint Saturday Belgium 2014 Creating product centric sites using product...SharePoint Saturday Belgium 2014 Creating product centric sites using product...
SharePoint Saturday Belgium 2014 Creating product centric sites using product...
 
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
Office 365 Saturday (Sydney) - SharePoint framework – build integrated user e...
 
Maintainable Sitecore Solutions
Maintainable Sitecore SolutionsMaintainable Sitecore Solutions
Maintainable Sitecore Solutions
 
Winter%200405%20-%20Advanced%20Javascript
Winter%200405%20-%20Advanced%20JavascriptWinter%200405%20-%20Advanced%20Javascript
Winter%200405%20-%20Advanced%20Javascript
 
Winter%200405%20-%20Advanced%20Javascript
Winter%200405%20-%20Advanced%20JavascriptWinter%200405%20-%20Advanced%20Javascript
Winter%200405%20-%20Advanced%20Javascript
 
Produce and consume_linked_data_with_drupal
Produce and consume_linked_data_with_drupalProduce and consume_linked_data_with_drupal
Produce and consume_linked_data_with_drupal
 
Tech Talk Live on Share Extensibility
Tech Talk Live on Share ExtensibilityTech Talk Live on Share Extensibility
Tech Talk Live on Share Extensibility
 
Agile sites311training
Agile sites311trainingAgile sites311training
Agile sites311training
 
Share point 2013 WCM for Developers
Share point 2013 WCM for DevelopersShare point 2013 WCM for Developers
Share point 2013 WCM for Developers
 

More from hannonhill

Cascade + Bootstrap = Awesome
Cascade + Bootstrap = AwesomeCascade + Bootstrap = Awesome
Cascade + Bootstrap = Awesomehannonhill
 
Web Governance Crash Course: Creating a Sustainable Digital Transformation
Web Governance Crash Course: Creating a Sustainable Digital TransformationWeb Governance Crash Course: Creating a Sustainable Digital Transformation
Web Governance Crash Course: Creating a Sustainable Digital Transformationhannonhill
 
Optimizing MySQL for Cascade Server
Optimizing MySQL for Cascade ServerOptimizing MySQL for Cascade Server
Optimizing MySQL for Cascade Serverhannonhill
 
Using Cascade technology to increase SEO/Landing Page Optimization
Using Cascade technology to increase SEO/Landing Page OptimizationUsing Cascade technology to increase SEO/Landing Page Optimization
Using Cascade technology to increase SEO/Landing Page Optimizationhannonhill
 
Information Architecture and User Experience: The Journey, The Destination, T...
Information Architecture and User Experience: The Journey, The Destination, T...Information Architecture and User Experience: The Journey, The Destination, T...
Information Architecture and User Experience: The Journey, The Destination, T...hannonhill
 
Connecting Ecommerce & Centralized Analytics to Cascade Server
Connecting Ecommerce & Centralized Analytics to Cascade ServerConnecting Ecommerce & Centralized Analytics to Cascade Server
Connecting Ecommerce & Centralized Analytics to Cascade Serverhannonhill
 
Data Modeling with Cascade Server and HighCharts JS
Data Modeling with Cascade Server and HighCharts JSData Modeling with Cascade Server and HighCharts JS
Data Modeling with Cascade Server and HighCharts JShannonhill
 
Modernizing Internal Communications with Cascade Server, WordPress and MailCh...
Modernizing Internal Communications with Cascade Server, WordPress and MailCh...Modernizing Internal Communications with Cascade Server, WordPress and MailCh...
Modernizing Internal Communications with Cascade Server, WordPress and MailCh...hannonhill
 
Fun with Cascade Server!
Fun with Cascade Server!Fun with Cascade Server!
Fun with Cascade Server!hannonhill
 
Accessibility in Practice: Integrating Web Accessibility into Cascade Training
Accessibility in Practice:  Integrating Web Accessibility into Cascade TrainingAccessibility in Practice:  Integrating Web Accessibility into Cascade Training
Accessibility in Practice: Integrating Web Accessibility into Cascade Traininghannonhill
 
Crowdsourced Maps: From Google Forms to Fusion Tables to Cascade Server
Crowdsourced Maps: From Google Forms to Fusion Tables to Cascade ServerCrowdsourced Maps: From Google Forms to Fusion Tables to Cascade Server
Crowdsourced Maps: From Google Forms to Fusion Tables to Cascade Serverhannonhill
 
Superautomatic! Data Feeds, Bricks, and Blocks, with Server-side Transformat...
	Superautomatic! Data Feeds, Bricks, and Blocks, with Server-side Transformat...	Superautomatic! Data Feeds, Bricks, and Blocks, with Server-side Transformat...
Superautomatic! Data Feeds, Bricks, and Blocks, with Server-side Transformat...hannonhill
 
Climbing Migration Mountain: 200+ Sites from the Ground Up
Climbing Migration Mountain: 200+ Sites from the Ground UpClimbing Migration Mountain: 200+ Sites from the Ground Up
Climbing Migration Mountain: 200+ Sites from the Ground Uphannonhill
 
In Pursuit of the Grand Unified Template
In Pursuit of the Grand Unified TemplateIn Pursuit of the Grand Unified Template
In Pursuit of the Grand Unified Templatehannonhill
 
Cusestarter or How We Built Our Own Crowdfunding Platform
Cusestarter or How We Built Our Own Crowdfunding PlatformCusestarter or How We Built Our Own Crowdfunding Platform
Cusestarter or How We Built Our Own Crowdfunding Platformhannonhill
 
Web Services: Encapsulation, Reusability, and Simplicity
Web Services: Encapsulation, Reusability, and SimplicityWeb Services: Encapsulation, Reusability, and Simplicity
Web Services: Encapsulation, Reusability, and Simplicityhannonhill
 
Cascade Server: Past, Present, and Future!
Cascade Server: Past, Present, and Future!Cascade Server: Past, Present, and Future!
Cascade Server: Past, Present, and Future!hannonhill
 
Web Forms, or How I Learned to Stop Worrying and Love Web Services
Web Forms, or How I Learned to Stop Worrying and Love Web ServicesWeb Forms, or How I Learned to Stop Worrying and Love Web Services
Web Forms, or How I Learned to Stop Worrying and Love Web Serviceshannonhill
 
Outputting Their Full Potential: Using Outputs for Site Redesigns and Develo...
Outputting Their Full Potential: Using Outputs for Site Redesigns andDevelo...Outputting Their Full Potential: Using Outputs for Site Redesigns andDevelo...
Outputting Their Full Potential: Using Outputs for Site Redesigns and Develo...hannonhill
 

More from hannonhill (20)

Cascade + Bootstrap = Awesome
Cascade + Bootstrap = AwesomeCascade + Bootstrap = Awesome
Cascade + Bootstrap = Awesome
 
Web Governance Crash Course: Creating a Sustainable Digital Transformation
Web Governance Crash Course: Creating a Sustainable Digital TransformationWeb Governance Crash Course: Creating a Sustainable Digital Transformation
Web Governance Crash Course: Creating a Sustainable Digital Transformation
 
Optimizing MySQL for Cascade Server
Optimizing MySQL for Cascade ServerOptimizing MySQL for Cascade Server
Optimizing MySQL for Cascade Server
 
Using Cascade technology to increase SEO/Landing Page Optimization
Using Cascade technology to increase SEO/Landing Page OptimizationUsing Cascade technology to increase SEO/Landing Page Optimization
Using Cascade technology to increase SEO/Landing Page Optimization
 
Information Architecture and User Experience: The Journey, The Destination, T...
Information Architecture and User Experience: The Journey, The Destination, T...Information Architecture and User Experience: The Journey, The Destination, T...
Information Architecture and User Experience: The Journey, The Destination, T...
 
2 Men 1 Site
2 Men 1 Site2 Men 1 Site
2 Men 1 Site
 
Connecting Ecommerce & Centralized Analytics to Cascade Server
Connecting Ecommerce & Centralized Analytics to Cascade ServerConnecting Ecommerce & Centralized Analytics to Cascade Server
Connecting Ecommerce & Centralized Analytics to Cascade Server
 
Data Modeling with Cascade Server and HighCharts JS
Data Modeling with Cascade Server and HighCharts JSData Modeling with Cascade Server and HighCharts JS
Data Modeling with Cascade Server and HighCharts JS
 
Modernizing Internal Communications with Cascade Server, WordPress and MailCh...
Modernizing Internal Communications with Cascade Server, WordPress and MailCh...Modernizing Internal Communications with Cascade Server, WordPress and MailCh...
Modernizing Internal Communications with Cascade Server, WordPress and MailCh...
 
Fun with Cascade Server!
Fun with Cascade Server!Fun with Cascade Server!
Fun with Cascade Server!
 
Accessibility in Practice: Integrating Web Accessibility into Cascade Training
Accessibility in Practice:  Integrating Web Accessibility into Cascade TrainingAccessibility in Practice:  Integrating Web Accessibility into Cascade Training
Accessibility in Practice: Integrating Web Accessibility into Cascade Training
 
Crowdsourced Maps: From Google Forms to Fusion Tables to Cascade Server
Crowdsourced Maps: From Google Forms to Fusion Tables to Cascade ServerCrowdsourced Maps: From Google Forms to Fusion Tables to Cascade Server
Crowdsourced Maps: From Google Forms to Fusion Tables to Cascade Server
 
Superautomatic! Data Feeds, Bricks, and Blocks, with Server-side Transformat...
	Superautomatic! Data Feeds, Bricks, and Blocks, with Server-side Transformat...	Superautomatic! Data Feeds, Bricks, and Blocks, with Server-side Transformat...
Superautomatic! Data Feeds, Bricks, and Blocks, with Server-side Transformat...
 
Climbing Migration Mountain: 200+ Sites from the Ground Up
Climbing Migration Mountain: 200+ Sites from the Ground UpClimbing Migration Mountain: 200+ Sites from the Ground Up
Climbing Migration Mountain: 200+ Sites from the Ground Up
 
In Pursuit of the Grand Unified Template
In Pursuit of the Grand Unified TemplateIn Pursuit of the Grand Unified Template
In Pursuit of the Grand Unified Template
 
Cusestarter or How We Built Our Own Crowdfunding Platform
Cusestarter or How We Built Our Own Crowdfunding PlatformCusestarter or How We Built Our Own Crowdfunding Platform
Cusestarter or How We Built Our Own Crowdfunding Platform
 
Web Services: Encapsulation, Reusability, and Simplicity
Web Services: Encapsulation, Reusability, and SimplicityWeb Services: Encapsulation, Reusability, and Simplicity
Web Services: Encapsulation, Reusability, and Simplicity
 
Cascade Server: Past, Present, and Future!
Cascade Server: Past, Present, and Future!Cascade Server: Past, Present, and Future!
Cascade Server: Past, Present, and Future!
 
Web Forms, or How I Learned to Stop Worrying and Love Web Services
Web Forms, or How I Learned to Stop Worrying and Love Web ServicesWeb Forms, or How I Learned to Stop Worrying and Love Web Services
Web Forms, or How I Learned to Stop Worrying and Love Web Services
 
Outputting Their Full Potential: Using Outputs for Site Redesigns and Develo...
Outputting Their Full Potential: Using Outputs for Site Redesigns andDevelo...Outputting Their Full Potential: Using Outputs for Site Redesigns andDevelo...
Outputting Their Full Potential: Using Outputs for Site Redesigns and Develo...
 

Recently uploaded

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
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 MenDelhi Call girls
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
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 MenDelhi Call girls
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 

Recently uploaded (20)

The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
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
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
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
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 

Stupid Index Block Tricks

  • 1. Stupid Index Block Tricks... they’re not just for navigation Dave Shaykewich University of Victoria
  • 2. Agenda • UVic Cascade environment • Index block basics • Tricks • Navigation • Reporting • Content aggregation • Decision tree wizard • Content searching • Is there something you’d like to share with the class?
  • 3. The University of Victoria • The University of Victoria is on an island on the west coast of Canada (~70 miles from Seattle) • ~18,000 FTEs, 11 Faculties, ~70 Departments
  • 4. UVic Cascade Environment • Cascade WCMS is offered as a service to all faculties, departments/units, and research projects on campus (not to individuals) • Currently ~190 sites, 850 users in Cascade • Started with Cascade 6.x, now on 7.07
  • 5. UVic Cascade Environment • One template for all ‘UVic’ sites • One config set/site (referencing central template, formats) • Many site-specific blocks/formats • XSLT shop (history with Banner’s “Luminis” tools)
  • 6. Index blocks • Getting started with index blocks & formats • “An index block is a special type of block asset that returns a listing of assets from the CMS directory structure in the form of XML data.” • A format is a “transformation asset that can be applied at the region-level” … “the same way that a stylesheet can be applied.”
  • 7. Index blocks • XML representation of folders, pages, blocks, files, and external links • Folder, page and block attributes • modified date, by • published date, by • metadata (including custom metadata) • Page (and block) content (HTML/XML) • “Default” region content on pages, and • Data definition structure and content
  • 8. Index block tricks • Index blocks know a whole lot about your site... Let’s have a look at some tricks we can use to use them to our advantage.
  • 9. Index blocks • Rethinking index blocks • They’re more than just navigation generators... • Index blocks are self-updating, query-able databases of site content (and all of its attributes) • Formats are the means to query index blocks and output structured HTML markup • and/or CSS • and/or JavaScript • and/or server-side code (e.g., PHP)
  • 10. Trick 1: Navigation • Purpose: • Have Cascade generate navigation that maintains context • i.e., highlights current page’s ancestors’ navigation
  • 11. Trick 1: Navigation • Sample: http://www.uvic.ca/future-students/undergraduate/programs/distance/index.php
  • 12. Trick 1: Navigation • Recipe: • Build out site structure in Cascade • Folder hierarchy to correspond to navigational elements • Create index block of site folders and pages • Transform index block into navigation HTML • Recursively step through folders to create a nested unordered list • Add class of ‘selected’ to each with an descendant that’s “current” • Add class of ‘expandable’ to each list item that contains child folders
  • 14. Trick 1: Navigation • The good: • Navigation is automatically constructed as the site is constructed • Context is maintained (so users know where they are in a site) • Format code is relatively simple • Write format once, use it on all your sites, maintain consistency • Example scripts delivered with Cascade (example.com site) • The bad: • The ugly • When folders are added/removed, pages need to be re-published • Before index block caching, big sites were very slow to load
  • 15. Trick 2: Content reporting • Purpose: • Provide project managers, content contributors with on- demand reports about the content in their site • Particularly useful during site development • Search within code/tags • Answer questions like: • Are there any links to an old site in the content? • Are there any pages ready for me to work on? • Which pages are required for prototype usability testing? • Are there any unpublished pages?
  • 16. Trick 2: Content reporting • Examples: • Unpublished pages • http://cms.uvic.ca:8080/entity/open.act?id=dd8008958e 68c4483630fb71a436440a&type=page&#highlight • Hardcoded links to an old site • http://cms.uvic.ca:8080/entity/open.act?id=6546095d8e6 8c4482eb9eee92ab7d09c&type=page&#highlight • Content status (using custom metadata) • http://cms.uvic.ca:8080/entity/open.act?id=af5e6bd08e6 8c4481ea0171187018fa1&type=page&#highlight
  • 17. Trick 2: Content reporting • Recipe: • If applicable, create custom metadata for site for attributes you want to search • Our default metadata set includes the development lifecycle metadata • Create an index block of all site content (this may require changing max index block size) • With your format, query index block • Display results • Create links within Cascade to ‘View’, ‘Edit’, ‘Publish’ page/block (index block has “id” of assets)
  • 18. ` Trick 2: Content reporting Who? When? ‘Bad’ links? View | Edit | Publish
  • 19. Trick 2: Getting started • Reports: • Identify questions you have (or are continually asked) about a site’s content • When was it last updated? • Who last published it? • Are there any ‘bad’ links to an old site/URL? • Configure index block • Write format to query index block to answer the question • Make the output actionable with direct links to page options (e.g., Edit, Publish, View)
  • 20. Trick 2: Content reporting • The good: • On-demand answers to common questions • Very fast to re-purpose and tweak • Example scripts delivered with Cascade (check the _common site) • The bad: • The ugly: • Writing the XPath queries can be challenging (especially when getting started) • using XML dev tools like oXygen can really help
  • 21. Aside: Blocks in Default Region • Our previous CMS supported ‘block’ equivalents in content areas • We had to emulate this in Cascade • Created data definition for our standard page • Content Group (repeatable) • WYSIWYG (for typed-in content) • Block chooser (render-content-depth="unlimited“) • (we haven’t explored ‘bricks’ yet...)
  • 22. Aside to the Aside: Structuring XSLT formats for your site • We wanted the blocks in Default to be data definition blocks (not just straight XTHML/text) • Therefore, the format for the Default region needed to be able to transform many different types of data definitions
  • 23. Aside to the Aside: Structuring XSLT formats for your site • XSLT formats in Cascade can ‘include’ others <xsl:include href="site://UVicCa/_internal/formats/…"/> • This can be really helpful • widget formats can be included into the standard page format (i.e., the format for the Default region) • widget blocks can be added to pages Default regions via Data Definitions choosers • then, if the Default region format <xsl:apply-templates> • > and the widget block has a unique namespace • > and there’s a <xsl:template > that matches that namespace • > the widget XML will be transformed into the widget’s markup
  • 24. Aside to the Aside: Structuring XSLT formats for your site 1. Create structured page data-definitions
  • 25. Aside to the Aside: Structuring XSLT formats for your site 1. Create structured page data-definitions 2. Create format for the default region that includes widgetry formats
  • 26. Aside to the Aside: Structuring XSLT formats for your site 1. Create structured page data-definitions 2. Create format for the default region that includes widgetry formats 3. In format for default region, capture your page content’s DD regions and xsl:apply-templates
  • 27. Aside to the Aside: Structuring XSLT formats for your site 1. Create structured page data-definitions 2. Create format for the default region that includes widgetry formats 3. In format for default region, capture your page content’s DD regions and xsl:apply-templates 4. Create widget data-definitions with a ‘group’ container with unique id (e.g., contacts-by-hr-dept)
  • 28. Aside to the Aside: Structuring XSLT formats for your site 1. Create structured page data-definitions 2. Create format for the default region that includes widgetry formats 3. In format for default region, capture your page content’s DD regions and xsl:apply-templates 4. Create widget data-definitions with a ‘group’ container with unique id (e.g., contacts-by-hr-dept) 5. In widget’s XSLT format, capture widget’s matching template • <xsl:template match=“contacts-by-hr-dept”>
  • 29. Aside to the Aside: Structuring XSLT formats for your site • So? Isn’t this supposed about index block tricks? • Many of the following index block-driven widgets rely this structure: • widgetry formats are called/applied by the ‘Default’ region’s format • and the blocks are automatically transformed properly
  • 30. Trick 3: Content aggregation – Staff profiles • Purpose: • Display staff profiles in a consistent, structured way • Have Cascade automatically aggregate and sort staff profiles • Give non-technical content contributors ability to CrUD staff profiles easily
  • 31. Trick 3: Content aggregation • Sample: http://www.uvic.ca:8080/hr/contact/home/organization/in dex.php
  • 32. Trick 3: Content aggregation • The recipe: • Develop a data definition to capture and organize profile data (e.g., name, dept, responsibilities, etc) • Build out Cascade folders to hold profiles • can be used as one way of sorting • Populate data def profile blocks into folders
  • 33. Trick 3: Content aggregation • The recipe continued: • Create an index block to aggregate profile info • This index block will be the data source for all three different pages • Create a container data def block with a distinct id and block chooser (to refer back to index block) • Depending sorting criteria, write formats to sort/organize profiles and output HTML • switch format based on namespace of container block (<xsl:apply-templates >)
  • 34. Trick 3: Content aggregation By department By service By org by-dept.php by-service.php by-org.php
  • 35. Trick 3: Content aggregation • The good: • One, structured source for profile data • Easy to maintain, automatically sorts • Contributors require very minimal tech skills • Models can be tweaked and re-purposed for any structured content • Some sample code delivered with Cascade (‘news’ in example.com) • The bad: • Contributors need to be trained to update content somewhere other than on the page where they see it • … then trained to publish pages they weren’t editing
  • 36. Trick 3: Content aggregation • The ugly • Managing the inclusion of formats and naming of format files (vs. namespace of switcher blocks) • Can be very challenging to troubleshoot • “Which transformation, in which format file, from which site, is being applied to this block?” (consider printing out comments in <xsl:template match=“…” >) • Working within Cascade to develop your formats can be tedious and inefficient • Consider an XML tool like oXygen
  • 37. Trick 3: Getting started • Content aggregation: • Identify common content types that you’re ‘manually’ aggregating • Granular content in data definitions is especially queryable (and generally easier for contributors to maintain) • E.g., [re-]grouped lists of people, events, services, news • Develop static fully-functional model in HTML/Javascript (so you know what your format needs to output) • Configure index block • “Folder” (or “Content type” for pages) • Write format to query for sorted/ordered assets and transform into markup from model
  • 38. Trick 4: Decision tree wizard • The purpose • Give end-users a wizard tool to sort through a deep list of resources (without linking around a site) • Have Cascade automatically aggregate content and build wizard HTML and JS based on native Cascade structures • Give non-technical content contributors ability to CrUD the wizard easily(ish)
  • 39. Trick 4: Decision tree wizard • Sample: • http://www.uvic.ca/coopandcareer/index-wizard.php
  • 40. Trick 4: Decision tree wizard • The recipe: • Build out Cascade folder structure to match the decision tree • Each folder is a ‘question’ • Each child folder is a ‘response’ • … and so on • Add custom meta data fields to capture each folder’s: • ‘response’ (to its parent folder’s question), and • ‘question’ (to its child folders) • To each applicable ‘answer’ folder, add: • ‘External link’ objects for each resource • Images for icons
  • 41. Trick 4: Decision tree wizard • The recipe continued: • Create an index block to aggregate tree info • Create a container data def block with a distinct id and block chooser (to refer back to index block) • Write format to: • Output HTML, CSS and JS to create wizard interaction
  • 42. Trick 4: Decision tree wizard
  • 43. Trick 4: Getting started • Decision tree wizard: • Develop a model outside of Cascade • Construct the decision tree on paper • HTML, CSS, JS • Build out custom metadata for the folders • Translate decision tree into to folder hierarchy with metadata • Create index block • Based on the model, write format to query for sorted/ordered assets and transform into • HTML • CSS • JS
  • 44. Trick 4: Decision tree wizard • The good: • Ability for semi-technical users to produce a very technical widget • Logical & understandable structuring of decision tree concepts • Re-usable/re-purposable/copyable • The bad: • Many moving parts • Difficult to troubleshoot once it’s in/published from Cascade • Contributors have to be able to translate decision tree in their heads into Cascade structures • The Ugly • Did I mention… many moving parts • Write XSL to write HTML, CSS & JavaScript
  • 45. Trick 5: PHP Search & Browse • The purpose • Allow end-users to search structured information in your Cascade site (e.g., keyword search for academic programs) • Have Cascade automatically aggregate and make content ‘findable’ • Give non-technical content contributors ability to CrUD content easily
  • 46. Trick 5: PHP Search & Browse • Sample: • http://www.uvic.ca/future- students/undergraduate/programs/index.php
  • 47. Trick 5: PHP Search & Browse • The recipe: • Develop a data definition to capture and organize program data (e.g., name, dept, URL, etc) • Populate data def program blocks into folders • Create an index block to aggregate program info • This index block will be the data source for all three different pages
  • 48. Trick 5: PHP Search & Browse • The recipe continued: • Create a container data def block with a distinct id and block chooser (to refer back to index block) • For this DD block, write format to: • Output PHP code that will search index block XML • Add HTML search form to page • Call search function on server, passing index block XML as parameter • Output HTML results from PHP function • Add DD block to Cascade page • Publish to PHP web server for endusers
  • 49. Trick 5: PHP Search & Browse
  • 50. Trick 5: PHP Search & Browse • The good: • A framework for searching organized content from Cascade • Customized search & display • The bad: • Many moving parts • Difficult to troubleshoot once it’s in/published from Cascade • The Ugly • Did I mention… many moving parts • Write XSL to write PHP to write HTML, CSS & JavaScript
  • 51. Trick 5: PHP Search & Browse • U-G-L-Y • XSLT required to publish a PHP ‘open’ tag: [system-view:external] <xsl:comment>#START-CODE<![CDATA[ <?php ]]>
  • 52. Trick 5: Getting started • Search and browse: • Cascade • Identify content type and attributes for searching • Content in data definitions is especially parse-able (and generally easier for contributors to manage) • Configure index block • Collect the XML of the index block
  • 53. Trick 5: Getting started • Search and browse: • Front-end • Develop static model of tool in HTML/Javascript (so you know what your format needs to output)
  • 54. Trick 5: Getting started • Search and browse: • Server-side processing • Develop framework for searching XML (regardless of whether it is called by Cascade page or not) • Using the sample index block as your datasource, write code to search the XML • Output markup of results • Use HTML model to test ‘manually’
  • 55. Trick 5: Getting started • Search and browse: • Back to Cascade • Write format to output • Client-side markup for form, results display • Server-side code to call functions to perform search passing as a parameter, the XML from the index block • Nail down how to escape code in your XSLT
  • 56. Conclusions • Start to think of Cascade as a database of content • mildly relational: blocks/pages can relate to other blocks/pages with (repeatable) data definition block/page choosers • Index blocks are like ‘views’ on the content database • Formats can • ‘query’ index blocks • transform the results into HTML, JavaScript, server-side code
  • 57. Conclusions • Getting started with index block tricks • Beg, borrow and steal: • The most difficult widget you write will be your first • Reuse and repurpose code to kick start future widgets
  • 58. Conclusions • Getting started with index block tricks • Get organized • Consider where you want to be able to insert your widgets (i.e., template regions) • How will you apply your widgetry formats to those regions? • Consider your Data Definitions’ and Formats’ structure and names ahead of time • structure (i.e., name) your DDs uniquely – use ‘groups’ as well-named containers that can be uniquely XPath queried • name your format files to match • in your ‘default’ format, include widget formats
  • 60. Contact info • Dave Shaykewich Client Account Manager, UVic Online University of Victoria dshaykew@uvic.ca 250-853-3233