Merge pull request #3054 from HRavalomanana/PHRAS-2608_Prod_Fix_responsive_custom_link

PHRAS-2608 #comment  Fix custom-link of nav-bar on responsive
This commit is contained in:
Nicolas Maillat
2019-05-31 14:24:19 +02:00
committed by GitHub
2 changed files with 216 additions and 192 deletions

View File

@@ -38,13 +38,13 @@ $mainMenuBottomBorder: none !default;
display: inline-block !important; display: inline-block !important;
} }
.show-menu { .show-menu {
display: none;
i { i {
font-size: 26px; font-size: 26px;
vertical-align: middle; vertical-align: middle;
color: $mainMenuLinkActiveColor; color: $mainMenuLinkActiveColor;
} }
img { img {
display: none;
margin-top: 5px; margin-top: 5px;
} }
} }
@@ -63,6 +63,9 @@ $mainMenuBottomBorder: none !default;
#mainLogo { #mainLogo {
margin:0 5px; margin:0 5px;
vertical-align: middle; vertical-align: middle;
@media screen and (max-width: 1064px) {
max-width: 100px;
}
} }
li { li {
display: inline-block; display: inline-block;
@@ -149,8 +152,10 @@ $mainMenuBottomBorder: none !default;
} }
#mainMenu { #mainMenu {
.show-menu { .show-menu {
display: inline-block;
cursor: pointer; cursor: pointer;
img {
display: inline-block;
}
} }
.mobilemenu { .mobilemenu {
display: block; display: block;
@@ -160,7 +165,6 @@ $mainMenuBottomBorder: none !default;
} }
#nav_menu_container, #nav_customlink_container, #nav_account_container { #nav_menu_container, #nav_customlink_container, #nav_account_container {
position: absolute; position: absolute;
top: 35px;
z-index: 1000; z-index: 1000;
.nav_menu { .nav_menu {
z-index: 1000; z-index: 1000;
@@ -209,13 +213,13 @@ $mainMenuBottomBorder: none !default;
} }
} }
#nav_menu_container { #nav_menu_container {
left: 10px; left: 5px;
width: 172px; width: 172px;
.nav_menu { .nav_menu {
top: 9px; top: 9px;
} }
.arrow-up { .arrow-up {
left: 52px; left: 5px;
display: block; display: block;
position: absolute; position: absolute;
} }
@@ -223,7 +227,7 @@ $mainMenuBottomBorder: none !default;
#nav_customlink_container { #nav_customlink_container {
display: none; display: none;
position: relative; position: relative;
left: 10px; left: 4px;
width: auto; width: auto;
.nav-wrapper-box { .nav-wrapper-box {
position: absolute; position: absolute;
@@ -235,19 +239,21 @@ $mainMenuBottomBorder: none !default;
.nav_menu { .nav_menu {
position: relative; position: relative;
li.menu-bar-item { li.menu-bar-item {
width: 100%; /* width: 100%;
left: 0; left: 0;*/
} }
li.menu-bar-item a { li.menu-bar-item a {
> span { > span {
padding: 0; padding: 0;
display: inline-block; display: inline-block;
max-width: 140px;
overflow: hidden;
} }
} }
} }
} }
.arrow-up { .arrow-up {
left: 82px; left: 5px;
display: block; display: block;
position: absolute; position: absolute;
} }
@@ -259,12 +265,13 @@ $mainMenuBottomBorder: none !default;
width: auto; width: auto;
.nav-wrapper-box { .nav-wrapper-box {
position: absolute; position: absolute;
right: 10px; right: -4px;
background: #d8d8d8; background: #d8d8d8;
border-radius: 5px; border-radius: 5px;
padding-right: 10px; padding-right: 10px;
padding-left: 10px; padding-left: 10px;
top: 9px; top: 9px;
width: 200px;
.nav_menu { .nav_menu {
position: relative; position: relative;
li.menu-bar-item { li.menu-bar-item {
@@ -275,12 +282,14 @@ $mainMenuBottomBorder: none !default;
> span { > span {
padding: 0; padding: 0;
display: inline-block; display: inline-block;
max-width: 170px;
overflow: hidden;
} }
} }
} }
} }
.arrow-up { .arrow-up {
right: 23px; right: 6px;
display: block; display: block;
position: absolute; position: absolute;
} }

