From 6e53cb2ca2c80b4f57507da975b8d5694b07122b Mon Sep 17 00:00:00 2001
From: Romain Courteaud <romain@nexedi.com>
Date: Wed, 11 Oct 2017 08:33:32 +0000
Subject: [PATCH] [erp5_xhtml_style] Add ckeditor gadget

Make ckeditor responsive.
Disable ACF.
---
 .../ckeditor.gadget.appcache.appcache         | 342 ++++++++++++++++++
 .../ckeditor.gadget.appcache.xml              |  34 ++
 .../erp5_ckeditor/ckeditor.gadget.html.html   |  20 +
 .../erp5_ckeditor/ckeditor.gadget.html.xml    |  34 ++
 .../erp5_ckeditor/ckeditor.gadget.js.js       | 216 +++++++++++
 .../erp5_ckeditor/ckeditor.gadget.js.xml      |  34 ++
 6 files changed, 680 insertions(+)
 create mode 100644 product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.appcache.appcache
 create mode 100644 product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.appcache.xml
 create mode 100644 product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.html.html
 create mode 100644 product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.html.xml
 create mode 100644 product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.js.js
 create mode 100644 product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.js.xml

diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.appcache.appcache b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.appcache.appcache
new file mode 100644
index 0000000000..f13733170c
--- /dev/null
+++ b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.appcache.appcache
@@ -0,0 +1,342 @@
+CACHE MANIFEST
+# generated on Thu, 12 Oct 2017 10:00:01 +0000
+CACHE:
+renderjs.js
+rsvp.js
+ckeditor.gadget.js
+ckeditor/skins/moono-lisa/icons.png
+ckeditor/skins/moono-lisa/editor_iequirks.css
+ckeditor/skins/moono-lisa/images/lock.png
+ckeditor/skins/moono-lisa/images/lock-open.png
+ckeditor/skins/moono-lisa/images/refresh.png
+ckeditor/skins/moono-lisa/images/spinner.gif
+ckeditor/skins/moono-lisa/images/arrow.png
+ckeditor/skins/moono-lisa/images/close.png
+ckeditor/skins/moono-lisa/images/hidpi/lock.png
+ckeditor/skins/moono-lisa/images/hidpi/lock-open.png
+ckeditor/skins/moono-lisa/images/hidpi/refresh.png
+ckeditor/skins/moono-lisa/images/hidpi/close.png
+ckeditor/skins/moono-lisa/editor_ie.css
+ckeditor/skins/moono-lisa/dialog_iequirks.css
+ckeditor/skins/moono-lisa/dialog_ie8.css
+ckeditor/skins/moono-lisa/icons_hidpi.png
+ckeditor/skins/moono-lisa/editor_gecko.css
+ckeditor/skins/moono-lisa/editor_ie8.css
+ckeditor/skins/moono-lisa/editor.css
+ckeditor/skins/moono-lisa/dialog_ie.css
+ckeditor/skins/moono-lisa/dialog.css
+ckeditor/lang/ro.js
+ckeditor/lang/id.js
+ckeditor/lang/fi.js
+ckeditor/lang/mk.js
+ckeditor/lang/es-mx.js
+ckeditor/lang/az.js
+ckeditor/lang/bg.js
+ckeditor/lang/af.js
+ckeditor/lang/et.js
+ckeditor/lang/km.js
+ckeditor/lang/sr-latn.js
+ckeditor/lang/da.js
+ckeditor/lang/bn.js
+ckeditor/lang/eo.js
+ckeditor/lang/si.js
+ckeditor/lang/fa.js
+ckeditor/lang/fo.js
+ckeditor/lang/uk.js
+ckeditor/lang/en.js
+ckeditor/lang/mn.js
+ckeditor/lang/fr.js
+ckeditor/lang/pl.js
+ckeditor/lang/it.js
+ckeditor/lang/eu.js
+ckeditor/lang/ug.js
+ckeditor/lang/sr.js
+ckeditor/lang/ka.js
+ckeditor/lang/gl.js
+ckeditor/lang/nl.js
+ckeditor/lang/vi.js
+ckeditor/lang/lv.js
+ckeditor/lang/sk.js
+ckeditor/lang/ja.js
+ckeditor/lang/sq.js
+ckeditor/lang/no.js
+ckeditor/lang/th.js
+ckeditor/lang/en-gb.js
+ckeditor/lang/sl.js
+ckeditor/lang/en-au.js
+ckeditor/lang/el.js
+ckeditor/lang/hi.js
+ckeditor/lang/cy.js
+ckeditor/lang/ar.js
+ckeditor/lang/nb.js
+ckeditor/lang/ms.js
+ckeditor/lang/is.js
+ckeditor/lang/pt-br.js
+ckeditor/lang/es.js
+ckeditor/lang/fr-ca.js
+ckeditor/lang/de-ch.js
+ckeditor/lang/ko.js
+ckeditor/lang/bs.js
+ckeditor/lang/ku.js
+ckeditor/lang/tt.js
+ckeditor/lang/hu.js
+ckeditor/lang/ru.js
+ckeditor/lang/cs.js
+ckeditor/lang/zh.js
+ckeditor/lang/sv.js
+ckeditor/lang/lt.js
+ckeditor/lang/tr.js
+ckeditor/lang/hr.js
+ckeditor/lang/zh-cn.js
+ckeditor/lang/pt.js
+ckeditor/lang/he.js
+ckeditor/lang/de.js
+ckeditor/lang/en-ca.js
+ckeditor/lang/ca.js
+ckeditor/lang/gu.js
+ckeditor/lang/oc.js
+ckeditor/build-config.js
+ckeditor/plugins/icons.png
+ckeditor/plugins/specialchar/dialogs/lang/id.js
+ckeditor/plugins/specialchar/dialogs/lang/fi.js
+ckeditor/plugins/specialchar/dialogs/lang/es-mx.js
+ckeditor/plugins/specialchar/dialogs/lang/az.js
+ckeditor/plugins/specialchar/dialogs/lang/bg.js
+ckeditor/plugins/specialchar/dialogs/lang/af.js
+ckeditor/plugins/specialchar/dialogs/lang/et.js
+ckeditor/plugins/specialchar/dialogs/lang/km.js
+ckeditor/plugins/specialchar/dialogs/lang/da.js
+ckeditor/plugins/specialchar/dialogs/lang/eo.js
+ckeditor/plugins/specialchar/dialogs/lang/si.js
+ckeditor/plugins/specialchar/dialogs/lang/fa.js
+ckeditor/plugins/specialchar/dialogs/lang/uk.js
+ckeditor/plugins/specialchar/dialogs/lang/en.js
+ckeditor/plugins/specialchar/dialogs/lang/fr.js
+ckeditor/plugins/specialchar/dialogs/lang/pl.js
+ckeditor/plugins/specialchar/dialogs/lang/it.js
+ckeditor/plugins/specialchar/dialogs/lang/eu.js
+ckeditor/plugins/specialchar/dialogs/lang/ug.js
+ckeditor/plugins/specialchar/dialogs/lang/gl.js
+ckeditor/plugins/specialchar/dialogs/lang/nl.js
+ckeditor/plugins/specialchar/dialogs/lang/vi.js
+ckeditor/plugins/specialchar/dialogs/lang/lv.js
+ckeditor/plugins/specialchar/dialogs/lang/sk.js
+ckeditor/plugins/specialchar/dialogs/lang/ja.js
+ckeditor/plugins/specialchar/dialogs/lang/sq.js
+ckeditor/plugins/specialchar/dialogs/lang/no.js
+ckeditor/plugins/specialchar/dialogs/lang/th.js
+ckeditor/plugins/specialchar/dialogs/lang/en-gb.js
+ckeditor/plugins/specialchar/dialogs/lang/sl.js
+ckeditor/plugins/specialchar/dialogs/lang/en-au.js
+ckeditor/plugins/specialchar/dialogs/lang/el.js
+ckeditor/plugins/specialchar/dialogs/lang/cy.js
+ckeditor/plugins/specialchar/dialogs/lang/ar.js
+ckeditor/plugins/specialchar/dialogs/lang/nb.js
+ckeditor/plugins/specialchar/dialogs/lang/pt-br.js
+ckeditor/plugins/specialchar/dialogs/lang/es.js
+ckeditor/plugins/specialchar/dialogs/lang/fr-ca.js
+ckeditor/plugins/specialchar/dialogs/lang/de-ch.js
+ckeditor/plugins/specialchar/dialogs/lang/ko.js
+ckeditor/plugins/specialchar/dialogs/lang/ku.js
+ckeditor/plugins/specialchar/dialogs/lang/tt.js
+ckeditor/plugins/specialchar/dialogs/lang/hu.js
+ckeditor/plugins/specialchar/dialogs/lang/ru.js
+ckeditor/plugins/specialchar/dialogs/lang/cs.js
+ckeditor/plugins/specialchar/dialogs/lang/zh.js
+ckeditor/plugins/specialchar/dialogs/lang/sv.js
+ckeditor/plugins/specialchar/dialogs/lang/lt.js
+ckeditor/plugins/specialchar/dialogs/lang/tr.js
+ckeditor/plugins/specialchar/dialogs/lang/hr.js
+ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js
+ckeditor/plugins/specialchar/dialogs/lang/pt.js
+ckeditor/plugins/specialchar/dialogs/lang/he.js
+ckeditor/plugins/specialchar/dialogs/lang/de.js
+ckeditor/plugins/specialchar/dialogs/lang/en-ca.js
+ckeditor/plugins/specialchar/dialogs/lang/ca.js
+ckeditor/plugins/specialchar/dialogs/lang/oc.js
+ckeditor/plugins/specialchar/dialogs/specialchar.js
+ckeditor/plugins/smiley/images/embaressed_smile.gif
+ckeditor/plugins/smiley/images/shades_smile.png
+ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif
+ckeditor/plugins/smiley/images/lightbulb.png
+ckeditor/plugins/smiley/images/tounge_smile.gif
+ckeditor/plugins/smiley/images/teeth_smile.png
+ckeditor/plugins/smiley/images/wink_smile.png
+ckeditor/plugins/smiley/images/tongue_smile.gif
+ckeditor/plugins/smiley/images/broken_heart.png
+ckeditor/plugins/smiley/images/tongue_smile.png
+ckeditor/plugins/smiley/images/confused_smile.gif
+ckeditor/plugins/smiley/images/heart.gif
+ckeditor/plugins/smiley/images/cry_smile.png
+ckeditor/plugins/smiley/images/omg_smile.gif
+ckeditor/plugins/smiley/images/regular_smile.png
+ckeditor/plugins/smiley/images/angel_smile.gif
+ckeditor/plugins/smiley/images/angel_smile.png
+ckeditor/plugins/smiley/images/kiss.png
+ckeditor/plugins/smiley/images/heart.png
+ckeditor/plugins/smiley/images/cry_smile.gif
+ckeditor/plugins/smiley/images/omg_smile.png
+ckeditor/plugins/smiley/images/whatchutalkingabout_smile.png
+ckeditor/plugins/smiley/images/angry_smile.png
+ckeditor/plugins/smiley/images/shades_smile.gif
+ckeditor/plugins/smiley/images/angry_smile.gif
+ckeditor/plugins/smiley/images/lightbulb.gif
+ckeditor/plugins/smiley/images/kiss.gif
+ckeditor/plugins/smiley/images/wink_smile.gif
+ckeditor/plugins/smiley/images/thumbs_up.png
+ckeditor/plugins/smiley/images/thumbs_up.gif
+ckeditor/plugins/smiley/images/teeth_smile.gif
+ckeditor/plugins/smiley/images/devil_smile.gif
+ckeditor/plugins/smiley/images/broken_heart.gif
+ckeditor/plugins/smiley/images/thumbs_down.gif
+ckeditor/plugins/smiley/images/thumbs_down.png
+ckeditor/plugins/smiley/images/sad_smile.png
+ckeditor/plugins/smiley/images/embarrassed_smile.png
+ckeditor/plugins/smiley/images/envelope.png
+ckeditor/plugins/smiley/images/devil_smile.png
+ckeditor/plugins/smiley/images/sad_smile.gif
+ckeditor/plugins/smiley/images/embarrassed_smile.gif
+ckeditor/plugins/smiley/images/regular_smile.gif
+ckeditor/plugins/smiley/images/envelope.gif
+ckeditor/plugins/smiley/images/confused_smile.png
+ckeditor/plugins/smiley/dialogs/smiley.js
+ckeditor/plugins/pastefromword/filter/default.js
+ckeditor/plugins/templates/templates/images/template2.gif
+ckeditor/plugins/templates/templates/images/template3.gif
+ckeditor/plugins/templates/templates/images/template1.gif
+ckeditor/plugins/templates/templates/default.js
+ckeditor/plugins/templates/dialogs/templates.js
+ckeditor/plugins/templates/dialogs/templates.css
+ckeditor/plugins/div/dialogs/div.js
+ckeditor/plugins/showblocks/images/block_h3.png
+ckeditor/plugins/showblocks/images/block_h4.png
+ckeditor/plugins/showblocks/images/block_div.png
+ckeditor/plugins/showblocks/images/block_p.png
+ckeditor/plugins/showblocks/images/block_h2.png
+ckeditor/plugins/showblocks/images/block_pre.png
+ckeditor/plugins/showblocks/images/block_address.png
+ckeditor/plugins/showblocks/images/block_blockquote.png
+ckeditor/plugins/showblocks/images/block_h1.png
+ckeditor/plugins/showblocks/images/block_h5.png
+ckeditor/plugins/showblocks/images/block_h6.png
+ckeditor/plugins/colordialog/dialogs/colordialog.css
+ckeditor/plugins/colordialog/dialogs/colordialog.js
+ckeditor/plugins/scayt/skins/moono-lisa/scayt.css
+ckeditor/plugins/scayt/dialogs/options.js
+ckeditor/plugins/scayt/dialogs/toolbar.css
+ckeditor/plugins/scayt/dialogs/dialog.css
+ckeditor/plugins/table/dialogs/table.js
+ckeditor/plugins/find/dialogs/find.js
+ckeditor/plugins/about/dialogs/about.js
+ckeditor/plugins/about/dialogs/logo_ckeditor.png
+ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png
+ckeditor/plugins/image/images/noimage.png
+ckeditor/plugins/image/dialogs/image.js
+ckeditor/plugins/preview/preview.html
+ckeditor/plugins/copyformatting/styles/copyformatting.css
+ckeditor/plugins/copyformatting/cursors/cursor.svg
+ckeditor/plugins/copyformatting/cursors/cursor-disabled.svg
+ckeditor/plugins/link/images/anchor.png
+ckeditor/plugins/link/images/hidpi/anchor.png
+ckeditor/plugins/link/dialogs/anchor.js
+ckeditor/plugins/link/dialogs/link.js
+ckeditor/plugins/wsc/skins/moono-lisa/wsc.css
+ckeditor/plugins/wsc/dialogs/ciframe.html
+ckeditor/plugins/wsc/dialogs/wsc.css
+ckeditor/plugins/wsc/dialogs/wsc.js
+ckeditor/plugins/wsc/dialogs/wsc_ie.js
+ckeditor/plugins/wsc/dialogs/tmpFrameset.html
+ckeditor/plugins/icons_hidpi.png
+ckeditor/plugins/tabletools/dialogs/tableCell.js
+ckeditor/plugins/forms/images/hiddenfield.gif
+ckeditor/plugins/forms/dialogs/button.js
+ckeditor/plugins/forms/dialogs/radio.js
+ckeditor/plugins/forms/dialogs/checkbox.js
+ckeditor/plugins/forms/dialogs/textarea.js
+ckeditor/plugins/forms/dialogs/textfield.js
+ckeditor/plugins/forms/dialogs/select.js
+ckeditor/plugins/forms/dialogs/hiddenfield.js
+ckeditor/plugins/forms/dialogs/form.js
+ckeditor/plugins/magicline/images/icon-rtl.png
+ckeditor/plugins/magicline/images/icon.png
+ckeditor/plugins/magicline/images/hidpi/icon-rtl.png
+ckeditor/plugins/magicline/images/hidpi/icon.png
+ckeditor/plugins/liststyle/dialogs/liststyle.js
+ckeditor/plugins/flash/images/placeholder.png
+ckeditor/plugins/flash/dialogs/flash.js
+ckeditor/plugins/pagebreak/images/pagebreak.gif
+ckeditor/plugins/dialog/dialogDefinition.js
+ckeditor/plugins/iframe/images/placeholder.png
+ckeditor/plugins/iframe/dialogs/iframe.js
+ckeditor/plugins/tableselection/styles/tableselection.css
+ckeditor/plugins/a11yhelp/dialogs/lang/ro.js
+ckeditor/plugins/a11yhelp/dialogs/lang/id.js
+ckeditor/plugins/a11yhelp/dialogs/lang/fi.js
+ckeditor/plugins/a11yhelp/dialogs/lang/mk.js
+ckeditor/plugins/a11yhelp/dialogs/lang/es-mx.js
+ckeditor/plugins/a11yhelp/dialogs/lang/az.js
+ckeditor/plugins/a11yhelp/dialogs/lang/bg.js
+ckeditor/plugins/a11yhelp/dialogs/lang/af.js
+ckeditor/plugins/a11yhelp/dialogs/lang/et.js
+ckeditor/plugins/a11yhelp/dialogs/lang/km.js
+ckeditor/plugins/a11yhelp/dialogs/lang/sr-latn.js
+ckeditor/plugins/a11yhelp/dialogs/lang/da.js
+ckeditor/plugins/a11yhelp/dialogs/lang/eo.js
+ckeditor/plugins/a11yhelp/dialogs/lang/si.js
+ckeditor/plugins/a11yhelp/dialogs/lang/fa.js
+ckeditor/plugins/a11yhelp/dialogs/lang/fo.js
+ckeditor/plugins/a11yhelp/dialogs/lang/uk.js
+ckeditor/plugins/a11yhelp/dialogs/lang/en.js
+ckeditor/plugins/a11yhelp/dialogs/lang/mn.js
+ckeditor/plugins/a11yhelp/dialogs/lang/fr.js
+ckeditor/plugins/a11yhelp/dialogs/lang/pl.js
+ckeditor/plugins/a11yhelp/dialogs/lang/it.js
+ckeditor/plugins/a11yhelp/dialogs/lang/eu.js
+ckeditor/plugins/a11yhelp/dialogs/lang/ug.js
+ckeditor/plugins/a11yhelp/dialogs/lang/sr.js
+ckeditor/plugins/a11yhelp/dialogs/lang/gl.js
+ckeditor/plugins/a11yhelp/dialogs/lang/nl.js
+ckeditor/plugins/a11yhelp/dialogs/lang/vi.js
+ckeditor/plugins/a11yhelp/dialogs/lang/lv.js
+ckeditor/plugins/a11yhelp/dialogs/lang/sk.js
+ckeditor/plugins/a11yhelp/dialogs/lang/ja.js
+ckeditor/plugins/a11yhelp/dialogs/lang/sq.js
+ckeditor/plugins/a11yhelp/dialogs/lang/no.js
+ckeditor/plugins/a11yhelp/dialogs/lang/th.js
+ckeditor/plugins/a11yhelp/dialogs/lang/en-gb.js
+ckeditor/plugins/a11yhelp/dialogs/lang/sl.js
+ckeditor/plugins/a11yhelp/dialogs/lang/el.js
+ckeditor/plugins/a11yhelp/dialogs/lang/hi.js
+ckeditor/plugins/a11yhelp/dialogs/lang/cy.js
+ckeditor/plugins/a11yhelp/dialogs/lang/ar.js
+ckeditor/plugins/a11yhelp/dialogs/lang/nb.js
+ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js
+ckeditor/plugins/a11yhelp/dialogs/lang/es.js
+ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js
+ckeditor/plugins/a11yhelp/dialogs/lang/de-ch.js
+ckeditor/plugins/a11yhelp/dialogs/lang/ko.js
+ckeditor/plugins/a11yhelp/dialogs/lang/ku.js
+ckeditor/plugins/a11yhelp/dialogs/lang/tt.js
+ckeditor/plugins/a11yhelp/dialogs/lang/hu.js
+ckeditor/plugins/a11yhelp/dialogs/lang/ru.js
+ckeditor/plugins/a11yhelp/dialogs/lang/cs.js
+ckeditor/plugins/a11yhelp/dialogs/lang/zh.js
+ckeditor/plugins/a11yhelp/dialogs/lang/sv.js
+ckeditor/plugins/a11yhelp/dialogs/lang/lt.js
+ckeditor/plugins/a11yhelp/dialogs/lang/tr.js
+ckeditor/plugins/a11yhelp/dialogs/lang/hr.js
+ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js
+ckeditor/plugins/a11yhelp/dialogs/lang/pt.js
+ckeditor/plugins/a11yhelp/dialogs/lang/he.js
+ckeditor/plugins/a11yhelp/dialogs/lang/de.js
+ckeditor/plugins/a11yhelp/dialogs/lang/ca.js
+ckeditor/plugins/a11yhelp/dialogs/lang/gu.js
+ckeditor/plugins/a11yhelp/dialogs/lang/oc.js
+ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js
+ckeditor/contents.css
+ckeditor/styles.js
+ckeditor/config.js
+ckeditor/ckeditor.js
+ckeditor/adapters/jquery.js
+NETWORK:
+*
\ No newline at end of file
diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.appcache.xml b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.appcache.xml
new file mode 100644
index 0000000000..c02cdc216d
--- /dev/null
+++ b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.appcache.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_Cacheable__manager_id</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>ckeditor.gadget.appcache</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/cache-manifest</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.html.html b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.html.html
new file mode 100644
index 0000000000..483dc6b331
--- /dev/null
+++ b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.html.html
@@ -0,0 +1,20 @@
+<!DOCTYPE html>
+<html manifest="ckeditor.gadget.appcache">
+  <head>
+    <meta charset="utf-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1">
+    <title>CKEditor Gadget</title>
+
+    <script src="rsvp.js" type="text/javascript"></script>
+    <script src="renderjs.js" type="text/javascript"></script>
+
+    <!-- This gadget provides ckeditor with all Plugins activated by default -->
+    <!-- Make sure to check the timestamp of your CKEditor version in order to update the manifest -->
+    <script src="ckeditor/ckeditor.js"></script>
+    <script src="ckeditor.gadget.js" type="text/javascript"></script>
+
+  </head>
+  <body>
+    <div class="ckeditor_gadget"><textarea></textarea></div>
+  </body>
+</html>
\ No newline at end of file
diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.html.xml b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.html.xml
new file mode 100644
index 0000000000..ade1f20c28
--- /dev/null
+++ b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.html.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_Cacheable__manager_id</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>ckeditor.gadget.html</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>text/html</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.js.js b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.js.js
new file mode 100644
index 0000000000..7644603ad4
--- /dev/null
+++ b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.js.js
@@ -0,0 +1,216 @@
+/*global window, document, rJS, CKEDITOR, RSVP*/
+/*jslint nomen: true, maxlen:80, indent:2*/
+(function (window, document, rJS, CKEDITOR, RSVP) {
+  "use strict";
+
+  // erp5_globals is not in xhtml_style.
+  // Copy/Paste this function for now
+  function loopEventListener(target, type, useCapture, callback,
+                             prevent_default) {
+    //////////////////////////
+    // Infinite event listener (promise is never resolved)
+    // eventListener is removed when promise is cancelled/rejected
+    //////////////////////////
+    var handle_event_callback,
+      callback_promise;
+
+    if (prevent_default === undefined) {
+      prevent_default = true;
+    }
+
+    function cancelResolver() {
+      if ((callback_promise !== undefined) &&
+          (typeof callback_promise.cancel === "function")) {
+        callback_promise.cancel();
+      }
+    }
+
+    function canceller() {
+      if (handle_event_callback !== undefined) {
+        target.removeEventListener(type, handle_event_callback, useCapture);
+      }
+      cancelResolver();
+    }
+    function itsANonResolvableTrap(resolve, reject) {
+      var result;
+      handle_event_callback = function (evt) {
+        if (prevent_default) {
+          evt.stopPropagation();
+          evt.preventDefault();
+        }
+
+        cancelResolver();
+
+        try {
+          result = callback(evt);
+        } catch (e) {
+          result = RSVP.reject(e);
+        }
+
+        callback_promise = result;
+        new RSVP.Queue()
+          .push(function () {
+            return result;
+          })
+          .push(undefined, function (error) {
+            if (!(error instanceof RSVP.CancellationError)) {
+              canceller();
+              reject(error);
+            }
+          });
+      };
+
+      target.addEventListener(type, handle_event_callback, useCapture);
+    }
+    return new RSVP.Promise(itsANonResolvableTrap, canceller);
+  }
+
+  // http://nightly.ckeditor.com/17-10-11-06-04/full/samples/toolbarconfigurator/index.html#advanced
+  var TOOLBAR_MOBILE = [
+    {name: 'basicstyles', items: ['Bold', 'Italic', 'Underline']},
+    {name: 'paragraph', items: ['NumberedList', 'BulletedList']},
+    {name: 'links', items: ['Link']},
+    {name: 'insert', items: ['Image']},
+    {name: 'styles', items: ['Format']}
+  ],
+    TOOLBAR_DESKTOP = [
+    {name: 'document',
+     items: ['Source', '-', 'Save', 'Print', '-', 'Templates']},
+    {name: 'clipboard', items: ['Undo', 'Redo']},
+    {name: 'editing', items: ['Find', 'Replace', '-', 'SelectAll',
+                              '-', 'Scayt']},
+    '/',
+    {name: 'basicstyles',
+     items: ['Bold', 'Italic', 'Underline', 'Strike', 'Subscript',
+             'Superscript', '-', 'RemoveFormat']},
+    {name: 'paragraph',
+     items: ['NumberedList', 'BulletedList', '-', 'Outdent',
+             'Indent', '-', 'Blockquote', 'CreateDiv', '-',
+             'JustifyLeft', 'JustifyCenter', 'JustifyRight',
+             'JustifyBlock', '-', 'BidiLtr', 'BidiRtl', 'Language']},
+    {name: 'links', items: ['Link', 'Unlink', 'Anchor']},
+    {name: 'insert',
+     items: ['Image', 'Table', 'HorizontalRule', 'Smiley',
+             'SpecialChar', 'PageBreak']},
+    '/',
+    {name: 'styles', items: ['Styles', 'Format', 'Font', 'FontSize']},
+    {name: 'colors', items: ['TextColor', 'BGColor']},
+    {name: 'tools', items: ['ShowBlocks']}
+  ],
+    MOBILE_CONFIGURATION = {
+      toolbar: TOOLBAR_MOBILE,
+      disableNativeSpellChecker: false,
+      // Disable ACF to not destroy HTML on mobile
+      allowedContent: true
+    },
+    DESKTOP_CONFIGURATION = {
+      toolbar: TOOLBAR_DESKTOP,
+      disableNativeSpellChecker: false,
+      // Disable ACF to not destroy HTML on mobile
+      allowedContent: true
+    },
+      MATCH_MEDIA = window.matchMedia("not screen and (min-width: 45em)");
+
+  rJS(window)
+    .declareAcquiredMethod("notifySubmit", "notifySubmit")
+    .declareJob("deferNotifySubmit", function () {
+      // Ensure error will be correctly handled
+      return this.notifySubmit();
+    })
+    .declareAcquiredMethod("notifyChange", "notifyChange")
+    .declareJob("deferNotifyChange", function () {
+      // Ensure error will be correctly handled
+      return this.notifyChange();
+    })
+
+    .setState({
+      is_mobile: false
+    })
+
+    .declareMethod('render', function (options) {
+      return this.changeState({
+        key: options.key,
+        value: options.value || "",
+        editable: options.editable === undefined ? true : options.editable,
+        configuration: options.configuration || DESKTOP_CONFIGURATION,
+        configuration_mobile: options.configuration_mobile ||
+                              MOBILE_CONFIGURATION,
+        is_responsive: (options.configuration_mobile !== undefined) ||
+                       (options.configuration === undefined)
+      });
+    })
+
+    .declareMethod('getContent', function () {
+      var result = {};
+      if (this.state.editable) {
+        result[this.state.key] = this.ckeditor.getData();
+      }
+      return result;
+    })
+
+    .onStateChange(function (modification_dict) {
+      var gadget = this,
+        configuration;
+      if (modification_dict.hasOwnProperty('configuration') ||
+          modification_dict.hasOwnProperty('configuration_mobile') ||
+          modification_dict.hasOwnProperty('is_responsive') ||
+          modification_dict.hasOwnProperty('is_mobile')) {
+        // Expected configuration changed.
+        // Recreate ckeditor
+        if (gadget.hasOwnProperty('ckeditor')) {
+          // Destroy previous instance
+          gadget.ckeditor.destroy();
+        }
+        // Create a new editor
+        if (gadget.state.is_responsive && gadget.state.is_mobile) {
+          configuration = gadget.state.configuration_mobile;
+        } else {
+          configuration = gadget.state.configuration;
+        }
+        gadget.ckeditor = CKEDITOR.replace(
+          this.element.querySelector('textarea'),
+          configuration
+        );
+        gadget.ckeditor.addCommand('saveRJS', {
+          readOnly: 1,
+          exec: gadget.deferNotifySubmit.bind(gadget)
+        });
+        gadget.ckeditor.ui.addButton('Save', {
+          label: "Save",
+          command: 'saveRJS',
+          toolbar: 'document,1'
+        });
+        gadget.ckeditor.on('instanceReady', function (event) {
+          event.editor.execCommand('maximize');
+        });
+        gadget.ckeditor.on('change', gadget.deferNotifyChange.bind(gadget));
+      }
+      if (modification_dict.hasOwnProperty('value')) {
+        this.ckeditor.setData(this.state.value);
+      }
+    })
+
+    .declareService(function () {
+      var result,
+        event,
+        context = this;
+      function extractSizeAndDispatch() {
+        if (MATCH_MEDIA.matches) {
+          return context.changeState({
+            is_mobile: true
+          });
+        }
+        return context.changeState({
+          is_mobile: false
+        });
+      }
+      result = loopEventListener(window, 'resize', false,
+                                 extractSizeAndDispatch);
+      event = document.createEvent("Event");
+      event.initEvent('resize', true, true);
+      window.dispatchEvent(event);
+      return result;
+    });
+
+
+}(window, document, rJS, CKEDITOR, RSVP));
\ No newline at end of file
diff --git a/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.js.xml b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.js.xml
new file mode 100644
index 0000000000..7820d39e0e
--- /dev/null
+++ b/product/ERP5/bootstrap/erp5_xhtml_style/SkinTemplateItem/portal_skins/erp5_ckeditor/ckeditor.gadget.js.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <global name="File" module="OFS.Image"/>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>_Cacheable__manager_id</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>__name__</string> </key>
+            <value> <string>ckeditor.gadget.js</string> </value>
+        </item>
+        <item>
+            <key> <string>content_type</string> </key>
+            <value> <string>application/javascript</string> </value>
+        </item>
+        <item>
+            <key> <string>precondition</string> </key>
+            <value> <string></string> </value>
+        </item>
+        <item>
+            <key> <string>title</string> </key>
+            <value> <string></string> </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>
-- 
2.30.9