<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <title>Per-user Themes :: Apache Isis</title>
    <link rel="canonical" href="https://isis.apache.org/vw/2.0.0-M4/hints-and-tips/per-user-themes.html">
    <meta name="generator" content="Antora 2.3.4">
    <link rel="stylesheet" href="../../../_/css/site.css">
    <link rel="stylesheet" href="../../../_/css/site-custom.css">
    <link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,700,700i|Raleway:300,400,500,700,800|Montserrat:300,400,700" rel="stylesheet">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css"/>
<link rel="home" href="https://isis.apache.org" title="Apache Isis">
  </head>
  <body class="article">
<header class="header">
  <nav class="navbar">
    <div class="navbar-brand">
      <a class="navbar-item" href="https://isis.apache.org">
          <span class="icon">
            <img src="../../../_/img/isis-logo-48x48.png"></img>
          </span>
        <span>Apache Isis</span>
      </a>
      <button class="navbar-burger" data-target="topbar-nav">
        <span></span>
        <span></span>
        <span></span>
      </button>
    </div>
    <div id="topbar-nav" class="navbar-menu">
      <a class="navbar-end">
        <div class="navbar-item hide-for-print">
          <span>
            <input id="algolia-search-input" placeholder="Search"></span>
          </span>
        </div>
        <div class="navbar-item has-dropdown is-hoverable">
          <a class="navbar-link" href="#">Quick Start</a>
          <div class="navbar-dropdown">
            <span class="navbar-item navbar-heading">Starter Apps</span>
            <a class="navbar-item" href="../../../docs/2.0.0-M4/starters/helloworld.html">Hello World</a>
            <a class="navbar-item" href="../../../docs/2.0.0-M4/starters/simpleapp.html">Simple App</a>
            <hr class="navbar-divider"/>
            <span class="navbar-item navbar-heading">Demos &amp; Tutorials</span>
            <a class="navbar-item" href="../../../docs/2.0.0-M4/demo/about.html">Demo App</a>
            <a class="navbar-item" href="https://danhaywood.gitlab.io/isis-petclinic-tutorial-docs/petclinic/1.16.2/intro.html">Petclinic (tutorial)</a>
            <hr class="navbar-divider"/>
            <span class="navbar-item navbar-heading">Resources</span>
            <a class="navbar-item" href="../../../docs/2.0.0-M4/resources/cheatsheet.html">Cheatsheet</a>
            <a class="navbar-item" href="../../../docs/2.0.0-M4/resources/icons.html">Icons</a>
          </div>
        </div>
        <div class="navbar-item has-dropdown is-hoverable">
          <a class="navbar-link" href="#">Guides</a>
          <div class="navbar-dropdown">
            <span class="navbar-item navbar-heading">Development</span>
            <a class="navbar-item" href="../../../setupguide/2.0.0-M4/about.html">Setup Guide</a>
            <hr class="navbar-divider"/>
            <span class="navbar-item navbar-heading">Core</span>
            <a class="navbar-item" href="../../../userguide/2.0.0-M4/about.html">User Guide</a>
            <a class="navbar-item" href="../../../refguide/2.0.0-M4/about.html">Reference Guide</a>
            <a class="navbar-item" href="../../../testing/2.0.0-M4/about.html">Testing Guide</a>
          </div>
        </div>
        <div class="navbar-item has-dropdown is-hoverable">
          <a class="navbar-link" href="#">Libraries</a>
          <div class="navbar-dropdown">
            <span class="navbar-item navbar-heading">For Use in Apps</span>
            <a class="navbar-item" href="../../../subdomains/2.0.0-M4/about.html">Subdomain Libraries</a>
            <a class="navbar-item" href="../../../valuetypes/2.0.0-M4/about.html">Value Types</a>
            <hr class="navbar-divider"/>
            <span class="navbar-item navbar-heading">Integrate between Apps</span>
            <a class="navbar-item" href="../../../mappings/2.0.0-M4/about.html">Bounded Context Mapping Libraries</a>
            <hr class="navbar-divider"/>
            <span class="navbar-item navbar-heading">Other</span>
            <a class="navbar-item" href="../../../incubator/2.0.0-M4/about.html">Incubator</a>
            <a class="navbar-item" href="../../../legacy/2.0.0-M4/about.html">Legacy</a>
          </div>
        </div>
        <div class="navbar-item has-dropdown is-hoverable">
          <a class="navbar-link" href="#">Components</a>
          <div class="navbar-dropdown">
            <span class="navbar-item navbar-heading">Viewers</span>
            <a class="navbar-item" href="../../../vw/2.0.0-M4/about.html">Wicket UI</a>
            <a class="navbar-item" href="../../../vro/2.0.0-M4/about.html">Restful Objects (REST)</a>
            <hr class="navbar-divider"/>
            <span class="navbar-item navbar-heading">Security</span>
            <a class="navbar-item" href="../../../security/2.0.0-M4/about.html">Security Guide</a>
            <hr class="navbar-divider"/>
            <span class="navbar-item navbar-heading">Persistence</span>
            <a class="navbar-item" href="../../../pjdo/2.0.0-M4/about.html">DataNucleus (JDO)</a>
            <hr class="navbar-divider"/>
            <span class="navbar-item navbar-heading">Extensions</span>
            <a class="navbar-item" href="../../../extensions/2.0.0-M4/about.html">Extensions Catalog</a>
          </div>
        </div>
        <div class="navbar-item has-dropdown is-hoverable">
          <a class="navbar-link" href="#">Support</a>
          <div class="navbar-dropdown">
            <span class="navbar-item navbar-heading">Contact</span>
            <a class="navbar-item" href="../../../docs/2.0.0-M4/support/slack-channel.html">Slack</a>
            <a class="navbar-item" href="../../../docs/2.0.0-M4/support/mailing-list.html">Mailing Lists</a>
            <a class="navbar-item" href="https://issues.apache.org/jira/browse/ISIS">JIRA</a>
            <a class="navbar-item" href="https://stackoverflow.com/questions/tagged/isis">Stack Overflow</a>
            <hr class="navbar-divider"/>
            <span class="navbar-item navbar-heading">Releases</span>
            <a class="navbar-item" href="../../../docs/2.0.0-M4/downloads/how-to.html">Downloads</a>
            <a class="navbar-item" href="../../../relnotes/2.0.0-M4/about.html">Release Notes</a>
            <a class="navbar-item" href="../../../docs/2.0.0-M4/archive/1-x.html">Archive (1.x)</a>
            <hr class="navbar-divider"/>
            <span class="navbar-item navbar-heading">Framework</span>
            <a class="navbar-item" href="../../../conguide/2.0.0-M4/about.html">Contributors' Guide</a>
            <a class="navbar-item" href="../../../comguide/2.0.0-M4/about.html">Committers' Guide</a>
            <a class="navbar-item" href="../../../core/2.0.0-M4/about.html">Core Design</a>
          </div>
        </div>
        <div class="navbar-item has-dropdown is-hoverable">
          <a class="navbar-link" href="#">ASF</a>
          <div class="navbar-dropdown">
            <a class="navbar-item" href="http://www.apache.org/">Apache Homepage</a>
            <a class="navbar-item" href="https://www.apache.org/events/current-event">Events</a>
            <a class="navbar-item" href="https://www.apache.org/licenses/">Licenses</a>
            <a class="navbar-item" href="https://www.apache.org/security/">Security</a>
            <a class="navbar-item" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
            <a class="navbar-item" href="https://www.apache.org/foundation/thanks.html">Thanks</a>
            <hr class="navbar-divider"/>
            <a class="navbar-item" href="https://whimsy.apache.org/board/minutes/Isis.html">PMC board minutes</a>
          </div>
        </div>
        <a class="navbar-item" href="../../../docs/2.0.0-M4/about.html">
          <span class="icon">
            <img src="../../../_/img/home.png"></img>
          </span>
        </a>
      </div>
    </div>
  </nav>