View File

@@ -1,11 +1,11 @@
<div id="mainMenu" class=""> <div id="mainMenu" class="">
{% set configuration = app['conf'].get(['registry', 'custom-links']) %} {% set configuration = app['conf'].get(['registry', 'custom-links']) %}
<div class="PNB menu-bar" style="overflow:hidden;"> <div class="PNB menu-bar" style="overflow:hidden;">
<ol> <ol>
<li> <li>
<span class="title"> <span class="title">
{% if app['conf'].get(['registry', 'general', 'personalize-logo-choice', 'logoChoice']) == 'personalize' and {% if app['conf'].get(['registry', 'general', 'personalize-logo-choice', 'logoChoice']) == 'personalize' and
app['conf'].get(['registry', 'general', 'personalize-logo-choice', 'personalizeFile']) == 'true' %} app['conf'].get(['registry', 'general', 'personalize-logo-choice', 'personalizeFile']) == 'true' %}
{% set extension = app['conf'].get(['registry', 'general', 'personalize-logo-choice', 'fileType']) %} {% set extension = app['conf'].get(['registry', 'general', 'personalize-logo-choice', 'fileType']) %}
{% set personalise_path = '/custom/minilogos/personalize_logo.' ~ extension %} {% set personalise_path = '/custom/minilogos/personalize_logo.' ~ extension %}
@@ -17,127 +17,194 @@
{% endif %} {% endif %}
</span> </span>
</li> </li>
<li class="show-menu" id="toggle-menu-main"> <li class="show-menu" id="toggle-menu-main">
<img src="/assets/common/images/icons/menu-burger.png"/> <img src="/assets/common/images/icons/menu-burger.png"/>
</li>
<div id="nav_menu_container" class="desktopmenu">
<div class="arrow-up"></div>
<ol class="nav_menu">
{% if module is defined and module != "lightbox" and app.getAuthenticator().isAuthenticated() %}
<li class="menu-bar-item">
<a target="_blank" href="{{ path('prod') }}">
<img src="/assets/common/images/icons/menu-prod.png" class="mobilemenu"/>
<span class="{% if module is defined and module == "prod" %}selected{% endif %}">
{{ 'admin::monitor: production' | trans }}
</span>
</a>
</li>
{% if app['browser'].isNewGeneration and app['conf'].get(['registry', 'modules', 'thesaurus']) == true and app.getAclForUser(app.getAuthenticatedUser()).has_access_to_module('thesaurus') %} <div id="nav_menu_container" class="desktopmenu">
<li class="menu-bar-item"> <div class="arrow-up"></div>
<a target="_blank" href="{{ path('thesaurus') }}"> <ol class="nav_menu">
<img src="/assets/common/images/icons/menu-thesaurus.png" class="mobilemenu"/> {% if module is defined and module != "lightbox" and app.getAuthenticator().isAuthenticated() %}
<span class="{% if module is defined and module == "thesaurus" %}selected{% endif %}"> <li class="menu-bar-item">
{{ 'admin::monitor: module thesaurus' | trans }} <a target="_blank" href="{{ path('prod') }}">
<img src="/assets/common/images/icons/menu-prod.png" class="mobilemenu"/>
<span class="{% if module is defined and module == "prod" %}selected{% endif %}">
{{ 'admin::monitor: production' | trans }}
</span>
</a>
</li>
{% if app['browser'].isNewGeneration and app['conf'].get(['registry', 'modules', 'thesaurus']) == true and app.getAclForUser(app.getAuthenticatedUser()).has_access_to_module('thesaurus') %}
<li class="menu-bar-item">
<a target="_blank" href="{{ path('thesaurus') }}">
<img src="/assets/common/images/icons/menu-thesaurus.png" class="mobilemenu"/>
<span class="{% if module is defined and module == "thesaurus" %}selected{% endif %}">
{{ 'admin::monitor: module thesaurus' | trans }}
</span>
</a>
</li>
{% endif %}
{# MODULE #}
{% if app.getAclForUser(app.getAuthenticatedUser()).has_access_to_module('admin') %}
<li class="menu-bar-item">
<a target="_blank" href="{{ path('admin') }}">
<img src="/assets/common/images/icons/menu-admin.png" class="mobilemenu"/>
<span class="{% if module is defined and module == "admin" %}selected{% endif %}">
{{ 'admin::monitor: module admin' | trans }}
</span>
</a>
</li>
{% endif %}
{# MODULE #}
{% if app.getAclForUser(app.getAuthenticatedUser()).has_access_to_module('report') %}
<li class="menu-bar-item">
<a target="_blank" href="{{ path('report_dashboard') }}">
<img src="/assets/common/images/icons/menu-report.png" class="mobilemenu"/>
<span class="{% if module is defined and module == "report" %}selected{% endif %}">
{{ 'admin::monitor: module report' | trans }}
</span>
</a>
</li>
{% endif %}
{# MODULE #}
<li class="menu-bar-item">
<a id="validation_link" target="_blank" href="{{ path('lightbox') }}">
<img src="/assets/common/images/icons/menu-lightbox.png" class="mobilemenu"/>
<span>
{{ 'admin::monitor: module validation' | trans }}
</span> </span>
</a> </a>
</li> </li>
{% endif %}
{# MODULE #}
{% if module is defined and module == "prod" %}
{% if app.getAclForUser(app.getAuthenticatedUser()).has_access_to_module('upload') %}
<li class="menu-bar-item">
{% set link = path('upload_html5_form') %}
{# MODULE #} {% if not app['browser'].supportFileAPI() %}
{% if app.getAclForUser(app.getAuthenticatedUser()).has_access_to_module('admin') %} {% set link = path('upload_flash_form') %}
<li class="menu-bar-item"> {% endif %}
<a target="_blank" href="{{ path('admin') }}">
<img src="/assets/common/images/icons/menu-admin.png" class="mobilemenu"/>
<span class="{% if module is defined and module == "admin" %}selected{% endif %}">
{{ 'admin::monitor: module admin' | trans }}
</span>
</a>
</li>
{% endif %}
{# MODULE #} <a href="{{ link }}" class="uploader-open-action"
{% if app.getAclForUser(app.getAuthenticatedUser()).has_access_to_module('report') %} title="{{ 'Upload' | trans }}">
<li class="menu-bar-item"> <img src="/assets/common/images/icons/menu-upload.png" class="mobilemenu"/>
<a target="_blank" href="{{ path('report_dashboard') }}"> <span>
<img src="/assets/common/images/icons/menu-report.png" class="mobilemenu"/> {{ 'admin::monitor: module upload' | trans }}
<span class="{% if module is defined and module == "report" %}selected{% endif %}"> </span>
{{ 'admin::monitor: module report' | trans }} </a>
</span> </li>
</a> {% endif %}
</li> {% endif %}
{% endif %}
{# MODULE #} {# MODULE #}
<li class="menu-bar-item"> {% if module == "prod" %}
<a id="validation_link" target="_blank" href="{{ path('lightbox') }}"> <li class="menu-bar-item">
<img src="/assets/common/images/icons/menu-lightbox.png" class="mobilemenu"/> <a href="#" class="state-navigation" data-state="publication">
<span> <img src="/assets/common/images/icons/menu-publication.png" class="mobilemenu"/>
{{ 'admin::monitor: module validation' | trans }} <span>
</span> {{ 'Publications' | trans }}
</a> </span>
</li> </a>
</li>
{% endif %}
{# MODULE #} {% if module is defined and module == "prod" and app.getAclForUser(app.getAuthenticatedUser()).has_right(constant('\\ACL::ORDER_MASTER')) %}
{% if module is defined and module == "prod" %} <li class="menu-bar-item">
{% if app.getAclForUser(app.getAuthenticatedUser()).has_access_to_module('upload') %} <a href="#" class="order-open-action" title="{{ 'Orders manager' | trans }}">
<li class="menu-bar-item">
{% set link = path('upload_html5_form') %}
{% if not app['browser'].supportFileAPI() %}
{% set link = path('upload_flash_form') %}
{% endif %}
<a href="{{ link }}" class="uploader-open-action" title="{{ 'Upload' | trans }}">
<img src="/assets/common/images/icons/menu-upload.png" class="mobilemenu"/>
<span>
{{ 'admin::monitor: module upload' | trans }}
</span>
</a>
</li>
{% endif %}
{% endif %}
{# MODULE #}
{% if module == "prod" %}
<li class="menu-bar-item">
<a href="#" class="state-navigation" data-state="publication">
<img src="/assets/common/images/icons/menu-publication.png" class="mobilemenu"/>
<span> <span>
{{ 'Publications' | trans }} {{ 'Commandes' | trans }}
</span> </span>
</a> </a>
</li> </li>
{% endif %} {% endif %}
{% if module is defined and module == "prod" and app.getAclForUser(app.getAuthenticatedUser()).has_right(constant('\\ACL::ORDER_MASTER')) %} {% endif %}
<li class="menu-bar-item"> </ol>
<a href="#" class="order-open-action" title="{{ 'Orders manager' | trans }}"> </div>
<span> </li>
{{ 'Commandes' | trans }} <li class="show-menu" id="toggle-menu-link">
</span> <img src="/assets/common/images/icons/menu-web-site.png"/>
</a> <div id="nav_customlink_container" class="mobile-link">
</li> <div class="arrow-up"></div>
{% endif %} <div class="nav-wrapper-box">
<ol class="nav_menu"></ol>
</div>
</div>
</li>
<li class="show-menu" id="toggle-menu-account" style="float: right;margin-right: 16px;">
<img src="/assets/common/images/icons/menu-user.png"/>
<div class="PNB right mobilemenu" id="nav_account_container">
<div class="arrow-up"></div>
<div class="nav-wrapper-box">
<ol class="nav_menu">
{% endif %} <li class="menu-bar-item">
</ol> {% if app.getAuthenticator().isAuthenticated() %}
</div> {% if app.getAuthenticatedUser().isGuest %}
<li class="show-menu" id="toggle-menu-link"> <img src="/assets/common/images/icons/menu-name-user.png"/>
<img src="/assets/common/images/icons/menu-web-site.png"/> <span>
</li> {{ 'Guest' | trans }}
<li class="show-menu" id="toggle-menu-account" style="float: right;margin-right: 16px;"> </span>
<img src="/assets/common/images/icons/menu-user.png"/> {% else %}
</li> <a target="_blank" href="{{ path('account') }}"
<div id="nav_customlink_container"> title="{{ 'login:: Mon compte' | trans }}">
<div class="arrow-up"></div> <img src="/assets/common/images/icons/menu-name-user.png"/>
<div class="nav-wrapper-box"> <span>
<ol class="nav_menu"></ol> {{ app.getAuthenticatedUser().getDisplayName() }}
</div> </span>
</div> </a>
</ol> {% endif %}
{% endif %}
</li>
<li class="menu-bar-item">
{% if app.getAuthenticator().isAuthenticated() %}
<a href="{{ path('logout', { 'redirect' : '..' ~ app['request'].getPathInfo() }) }}"
target="_self">
<img src="/assets/common/images/icons/menu-logout.png"/>
<span>
{{ 'phraseanet:: deconnection' | trans }}
</span>
</a>
{% endif %}
</li>
<li class="menu-bar-item">
<a target="_blank" href="https://docs.phraseanet.com/4.0/">
<img src="/assets/common/images/icons/menu-help.png"/>
<span>
{{ 'phraseanet:: aide' | trans }}
<span style="display:inline-block;cursor:pointer;padding:0;border:none;padding-right:4px;padding-left:4px;"
id="help-trigger"></span>
</span>
</a>
</li>
{% if module is defined and module == "prod" %}
<li class="menu-bar-item">
<a href="#">
<img src="/assets/common/images/icons/menu-help.png"/>
<span style="" class="shortcuts-trigger">
{{ 'phraseanet:: raccourcis clavier' | trans }}
</span>
</a>
</li>
{% endif %}
<li class="menu-bar-item">
<a href="#">
<img src="/assets/common/images/icons/menu-help.png"/>
<span style="" class="infoDialog"
infos="<div><span style='font-size:18px;'>PHRASEANET</span> {{ app['phraseanet.version'].getName() }} (V{{ app['phraseanet.version'].getNumber() }})</div><div></div><br/><div><a href='http://www.gnu.org/licenses/gpl.html' target='_blank'><img src='http://www.gnu.org/graphics/gplv3-88x31.png' style='vertical-align:middle;'/><span>License GNU GPL v3</span></a></div><br/><div><a href='http://www.phraseanet.com/' target='_blank'> &copy; Copyright Alchemy 2005-{{ "now"|date("Y") }}</a><p style='margin-top: 10px' ><a href='../../gitlog.txt' target='_blank'>gitlog</a></p></div>">{{ 'phraseanet:: a propos' | trans }}</span>
</a>
</li>
</ol>
</div>
</div>
</li>
</ol>
</div> </div>
@@ -232,73 +299,9 @@
</li> </li>
{% endif %} {% endif %}
</div> </div>
<div class="PNB right mobilemenu" id="nav_account_container">
<div class="arrow-up"></div>
<div class="nav-wrapper-box">
<ol class="nav_menu">
<li class="menu-bar-item">
{% if app.getAuthenticator().isAuthenticated() %}
{% if app.getAuthenticatedUser().isGuest %}
<img src="/assets/common/images/icons/menu-name-user.png"/>
<span>
{{ 'Guest' | trans }}
</span>
{% else %}
<a target="_blank" href="{{ path('account') }}" title="{{ 'login:: Mon compte' | trans }}">
<img src="/assets/common/images/icons/menu-name-user.png"/>
<span>
{{ app.getAuthenticatedUser().getDisplayName() }}
</span>
</a>
{% endif %}
{% endif %}
</li>
<li class="menu-bar-item">
{% if app.getAuthenticator().isAuthenticated() %}
<a href="{{ path('logout', { 'redirect' : '..' ~ app['request'].getPathInfo() }) }}"
target="_self">
<img src="/assets/common/images/icons/menu-logout.png"/>
<span>
{{ 'phraseanet:: deconnection' | trans }}
</span>
</a>
{% endif %}
</li>
<li class="menu-bar-item">
<a target="_blank" href="https://docs.phraseanet.com/4.0/">
<img src="/assets/common/images/icons/menu-help.png"/>
<span>
{{ 'phraseanet:: aide' | trans }}
<span style="display:inline-block;cursor:pointer;padding:0;border:none;padding-right:4px;padding-left:4px;"
id="help-trigger"></span>
</span>
</a>
</li>
{% if module is defined and module == "prod" %}
<li class="menu-bar-item">
<a href="#">
<img src="/assets/common/images/icons/menu-help.png"/>
<span style="" class="shortcuts-trigger">
{{ 'phraseanet:: raccourcis clavier' | trans }}
</span>
</a>
</li>
{% endif %}
<li class="menu-bar-item">
<a href="#">
<img src="/assets/common/images/icons/menu-help.png"/>
<span style="" class="infoDialog"
infos="<div><span style='font-size:18px;'>PHRASEANET</span> {{ app['phraseanet.version'].getName() }} (V{{ app['phraseanet.version'].getNumber() }})</div><div></div><br/><div><a href='http://www.gnu.org/licenses/gpl.html' target='_blank'><img src='http://www.gnu.org/graphics/gplv3-88x31.png' style='vertical-align:middle;'/><span>License GNU GPL v3</span></a></div><br/><div><a href='http://www.phraseanet.com/' target='_blank'> &copy; Copyright Alchemy 2005-{{ "now"|date("Y") }}</a><p style='margin-top: 10px' ><a href='../../gitlog.txt' target='_blank'>gitlog</a></p></div>">{{ 'phraseanet:: a propos' | trans }}</span>
</a>
</li>
</ol>
</div>
</div>
</div> </div>
{% if app.getAuthenticator().isAuthenticated() and module == "prod" %} {% if app.getAuthenticator().isAuthenticated() and module == "prod" %}
<div style="display:none;z-index:30000;" id="notification_box"> <div style="display:none;z-index:30000;" id="notification_box">
{% set notifications = app['events-manager'].get_notifications %} {% set notifications = app['events-manager'].get_notifications %}
{% include 'prod/notifications.html.twig' %} {% include 'prod/notifications.html.twig' %}
@@ -312,9 +315,21 @@
//seperate array based on location of link //seperate array based on location of link
var seperatedLinksByLocation = _.groupBy(configurationSettingLinks, "linkLocation"); var seperatedLinksByLocation = _.groupBy(configurationSettingLinks, "linkLocation");
for (key in seperatedLinksByLocation) { for (key in seperatedLinksByLocation) {
if (key === 'navigation-bar') { if (key === 'navigation-bar') {
var sortedCustomLinks = _.sortBy(seperatedLinksByLocation[key], 'linkOrder'); var sortedCustomLinks = _.sortBy(seperatedLinksByLocation[key], 'linkOrder');
/*show navigation-bar if there is some result*/
console.log(sortedCustomLinks);
$(window).resize(function () {
if (($(window).width() <= 1064) && (sortedCustomLinks != undefined)) {
$('#toggle-menu-link img').show();
} else {
$('#toggle-menu-link img').hide();
}
});
_.each(sortedCustomLinks, function (linksData) { _.each(sortedCustomLinks, function (linksData) {
if (linksData.linkLanguage == 'all' || linksData.linkLanguage === '{{ app['locale'] }}') { if (linksData.linkLanguage == 'all' || linksData.linkLanguage === '{{ app['locale'] }}') {
@@ -353,7 +368,7 @@
} }
} }
$('#toggle-menu-main').on('click', function (event) { $('#toggle-menu-main > img').on('click', function (event) {
$('#nav_menu_container').toggle(); $('#nav_menu_container').toggle();
if ($('#nav_customlink_container').is(":visible")) { if ($('#nav_customlink_container').is(":visible")) {
$('#nav_customlink_container').hide(); $('#nav_customlink_container').hide();
@@ -363,7 +378,7 @@
} }
}); });
$('#toggle-menu-link').on('click', function (event) { $('#toggle-menu-link > img').on('click', function (event) {
$('#nav_customlink_container').toggle(); $('#nav_customlink_container').toggle();
if ($('#nav_menu_container').is(":visible")) { if ($('#nav_menu_container').is(":visible")) {
$('#nav_menu_container').hide(); $('#nav_menu_container').hide();
@@ -373,7 +388,7 @@
} }
}); });
$('#toggle-menu-account').on('click', function (event) { $('#toggle-menu-account > img').on('click', function (event) {
$('#nav_account_container').toggle(); $('#nav_account_container').toggle();
if ($('#nav_menu_container').is(":visible")) { if ($('#nav_menu_container').is(":visible")) {
$('#nav_menu_container').hide(); $('#nav_menu_container').hide();