summaryrefslogtreecommitdiff
path: root/addons/website/static/src/js/website.contentMenu.js
diff options
context:
space:
mode:
authorqsm-odoo <qsm@odoo.com>2017-06-07 17:45:15 +0200
committerqsm-odoo <qsm@odoo.com>2017-08-16 10:59:39 +0200
commit4f925af06fd3cebfcfb56eb947ab68c8a2ca4490 (patch)
treeb13bd049b6b3e7bbdfb537d19b53c95fc4025ea5 /addons/website/static/src/js/website.contentMenu.js
parentf205bfcd4ddcf3f1d8676ee87ee0b29941bd6773 (diff)
[MOV] web_editor, website: reorganize files
Diffstat (limited to 'addons/website/static/src/js/website.contentMenu.js')
-rw-r--r--addons/website/static/src/js/website.contentMenu.js361
1 files changed, 0 insertions, 361 deletions
diff --git a/addons/website/static/src/js/website.contentMenu.js b/addons/website/static/src/js/website.contentMenu.js
deleted file mode 100644
index 70f35871e74..00000000000
--- a/addons/website/static/src/js/website.contentMenu.js
+++ /dev/null
@@ -1,361 +0,0 @@
-odoo.define('website.contentMenu', function (require) {
-"use strict";
-
-var core = require('web.core');
-var ajax = require('web.ajax');
-var Widget = require('web.Widget');
-var base = require('web_editor.base');
-var editor = require('web_editor.editor');
-var widget = require('web_editor.widget');
-var website = require('website.website');
-
-var _t = core._t;
-var qweb = core.qweb;
-
-ajax.loadXML('/website/static/src/xml/website.contentMenu.xml', qweb);
-
-var TopBarContent = Widget.extend({
- start: function () {
- var self = this;
-
- // Add page modal + menu content event
- this.$el.add($('#o_website_add_page_modal')).on('click', 'a[data-action]', function (e) {
- e.preventDefault();
- self[$(this).data('action')]();
- });
-
- return this._super();
- },
- edit_menu: function (action_before_reload) {
- var context = base.get_context();
- var def = $.Deferred();
- if ($("[data-content_menu_id]").length) {
- var select = new SelectEditMenuDialog();
- select.on('save', this, function (root) {
- def.resolve(root);
- });
- select.open();
- } else {
- def.resolve(null);
- }
-
- return def.then(function (root_id) {
- return ajax.jsonRpc('/web/dataset/call_kw', 'call', {
- model: 'website.menu',
- method: 'get_tree',
- args: [context.website_id, root_id],
- kwargs: {
- context: context
- },
- }).then(function (menu) {
- var dialog = new EditMenuDialog(this, {}, menu).open();
- dialog.on("save", null, function () {
- $.when(action_before_reload && action_before_reload()).then(function () {
- editor.reload();
- });
- });
- return dialog;
- });
- });
- },
- new_page: function () {
- website.prompt({
- id: "editor_new_page",
- window_title: _t("New Page"),
- input: _t("Page Title"),
- init: function () {
- var $group = this.$dialog.find("div.form-group");
- $group.removeClass("mb0");
-
- var $add = $('<div/>', {'class': 'form-group mb0'})
- .append($('<span/>', {'class': 'col-sm-offset-3 col-sm-9 text-left'})
- .append(qweb.render('web_editor.components.switch', {id: 'switch_addTo_menu', label: _t("Add page in menu")})));
- $add.find('input').prop('checked', true);
- $group.after($add);
- }
- }).then(function (val, field, $dialog) {
- if (val) {
- var url = '/website/add/' + encodeURIComponent(val);
- if ($dialog.find('input[type="checkbox"]').is(':checked')) url +="?add_menu=1";
- document.location = url;
- }
- });
- },
- rename_page: function () {
- var self = this;
- var context = base.get_context();
- self.mo_id = self.getMainObject().id;
-
- ajax.jsonRpc('/web/dataset/call_kw', 'call', {
- model: 'website',
- method: 'page_search_dependencies',
- args: [self.mo_id],
- kwargs: {
- context: context
- },
- }).then(function (deps) {
- website.prompt({
- id: "editor_rename_page",
- window_title: _t("Rename This Page"),
- dependencies: deps,
- }, 'website.rename_page').then(function (val, field, $dialog) {
- ajax.jsonRpc('/web/dataset/call_kw', 'call', {
- model: 'website',
- method: 'rename_page',
- args: [
- self.mo_id,
- val,
- ],
- kwargs: {
- context: context
- },
- }).then(function (new_name) {
- window.location = "/page/" + encodeURIComponent(new_name);
- });
- });
- });
- },
- delete_page: function () {
- var self = this;
- var context = base.get_context();
- self.mo_id = self.getMainObject().id;
-
- ajax.jsonRpc('/web/dataset/call_kw', 'call', {
- model: 'website',
- method: 'page_search_dependencies',
- args: [self.mo_id],
- kwargs: {
- context: context,
- },
- }).then(function (deps) {
- website.prompt({
- id: "editor_delete_page",
- window_title: _t("Delete Page"),
- dependencies: deps,
- init: function () { $('.btn-continue').prop("disabled", true); },
- }, 'website.delete_page').then(function (val, field, $dialog) {
-
- if ($dialog.find('input[type="checkbox"]').is(':checked')) {
- ajax.jsonRpc('/web/dataset/call_kw', 'call', {
- model: 'website',
- method: 'delete_page',
- args: [self.mo_id],
- kwargs: {
- context: context
- },
- }).then(function () {
- window.location = "/";
- });
- }
- });
- });
- },
- getMainObject: function () {
- var repr = $('html').data('main-object');
- var m = repr.match(/(.+)\((\d+),(.*)\)/);
- if (!m) {
- return null;
- } else {
- return {
- model: m[1],
- id: m[2]|0
- };
- }
- }
-});
-
-website.TopBar.include({
- start: function () {
- this.content_menu = new TopBarContent();
- var def = this.content_menu.attachTo($('.oe_content_menu'));
- return $.when(this._super(), def);
- }
-});
-
-var SelectEditMenuDialog = widget.Dialog.extend({
- template: 'website.contentMenu.dialog.select',
- init: function (parent, options) {
- var self = this;
- self.roots = [{id: null, name: _t("Top Menu")}];
- $("[data-content_menu_id]").each(function () {
- self.roots.push({id: $(this).data("content_menu_id"), name: $(this).attr("name")});
- });
- this._super(parent, _.extend({}, {
- title: _t("Select a Menu"),
- save_text: _t("Continue")
- }, options || {}));
- },
- save: function () {
- this.final_data = parseInt(this.$el.find("select").val() || null);
- this._super.apply(this, arguments);
- }
-});
-
-var EditMenuDialog = widget.Dialog.extend({
- template: 'website.contentMenu.dialog.edit',
- events: _.extend({}, widget.Dialog.prototype.events, {
- 'click a.js_add_menu': 'add_menu',
- 'click button.js_edit_menu': 'edit_menu',
- 'click button.js_delete_menu': 'delete_menu',
- }),
- init: function (parent, options, menu) {
- this.menu = menu;
- this.root_menu_id = menu.id;
- this.flat = this.flatenize(menu);
- this.to_delete = [];
- this._super(parent, _.extend({}, {
- title: _t("Edit Menu"),
- size: 'medium',
- }, options || {}));
- },
- start: function () {
- var r = this._super.apply(this, arguments);
- this.$('.oe_menu_editor').nestedSortable({
- listType: 'ul',
- handle: 'div',
- items: 'li',
- maxLevels: 2,
- toleranceElement: '> div',
- forcePlaceholderSize: true,
- opacity: 0.6,
- placeholder: 'oe_menu_placeholder',
- tolerance: 'pointer',
- attribute: 'data-menu-id',
- expression: '()(.+)', // nestedSortable takes the second match of an expression (*sigh*)
- });
- return r;
- },
- flatenize: function (node, dict) {
- dict = dict || {};
- var self = this;
- dict[node.id] = node;
- node.children.forEach(function (child) {
- self.flatenize(child, dict);
- });
- return dict;
- },
- add_menu: function () {
- var self = this;
- var dialog = new MenuEntryDialog(this, {menu_link_options: true}, undefined, {});
- dialog.on('save', this, function (link) {
- var new_menu = {
- id: _.uniqueId('new-'),
- name: link.text,
- url: link.url,
- new_window: link.isNewWindow,
- parent_id: false,
- sequence: 0,
- children: [],
- };
- self.flat[new_menu.id] = new_menu;
- self.$('.oe_menu_editor').append(
- qweb.render('website.contentMenu.dialog.submenu', { submenu: new_menu }));
- });
- dialog.open();
- },
- edit_menu: function (ev) {
- var self = this;
- var menu_id = $(ev.currentTarget).closest('[data-menu-id]').data('menu-id');
- var menu = self.flat[menu_id];
- if (menu) {
- var dialog = new MenuEntryDialog(this, {}, undefined, menu);
- dialog.on('save', this, function (link) {
- var id = link.id;
- var menu_obj = self.flat[id];
- _.extend(menu_obj, {
- 'name': link.text,
- 'url': link.url,
- 'new_window': link.isNewWindow,
- });
- var $menu = self.$('[data-menu-id="' + id + '"]');
- $menu.find('.js_menu_label').first().text(menu_obj.name);
- });
- dialog.open();
- } else {
- alert("Could not find menu entry");
- }
- },
- delete_menu: function (ev) {
- var $menu = $(ev.currentTarget).closest('[data-menu-id]');
- var mid = $menu.data('menu-id')|0;
- if (mid) {
- this.to_delete.push(mid);
- }
- $menu.remove();
- },
- save: function () {
- var _super = this._super.bind(this);
- var self = this;
- var new_menu = this.$('.oe_menu_editor').nestedSortable('toArray', {startDepthCount: 0});
- var levels = [];
- var data = [];
- var context = base.get_context();
- // Resequence, re-tree and remove useless data
- new_menu.forEach(function (menu) {
- if (menu.id) {
- levels[menu.depth] = (levels[menu.depth] || 0) + 1;
- var mobj = self.flat[menu.id];
- mobj.sequence = levels[menu.depth];
- mobj.parent_id = (menu.parent_id|0) || menu.parent_id || self.root_menu_id;
- delete(mobj.children);
- data.push(mobj);
- }
- });
- ajax.jsonRpc('/web/dataset/call_kw', 'call', {
- model: 'website.menu',
- method: 'save',
- args: [[context.website_id], { data: data, to_delete: self.to_delete }],
- kwargs: {
- context: context
- },
- }).then(function () {
- return _super();
- });
- },
-});
-
-var MenuEntryDialog = widget.LinkDialog.extend({
- init: function (parent, options, editor, data) {
- data.text = data.name || '';
- data.isNewWindow = data.new_window;
- this.data = data;
- this.menu_link_options = options.menu_link_options;
- return this._super.apply(this, arguments);
- },
- start: function () {
- var self = this;
- this.$(".o_link_dialog_preview").remove();
- this.$(".window-new, .link-style").closest(".form-group").remove();
- this.$("label[for='o_link_dialog_label_input']").text(_t("Menu Label"));
- if (this.menu_link_options) { // add menu link option only when adding new menu
- this.$('#o_link_dialog_label_input').closest('.form-group').after(qweb.render('website.contentMenu.dialog.edit.link_menu_options'));
- this.$('input[name=link_menu_options]').on('change', function() {
- self.$('#o_link_dialog_url_input').closest('.form-group').toggle();
- });
- }
- this.$modal.find('.modal-lg').removeClass('modal-lg')
- .find('.col-md-8').removeClass('col-md-8').addClass('col-xs-12');
-
- return this._super.apply(this, arguments);
- },
- save: function () {
- var $e = this.$('#o_link_dialog_label_input');
- if (!$e.val() || !$e[0].checkValidity()) {
- $e.closest('.form-group').addClass('has-error');
- $e.focus();
- return;
- }
- if (this.$('input[name=link_menu_options]:checked').val() === 'new_page') {
- window.location = '/website/add/' + encodeURIComponent($e.val()) + '?add_menu=1';
- return;
- }
- return this._super.apply(this, arguments);
- }
-});
-
-return {
- 'TopBar': TopBarContent,
- 'EditMenuDialog': EditMenuDialog,
-};
-
-});