From 33217456fc28f07a2ac707d8763d4e8630a5e822 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Thu, 12 May 2022 16:11:23 -0400 Subject: [PATCH] fix(administration): add theme preview --- UI/AdministrationUI/UIxAdministration.m | 13 +++- .../UIxAdministrationAclEditor.m | 2 +- UI/AdministrationUI/product.plist | 4 ++ .../AdministrationUI/UIxAdministration.wox | 6 ++ .../AdministrationUI/UIxThemePreview.wox | 63 +++++++++++++++++++ .../js/Administration/Administration.app.js | 10 +++ .../Administration/ThemePreviewController.js | 39 ++++++++++++ 7 files changed, 133 insertions(+), 4 deletions(-) create mode 100644 UI/Templates/AdministrationUI/UIxThemePreview.wox create mode 100644 UI/WebServerResources/js/Administration/ThemePreviewController.js diff --git a/UI/AdministrationUI/UIxAdministration.m b/UI/AdministrationUI/UIxAdministration.m index 44134b2ab..7718996e0 100644 --- a/UI/AdministrationUI/UIxAdministration.m +++ b/UI/AdministrationUI/UIxAdministration.m @@ -1,8 +1,6 @@ /* UIxAdministration.m - this file is part of SOGo * - * Copyright (C) 2009 Inverse inc. - * - * Author: Francis Lachapelle + * Copyright (C) 2022 Inverse inc. * * This file is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -57,3 +55,12 @@ } @end + +/* Theme Preview */ + +@interface UIxThemePreview : UIxComponent +@end + + +@implementation UIxThemePreview +@end diff --git a/UI/AdministrationUI/UIxAdministrationAclEditor.m b/UI/AdministrationUI/UIxAdministrationAclEditor.m index c32b2a4d9..849b768b7 100644 --- a/UI/AdministrationUI/UIxAdministrationAclEditor.m +++ b/UI/AdministrationUI/UIxAdministrationAclEditor.m @@ -259,7 +259,7 @@ [users removeObjectForKey: currentUID]; [clientObject removeAclsForUsers: [users allKeys]]; - return [self jsCloseWithRefreshMethod: nil]; + return [self responseWithStatus: 200]; } - (BOOL) isPublicAccessEnabled diff --git a/UI/AdministrationUI/product.plist b/UI/AdministrationUI/product.plist index 8d797179a..f39bab32c 100644 --- a/UI/AdministrationUI/product.plist +++ b/UI/AdministrationUI/product.plist @@ -18,6 +18,10 @@ protectedBy = "View"; pageName = "UIxAdministrationAclEditor"; }; + UIxThemePreview = { + protectedBy = "View"; + pageName = "UIxThemePreview"; + }; }; }; }; diff --git a/UI/Templates/AdministrationUI/UIxAdministration.wox b/UI/Templates/AdministrationUI/UIxAdministration.wox index c823117ef..ed8ce3cd0 100644 --- a/UI/Templates/AdministrationUI/UIxAdministration.wox +++ b/UI/Templates/AdministrationUI/UIxAdministration.wox @@ -32,6 +32,12 @@ security

+ + palette +

+
diff --git a/UI/Templates/AdministrationUI/UIxThemePreview.wox b/UI/Templates/AdministrationUI/UIxThemePreview.wox new file mode 100644 index 000000000..3a22fb165 --- /dev/null +++ b/UI/Templates/AdministrationUI/UIxThemePreview.wox @@ -0,0 +1,63 @@ + + + + + + + + + +
+
+

Palettes

+ Accessible from md-colors and $mdThemingProvider + + {{ palette }}-{{ hex }} + +
+
+

Foregrounds

+ + Accessible from $mdThemingProvider only + foreground-1 + foreground-2 + foreground-3 + foreground-4 + background-contrast + background-contrast-secondary + +

Backgrounds

+ + Accessible from $mdThemingProvider only + background-default ({{ctrl.defaultTheme.colors.background.hues.default }}) + Accessible from md-colors and $mdThemingProvider + background-hue-1 ({{ctrl.defaultTheme.colors.background.hues['hue-1'] }}) + background-hue-2 ({{ctrl.defaultTheme.colors.background.hues['hue-2'] }}) + background-hue-3 ({{ctrl.defaultTheme.colors.background.hues['hue-3'] }}) + +
+
+
+
+

Components Colors

+
+ {{ palette }} ({{ctrl.defaultTheme.colors[palette].hues.default }}) + hue-1 ({{ctrl.defaultTheme.colors[palette].hues['hue-1'] }}) + hue-2 ({{ctrl.defaultTheme.colors[palette].hues['hue-2'] }}) + hue-3 ({{ctrl.defaultTheme.colors[palette].hues['hue-3'] }}) +
+
+
+

Theme Definition

+
{{ ctrl.jsonDefaultTheme }}
+
+
+
+ +
diff --git a/UI/WebServerResources/js/Administration/Administration.app.js b/UI/WebServerResources/js/Administration/Administration.app.js index 4b0b79867..4872a57d6 100644 --- a/UI/WebServerResources/js/Administration/Administration.app.js +++ b/UI/WebServerResources/js/Administration/Administration.app.js @@ -45,6 +45,16 @@ stateUser: stateUser, stateFolder: stateFolder } + }) + .state('administration.theme', { + url: '/theme', + views: { + module: { + templateUrl: 'UIxThemePreview', // UI/Templates/Administration/UIxThemePreview.wox + controller: 'ThemePreviewController', + controllerAs: 'ctrl' + } + } }); // if none of the above states are matched, use this as the fallback diff --git a/UI/WebServerResources/js/Administration/ThemePreviewController.js b/UI/WebServerResources/js/Administration/ThemePreviewController.js new file mode 100644 index 000000000..a83c50615 --- /dev/null +++ b/UI/WebServerResources/js/Administration/ThemePreviewController.js @@ -0,0 +1,39 @@ +/* -*- Mode: javascript; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ + +(function() { + 'use strict'; + + /** + * @ngInject + */ + configure.$inject = ['$mdThemingProvider']; + function configure($mdThemingProvider) { + + $mdThemingProvider.registerStyles([ + '.foreground-1 { color: "{{foreground-1}}" }', + '.foreground-2 { color: "{{foreground-2}}" }', + '.foreground-3 { color: "{{foreground-3}}" }', + '.foreground-4 { color: "{{foreground-4}}" }', + '.background-contrast { color: "{{background-contrast}}" }', + '.background-contrast-secondary { color: "{{background-contrast-secondary}}" }', + '.background-default { background-color: "{{background-default}}" }', + ].join('')); + + $mdThemingProvider.generateThemesOnDemand(false); + } + + /** + * @ngInject + */ + ThemePreviewController.$inject = ['$mdTheming']; + function ThemePreviewController($mdTheming) { + this.defaultTheme = $mdTheming.THEMES[$mdTheming.defaultTheme()]; + this.jsonDefaultTheme = JSON.stringify(this.defaultTheme, undefined, 2); + } + + angular + .module('SOGo.AdministrationUI') + .config(configure) + .controller('ThemePreviewController', ThemePreviewController); + +})();