</header>
<div class="body ">
<div class="nav-container" data-component="vw" data-version="2.0.0-M4">
  <aside class="nav">
    <div class="panels">
<div class="nav-panel-pagination">
  <a class="page-previous disabled" rel="prev" href="" title=""><span></span></a>
  <a class="page-next disabled" rel="next"
     href="" title=""><span></span></a>
<!--
page.parent doesn't seem to be set...
  <a class="page-parent disabled" rel="prev" href="" title=""><span></span></a>
-->
</div>
<div class="nav-panel-menu is-active" data-panel="menu">
  <nav class="nav-menu">
    <h3 class="title"><a href="../about.html">Wicket Viewer</a></h3>
<ul class="nav-list">
  <li class="nav-item" data-depth="0">
<ul class="nav-list">
  <li class="nav-item" data-depth="1">
    <a class="nav-link" href="../configuration-properties.html">Configuration Properties</a>
  </li>
  <li class="nav-item" data-depth="1">
    <a class="nav-link" href="../features.html">End-user Features</a>
  </li>
  <li class="nav-item" data-depth="1">
    <a class="nav-link" href="../security.html">Security</a>
  </li>
  <li class="nav-item" data-depth="1">
    <a class="nav-link" href="../customisation.html">Customisation</a>
  </li>
  <li class="nav-item" data-depth="1">
    <a class="nav-link" href="../extending.html">Extending</a>
  </li>
  <li class="nav-item" data-depth="1">
    <a class="nav-link" href="../hints-and-tips.html">Hints-n-Tips</a>
  </li>
  <li class="nav-item" data-depth="1">
    <button class="nav-item-toggle"></button>
    <span class="nav-text">Extensions</span>
