summaryrefslogtreecommitdiff
path: root/addons/web_editor/static/src/js/wysiwyg/root.js
diff options
context:
space:
mode:
authorstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
committerstephanchrst <stephanchrst@gmail.com>2022-05-10 21:51:50 +0700
commit3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch)
treea44932296ef4a9b71d5f010906253d8c53727726 /addons/web_editor/static/src/js/wysiwyg/root.js
parent0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff)
initial commit 2
Diffstat (limited to 'addons/web_editor/static/src/js/wysiwyg/root.js')
-rw-r--r--addons/web_editor/static/src/js/wysiwyg/root.js91
1 files changed, 91 insertions, 0 deletions
diff --git a/addons/web_editor/static/src/js/wysiwyg/root.js b/addons/web_editor/static/src/js/wysiwyg/root.js
new file mode 100644
index 00000000..57e9f65e
--- /dev/null
+++ b/addons/web_editor/static/src/js/wysiwyg/root.js
@@ -0,0 +1,91 @@
+odoo.define('web_editor.wysiwyg.root', function (require) {
+'use strict';
+
+var Widget = require('web.Widget');
+
+var assetsLoaded = false;
+
+var WysiwygRoot = Widget.extend({
+ assetLibs: ['web_editor.compiled_assets_wysiwyg'],
+ _loadLibsTplRoute: '/web_editor/public_render_template',
+
+ publicMethods: ['isDirty', 'save', 'getValue', 'setValue', 'getEditable', 'on', 'trigger', 'focus', 'saveModifiedImages'],
+
+ /**
+ * @see 'web_editor.wysiwyg' module
+ **/
+ init: function (parent, params) {
+ this._super.apply(this, arguments);
+ this._params = params;
+ this.$editor = null;
+ },
+ /**
+ * Load assets
+ *
+ * @override
+ **/
+ willStart: function () {
+ var self = this;
+
+ var $target = this.$el;
+ this.$el = null;
+
+ return this._super().then(function () {
+ // FIXME: this code works by pure luck. If the web_editor.wysiwyg
+ // JS module was requiring a delayed module, using it here right
+ // away would lead to a crash.
+ if (!assetsLoaded) {
+ var Wysiwyg = odoo.__DEBUG__.services['web_editor.wysiwyg'];
+ _.each(['getRange', 'setRange', 'setRangeFromNode'], function (methodName) {
+ WysiwygRoot[methodName] = Wysiwyg[methodName].bind(Wysiwyg);
+ });
+ assetsLoaded = true;
+ }
+
+ var Wysiwyg = self._getWysiwygContructor();
+ var instance = new Wysiwyg(self, self._params);
+ if (self.__extraAssetsForIframe) {
+ instance.__extraAssetsForIframe = self.__extraAssetsForIframe;
+ }
+ self._params = null;
+
+ _.each(self.publicMethods, function (methodName) {
+ self[methodName] = instance[methodName].bind(instance);
+ });
+
+ return instance.attachTo($target).then(function () {
+ self.$editor = instance.$editor || instance.$el;
+ });
+ });
+ },
+
+ _getWysiwygContructor: function () {
+ return odoo.__DEBUG__.services['web_editor.wysiwyg'];
+ }
+});
+
+return WysiwygRoot;
+
+});
+
+odoo.define('web_editor.wysiwyg.default_options', function (require) {
+'use strict';
+
+/**
+ * TODO this should be refactored to be done another way, same as the 'root'
+ * module that should be done another way.
+ *
+ * This allows to have access to default options that are used in the summernote
+ * editor so that they can be tweaked (instead of entirely replaced) when using
+ * the editor on an editable content.
+ */
+
+var core = require('web.core');
+
+var _lt = core._lt;
+
+return {
+ styleTags: ['p', 'pre', 'small', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote'],
+ fontSizes: [_lt('Default'), 8, 9, 10, 11, 12, 14, 18, 24, 36, 48, 62],
+};
+});