Commit Graph
10240 Commits
Author SHA1 Message Date
Christophe Simonis a6e401a2ee [MERGE] forward port branch 11.0 up to 44ea58234e 2018-07-30 14:08:56 +02:00
qsm-odoo a842f6b3ee [FIX] web: BS4, left-align buttons in modal footers
Modal footers now use flex to vertically center buttons. So our
left-align style overridde had to be adapted. Also, we sometimes
use footer buttons as non-direct children of the modal-footer, which
is not a supported BS4 case, so we had to adapt that too.
2018-07-30 12:57:27 +02:00
Lucas Perais (lpe) dc253ff1c6 [FIX] web: kanban progress bar, auto width
Have ~50 records in a column,
Mark 49 of them as blocked (kanban_state field)
Mark 1 or 2 as done

Before this commit, the bar that showed the proportions of blocked objects was invisible
This was because the min-width of a bar was 10px, without max-width
Leaving the red bar to 95% or something, the green bar to 10px
All of this overflowing 100%

After this commit, we compute max-width and min-width to be able to fit everything
within the progress bar

OPW 1867464
closes #25962
2018-07-30 09:24:16 +02:00
Alexandre Kühn 66dd126053 [FIX] web: empty input for empty password field
Revision on https://github.com/odoo/odoo/commit/4b3588feb2b7e260bf237b0f3944c90cdc47c3b5

In order to not replace characters with '*' in edit mode (because of `input`
with type 'password'), the above commit did not format the value at all.
The formatter of a char with the option 'isPassword' turns all of its
characters into '*'. That is not intended for password inputs, because the
content is hidden by the browser with the 'password' type.

The issue with not using the formatter is that an empty field has the value
`false`, so an empty password field produces an non-empty password input with
its value to 'false'.

This commit fixes the issue by forcing empty string for empty password values.

Note: if you use an integer field with password, falsy values (e.g. `0`) become
empty strings in the input value.
2018-07-27 18:20:02 +02:00
Alexandre Kühn 4b3588feb2 [FIX] web: edited password fields should not contain '*'
Before this commit, when someone was editing a password, the stored
password may not be the expected one by the user.

Steps to reproduce:

	1. Open "Outgoing Mail Servers" form.
	2. Set a password (e.g. "yop").
	3. Save, then edit.
	4. Add "y" at the end of the password field.

	> Expected value: "yopy"
	> Actual value: "***y"

This is due to the use of the char field formatter, which displays passwords
by replacing the characters with '*'. It is not necessary to do this in edit
mode, because it uses an input field of type 'password'. The browser
automatically hides the value of such inputs.

Any changes on a input field in edit mode uses the value of the input, so the
value of an password input should contain the password, without '*'.

This commit fixes the issue by using the formatter in edit mode for the input
of type 'password'.

Task-ID 1869565
2018-07-27 15:02:49 +02:00
qsm-odoo 519594e9ca [IMP] web: make one list view test better
The test which checks if the table column widths do not change when
switching to edit mode and back to readonly mode was not properly
written, which made its debugging difficult.
2018-07-27 12:36:54 +02:00
qsm-odoo 63b0bff4c7 [REF] web: BS4, disable problematic test
One small village of indomitable Gauls still holds out against the
invaders. With previous commit, some BS4 tests were solved by patching
our assets bundling system. This commit handles the only remaining test
that fails... by disabling it. Again, only PhantomJS fails to execute
that test, so this test should simply be reenabled by reverting this
commit as soon as we implement a better test system than PhantomJS.
2018-07-27 12:36:54 +02:00
qsm-odoo 85dc63345e [REF] web: BS4, review kanban design 2018-07-27 12:36:54 +02:00
qsm-odoo 6dc37ee461 [REF] web, *: share and adapt code for auto "more" buttons for navbars
* portal, web_tour, website, base

Before this commit, there were 3 different implementations for the same
feature: the "more" button in the community navbar, the "+" button for
the website menu and the "+" button in the enterprise navbar. As those
implementation were now broken with BS4, it was a good time to share the
code of those 3 features.
2018-07-27 12:36:54 +02:00
qsm-odoo 76f714dca8 [REF] web, web_editor, *: review theme color extensions
* survey, website_slides