<ul class="nav-list">
  <li class="nav-item" data-depth="2">
    <a class="nav-link" href="../exceldownload/about.html">Excel Download</a>
  </li>
  <li class="nav-item" data-depth="2">
    <a class="nav-link" href="../fullcalendar/about.html">fullcalendar</a>
  </li>
  <li class="nav-item" data-depth="2">
    <a class="nav-link" href="../gmap3/about.html">GMap3</a>
  </li>
  <li class="nav-item" data-depth="2">
    <a class="nav-link" href="../pdfjs/about.html">pdf.js</a>
  </li>
</ul>
  </li>
</ul>
  </li>
</ul>
  </nav>
</div>
<div class="nav-panel-explore" data-panel="explore">
  <div class="context">
    <span class="title">Wicket Viewer</span>
    <span class="version">2.0.0-M4</span>
  </div>
  <ul class="components">
    <li class="component">
      <span class="title"> </span>
      <ul class="versions">
        <li class="version is-latest">
          <a href="../../../docs/2.0.0-M4/about.html">2.0.0-M4</a>
        </li>
      </ul>
    </li>
    <li class="component">
      <span class="title">BC Mappings Catalog</span>
      <ul class="versions">
        <li class="version is-latest">
          <a href="../../../mappings/2.0.0-M4/about.html">2.0.0-M4</a>
        </li>
      </ul>
    </li>
    <li class="component">
      <span class="title">Committers' Guide</span>
      <ul class="versions">
        <li class="version is-latest">
          <a href="../../../comguide/2.0.0-M4/about.html">2.0.0-M4</a>
        </li>
      </ul>
    </li>
    <li class="component">
      <span class="title">Contributors' Guide</span>
      <ul class="versions">
        <li class="version is-latest">
          <a href="../../../conguide/2.0.0-M4/about.html">2.0.0-M4</a>
        </li>
      </ul>
    </li>
    <li class="component">
      <span class="title">Design Docs</span>
      <ul class="versions">
        <li class="version is-latest">
          <a href="../../../core/2.0.0-M4/about.html">2.0.0-M4</a>
        </li>
      </ul>
    </li>
    <li class="component">
      <span class="title">Extensions Catalog</span>
      <ul class="versions">
        <li class="version is-latest">
          <a href="../../../extensions/2.0.0-M4/about.html">2.0.0-M4</a>
        </li>
      </ul>
    </li>
    <li class="component">
      <span class="title">Incubator Catalog</span>
      <ul class="versions">
        <li class="version is-latest">
          <a href="../../../incubator/2.0.0-M4/about.html">2.0.0-M4</a>
        </li>
      </ul>
    </li>
    <li class="component">
      <span class="title">JDO/DataNucleus</span>
      <ul class="versions">
        <li class="version is-latest">
          <a href="../../../pjdo/2.0.0-M4/about.html">2.0.0-M4</a>
        </li>
      </ul>
    </li>
    <li class="component">
      <span class="title">Legacy Catalog</span>
      <ul class="versions">
        <li class="version is-latest">
          <a href="../../../legacy/2.0.0-M4/about.html">2.0.0-M4</a>
        </li>
      </ul>
    </li>
    <li class="component">
      <span class="title">Reference Guide</span>
      <ul class="versions">
        <li class="version is-latest">
          <a href="../../../refguide/2.0.0-M4/about.html">2.0.0-M4</a>
        </li>
      </ul>
    </li>
    <li class="component">
      <span class="title">Release Notes</span>
      <ul class="versions">
        <li class="version is-latest">
          <a href="../../../relnotes/2.0.0-M4/about.html">2.0.0-M4</a>
        </li>
      </ul>
    </li>
    <li class="component">
      <span class="title">Restful Objects Viewer</span>
      <ul class="versions">
        <li class="version is-latest">
          <a href="../../../vro/2.0.0-M4/about.html">2.0.0-M4</a>
        </li>
      </ul>
    </li>
    <li class="component">
      <span class="title">Security Guide</span>
      <ul class="versions">
        <li class="version is-latest">
          <a href="../../../security/2.0.0-M4/about.html">2.0.0-M4</a>
        </li>
      </ul>
    </li>
    <li class="component">
      <span class="title">Setup Guide</span>
      <ul class="versions">
        <li class="version is-latest">
          <a href="../../../setupguide/2.0.0-M4/about.html">2.0.0-M4</a>
        </li>
      </ul>
    </li>
    <li class="component">
      <span class="title">Subdomains Catalog</span>
      <ul class="versions">
        <li class="version is-latest">
          <a href="../../../subdomains/2.0.0-M4/about.html">2.0.0-M4</a>
        </li>
      </ul>
    </li>
    <li class="component">
      <span class="title">System Overview</span>
      <ul class="versions">
        <li class="version is-latest">
          <a href="../../../system/2.0.0-M4/about.html">2.0.0-M4</a>
        </li>
      </ul>
    </li>
    <li class="component">
      <span class="title">Testing Guide</span>
      <ul class="versions">
        <li class="version is-latest">
          <a href="../../../testing/2.0.0-M4/about.html">2.0.0-M4</a>
        </li>
      </ul>
    </li>
    <li class="component">
      <span class="title">User Guide</span>
      <ul class="versions">
        <li class="version is-latest">
          <a href="../../../userguide/2.0.0-M4/about.html">2.0.0-M4</a>
        </li>
      </ul>
    </li>
    <li class="component">
      <span class="title">Value Types Catalog</span>
      <ul class="versions">
        <li class="version is-latest">
          <a href="../../../valuetypes/2.0.0-M4/about.html">2.0.0-M4</a>
        </li>
      </ul>
    </li>
    <li class="component is-current">
      <span class="title">Wicket Viewer</span>
      <ul class="versions">
        <li class="version is-current is-latest">
          <a href="../about.html">2.0.0-M4</a>
        </li>
      </ul>
    </li>
  </ul>
