Hi All,

In App Manager we need to support custom themes for tenants. We hope to
provide the tenant custom theme support like APIM[1].

Currently APPM has three asset types (webapp,site,mobileapp) as extension
types.Each asset type has its own theme by overriding the some theme
resources of the default theme.Where default
theme provides common theme resources for all asset types.

*Current structure*

store
 |--extensions
 |       |--assets
 |       |--webapp
 |       *|--themes*
 | *|--store*
 | |--mobileapp
 | *|--themes  *
 | *|--store*
 |--*themes*
*   |--store*

Where "themes/store" is default theme directory and each asset has
overridden this theme under extensions directory.

So when we provide the custom theme support for tenants we need to focus on
providing ability to customize the default theme resources as well as theme
resources overridden in asset level.
E.g Theme resources for header and footer is common to all asset types and
which comes from the default theme.Theme resources for asset overview page
is different for each assets and they come from
asset level.


As I had offline discussion with Sameera M , we came up following directory
structure for adding custom theme.

*Custom theme support*

 store
 |--extensions
 |       |--assets
 |       |--webapp
 |       | |--themes
 | | |--store
 | |
 | |--mobileapp
 | |--themes
 | |--store
 |--themes
   |--store
   |
   *|--<tenantdomain>   *
*    |--extensions*
*    | |--<assetype>*
*    | |--themes  *
*    | |--store*
*    |*
*    |*
*    |--themes*
*    |--store*


   - Resources in themes/store directory can be overridden by tenants in
   <tenantdomain>/themes/store.
   - Reduces in  store/extensions/assets/<assettype>/themes/store can be
   overridden by tenants in
   store/<tenantdomain>/extensions/assets/<assetype>/themes/store


e.g

store
 |--extensions
 |       |--assets
 |       |--webapp
 |       | |--themes
 | | |--store
 | | |--css
 | | |--overview-style.css
 | |--mobileapp
 | |--themes
 | |--store
 |--themes
   |--store
   |   |--css
   |    |--header-style.css
   |
   |--*eng.com <http://eng.com>*
    |--extensions
    | |--webapp
    | |--themes
    | |--store
    | |--css
  | |--overview-style.css
    |
    |
    |--themes
    |--store
        --css
        --header-style.css



*Implementation*

1. Tenant user will be provided an interface(in admin-dashboard) to upload
the custom theme
2. Theme resources should be uploaded in zip format.
3. Provide configuration option to whitelist the resource files that can be
uploaded
4. Uploaded resource files will be stored in store under the directory
having tenant name

store
 |
 |--themes
   |
   |--<*tenantdomain>   *
*    |--extensions*
*    | |--<assettype>*
*    | |--themes  *
*    | |--store*
*    |*
*    |*
*    |--themes*


*    |--store*
 5. if deployment has multiple store nodes, custom theme should be uploaded
in one store node
   and should be synced using suitable sync mechanism like rsync.


Appreciate your feedback.

[1]
http://wso2-oxygen-tank.10903.n7.nabble.com/APIM-ES-Store-Supporting-custom-themes-for-tenants-td92555.html


Thanks
-- 
Jenananthan Yogendran
*Senior Software Engineer,*
*WSO2 inc., http://wso2.com <http://wso2.com>*
_______________________________________________
Architecture mailing list
Architecture@wso2.org
https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture

Reply via email to