Before this commit, the web_editor app created bg and text classes its
own way for theming (alpha, beta, grays, ...). Now the system is far
more automatic by extending BS4 color maps.
2018-07-27 12:36:54 +02:00
qsm-odoo d9801c1abe [REF] web_editor, *: BS4, restore preservation mixins and adapt modals
* web, website
2018-07-27 12:36:54 +02:00
qsm-odoo 582933ac01 [REF] *: BS4, replace 'btn-xs' by 'btn-sm'
In a previous commit, we removed the use of the 'btn-sm' classes as we
used it everywhere for default-size buttons instead of customizing the
size of those default-size buttons directly.

This commit proves it was even more necessary as the 'btn-xs' class does
not exist anymore in BS4 and we so can use the 'btn-sm' class instead.
2018-07-27 12:36:54 +02:00
qsm-odoo a6a3e74ebf [REF] web, *: BS4, adapt radio button structure
Use BS4 *custom* structure for radio buttons to allow customizing
their style and have cross-browser style.
2018-07-27 12:36:54 +02:00
qsm-odoo ee65b44d9e [REF] *: BS4, adapt the label component structure
The '.label' elements have been replaced by '.badge' elements without
the 'badge-pill' class.
2018-07-27 12:36:54 +02:00
qsm-odoo d48b8593dd [REF] *: BS4, 'pull-left/right' -> 'float-left/right' 2018-07-27 12:36:54 +02:00
qsm-odoo 7285e152c1 [REF] *: BS4, adapt the badge component structure
The '.badge' elements must now also use the 'badge-pill' class to get
the same style as before as '.badge' elements without it are meant to
replace the old 'label' component.
2018-07-27 12:36:54 +02:00
qsm-odoo f4fbaf1efa [REF] web, *: BS4, use custom BS4 checkbox everywhere
Before this commit, Odoo used checkboxes in three different ways:

- A simple <input type="checkbox"/>, mainly in the frontend. The style
  is browser dependant.

- Same as above but with the BS3, checkbox structure. The style is still
  the same, but the alignement is supposed to be better (which is not
  always the case).

- The Odoo official structure:
	```
	<div class="o_checkbox">
	    <input type="checkbox"/>
	    <span/>
	</div>
	```
  which allows to have a cross-browser checkbox style and correct
  alignements.

The goal after this commit is to only use the BS4 *custom* checkbox
structure to achieve the same goal as our official structure (and
remove that one):

```
<div class="custom-control custom-checkbox">
  <input type="checkbox" class="custom-control-input" id="customCheck1">
  <label class="custom-control-label" for="customCheck1">...</label>
</div>
```

/!\ Labels are now required (use a zero-width space if necessary)
2018-07-27 12:36:54 +02:00
qsm-odoo 6e223b9273 [REF] *: BS4, adapt tables (and list view)
`table-condensed` -> `table-sm`

Also SCSS variables were renamed.
Also restore list view design.
2018-07-27 12:36:54 +02:00
qsm-odoo 93b0001df6 [REF] *: BS4, adapt forms
The 'form-horizontal' class have been removed; the '.form-group'
elements must now use the 'row' class for an horizontal layout.

The 'control-label' class was renamed to 'col-form-label'.

The 'help-block' class was renamed to 'form-text'.

The 'has-error' and 'has-success' classes have been removed and
replaced by a new system using the :valid and :invalid pseudo-classes,
when a parent has the 'was-validated' class. While this system is great,
it is not straightforward to use it in Odoo. Fortunately, BS4 provides
the 'is-valid' and 'is-invalid' classes as fallback. This commit
replaces the 'has-error' and 'has-success' classes by 'o_has_error' and
'o_has_success' classes (for JS compatibility) and use the 'is-*'
fallback classes. (The 'has-warning' class has no equivalent but was
unused in Odoo anyway).
2018-07-27 12:36:54 +02:00
qsm-odoo 443735949e [REF] *: BS4, replace img-rounded/img-circle classes
'img-rounded' -> 'rounded'
'img-circle' -> 'rounded-circle'
2018-07-27 12:36:54 +02:00
qsm-odoo b437808f66 [REF] *: BS4, adapt input-group structure
The input-group-addon class has been replaced by a combination of the
input-group-text and the input-group-append/prepend classes. The
input-group-btn class is replaced by the input-group-append/prepend
classes.
2018-07-27 12:36:54 +02:00
qsm-odoo ed1b18f103 [REF] *: BS4, adapt col-related classes
col-lg-* -> col-xl-*
col-md-* -> col-lg-*
col-sm-* -> col-md-*
col-xs-* -> col-*