</div>
    </div>
  </aside>
</div>
<main role="main">
<div class="toolbar" role="navigation">
<button class="nav-toggle"></button>
  <a href="../../../docs/2.0.0-M4/about.html" class="home-link"></a>
<nav class="breadcrumbs" aria-label="breadcrumbs">
  <ul>
    <li><a href="../about.html">Wicket Viewer</a></li>
    <li><a href="per-user-themes.html">Per-user Themes</a></li>
  </ul>
</nav>
  <div class="edit-this-page"><a href="https://github.com/apache/isis/edit/2.0.0-M4/viewers/wicket/adoc/modules/ROOT/pages/hints-and-tips/per-user-themes.adoc">Edit</a></div>
</div>
<article class="doc">
    <a name="section-top"></a>
<h1 class="page">Per-user Themes</h1>
<div class="paragraph">
<p>From <a href="http://isis.markmail.org/thread/kb4442niwwbnghey">this thread</a> on the Apache Isis users mailing list:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><em>Is it possible to have each of our resellers (using our Apache Isis application) use there own theme/branding with their own logo and colors?
Would this also be possible for the login page, possibly depending on the used host name?</em></p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Yes, you can do this, by installing a custom implementation of the Wicket Bootstrap&#8217;s <code>ActiveThemeProvider</code>:</p>
</div>
<div class="listingblock">
<div class="title">IActiveThemeProvider implementation</div>
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">public class UserSettingsThemeProvider implements ActiveThemeProvider {
    ...
    @Override
    public ITheme getActiveTheme() {
        if(IsisContext.getSpecificationLoader().isInitialized()) {
            final String themeName = IsisContext.doInSession(new Callable&lt;String&gt;() {
                @Override
                public String call() throws Exception {
                    final UserSettingsService userSettingsService =
                        lookupService(UserSettingsService.class);
                    final UserSetting activeTheme = userSettingsService.find(
                            IsisContext.getAuthenticationSession().getUserName(),
                            ACTIVE_THEME);
                    return activeTheme != null ? activeTheme.valueAsString() : null;
                }
            });
            return themeFor(themeName);
        }
        return new SessionThemeProvider().getActiveTheme();
    }
    @Override
    public void setActiveTheme(final String themeName) {
        IsisContext.doInSession(new Runnable() {
            @Override
            public void run() {
                final String currentUsrName =
                    IsisContext.getAuthenticationSession().getUserName();
                final UserSettingsServiceRW userSettingsService =
                        lookupService(UserSettingsServiceRW.class);
                final UserSettingJdo activeTheme =
                        (UserSettingJdo) userSettingsService.find(
                                                currentUsrName, ACTIVE_THEME);
                if(activeTheme != null) {
                    activeTheme.updateAsString(themeName);
                } else {
                    userSettingsService.newString(
                        currentUsrName, ACTIVE_THEME, "Active Bootstrap theme for user", themeName);
                }
            }
        });
    }
    private ITheme themeFor(final String themeName) {
        final ThemeProvider themeProvider = settings.getThemeProvider();
        if(themeName != null) {
            for (final ITheme theme : themeProvider.available()) {
                if (themeName.equals(theme.name()))
                    return theme;
            }
        }
        return themeProvider.defaultTheme();
    }
    ...
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>and</p>
</div>
<div class="listingblock">
<div class="title">Using the ActiveThemeProvider</div>
<div class="content">
<pre class="highlightjs highlight"><code class="language-java hljs" data-lang="java">@Override
protected void init() {
    super.init();

    final IBootstrapSettings settings = Bootstrap.getSettings();
    settings.setThemeProvider(new BootswatchThemeProvider(BootswatchTheme.Flatly));

    settings.setActiveThemeProvider(new UserSettingsThemeProvider(settings));
}</code></pre>
</div>
</div>
</article>
<aside class="article-aside toc hide-for-print" role="navigation">
    <p class="toc-title">On this page</p>
    <div id="article-toc"></div>
