From 809b4f2ef83675bfd0942e03923426e29353d85c Mon Sep 17 00:00:00 2001
From: Julius Haertl
Date: Mon, 8 Aug 2016 18:26:18 +0200
Subject: [PATCH 1/5] Theming: Add preview for login screen
---
apps/theming/css/settings-admin.css | 14 ++++++++++++
apps/theming/js/settings-admin.js | 19 +++++++++++----
apps/theming/lib/Settings/Admin.php | 4 ++++
apps/theming/lib/ThemingDefaults.php | 28 +++++++++++++++++++++++
apps/theming/templates/settings-admin.php | 5 +++-
apps/theming/tests/Settings/AdminTest.php | 8 +++++++
6 files changed, 73 insertions(+), 5 deletions(-)
diff --git a/apps/theming/css/settings-admin.css b/apps/theming/css/settings-admin.css
index 53214b245c639..4afa91f21eb05 100644
--- a/apps/theming/css/settings-admin.css
+++ b/apps/theming/css/settings-admin.css
@@ -32,3 +32,17 @@
div#theming_settings_msg {
margin-left: 10px;
}
+
+#theming-preview {
+ width:230px;
+ height:140px;
+ background-size: cover;
+ background-position: center center;
+ text-align: center;
+ margin-left:93px;
+}
+#theming-preview img {
+ max-width:20%;
+ max-height:20%;
+ margin-top:20px;
+}
\ No newline at end of file
diff --git a/apps/theming/js/settings-admin.js b/apps/theming/js/settings-admin.js
index 01ff9123842c3..a18874941e84f 100644
--- a/apps/theming/js/settings-admin.js
+++ b/apps/theming/js/settings-admin.js
@@ -68,7 +68,7 @@ function preview(setting, value) {
textColor = "#ffffff";
icon = 'caret';
}
- if (luminance>0.8) {
+ if (luminance > 0.8) {
elementColor = '#555555';
}
@@ -87,16 +87,27 @@ function preview(setting, value) {
'background-image: url(\'data:image/svg+xml;base64,' + generateRadioButton(elementColor) + '\'); }'
);
}
+
+ var timestamp = new Date().getTime();
if (setting === 'logoMime') {
- console.log(setting);
var logos = document.getElementsByClassName('logo-icon');
- var timestamp = new Date().getTime();
+ var previewImageLogo = document.getElementById('theming-preview-logo');
if (value !== '') {
logos[0].style.backgroundImage = "url('" + OC.generateUrl('/apps/theming/logo') + "?v" + timestamp + "')";
logos[0].style.backgroundSize = "contain";
+ previewImageLogo.src = OC.generateUrl('/apps/theming/logo') + "?v" + timestamp;
} else {
- logos[0].style.backgroundImage = "url('" + OC.getRootPath() + '/core/img/logo-icon.svg?v' + timestamp +"')";
+ logos[0].style.backgroundImage = "url('" + OC.getRootPath() + '/core/img/logo-icon.svg?v' + timestamp + "')";
logos[0].style.backgroundSize = "contain";
+ previewImageLogo.src = OC.getRootPath() + '/core/img/logo-icon.svg?v' + timestamp;
+ }
+ }
+ if (setting === 'backgroundMime') {
+ var previewImage = document.getElementById('theming-preview');
+ if (value !== '') {
+ previewImage.style.backgroundImage = "url('" + OC.generateUrl('/apps/theming/loginbackground') + "?v" + timestamp + "')";
+ } else {
+ previewImage.style.backgroundImage = "url('" + OC.getRootPath() + '/core/img/background.jpg?v' + timestamp + "')";
}
}
}
diff --git a/apps/theming/lib/Settings/Admin.php b/apps/theming/lib/Settings/Admin.php
index d0a9f554084d6..f251af34ce4e3 100644
--- a/apps/theming/lib/Settings/Admin.php
+++ b/apps/theming/lib/Settings/Admin.php
@@ -72,6 +72,10 @@ public function getForm() {
'url' => $this->themingDefaults->getBaseUrl(),
'slogan' => $this->themingDefaults->getSlogan(),
'color' => $this->themingDefaults->getMailHeaderColor(),
+ 'logo' => $this->themingDefaults->getLogo(),
+ 'logoMime' => $this->config->getAppValue('theming', 'logoMime', ''),
+ 'background' => $this->themingDefaults->getBackground(),
+ 'backgroundMime' => $this->config->getAppValue('theming', 'backgroundMime', ''),
'uploadLogoRoute' => $path,
];
diff --git a/apps/theming/lib/ThemingDefaults.php b/apps/theming/lib/ThemingDefaults.php
index 7b846919db358..63351214abf64 100644
--- a/apps/theming/lib/ThemingDefaults.php
+++ b/apps/theming/lib/ThemingDefaults.php
@@ -113,6 +113,34 @@ public function getMailHeaderColor() {
return $this->config->getAppValue('theming', 'color', $this->color);
}
+ /**
+ * Themed logo url
+ *
+ * @return string
+ */
+ public function getLogo() {
+ $logo = $this->config->getAppValue('theming', 'logoMime');
+ $pathToLogo = $this->config->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data/') . '/themedinstancelogo';
+ if(!$logo || !file_exists($pathToLogo)) {
+ return $this->urlGenerator->imagePath('core','logo.svg');
+ } else {
+ return $this->urlGenerator->linkToRoute('theming.Theming.getLogo');
+ }
+ }
+ /**
+ * Themed background image url
+ *
+ * @return string
+ */
+ public function getBackground() {
+ $backgroundLogo = $this->config->getAppValue('theming', 'backgroundMime');
+ $pathToLogo = $this->config->getSystemValue('datadirectory', \OC::$SERVERROOT . '/data/') . '/themedbackgroundlogo';
+ if(!$backgroundLogo || !file_exists($pathToLogo)) {
+ return $this->urlGenerator->imagePath('core','background.jpg');
+ } else {
+ return $this->urlGenerator->linkToRoute('theming.Theming.getLoginBackground');
+ }
+ }
/**
* Increases the cache buster key
*/
diff --git a/apps/theming/templates/settings-admin.php b/apps/theming/templates/settings-admin.php
index 50c4a8fb5ecba..66288d37656dd 100644
--- a/apps/theming/templates/settings-admin.php
+++ b/apps/theming/templates/settings-admin.php
@@ -73,6 +73,9 @@
-
+
+
+
; ?>)
+
diff --git a/apps/theming/tests/Settings/AdminTest.php b/apps/theming/tests/Settings/AdminTest.php
index 18c2064e8cec4..73339cf86b734 100644
--- a/apps/theming/tests/Settings/AdminTest.php
+++ b/apps/theming/tests/Settings/AdminTest.php
@@ -93,6 +93,10 @@ public function testGetFormNoErrors() {
'slogan' => 'MySlogan',
'color' => '#fff',
'uploadLogoRoute' => '/my/route',
+ 'logo' => null,
+ 'logoMime' => null,
+ 'background' => null,
+ 'backgroundMime' => null,
];
$expected = new TemplateResponse('theming', 'settings-admin', $params, '');
@@ -139,6 +143,10 @@ public function testGetFormWithErrors() {
'slogan' => 'MySlogan',
'color' => '#fff',
'uploadLogoRoute' => '/my/route',
+ 'logo' => null,
+ 'logoMime' => null,
+ 'background' => null,
+ 'backgroundMime' => null,
];
$expected = new TemplateResponse('theming', 'settings-admin', $params, '');
From 119dbf6b16d5821cb6af92f452e4ebcbe61b9fc0 Mon Sep 17 00:00:00 2001
From: Julius Haertl
Date: Mon, 8 Aug 2016 18:28:49 +0200
Subject: [PATCH 2/5] Theming: Hide undo button on default values
---
apps/theming/js/settings-admin.js | 31 ++++++++++++++++++++++-
apps/theming/templates/settings-admin.php | 4 ++-
2 files changed, 33 insertions(+), 2 deletions(-)
diff --git a/apps/theming/js/settings-admin.js b/apps/theming/js/settings-admin.js
index a18874941e84f..5f1f7385de147 100644
--- a/apps/theming/js/settings-admin.js
+++ b/apps/theming/js/settings-admin.js
@@ -109,6 +109,25 @@ function preview(setting, value) {
} else {
previewImage.style.backgroundImage = "url('" + OC.getRootPath() + '/core/img/background.jpg?v' + timestamp + "')";
}
+
+ }
+ hideUndoButton(setting, value);
+}
+
+function hideUndoButton(setting, value) {
+ var themingDefaults = {
+ name: 'Nextcloud',
+ slogan: t('lib', 'a safe home for all your data'),
+ url: 'https://nextcloud.com',
+ color: '#0082c9',
+ logoMime: '',
+ backgroundMime: ''
+ };
+
+ if (value === themingDefaults[setting] || value === '') {
+ $('.theme-undo[data-setting=' + setting + ']').hide();
+ } else {
+ $('.theme-undo[data-setting=' + setting + ']').show();
}
}
@@ -117,6 +136,15 @@ $(document).ready(function () {
$('html > head').append($(''));
+ $('#theming .theme-undo').each(function(index) {
+ var setting = $(this).data('setting');
+ if(setting === 'logoMime' || setting == 'backgroundMime') {
+ var value = $('#current-'+setting).val();
+ } else {
+ var value = $('#theming-'+setting).val();
+ }
+ hideUndoButton(setting, value);
+ });
var uploadParamsLogo = {
pasteZone: null,
dropZone: null,
@@ -192,11 +220,12 @@ $(document).ready(function () {
if (setting === 'color') {
var colorPicker = document.getElementById('theming-color');
colorPicker.style.backgroundColor = response.data.value;
- colorPicker.value = response.data.value.slice(1);
+ colorPicker.value = response.data.value.slice(1).toUpperCase();
} else if (setting !== 'logoMime' && setting !== 'backgroundMime') {
var input = document.getElementById('theming-'+setting);
input.value = response.data.value;
}
+
preview(setting, response.data.value);
OC.msg.finishedSaving('#theming_settings_msg', response);
});
diff --git a/apps/theming/templates/settings-admin.php b/apps/theming/templates/settings-admin.php
index 66288d37656dd..b6c970402308f 100644
--- a/apps/theming/templates/settings-admin.php
+++ b/apps/theming/templates/settings-admin.php
@@ -60,14 +60,16 @@