Commit Graph
1174 Commits
Author SHA1 Message Date
Christophe Matthieu 6c0376e932 [IMP] web: form_relational_widget: remove unused javascript code 2015-05-04 12:23:37 +02:00
Vidhin Mehta e09ea0de92 [IMP] web : replace timezone warning icon with a form widget 2015-04-30 11:24:43 +02:00
Christophe Simonis a9471c43b9 [MERGE] forward port of branch saas-6 up to e941c0f 2015-04-17 15:33:00 +02:00
Christophe Matthieu 7d3cda215a [IMP] web: web.form_relational: Change widgets to use AbstractManyField. Remove custom insertion in the DataSet to improve the managment of cache and the odoo commands list. this.get('value') return the list of ids and virtual ids and get_value return a commands list. 2015-04-15 13:31:20 +02:00
Christophe Matthieu d8c52d677b [IMP] web: remove unused widget many2oneButton 2015-04-15 13:31:20 +02:00
Cedric Snauwaert 9d87d15db6 [ADD] new fields.Monetary + updated widgets
Enhance current widget="monetary" client-side feature and
convert it to a first-class type of field, allowing proper
server-side behavior.

- fields: add field.Monetary, similar to fields.Float but
  supporting a `currency_field` attribute instead of the
  decimal_precision attribute.
  `currency_field` indicates the field holding the
  related currency on the same record.
  The symbol of that currency is used when displaying
  the field, and the rounding of the currency is applied
  instead of the usual decimal precision.
- avoids application of a second decimal precision rounding,
  as was the case when the model field was a `fields.float`.
- removes the need for adding explicit boilerplate to each
  view containing a monetary field, i.e.:
    widget="monetary" options="{'currency_field': 'currency_id'}"
- res.currency: add new field decimal_places needed to round
  value at the correct decimal places
- web: cache all currencies, rounding and symbols at
  webclient startup to speedup monetary fields
- new widget monetary for list view + adapt widget monetary
  on form view

Limitations:
- if the currency_field is a related field, the server-side
  application of currency rounding will only work when the
  record already exists, not during creation (to be fixed)
- this field is only supported in the new API
2015-04-09 19:05:44 +02:00
Aaron Bohy d1056939ad [FIX] Web: pager for ListView in One2Many fields
The pager was not displayed in One2Many List views. This fix applies the
same behavior as in One2Many Kanban views, which is probably not the
best way to do it, but which works fine.

The issue was caused by 2 things:
   - The One2Many.FormView template removes the condition around  the
     buttons/pager divs of the FormView template. However, it was using a
     selector that does not seem to be used anymore. We thus removed it
     and the buttons/pager divs are now in the rendered One2Many List View
   - The rendered pager was appended to this.options.$pager whereas it
     should be appended to the corresponding div in its own template.

This commit should not be forwardported
2015-04-08 10:48:50 +02:00
Christophe Simonis cd08281979 [IMP] web: debug menu extra actions available to users in "Configuration" group 2015-03-27 13:14:46 +01:00
Christophe Simonis 5aba579e74 [MERGE] forward port of branch saas-6 up to 42db2db 2015-03-21 15:54:05 +01:00
Aaron Bohy 546c07a58f [IMP] Web: Use of a ControlPanel in One2Many Fields
Creation of the One2ManyControlPanel template. The One2ManyControlPanel
can only contain action_buttons and a pager. Typically, in One2Many
Kanban, buttons are displayed (in edit mode) and in One2Many Lists,
the pager is displayed.

Improvement of all Views.buttons templates so that if there is no
button to render, it does not render an empty div. This was necessary
for Kanban buttons to prevent padding when there is no button
displayed. Changes in the other views were motivated by uniformity
concerns. This prevents to add empty div in the DOM as well.
Exception for FormView where the outer div is required for the option
footer_to_buttons to work.

This fixes a bug as the pager is now available in One2Many Lists, which
was not the case before, even if there were more than 80 items in the
list, i.e. some items were unreachable.

cp_bus argument in ViewManager init() is now required. If there is no
ControlPanel to communicate with, a dummy Bus should be given ot the
ViewManager.
2015-03-20 16:34:41 +01:00
Aaron Bohy 20b4aaab83 [REF] Web: Actions, ActionManager, ViewManager, Controlpanel refactoring
Big refactoring of Action, WidgetAction and ViewManagerAction to clean
their API. Mainly, renamming from State to Action and removal of unused
functions (or functions that are only used by the DebugManager, for
which we tolerate introspection).

