CCWidgetSetup

Task

You want to provide different preconfigured widgets for certain contexts

Solution

Let's say, we want to configure two widget sets, according to certain brands. We'll call them "Groupware4You", "CollaborationPro" and "OneStopShop".

There is a config cascade enabled property (com.openexchange.frontend.uwa.widgetFile) that governs which widget definition file is used.

Firstly we'll tag the contexts. This will assign the contexts to a certain brand.

Groupware4You Contexts

 changecontext -c1 ... --taxonomy/types=gw4u
 changecontext -c2 ... --taxonomy/types=gw4u

CollaborationPro Contexts

 changecontext -c3 ... --taxonomy/types=cpro
 changecontext -c4 ... --taxonomy/types=cpro

OneStopShop Contexts

 changecontext -c5 ... --taxonomy/types=oss
 changecontext -c6 ... --taxonomy/types=oss

Next, we create the default widget settings in the file /opt/open-xchange/etc/groupware/uwa.properties

com.openexchange.frontend.uwa.widgetFile=g4you_widgets

And the corresponging widget definition file /opt/open-xchange/etc/groupware/widgets/g4you_widgets.yml:

   ads:
     autorefresh: true
     parameter: "{customerType: 'free'}"
     standalone: true
     url: http://www.groupware4you.com/widgets/Ads
     visible: true
     title:Offerings from Groupware 4 You
   newAndNoteworthy:
     autorefresh: false
     parameter: "{customerType: 'free', includeUpsell: 'true'}"
     standalone: true
     url: http://www.groupware4you.com/platformNews
     visible: true
     title: New and Noteworthy


Next, let's define the two other brands. If a context belongs to a certain brand, other widget files will be used.

Create a file /opt/open-xchange/etc/groupware/contextSets/widgetSets.yml.

   cpro:
       withTags: cpro
       com.openexchange.frontend.uwa.widgetFile: cpro_widgets
       
   oss:
       withTags: oss
       com.openexchange.frontend.uwa.widgetFile: oss_widgets


And the corresponding widget files, referred to by the configuration above.

/opt/open-xchange/etc/groupware/widgets/cpro_widgets.yml:

   newAndNoteworthy:
       autorefresh: false
       parameter: "{customerType: 'free', includeUpsell: 'true'}"
       standalone: true
       url: http://www.collaborationpro.com/platformNews
       visible: true
       title: Collaboration Pro, New And Noteworthy

/opt/open-xchange/etc/groupware/widgets/oss_widgets.yml:

   newAndNoteworthy:
       autorefresh: false
       parameter: "{customerType: 'free', includeUpsell: 'true'}"
       standalone: true
       url: http://www.onestopshop.com/platformNews
       visible: true
       title: The One Stop Shop News

This will make the widget files vary along the config cascade.