diff options
author | Julius Härtl <jus@bitgrid.net> | 2018-01-03 09:17:14 +0100 |
---|---|---|
committer | Julius Härtl <jus@bitgrid.net> | 2018-01-03 14:42:07 +0100 |
commit | 8a226811dc86547ca5f79ffa35965c0f72e8fbb4 (patch) | |
tree | 80790a3013c6295a53fa5be49870b8dfbb303273 | |
parent | ee0653d68b117ac586841465840e629a7c1a487f (diff) | |
download | nextcloud-server-8a226811dc86547ca5f79ffa35965c0f72e8fbb4.tar.gz nextcloud-server-8a226811dc86547ca5f79ffa35965c0f72e8fbb4.zip |
Invert app icons on IE11 as well
Signed-off-by: Julius Härtl <jus@bitgrid.net>
-rw-r--r-- | core/templates/layout.user.php | 10 | ||||
-rw-r--r-- | lib/private/TemplateLayout.php | 9 | ||||
-rw-r--r-- | settings/js/apps.js | 41 |
3 files changed, 40 insertions, 20 deletions
diff --git a/core/templates/layout.user.php b/core/templates/layout.user.php index 5008392d2a3..690c3ed2e14 100644 --- a/core/templates/layout.user.php +++ b/core/templates/layout.user.php @@ -46,8 +46,14 @@ <li data-id="<?php p($entry['id']); ?>" class="hidden"> <a href="<?php print_unescaped($entry['href']); ?>" <?php if ($entry['active']): ?> class="active"<?php endif; ?>> - <img src="<?php print_unescaped($entry['icon'] . '?v=' . $_['versionHash']); ?>" - class="app-icon" alt="<?php p($entry['name']); ?>" /> + <?php if ($_['themingInvertMenu']) { ?> + <svg width="20" height="20" viewBox="0 0 20 20"> + <defs><filter id="invert-<?php p($entry['id']); ?>"><feColorMatrix in="SourceGraphic" type="matrix" values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0" /></filter></defs> + <image x="0" y="0" width="20" height="20" preserveAspectRatio="xMinYMin meet" filter="url(#invert-<?php p($entry['id']); ?>)" xlink:href="<?php print_unescaped($entry['icon'] . '?v=' . $_['versionHash']); ?>" class="app-icon" /></svg> + <?php } else { ?> + <img src="<?php print_unescaped($entry['icon'] . '?v=' . $_['versionHash']); ?>" + class="app-icon" alt="<?php p($entry['name']); ?>" /> + <?php } ?> <div class="icon-loading-small-dark" style="display:none;"></div> </a> diff --git a/lib/private/TemplateLayout.php b/lib/private/TemplateLayout.php index 264c10f5f1b..a8c4bbb0d16 100644 --- a/lib/private/TemplateLayout.php +++ b/lib/private/TemplateLayout.php @@ -108,6 +108,15 @@ class TemplateLayout extends \OC_Template { $this->assign('userAvatarVersion', $this->config->getUserValue(\OC_User::getUser(), 'avatar', 'version', 0)); } + // check if app menu icons should be inverted + try { + /** @var \OCA\Theming\Util $util */ + $util = \OC::$server->query(\OCA\Theming\Util::class); + $this->assign('themingInvertMenu', $util->invertTextColor(\OC::$server->getThemingDefaults()->getColorPrimary())); + } catch (\OCP\AppFramework\QueryException $e) { + $this->assign('themingInvertMenu', false); + } + } else if ($renderAs == 'error') { parent::__construct('core', 'layout.guest', '', false); $this->assign('bodyid', 'body-login'); diff --git a/settings/js/apps.js b/settings/js/apps.js index 0a6e86ed701..7ec7309db13 100644 --- a/settings/js/apps.js +++ b/settings/js/apps.js @@ -652,24 +652,29 @@ OC.Settings.Apps = OC.Settings.Apps || { } if ($('#appmenu').children('li[data-id="' + entry.id + '"]').length === 0) { - var li = $('<li></li>'); - li.attr('data-id', entry.id); - var img = '<img src="' + entry.icon + '" class="app-icon">'; - var a = $('<a></a>').attr('href', entry.href); - var filename = $('<span></span>'); - var loading = $('<div class="icon-loading-dark"></div>').css('display', 'none'); - filename.text(entry.name); - a.prepend(filename); - a.prepend(loading); - a.prepend(img); - li.append(a); - $('#appmenu li[data-id='+ previousEntry.id+']').after(li); - if(addedApps[entry.id]) { - li.animate({opacity: 0.5}) - .animate({opacity: 1}) - .animate({opacity: 0.5}) - .animate({opacity: 1}); - } + var li = $('<li></li>'); + li.attr('data-id', entry.id); + var img = '<img src="' + entry.icon + '" class="app-icon">'; + if (OCA.Theming && OCA.Theming.inverted) { + img = '<svg width="20" height="20" viewBox="0 0 20 20">'; + img += '<defs><filter id="invert"><feColorMatrix in="SourceGraphic" type="matrix" values="-1 0 0 0 1 0 -1 0 0 1 0 0 -1 0 1 0 0 0 1 0" /></filter></defs>'; + img += '<image x="0" y="0" width="20" height="20" preserveAspectRatio="xMinYMin meet" filter="url(#invert)" xlink:href="' + entry.icon + '" class="app-icon" /></svg>'; + } + var a = $('<a></a>').attr('href', entry.href); + var filename = $('<span></span>'); + var loading = $('<div class="icon-loading-dark"></div>').css('display', 'none'); + filename.text(entry.name); + a.prepend(filename); + a.prepend(loading); + a.prepend(img); + li.append(a); + $('#appmenu li[data-id='+ previousEntry.id+']').after(li); + if(addedApps[entry.id]) { + li.animate({opacity: 0.5}) + .animate({opacity: 1}) + .animate({opacity: 0.5}) + .animate({opacity: 1}); + } } previousEntry = entry; } |