Some logic has also been moved from the ActionManager to the Actions
themselves. The specific behavior of each type of Action is now handled
in the implementation of those Actions.

In ActionManager, this.states is renammed to this.action_stack to be
consistent with view_stack in ViewManager.

The setup_search_view() and render_switch_buttons() functions have been
moved from ControlPanel to ViewManager as it was before, since actual
design allows it and it makes more sense.

The ControlPanel API has also been simplified as some functions were not
used anymore. The ControlPanel is now updated directly by the widgets
using it, bypassing the ActionManager. The control panel elements are
stored by the widgets themselves to allow restoring them later.
2015-03-20 16:34:41 +01:00
Aaron Bohy 1280bf2513 [IMP] Web and all views: ControlPanel atomic update
Change the logic of rendering and displaying/hidding the control
elements (buttons, sidebar and pager) of all views. The views do no
more render automatically their elements as this is rather done
through the render_[element] function called by the ViewManager.
This function only appends the element to the $node given as argument.
If no argument is given, then it may appends it to the DOM directly,
within the adequate div of its template.
This allows the ViewManager to attach/detach all elements of the
ControlPanel in an atomic may, to prevent the ControlPanel from
flickering.
Also detach the contents of the ControlPanel in headless mode. Headless
means that the ControlPanel exists, but is hidden. Detaching its
contents permits to have a cleaner DOM.

Also remove the oe_form_dirty class on the buttons in the FormView, as
this class is only used on the view itself.

Side changes:
* base_import: import.js:
    Extend render_buttons function to be compliant with the new buttons
    rendering logic
* board: dashboard.js:
    Set flag search_view to True as the searchview is needed for the
    Views displayed in the Dashboard to retrieve the records to display.
    Necessary since we do no more construct the searchview when this
    is set to false
* google_drive: drive.js,
  share: share.js:
    Module extending the Sidebar widget often add their own buttons
    by extending the start(), which is called each time the Widget
    is appended to the DOM. With our new design, this could be done
    in start() anymore as it should be done only one. It is now done
    in init() instead.
2015-03-20 16:34:39 +01:00
Aaron Bohy 7aa0836420 [IMP] Web: views.js, view_editor.js: DebugManager
Creation of a widget for the DebugManager and move it from the ControlPanel
to the Systray.

Refactoring of the widget to improve/facilitate the way of adding
options in the DebugManager as the view_editor does.

Add a do_action() function in the WebClient that forwards the action to
the main ActionManager so that widget that are not in the scope of the
ActionManager (e.g. Menu) can performed actions as well.

Note: The DebugManager is currently in the Systray but it will finally be
moved to a dedicated spot above the ControlPanel.
2015-03-20 16:18:35 +01:00
Aaron Bohy 151c90743e [IMP] Web et al.: unique main ControlPanel
A unique main ControlPanel is instantiated by the ActionManager and it
is updated each time the state changes (i.e. when an action is performed
on the ActionManager or when switch_mode() is called on the ViewManager).

Introduction of State classes to facilitate the way of restoring
previously rendered states in ControlPanel. The notion of widgets
previously used in the ActionManager is now encapsulated in the notion
of states.

The search() function has been moved from ControlPanel to ViewManager as
it makes more sense like this.

The ViewManager doesn't have the reference to the ControlPanel but
rather communicate with it through a dedicated bus.

Some refactoring has been done on the ControlPanel as well so that it
doesn't need to know the ActionManager and the current Action anymore
(it communicates with the AM with events, and it updates itself using
information passed in arguments).

Improves the way the ViewManager requests the ControlPanel to
instantiate a SearchView, and how it waits for this SearchView to be
corretly loaded.

Move back the views logic to the ViewManager which directly asks
the ControlPanel to render the buttons and switch-buttons areas with
the views passed in arguments.

Removes option replace_breadcrumb in push_state() of ActionManager as it
is not used.

Side changes:
* Account: account_widget.js:
    Adapt code to retrieve the current state of the ActionManager.
    Required due to the introduction of State classes that encapsulate
    the notions of widgets and inner_widget in the ActionManager.
* Board: dashboard.js:
    Some refactoring to adapt the code according to the new Widgets
    structure. Several dependencies (e.g. searchview, action) were
    unnecessary. Do not append the "add to dashboard" option to the
    Favorite menu if there is no ViewManager available (e.g. in
    Messaging) instead of hidding it with a CSS rule, as a ViewManager
    required to retrieve the active_view.