</aside>
</main>
</div>
<footer class="footer">
    <div class="content">
        <div class="copyright">
            <p>
                Copyright © 2010~2020 The Apache Software Foundation, licensed under the Apache License, v2.0.
                <br/>
                Apache, the Apache feather logo, Apache Isis, and the Apache Isis project logo are all trademarks of The Apache Software Foundation.
            </p>
        </div>
        <div class="revision">
            <p>Revision: SNAPSHOT</p>
        </div>
    </div>
</footer>
<script src="../../../_/js/site.js"></script>
<script async src="../../../_/js/vendor/highlight.js"></script>
<script src="../../../_/js/vendor/jquery-3.4.1.min.js"></script>
<script src="../../../_/js/vendor/jquery-ui-1.12.1.custom.widget-only.min.js"></script>
<script src="../../../_/js/vendor/jquery.tocify.min.js"></script>

<script>
    $(function() {
        $("#article-toc").tocify( {
            showEffect: "slideDown",
            hashGenerator: "pretty",
            hideEffect: "slideUp",
            selectors: "h2, h3",
            scrollTo: 120,
            smoothScroll: true,
            theme: "jqueryui",
            highlightOnScroll: true
        } );
    });
</script>

<script src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
<script>
  function focusSearchInput () { document.querySelector('#algolia-search-input').focus() }
  var search = docsearch({
    appId: '5ISP5TFAEN',
    apiKey: '0fc51c28b4ad46e7318e96d4e97fab7c',
    indexName: 'isis-apache-org',
    inputSelector: '#algolia-search-input',
    autocompleteOptions: { hint: false, keyboardShortcuts: ['s'] },
    debug: false,
  }).autocomplete
  search.on('autocomplete:closed', function () { search.autocomplete.setVal() })
  focusSearchInput()
  window.addEventListener('load', focusSearchInput);
</script>

<!--
  docsearch options:
  https://docsearch.algolia.com/docs/behavior/
-->
<!--
  https://www.algolia.com/doc/api-reference/api-parameters/
  algoliaOptions: { hitsPerPage: 6 },
-->
  </body>
</html>
