Commit Graph
112 Commits
Author SHA1 Message Date
qsm-odoo 2972976962 [REF] web_editor, website, *: complete refactoring
* mass_mailing, payment, point_of_sale, portal, survey, web, web_tour,
  website_blog, website_crm_partner_assign, website_event,
  website_event_questions, website_form, website_forum, website_gengo,
  website_hr_recruitment, website_links, website_mail,
  website_mail_channel, website_mass_mailing, website_quote,
  website_sale, website_sale_options, website_slides, website_twitter

This commit reviews the whole "JS side" of the web_editor and website
apps. This is a first step to be able to improve them with new and
better functionnalities; this commit is not supposed to change any
visual behavior.

The main goal was to achieve a structure similar to the backend one.
Now, the frontend side also has a root widget (like the WebClient)
and all other widgets are attached to it one way or another. This allows
the benefits of using the 'trigger_up' functionnality for example.

As RPC are now mainly done with the `this._rpc` functionnality (being
possible thanks to the parent hierarchy), the frontend will also be
possible to test thanks to QUnit in a future update (besides the "text"
editor side which still requires a refactoring to be able to do that).

---

Here are some of the changes:

(-) conventions and documentation

The code has been updated to follow JS conventions and a lot of code has
been commented (around +2000 lines of comment). This also means that
lots of functions have been renamed to use camelCase or simply to make
their name understandable.
See https://github.com/odoo/odoo/wiki/Javascript-coding-guidelines.

(-) deprecated: web_editor.base

The "web_editor.base" module has been split and does not force the
modules which require it to wait for DOM ready anymore. This was indeed
slowing loading times, but also prevented to use some modules in some
contexts (see the LESS editor use in web_studio which is the subject of
another task).
Now the "editor context" can be got thanks to the "web_editor.context"
JS module with its "get" function.
The "web_editor.base" module should probably not be used anymore (see
its code and recent updates).

(-) new: web.dom_ready

If a JS module should wait for the DOM to be ready to be executed, a
new JS module has been created: "web.dom_ready". This should always
be used in a module which only want to instantiate stuff. Do not
extend (or worst, include) classes after DOM ready.

(-) website.website

The "website.website" module has been split. "website.website" does not
return anything useful anymore, it just initialize some miscellaneous
stuff, without waiting for the DOM to be ready. You might want to check
"website.utils", "website.content.compatibility" or `WebsiteRoot`. Also
`website.form` has been deleted (use `this._rpc`), so has been
`website.error`. `website.prompt` will be removed in a future update to
be replaced by `Dialog.prompt`.

(-) widgets are great

Many classes which were not widgets are now widgets. This allows them to
use the 'events', the 'xmlDependencies' and the 'this._rpc' features for
example. Here are some of the main ones:

- Snippet options: these were classes with a `$el` for the menu element
    and `$target` for the customized element. This is still the case
    but following standard `Widget` structure (one exception: using
    `this.$(...)` searches in the `$target` as before this update).

- Snippet animations: instead of class instances with a `$target`
    element which can be `start` and `stop`, these are now standard
    widgets which can be `start` and `destroy`. `this.$target` is
    an alias to `this.$el` for ease of compatibility.

- Snippet editors: instead of class instances in charge of an editor
    overlay, these are now widgets. Each "child" snippet editor is
    properly attached as a "child", which allows editors to communicate
    and to be properly destroyed.

(-) root widgets and website navbar

The frontend is different of the backend. In the backend, the page has
an empty <body/> element and all the components are instantiated from
parent to children (i.e. the `WebClient` is instantiated and is in
charge of instantiating the `ControlPanel`, etc). The frontend cannot
work like that on page loadings as they are way more frequent than in
the backend and we do not want them to flicker. A frontend page is
loaded as a <body/> element which already contains the website navbar
and its menus and the whole content page. JS code has to be "attached"
to these existing elements. This is possible thanks to the `RootWidget`
instances and the specialized `WebsiteRoot`, `IframeRoot` and
`WebsiteNavbar` (see code for details).

(-) lazy loading