* Google_spreadsheet: search.js:
    Change the way to retrieve the list_view_id s.t. it does not rely on
    parent of the SearchView anymore.
* Web: search.js:
    Change the way to retrieve the title in search.js for Favorites s.t.
    it does not rely on the parent of the SearchView anymore. Doing so,
    the ControlPanel does not need the title attribute anymore.
2015-03-20 16:18:33 +01:00
Aaron Bohy 53a9f6c081 [IMP] Web et al.: ControlPanel extracted from ViewManager
The ControlPanel is still instantiated by the ViewManager.

Changes details:
* web: views.js:
    Code related to views header is extracted from the ViewManager
    to a new Widget named ControlPanel.

    Also uses the headless flag to tell the inner view not to put
    its buttons (use case: kanban) or pager (use case: list) in the
    header as it is hidden.
* web: view_form.js, base.xml:
    Uses the headless flag at initialization of the One2ManyViewManager
    widget instead of extending the ViewManager template (which doesn't
    handle the header anymore).

* web: view_list.js:
    Test on this.options.$pager instead of this.options.$buttons
    when dealing with pager.

    Note: the behavior for list view is unchanged and has a bug.
    If there are more then 80 records to display, only the 80th
    first are display, and as there is no pager, there is no way
    to see the remaining ones. A fix for this would be to use a
    light ControlPanel in One2Many views as well. With this,
    there won't be duplicated .oe-'view'-buttons/sidebar/pager
    anymore.

* web: view_graph.js, view_pivot.js:
    Only render buttons in non-headless mode

* web_dashboard: dashboard.js:
    Fix some references that were broken with ControlPanel extraction

* web_view_editor: web_view_editor.js:
    Extend ControlPanel instead of ViewManager

* Changes in selector of ControlPanel elements in several addons:
    * base_import
    * mail
    * web
2015-03-20 16:17:06 +01:00
Géry Debongnie e8a00bc50d [REF] web: add module system to the web client
This commit introduces a new module system for the javascript code.
Instead of using global (namespaced) variables everywhere (like
openerp.web.whatever, ...), each file declare one (or more) module
with its dependencies.  Each module will be loaded after its
dependencies, and will be given a reference to the return values.

This change is a massive departure from the way the client worked
previously.  It will sadly break some/most history, but I am sure that
the future git ecosystem will allow you to easily browse the history
past this revision (one can dream).

This commit feature:
* main namespace is now odoo instead of openerp
* a way to define modules and dependencies (inspired by requirejs)
* many files have been splitted in simpler subfiles
* basic support for debugging in odoo.__DEBUG__
* no global variable (i.e. nothing in window.openerp)
* many bug fixes, many new bugs

Future vision: this modularization should simplify future code
development, simplify debugging and will allow a serious testing effort
2015-03-18 09:01:49 +01:00
Christophe Simonis 97389d34da [MERGE] forward port of branch 8.0 up to 1ac4d31 2015-03-12 14:30:24 +01:00
Julien Laloux a20545a936 [IMP] web: add no update info on metadata view (debug mode) 2015-03-11 11:10:42 +01:00
Simon Lejeune f4583b7c56 [FIX] web: viewmanager header: missing type on button tags 2015-03-05 16:05:10 +01:00
Christophe Simonis 9cf6786e75 [MERGE] forward port of branch saas-6 up to fefb298 2015-03-02 18:25:40 +01:00
Xavier Morel 727ae7437f [REM] leftover controls in DB backup page
* Multiple backup formats were initially introduced in master
* They were then (more rencently) implemented differently in 8.0
* The 8.0 work was merged into master in
  18e22be138, but not all of the master
  version was removed, the form controls themselves remained and blow up
  the controller

Remove the "old" form controls (a select)

fixes #5504
2015-02-27 17:00:01 +01:00
Christophe Simonis 109dae2efa [MERGE] forward port of branch 8.0 up to d4f41a1 2015-02-26 18:56:26 +01:00
Denis Ledoux 25bf2674d5 [FIX] web: prevent set value of priority if readonly
The priority widget did not handle the readonly concept
It was therefore possible to set the priority of
an issue (for instance) even if the field was marked
as readonly.