col-lg-offset-* -> offset-xl-*
col-md-offset-* -> offset-lg-*
col-sm-offset-* -> offset-md-*
col-xs-offset-* -> offset-*

col-lg-pull-* -> order-xl-1
col-md-pull-* -> order-lg-1
col-sm-pull-* -> order-md-1
col-xs-pull-* -> order-1

col-lg-push-* -> order-xl-2
col-md-push-* -> order-lg-2
col-sm-push-* -> order-md-2
col-xs-push-* -> order-2
2018-07-27 12:36:54 +02:00
qsm-odoo 66289d639c [REF] *: BS4, review breadcrumb structure
Now, the 'breadcrumb-item' class has to be put explicitely on
breadcrumb items.
2018-07-27 12:36:54 +02:00
qsm-odoo 318b10cce4 [REF] *: use 'light' color and reset 'gray' palette
See previous commit for more explanation.
2018-07-27 12:36:54 +02:00
qsm-odoo d8c217a67d [REF] *: BS4, review color system
Odoo used to declare two main colors: primary and optional (which are
purple and turquoise in enterprise). Those were respectively assigned
to the 'primary' bootstrap variable and the 'btn-primary' bootstrap
variable.

BS4, however, does not allow to have a different primary color for
buttons. Instead, the 'primary' color is used for all 'primary' related
components and utility classes, same as for all other colors. So, if we
want to keep our enterprise buttons green, our 'optional' colors had to
become our 'primary' color. The old odoo primary is then renamed to the
'odoo' color.

The palette of grays is now larger by default and is numbered from 100 to
900 alongside the $black and $white variables. The equivalence for older
variables and the way we used them is:

$gray-darker          ->  gray 900 (unused before)
$gray-dark            ->  gray 900
$gray                 ->  gray 700
$gray-light           ->  gray 600
$gray-lighter-darker  ->  gray 400 (the old variable was created by us)
$gray-lighter-dark    ->  gray 300 (the old variable was created by us)
$gray-lighter         ->  gray 200