No more (or at least a lot less) XML/JS has to be loaded on page
loading, thanks to the use of the `Widget.xmlDependencies` feature.
XML which have to be lazy loaded is loaded only on related Widget
instantiation if necessary, which allows to execute a lot of JS code
before the DOM is ready and to start many widgets on DOM ready (not
later). A visual benefit of this is clicking on the 'edit' button as
soon as it is possible: before this commit, this was sometimes not
doing anything as event handlers were not binded yet.

Still a possible exception: loading the session and locales. This may
be asynchronous stuff which is still required before widget
instantiations but this will be the subject of another task.

(-) deprecated code and code location

More than reviewing code and organizing it, many apparent dead code was
removed. More importantly, mislocated code was put in the right app.
This is the case for snippet animations which is a concept for website
apps but was defined in the web_editor app, or some translation concepts
which were part of website but should have been part of web_editor.

---

There are probably more things to say about this commit but I will let
the comments speak for those.
2017-08-16 11:04:14 +02:00
Christophe Simonis 34b432d528 [MERGE] forward port branch saas-15 up to 4d79a1ff58 2017-06-26 19:19:39 +02:00
Jeremy Kersten 08bd178e28 [IMP] mass_mailing: allow to don't wrap a template in a table
In some case we don't want to wrap the content to be centered.

Now, you can add a data-nowrap when you define the theme params to
don't wrap it in a table automatically

Eg:
<div data-name="blank"
     data-img="/xxx"
 >>  data-nowrap="1"
     data-images-info='{...}'>
2017-06-16 12:59:55 +02:00
Joren Van Onder 83f1e28cc9 [FIX] web_editor,mass_mailing: adapt d7939282 to new views
Also adds body_html to the blacklisted fields. Because that tends to
be quite long as well.
2017-06-15 21:29:26 -07:00
Olivier Dony ba15df47cb [MERGE] Forward-port saas-15 up to 17b847c0f6 2017-06-01 01:10:29 +02:00
qsm-odoo a83f812357 [FIX] mass_mailing, web_editor: increase mail clients compatibility
Following bee3253b44, this commit is made
to increase the mail clients compatibility for the mails that are
created with the odoo mail editor.

Three new problems are handled:

- Font family of titles had to be forced too as outlook was not
  inheriting parent font family on those either.

- Default text font-size had to be forced as was not detected in
  transcoding correctly.

- text-decoration rule was decomposed in text-decoration(-line,
  -style and -color) in transcoding. Outlook is ignoring those
  three rules for some reason. As the decomposition is useless,
  the transcoder now forces the recomposition of these three rules.
2017-05-17 11:29:24 +02:00
Olivier Dony 5afe894f44 [MERGE] Forward-port saas-15 up to 878fbc75ff 2017-05-16 17:09:45 +02:00
qsm-odoo bee3253b44 [FIX] mass_mailing: increase email clients compatibility
Creating a mail template which is complex and compatible with all mail
clients is a very difficult task as each mail client supports a
different subset of basic CSS rules.

This commit fixes 3 problems which were occuring in outlook and/or
thunderbird but not in gmail:

- Main layout horizontal overflow
    -> change 24px horizontal padding of main layout to 3% and set the
       width to 94% (so that the sum is 100%)

- Fixed 600px content was full width instead
    -> Change the .o_mail_wrapper to be a <table> element instead of a
       <div> element. The table is full-width and contains one row of 3
       cells: an empty left one, a fixed 600px-width center one and an
       empty right one. This allows to have the same layout as before but
       without using the unsupported max-width css rule.

- Texts were not using the right color and font-size
    -> <p> elements were not properly inheriting the color and font-size
       properties, so force the style on <p> elements.

opw-743156
2017-05-15 15:26:05 +02:00
Aaron Bohy fc08507fdb [REF] web,*: convert Kanban widgets to new style
The remaining widgets were KanbanRecord and the two quick create
widgets. Now, all kanban files have been converted and refactored.
2017-04-11 19:44:38 +02:00
qsm-odoo b34279c89a [IMP] web, *: let kanban column and record know about modelName
* hr_attendance, hr_gamification, hr_recruitment, mass_mailing,
  project, sales_team

Before this commit, the kanban column did not know about the model
name which make customization impossible without a getParent. Kanban
records were supposed to know about this thanks to the options
parameter but this was broken. Now the model name is automatically
initialized from the given state.