opw-628960
2015-02-26 17:21:10 +01:00
Jérome Maes 8ab68d8048 [FIX] web : fix the dropdown style to delete attachments 2015-02-26 16:41:29 +01:00
Géry Debongnie 585bcda398 [FIX] base_import: allow scrolling in import menu
also, removes some dead templates in base.xml
2015-02-02 15:45:14 +01:00
Géry Debongnie 0521c8b83f [FIX] web: fix various bugs in FieldCharDomain
now, the FieldCharDomain widget should
* correctly display the selected records instead of the whole list
* allow the removal of the current selection in edit mode (by adding
  a facet in the searchview)
* allow the selection of a full group when the list view is grouped

also, it correctly now uses the ReinitializeFieldMixin instead of
reimplementing half of it in a buggy way.
2015-01-22 20:45:08 +01:00
Yannick Tivisse 9207c4645a [IMP] Replace all oe_e class by fontawesome + remove entyporegular library 2015-01-21 16:11:26 +01:00
Christophe Simonis 18e22be138 [MERGE] forward port of branch 8.0 up to 0aab81c 2015-01-19 17:15:56 +01:00
Antony Lesuisse ec9a543014 [FIX] dbmanager: backup support both zip and pg_dump custom format
- let the user choose between the pg_dump custom format or the zip format including the filestore
- use file objects to allow dumps larger than memory
- postgres subprocess invocation is now clean and thread-safe, we dont touch the local process environ anymore
- add a manifest to the zip dump format with version information about odoo, postgres (pg_dump doesnt output it) and modules
2015-01-19 02:05:12 +01:00
Goffin Simon 0fd773a486 [IMP] Cleanup and refactoring of exception handling
Unify and refactor exception handling in framework and addons.

The generic `except_osv` is now deprecated, and replaced by more specialized exception subtypes:
 - `UserError` (renamed from Warning, as it conflicts with the built-in `Warning`) raised when a non-technical error occurs during a business operation. It could be a missing information in the data provided by the user, or a misconfiguration.
 - `AccessError`: raised when any operation is denied because the user conducting it does not have the required access rights.
 - `AccessDenied`: raised when an operation that requires authenticated access is attempted via an unauthenticated request.
 - `MissingError`: raised when an operation is attempted on a record that does not exist.
 - `ValidationError`: raised when an operation violates a SQL or Python constraint.
 - All other exceptions are internal errors due to a system problem or bug, and raised untouched to the client-side, which should display a traceback.

All exceptions take a single message argument.

The `test_exceptions` module has been updated to showcase both new and old (deprecated) exceptions.

A great many old `except_osv` had a useless title with "Error!" or "Warning", those have been removed, as this is handled by the client-side widget that displays the messages.

This commit introduces a more consistent policy for logging errors and warnings:
 - All messages that do not require administrator attention should be logged at INFO level or lower. This includes all errors that are notified to the user in a friendly manner, even for access right problems or validation errors during business operations.
 - All messages that indicate a likely misconfiguration or malicious use by the users should be logged at WARNING level, as they typically require administrator attention.
 - All other unhandled internal errors cannot typically be handled by the user and should be logged at ERROR or higher level, as they require immediate administrator attention.
2015-01-16 17:15:18 +01:00
Mitesh Savani 9162b9930c [ADD][IMP] web: added toogle button for form view. Like already
done in list view, this is a button used for boolean fields
used to switch between pending-grey-false and done-green-true.

hr_holidays: use this newly-introduced button on form view.
I am sure HR people will love R&D now.

Courtesy of RD India: Mitesh Savani (msa@odoo.com)
Reviewed by Use Merge: Thibault Delavallée (tde@odoo.com)
2015-01-12 14:33:07 +01:00
Géry Debongnie 278ff38dbe [FIX] web: usability issue: display form view icon
form view icon should always be displayed in the view manager.  This
is useful in some situations:
* switch to form view from editable list view
* refresh a form view
2015-01-09 13:10:14 +01:00
Richard Mathot 7b763176ba [REM] modelines: Gotta catch 'em all 2015-01-08 11:38:58 +01:00
Christophe Simonis fab4d6d442 [MERGE] forward port of branch 8.0 up to ea54d4a 2015-01-06 11:49:04 +01:00
Simon Lejeune bdde2fb96f [FIX] web: notebook: remove fade effect on tab switch
Also, fixed two global variables introduced by rev b2e32a8f7e
2014-12-29 11:15:17 +01:00
Simon Lejeune b2e32a8f7e [IMP] web: use bootstrap's notebook, rewrite process_notebook
Introduction of a specialized InvisibilityChanger for the notebook. It
allows to handle more elegantly the issues of the notebook during
page execution: modifiers hiding the active tab that must now
active its sibling.

