- Preserved explicit 3rd-party copyright notices
- Explicit boilerplate should not be necessary - copyright law applies
automatically in all countries thanks to Berne Convention + WTO rules,
and a reference to the applicable license is clear enough.
Let arrow keys, tab and escape pass through. We still want users to be
able to use eg. arrow keys to be used when selecting a radio item. This
will always work in Chrom{e,ium} because they do not dispatch keypress
events for these types of keys, only keydown/keyup events. Firefox does
dispatch keypress events. This makes sure that we do not touch those
types of events in Firefox.
devices have to fire keypresses every 50ms minimum
Previously this was 100ms. This works just as well, but was mainly in
there for testing purposes.
Before this, users were only able to press a key when all other keys
were released to prevent a key from repeating. This works but when
typing you usually press the next key before releasing the current
one. This allows users to do exactly that while still blocking keys from
repeating.
Implement a new way of dealing with barcode events. This was necessary
because the old way of dealing with input coming from barcode devices
did not stop keyevents. This lead to all kinds of issues (eg. barcode
reader output being inserted as tender in a paymentline).
This new class inserts itself so that it handles all keyevents before
everything else. This means that it has authority on what keypress
events pass and which ones do not. It differentiates between 'real'
keyboard input and input coming from devices by buffering events. When a
certain amount of events come in fast enough, it is handled as a barcode
and a 'barcode_scanned' event is emitted on core.bus. When buffered
events are decided to not be a barcode, they are recreated and
redispatched.
Rebasing a merge commit with a lot of conflicts is a real pain as every
non-automatic conflicts should be redo manually (especially when there
is a lot of file rename that git cannot follow)
When loading an action using a specific url, with
a view_type different than the default view of the action
(e.g. Project > Project > Issues has as view order
kanban, list, calendar, form, graph, and try to load
this menu action from an url, but by specifying another view_type
than 'kanban', for instance, 'list'), the default loaded view was
always the first view, and then a switch was done to go to the view_list.
It caused issues when using a filter needing a field available in the list
view but not in the kanban view.
It also lead to an issue in the reporting, when trying to load a reporting
action with a view not being the first one of the action
(e.g. Reporting > Project > Issues Analysis, switch to the second view
'Graph', and then refresh -> Error).
This revision makes so the view from the view_type url arg is directly loaded.
opw-640289
and the render of the buttons.
The sibar menu can depends on the current view and fields
states.
We therefore have to wait for them to be loaded before loading
the sidebar.
Before this rev., loading a report view (in the reporting menu),
leaded to a crash, due to this revision: ac92551406.
opw-640409
For report with duplicated named headers, several columns could get
squashed together.
This fix check if a value is a duplicate or not, and if it is a
duplicates postfix an number allowing to differentiate the two headers
(for the human and the javascript).
closes#6722
opw-634771
This commit introduces a new view type, the timeline view. This view is
intended to display messages like the previous chatter. This is now a view
like the form or list view. Like other views it will be possible to have
custom templates for some specific needs, allowing customization.
[IMP] mail: the value tracking is modified. Previously messages were created
containing the modified values. Those values are now stored, using a new
model mail.tracking.value. The message body is dynamically build based on
the values. Tests have been updated.
This version is temporary. Indeed two main modifications will come in a short
future :
- the new design will improve the display
- the slack mode will change the way the Inbox and notifications are managed
All glory to the Hypnotoad.
Special thanks to Valerie Pirenne (vpi), Jerome Maes (jem) and Richat Mathot
(rim) that did not code but said a lot of things. Martin Trigaux (mat) did
nothing, a bit like for the slides modules, but he is busy sending emails.
To be able to see record attachments, you need to have
read access to the record.
To be able to add or delete attachment, you need to
have write access to the record.
The button add/delete were displayed as soon
as you had the read access, but if you had not the
write access, both buttons failed.
This revision do not display the add/delete
buttons of Attachment dropdown menu if you do not
have the right to add / delete attachments to the record
(you do not have write access to the record)
opw-640242
This reverts commit 6c0376e932.
It turns out that this javascript code was not unused after all.
(see kanban view inside customers, clicking on them should open the
contact in a popup)
based on bootstrap contextual colors, and bold/italic fonts.
Backward compatibility is ensured as the ListView is monkey-patched
to keep interpreting colors and fonts attributes.
This commit adds event bubbling in the event dispatcher mixin (which
inherits from parentedmixins). To do this, it introduces a new small
class 'OdooEvent', which register the target and if the event is stopped.
Also, widgets have a new 'custom_events' dictionary to easily register
callbacks like the event dictionary.
The bus class listen for many mouse/keyboard events and trigger them on
itself. This was intended for the main bus, but not for custom buses.
This commit should improve the performance when using many buses.
In some cases (for example, some popup dialogs with a form view), the
one2many field is destroyed but the async code still tries to append
a view manager to itself. The result is that the start method of the
view manager is run, resulting in at least an useless fieldviewget.
each time the rpc_error function was called. There was several call
to setInterval method, and several block were created with the same
content.
Also, the banner was not centered, and a blur effect was created
by the fa-spin class
List view elements were not displayed when printing a list view via the
browser interface.
Also now, with firefox (and maybe other browser but not with webkit
based ones) the page break should not happen in the middle of a row
(hence something cutting a sentence vertically on two pages).
closes#6581
opw-634588
When using another decimal separator than `.` (dot)
in the language settings,
it wasn't possible to build an advanced search specifying
the decimals.
e.g. with a language with decimal separator `,` and thousand
separator `.`,
if you want to search invoices with amount total 366,38
The advanced search "Total" "is equal to" obliged you
to enter your number with `.` as separator (366.38),
and then, when entering the search, the `.` was
regarded as the thousand separator, giving as domain
`('amount_total', '=', 36638)`, which is not what you asked.
opw-634201
PS: The `|| '.'` in the xml template are only for
retro-compatibility, so if the server sources are
updated, but the browser cache is not refreshed
(meaning the Javascript code isn't refreshed, and,
therefore, `widget.decimal_point is undefined)
it still works.