Merge branch 'feature/issue29-tab' into develop

This commit is contained in:
Simon Vieille 2020-09-11 13:25:09 +02:00
commit 96fb33b80b
12 changed files with 76 additions and 2 deletions

View file

@ -211,6 +211,10 @@
display: none;
}
.side-menu-always-displayed #side-menu .side-menu-header {
height: 49px;
}
.side-menu-always-displayed #side-menu.open,
.side-menu-always-displayed #side-menu.open .side-menu-apps-list,
.side-menu-always-displayed #side-menu.open .side-menu-header,

View file

@ -54,6 +54,7 @@ class JsController extends Controller
{
$user = OC::$server[IUserSession::class]->getUser();
$topMenuApps = (array) json_decode($this->config->getAppValue('side_menu', 'top-menu-apps', '[]'), true);
$targetBlank = (bool) $this->config->getAppValue('side_menu', 'target-blank', '0');
if ($user) {
$userTopMenuApps = (array) json_decode($this->config->getUserValue($user->getUid(), 'side_menu', 'top-menu-apps', '[]'), true);
@ -61,8 +62,15 @@ class JsController extends Controller
if (!empty($userTopMenuApps)) {
$topMenuApps = $userTopMenuApps;
}
$userTargetBlank = (int) $this->config->getUserValue($user->getUid(), 'side_menu', 'target-blank', '-1');
if ($userTargetBlank !== -1) {
$targetBlank = (bool) $userTargetBlank;
}
}
$parameters = [
'opener-position' => $this->config->getAppValue('side_menu', 'opener-position', 'before'),
'opener-hover' => (bool) $this->config->getAppValue('side_menu', 'opener-hover', '0'),
@ -73,6 +81,7 @@ class JsController extends Controller
'always-displayed' => (bool) $this->config->getAppValue('side_menu', 'always-displayed', '0'),
'big-menu' => (bool) $this->config->getAppValue('side_menu', 'big-menu', '0'),
'top-menu-apps' => $topMenuApps,
'target-blank' => $targetBlank,
];
$response = new TemplateResponse('side_menu', 'js/script', $parameters, 'blank');

View file

@ -65,6 +65,14 @@ class PersonalSettingController extends Controller
}
}
if ('target-blank' === $name) {
$doSave = true;
if (!in_array($value, ['-1', '0', '1'])) {
$value = '-1';
}
}
if ('top-menu-apps' === $name) {
$doSave = true;
$data = json_decode($value, true);

View file

@ -75,6 +75,7 @@ class Admin implements ISettings
'cache' => $this->config->getAppValue('side_menu', 'cache', '0'),
'opener' => $this->config->getAppValue('side_menu', 'opener', 'side-menu-opener'),
'always-displayed' => $this->config->getAppValue('side_menu', 'always-displayed', '0'),
'target-blank' => $this->config->getAppValue('side_menu', 'target-blank', '0'),
'big-menu' => $this->config->getAppValue('side_menu', 'big-menu', '0'),
'display-logo' => $this->config->getAppValue('side_menu', 'display-logo', '1'),
'opener-position' => $this->config->getAppValue('side_menu', 'opener-position', 'before'),

View file

@ -72,6 +72,7 @@ class Personal implements ISettings
$parameters = [
'enabled' => $this->config->getUserValue($user->getUid(), 'side_menu', 'enabled', '1'),
'top-menu-apps' => (array) json_decode($this->config->getUserValue($user->getUid(), 'side_menu', 'top-menu-apps', '[]'), true),
'target-blank' => $this->config->getUserValue($user->getUid(), 'side_menu', 'target-blank', '-1'),
'apps' => $this->appRepository->getVisibleApps(),
];

View file

@ -26,7 +26,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<ul class="side-menu-apps-list">
<li v-for="app in apps" v-bind:class="{'side-menu-app': true, 'active': app.active}">
<a v-bind:href="app.href" v-bind:title="app.name">
<a v-bind:href="app.href" :target="targetBlank ? '_blank' : undefined" v-bind:title="app.name">
<span class="side-menu-app-icon" v-html="app.icon"></span>
<span class="side-menu-app-text" v-html="app.name"></span>
</a>
@ -45,6 +45,7 @@ export default {
apps: [],
logo: null,
forceLightIcon: false,
targetBlank: false,
}
},
methods: {
@ -119,6 +120,7 @@ export default {
this.retrieveApps()
this.retrieveLogo()
this.forceLightIcon = document.querySelector('#side-menu-container').getAttribute('data-forcelighticon') == 1;
this.targetBlank = document.querySelector('#side-menu-container').getAttribute('data-targetblank') == 1;
const menu = document.querySelector('#appmenu')

View file

@ -28,7 +28,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<ul class="side-menu-apps-list">
<li v-bind:class="{'side-menu-app': true, 'active': activeApp === appId}" v-for="(app, appId) in category.apps">
<a v-bind:href="app.href" v-bind:title="app.name">
<a v-bind:href="app.href" :target="targetBlank ? '_blank' : undefined" v-bind:title="app.name">
<img class="side-menu-app-icon" v-bind:src="app.icon"></span>
<span class="side-menu-app-text" v-html="app.name"></span>
</a>
@ -50,6 +50,7 @@ export default {
return {
items: [],
activeApp: null,
targetBlank: false,
}
},
methods: {
@ -79,6 +80,8 @@ export default {
},
},
mounted() {
this.targetBlank = document.querySelector('#side-menu-container').getAttribute('data-targetblank') == 1;
this.retrieveApps()
this.retrieveActiveApp()
}

View file

@ -52,3 +52,5 @@
"Not compatible with touch screens.": "Nicht kompatibel mit Touchscreens."
"Big menu": "Große Speisekarte"
"Live preview": "Live Vorschau"
"Open apps in new tab": "Öffnen Sie Apps in einem neuen Tab"
"Use the global setting": "Verwenden Sie die globale Einstellung"

View file

@ -52,3 +52,5 @@
"Not compatible with touch screens.": "Incompatible avec les écrans tactiles."
"Big menu": "Menu large"
"Live preview": "Aperçu en direct"
"Open apps in new tab": "Ouvrir les applications dans un nouvel onglet"
"Use the global setting": "Utiliser la configuration globale"

View file

@ -14,6 +14,10 @@
sideMenuContainer.attr('data-forcelighticon', '1')
<?php endif; ?>
<?php if ($_['target-blank']): ?>
sideMenuContainer.attr('data-targetblank', '1')
<?php endif; ?>
body.on('side-menu.apps', function(e, apps) {
<?php if ($_['hide-when-no-apps']): ?>
sideMenu = jQuery('#side-menu')

View file

@ -366,6 +366,22 @@ $choicesSizes = [
</select>
</div>
<div>
<label for="side-menu-target-blank">
<?php p($l->t('Open apps in new tab')); ?>
</label>
</div>
<div>
<select id="side-menu-loader-enabled" name="target-blank" class="side-menu-setting">
<?php foreach ($choicesYesNo as $label => $value): ?>
<option value="<?php echo $value ?>" <?php if ($value === $_['target-blank']): ?>selected<?php endif; ?>>
<?php echo $l->t($label); ?>
</option>
<?php endforeach; ?>
</select>
</div>
<div>
<label for="side-menu-loader-enabled">
<?php p($l->t('Loader enabled')); ?>

View file

@ -52,6 +52,28 @@ $choicesYesNo = [
<?php endforeach; ?>
</select>
</div>
<div>
<label for="side-menu-target-blank">
<?php p($l->t('Open apps in new tab')); ?>
</label>
</div>
<div>
<?php $choices = [
'Use global setting' => '-1',
'No' => '0',
'Yes' => '1',
]; ?>
<select id="side-menu-loader-enabled" name="target-blank" class="side-menu-setting" data-personal>
<?php foreach ($choices as $label => $value): ?>
<option value="<?php echo $value ?>" <?php if ($value === $_['target-blank']): ?>selected<?php endif; ?>>
<?php echo $l->t($label); ?>
</option>
<?php endforeach; ?>
</select>
</div>
</div>
<div class="section">