Process_notebook only handle the processing of the page while
NotebookInvisibilityChanger only handle the behavior of the notebook
during the page execution.

- readable code (more readable, at least)
- correct handle of autofocus
- rendering of the whole notebook in one call to qweb's render
- one invisibility changer bound by header/content
- no custom css, only legacy bootstrap
2014-12-19 17:49:13 +01:00
Géry Debongnie 2c08dc0ba6 [IMP] web: new pivot view, full rewrite of graph view
This commit is a split of the former graphview into a pivot view (the
tabular view) and graph view (the various charts).  The code was fully
rewritten.
* pivot view should be faster (better underlying data structure and
better algorithm)
* better integration with the web client (use of sidebar, of menu buttons,
bettor style)
* new feature: pivot view can be sorted
* new feature: pivot view cells can be clicked to open a list view with
the corresponding domain
* web_graph addon was removed, and the graph view code has been moved
to the addon web.
* the interaction with the searchbar was changed (no more column facet)
* better and simpler code for graph view
* mary corner cases in graph charts have been corrected (for ex, pie
chart with positive and negative numbers)
* graph/pivot correctly save their state when added to dashboard/saved
(state such as current measure, chart mode, column groupbys, ...)
2014-12-19 14:34:23 +01:00
Aaron Bohy da1e9412f8 [FIX] web: typo in Database Manager screen
closes #4205
2014-12-12 12:55:50 +01:00
Géry Debongnie 290055e6d4 [FIX] web: fix view manager header height form view
in form view, the header height was higher than in other views (4 extra
pixels). This was caused by the floating buttons in
.oe-view-manager-buttons.  This commit forces the column to take exactly
30 px regardless of its content. (it is not a problem even if the
content takes extra lines)
2014-12-04 14:11:56 +01:00
Géry Debongnie fcf0f2882a [FIX] UI fix: ungroup 'edit' and 'create' (web client)
ungroup these buttons in form view.
2014-11-12 09:36:26 +01:00
Christophe Simonis 5068cffbb0 [MERGE] forward port of branch 8.0 up to 491372e 2014-11-05 20:30:40 +01:00
Denis Ledoux f37d0af6f8 [FIX] web: t-attf expects #{} or {{}} for variables
not just {}. Nevertheless, It somehow worked in Odoo 7.0 and saas-3.
2014-11-04 10:55:38 +01:00
Géry Debongnie fd7c5876f4 [FIX] fixes modal window layout bugs (addon web) 2014-10-31 13:57:16 +01:00
Géry Debongnie a3369a1f26 [IMP] add a 'or' operator between custom filters (web) 2014-10-31 13:55:58 +01:00
Géry Debongnie 270da77dd0 [FIX] correct a layout issue in viewmanager (webclient)
problem was that the pager was not displayed/hidden at the correct moment
Result is that when switching views, the header sometimes takes an extra
line.  The pager is now hidden just before creating the view
2014-10-29 08:38:19 +01:00
Géry Debongnie da9f858572 [FIX] improvements to modal windows (web client)
problem is that they sometimes collapse to a single line, making it
difficult to operate the search view. Other problem is that content is
not displayed sometimes (when sub view manager).  Other problem is that
it does not have a scrollbar.  Sidenote: modals will be properly
reworked soon (tm).
2014-10-29 08:38:18 +01:00
Géry Debongnie cd19c5c5c6 [IMP] change webclient structure: remove table
This is a small change if measured in lines of code, but is a large
change: it removes the table structure from the web client and use divs
instead.  It will likely break a lot of things (some css selectors
will not work), but it should simplify our lives in the future:
closer to being responsive, easier layout computations for the browsers
(and hopefully less discrepencies between the results), simpler html, ...
2014-10-29 08:38:17 +01:00
Géry Debongnie 6a36b80e0e [FIX] css and layout fix in advanced search view
* make sure the searchbar allows text selection
* revert back to col-md (from col-lg) classes => looks better
2014-10-21 09:33:53 +02:00
Géry Debongnie 7854f976a8 [FIX] hide groupby menu in inbox (addon mail)
the groupby menu does not do anything in the client actions.  Hiding the
group by menu prevent possible confusion about its use.
2014-10-21 09:33:53 +02:00
Géry Debongnie 782da3ac06 [IMP] xml, css and js tweaks in advanced search view 2014-10-21 09:33:53 +02:00