Adapt all extensions which relied on this.
2017-04-11 19:44:38 +02:00
qsm-odoo 19e86c8388 [IMP] *: remove deprecated view extensions
* account, mass_mailing, sales_team

These view extensions have already been ignored for around two years.
The new views development is a great opportunity to remove them.
2017-04-11 19:44:38 +02:00
Géry Debongnie 905e01921f [REF] web, *: redesign all JS views
This commit introduce a full redesign of all JS views.  We started
basically from scratch.  The goal was to unify all the various views
under a common framework, to make them testable, to make then usable in
different conditions (in studio, or in the frontend), and to make our
lives easier.

Some important points are:
- we introduced new coding guidelines (camelCase, 80 chars width, ...)
- we have a brand new testing framework (still QUnit based)
- kanban view moved to the web addon
- calendar view (formerly web_calender) moved to web as well
- the tree view was removed
- all new code should be documented

We hope that this code is the start of a new era for the Odoo web
client, we want to have a high quality codebase, well documented, well
tested, well designed.

Work done by the framework team: mostly aab, ged, chm, dmo, qsm
2017-04-11 19:44:38 +02:00
Christophe Simonis 45045bb7a1 [MERGE] forward port branch saas-15 up to c8f01e3b62 2017-03-17 18:06:16 +01:00
Christophe Simonis b2fa9f2ad1 [MERGE] forward port branch 10.0 up to 31ebb07773 2017-03-17 17:57:52 +01:00
Christophe Simonis 31ebb07773 [MERGE] forward port branch saas-11 up to aefdf96c25 2017-03-17 17:55:30 +01:00
Christophe Simonis 5f9d382ed4 [MERGE] forward port branch 9.0 up to e542b450a3 2017-03-16 16:01:56 +01:00
Nicolas Martinelli a873890f28 [FIX] mass_mailing: link in kanban
- Go to Mass Mailing > Configuration > Mail Templates
- In the Kanban view, find a template which contains a link (http,
  mailto, whatever)
- Click on the link

You are redirected to the link instead of being redirected to the
record.

opw-706047
2017-03-14 16:19:04 +01:00
stefanorigano 707eb645ef [IMP] mass_mailing: add "basic" theme for plain text mailing
Sometimes, there is a need for mass mailing "basic" mails with no
image or style. The "basic" theme is designed for this (note that
there still is the possibility to add style and images, default
images are just gray placeholder).
2017-03-13 10:55:30 +01:00
Christophe Simonis 85368d7f86 [MERGE] forward port branch 10.0 up to 387b2acfcb 2017-02-23 20:15:38 +01:00
Nicolas Martinelli 2a08cbb8c6 [FIX] mass_mailing: Kanban crash on mobile view
In mobile view, the mass mailing kanban view crashes.

Commit eee1d8c159 aims to prevent drag and drop for mass mailing.
However, in mobile view, the the drag and dropd is by default
deactivated, and "sortable" is not initialized.

opw-708140
2017-02-13 08:53:36 +01:00
Christophe Matthieu d0d1c93500 [FIX] web_editor: don't remove icon from mass mailing
The witdh and height auto has apply on image, when the mass_mailing
clean_for_save is called, the image is considered as invisible because
the with is temporary null.

opw-692805
2017-01-16 11:20:30 +01:00
Christophe Simonis b3a1109372 [MERGE] forward port branch 10.0 up to c08a590bb1 2017-01-02 15:31:58 +01:00
Christophe Simonis 81f59cee2c [MERGE] forward port branch saas-11 up to b844d93889 2017-01-02 14:38:59 +01:00
Christophe Simonis b844d93889 [MERGE] forward port branch 9.0 up to 3805eb620a 2017-01-02 12:49:55 +01:00
Denis Ledoux f5d7727e2b [FIX] mass_mailing: crash with Firefox with the breadcrumb
- When opening a mass mailing
 - Editing it and making a change (e.g. add a block)
 - Click on the breadcrumb
 - Click "OK" on the warning popup telling your changes will be discarded
 - Choose another mass mailing

A crash occured. This is basically the same case than in the revision
7bf80d22dd
but for Firefox, for which `window` is still there
`!window` returns False
but is `closed`

