portal concepts [was: what would it take to build site navigation into struts?]

2004-03-19 Thread Andrew Freeman
After taking a BroadVision One-To-One Portal Developer Workshop this week
and seeing how BroadVision uses Struts, I have come to realize that some of
the functionality that their product provides could be built directly into
Struts itself.  Let's start with a simple site map:

0. Root
   1. Home
  1. Products
 1. Product Line 1
1. Product A
2. Product B
3. Product C
 2. Product Line 2
1. Product D
2. Product E
   2. Personal Home Page
  1. Personal Weather Portlet
  2. Personal Stock Portlet

First, BroadVision Portal provides an admin tool and an API to build page
hierarchies like what is shown above.  Every page within the page hierarchy
knows itself, its parent, its siblings, and its children.  Having an API
like this prevents a page from ever becoming an orphan.  It also allows
sitemaps to be dynamically created and for each page to know how to build
its own breadcrumb navigation like this:

   Home  Products  Product Line 1  Product B

Second, each of the above pages can contain zero or more pieces of
content.  Broadvision is designed so that multiple pages can point to the
same content.  This is the same way multiple Struts Actions can point to
the same JSP.

Third, they provide a way to create a user profile.

Fourth, BroadVision provides a way to define what they refer to as
qualifiers.  For instance:

   Department: IT, HR, Finance, Marketing, Sales, etc.
   User Type: Customer, Employee, Supplier, Distributor
   Role: Admin, Power User, User, Guest
   Language: English, French, German

These qualifiers can be assigned to each page within the page hierarchy,
each page's content items, and each user profile.  This allows the portal to
dynamically determine what content to display to a user based on what
qualifiers have been assigned to the user.  If no qualifiers have been
assigned to a page, the page is publicly visible.  Otherwise, unless the
user profile has the same qualifiers assigned to it as the page, the page
will not be visible.  The same rules apply to the content items on the page.
The cool part about this is that the user only sees the content relevant to
them.  Thus you are able to create truly dynamic content.



There are, of course, a lot more features associated with BroadVision Portal
than what I have listed above.  I am mainly looking to have some type of
Page Hierarchy concept built into Struts as a Plugin as tightly as Tiles is.
The rest of the features could be added onto that concept over time.

What do others think?

Andy

-Original Message-
From: Adam Hardy [mailto:[EMAIL PROTECTED]
Sent: Wednesday, March 17, 2004 3:52 AM
To: Struts Users Mailing List
Subject: Re: what would it take to build site navigation into struts?


You're talking about breadcrumbs as site navigation - just to be clear,
because there is another implementation of breadcrumbs as history
navigation.

It is relatively simple to implement (and maintain) a navigation
breadcrumb menu using Tiles, which shows the position of your page in
the heirarchy. It is basic, so I'm not sure if it could fulfil what you
describe as 'knowing its relationship to the rest of the pages' or an
'API to know the current page's parent siblings  children'.

Perhaps a couple of examples to show what you mean would help.


Adam

On 03/17/2004 04:45 AM Andrew Freeman wrote:
 I have been learning about a web portal tool called BroadVision Portal.
One
 of the nice things that it provides out of the box are breadcrumbs.  It
 allows you to define a hierarchical navigation system where each level of
 the hierarchy can have a sub-navigation element and/or one or more
content
 items.  You can compare this concept to a file system.  Every webpage/link
 knows its relationship to the rest of the pages/links.  This means that
 there is an API to know the current page's/link's parent, siblings, and
 children.  Microsoft's Whidbey release of ASP.NET will provide an API for
 this.  The bottom line is that having such a feature in Struts would make
it
 easy to build things like breadcrumbs.

 Does anyone have any idea of what it would take to build a site
navigation
 type concept into Struts?

 thanks,
 Andy



 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]




--
struts 1.1 + tomcat 5.0.16 + java 1.4.2
Linux 2.4.20 Debian


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]




-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: portal concepts [was: what would it take to build site navigation into struts?]

2004-03-19 Thread Adam Hardy
Are you aiming to put Broadvision out of business? ;)

It sounds like quite a task. The admin tool that you use to build page 
heirarchies - how does it store the info? XML presumably? And the XML is 
read by the application at run-time.

And so your plug-in would do the same - read its config from an XML file 
to establish the heirarchy and relationships.

The dynamic part sounds like a major piece of work - but you wouldn't 
necessarily need that - or is it integral? I suppose it depends on how 
much static content you have. Obviously with lots of static content, 
then it would seem churlish not to allow dynamic rearrangement of the 
site map.

But it depends on how you do it - most of the URLs in a struts-tiles app 
are based in files that can only be reloaded by reloading the whole app.

I think that's your first worry.

Adam

On 03/19/2004 09:45 AM Andrew Freeman wrote:
After taking a BroadVision One-To-One Portal Developer Workshop this week
and seeing how BroadVision uses Struts, I have come to realize that some of
the functionality that their product provides could be built directly into
Struts itself.  Let's start with a simple site map:
0. Root
   1. Home
  1. Products
 1. Product Line 1
1. Product A
2. Product B
3. Product C
 2. Product Line 2
1. Product D
2. Product E
   2. Personal Home Page
  1. Personal Weather Portlet
  2. Personal Stock Portlet
First, BroadVision Portal provides an admin tool and an API to build page
hierarchies like what is shown above.  Every page within the page hierarchy
knows itself, its parent, its siblings, and its children.  Having an API
like this prevents a page from ever becoming an orphan.  It also allows
sitemaps to be dynamically created and for each page to know how to build
its own breadcrumb navigation like this:
   Home  Products  Product Line 1  Product B

Second, each of the above pages can contain zero or more pieces of
content.  Broadvision is designed so that multiple pages can point to the
same content.  This is the same way multiple Struts Actions can point to
the same JSP.
Third, they provide a way to create a user profile.

Fourth, BroadVision provides a way to define what they refer to as
qualifiers.  For instance:
   Department: IT, HR, Finance, Marketing, Sales, etc.
   User Type: Customer, Employee, Supplier, Distributor
   Role: Admin, Power User, User, Guest
   Language: English, French, German
These qualifiers can be assigned to each page within the page hierarchy,
each page's content items, and each user profile.  This allows the portal to
dynamically determine what content to display to a user based on what
qualifiers have been assigned to the user.  If no qualifiers have been
assigned to a page, the page is publicly visible.  Otherwise, unless the
user profile has the same qualifiers assigned to it as the page, the page
will not be visible.  The same rules apply to the content items on the page.
The cool part about this is that the user only sees the content relevant to
them.  Thus you are able to create truly dynamic content.


There are, of course, a lot more features associated with BroadVision Portal
than what I have listed above.  I am mainly looking to have some type of
Page Hierarchy concept built into Struts as a Plugin as tightly as Tiles is.
The rest of the features could be added onto that concept over time.
What do others think?


--
struts 1.1 + tomcat 5.0.16 + java 1.4.2
Linux 2.4.20 Debian
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]