add target _blank

This commit is contained in:
Simon Vieille 2020-09-12 16:32:10 +02:00
parent 918c55da3e
commit b6c6fc2486
Signed by untrusted user: deblan
GPG Key ID: 03383D15A1D31745
5 changed files with 18 additions and 12 deletions

View File

@ -54,7 +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');
$targetBlankApps = (array) json_decode($this->config->getAppValue('side_menu', 'target-blank-apps', '[]'), true);
if ($user) {
$userTopMenuApps = (array) json_decode($this->config->getUserValue($user->getUid(), 'side_menu', 'top-menu-apps', '[]'), true);
@ -63,10 +63,11 @@ class JsController extends Controller
$topMenuApps = $userTopMenuApps;
}
$userTargetBlank = (int) $this->config->getUserValue($user->getUid(), 'side_menu', 'target-blank', '-1');
$userTargetBlankMode = (int) $this->config->getUserValue($user->getUid(), 'side_menu', 'target-blank-mode', '1');
$userTargetBlankApps = (array) json_decode($this->config->getUserValue($user->getUid(), 'side_menu', 'target-blank-apps', '[]'), true);
if ($userTargetBlank !== -1) {
$targetBlank = (bool) $userTargetBlank;
if ($userTargetBlankMode === 2) {
$targetBlankApps = $userTargetBlankApps;
}
}
@ -81,7 +82,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,
'target-blank-apps' => $targetBlankApps,
];
$response = new TemplateResponse('side_menu', 'js/script', $parameters, 'blank');

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" :target="targetBlank ? '_blank' : undefined" v-bind:title="app.name">
<a v-bind:href="app.href" :target="targetBlankApps.indexOf(app.id) !== -1 ? '_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>
@ -87,6 +87,7 @@ export default {
}
this.apps.push({
id: dataId,
href: href,
name: trim(element.querySelector('span').innerHTML),
icon: svg,
@ -120,7 +121,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;
this.targetBlankApps = document.querySelector('#side-menu-container').getAttribute('data-targetblankapps').split(',');
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" :target="targetBlank ? '_blank' : undefined" v-bind:title="app.name">
<a v-bind:href="app.href" :target="targetBlankApps.indexOf(appId) !== -1 ? '_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>
@ -80,7 +80,7 @@ export default {
},
},
mounted() {
this.targetBlank = document.querySelector('#side-menu-container').getAttribute('data-targetblank') == 1;
this.targetBlankApps = document.querySelector('#side-menu-container').getAttribute('data-targetblankapps').split(',');
this.retrieveApps()
this.retrieveActiveApp()

View File

@ -38,6 +38,10 @@ var updateTopMenu = function() {
appShown.push(app)
navigationApps.append(app.outerHTML)
}
if (targetBlankApps.indexOf(dataId) !== -1) {
jQuery(app).children('a').attr('target', '_blank');
}
})
var rightHeaderWidth = jQuery('.header-right').outerWidth()

View File

@ -14,9 +14,9 @@
sideMenuContainer.attr('data-forcelighticon', '1')
<?php endif; ?>
<?php if ($_['target-blank']): ?>
sideMenuContainer.attr('data-targetblank', '1')
<?php endif; ?>
sideMenuContainer.attr('data-targetblankapps', '<?php p(implode(',', $_['target-blank-apps'])) ?>')
var targetBlankApps = <?php echo json_encode($_['target-blank-apps']) ?>;
body.on('side-menu.apps', function(e, apps) {
<?php if ($_['hide-when-no-apps']): ?>