Neeme Praks wrote:
> >
> > IMHO Jetspeed is at a stage of development where this type of
> > backwards
> > compatibility is not such an issue. As a matter of fact I believe that
> > too much thought on backward compatibility too early can be very
> > detrimental because it can tie you into something you have totally
> > outgrown...
> 
> yep. I agree, current state of Jetspeed is still a little bit "alpha".
> At least on the user customization end.
>

I would say "alpha" is generous...
 
> > Some questions,
> >
> > What should be configurable?
> >
> > colors?
> > which portlets to display on a page?
> > Page title?
> > Page meta-data?
> 
> more or less, yes. ;-)
> We actually have this part in the user configuration markup already.
> Maybe just needs some extending...
> 

Customization is currently implemented for the following elements:

portlet to display
meta-data (including title, description, etc..) for each portlet
screen organisation
portlet decoration
portlet parameters

What is missing currently is *user* cutomization, ie a web-accessible GUI for each 
user to taylor its page at will.

> I will use XSP for writing portlets and XSLT stylesheets for page
> "controlling". The user can "skin" the portal by choosing among
> available stylesheets. XSLT would generate the "bones" for the "skin"
> and CSS would be used to add the "flesh" to the "skin": add the colors
> and other formatting information.
> User can also customize the style of the "skin" by overriding the
> default CSS style information.
>

Yes, that's the goal. But don't forget that you using XSLT for controlling
makes user cutomization difficult.

Example: user wants to add a new portlet to his page, the page is controlled by a
RowColumnController.
When the user as selected and configured his portlet, the controller will
propose its layout options, which in the case of RowColumn is very easy: 
which position do you want to give this portlet ?
Same as before but the page is controlled by a XSLController using stylesheet A.
Which layout option do you display to the user ? What happens when you switch
to stylesheet B ?

Using generic controllers/controls is very flexible from the 
designer/administrator point of view but makes presenting a GUI to 
the user more difficult than single purpose controllers with well-known 
capacities.

>
> <snip mountable PSML files>
>
> Also, I was thinking, when the user customizes his page, should we just
> copy the default and make necessary changes or use kind of inheritance:
> user configuration information simply overrides some of the default
> settings, no copy being made. This would simplify the administration
> when I would need to add a portlet to some "public" page. When a copy is
> being made, I would need to edit the configuration files of all the
> users. If inheritance is used, I would simply add this to the "public"
> page and it would be automatically shown for all the users.
> 
> So, something like:
> default.psml: default page - "public" page, can be accessed anonymously
> username.psml: default page - reference to the "public" default page
> stored in default.psml; together with the reference, there are also the
> overriding settings for this user.
> 
> username.psml can also contain "totally custom" pages, in the sense that
> users can build these from scratch. In this case, no reference to any
> "public" page is made.
> 

I was also ondering whether we should use a copy or reference model for user 
cutomization. While I agree that the reference model seems very nice, I also
anticipate a lot of implementation issues...

Currently my idea was :
let's define profiles in the registry which are valid PSML fragments

<profile name="Corporate">
  <controller/>
  <entry>
  <portlets>
    <controller/>
    <control/>
    <entry/>
  </portlets>
</profile>

now let's allow portlets to be linked to profiles, a linked portlets element would
be initialized with the profile content.

<portlets profile="corporate">
  <controller/>
  <entry>
  <portlets>
    <controller/>
    <control/>
    <entry/>
  </portlets>   
</portlets>

let's use the user attribute on portlets (currently defined by unused) to
name the user that has the right to modify the portlets content (ie add/remove
a portlet, change the control/controller). If no user attribute is specified on a 
portlets element, its parent user attribute is inherited.

we may get a sample PSML file like this :

luta.psml
<portlets user="luta">
  <portlets user="default" profile="Corporate">
  <controller/>
  <entry>
  <portlets>
    <controller/>
    <control/>
    <entry/>
  </portlets>   
  <portlets user="default" profile="MegaCorporate"/>    
  <portlets profile="Custom"/>  
  <portlets user="burton" profile="CustomShared"/>      
</portlets>

This file would be used to display the portlet for user luta, since it's 
named luta.psml.
We would have the following capability matrix

no profile /  no user: fixed content, not editable by anybody
profile    /  no user: each time the profile is changed, the content of these
                       section is updated as they're not editable
no profile / user    : user is free to edit this element and put whatever it
                       likes inside.
profile    / user    : content is intialized by profile and editable by
                       user. It's not kept up to sync with the profile changes.

I let to your imagination what may be the point of specifying user "burton" in 
my example...

Any thoughts or comments are welcome.

--
Rapha�l Luta - [EMAIL PROTECTED]


--
--------------------------------------------------------------
Please read the FAQ! <http://java.apache.org/faq/>
To subscribe:        [EMAIL PROTECTED]
To unsubscribe:      [EMAIL PROTECTED]
Archives and Other:  <http://java.apache.org/main/mail.html>
Problems?:           [EMAIL PROTECTED]

Reply via email to