Fortunately, the 'lighter' variations we created fit well in the default
BS4 system ! Unfortunately, our $gray-lighter which carried the same
function as $gray-200 (see above) is very close to the new default
$gray-100 and quite distant from the new $gray-200. This will be handled
in the next commit.
2018-07-27 12:36:54 +02:00
qsm-odoo cba48da727 [REF] *: BS4, rename border-radius related variables
$border-radius-base -> $border-radius
$border-radius-large -> $border-radius-lg
$border-radius-small -> $border-radius-sm
2018-07-27 12:36:54 +02:00
qsm-odoo 09f40036b9 [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.
2018-07-27 12:36:54 +02:00
qsm-odoo de214e3742 [REF] *: BS4, 'img-responsive' -> 'img-fluid' 2018-07-27 12:36:54 +02:00
qsm-odoo 3467a90c00 [REF] *: BS4, the $text-color variable was renamed to $body-color 2018-07-27 12:36:54 +02:00
qsm-odoo 4ac446e328 [REF] *: BS4, adapt font-size and padding variables
BS variables were renamed or changed and all (most) variables now
use 'rem' units instead of 'px' unit.
2018-07-27 12:36:54 +02:00
qsm-odoo 1c1c0897e8 [REF] *: BS4, adapt dropdowns and carets
- The dropdown structure was simplified, allowing to get rid of the
  3-levels structure induced by <ul/> elements and dropdowns can now
  contain anything. The class 'dropdown-item' is now mandatory for
  each dropdown clickable element. The class 'dropdown-item-text' can
  be used to add same padding and style but without making the element
  have a clickable look.

- Dividers now use the class 'dropdown-divider'

- The way dropdowns are opened and hidden also changed (before the
  'open' class was added on the `.dropdown-menu` parent, now the
  'show' class is added on both the `.dropdown-menu` parent and the
  `.dropdown-menu` itself).

- JS-wise, no click event handlers can be put on `.dropdown-toggle`
  elements anymore (instead, use handlers for dropdown events).

- Carets are automatically put on `.dropdown-toggle` elements, so this
  commit replaces the `.caret` elements with this. This feature was
  possible to disable but would prevent us from adding a caret with
  scss. Also, this simplifies the DOM. The 'o-no-caret' class was also
  introduced to allow using the 'dropdown-toggle' class on non-caret
  elements.

- Also adapt the scss to use $caret-width instead of $caret-width-base
2018-07-27 12:36:54 +02:00
qsm-odoo 220e49f9d6 [REF] web, mail: get rid of the btn-icon class
That was pretty useless, better use the btn-secondary class and add
particular rules to `.btn.fa` if necessary.
2018-07-27 12:36:54 +02:00
qsm-odoo c59380bac5 [REF] *: BS4, rename btn-default to btn-secondary
BS4 "btn-default" class was replaced with "btn-secondary", which makes
more sense.
2018-07-27 12:36:54 +02:00
qsm-odoo 81f359c81c [REF] *: BS4, remove the use of btn-sm
Odoo made the bad choice of using the 'btn-sm' class for every button
instead of configuring the padding for default 'btn' to be smaller.
In BS4, the style of btn-sm is actually more complex, lowering the
font-size too. Also, btn-xs was removed so we would not have the
possibility to display smaller button than our default ones.

This commit removes btn-sm wherever it was used. Unfortunately, this
might remove it at some places where it made sense but this can be
restored in a second time.
2018-07-27 12:36:54 +02:00
qsm-odoo 7f10b55a50 [REF] *: BS4, adapt display classes
The system completely changed. I also had to adapt classes to new
screen breakpoints.

hidden/hide -> d-none
show -> d-block
hidden-xs -> d-none d-md-(block/inline/...)
hidden-sm -> d-md-none d-lg-(block/inline/...)
hidden-md -> d-lg-none d-xl-(block/inline/...)
hidden-lg -> d-xl-none
visible-xs-* -> d-* d-md-none
visible-sm-* -> d-none d-md-* d-lg-none
visible-md-* -> d-none d-lg-* d-xl-none
visible-lg-* -> d-none d-xl-*
hidden-print -> d-print-none
visible-print-* -> d-none d-print-*
...
and all possible combination of those had to be handled too.
2018-07-27 12:36:54 +02:00
qsm-odoo ea7c3f4a69 [REF] *: BS4, get rid of the removed 'square' mixin 2018-07-27 12:36:54 +02:00
qsm-odoo 193d85152c [REF] *: BS4, adapt container variables
The variables are now an unique map. As the screen sizes' names changed,
the container names changed accordingly.
2018-07-27 12:36:54 +02:00
qsm-odoo f2a1ca1f04 [REF] web, *: BS4, update JS media queries
* website_quote, website_sale
2018-07-27 12:36:54 +02:00
qsm-odoo 0ca6d39777 [REF] *: BS4, adapt media queries
media queries that target a specific screen size handled by bootstrap
have now a more convenient way to be defined:

```
@​media (min-width: $screen-sm-min) { ... }
->
@​include media-breakpoint-up(sm) { ... }
```

```
@​media (max-width: $screen-sm-max) { ... }
->
@​include media-breakpoint-down(sm) { ... }
```

```
@​media (min-width: $screen-sm-min) and (max-width: $screen-sm-max) { ... }
->
@​include media-breakpoint-only(sm) { ... }
```

```
@​media (min-width: $screen-sm-min) and (max-width: $screen-md-max) { ... }
->
@​include media-breakpoint-between(sm, md) { ... }
```

Also, bootstrap has changed the values for its default screen sizes:

------------------
     | BS3 | BS4 |
------------------
0    | XS  | XS  | -> Portrait Mobile
576  | /   | SM  | -> Landscape Mobile
768  | SM  | MD  | -> Portrait Tablet
992  | MD  | LG  | -> Landscape Tablet / Small Desktop
1200 | LG  | XL  | -> Desktop
------------------

While it is possible to configure BS variables to behave as BS3, we took
the decision to keep the BS4 variables untouched. BS4 system seems
indeed better and having the purest bootstrap possible is better for
Odoo to be used as a framework.
2018-07-27 12:36:54 +02:00
qsm-odoo 4a0a41d9b9 [REF] web: BS4, review backend variables customization 2018-07-27 12:36:54 +02:00
qsm-odoo 43d2db9439 [FIX] web: restore datepicker lib patches
Patches were introduced by Odoo in the lib and have been removed
while updating it to "tempus dominus". This commit restores them.

See:
- https://github.com/odoo/odoo/commit/3741603495532e218b66f3cfa0272e4536f1cf2c
- https://github.com/odoo/odoo/commit/ab42507d460125c5ee81bb6b4b859146494339ac
2018-07-27 12:36:54 +02:00
qsm-odoo 6692919d1e [REF] web, *: update bootstrap-datetimepicker to tempusdominus
* website_form, debian

Our old library for datetimepicker for bootstrap 3 is deprecated and
an updated version is developed by the same team under the new name
"tempusdominus", for bootstrap 4.

The lib is imported by taking the *unminified build* JS and the *src*
scss. Odoo is also bundling the lib better by putting the scss file
in both backend and frontend assets instead of only in common (so that
the scss is compiled differently for the frontend and the backend).

Note: the lib also needed to be patched inline to solve a bug at one
line.
2018-07-27 12:36:54 +02:00
qsm-odoo 2d5595fcba [REF] web, *: BS4, adapt use of tooltip/popover.js 2018-07-27 12:36:54 +02:00
qsm-odoo 770aec399c [REF] *: get rid of vendor prefixes
BS4 do not provide vendor prefixes scss mixins anymore as it is meant
to be used with the 'autoprefixer' library. As we only support the last
version of every major browsers in Odoo, we took the decision to not
use the library as it was also complex to integrate in Odoo. We decided
to do the library's work by hand if it ever become necessary.
2018-07-27 12:36:54 +02:00
qsm-odoo a991a579bc [REF] web: add the 'popper' library
Since bootstrap 4.0.0, the 'popper' library is a dependency.
2018-07-27 12:36:54 +02:00
qsm-odoo 9d90c7ea7b [IMP] base, web: update bootstrap 3.3.7 to 4.1.3
Simply updating the lib, the assets bundle content and the assets bundle
compiler.
2018-07-27 12:36:54 +02:00
Laurent Smet b5bb5bd421 [IMP] account: automatic communication management on out_invoices
On the accounting config, you can select an automatic way to compute the
reference on invoice and then, improve the reconciliation in a later task:
- free communication: set what you want as reference (default)
- based on partner: find the partner more easily
- based on number: retrieve the invoice directly

Was task: 1847703
Was part of PR #25921
2018-07-26 22:45:41 +02:00
Christophe Simonis 93e689d1c2 [MERGE] forward port branch 11.0 up to 1353abecbe 2018-07-26 12:58:46 +02:00
Christophe Simonis 4b9d6387b8 [MERGE] forward port branch saas-15 up to e80a0d4aa9 2018-07-25 18:11:41 +02:00
Martin Geubelle 0f03f57034 [FIX] web: look into the DOM for loadCSS
Since rev. odoo/odoo@0dd6a0b loadCSS function in ajax returns a promise
in order to known when the stylesheet is loaded.

It uses a local cache to avoid fetching the file multiple times.
However, the lazy loaded lib could already be in the DOM (in the
test bundle for example). In this case, the file was fetched twice.

In this case, the cache is now filled with a resolved promise.
2018-07-25 15:08:52 +02:00