[REF] *: BS4, review the 'nav' and 'navbar' components

Now the nav structure is more declarative: the 'nav-item' and 'nav-link'
classes have to be put on related nav item and links. Also, the 'active'
class has to be put on links instead of items.

Same as for the navbar component:
- The navbar structure was simplified and meant to be more declarative.
- The navbar colors are also now handled by a different set of classes.

The 'nav-stacked' class was removed and replaced by flex utilities.

The set of classes for colors and nav styles also changed.
This commit is contained in:
qsm-odoo
2018-07-27 12:36:54 +02:00
parent de214e3742
commit 09f40036b9
34 changed files with 345 additions and 337 deletions
@@ -24,12 +24,12 @@
<ul class="nav o_activity_log" role="menu">
<t t-foreach="_.keys(records)" t-as="key">
<t t-set="logs" t-value="records[key]" />
<li role="menuitem" class="o_activity_label">
<li role="menuitem" class="nav-item o_activity_label">
<strong t-attf-class="o_activity_color_#{key}">
<t t-esc="selection[key]" /> (<t t-esc="logs.length"/>)
</strong>
</li>
<li role="menuitem" t-foreach="logs" t-as="log" t-att-data-activity-id="log.id" class="o_schedule_activity">
<li t-foreach="logs" t-as="log" t-att-data-activity-id="log.id" class="nav-item o_schedule_activity" role="menuitem">
<div class="o_activity_title pull-left">
<span t-attf-class="fa #{log.icon} fa-fw" role="img" aria-label="Log" title="Log"/>
<strong>
+14 -13
View File
@@ -3,10 +3,10 @@
/// rules.
///
// Resize and vertically align navbar’s items relative to $navbar-height
@mixin o-w-fill-navbar($ratio: 0.8) {
height: round($navbar-height * $ratio);
margin-top: round($navbar-height * (1 - $ratio) / 2);
// Resize and vertically align navbar’s items relative to navbar
@mixin o-w-fill-navbar($ratio: 1) {
height: round($nav-link-height * $ratio * 100) / 100;
margin-top: round($nav-link-height * (1 - $ratio) / 2 * 100) / 100;
}
// Frontend general
@@ -26,20 +26,21 @@
}
header {
a.navbar-brand.logo {
padding: 0 15px;
.navbar-brand.logo {
padding-top: 0;
padding-bottom: 0;
img {
@include o-w-fill-navbar;
}
}
}
.navbar.navbar-static-top {
.navbar {
margin-bottom: 0;
ul.nav > li {
&.divider {
@include o-w-fill-navbar;
border-right: 1px solid $navbar-default-link-disabled-color;
border-right: 1px solid $nav-divider-color;
@include media-breakpoint-down(sm) {
display: none;
}
@@ -55,7 +56,7 @@ header {
}
}
}
ul.nav-stacked > li > a {
ul.flex-column > li > a {
padding: 2px 15px;
}
@@ -284,7 +285,7 @@ img.o_we_custom_image {
margin: 0;
@include media-breakpoint-up(md) {
padding: $navbar-padding-vertical $navbar-padding-horizontal 0 0;
padding: $navbar-padding-y $navbar-padding-x 0 0;
}
}
@@ -293,7 +294,7 @@ img.o_we_custom_image {
margin-bottom: 8px;
.navbar-brand {
padding: $navbar-padding-vertical $navbar-padding-horizontal 0 0;
padding: $navbar-padding-y $navbar-padding-x 0 0;
}
.navbar-header .dropdown-menu {
@@ -305,7 +306,7 @@ img.o_we_custom_image {
margin-right: 0;
margin-bottom: 0;
background-color: $table-bg-active;
padding: 6px 10px $navbar-padding-vertical;
padding: 6px 10px $navbar-padding-y;
border-width: 1px 1px 0 1px;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
@@ -401,7 +402,7 @@ img.o_we_custom_image {
position: relative;
width: 100%;
border-radius: 5px;
background-color: $navbar-default-bg;
background-color: $light;
}
.o_portal_contact_img {
width: 3.7em;
+22 -29
View File
@@ -24,27 +24,20 @@
<div id="wrapwrap" t-att-class="pageName or ''">
<header>
<div class="navbar navbar-default navbar-static-top">
<nav class="navbar navbar-expand-md navbar-light bg-light">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-top-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="/" class="navbar-brand logo">
<span t-field="res_company.logo" t-options="{'widget': 'image'}" t-att-alt="'Logo of %s' % res_company.name" t-att-title="res_company.name"/>
</a>
</div>
<div class="collapse navbar-collapse navbar-top-collapse">
<!-- Note: pull-right instead of navbar-right for two reasons: -->
<!-- 1) We want menu to open to the right by default (except cases handled in JS) -->
<!-- 2) navbar-right combined will navbar-static-top misaligns contained elements -->
<ul class="nav navbar-nav pull-right" id="top_menu">
<li class="divider" t-ignore="true" t-if="not user_id._is_public()"/>
<li class="dropdown" t-ignore="true" t-if="not user_id._is_public()">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<a href="/" class="navbar-brand logo">
<span t-field="res_company.logo" t-options="{'widget': 'image'}" t-att-alt="'Logo of %s' % res_company.name" t-att-title="res_company.name"/>
</a>
<button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#top_menu_collapse">
<span class="navbar-toggler-icon"/>
</button>
<div class="collapse navbar-collapse" id="top_menu_collapse">
<!-- FIXME We want menu to open to the right by default (except cases handled in JS) -->
<ul class="nav navbar-nav ml-auto" id="top_menu">
<li class="nav-item divider" t-ignore="true" t-if="not user_id._is_public()"/>
<li class="nav-item dropdown" t-ignore="true" t-if="not user_id._is_public()">
<a href="#" class="nav-link dropdown-toggle" data-toggle="dropdown">
<b>
<span t-esc="user_id.name[:23] + '...' if user_id.name and len(user_id.name) &gt; 25 else user_id.name"/>
</b>
@@ -56,7 +49,7 @@
</ul>
</div>
</div>
</div>
</nav>
</header>
<main>
<t t-raw="0"/>
@@ -118,9 +111,9 @@
<template id="portal_show_sign_in" inherit_id="portal.frontend_layout" name="Show Sign In">
<xpath expr="//ul[@id='top_menu']" position="inside">
<li class="divider" groups="base.group_public"/>
<li groups="base.group_public">
<a t-attf-href="/web/login">
<li class="nav-item divider" groups="base.group_public"/>
<li groups="base.group_public" class="nav-item">
<a t-attf-href="/web/login" class="nav-link">
<b>Sign in</b>
</a>
</li>
@@ -258,16 +251,16 @@
<template id="portal_archive_groups" name="Portal Archive Groups">
<h3 class="page-header">Archives</h3>
<ul class="nav nav-pills nav-stacked">
<ul class="nav nav-pills flex-column">
<t t-foreach="archive_groups" t-as="group">
<t t-if="group['date_begin'] == date">
<li class="active">
<a t-att-href="default_url" t-ignore="True"><t t-esc="group['name']"/><span class="pull-right badge" t-esc="group['item_count']"/></a>
<li class="nav-item">
<a t-att-href="default_url" class="nav-link active" t-ignore="True"><t t-esc="group['name']"/><span class="pull-right badge" t-esc="group['item_count']"/></a>
</li>
</t>
<t t-if="group['date_begin'] != date">
<li>
<a t-ignore="True" t-attf-href="#{default_url}?date_begin=#{group['date_begin']}&amp;date_end=#{group['date_end']}"><t t-esc="group['name']"/><span class="pull-right badge" t-esc="group['item_count']"/></a>
<li class="nav-item">
<a t-ignore="True" t-attf-href="#{default_url}?date_begin=#{group['date_begin']}&amp;date_end=#{group['date_end']}" class="nav-link"><t t-esc="group['name']"/><span class="pull-right badge" t-esc="group['item_count']"/></a>
</li>
</t>
</t>
+14 -14
View File
@@ -136,18 +136,18 @@
<div>
<!-- Tabs -->
<ul class="nav nav-tabs d-print-none" role="tablist">
<li class="active" t-if="question.type != 'simple_choice'">
<a t-att-href="'#graph_question_%d' % question.id" t-att-aria-controls="'graph_question_%d' % question.id" data-toggle="tab" role="tab">
<li class="nav-item" t-if="question.type != 'simple_choice'">
<a t-att-href="'#graph_question_%d' % question.id" t-att-aria-controls="'graph_question_%d' % question.id" class="nav-link active" data-toggle="tab" role="tab">
<i class="fa fa-bar-chart-o"></i> Graph
</a>
</li>
<li class="active" t-if="question.type == 'simple_choice'">
<a t-att-href="'#graph_question_%d' % question.id" t-att-aria-controls="'graph_question_%d' % question.id" data-toggle="tab" role="tab">
<li class="nav-item" t-if="question.type == 'simple_choice'">
<a t-att-href="'#graph_question_%d' % question.id" t-att-aria-controls="'graph_question_%d' % question.id" class="nav-link active" data-toggle="tab" role="tab">
<i class="fa fa-bar-chart-o"></i> Pie Chart
</a>
</li>
<li>
<a t-att-href="'#data_question_%d' % question.id" t-att-aria-controls="'data_question_%d' % question.id" data-toggle="tab" role="tab">
<li class="nav-item">
<a t-att-href="'#data_question_%d' % question.id" t-att-aria-controls="'data_question_%d' % question.id" class="nav-link" data-toggle="tab" role="tab">
<i class="fa fa-list-alt"></i> Data
</a>
</li>
@@ -200,14 +200,14 @@
<t t-set="matrix_result" t-value="prepare_result"/>
<!-- Tabs -->
<ul class="nav nav-tabs d-print-none" role="tablist">
<li class="active">
<a t-att-href="'#graph_question_%d' % question.id" t-att-aria-controls="'graph_question_%d' % question.id" data-toggle="tab" role="tab">
<li class="nav-item">
<a t-att-href="'#graph_question_%d' % question.id" t-att-aria-controls="'graph_question_%d' % question.id" class="nav-link active" data-toggle="tab" role="tab">
<i class="fa fa-bar-chart"></i>
Graph
</a>
</li>
<li>
<a t-att-href="'#data_question_%d' % question.id" t-att-aria-controls="'data_question_%d' % question.id" data-toggle="tab" role="tab">
<li class="nav-item">
<a t-att-href="'#data_question_%d' % question.id" t-att-aria-controls="'data_question_%d' % question.id" class="nav-link" data-toggle="tab" role="tab">
<i class="fa fa-list-alt"></i>
Data
</a>
@@ -262,14 +262,14 @@
<span class="label label-default only_left_radius">Average </span> <span class="label label-warning only_right_radius" t-esc="number_result['average']"></span>
</span>
<ul class="nav nav-tabs d-print-none" role="tablist">
<li class="active">
<a t-att-href="'#most_common_%d' % question.id" t-att-aria-controls="'most_common_%d' % question.id" data-toggle="tab" role="tab">
<li class="nav-item">
<a t-att-href="'#most_common_%d' % question.id" t-att-aria-controls="'most_common_%d' % question.id" class="nav-link active" data-toggle="tab" role="tab">
<i class="fa fa-list-ol"></i>
Most Common <span t-esc="len(number_result['most_common'])"></span>
</a>
</li>
<li>
<a t-att-href="'#data_question_%d' % question.id" t-att-aria-controls="'data_question_%d' % question.id" data-toggle="tab" role="tab">
<li class="nav-item">
<a t-att-href="'#data_question_%d' % question.id" t-att-aria-controls="'data_question_%d' % question.id" class="nav-link" data-toggle="tab" role="tab">
<i class="fa fa-list-alt"></i>
All Data
</a>
@@ -181,7 +181,7 @@ var FormRenderer = BasicRenderer.extend({
var $notebook = $(this);
var name = $notebook.data('name');
var index = -1;
$notebook.find('li').each(function (i) {
$notebook.find('.nav-link').each(function (i) {
if ($(this).hasClass('active')) {
index = i;
}
@@ -612,10 +612,11 @@ var FormRenderer = BasicRenderer.extend({
'data-toggle': 'tab',
disable_anchor: 'true',
href: '#' + page_id,
class: 'nav-link',
role: 'tab',
text: page.attrs.string,
});
return $('<li>').append($a);
return $('<li>', {class: 'nav-item'}).append($a);
},
/**
* @private
@@ -761,7 +762,7 @@ var FormRenderer = BasicRenderer.extend({
_renderTagNotebook: function (node) {
var self = this;
var $headers = $('<ul class="nav nav-tabs">');
var $pages = $('<div class="tab-content nav nav-tabs">');
var $pages = $('<div class="tab-content">');
var autofocusTab = -1;
// renderedTabs is used to aggregate the generated $headers and $pages
// alongside their node, so that their modifiers can be registered once
@@ -785,7 +786,7 @@ var FormRenderer = BasicRenderer.extend({
});
if (renderedTabs.length) {
var tabToFocus = renderedTabs[Math.max(0, autofocusTab)];
tabToFocus.$header.addClass('active');
tabToFocus.$header.find('.nav-link').addClass('active');
tabToFocus.$page.addClass('active');
}
// register the modifiers for each tab
@@ -793,12 +794,13 @@ var FormRenderer = BasicRenderer.extend({
self._registerModifiers(tab.node, self.state, tab.$header, {
callback: function (element, modifiers) {
// if the active tab is invisible, activate the first visible tab instead
if (modifiers.invisible && element.$el.hasClass('active')) {
element.$el.removeClass('active');
var $link = element.$el.find('.nav-link');
if (modifiers.invisible && $link.hasClass('active')) {
$link.removeClass('active');
tab.$page.removeClass('active');
var $firstVisibleTab = $headers.find('li:not(.o_invisible_modifier):first()');
var $firstVisibleTab = $headers.find('li:not(.o_invisible_modifier):first() > a');
$firstVisibleTab.addClass('active');
$pages.find($firstVisibleTab.find('a').attr('href')).addClass('active');
$pages.find($firstVisibleTab.attr('href')).addClass('active');
}
},
});
-3
View File
@@ -101,9 +101,6 @@ $dropdown-link-hover-bg: $gray-200;
// Navs
$nav-link-padding-y: 10px;
$nav-link-padding-x: 15px;
$nav-tabs-link-active-bg: $white;
$nav-pills-border-radius: 0;
+1 -1
View File
@@ -17,7 +17,7 @@
width: 300px;
max-width: 100%;
@include o-position-absolute($navbar-height, 0px);
@include o-position-absolute($nav-link-height, 0);
z-index: 1100; // Bootstrap modal z-index is 1050
.o_notification {
+3 -3
View File
@@ -124,10 +124,10 @@
<!-- Note: this dialog isn't responsive, but it is not accessible on mobile -->
<div t-name="KanbanView.ExamplesDialog" class="o_kanban_examples_dialog">
<div class="o_kanban_examples_dialog_nav">
<ul class="nav nav-pills nav-stacked">
<ul class="nav nav-pills flex-column">
<t t-foreach="examples" t-as="example">
<li t-att-class="example_index == 0 and 'active' or None">
<a t-attf-aria-controls="example_#{example_index}" data-toggle="tab" role="tab" t-attf-href="#example_#{example_index}"> <t t-esc="example.name"/> </a>
<li class="nav-item">
<a t-attf-aria-controls="example_#{example_index}" data-toggle="tab" role="tab" t-attf-href="#example_#{example_index}" t-attf-class="nav-link#{example_index == 0 and ' active' or ''}"> <t t-esc="example.name"/> </a>
</li>
</t>
</ul>
+20 -20
View File
@@ -504,20 +504,20 @@ QUnit.module('Views', {
});
form.$buttons.find('.o_form_button_edit').click();
assert.ok(form.$('.o_notebook .nav li:first()').hasClass('active'),
assert.ok(form.$('.o_notebook .nav .nav-link:first()').hasClass('active'),
'first tab should be active');
assert.ok(!form.$('.o_notebook .nav li:first()').hasClass('o_invisible_modifier'),
assert.ok(!form.$('.o_notebook .nav .nav-item:first()').hasClass('o_invisible_modifier'),
'first tab should be visible');
// set a value on the m2o
var $dropdown = form.$('.o_field_many2one input').autocomplete('widget');
form.$('.o_field_many2one input').click();
$dropdown.find('li:first()').click();
assert.ok(!form.$('.o_notebook .nav li:first()').hasClass('active'),
assert.ok(!form.$('.o_notebook .nav .nav-link:first()').hasClass('active'),
'first tab should not be active');
assert.ok(form.$('.o_notebook .nav li:first()').hasClass('o_invisible_modifier'),
assert.ok(form.$('.o_notebook .nav .nav-item:first()').hasClass('o_invisible_modifier'),
'first tab should be invisible');
assert.ok(form.$('.o_notebook .nav li:nth(1)').hasClass('active'),
assert.ok(form.$('.o_notebook .nav .nav-link:nth(1)').hasClass('active'),
'second tab should be active');
assert.ok(form.$('.o_notebook .tab-content .tab-pane:nth(1)').hasClass('active'),
'second page should be active');
@@ -547,9 +547,9 @@ QUnit.module('Views', {
res_id: 1,
});
assert.notOk(form.$('.o_notebook .nav li:first()').is(':visible'),
assert.notOk(form.$('.o_notebook .nav .nav-item:first()').is(':visible'),
'first tab should be invisible');
assert.ok(form.$('.o_notebook .nav li:nth(1)').hasClass('active'),
assert.ok(form.$('.o_notebook .nav .nav-link:nth(1)').hasClass('active'),
'second tab should be active');
form.destroy();
@@ -578,9 +578,9 @@ QUnit.module('Views', {
res_id: 1,
});
assert.notOk(form.$('.o_notebook .nav li:first()').hasClass('active'),
assert.notOk(form.$('.o_notebook .nav .nav-link:first()').hasClass('active'),
'first tab should not active');
assert.ok(form.$('.o_notebook .nav li:nth(1)').hasClass('active'),
assert.ok(form.$('.o_notebook .nav .nav-link:nth(1)').hasClass('active'),
'second tab should be active');
form.destroy();
@@ -2583,19 +2583,19 @@ QUnit.module('Views', {
});
// click on second page tab
form.$('.o_notebook li:eq(1) a').click();
form.$('.o_notebook .nav-link:eq(1)').click();
assert.notOk(form.$('.o_notebook li:eq(0)').hasClass('active'),
assert.notOk(form.$('.o_notebook .nav-link:eq(0)').hasClass('active'),
"first tab should not be active");
assert.ok(form.$('.o_notebook li:eq(1)').hasClass('active'),
assert.ok(form.$('.o_notebook .nav-link:eq(1)').hasClass('active'),
"second tab should be active");
// click on the pager to switch to the next record
form.pager.$('.o_pager_next').click();
assert.notOk(form.$('.o_notebook li:eq(0)').hasClass('active'),
assert.notOk(form.$('.o_notebook .nav-link:eq(0)').hasClass('active'),
"first tab should not be active");
assert.ok(form.$('.o_notebook li:eq(1)').hasClass('active'),
assert.ok(form.$('.o_notebook .nav-link:eq(1)').hasClass('active'),
"second tab should be active");
form.destroy();
});
@@ -5152,23 +5152,23 @@ QUnit.module('Views', {
res_id: 1,
});
assert.strictEqual(form.$('.o_notebook ul li:not(.o_invisible_modifier)').length, 2,
assert.strictEqual(form.$('.o_notebook .nav-item:not(.o_invisible_modifier)').length, 2,
"both tabs should be visible");
assert.ok(form.$('.o_notebook ul li:first').hasClass('active'),
assert.ok(form.$('.o_notebook .nav-link:first').hasClass('active'),
"first tab should be active");
// click on the pager to switch to the next record
form.pager.$('.o_pager_next').click();
assert.strictEqual(form.$('.o_notebook ul li:not(.o_invisible_modifier)').length, 1,
assert.strictEqual(form.$('.o_notebook .nav-item:not(.o_invisible_modifier)').length, 1,
"only the second tab should be visible");
assert.ok(form.$('.o_notebook ul li:not(.o_invisible_modifier)').hasClass('active'),
assert.ok(form.$('.o_notebook .nav-item:not(.o_invisible_modifier) .nav-link').hasClass('active'),
"the visible tab should be active");
// click on the pager to switch back to the previous record
form.pager.$('.o_pager_previous').click();
assert.strictEqual(form.$('.o_notebook ul li:not(.o_invisible_modifier)').length, 2,
assert.strictEqual(form.$('.o_notebook .nav-item:not(.o_invisible_modifier)').length, 2,
"both tabs should be visible again");
assert.ok(form.$('.o_notebook ul li:nth(1)').hasClass('active'),
assert.ok(form.$('.o_notebook .nav-link:nth(1)').hasClass('active'),
"second tab should be active");
form.destroy();
+13 -17
View File
@@ -394,17 +394,17 @@
<template id="web.menu">
<ul class="nav navbar-nav navbar-left oe_application_menu_placeholder" style="display: none;" role="menu">
<li t-foreach="menu_data['children']" t-as="menu">
<li t-foreach="menu_data['children']" t-as="menu" class="nav-item">
<t t-call="web.menu_link"/>
</li>
<li id="menu_more_container" class="dropdown" style="display: none;">
<a role="menuitem" aria-haspopup="true" href="#" class="dropdown-toggle" data-toggle="dropdown" id="more_menu_button">More</a>
<div id="menu_more" class="dropdown-menu" role="menu"/>
<li id="menu_more_container" class="nav-item dropdown" style="display: none;">
<a role="menuitem" href="#" class="nav-link dropdown-toggle" data-toggle="dropdown" id="more_menu_button">More</a>
<div id="menu_more" class="dropdown-menu" role="menu"></div>
</li>
</ul>
<ul class="nav navbar-nav navbar-right oe_user_menu_placeholder" style="display: none;"/>
<ul class="nav navbar-nav navbar-right oe_systray" style="display: none;"/>
<ul class="nav navbar-nav ml-auto oe_systray" style="display: none;"/>
<ul class="nav navbar-nav oe_user_menu_placeholder" style="display: none;"/>
</template>
<template id="web.menu_secondary">
<a class="o_sub_menu_logo" t-att-href="'/web/?debug' if debug else '/web'">
@@ -429,8 +429,8 @@
</div>
</template>
<template id="web.menu_secondary_submenu">
<ul t-if="menu['children']" class="oe_secondary_submenu nav nav-pills nav-stacked">
<li t-foreach="menu['children']" t-as="menu">
<ul t-if="menu['children']" class="oe_secondary_submenu nav nav-pills flex-column">
<li t-foreach="menu['children']" t-as="menu" class="nav-item">
<t t-call="web.menu_link"/>
<t t-call="web.menu_secondary_submenu"/>
</li>
@@ -440,7 +440,7 @@
<t t-set="debug_param" t-value="'?&amp;debug=' if debug else ''"/>
<a t-att-href="'/web%s#menu_id=%s&amp;action=%s' % (debug_param, menu['id'], menu['action'] and menu['action'].split(',')[1] or '')"
role="menuitem"
t-att-class="'oe_menu_toggler' if menu.get('children') else 'oe_menu_leaf'"
t-attf-class="nav-link #{'oe_menu_toggler' if menu.get('children') else 'oe_menu_leaf'}"
t-att-data-menu="menu['id']"
t-att-data-menu-xmlid="menu.get('xmlid')"
t-att-data-action-model="menu['action'] and menu['action'].split(',')[0] or None"
@@ -701,14 +701,10 @@
<t t-set="body_classname" t-value="'o_web_client'"/>
<header id="oe_main_menu_navbar">
<nav class="navbar navbar-inverse" groups="base.group_user,base.group_portal">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<nav class="navbar navbar-expand-md navbar-dark bg-dark" groups="base.group_user,base.group_portal">
<button type="button" class="navbar-toggler" data-toggle="collapse" data-target=".navbar-collapse">
<span class="navbar-toggler-icon"/>
</button>
<div class="navbar-collapse collapse">
<t t-call="web.menu"/>
</div>
+6 -6
View File
@@ -47,11 +47,11 @@
<!-- Media Dialog (allows to choose an img/pictogram/video) -->
<div t-name="web_editor.dialog.media">
<ul class="nav nav-tabs" role="tablist">
<li class="active"><a role="tab" href="#editor-media-image" aria-controls="editor-media-image" data-toggle="tab" t-att-class="widget.noImages ? 'd-none' : ''">Image</a></li>
<li><a role="tab" href="#editor-media-document" aria-controls="editor-media-document" data-toggle="tab" t-att-class="widget.noDocuments ? 'd-none' : ''">Document</a></li>
<li><a role="tab" href="#editor-media-icon" aria-controls="editor-media-icon" data-toggle="tab" t-att-class="widget.noIcons ? 'd-none' : ''">Pictogram</a></li>
<li><a role="tab" href="#editor-media-video" aria-controls="editor-media-video" data-toggle="tab" t-att-class="widget.noVideos ? 'd-none' : ''">Video</a></li>
<li class="search pull-right">
<li class="nav-item"><a role="tab" href="#editor-media-image" aria-controls="editor-media-image" data-toggle="tab" t-attf-class="nav-link active#{widget.noImages ? ' d-none' : ''}">Image</a></li>
<li class="nav-item"><a role="tab" href="#editor-media-document" aria-controls="editor-media-document" data-toggle="tab" t-attf-class="nav-link#{widget.noDocuments ? ' d-none' : ''}">Document</a></li>
<li class="nav-item"><a role="tab" href="#editor-media-icon" aria-controls="editor-media-icon" data-toggle="tab" t-attf-class="nav-link#{widget.noIcons ? ' d-none' : ''}">Pictogram</a></li>
<li class="nav-item"><a role="tab" href="#editor-media-video" aria-controls="editor-media-video" data-toggle="tab" t-attf-class="nav-link#{widget.noVideos ? ' d-none' : ''}">Video</a></li>
<li class="nav-item search pull-right">
<ul class="pager mb0 mt0">
<li class="previous">
<a role="button" class="btn btn-secondary disabled" href="#"><i class="fa fa-angle-left"/>&#32;Previous</a>
@@ -61,7 +61,7 @@
</li>
</ul>
</li>
<li class="search pull-right">
<li class="nav-item search pull-right">
<div class="form-group">
<input class="form-control" id="icon-search" type="search"/>
<span class="fa fa-search" title="Search" role="img" aria-label="Search"/>
+1 -1
View File
@@ -179,7 +179,7 @@ sAnimation.registry.menuDirection = sAnimation.Class.extend({
* @override
*/
start: function () {
this.defaultAlignment = this.$el.is('.navbar-right') ? 'right' : 'left';
this.defaultAlignment = this.$el.is('.ml-auto, .ml-auto ~ *') ? 'right' : 'left';
return this._super.apply(this, arguments);
},
+1 -2
View File
@@ -504,8 +504,7 @@ div.carousel {
@include o-position-absolute(0, 0, auto, 0);
position: fixed;
z-index: $zindex-modal - 20;
background: $navbar-default-bg;
border-bottom: $navbar-default-border;
background: $light;
margin-top: -200px;
transition: margin-top 500ms ease 0s;
@@ -41,8 +41,8 @@
<div t-name="website.pagesMenu.page_info" class="o_page_management_info">
<form class="form-horizontal">
<ul class="nav nav-tabs" role="tablist">
<li class="active"><a aria-controls="basic_page_info" data-toggle="tab" href="#basic_page_info" role="tab">Name</a></li>
<li><a aria-controls="advances_page_info" data-toggle="tab" href="#advances_page_info" role="tab">Publish</a></li>
<li class="nav-item"><a aria-controls="basic_page_info" role="tab" data-toggle="tab" class="nav-link active" href="#basic_page_info">Name</a></li>
<li class="nav-item"><a aria-controls="advances_page_info" role="tab" data-toggle="tab" class="nav-link" href="#advances_page_info">Publish</a></li>
</ul>
<div class="tab-content mt16">
<div role="tabpanel" id="basic_page_info" class="tab-pane fade in active">
+18 -12
View File
@@ -67,23 +67,27 @@
<!-- Layout -->
<template id="submenu" name="Submenu">
<li t-if="submenu.is_visible and not submenu.child_id.filtered(lambda menu: menu.is_visible)" t-att-class="
'active' if submenu.clean_url() and unslug_url(request.httprequest.path) == unslug_url(submenu.clean_url()) else None
">
<a role="menuitem" t-att-href="submenu.clean_url()" t-ignore="true" t-att-target="'_blank' if submenu.new_window else None">
<li t-if="submenu.is_visible and not submenu.child_id.filtered(lambda menu: menu.is_visible)" class="nav-item">
<a t-att-href="submenu.clean_url()"
t-attf-class="nav-link#{' active' if submenu.clean_url() and unslug_url(request.httprequest.path) == unslug_url(submenu.clean_url()) else ''}"
role="menuitem"
t-ignore="true"
t-att-target="'_blank' if submenu.new_window else None">
<span t-field="submenu.name"/>
</a>
</li>
<li t-if="submenu.child_id.filtered(lambda menu: menu.is_visible)" t-attf-class="dropdown #{
<li t-if="submenu.child_id.filtered(lambda menu: menu.is_visible)" t-attf-class="#{('%s-item ' % submenu_type) if submenu_type else ''}dropdown #{
(submenu.clean_url() and submenu.clean_url() != '/' and any([request.httprequest.path == child.url for child in submenu.child_id if child.url]) or
(submenu.clean_url() and request.httprequest.path == submenu.clean_url())) and 'active'
}">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">
<a t-attf-class="#{('%s-link ' % submenu_type) if submenu_type else ''}dropdown-toggle" data-toggle="dropdown" href="#">
<span t-field="submenu.name"/>
</a>
<div class="dropdown-menu" role="menu">
<t t-foreach="submenu.child_id" t-as="submenu">
<t t-call="website.submenu"/>
<t t-call="website.submenu">
<t t-set="submenu_type" t-value="'dropdown'"/>
</t>
</t>
</div>
</li>
@@ -184,7 +188,9 @@
</xpath>
<xpath expr="//header//ul[@id='top_menu']/li[hasclass('divider')]" position="before">
<t t-foreach="website.menu_id.child_id" t-as="submenu">
<t t-call="website.submenu"/>
<t t-call="website.submenu">
<t t-set="submenu_type" t-value="'nav'"/>
</t>
</t>
</xpath>
<xpath expr="//div[@id='wrapwrap']" position="after">
@@ -758,12 +764,12 @@
<div id="wrapwrap">
<header>
<div class="navbar navbar-default navbar-static-top">
<div class="navbar navbar-expand-md navbar-light bg-light">
<div class="container">
<div class="collapse navbar-collapse navbar-top-collapse">
<ul class="nav navbar-nav pull-right" id="top_menu">
<li><a href="/">Home</a></li>
<li><a href="javascript: window.history.back()">Back</a></li>
<ul class="navbar-nav ml-auto" id="top_menu">
<li class="nav-item"><a href="/" class="nav-link">Home</a></li>
<li class="nav-item"><a href="javascript: window.history.back()" class="nav-link">Back</a></li>
</ul>
</div>
</div>
@@ -393,8 +393,8 @@
<div t-if='not hide_title' class='text-muted mt8'><i class='fa fa-tag' role="img" aria-label="Tag category" title="Tag category"/> <t t-esc='categ_title' /></div>
<t t-foreach="tags" t-as="tag">
<t t-if="tag.post_ids">
<li t-att-class="tag.id in active_tag_ids and 'active' or None">
<a t-attf-href="#{blog_url(tag=tags_list(active_tag_ids, tag.id))}">
<li class="nav-item">
<a t-attf-href="#{blog_url(tag=tags_list(active_tag_ids, tag.id))}" t-attf-class="nav-link#{tag.id in active_tag_ids and ' active' or ''}">
<span t-field="tag.name"/>
</a>
</li>
@@ -436,18 +436,18 @@
<xpath expr="//div[@id='blog_right_column']" position="inside">
<section class="mt32">
<h4>Archives</h4>
<ul class="nav nav-pills nav-stacked">
<ul class="nav nav-pills flex-column">
<t t-foreach="nav_list" t-as="year">
<li data-toggle="collapse" t-att-data-target="'#' + year" aria-expanded="false" class="blog_post_year_collapse mt8">
<li data-toggle="collapse" t-att-data-target="'#' + year" aria-expanded="false" class="nav-item blog_post_year_collapse mt8">
<i t-attf-class="fa #{'fa-chevron-down' if not date and year_index == 0 else 'fa-chevron-right'} mr4" role="img" aria-label="Next year" title="Next year"/><span t-esc="year"/>
</li>
<ul t-attf-class="blog_post_year collapse nav nav-pills nav-stacked #{not date and year_index == 0 and 'in'}" t-att-id="year" role="menu">
<ul t-attf-class="blog_post_year collapse nav nav-pills flex-column #{not date and year_index == 0 and 'in'}" t-att-id="year" role="menu">
<t t-foreach="nav_list[year]" t-as="months">
<li t-if="months['date_begin'] == date" class="active">
<a role="menuitem" t-ignore="True" t-attf-href="#{blog_url(date_begin=False, date_end=False)}"><t t-esc="months['month']"/><span class="pull-right badge" t-esc="months['post_date_count']"/></a>
<li t-if="months['date_begin'] == date" class="nav-item">
<a role="menuitem" t-ignore="True" t-attf-href="#{blog_url(date_begin=False, date_end=False)}" class="nav-link active"><t t-esc="months['month']"/><span class="pull-right badge" t-esc="months['post_date_count']"/></a>
</li>
<li t-else="1">
<a role="menuitem" t-ignore="True" t-attf-href="#{blog_url(date_begin=months['date_begin'], date_end=months['date_end'])}"><t t-esc="months['month']"/><span class="pull-right badge" t-esc="months['post_date_count']"/></a>
<li t-else="1" class="nav-item">
<a role="menuitem" t-ignore="True" t-attf-href="#{blog_url(date_begin=months['date_begin'], date_end=months['date_end'])}" class="nav-link"><t t-esc="months['month']"/><span class="pull-right badge" t-esc="months['post_date_count']"/></a>
</li>
</t>
</ul>
@@ -514,13 +514,13 @@
<xpath expr="//div[@id='blog_right_column']" position="inside">
<section class="mt32 mb32" groups="website.group_website_designer">
<h4>Status</h4>
<ul class="nav nav-pills nav-stacked">
<ul class="nav nav-pills flex-column">
<t t-set="state" t-value="state_info['state']"/>
<li t-attf-class="#{state == 'published' and 'active' or ''}">
<a t-attf-href="#{state == 'published' and blog_url(state='') or blog_url(state='published')}">Published <span class="pull-right badge" t-esc="state_info['published']" /></a>
<li class="nav-item">
<a t-attf-href="#{state == 'published' and blog_url(state='') or blog_url(state='published')}" t-attf-class="nav-link#{state == 'published' and ' active' or ''}">Published <span class="pull-right badge" t-esc="state_info['published']" /></a>
</li>
<li t-attf-class="#{state == 'unpublished' and 'active' or ''}">
<a t-attf-href="#{state == 'unpublished' and blog_url(state='') or blog_url(state='unpublished')}">Unpublished <span class="pull-right badge" t-esc="state_info['unpublished']" /></a>
<li class="nav-item">
<a t-attf-href="#{state == 'unpublished' and blog_url(state='') or blog_url(state='unpublished')}" t-attf-class="nav-link#{state == 'unpublished' and ' active' or ''}">Unpublished <span class="pull-right badge" t-esc="state_info['unpublished']" /></a>
</li>
</ul>
</section>
@@ -536,10 +536,10 @@
<xpath expr="//div[@id='blog_right_column']" position="inside">
<section class="mt32 mb32">
<h4>Our Blogs</h4>
<ul class="nav nav-pills nav-stacked">
<ul class="nav nav-pills flex-column">
<t t-foreach="blogs" t-as="nav_blog">
<li t-att-class="nav_blog.id == blog.id and 'active' or None">
<a t-attf-href="#{blog_url(blog=nav_blog, tag=False, date_begin=False, date_end=False)}">
<li class="nav-item">
<a t-attf-href="#{blog_url(blog=nav_blog, tag=False, date_begin=False, date_end=False)}" t-attf-class="nav-link#{nav_blog.id == blog.id and ' active' or ''}">
<span t-field="nav_blog.name"/>
</a>
</li>
@@ -30,11 +30,12 @@
<div class="col-md-3 mb32" id="partner_left">
<ul id="reseller_grades" class="nav nav-pills nav-stacked mt16">
<li class="nav-header"><h3>Filter by Level</h3></li>
<ul id="reseller_grades" class="nav nav-pills flex-column mt16">
<li class="nav-header nav-item"><h3>Filter by Level</h3></li>
<t t-foreach="grades" t-as="grade">
<li t-att-class="grade['active'] and 'active' or None">
<a t-attf-href="/partners#{ grade['grade_id'][0] and '/grade/%s' % grade['grade_id'][0] or '' }#{ current_country and '/country/%s' % slug(current_country) or '' }#{ '?' + (search_path or '') }">
<li class="nav-item">
<a t-attf-href="/partners#{ grade['grade_id'][0] and '/grade/%s' % grade['grade_id'][0] or '' }#{ current_country and '/country/%s' % slug(current_country) or '' }#{ '?' + (search_path or '') }"
t-attf-class="nav-link#{grade['active'] and ' active' or ''}">
<span class="badge pull-right" t-esc="grade['grade_id_count'] or ''"/>
<t t-esc="grade['grade_id'][1]"/>
</a>
@@ -42,11 +43,12 @@
</t>
</ul>
<ul id="reseller_countries" class="nav nav-pills nav-stacked mt16">
<li class="nav-header"><h3>Filter by Country</h3></li>
<ul id="reseller_countries" class="nav nav-pills flex-column mt16">
<li class="nav-header nav-item"><h3>Filter by Country</h3></li>
<t t-foreach="countries" t-as="country">
<li t-if="country['country_id']" t-att-class="country['active'] and 'active' or None">
<a t-attf-href="/partners#{ current_grade and '/grade/%s' % slug(current_grade) or ''}#{country['country_id'][0] and '/country/%s' % country['country_id'][0] or '' }#{ '?' + (search_path or '') + (country['country_id'][0] == 0 and '&amp;country_all=True' or '')}">
<li t-if="country['country_id']" class="nav-item">
<a t-attf-href="/partners#{ current_grade and '/grade/%s' % slug(current_grade) or ''}#{country['country_id'][0] and '/country/%s' % country['country_id'][0] or '' }#{ '?' + (search_path or '') + (country['country_id'][0] == 0 and '&amp;country_all=True' or '')}"
t-attf-class="nav-link#{country['active'] and ' active' or ''}">
<span class="badge pull-right" t-esc="country['country_id_count'] or ''"/>
<t t-esc="country['country_id'][1]"/>
</a>
@@ -90,11 +90,12 @@
<template id="opt_industry_list" inherit_id="website_customer.index" customize_show="True" name="Filter on Industry" priority="20">
<xpath expr="//div[@id='ref_left_column']" position="inside">
<h3>References by Sectors of Activity</h3>
<ul class="nav nav-pills nav-stacked mt16 mb32">
<ul class="nav nav-pills flex-column mt16 mb32">
<t t-foreach="industries" t-as="industry_dict">
<t t-if="industry_dict['industry_id']">
<li t-att-class="industry_dict['industry_id'][0] == current_industry_id and 'active' or None">
<a t-attf-href="/customers/#{ industry_dict['industry_id'][0] and 'industry/%s/' % slug(industry_dict['industry_id']) or '' }#{ current_country_id and 'country/%s' % current_country_id or '' }#{ search_path }">
<li class="nav-item">
<a t-attf-href="/customers/#{ industry_dict['industry_id'][0] and 'industry/%s/' % slug(industry_dict['industry_id']) or '' }#{ current_country_id and 'country/%s' % current_country_id or '' }#{ search_path }"
t-attf-class="nav-link#{industry_dict['industry_id'][0] == current_industry_id and ' active' or ''}">
<span class="badge pull-right" t-esc="industry_dict['industry_id_count'] or '0'"/>
<t t-esc="industry_dict['industry_id'][1]"/>
</a>
@@ -108,11 +109,12 @@
<template id="opt_country_list" inherit_id="website_customer.index" customize_show="True" name="Filter on Countries" priority="30">
<xpath expr="//div[@id='ref_left_column']" position="inside">
<h3>References by Country</h3>
<ul class="nav nav-pills nav-stacked mt16 mb32">
<ul class="nav nav-pills flex-column mt16 mb32">
<t t-foreach="countries" t-as="country_dict">
<t t-if="country_dict['country_id']">
<li t-att-class="country_dict['country_id'][0] == current_country_id and 'active' or None">
<a t-attf-href="/customers/#{ current_industry_id and 'industry/%s/' % slug(current_industry) or '' }#{ country_dict['country_id'][0] and 'country/%s' % slug(country_dict['country_id']) or '' }#{ search_path }">
<li class="nav-item">
<a t-attf-href="/customers/#{ current_industry_id and 'industry/%s/' % slug(current_industry) or '' }#{ country_dict['country_id'][0] and 'country/%s' % slug(country_dict['country_id']) or '' }#{ search_path }"
t-attf-class="nav-link#{country_dict['country_id'][0] == current_country_id and ' active' or ''}">
<span class="badge pull-right" t-esc="country_dict['country_id_count'] or '0'"/>
<t t-esc="country_dict['country_id'][1]"/>
</a>
@@ -128,13 +130,13 @@
<xpath expr="//div[@id='ref_left_column']" position="inside">
<h3 t-if="len(tags)">References by Tag</h3>
<ul class="nav nav-pills nav-stacked mt16 mb32" t-if="len(tags)">
<a class="mr8" t-attf-href="/customers/#{ current_industry_id and 'industry/%s/' % slug(current_industry) or '' }#{ current_country_id and 'country/%s' % slug(current_country) or '' }">
<span class="fa fa-1x fa-tags"/> All </a>
<t t-foreach="tags" t-as="o_tag">
<a t-attf-class="label label-#{o_tag.classname}" t-esc="o_tag.name" t-att-style="tag and tag.id==o_tag.id and 'text-decoration: underline'"
<ul class="nav nav-pills flex-column mt16 mb32" t-if="len(tags)">
<li class="nav-item"><a class="nav-link mr8" t-attf-href="/customers/#{ current_industry_id and 'industry/%s/' % slug(current_industry) or '' }#{ current_country_id and 'country/%s' % slug(current_country) or '' }">
<span class="fa fa-1x fa-tags"/> All </a></li>
<li t-foreach="tags" t-as="o_tag" class="nav-item">
<a t-attf-class="nav-link label label-#{o_tag.classname}" t-esc="o_tag.name" t-att-style="tag and tag.id==o_tag.id and 'text-decoration: underline'"
t-attf-href="/customers/#{ current_industry_id and 'industry/%s/' % slug(current_industry) or '' }#{ current_country_id and 'country/%s' % slug(current_country) or '' }?tag_id=#{slug(o_tag)}"/>
</t>
</li>
</ul>
</xpath>
</template>
+11 -11
View File
@@ -146,10 +146,10 @@
</xpath>
<xpath expr="//div[@id='middle_column']" position="before">
<div class="col-md-3 css_noprint" id="left_column">
<ul class="nav nav-pills nav-stacked">
<ul class="nav nav-pills flex-column">
<t t-foreach="dates" t-as="date">
<li t-att-class="searches.get('date') == date[0] and 'active' or None" t-if="date[3] or (date[0] in ('old','all'))">
<a t-attf-href="/event?{{ keep_query('country', 'type', date=date[0]) }}"><t t-esc="date[1]"/>
<li class="nav-item" t-if="date[3] or (date[0] in ('old','all'))">
<a t-attf-href="/event?{{ keep_query('country', 'type', date=date[0]) }}" t-attf-class="nav-link#{searches.get('date') == date[0] and ' active' or ''}"><t t-esc="date[1]"/>
<span t-if="date[3]" class="badge pull-right"><t t-esc="date[3]"/></span>
</a>
</li>
@@ -161,11 +161,11 @@
<template id="event_category" inherit_id="website_event.event_left_column" active="False" customize_show="True" name="Filter by Category">
<xpath expr="//div[@id='left_column']" position="inside">
<ul class="nav nav-pills nav-stacked mt32">
<ul class="nav nav-pills flex-column mt32">
<t t-foreach="types" t-as="type">
<li t-if="type['event_type_id']"
t-att-class="searches.get('type') == str(type['event_type_id'] and type['event_type_id'][0]) and 'active' or None">
<a t-attf-href="/event?{{ keep_query('country', 'date', type=type['event_type_id'][0]) }}"><t t-esc="type['event_type_id'][1]"/>
class="nav-item">
<a t-attf-href="/event?{{ keep_query('country', 'date', type=type['event_type_id'][0]) }}" t-attf-class="nav-link#{searches.get('type') == str(type['event_type_id'] and type['event_type_id'][0]) and ' active' or ''}"><t t-esc="type['event_type_id'][1]"/>
<span class="badge pull-right"><t t-esc="type['event_type_id_count']"/></span>
</a>
</li>
@@ -176,15 +176,15 @@
<template id="event_location" inherit_id="website_event.event_left_column" active="False" customize_show="True" name="Filter by Country">
<xpath expr="//div[@id='left_column']" position="inside">
<ul class="nav nav-pills nav-stacked mt32">
<ul class="nav nav-pills flex-column mt32">
<t t-foreach="countries" t-as="country">
<li t-if="country['country_id']" t-att-class="searches.get('country') == str(country['country_id'] and country['country_id'][0]) and 'active' or None">
<a t-attf-href="/event?{{ keep_query('type', 'date', country=country['country_id'][0]) }}"><t t-esc="country['country_id'][1]"/>
<li t-if="country['country_id']" class="nav-item">
<a t-attf-href="/event?{{ keep_query('type', 'date', country=country['country_id'][0]) }}" t-attf-class="nav-link#{searches.get('country') == str(country['country_id'] and country['country_id'][0]) and ' active' or ''}"><t t-esc="country['country_id'][1]"/>
<span class="badge pull-right"><t t-esc="country['country_id_count']"/></span>
</a>
</li>
<li t-if="not country['country_id']" t-att-class="searches.get('country') == 'online' and 'active' or None">
<a t-attf-href="/event?{{ keep_query('type', 'date', country='online') }}">
<li t-if="not country['country_id']" class="nav-item">
<a t-attf-href="/event?{{ keep_query('type', 'date', country='online') }}" t-attf-class="nav-link#{searches.get('country') == 'online' and ' active' or ''}">
<span>Online Events</span>
<span class="badge pull-right"><t t-esc="country['country_id_count']"/></span>
</a>
@@ -160,11 +160,11 @@
<template id="tracks_filter" inherit_id="website_event_track.tracks" customize_show="True" name="Filter on Tags">
<xpath expr="//div[@id='left_column']" position="inside">
<ul class="nav nav-pills nav-stacked">
<li t-att-class="'' if searches.get('tag') else 'active'"><a t-attf-href="/event/#{ slug(event) }/track">All Tags</a></li>
<ul class="nav nav-pills flex-column">
<li class="nav-item"><a t-attf-href="/event/#{ slug(event) }/track" t-attf-class="nav-link#{'' if searches.get('tag') else ' active'}">All Tags</a></li>
<t t-foreach="tags" t-as="tag">
<li t-att-class="searches.get('tag') == tag.id and 'active' or None">
<a t-attf-href="/event/#{ slug(event) }/track/tag/#{ slug(tag) }">
<li class="nav-item">
<a t-attf-href="/event/#{ slug(event) }/track/tag/#{ slug(tag) }" t-attf-class="nav-link#{searches.get('tag') == tag.id and ' active' or ''}">
<t t-esc="tag.name"/>
</a>
</li>
+52 -53
View File
@@ -48,56 +48,55 @@
</div>
<div class="container mt16 website_forum">
<div class="navbar navbar-default">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#oe-help-navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" t-attf-href="/forum/#{slug(forum)}">
<span t-field="forum.name"/>
</a>
</div>
<div class="navbar navbar-expand-md navbar-light bg-light">
<a class="navbar-brand" t-attf-href="/forum/#{slug(forum)}">
<span t-field="forum.name"/>
</a>
<button type="button" class="navbar-toggler" data-toggle="collapse" data-target="#oe-help-navbar-collapse">
<span class="navbar-toggler-icon"/>
</button>
<div class="collapse navbar-collapse" id="oe-help-navbar-collapse">
<ul class="nav navbar-nav">
<li t-att-class="sorting == 'relevancy desc' and 'active' or None ">
<a t-attf-href="/forum/#{ slug(forum) }?{{ keep_query( 'search', 'post_type', 'filters', sorting='relevancy desc') }}">Trending</a>
<ul class="navbar-nav">
<li class="nav-item">
<a t-attf-href="/forum/#{ slug(forum) }?{{ keep_query( 'search', 'post_type', 'filters', sorting='relevancy desc') }}"
t-attf-class="nav-link#{sorting == 'relevancy desc' and ' active' or ''}">Trending</a>
</li>
<li t-att-class="sorting == 'create_date desc' and 'active' or None ">
<a t-attf-href="/forum/#{ slug(forum) }?{{ keep_query( 'search', 'post_type', 'filters', sorting='create_date desc') }}">Newest</a>
<li class="nav-item">
<a t-attf-href="/forum/#{ slug(forum) }?{{ keep_query( 'search', 'post_type', 'filters', sorting='create_date desc') }}"
t-attf-class="nav-link#{sorting == 'create_date desc' and ' active' or ''}">Newest</a>
</li>
<li t-att-class="searches.get('users') and 'active' or None ">
<a t-attf-href="/forum/#{ slug(forum) }/users">People</a>
<li class="nav-item">
<a t-attf-href="/forum/#{ slug(forum) }/users"
t-attf-class="nav-link#{searches.get('users') and ' active' or ''}">People</a>
</li>
<li t-att-class="searches.get('tags') and 'active' or None ">
<a t-attf-href="/forum/#{ slug(forum) }/tag">Tags</a>
<li class="nav-item">
<a t-attf-href="/forum/#{ slug(forum) }/tag"
t-attf-class="nav-link#{searches.get('tags') and ' active' or ''}">Tags</a>
</li>
<li t-att-class="searches.get('badges') and 'active' or None ">
<a t-attf-href="/forum/#{ slug(forum) }/badge">Badges</a>
<li class="nav-item">
<a t-attf-href="/forum/#{ slug(forum) }/badge"
t-attf-class="nav-link#{searches.get('badges') and ' active' or ''}">Badges</a>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li t-if="not is_public_user" t-att-class="searches.get('my_profile') and 'active' or None ">
<a t-attf-href="/forum/#{ slug(forum) }/user/#{uid}">
<ul class="navbar-nav ml-auto">
<li t-if="not is_public_user" class="nav-item">
<a t-attf-href="/forum/#{ slug(forum) }/user/#{uid}" t-attf-class="nav-link#{searches.get('my_profile') and ' active' or ''}">
<span t-field="user_id.name"/> (k: <t t-esc="user_id.karma"/>)
</a>
</li>
<li>
<form class="navbar-form" role="search" t-attf-action="/forum/#{ slug(forum) }" method="get">
<t t-call="website.website_search_box"/>
<span class="dropdown" groups="base.group_erp_manager">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown">
<i class="fa fa-cog" role="img" aria-label="Dropdown menu" title="Dropdown menu"/>
</button>
<div class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
<a role="menuitem" tabindex="-1" t-attf-href="/forum/#{slug(forum)}/edit_welcome_message?enable_editor=1" class="dropdown-item">Design Welcome Message</a>
<a role="menuitem" tabindex="-1" t-attf-href="/web#id=#{forum.id}&amp;view_type=form&amp;model=forum.forum" class="dropdown-item">Forum Settings</a>
</div>
</span>
</form>
</li>
</ul>
<form class="form-inline ml-1" role="search" t-attf-action="/forum/#{ slug(forum) }" method="get">
<t t-call="website.website_search_box"/>
<div class="dropdown ml-1" groups="base.group_erp_manager">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown">
<i class="fa fa-cog" role="img" aria-label="Dropdown menu" title="Dropdown menu"/>
</button>
<div class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu1">
<a role="menuitem" tabindex="-1" t-attf-href="/forum/#{slug(forum)}/edit_welcome_message?enable_editor=1" class="dropdown-item">Design Welcome Message</a>
<a role="menuitem" tabindex="-1" t-attf-href="/web#id=#{forum.id}&amp;view_type=form&amp;model=forum.forum" class="dropdown-item">Forum Settings</a>
</div>
</div>
</form>
</div>
</div>
</div>
@@ -1427,26 +1426,26 @@
</div>
<ul class="nav nav-tabs" role="tablist">
<li class="active">
<a role="tab" aria-controls="questions" href="#questions" data-toggle="tab"><t t-esc="count_questions"/> Questions</a>
<li class="nav-item">
<a role="tab" aria-controls="questions" href="#questions" class="nav-link active" data-toggle="tab"><t t-esc="count_questions"/> Questions</a>
</li>
<li>
<a role="tab" aria-controls="answers" href="#answers" data-toggle="tab"><t t-esc="count_answers"/> Answers</a>
<li class="nav-item">
<a role="tab" aria-controls="answers" href="#answers" class="nav-link" data-toggle="tab"><t t-esc="count_answers"/> Answers</a>
</li>
<li t-if="uid == user.id">
<a role="tab" aria-controls="favourite_question" href="#favourite_question" data-toggle="tab"><t t-esc="len(favourite)"/> Favourite Questions</a>
<li t-if="uid == user.id" class="nav-item">
<a role="tab" aria-controls="favourite_question" href="#favourite_question" class="nav-link" data-toggle="tab"><t t-esc="len(favourite)"/> Favourite Questions</a>
</li>
<li t-if="uid == user.id">
<a role="tab" aria-controls="followed_question" href="#followed_question" data-toggle="tab"><t t-esc="len(followed)"/> Followed Questions</a>
<li t-if="uid == user.id" class="nav-item">
<a role="tab" aria-controls="followed_question" href="#followed_question" class="nav-link" data-toggle="tab"><t t-esc="len(followed)"/> Followed Questions</a>
</li>
<li t-if="uid == user.id">
<a role="tab" aria-controls="activity" href="#activity" data-toggle="tab">Activity</a>
<li t-if="uid == user.id" class="nav-item">
<a role="tab" aria-controls="activity" href="#activity" class="nav-link" data-toggle="tab">Activity</a>
</li>
<li>
<a role="tab" aria-controls="badges" href="#badges" data-toggle="tab">Badges</a>
<li class="nav-item">
<a role="tab" aria-controls="badges" href="#badges" class="nav-link" data-toggle="tab">Badges</a>
</li>
<li t-if="uid == user.id">
<a role="tab" aria-controls="votes" href="#votes" data-toggle="tab">Votes</a>
<li t-if="uid == user.id" class="nav-item">
<a role="tab" aria-controls="votes" href="#votes" class="nav-link" data-toggle="tab">Votes</a>
</li>
</ul>
<div class="tab-content mt16">
@@ -59,7 +59,7 @@
</ol>
</div>
<div class="col-sm-4 text-right">
<form class="navbar-form navbar-right mt0" role="search" t-attf-action="/forum/#{ slug(forum) }" method="get">
<form class="navbar-form ml-auto mt0" role="search" t-attf-action="/forum/#{ slug(forum) }" method="get">
<div class="form-group">
<input type="search" class="form-control"
name="search" placeholder="Search..."
@@ -98,7 +98,7 @@
</ol>
</div>
<div class="col-sm-4 text-right" t-if="forum">
<form class="navbar-form navbar-right mt0" role="search" t-attf-action="/forum/#{ slug(forum) }" method="get">
<form class="navbar-form ml-auto mt0" role="search" t-attf-action="/forum/#{ slug(forum) }" method="get">
<div class="form-group">
<input type="search" class="form-control"
name="search" placeholder="Search..."
@@ -444,11 +444,12 @@
<template id="job_countries" inherit_id="website_hr_recruitment.index" active="False" customize_show="True" name="Filter by Countries">
<xpath expr="//div[@id='jobs_grid_left']" position="inside">
<ul class="nav nav-pills nav-stacked mb32">
<li t-att-class=" '' if country_id else 'active' "><a t-attf-href="/jobs#{ '/department/%s' % slug(department_id) if department_id else '' }#{ '/office/%s' % office_id if office_id else '' }?all_countries=1">All Countries</a></li>
<ul class="nav nav-pills flex-column mb32">
<li class="nav-item"><a t-attf-href="/jobs#{ '/department/%s' % slug(department_id) if department_id else '' }#{ '/office/%s' % office_id if office_id else '' }?all_countries=1" t-attf-class="nav-link#{'' if country_id else ' active'}">All Countries</a></li>
<t t-foreach="countries" t-as="country">
<li t-att-class="'active' if country_id and country_id.id == country.id else None">
<a t-attf-href="/jobs/country/#{ slug(country) }#{ '/department/%s' % slug(department_id) if department_id else '' }#{ '/office/%s' % office_id if office_id else '' }" ><span t-field="country.name"/></a>
<li class="nav-item">
<a t-attf-href="/jobs/country/#{ slug(country) }#{ '/department/%s' % slug(department_id) if department_id else '' }#{ '/office/%s' % office_id if office_id else '' }"
t-attf-class="nav-link#{' active' if country_id and country_id.id == country.id else ''}"><span t-field="country.name"/></a>
</li>
</t>
</ul>
@@ -463,11 +464,11 @@
<template id="job_departments" inherit_id="website_hr_recruitment.index" active="False" customize_show="True" name="Filter by Departments">
<xpath expr="//div[@id='jobs_grid_left']" position="inside">
<ul class="nav nav-pills nav-stacked mb32">
<li t-att-class=" '' if department_id else 'active' "><a t-attf-href="/jobs#{ '/country/%s' % slug(country_id) if country_id else '' }#{ '/office/%s' % office_id if office_id else '' }">All Departments</a></li>
<ul class="nav nav-pills flex-column mb32">
<li class="nav-item"><a t-attf-href="/jobs#{ '/country/%s' % slug(country_id) if country_id else '' }#{ '/office/%s' % office_id if office_id else ''}" t-attf-class="nav-link#{'' if department_id else ' active'}">All Departments</a></li>
<t t-foreach="departments" t-as="department">
<li t-att-class="'active' if department_id and department_id.id == department.id else None">
<a t-attf-href="/jobs#{ '/country/%s' % slug(country_id) if country_id else '' }/department/#{ slug(department) }#{ '/office/%s' % office_id if office_id else '' }" ><span t-field="department.name"/></a>
<li class="nav-item">
<a t-attf-href="/jobs#{ '/country/%s' % slug(country_id) if country_id else '' }/department/#{ slug(department) }#{ '/office/%s' % office_id if office_id else '' }" t-attf-class="nav-link#{' active' if department_id and department_id.id == department.id else ''}"><span t-field="department.name"/></a>
</li>
</t>
</ul>
@@ -482,11 +483,12 @@
<template id="job_offices" inherit_id="website_hr_recruitment.index" active="False" customize_show="True" name="Filter by Offices">
<xpath expr="//div[@id='jobs_grid_left']" position="inside">
<ul class="nav nav-pills nav-stacked mb32">
<li t-att-class=" '' if office_id else 'active' "><a t-attf-href="/jobs#{ '/country/%s' % slug(country_id) if country_id else '' }#{ '/department/%s' % slug(department_id) if department_id else '' }">All Offices</a></li>
<ul class="nav nav-pills flex-column mb32">
<li class="nav-item"><a t-attf-href="/jobs#{ '/country/%s' % slug(country_id) if country_id else '' }#{ '/department/%s' % slug(department_id) if department_id else '' }" t-attf-class="nav-link#{'' if office_id else ' active'}">All Offices</a></li>
<t t-foreach="offices" t-as="thisoffice">
<li t-att-class=" 'active' if office_id == thisoffice.id else None ">
<a t-attf-href="/jobs#{ '/country/%s' % slug(country_id) if country_id else '' }#{ '/department/%s' % slug(department_id) if department_id else '' }/office/#{ thisoffice.id }" >
<li class="nav-item">
<a t-attf-href="/jobs#{ '/country/%s' % slug(country_id) if country_id else '' }#{ '/department/%s' % slug(department_id) if department_id else '' }/office/#{ thisoffice.id }"
t-attf-class="nav-link#{' active' if office_id == thisoffice.id else ''}">
<span t-field="thisoffice.city"/><t t-if="thisoffice.country_id">,
<span t-field="thisoffice.country_id.name"/>
</t>
@@ -107,9 +107,9 @@
<h1 class="page-header">Statistics
<small class="pull-right d-none d-md-block mt16" id="filters">
<ul class="nav nav-tabs nav-tabs-inline graph-tabs" role="tablist">
<li class="active"><a aria-controls="all_time_charts" href="#all_time_charts" role="tab" data-toggle="tab">All Time</a></li>
<li><a aria-controls="last_month_charts" href="#last_month_charts" role="tab" data-toggle="tab">Last Month</a></li>
<li><a aria-controls="last_week_charts" href="#last_week_charts" role="tab" data-toggle="tab">Last Week</a></li>
<li class="nav-item"><a aria-controls="all_time_charts" href="#all_time_charts" class="nav-link active" role="tab" data-toggle="tab">All Time</a></li>
<li class="nav-item"><a aria-controls="last_month_charts" href="#last_month_charts" class="nav-link" role="tab" data-toggle="tab">Last Month</a></li>
<li class="nav-item"><a aria-controls="last_week_charts" href="#last_week_charts" class="nav-link" role="tab" data-toggle="tab">Last Week</a></li>
</ul>
</small>
</h1>
@@ -88,9 +88,9 @@
<h2 class="page-header">Your tracked links
<small class="pull-right d-none d-md-block mt16" id="filters">
<ul class="nav nav-tabs nav-tabs-inline graph-tabs" role="tablist">
<li class="active"><a aria-controls="filter-newest-links" href="#" id="filter-newest-links" role="tab" data-toggle="tab">Newest</a></li>
<li><a aria-controls="filter-most-clicked-links" href="#" id="filter-most-clicked-links" role="tab" data-toggle="tab">Most Clicked</a></li>
<li><a aria-controls="filter-recently-used-links" href="#" id="filter-recently-used-links" role="tab" data-toggle="tab">Recently Used</a></li>
<li class="nav-item"><a aria-controls="filter-newest-links" href="#" class="nav-link active" id="filter-newest-links" role="tab" data-toggle="tab">Newest</a></li>
<li class="nav-item"><a aria-controls="filter-most-clicked-links" href="#" class="nav-link" id="filter-most-clicked-links" role="tab" data-toggle="tab">Most Clicked</a></li>
<li class="nav-item"><a aria-controls="filter-recently-used-links" href="#" class="nav-link" id="filter-recently-used-links" role="tab" data-toggle="tab">Recently Used</a></li>
</ul>
</small>
</h2>
@@ -103,16 +103,17 @@
</div>
<div class="col-md-3">
<h2>Archives</h2>
<ul class="nav nav-pills nav-stacked" id="group_mode">
<li t-attf-class="#{mode=='thread' and 'active' or ''}">
<a t-attf-href="/groups/#{ slug(group) }?mode=thread">By thread</a>
<ul class="nav nav-pills flex-column" id="group_mode">
<li class="nav-item">
<a t-attf-href="/groups/#{ slug(group) }?mode=thread" t-attf-class="nav-link#{mode=='thread' and ' active' or ''}">By thread</a>
</li>
<li t-attf-class="#{mode=='date' and not date_begin and 'active' or ''}">
<a t-attf-href="/groups/#{ slug(group) }?mode=date">By date</a>
<ul class="nav nav-pills nav-stacked" style="margin-left: 8px;">
<li class="nav-item">
<a t-attf-href="/groups/#{ slug(group) }?mode=date" t-attf-class="nav-link#{mode=='date' and not date_begin and ' active' or ''}">By date</a>
<ul class="nav nav-pills flex-column" style="margin-left: 8px;">
<t t-foreach="archives" t-as="month_archive">
<li t-att-class="month_archive['date_begin'] == date_begin and 'active' or None">
<a t-ignore="True" t-attf-href="/groups/#{ slug(group) }?mode=date&amp;date_begin=#{ month_archive['date_begin'] }&amp;date_end=#{month_archive['date_end']}">
<li class="nav-item">
<a t-ignore="True" t-attf-href="/groups/#{ slug(group) }?mode=date&amp;date_begin=#{ month_archive['date_begin'] }&amp;date_end=#{month_archive['date_end']}"
t-attf-class="nav-link#{month_archive['date_begin'] == date_begin and ' active' or ''}">
<t t-esc="month_archive['date']"/>
<span class="pull-right badge" t-esc="month_archive['date_count']"/>
</a>
@@ -164,16 +165,17 @@
<div class="row">
<div class="col-md-3">
<h4>Browse archives</h4>
<ul class="nav nav-pills nav-stacked" id="group_mode">
<li t-attf-class="#{mode=='thread' and 'active' or ''}">
<a t-attf-href="/groups/#{ slug(group) }?mode=thread">By thread</a>
<ul class="nav nav-pills flex-column" id="group_mode">
<li class="nav-item">
<a t-attf-href="/groups/#{ slug(group) }?mode=thread" t-attf-class="nav-link#{mode=='thread' and ' active' or ''}">By thread</a>
</li>
<li t-attf-class="#{mode=='date' and not date_begin and 'active' or ''}">
<a t-attf-href="/groups/#{ slug(group) }?mode=date">By date</a>
<ul class="nav nav-pills nav-stacked" style="margin-left: 8px;">
<li class="nav-item">
<a t-attf-href="/groups/#{ slug(group) }?mode=date" t-attf-class="nav-link#{mode=='date' and not date_begin and ' active' or ''}">By date</a>
<ul class="nav nav-pills flex-column" style="margin-left: 8px;">
<t t-foreach="archives" t-as="month_archive">
<li t-att-class="month_archive['date_begin'] == date_begin and 'active' or None">
<a t-ignore="True" t-attf-href="/groups/#{ slug(group) }?mode=date&amp;date_begin=#{ month_archive['date_begin'] }&amp;date_end=#{month_archive['date_end']}">
<li class="nav-item">
<a t-ignore="True" t-attf-href="/groups/#{ slug(group) }?mode=date&amp;date_begin=#{ month_archive['date_begin'] }&amp;date_end=#{month_archive['date_end']}"
t-attf-class="nav-link#{month_archive['date_begin'] == date_begin and ' active' or ''}">
<t t-esc="month_archive['date']"/>
<span class="pull-right badge" t-esc="month_archive['date_count']"/>
</a>
@@ -21,12 +21,13 @@
<div class="row">
<div class="col-md-3 mb32" id="left_column">
<ul class="nav nav-pills nav-stacked mt16">
<li class="nav-header"><h3>Associations</h3></li>
<li t-att-class="'' if membership_id else 'active'"><a href="/members">All</a></li>
<ul class="nav nav-pills flex-column mt16">
<li class="nav-header nav-item"><h3>Associations</h3></li>
<li class="nav-item"><a href="/members" class="nav-link#{'' if membership_id else ' active'}">All</a></li>
<t t-foreach="memberships_data" t-as="membership_data">
<li t-att-class="membership_id and membership_data['id'] == membership_id and 'active' or None">
<a t-attf-href="/members/association/#{ membership_data['id'] }#{current_country and '/country/%s' % slug(current_country) or ''}#{ search }"><t t-esc="membership_data['name']"/></a>
<li class="nav-item">
<a t-attf-href="/members/association/#{ membership_data['id'] }#{current_country and '/country/%s' % slug(current_country) or ''}#{ search }"
t-attf-class="nav-link#{membership_id and membership_data['id'] == membership_id and ' active' or ''}"><t t-esc="membership_data['name']"/></a>
</li>
</t>
</ul>
@@ -79,11 +80,12 @@
<template id="opt_index_country" name="Location"
customize_show="True" inherit_id="website_membership.index">
<xpath expr="//div[@id='left_column']/ul[1]" position="after">
<ul class="nav nav-pills nav-stacked mt16">
<li class="nav-header"><h3>Location</h3></li>
<ul class="nav nav-pills flex-column mt16">
<li class="nav-header nav-item"><h3>Location</h3></li>
<t t-foreach="countries" t-as="country">
<li t-if="country['country_id']" t-att-class="country['country_id'] and country['country_id'][0] == current_country_id and 'active' or None">
<a t-attf-href="/members#{ membership_id and '/association/%s' % membership_id or '' }#{ country['country_id'][0] and '/country/%s' % slug(country['country_id']) or '' }#{ search }"><t t-esc="country['country_id'][1]"/>
<li t-if="country['country_id']" class="nav-item">
<a t-attf-href="/members#{ membership_id and '/association/%s' % membership_id or '' }#{ country['country_id'][0] and '/country/%s' % slug(country['country_id']) or '' }#{ search }"
t-attf-class="nav-link#{country['country_id'] and country['country_id'][0] == current_country_id and ' active' or ''}"><t t-esc="country['country_id'][1]"/>
<span class="badge pull-right"><t t-esc="country['country_id_count'] or '0'"/></span>
</a>
</li>
@@ -594,7 +594,7 @@
<template id="navigation_menu">
<div class="navspy" t-ignore="true" role="complementary">
<ul class="nav bs-sidenav" data-id="quote_sidebar">
<li><a href="#introduction">Introduction</a></li>
<li class="nav-item"><a href="#introduction" class="nav-link">Introduction</a></li>
</ul>
</div>
</template>
+21 -21
View File
@@ -40,9 +40,9 @@
<template id="header" inherit_id="website.layout" name="Header Shop My Cart Link">
<xpath expr="//header//ul[@id='top_menu']/li" position="before">
<t t-set="website_sale_order" t-value="website.sale_get_order()" />
<li class="divider d-none"/> <!-- Make sure the cart and related menus are not folded (see autohideMenu) -->
<li id="my_cart" t-att-class="'' if website_sale_order and website_sale_order.cart_quantity else 'd-none'">
<a href="/shop/cart">
<li class="nav-item divider d-none"/> <!-- Make sure the cart and related menus are not folded (see autohideMenu) -->
<li id="my_cart" t-attf-class="nav-item#{'' if website_sale_order and website_sale_order.cart_quantity else ' d-none'}">
<a href="/shop/cart" class="nav-link">
<i class="fa fa-shopping-cart"></i>
My Cart <sup t-attf-class="my_cart_quantity label label-primary" t-esc="website_sale_order and website_sale_order.cart_quantity or ''" />
</a>
@@ -268,9 +268,9 @@
<!-- Add to cart button-->
<template id="categories_recursive" name="Category list">
<li t-att-class="'active' if c.id == int(category or 0) else None">
<a t-att-href="keep('/shop/category/' + slug(c), category=0)" t-field="c.name"></a>
<ul t-if="c.child_id" class="nav nav-pills nav-stacked nav-hierarchy">
<li class="nav-item">
<a t-att-href="keep('/shop/category/' + slug(c), category=0)" t-field="c.name" t-attf-class="nav-link#{' active' if c.id == int(category or 0) else ''}"></a>
<ul t-if="c.child_id" class="nav nav-pills flex-column nav-hierarchy">
<t t-foreach="c.child_id" t-as="c">
<t t-call="website_sale.categories_recursive" />
</t>
@@ -280,9 +280,9 @@
<template id="products_categories" inherit_id="website_sale.products" active="False" customize_show="True" name="eCommerce Categories">
<xpath expr="//div[@id='products_grid_before']" position="inside">
<ul class="nav nav-pills nav-stacked mt16">
<li t-att-class=" '' if category else 'active' ">
<a t-att-href="keep('/shop',category=0)" class="o_not_editable">All Products</a>
<ul class="nav nav-pills flex-column mt16">
<li class="nav-item">
<a t-att-href="keep('/shop',category=0)" t-attf-class="nav-link#{'' if category else ' active'} o_not_editable">All Products</a>
</li>
<t t-foreach="categories" t-as="c">
<t t-call="website_sale.categories_recursive" />
@@ -298,12 +298,12 @@
</template>
<template id="option_collapse_categories_recursive" name="Collapse Category Recursive">
<li t-att-class="'active' if categ.id == int(category or 0) else None">
<li class="nav-item">
<i t-if="categ.child_id" t-attf-class="text-primary fa #{'fa-chevron-down' if categ.id in parent_category_ids else 'fa-chevron-right'}"
t-attf-title="#{'Unfold' if categ.id in parent_category_ids else 'Fold'}"
t-attf-aria-label="#{'Unfold' if categ.id in parent_category_ids else 'Fold'}" role="img"/>
<a t-att-href="keep('/shop/category/' + slug(categ), category=0)" t-field="categ.name"></a>
<ul t-if="categ.child_id" class="nav nav-pills nav-stacked nav-hierarchy" t-att-style="'display:block;' if categ.id in parent_category_ids else 'display:none;'">
<a t-att-href="keep('/shop/category/' + slug(categ), category=0)" t-attf-class="nav-link#{' active' if categ.id == int(category or 0) else ''}" t-field="categ.name"></a>
<ul t-if="categ.child_id" class="nav nav-pills flex-column nav-hierarchy" t-att-style="'display:block;' if categ.id in parent_category_ids else 'display:none;'">
<t t-foreach="categ.child_id" t-as="categ">
<t t-call="website_sale.option_collapse_categories_recursive" />
</t>
@@ -313,9 +313,9 @@
<template id="option_collapse_products_categories" name="Collapsible Category List" inherit_id="website_sale.products_categories" active="False" customize_show="True">
<xpath expr="//div[@id='products_grid_before']/ul" position="replace">
<ul class="nav nav-pills nav-stacked mt16" id="o_shop_collapse_category">
<li t-att-class=" '' if category else 'active' ">
<a t-att-href="keep('/shop',category=0)" class="o_not_editable">All Products</a>
<ul class="nav nav-pills flex-column mt16" id="o_shop_collapse_category">
<li class="nav-item">
<a t-att-href="keep('/shop',category=0)" t-attf-class="nav-link#{'' if category else ' active'} o_not_editable">All Products</a>
</li>
<t t-foreach="categories" t-as="categ">
<t t-call="website_sale.option_collapse_categories_recursive" />
@@ -328,9 +328,9 @@
<xpath expr="//div[@id='products_grid_before']" position="inside">
<form class="js_attributes" method="get">
<input type="hidden" name="search" t-att-value="search" />
<ul class="nav nav-pills nav-stacked mt16">
<ul class="nav nav-pills flex-column mt16">
<t t-foreach="attributes" t-as="a">
<li t-if="a.value_ids and len(a.value_ids) &gt; 1">
<li t-if="a.value_ids and len(a.value_ids) &gt; 1" class="nav-item">
<div>
<strong t-field="a.name" />
</div>
@@ -343,10 +343,10 @@
</select>
</t>
<t t-if="a.type == 'radio'">
<ul class="nav nav-pills nav-stacked">
<ul class="nav nav-pills flex-column">
<t t-foreach="a.value_ids" t-as="v">
<li t-att-class="'active' if v.id in attrib_set else None">
<label style="margin: 0 20px;">
<li class="nav-item">
<label style="margin: 0 20px;" t-attf-class="nav-link#{' active' if v.id in attrib_set else ''}">
<input type="checkbox" name="attrib" t-att-value="'%s-%s' % (a.id,v.id)" t-att-checked="'checked' if v.id in attrib_set else None" />
<span style="font-weight: normal" t-field="v.name" />
</label>
@@ -468,7 +468,7 @@
<t t-placeholder="select">
<input type="hidden" class="product_id" name="product_id" t-att-value="product.product_variant_id.id if len(product.product_variant_ids) == 1 else '0'" />
<t t-call="website_sale.variants">
<t t-set="ul_class" t-value="'nav-stacked'" />
<t t-set="ul_class" t-value="'flex-column'" />
</t>
</t>
<t t-call="website_sale.product_price" />
@@ -29,8 +29,8 @@
<xpath expr="//header//ul[@id='top_menu']/li[@id='my_cart']" position="after">
<t t-if="request.env.ref('website_sale_wishlist.add_to_wishlist').active">
<t t-set='wishcount' t-value="len(request.env['product.wishlist'].current())"/>
<li id="my_wish" t-att-style="not wishcount and 'display:none;'">
<a href="/shop/wishlist">
<li id="my_wish" class="nav-item" t-att-style="not wishcount and 'display:none;'">
<a href="/shop/wishlist" class="nav-link">
<i class="fa fa-heart"/>
Wishlist <sup t-attf-class="my_wish_quantity o_animate_blink label label-primary"><t t-esc='wishcount'/></sup>
</a>
@@ -8,7 +8,7 @@ $panel-footer-bg: #f5f5f5 !default;
$nav-link-hover-bg: #FFFFFF !default;
$navbar-default-link-color: #777 !default;
$navbar-default-link-hover-color: #333 !default;
$navbar-default-bg: #f8f8f8 !default;
$light: #f8f8f8 !default;
$MAX-Z-INDEX : 2147483647 !default;
@mixin top-covered-image {
@@ -17,7 +17,7 @@ $MAX-Z-INDEX : 2147483647 !default;
}
.oe_slides_panel_footer {
background-color: $navbar-default-bg;
background-color: $light;
}
.oe_slides_panel_footer .fa, .oe_slide_js_embed_option_link{
+27 -22
View File
@@ -123,26 +123,31 @@
<!-- Navigation -->
<div class="col-md-8 col-sm-12 col-xs-12">
<ul class="nav nav-tabs nav-tabs-border" role="tablist">
<li t-attf-class="#{not slide_type and 'active' ''}">
<a t-attf-href="/slides/#{slug(channel)}#{category and '/category/' + slug(category) or ''}"> <i class="fa fa-home"/> Home</a>
<li class="nav-item">
<a t-attf-href="/slides/#{slug(channel)}#{category and '/category/' + slug(category) or ''}"
t-attf-class="nav-link#{not slide_type and ' active' or ''}"> <i class="fa fa-home"/> Home</a>
</li>
<li t-if="header_object.nbr_presentations" t-attf-class="#{slide_type == 'presentation' and 'active' ''}">
<a t-attf-href="/slides/#{slug(channel)}#{category and '/category/' + slug(category) or ''}/presentation">
<li t-if="header_object.nbr_presentations" class="nav-item">
<a t-attf-href="/slides/#{slug(channel)}#{category and '/category/' + slug(category) or ''}/presentation"
t-attf-class="nav-link#{slide_type == 'presentation' and ' active' or ''}">
<span class="badge" t-esc="header_object.nbr_presentations"/> Presentations
</a>
</li>
<li t-if="header_object.nbr_videos" t-attf-class="#{slide_type == 'video' and 'active' ''}">
<a t-attf-href="/slides/#{slug(channel)}#{category and '/category/' + slug(category) or ''}/video">
<li t-if="header_object.nbr_videos" class="nav-item">
<a t-attf-href="/slides/#{slug(channel)}#{category and '/category/' + slug(category) or ''}/video"
t-attf-class="nav-link#{slide_type == 'video' and ' active' or ''}">
<span class="badge" t-esc="header_object.nbr_videos"/> Videos
</a>
</li>
<li t-if="header_object.nbr_documents" t-attf-class="li #{slide_type == 'document' and 'active' ''}">
<a t-attf-href="/slides/#{slug(channel)}#{category and '/category/' + slug(category) or ''}/document">
<li t-if="header_object.nbr_documents" class="li nav-item">
<a t-attf-href="/slides/#{slug(channel)}#{category and '/category/' + slug(category) or ''}/document"
t-attf-class="nav-link#{slide_type == 'document' and ' active' or ''}">
<span class="badge" t-esc="header_object.nbr_documents"/> Documents
</a>
</li>
<li t-if="header_object.nbr_infographics" t-attf-class="#{slide_type == 'infographic' and 'active' ''}">
<a t-attf-href="/slides/#{slug(channel)}#{category and '/category/' + slug(category) or ''}/infographic">
<li t-if="header_object.nbr_infographics" class="nav-item">
<a t-attf-href="/slides/#{slug(channel)}#{category and '/category/' + slug(category) or ''}/infographic"
t-attf-class="nav-link#{slide_type == 'infographic' and ' active' or ''}">
<span class="badge" t-esc="header_object.nbr_infographics"/> Infographics
</a>
</li>
@@ -477,28 +482,28 @@
</div>
<div class="mt8 mb32">
<ul class="nav nav-tabs" role="tablist">
<li t-att-class="not comments and 'active' or None">
<a aria-controls="about" href="#about" role="tab" data-toggle="tab">
<li class="nav-item">
<a href="#about" aria-controls="about" t-attf-class="nav-link#{not comments and ' active' or ''}" role="tab" data-toggle="tab">
<i class="fa fa-home"></i> About
</a>
</li>
<li>
<a aria-controls="share" href="#share" role="tab" data-toggle="tab">
<li class="nav-item">
<a href="#share" aria-controls="share" class="nav-link" role="tab" data-toggle="tab">
<i class="fa fa-share-alt"></i> Share
</a>
</li>
<li t-att-class="comments and 'active' or None">
<a aria-controls="discuss" href="#discuss" role="tab" data-toggle="tab">
<li class="nav-item">
<a href="#discuss" aria-controls="discuss" t-attf-class="nav-link#{comments and ' active' or ''}" role="tab" data-toggle="tab">
<i class="fa fa-comments-o"></i> Comments
</a>
</li>
<li>
<a aria-controls="transcript" href="#transcript" role="tab" data-toggle="tab">
<li class="nav-item">
<a href="#transcript" aria-controls="transcript" class="nav-link" role="tab" data-toggle="tab">
<i class="fa fa-align-justify"></i> Transcript
</a>
</li>
<li>
<a aria-controls="statistic" href="#statistic" role="tab" data-toggle="tab">
<li class="nav-item">
<a href="#statistic" aria-controls="statistic" class="nav-link" role="tab" data-toggle="tab">
<i class="fa fa-bar-chart"></i> Statistics
</a>
</li>
@@ -623,8 +628,8 @@
</div>
<div class="col-lg-4 col-md-4 col-sm-12 col-xs-12">
<ul class="nav nav-tabs" role="tablist">
<li class="active"><a aria-controls="related" href="#related" data-toggle="tab" role="tab">Related</a></li>
<li><a aria-controls="most_viewed" href="#most_viewed" data-toggle="tab" role="tab">Most Viewed</a></li>
<li class="nav-item"><a aria-controls="related" href="#related" class="nav-link active" data-toggle="tab">Related</a></li>
<li class="nav-item"><a aria-controls="most_viewed" href="#most_viewed" class="nav-link" data-toggle="tab">Most Viewed</a></li>
</ul>
<div class="tab-content">
<div role="tabpanel" id="related" class="tab-pane active mt4">
+4 -4
View File
@@ -158,13 +158,13 @@ class TranslationToolsTestCase(unittest.TestCase):
terms = []
source = """<t t-name="stuff">
<ul class="nav navbar-nav">
<li>
<a class="oe_menu_leaf" href="/web#menu_id=42&amp;action=54">
<li class="nav-item">
<a class="nav-link oe_menu_leaf" href="/web#menu_id=42&amp;action=54">
<span class="oe_menu_text">Blah</span>
</a>
</li>
<li class="dropdown" id="menu_more_container" style="display: none;">
<a class="dropdown-toggle" data-toggle="dropdown" href="#">More <b class="caret"/></a>
<li class="nav-item dropdown" id="menu_more_container" style="display: none;">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#">More <b class="caret"/></a>
<div class="dropdown-menu" id="menu_more"/>
</li>
</ul>
@@ -179,7 +179,7 @@ odoo.define('web.test.x2many', function (require) {
}, { // add message d
content: "create new message d",
trigger: '.tab-pane:eq(0) .o_field_x2many_list_row_add a',
extra_trigger: 'li.active a[data-toggle="tab"]:contains(Messages)',
extra_trigger: 'a[data-toggle="tab"].active:contains(Messages)',
}, {
content: "insert body",
trigger: 'textarea[name="body"]:first',
@@ -432,7 +432,7 @@ odoo.define('web.test.x2many', function (require) {
}, { // add message eee
content: "create new message eee",
trigger: '.tab-pane:eq(0) .o_field_x2many_list_row_add a',
extra_trigger: 'li.active a[data-toggle="tab"]:contains(Messages)',
extra_trigger: 'a[data-toggle="tab"].active:contains(Messages)',
}, {
content: "change text value",
trigger: 'textarea[name="body"]:first',