opw-702211
2016-12-23 12:10:09 +01:00
Fabien Pinckaers c28743a220 [IMP] mass_mailing: CSS for mobile: avoid horz scrollbar 2016-12-04 20:47:20 +01:00
qsm-odoo a2d05a7087 [FIX] mass_mailing: initialize theme images on re-edition
The mass_mailing editor has a feature which switches the images of the
content and/or the droppable snippets according to the theme.
Unfortunately, this images were only initialized on theme choice and
not when entering in edit mode. So when reediting an already edited
mass mailing (or when duplicating one), the theme images were not
initialized.
2016-11-16 17:06:40 +01:00
stefanorigano 23c6c37c8d [FIX] mass_mailing: vertical alignments & multiline text
* vertical alignment: Keep ‘vertical-align: top’ as default, but
define ‘middle’ exceptions for header and footer snippets.

* ‘comparison_table’: multiline text.
Remove inline style for inner <p/> elements and define default padding
for parent <td/> instead. This will allow to create multiple line of
text keeping a coherent margin between each <td/>.
A css set of rules triggering any kind of elements allow to use
multiline text for any kind of tag (p, h1, etc..)

* Footer snippets padding, minor
2016-11-07 17:08:18 +01:00
qsm-odoo fb363b572b [FIX] *: adapt odoo interface violet
Change color #a24689 to #875A7B

Commit https://github.com/odoo/enterprise/commit/8ac1c19fac7615fecd51e670f798d13158a4e53c
changed the odoo interface violet by changing the main LESS variable
but forgot there was many direct occurences in XML/HTML/... (for
example for the mobile browser color).

Even if it's community the odoo interface violet is used at many places
(module description, XML demo data, ...).
2016-10-05 10:29:00 +02:00
qsm-odoo 984afdf120 [FIX] mass_mailing, web_editor: set up correct iframe communication
Previous commit tried to handle iframe assets in a more standard way
but instead broke the order followed to install iframe communication.

While waiting for a more clean way to handle iframe assets and
communication, revert to old set up.
2016-09-30 12:19:46 +02:00
qsm-odoo c7e837d962 [IMP] mass_mailing, web_editor: propose installation of mass_mailing_themes
When an user starts a new mail template, he is now proposed to upgrade
to enterprise to install mass_mailing_themes.
2016-09-30 12:19:46 +02:00
qsm-odoo 8320a9aaf5 [IMP] mass_mailing: only keep one theme in community module
Only keep default theme in community module and replace old enterprise
ones with new ones.
2016-09-30 12:19:39 +02:00
qsm-odoo eee1d8c159 [IMP] mass_mailing: prevent drag and drop in kanban for mass mailing
The mailing flux is done thanks to the action buttons in form view.
2016-09-30 12:15:50 +02:00
qsm-odoo 6ee87f74f5 [FIX] mass_mailing: properly switch to right theme images
The default image inside undropped snippet had to be switched everytime
a theme is selected, even on first theme choice as the switch_theme
method only switch images of snippet already dropped in the page.
2016-09-23 11:16:16 +02:00
qsm-odoo 05205a277e [FIX] mass_mailing: force vertical align top on td/th element 2016-09-23 11:16:16 +02:00
stefanorigano 4ffe3f57a3 [FIX] mass_mailing: fix layout issue of o_mail_header_social links
Fix an issue causing a wrong icon alignment on save.
2016-09-23 11:16:16 +02:00
stefanorigano 194f13beaf [FIX] mass_mailing: refactore o_mail_block_footer_tag_line snippet
* Remove the ability to change bg-color (colours are applied to
children elements)
* Fix a layout issue in theme_resto
2016-09-23 11:16:16 +02:00
stefanorigano 3b4f976f93 [FIX] mass_mailing: review colors in snippets
* Trig default ".btn.btn-link" rather than custom ".o_mail_link" (not
used anymore)
* Define variations when a button is inside bg-beta or bg-delta
2016-09-23 11:16:16 +02:00
qsm-odoo 3f5a27e286 [FIX] mass_mailing: properly manage td/th elements
Refactore width-x snippet option and create another option to handle
cloning and removing td elements properly.

