summaryrefslogtreecommitdiff
path: root/addons/website/static/src/js/content
AgeCommit message (Collapse)Author
2019-04-18[IMP] website: make hamburger menu scrollable in small devicesDharmraj Jhala
Currently, in small devices, hamburger menu of the cloned navbar is not scrollable due to fixed position. This commit improves the behavior and makes the affixed navbar scrollable, enabling user to navigate through all the available menus. task-1938637 closes odoo/odoo#32359 Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
2019-03-06[REF] website: adapt code after jQuery updateVincent Schippefilt
Part of task 1896658 Co-authored-by: Aaron Bohy <aab@odoo.com> Co-authored-by: Christophe Matthieu <chm@odoo.com> Co-authored-by: Mathieu Duckerts-Antoine <dam@odoo.com> Co-authored-by: David Monjoie <dmo@odoo.com> Co-authored-by: Martin Geubelle <mge@odoo.com> Co-authored-by: svs-odoo <svs@odoo.com> Co-authored-by: Vincent Schippefilt <vsc@odoo.com>
2019-02-26[REF] website, *: stop using 'animation' confusing nameqsm-odoo
* web, website_blog, website_sale, website_twitter Before this PR, all website widgets were named 'Animation'. Now that they are 'Public Widgets', we can at last stop using the confusing 'animation' name. Part of https://github.com/odoo/odoo/pull/29442 task-1932066
2019-02-26[REF] website, *: use public widgets instead of website animationsqsm-odoo
* website_blog, website_crm_partner_assign, website_event, website_event_track, website_form, website_forum, website_links, website_mail, website_mail_channel, website_mass_mailing, website_sale, website_sale_comparison, website_sale_delivery, website_sale_stock, website_sale_wishlist, website_slides, website_twitter While using the 'Animation' class of website instead of the frontend 'Widget' class leads to the same behaviors, this refactoring is done for two reasons: - Stop using the confusing 'Animation' name for non-animated behaviors - Instantiation of 'Widget' is slightly faster than 'Animation' Part of https://github.com/odoo/odoo/pull/29442 task-1932066
2019-02-26[REF] website, *: move and review the notion of edit modeqsm-odoo
* portal, sale, web, website_blog, website_crm_partner_assign, website_forum, website_event_track, website_links, website_mail, website_slides, website_mail_channel, website_mass_mailing, website_sale, website_sale_comparison, website_sale_delivery, website_sale_wishlist The `editableMode` option and its related options in public widget should only be part of website, this commit moves them there. This is also the occasion to implement something that is long overdue: stop creating 'animations' / public widgets in edit mode by default. Indeed, lots of 'animations' were defined by beginning with 'if not edit mode'. Now, if a public widget should be considered in edit mode, it must be defined explicitely through a property at *definition* of the widget. Part of https://github.com/odoo/odoo/pull/29442 task-1932066
2019-02-26[REF] *: use 'frontend' system in non-website appsqsm-odoo
* account, auth_signup, payment, portal, project, sale, sale_management, web_unsplash, website, website_mail, website_rating, website_sale This commit does probably not do what is stated for all non-website apps but it is a first step. It also uses the system in apps which could have already used it but did not. Part of https://github.com/odoo/odoo/pull/29442 task-1932066
2019-02-26[REF] website: make the lazy renderer a public widgetqsm-odoo
Not sure this one is still useful but best to integrate it as a public widget. Part of https://github.com/odoo/odoo/pull/29442 task-1932066
2019-02-26[REF] website, web, *: move part of website into webqsm-odoo
* im_livechat, survey, website_forum When website is installed, the JavaScript code has access to utilities to define improved widgets which are automatically attached to existing DOM elements on page load. Those mechanics are more and more needed in portal which does not depend on website (as it is website which depends on portal). This commit moves part of website JS to web, so that it can be used by all 'frontend' apps whose only common dependency is web (portal, survey, auth_signup, ...). This PR also questioned several other similar issues which will be handled later like: - website should maybe not depends on portal but only on http_routing - part of portal should be moved to http_routing and http_routing should be renamed (especially for frontend layouts, etc) so that apps like survey can reuse some common code Part of https://github.com/odoo/odoo/pull/29442 task-1932066
2019-02-26[REF] website: split WebsiteRoot definition / instantiationqsm-odoo
In preparation to future commits, the WebsiteRoot instantiation is moved in an other file than its definition. Part of https://github.com/odoo/odoo/pull/29442 task-1932066
2019-02-08[IMP] website: improve affix menu to work with all headersqsm-odoo
Now that the logo can be resized, the affix menu had to be adapted to handle tall headers. PR https://github.com/odoo/odoo/pull/29624 task-1904244
2019-02-05[REF] website, *: remove 'website.context' moduleqsm-odoo
* website_forum, website_gengo, website_mail_channel, website_sale Retrieving the global context is now the root's job, this will prevent problems when trying to extend the values the context has. See upcoming improvements with https://github.com/odoo/odoo/pull/29442 closes odoo/odoo#30816
2019-02-04[MERGE] forward port branch saas-12.1 up to 4524ad06a8aChristophe Simonis
2019-01-31[FIX] website: prevent animation of anchor links with invalid fragmentqsm-odoo
Also secure the anchor creation to only allow valid names, that is letters, digits, underscores and hyphens. task-1913458 closes odoo/odoo#30701
2019-01-31[REF] website: merge `BodyManager` and `WebsiteRoot`qsm-odoo
Following the new editor's merge at https://github.com/odoo/odoo/pull/29775, 'web_editor.BodyManager' stopped being used by the editor and the related file was moved to website without being renamed or considered. Hopefully, the editor replaced it by something else so the `BodyManager` makes no sense on its own anymore. This commit merges its features with the only other component which still used it: `WebsiteRoot` See upcoming improvements at https://github.com/odoo/odoo/pull/29442 (related to task-1932066) closes odoo/odoo#30740
2019-01-31[MERGE] forward port branch 12.0 up to cb8fefa8999Christophe Simonis
2019-01-25[FIX] website: affix menu no close frontend mobile menuNicolas Lempereur
On mobile the frontend menu navbar is an hamburger menu that open on click. If the option "Customize > Main layout | Affix Top Menu" is enabled, there is two menu: - one at the full top of the page - one affixed to the top of the viewport (only shown if we are at least scrolling 300px away from the top of the page) But there is a side effect: when scrolling if the menu at the top of the page is opened, it will be automatically closed => this makes sense to avoid having two menu shown on the same page but is an odd behavior. With this commit, the behavior is changed and when the menu is opened in the top, the affixed menu is not shown (it only works if the top page menu has no opened dropdown). opw-1920310 closes #30564
2018-12-06[REF] website_forum: mass moderation, modern UI bs4 and clean typeJeremy Kersten
Now forum only allow to post message of type 'question'. New 'modern' UI with Bootstrap 4 New moderation modal for bulk spam Co-authored-by: qha <qha@odoo.com> Co-authored-by: qsm <qsm@odoo.com> Co-authored-by: jke <jke@odoo.com> Thanks to @qha-odoo for UI Thanks to @qsm-odoo for reviewSsss closes odoo/odoo#29235
2018-12-03[FIX] doc: line blocks to literalXavier Morel
closes odoo/odoo#29219
2018-11-28[IMP] website, *: add event handler possibilitiesqsm-odoo
* web This commit introduces helpers for async handlers, especially for button clicks. Those helpers are now used automatically for website widgets (animations) if the 'async' word is placed in front of a handler name in the `events` key definition.
2019-01-25[REF] website, *: remove 'web_editor.ready'qsm-odoo
* website_event Following the new editor's merge at https://github.com/odoo/odoo/pull/29775, 'web_editor.ready' was moved to website without being renamed. Following https://github.com/odoo/odoo/pull/30409, this will remove that 'web_editor.ready' module. See upcoming improvements with https://github.com/odoo/odoo/pull/29442 closes odoo/odoo#30548
2019-01-24[FIX] website, *: restore 'animation' system to the way it workedqsm-odoo
* website_forum Following the new editor's merge at https://github.com/odoo/odoo/pull/29775, the website 'animation' system was 'extended' to vaguely use a 'Registry' instance instead of an object. This was however left undocumented, with a require in the middle of a file, restarting all animations when used, only used by website_forum... with more code for no reason at all, ... This commit restores the system to the way it was before and re-adapts website_forum: - No need to check if website_forum is in the DOM as it is already checked by the animation system (on top of that... the new code was checking the DOM before it was ready...). - No need of a dynamic add on a registry, this is always done before the DOM is ready, so before the animations are started. - No need to know the root instance in website forum, just use the animation as the Wysiwyg instance's parent. The goal of this commit is also to avoid useless conflicts with https://github.com/odoo/odoo/pull/29442 (that should not have had any conflict at all as totally independent of the editor task...) closes odoo/odoo#30478
2019-01-22[REF] website, *: rename and simplify web_editor.contextChristophe Matthieu
* website_forum, website_gengo, website_mail_channel, website_sale Following the new editor's merge at https://github.com/odoo/odoo/pull/29775, the web_editor.context module was moved to website without being renamed. This commit renames it to website.context but also merge the website extension that was made to that context directly within its definition. closes odoo/odoo#30409
2019-01-22[FIX] *: review 'frontend' pages init (web_editor.base)Christophe Matthieu
* auth_password_policy_signup, auth_signup, website, portal, survey, web_unsplash, website Following the new editor's merge at https://github.com/odoo/odoo/pull/29775 web_editor.base has been moved to website while it was still used by frontend pages which do not depend on website (especially portal). This commit moves web_editor.base to portal while waiting for https://github.com/odoo/odoo/pull/29442. It also removes the unnecessary dependencies to it in non-portal pages (in survey for example).
2019-01-17[IMP] web_editor,*: Refactoring the wysiwyg editor and 'html' fieldChristophe Matthieu
* Creating a new structure by transforming all the plugins in the library using the odoo inheritance system. Plugins are easier to implement with the AbstractPlugin to add Odoo behaviors. * From now on, the methods of the library (in this case Summernote) can no longer be called by other modules or files. Only the wysiwyg widgets can access it, to simplify the updating process. The wysiwyg object serves as an interface. * Depending on the options the snippets will be loaded or not, the editor will be in an iframe or not... all of this is transparent from the outside. * Regarding iframes, all controllers related to editing have been removed: the new API no longer needs them. This speeds up loading, eases testing and removes complexity for the same features. PUBLIC FEATURES There are several public methods on the Wysiwyg class: * Wysiwyg.prepare (WidgetParent): returns a deferred resolved when the library (xml, lazy, assets...) is loaded. * Wysiwyg.getRange (DOM): returns the range (selection in the dom) * Wysiwyg.setRange (startNode, startOffset, endNode, endOffset): creates a range (selection in the dom) * Wysiwyg.setRangeFromNode (DOM, options) that creates a range from an element (option available to select all, start or end) A jQuery selector was added: :o_editable, which indicates whether the current element is editable. That is, if it is contained in a tag with the attribute 'contentEditable = "true"' or in a tag with the class o_editable. Several methods are also present: * focusIn: makes a focus and places the cursor at the beginning of the element * focusInEnd: makes a focus and places the cursor at the end of the element * selectContent: makes a focus and selects the content HTML FIELD The HTML field can receive different options: * style-inline: {boolean} transforms a class into an inline style when saving and vice versa when reading. * no-attachment: {boolean} prevents the use of attachments (in media dialog) * cssEdit: {xml_id} to use a template containing the css to loaded in an iframe when editing * cssReadonly: {xml_id} to use a template containing the css to load into an iframe when viewing in readonly * snippets: {xml_id} snippets template (can be used with or without cssEdit) * wrapper: {template} qweb static template (containing a tag: id = "wrapper") that will include the content during editing (removed on save) MASS MAILING A widget was created for mass mailing. There are now two fields: body_html and body_arch. body_arch contains the code with the class without conversion into inline style, useful when editing and one with the inline style that is visible in readonly mode and sent by email. Advantage: no spreading errors, able to update css/theme, able to do more changes when converting to inline style so that a maximum of mail clients have an impeccable rendering. Co-authored-by: Antoine Guenet <age@odoo.com>
2019-01-17[REF] web_editor,*: Move and rename files to prepare refactoringChristophe Matthieu
The refactoring of the wysiwyg editor and 'html' field allows us to move some of the code that was in web_editor but only used in website or in mass_mailing. Some parts are still in web_editor but will be moved at a later time.
2019-01-09[IMP] website, *: allow creating anchor linksAndrea Ulliana
* portal, web_editor Anchor Link: - Some visual improvements of the link dialog. - New 'Page Anchor' field. - System by default: top and bottom. - Shows existing anchors. Creation of the anchor: - New option 'Anchor Name' to be able to create an anchor. task-1913458 closes odoo/odoo#29150
2018-11-14[FIX] website: recompute auto more menu on window full loadqsm-odoo
The previous code made sure we wait for images to be fully loaded before initializing the auto more menu. But in some cases, it is not enough, we also have to wait for fonts or even extra scripts. Those will have no impact on the feature in most cases though, so we will only update the auto more menu at that time, not wait for it to initialize the feature. closes odoo/odoo#28684
2018-11-07[FIX] website: recompute carousel item heights on image loadingqsm-odoo
Some code is in charge of setting the same min-height for all items of a carousel to the natural height of the tallest item, once the page is loaded. This code was not working correctly in the case the natural height of this tallest item depends on the height of one of its inner image, as we have to wait for the image to be loaded in that case. closes odoo/odoo#28159
2018-10-15[FIX] website: restore carousel item behaviorqsm-odoo
The animation that made all the carousel items have the same height automatically was broken. This commit fixes it and improves its behavior during edition. closes odoo/odoo#27801
2018-10-01[MERGE] forward port branch saas-11.4 up to 57e387b6452Christophe Simonis
2018-09-26[MERGE] forward port branch 11.0 up to fd122aec521Christophe Simonis
2018-09-26[FIX] website: fix image carousellen-odoo
We fix a number of problems: - grayscale filter not being applied except on desktop Firefox - incorrect vertical-align on iOS - image sliders being displayed below the margin on iOS - carousel indicators flickering at initial load - very short indicator panel, almost unusable on mobile - misaligned indicators because of first margin There are two modes on which these fixes apply: - image gallery in slideshow - slideshow in modal (e.g. obtained by clicking on the gallery set on masonry mode) Note that due to a refactoring, the gallerySlider was not loaded in the modal, completely breaking the indicators. Coauthored by @nle-odoo opw 1874274 closes odoo/odoo#27226
2018-09-25[FIX] website: website forced on wrong session with website selectorRomain Derie
Forcing website on session before navigating to the other website would not work as expected if the other website has a different URL (hostname). It would force the website on session on current website, then navigate to second website which could still had another website in session. Now, we force the website in session once we land on the website in the dispatch() method. Step to reproduce: - Set website1 to 127.0.0.10 - Set website2 to 127.0.0.20 - From website1 click on website2 in website selector - Website2 is forced on website1 session (wrong) - You land correctly on website2 and see website2 - From there (website2) click on website1 in website selector - Website1 is forced on website2 session (wrong) - You land on website1 but see website2 since website2 was forced on website1 session at steps 3/4. This is even more trickier when there is a third website without a domain in the equation (meaning this website can be seen from website1 and website2 without changing URL (hostname)).
2018-09-25[FIX] website: BS4, restore gallery snippetKishan Gajjar
2018-09-13[FIX] website: multi website and company switcherJeremy Kersten
Remove domain based Use domain if set That will imply that you need to reconnect on your new website too. task-1878245
2018-09-12[FIX] portal, website: allow to use wide brand logoqsm-odoo
When the user chose a very wide logo for the website navbar, it overflew over the menu items (making the "+" feature look broken). This in fact occurs since commit https://github.com/odoo/odoo/commit/4bc79da943c71e762e1f6dedbe3a641042bfef3f. Its goal was to avoid top menu flickering due to that "+" button feature. To do that, menu items were hidden with an height of 0 during loading, then, once the correct number of items needed for the "+" feature was computed, they were made visible to the user. Another problem was due to the logo image loading. When it is not loaded yet, we cannot properly compute the number of items which is needed. To solve that problem, we fixed the size of the image container instead of setting the height of the image itself. But fixing the size of the image container only created a new bug: very wide logos overflow this container. This commit solves all the problems: 1) The height of the image is set to be equal to the navbar links. 2) The height of the navbar is not forced, meaning that if the user decides to change the height of its logo to go against (1), everything will be adapted accordingly. 3) During loading, the menu items are still 0px tall, hidden and made visible once the "+" feature is enabled. 4) The "+" feature is only enabled once all the navbar images have been successfully loaded. task-1878245
2018-08-31[FIX] website, *: avoid top menu flickeringqsm-odoo
* portal, web
2018-08-31[FIX] website: allow to switch from company from the front endJeremy Kersten
In some case, you can be on website 2 (where company_id = 2) with your user into the company 1. In this case, you will not see the product on ecommerce from company 2 while you stay in company 1.
2018-08-24[FIX] website: move `main_object_request` event in website_rootRomain Derie
`main_object_request` was added in the navbar widget. It would not work with `PageManagement` widget as it is added in the website_root widget and not the navbar. Moving it to the website_root will make the event accessible when triggering up the event.
2018-08-13[FIX] website: improve/fix menu, copy on unlink, clone page, unique_path, ↵Jeremy Kersten
sale_report, ... Fix bug from the initial poc of JOV Fix menu creation - creating a menu would create a 'container' menu in the DB (.create is call without website_id) then writing on it would copy (if condition to cow) the menu with a website_id leaving the first one as a menu container unused. - website_menu should always have a website_id we dont want to support the multiwebsite system that allow to have generic/specific menu unlink/write is useless now since we always have a website_id Make unique_path website dependent, 2 distinct website can have a page with same name Make Sale report multiwebsite compliant Make website_id on sale_order / account.invoice as a related stored from partner_id. Co-authored-by: Derie Romain <rde@odoo.com> Co-authored-by: Kersten Jérémy <jke@odoo.com>
2018-08-13[REF] website: small diff pep, renaming, make generic functionJeremy Kersten
This commit should not change the behaviour in most cases. Co-authored-by: Derie Romain <rde@odoo.com> Co-authored-by: Kersten Jérémy <jke@odoo.com>
2018-08-13[IMP] website,*: support multiple websitesJoren Van Onder
This implements support to administer multiple websites. Although the core functionality already existed, managing multiple websites was fairly technical. In the interest of database updates and migration this attempts to keep duplicated data to a minimum. To do this the usual generic records are rendered unless some website-specific record exists that replaces it. Copy-on-write (COW) is used to create these website-specific records. Through this mechanism creating a website-specific record is delayed until necessary. A COW mechanism has been implemented on 4 models: ir.ui.view, website.page, website.menu and ir.attachment. These COW mechanisms are activated when editing data through the website (aka frontend). These frontend edits (e.g. with web_editor) will be website-specific, possibly creating a website-specific record when necessary. When editing data in the backend nothing special will happen, even when editing a generic record. Note that because of this mechanism also facilitates the ability to create new, uncustomized websites because the generic data is kept. Support is provided for a website to have any theme. Themes are fairly complex to handle. Standalone themes can depend on other standalone themes (e.g. theme_beauty depends on theme_loftspace) and themes usually modify some data of the themes they depend on. Because a theme can be installed on multiple websites, using website_id m2o fields does not work well. It would require duplicate data, making updates and migration harder. Because of this, data for themes (ir.ui.view and ir.attachment specifically) have a theme_id m2o. website has a theme_ids m2m that identifies all theme modules currently installed on it. Through these fields we figure out what to render. A theme is only fully uninstalled when it's no longer active on any website. The advantage of this approach is that upgrading or migrating theme data is no different from the single-website case. The website.published.mixin class was modified to handle multiple websites. A wizard was added in the backend to easily manage this for multiple website. Although not used anywhere in this commit, a 'website_id' variable has been added in the evaluation context of ir.rule. It allows to easily make any model multi-website aware, all that's needed is a custom website_id m2o field on a model and a custom record rule.
2018-08-13[REF] web_editor, website: improve animations' restartqsm-odoo
- Before this commit, when we asked to (re)start animations on an element, we checked the animations to be started on the element and started them after destroying the animations with the same name which were already running on that element. This is in fact not correct. Indeed, if an animation was running on element but that the conditions that made the animation start are now gone, asking to restart the animations on that element should destroy the deprecated ones. (e.g. an animation "A" is to be started on all elements which have a class "a", if we remove the class "a" on an element then restart animations, the animation "A" should be destroy). The implementation is in fact even simpler: when asking a restart, a full stop is performed then a simple start. Note: this does not need to be a fix as multiple animations on a same element was recently introduced and the described case never occurs with current features. - When stopping the animations on an element, stops the animations of all its descendants too. - Add an helper method in the `SnippetOption` class to restart the animations running on the `$target` element.
2018-08-13[IMP] website, *: review snippets and colorsCocographique
* web, web_editor, website_hr_recruitment, website_mail_channel, website_mass_mailing - Review all snippets and add new ones - Add lots of new options - Use odoo colors as default theme colors task-38878
2018-08-10[FIX] website: BS4, adapt affix top menu to ID targetingqsm-odoo
2018-07-27[REF] web, *: share and adapt code for auto "more" buttons for navbarsqsm-odoo
* 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[REF] *: BS4, review the 'nav' and 'navbar' componentsqsm-odoo
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[REF] *: BS4, adapt dropdowns and caretsqsm-odoo
- 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[REF] *: BS4, adapt display classesqsm-odoo
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[REF] web, *: BS4, adapt use of tooltip/popover.jsqsm-odoo