* on_focus: the handle to resize are now hidden when the td/th is alone
on its row

* on_clone: when cloning a td element which is alone on its row, it is
instead cloned in a new row. If not, empty td are added on the whole
column to maintain table integrity.

* on_remove: handle removing td in complex table
2016-09-23 11:16:16 +02:00
qsm-odoo b51e8a8a03 [FIX] mass_mailing, *: allow to auto select default text of templates
* + web_editor

The feature was only activated in the web_editor in snippet contents
(before they are dropped in the page). Now, on first theme selection,
the feature is activated in the template content.
2016-09-21 13:16:59 +02:00
qsm-odoo a430c81b79 [IMP] mass_mailing: review theme style location and convention
* Use the theme class selector as root for the less file
-> Allow to style the editor as applied to the body
-> Split in editor/color/layout/snippets

* Create an assets to contain all mm themes so that the compilation is
made by the odoo system, and allow minification and variable sharing
between themes
-> Remove css files

* Reformat the LESS files content
2016-09-20 13:52:29 +02:00
qsm-odoo edb58e6beb [IMP] mass_mailing: automatically include the o_mail_wrapper element 2016-09-20 13:52:29 +02:00
qsm-odoo 9749b93250 [IMP] website, web_editor, mass_mailing: move margin and size options
website -> web_editor so that they are available for mass_mailing.

To allow setting margins on td elements:

As the above mentionned option allows to control the mt and mb classes
on the mass mailing items, the problem is that we would ideally want it
to be functionnal on td element as they are the main part of a mail.
As they don't support margins, there were many options to fix the
problem:
- Add more JS to place the mt and mb classes on children of td element
- Place the option on children of td element and not td element itself
but in that case, the width control of td would imply a lot of parent
option hierarchy, or the width control had also to be adapted to control
children
- Control padding instead of margin. This forces to add lots of
css rules like pt4 pt8, ... (or td.mt4, td.mt8, ...).

The last solution has been chosen. Padding is more supported than
margins in mail client anyway and the css rules will be isolated in
the mail editor anyway. Using td.mt4 instead of pt4 had the advantage
to not require any JS modification.
2016-09-20 13:52:29 +02:00
stefanorigano 4f93d5c687 [IMP] mass_mailing, web_editor: improve themes/snippets/templates 2016-09-20 13:52:29 +02:00
qsm-odoo e3635494ea [IMP] mass_mailing: add default layout for mail themes
When there is no content in the mail, the user is now forced to choose
a theme. Once the choice is made, the theme introduces default content
(series of snippet to simplify user edition).

The default images are also changed when the theme is switched. To do
that, JS code was implemented so that on theme switch, all the images
are changed to check for images in the static theme folder or use a
theme related xml_id.

+ Refactore theme data management.
2016-09-20 13:52:29 +02:00
qsm-odoo 61e48b09fb [REF] mass_mailing: convert templates to themes and clean code
* Remove mass mailing template switching system (lemon, airmail, ...)
and replace it with a theme selector which only toggle a different
class on the body.
* Lint JS files.
* Change the way the editor is overridden by mass_mailing in a more
odoo way (put the JS in assets and check on runtime if it must be
applied.

+ fix editor style
+ remove useless code
+ remove odoo template
2016-09-05 17:07:31 +01:00
qsm-odoo 71b8bc7570 [IMP] mass_mailing: correctly define snippets toolbar template
* Split snippets into templates and use the t-snippet directive
* Correctly handle snippet thumbnails thanks to t-thumbnail and not
with custom css
2016-09-05 17:02:00 +01:00
Csaba Fazekas 9676ceec02 [REF] mass_mailing: change/add snippets/themes layout/design
* Airmail/Lemon/Tech template/Odoo template
* Add bg color option
* Clean snippets
2016-09-05 17:01:50 +01:00
Christophe Matthieu 1501b30c53 [REF] mass_mailing: change theme/template selection and add new snippets
* remove theme/template selection screen for mass_mailing
* allow to use different layout on edition
* add new snippets
2016-09-05 17:00:45 +01:00
Christophe Simonis de0d503421 [MERGE] forward port branch saas-11 up to f0c8224 2016-08-26 16:59:45 +02:00