diff --git a/Gruntfile.js b/Gruntfile.js
index bb72099a62..85f6bb8c56 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -173,7 +173,6 @@ module.exports = function (grunt) {
"api/js/etemplate/et2_widget_html.js",
"api/js/etemplate/et2_core_editableWidget.js",
"api/js/etemplate/et2_widget_htmlarea.js",
- "api/js/etemplate/et2_widget_ckeditor.js",
"api/js/etemplate/et2_widget_tabs.js",
"api/js/etemplate/et2_widget_timestamper.js",
"api/js/etemplate/et2_widget_toolbar.js",
diff --git a/admin/inc/class.admin_mail.inc.php b/admin/inc/class.admin_mail.inc.php
index 3cd87c00a2..56d6e3c7b0 100644
--- a/admin/inc/class.admin_mail.inc.php
+++ b/admin/inc/class.admin_mail.inc.php
@@ -180,9 +180,6 @@ class admin_mail
*/
public function add(array $content=array(), $msg='', $msg_type='success')
{
- // otherwise we cant switch to ckeditor in edit
- Api\Html\CkEditorConfig::set_csp_script_src_attrs();
-
$tpl = new Etemplate('admin.mailwizard');
if (empty($content['account_id']))
{
diff --git a/api/js/etemplate/et2_widget_ckeditor.js b/api/js/etemplate/et2_widget_ckeditor.js
deleted file mode 100644
index 7ffa4ed799..0000000000
--- a/api/js/etemplate/et2_widget_ckeditor.js
+++ /dev/null
@@ -1,349 +0,0 @@
-/**
- * EGroupware eTemplate2 - JS widget for HTML editing
- *
- * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
- * @package etemplate
- * @subpackage api
- * @link http://www.egroupware.org
- * @author Nathan Gray
- * @copyright Nathan Gray 2012
- * @version $Id$
- */
-
-/*egw:uses
- jsapi.jsapi; // Needed for egw_seperateJavaScript
- /vendor/bower-asset/jquery/dist/jquery.js;
- et2_core_baseWidget;
-*/
-
-/**
- * @augments et2_inputWidget
- */
-var et2_ckeditor = (function(){ "use strict"; return et2_inputWidget.extend([et2_IResizeable],
-{
- modes: ['ascii','simple','extended','advanced'],
-
- attributes: {
- 'mode': {
- 'name': 'Mode',
- 'description': 'One of {ascii|simple|extended|advanced}',
- 'default': 'simple',
- 'type': 'string'
- },
- 'height': {
- 'name': 'Height',
- 'default': et2_no_init,
- 'type': 'string'
- },
- 'width': {
- 'name': 'Width',
- 'default': et2_no_init,
- 'type': 'string'
- },
- 'expand_toolbar': {
- 'name': 'Expand Toolbar',
- 'default': true,
- 'type':'boolean',
- 'description': 'Have the toolbar expanded (visible)'
- },
- 'base_href': { // seems not to be used anymore
- 'name': 'Image base path',
- 'default': et2_no_init,
- 'type': 'string',
- 'description': 'activates the browser for images at the path (relative to the docroot)'
- },
- 'config': {
- // internal default configuration
- 'name': 'Internal configuration',
- 'type':'any',
- 'default': et2_no_init,
- 'description': 'Internal configuration - managed by preferences & framework, passed in here',
- 'translate': 'no_lang'
- },
- value: {
- name: "Value",
- description: "The value of the widget",
- type: "html", // "string" would remove html tags by running html_entity_decode
- default: et2_no_init
- },
- imageUpload: {
- name: "imageUpload",
- description: "Url to upload images dragged in or id of link_to widget to it's vfs upload. Can also be just a name for which content array contains a path to upload the picture.",
- type: "string",
- default: null
- }
- },
-
- legacyOptions: ['mode','height','width','expand_toolbar','base_href'],
-
- /**
- * Constructor
- *
- * @param _parent
- * @param _attrs
- * @memberOf et2_ckeditor
- */
- init: function(_parent, _attrs) {
- // _super.apply is responsible for the actual setting of the params (some magic)
- this._super.apply(this, arguments);
-
- // CK instance
- this.ckeditor = null;
-
- // Allow no child widgets
- this.supportedWidgetClasses = [];
- this.htmlNode = jQuery(document.createElement("textarea"))
- .css('height', this.options.height)
- .addClass('et2_textbox_ro');
- this.setDOMNode(this.htmlNode[0]);
- },
-
- transformAttributes: function(_attrs) {
-
- // Check mode, some apps jammed everything in there
- if(_attrs['mode'] && jQuery.inArray(_attrs['mode'], this.modes) < 0)
- {
- this.egw().debug("warn", "'%s' is an invalid mode for et2_ckeditor '%s'. Valid options:", _attrs['mode'],_attrs['id'], this.modes);
- var list = _attrs['mode'].split(',');
- for(var i = 0; i < list.length && i < this.legacyOptions.length; i++)
- {
- _attrs[this.legacyOptions[i]] = list[i];
- }
- }
- this._super.apply(this, arguments);
- },
-
- doLoadingFinished: function() {
- this._super.apply(this, arguments);
- if(this.mode == 'ascii' || this.ckeditor != null) return;
-
- var self = this;
- if (!this.options.imageUpload)
- {
- delete self.options.config.imageUploadUrl;
- }
- else if (this.options.imageUpload[0] !== '/' && this.options.imageUpload.substr(0, 4) != 'http')
- {
- self.options.config.imageUploadUrl = egw.ajaxUrl("EGroupware\\Api\\Etemplate\\Widget\\Vfs::ajax_htmlarea_upload")+
- '&request_id='+self.getInstanceManager().etemplate_exec_id+'&widget_id='+this.options.imageUpload;
- self.options.config.imageUploadUrl = self.options.config.imageUploadUrl.substr(egw.webserverUrl.length+1);
- }
- else
- {
- self.options.config.imageUploadUrl = this.options.imageUpload.substr(egw.webserverUrl.length+1);
- }
- try
- {
- this.ckeditor = CKEDITOR.replace(this.dom_id,jQuery.extend({},this.options.config,this.options));
- this.ckeditor.setData(self.value);
- delete self.value;
- }
- catch (e)
- {
- if(CKEDITOR.instances[this.dom_id])
- {
- CKEDITOR.instances[this.dom_id].destroy();
- }
- if(this.htmlNode.ckeditor)
- {
- this.ckeditor = CKEDITOR.replace(this.dom_id,this.options.config);
- this.ckeditor.setData(self.value);
- delete self.value;
- }
- }
-
- if(this.ckeditor && this.options.config.preference_style)
- {
- var editor = this.ckeditor;
- this.ckeditor.on('instanceReady', function(e) {
-
- // Add in user font preferences
- if (self.options.config.preference_style && !e.editor.getData())
- {
- e.editor.document.getBody().setHtml(self.options.config.preference_style);
- delete self.options.config.preference_style;
- }
- });
-
- // Drag & drop of images inline won't work, because of database
- // field sizes. For some reason FF ignored just changing the cursor
- // when dragging, so we replace dropped images with error icon.
- var replaceImgText = function(html) {
- var ret = html.replace( /]*src="(data:.*;base64,.*?)"[^>]*>/gi, function( img, src ){
- return '';
- });
- return ret;
- };
-
- var chkImg = function(e) {
- // don't execute code if the editor is readOnly
- if (editor.readOnly)
- return;
-
- // allow data-URL, returning false to stop regular upload
- if (!self.options.imageUpload)
- {
- // Remove the image from the text
- setTimeout( function() {
- editor.document.$.body.innerHTML = replaceImgText(editor.document.$.body.innerHTML);
- },200);
- }
-
- // Supported file types for dropping on CKEditor imageUpload plugin
- var supportedTypesByCKEditor = /image\/(jpeg|png|gif)/;
-
- // Try to pass the image into the first et2_file that will accept it
- if(e.data.$.dataTransfer && !CKEDITOR.fileTools.isTypeSupported(e.data.$.dataTransfer.files[0],supportedTypesByCKEditor))
- {
- self.getRoot().iterateOver(function(widget) {
- if(widget.options.drop_target)
- {
- widget.set_value(e.data.$.dataTransfer.files,e.data.$);
- return;
- }
- },e.data.$,et2_file);
- }
- };
-
- editor.on( 'contentDom', function() {
- editor.document.on('drop', chkImg);
- });
- }
-
- },
-
- destroy: function() {
- try
- {
- //this.htmlNode.ckeditorGet().destroy(true);
- if (this.ckeditor) this.ckeditor.destroy(true);
- this.ckeditor = null;
- }
- catch (e)
- {
- this.egw().debug("warn","Removing CKEDITOR: " + e.message, this,e);
- // Finish it
- delete CKEDITOR.instances[this.dom_id];
- }
- this.htmlNode.remove();
- this.htmlNode = null;
- this._super.apply(this, arguments);
- },
- set_value: function(_value) {
- this._oldValue = _value;
-
- try {
- //this.htmlNode.ckeditorGet().setData(_value);
- var ckeditor = CKEDITOR.instances[this.dom_id];
- if (ckeditor)
- {
- ckeditor.setData(_value);
- }
- else
- {
- this.htmlNode.val(_value);
- this.value = _value;
- }
- } catch (e) {
- // CK editor not ready - callback will do it
- this.value = _value;
- }
- },
-
- getValue: function() {
- try
- {
- //return this.htmlNode.ckeditorGet().getData();
- var ckeditor = CKEDITOR.instances[this.dom_id];
- return ckeditor ? ckeditor.getData() : this.htmlNode.val();
- }
- catch (e)
- {
- // CK Error
- this.egw().debug("error",e);
- return null;
- }
- },
-
- /**
- * Resize htmlNode tag according to window size
- * @param {type} _height excess height which comes from window resize
- */
- resize: function (_height)
- {
- if (_height && this.options.resize_ratio !== '0')
- {
- // apply the ratio
- _height = (this.options.resize_ratio != '')? _height * this.options.resize_ratio: _height;
- if (_height != 0)
- {
- if (this.ckeditor) // CKEDITOR HTML
- {
- var h = 0;
- if (typeof this.ckeditor.container !='undefined' && this.ckeditor.container.$.clientHeight > 0)
- {
- h = (this.ckeditor.container.$.clientHeight + _height) > 0 ?
- this.ckeditor.container.$.clientHeight + _height: this.ckeditor.config.height;
- }
- else if (this.ckeditor.ui.space('contents'))
- {
- h = parseInt(this.ckeditor.ui.space('contents').getStyle('height')) + _height;
- }
- else // fallback height size
- {
- h = this.ckeditor.config.height + _height;
- }
-
- this.ckeditor.resize('',h);
- }
- else // No CKEDITOR
- {
- this.htmlNode.height(this.htmlNode.height() + _height);
- }
- }
- }
- }
-});}).call(this);
-et2_register_widget(et2_ckeditor, ["ckeditor"]);
-
-jQuery.extend(et2_ckeditor,
-{
- /**
- * Build VfsSelect widget for CKEditor Browse Server button
- * @param {array} _data
- */
- buildVfsSelectForCKEditor: function(_data)
- {
- if (!_data) return;
-
- // Don't rely only on app_name to fetch et2 object as app_name may not
- // always represent current app of the window, e.g.: mail admin account.
- // Try to fetch et2 from its template name.
- var etemplate = jQuery('form').data('etemplate');
- var et2 = {};
- if (etemplate && etemplate.name && !app[egw(window).app_name()])
- {
- et2 = etemplate2.getByTemplate(etemplate.name)[0]['widgetContainer'];
- }
- else
- {
- et2 = app[egw(window).app_name()].et2;
- }
-
- var vfsSelect = et2_createWidget('vfs-select', {
- id:'upload',
- mode: 'open',
- name: '',
- button_caption:"Link",
- button_label:"Link",
- dialog_title: "Link file",
- method: "download"
- }, et2);
- jQuery(vfsSelect.getDOMNode()).on('change', function (){
- CKEDITOR.tools.callFunction(_data.funcNum, vfsSelect.get_value());
- });
-
- // start the file selector dialog
- vfsSelect.click();
- }
-});
\ No newline at end of file
diff --git a/api/js/etemplate/et2_widget_timestamper.js b/api/js/etemplate/et2_widget_timestamper.js
index 08f9f09c93..6df7ac79bc 100644
--- a/api/js/etemplate/et2_widget_timestamper.js
+++ b/api/js/etemplate/et2_widget_timestamper.js
@@ -125,7 +125,7 @@ var et2_timestamper = (function(){ "use strict"; return et2_button.extend([],
pos = input.selectionStart;
};
- // If CKEDitor, update it
+ // If tinymce, update it
if(tinymce)
{
tinymce.insertContent(text);
diff --git a/api/js/etemplate/et2_widget_vfs.js b/api/js/etemplate/et2_widget_vfs.js
index 8b5bd8c300..b1ef2c8dc5 100644
--- a/api/js/etemplate/et2_widget_vfs.js
+++ b/api/js/etemplate/et2_widget_vfs.js
@@ -1310,8 +1310,7 @@ var et2_vfsSelect = (function(){ "use strict"; return et2_inputWidget.extend(
this.dialog.template.etemplate_exec_id = et2.etemplate_exec_id;
app.vfsSelectUI.et2 = this.dialog.template.widgetContainer;
- // Keep the dialog always at the top, seems CKEDITOR dialogs have very
- // high z-index set.
+ // Keep the dialog always at the top
this.dialog.div.parent().css({"z-index": 100000});
app.vfsSelectUI.vfsSelectWidget = this;
this.dialog.div.on('load', function(e) {
diff --git a/api/js/etemplate/etemplate2.js b/api/js/etemplate/etemplate2.js
index 101e4b9cfb..77ce6e652f 100644
--- a/api/js/etemplate/etemplate2.js
+++ b/api/js/etemplate/etemplate2.js
@@ -36,7 +36,6 @@
et2_widget_favorites;
et2_widget_html;
et2_widget_htmlarea;
- et2_widget_ckeditor;
et2_widget_tabs;
et2_widget_taglist;
et2_widget_timestamper;
@@ -646,8 +645,6 @@ etemplate2.prototype.autocomplete_fixer = function ()
if (form)
{
// Stop submit propagation in order to not fire other possible submit events
- // for instance, CKEditor has its own submit event handler which we do not want to
- // fire that on submit
form.onsubmit = function(e){e.stopPropagation();};
// Firefox give a security warning when transmitting to "about:blank" from a https site
diff --git a/api/lang/egw_cs.lang b/api/lang/egw_cs.lang
index 5b17eac7b4..7148972e10 100644
--- a/api/lang/egw_cs.lang
+++ b/api/lang/egw_cs.lang
@@ -184,7 +184,6 @@ blue moono theme common cs téma modrý měsíc
blurtext common cs rozmazaný text
bold common cs Tučné
bolivia common cs BOLÍVIE
-bootstrap theme for ckeditor common cs výchozí téma pro fckeditor
border common cs Okraj
border-line-thickness for the table-tag common cs Tloušťka okraje pro tag tabulky
bosnia and herzegovina common cs BOSNA A HERCEGOVINA
@@ -637,7 +636,6 @@ html common cs HTML
html link to the current record common cs HTML odkaz na současný záznam
hungary common cs MAĎARSKO
iceland common cs ISLAND
-icy-orange theme for ckeditor common cs téma ledový pomeranč pro fckeditor
id common cs ID
iespell not detected. click ok to go to download page. common cs ieSpell nebyl nalezen. Klikněte na OK pro přesun na stránku ke stažení.
if field is disabled an empty table-cell is displayed, for (temporal) removement of a field/cell common cs pokud je položka zakázaná, je zobrazena prázdná buňka tabulky pro (dočasné) odstranění položky/buňky
@@ -918,7 +916,6 @@ numbers common cs čísla
october common cs říjen
of common cs z
off common cs vypnout
-office-2013 theme for ckeditor common cs téma Office 2013 pro fckeditor
ok common cs OK
old value common cs Stará hodnota
oman common cs OMÁN
diff --git a/api/lang/egw_de.lang b/api/lang/egw_de.lang
index 8e03235dd9..163dda18c9 100644
--- a/api/lang/egw_de.lang
+++ b/api/lang/egw_de.lang
@@ -187,7 +187,6 @@ blue moono theme common de Bau Mono Theme
blurtext common de blurText
bold common de Fett
bolivia common de BOLIVIEN
-bootstrap theme for ckeditor common de Bootstrap Theme für den Ckeditor
border common de Rand
border-line-thickness for the table-tag common de Randbreite (border) für die Tabelle
bosnia and herzegovina common de BOSNIEN UND HERZEGOVINA
@@ -647,7 +646,6 @@ html common de HTML
html link to the current record common de HTML-Link zum aktuellen Eintrag.
hungary common de UNGARN
iceland common de ISLAND
-icy-orange theme for ckeditor common de icy-orange Theme für den Ckeditor
id common de ID
iespell not detected. click ok to go to download page. common de ieSpell nicht gefunden. OK klicken um zur Download Seite zu gehen.
if field is disabled an empty table-cell is displayed, for (temporal) removement of a field/cell common de wenn das Feld deaktiviert ist, wird eine leere Tabellenzelle angezeigt, zum (zeitweisen) Entfernen eines Feldes
@@ -933,7 +931,6 @@ numbers common de Nummern
october common de Oktober
of common de von
off common de Keine
-office-2013 theme for ckeditor common de Office 2013 Theme für den Ckeditor
ok common de OK
old value common de Alter Wert
oman common de OMAN
diff --git a/api/lang/egw_en.lang b/api/lang/egw_en.lang
index a0810aa47f..d79edd6f6b 100644
--- a/api/lang/egw_en.lang
+++ b/api/lang/egw_en.lang
@@ -192,7 +192,6 @@ blue moono theme common en blue moono theme
blurtext common en blurText
bold common en Bold
bolivia common en BOLIVIA
-bootstrap theme for ckeditor common en bootstrap theme for ckeditor
border common en Border
border-line-thickness for the table-tag common en Border line thickness for the table tag
bosnia and herzegovina common en BOSNIA AND HERZEGOVINA
@@ -657,7 +656,6 @@ html common en HTML
html link to the current record common en HTML link to the current record
hungary common en HUNGARY
iceland common en ICELAND
-icy-orange theme for ckeditor common en icy-orange theme for ckeditor
id common en ID
iespell not detected. click ok to go to download page. common en ieSpell not detected. Click OK to go to download page.
if field is disabled an empty table-cell is displayed, for (temporal) removement of a field/cell common en If field is disabled an empty table cell is displayed
@@ -946,7 +944,6 @@ numlist common en Numlist
october common en October
of common en of
off common en off
-office-2013 theme for ckeditor common en office-2013 theme for ckeditor
ok common en OK
old value common en Old Value
oman common en OMAN
diff --git a/api/lang/egw_es-es.lang b/api/lang/egw_es-es.lang
index ed755745f0..d4a99526a6 100644
--- a/api/lang/egw_es-es.lang
+++ b/api/lang/egw_es-es.lang
@@ -187,7 +187,6 @@ blue moono theme common es-es tema moono azul
blurtext common es-es Texto poco claro
bold common es-es Negrita
bolivia common es-es BOLIVIA
-bootstrap theme for ckeditor common es-es tema bootstrap para ckeditor
border common es-es Borde
border-line-thickness for the table-tag common es-es Grosor de la línea del borde de la etiqueta de la tabla
bosnia and herzegovina common es-es BOSNIA AND HERZEGOVINA
@@ -645,7 +644,6 @@ html common es-es Html
html link to the current record common es-es Enlace HTML al registro actual
hungary common es-es HUNGRÍA
iceland common es-es ISLANDIA
-icy-orange theme for ckeditor common es-es tema icy-orange para ckeditor
id common es-es Id
iespell not detected. click ok to go to download page. common es-es No se detectó ieSpell. Pulse Aceptar para ir a la página de descargas.
if field is disabled an empty table-cell is displayed, for (temporal) removement of a field/cell common es-es Si el campo está desactivado, se muestra la celda de la tabla vacía, para borrar temporalmente un campo o celda.
@@ -929,7 +927,6 @@ numbers common es-es números
october common es-es Octubre
of common es-es de
off common es-es apagado
-office-2013 theme for ckeditor common es-es tema office-2013 para ckeditor
ok common es-es Aceptar
old value common es-es Valor anterior
oman common es-es OMAN
diff --git a/api/lang/egw_fr.lang b/api/lang/egw_fr.lang
index 74898eb9e2..49dd886962 100644
--- a/api/lang/egw_fr.lang
+++ b/api/lang/egw_fr.lang
@@ -183,7 +183,6 @@ blue moono theme common fr thème blue moono
blurtext common fr texteFlou
bold common fr Gras
bolivia common fr BOLIVIE
-bootstrap theme for ckeditor common fr Thème Bootstrap pour le CKEditor
border common fr Bord
border-line-thickness for the table-tag common fr Epaisseur de la ligne de bord pour le tag de la table eTemplate
bosnia and herzegovina common fr BOSNIE HERZEGOVINE
@@ -630,7 +629,6 @@ html common fr Html
html link to the current record common fr Lien HTML vers l'enregistrement courant
hungary common fr HONGRIE
iceland common fr ISLANDE
-icy-orange theme for ckeditor common fr thème icy-orange pour ckeditor
id common fr id
iespell not detected. click ok to go to download page. common fr ieSpell non détecté. Cliquez sur Ok pour aller à la page de téléchargement.
if field is disabled an empty table-cell is displayed, for (temporal) removement of a field/cell common fr Si le champ est désactivé, une cellule de table vide est affiché pour suppression (temporaire) d'un champ/cellule
@@ -906,7 +904,6 @@ numbers common fr nombres
october common fr Octobre
of common fr de
off common fr désactivé
-office-2013 theme for ckeditor common fr thème office-2013 pour ckeditor
ok common fr OK
old value common fr Ancienne valeur
oman common fr OMAN
diff --git a/api/lang/egw_it.lang b/api/lang/egw_it.lang
index 2ba902a0df..5695a5dc73 100644
--- a/api/lang/egw_it.lang
+++ b/api/lang/egw_it.lang
@@ -185,7 +185,6 @@ blue moono theme common it Tema Blue Moono
blurtext common it blurText
bold common it Grassetto
bolivia common it BOLIVIA
-bootstrap theme for ckeditor common it Tema Bootstrap per l'editor ckeditor
border common it Bordo
border-line-thickness for the table-tag common it Spessore linea bordo per table-tag
bosnia and herzegovina common it BOSNIA E HERZEGOVINA
@@ -639,7 +638,6 @@ html common it Html
html link to the current record common it Collegamento HTML al record attuale
hungary common it UNGHERIA
iceland common it ISLANDA
-icy-orange theme for ckeditor common it Tema Icy Orange per l'editor ckeditor
id common it ID
iespell not detected. click ok to go to download page. common it ieSpell non trovato. Clicca OK per andare alla pagina di download.
if field is disabled an empty table-cell is displayed, for (temporal) removement of a field/cell common it if field is disabled an empty table-cell is displayed, for (temporal) removement of a field/cell
@@ -922,7 +920,6 @@ numbers common it numeri
october common it Ottobre
of common it di
off common it Spento
-office-2013 theme for ckeditor common it Tema office 2013 per l'editor ckeditor
ok common it OK
old value common it Vecchio Valore
oman common it OMAN
diff --git a/api/lang/egw_ja.lang b/api/lang/egw_ja.lang
index 643ba969d3..e8718ca52f 100644
--- a/api/lang/egw_ja.lang
+++ b/api/lang/egw_ja.lang
@@ -190,7 +190,6 @@ blurtext common ja blurText
bold common ja 太字
Bolivia, Plurinational State of common ja ボリビア
Bonaire, Sint Eustatius and Saba common ja ボネール、シント・ユースタティウスおよびサバ
-bootstrap theme for ckeditor common ja bootstrap theme for ckeditor
border common ja ボーダー
border-line-thickness for the table-tag common ja テーブル・タグのボーダー線の太さ
bosnia and herzegovina common ja ボスニア・ヘルツェゴビナ
@@ -654,7 +653,6 @@ html common ja HTML
html link to the current record common ja このレコードへのHTMLリンク
hungary common ja ハンガリー
iceland common ja アイスランド
-icy-orange theme for ckeditor common ja icy-orange theme for ckeditor
id common ja ID
iespell not detected. click ok to go to download page. common ja ieSpell not detected. Click OK to go to download page.
if field is disabled an empty table-cell is displayed, for (temporal) removement of a field/cell common ja If field is disabled an empty table cell is displayed
@@ -940,7 +938,6 @@ numbers common ja numbers
october common ja 10月
of common ja of
off common ja オフ
-office-2013 theme for ckeditor common ja office-2013 theme for ckeditor
ok common ja OK
old value common ja 古い値
oman common ja オマーン
diff --git a/api/lang/egw_sk.lang b/api/lang/egw_sk.lang
index 2dd5cf40fb..52d06f56d2 100644
--- a/api/lang/egw_sk.lang
+++ b/api/lang/egw_sk.lang
@@ -182,7 +182,6 @@ blocked, too many attempts common sk Zablokované, príliš veľa pokusov
blue moono theme common sk modrá moono téma
bold common sk Tučné
bolivia common sk BOLÍVIA
-bootstrap theme for ckeditor common sk bootstrap téma pre ckeditor
border common sk Hranica
border-line-thickness for the table-tag common sk Hrúbka okrajovej čiary pre tag tabuľky
bosnia and herzegovina common sk BOSNA A HERCEGOVINA
@@ -628,7 +627,6 @@ html common sk HTML
html link to the current record common sk HTML odkaz na aktuálny záznam
hungary common sk MAĎARSKO
iceland common sk ISLAND
-icy-orange theme for ckeditor common sk icy-orange téma pre ckeditor
id common sk Id
iespell not detected. click ok to go to download page. common sk ieSpell sa nenašiel. Kliknutím na OK sa presuniete na stránku, odkiaľ ho môžete stiahnuť.
if field is disabled an empty table-cell is displayed, for (temporal) removement of a field/cell common sk Ak je položka vypnutá, zobrazuje sa prázdna bunka tabuľky
@@ -901,7 +899,6 @@ numbers common sk čísla
october common sk Október
of common sk z
off common sk Vypnúť
-office-2013 theme for ckeditor common sk office-2013 téma pre ckeditor
ok common sk OK
old value common sk Stará hodnota
oman common sk OMÁN
diff --git a/api/lang/egw_sl.lang b/api/lang/egw_sl.lang
index 5851a06db5..abb2b89571 100644
--- a/api/lang/egw_sl.lang
+++ b/api/lang/egw_sl.lang
@@ -184,7 +184,6 @@ blue moono theme common sl modra mono tema
blurtext common sl Zamaži tekst
bold common sl Krepko
bolivia common sl BOLIVIJA
-bootstrap theme for ckeditor common sl zagonska tema za ckeditor
border common sl Rob
border-line-thickness for the table-tag common sl Debelina robov
bosnia and herzegovina common sl BOSNA IN HERCEGOVINA
@@ -639,7 +638,6 @@ html common sl HTML
html link to the current record common sl Povezava HTML s trenutnim zapisom
hungary common sl MADŽARSKA
iceland common sl ISLANDIJA
-icy-orange theme for ckeditor common sl ledena-oranžna tema za ckeditor
id common sl Šifra
iespell not detected. click ok to go to download page. common sl ieSpell ni bil zaznan. Kliknite V redu za obisk spletne strani za prenos.
if field is disabled an empty table-cell is displayed, for (temporal) removement of a field/cell common sl Če je polje izključeno, je prikazana prazna celica v tabeli, za začasno odstranitev polja/celice
@@ -922,7 +920,6 @@ numbers common sl številke
october common sl Oktober
of common sl od
off common sl off
-office-2013 theme for ckeditor common sl office-2013 tema za ckeditor
ok common sl V redu
old value common sl Stara vrednost
oman common sl OMAN
diff --git a/api/src/Etemplate/Widget/CkEditor.php b/api/src/Etemplate/Widget/CkEditor.php
deleted file mode 100644
index bda77cb0d2..0000000000
--- a/api/src/Etemplate/Widget/CkEditor.php
+++ /dev/null
@@ -1,89 +0,0 @@
-
- * @copyright 2002-16 by RalfBecker@outdoor-training.de
- * @version $Id$
- */
-
-namespace EGroupware\Api\Etemplate\Widget;
-
-use EGroupware\Api\Etemplate;
-use EGroupware\Api;
-
-/**
- * eTemplate ckeditor widget
- */
-class CkEditor extends Etemplate\Widget
-{
-
- protected $legacy_options = 'mode,height,width,expand_toolbar,base_href';
-
- public $attrs = array(
- 'height' => '400px',
- );
-
- /**
- * Fill config options
- *
- * @param string $cname
- */
- public function beforeSendToClient($cname)
- {
- $form_name = self::form_name($cname, $this->id);
-
- Api\Framework::includeJS('/vendor/egroupware/ckeditor/ckeditor.js');
- Api\Framework::includeJS('/vendor/egroupware/ckeditor/ckeditor.config.js');
- Api\Framework::includeJS('/vendor/egroupware/ckeditor/ckeditor.adapters/jquery.js');
-
- $config = Api\Html\CkEditorConfig::get_ckeditor_config_array($this->attrs['mode'], $this->attrs['height'],
- $this->attrs['expand_toolbar'],$this->attrs['base_href']
- );
- // User preferences
- $font = $GLOBALS['egw_info']['user']['preferences']['common']['rte_font'];
- $font_size = Api\Html\CkEditorConfig::font_size_from_prefs();
- $font_span = '';
- if (empty($font) && empty($font_size)) $font_span = '';
- if($font_span)
- {
- $config['preference_style'] = $font_span;
- }
- self::$request->modifications[$form_name]['config'] = $config;
- }
-
- /**
- * Validate input
- *
- * Input is run throught HTMLpurifier, to make sure users can NOT enter javascript or other nasty stuff (XSS!).
- *
- * @param string $cname current namespace
- * @param array $expand values for keys 'c', 'row', 'c_', 'row_', 'cont'
- * @param array $content
- * @param array &$validated=array() validated content
- * @return boolean true if no validation error, false otherwise
- */
- public function validate($cname, array $expand, array $content, &$validated=array())
- {
- $form_name = self::form_name($cname, $this->id, $expand);
-
- if (!$this->is_readonly($cname, $form_name))
- {
- $value = self::get_array($content, $form_name);
- // only purify for html, mode "ascii" is NO html and content get lost!
- if ($this->attrs['mode'] != 'ascii')
- {
- $value = Api\Html\HtmLawed::purify($value, $this->attrs['validation_rules']);
- }
- $valid =& self::get_array($validated, $form_name, true);
- if (true) $valid = $value;
- }
- }
-}
-Etemplate\Widget::registerWidget(__NAMESPACE__.'\\CkEditor', 'ckeditor');
diff --git a/api/src/Etemplate/Widget/HtmlArea.php b/api/src/Etemplate/Widget/HtmlArea.php
index e706d7091c..d73a935aba 100644
--- a/api/src/Etemplate/Widget/HtmlArea.php
+++ b/api/src/Etemplate/Widget/HtmlArea.php
@@ -21,6 +21,54 @@ use EGroupware\Api;
*/
class HtmlArea extends Etemplate\Widget
{
+ /**
+ * font families
+ * @var type array
+ */
+ public static $font_options = array(
+ 'arial, helvetica, sans-serif' => 'Arial',
+ 'Comic Sans MS, cursive' => 'Comic Sans MS',
+ 'Courier New, Courier, monospace' => 'Courier New',
+ 'Georgia, serif' => 'Georgia',
+ 'Lucida Sans Unicode, Lucida Grande, sans-serif' => 'Lucida Sans Unicode',
+ 'Tahoma, Geneva, sans-serif' => 'Tahoma',
+ 'times new roman, times, serif' => 'Times New Roman',
+ 'Trebuchet MS, Helvetica, sans-serif' => 'Trebuchet MS',
+ 'Verdana, Geneva, sans-serif' => 'Verdana'
+ );
+
+ /**
+ * font size options
+ * @var type array
+ */
+ public static $font_size_options = array(
+ 8 => '8',
+ 9 => '9',
+ 10 => '10',
+ 11 => '11',
+ 12 => '12',
+ 14 => '14',
+ 16 => '16',
+ 18 => '18',
+ 20 => '20',
+ 22 => '22',
+ 24 => '24',
+ 26 => '26',
+ 28 => '28',
+ 36 => '36',
+ 48 => '48',
+ 72 => '72',
+ );
+
+ /**
+ * font unit options
+ * @var type array
+ */
+ public static $font_unit_options = array(
+ 'pt' => 'pt: points (1/72 inch)',
+ 'px' => 'px: display pixels',
+ );
+
/**
* Validate input
*
diff --git a/api/src/Etemplate/Widget/Vfs.php b/api/src/Etemplate/Widget/Vfs.php
index 44dacfcb99..593b061217 100644
--- a/api/src/Etemplate/Widget/Vfs.php
+++ b/api/src/Etemplate/Widget/Vfs.php
@@ -140,7 +140,7 @@ class Vfs extends File
}
/**
- * Upload via dragging images into ckeditor/htmlarea(tinymce)
+ * Upload via dragging images into htmlarea(tinymce)
*/
public static function ajax_htmlarea_upload()
{
@@ -485,7 +485,7 @@ class Vfs extends File
++$n;
}
}
-
+
foreach($favorites as $favorite)
{
$path = $favorite['state']['path'];
diff --git a/api/src/Framework/Bundle.php b/api/src/Framework/Bundle.php
index 45e3d2bc5d..f6611ca9f1 100644
--- a/api/src/Framework/Bundle.php
+++ b/api/src/Framework/Bundle.php
@@ -145,9 +145,8 @@ class Bundle
$mod = filemtime(EGW_SERVER_ROOT.$path);
if ($mod > $max_modified) $max_modified = $mod;
- // ckeditor of TinyMCE must be included before bundled files, as they depend on it!
- if (strpos($path,'/ckeditor/ckeditor.js') !== false ||
- strpos($path, '/tinymce/tinymce.min.js') !== false)
+ // TinyMCE must be included before bundled files, as it depends on it!
+ if (strpos($path, '/tinymce/tinymce.min.js') !== false)
{
$to_include_first[] = $path . '?' . $mod;
}
@@ -234,9 +233,6 @@ class Bundle
$inc_mgr->include_js_file('/api/js/egw_action/egw_menu_dhtmlx.js');
// include choosen in api, as old eTemplate uses it and fail if it pulls in half of et2
$inc_mgr->include_js_file('/api/js/jquery/chosen/chosen.jquery.js');
- // include CKEditor in api, as old eTemplate uses it too
- //$inc_mgr->include_js_file('/vendor/egroupware/ckeditor/ckeditor.js');
- //$inc_mgr->include_js_file('/vendor/egroupware/ckeditor/config.js');
$bundles['api'] = $inc_mgr->get_included_files();
self::urls($bundles['api'], $max_mod['api']);
diff --git a/api/src/Header/ContentSecurityPolicy.php b/api/src/Header/ContentSecurityPolicy.php
index f3be50acb1..35e9a4ff13 100644
--- a/api/src/Header/ContentSecurityPolicy.php
+++ b/api/src/Header/ContentSecurityPolicy.php
@@ -22,7 +22,7 @@ class ContentSecurityPolicy
/**
* Additional attributes or urls for CSP beside always added "self"
*
- * - "script-src 'self' 'unsafe-eval'" allows only self and eval (eg. ckeditor), but forbids inline scripts, onchange, etc
+ * - "script-src 'self' 'unsafe-eval'" allows only self and eval, but forbids inline scripts, onchange, etc
* - "connect-src 'self'" allows ajax requests only to self
* - "style-src 'self' 'unsafe-inline'" allows only self and inline style, which we need
* - "frame-src 'self' manual.egroupware.org" allows frame and iframe content only for self or manual.egroupware.org
diff --git a/api/src/Html.php b/api/src/Html.php
index 3ab09c96f2..a1a69a4b21 100644
--- a/api/src/Html.php
+++ b/api/src/Html.php
@@ -404,9 +404,6 @@ class Html
{
// this one is for testing how it will turn out, if you do not have the device or agent ready at your fingertips
// if (stripos($_SERVER[HTTP_USER_AGENT],'mozilla') !== false) return false;
-
- // CKeditor will doublecheck availability for us, but its fallback does not look nice, and you will get
- // no conversion of html content to plain text, so we provide a check for known USER_AGENTS to fail the test
return true;
}
@@ -538,7 +535,7 @@ tinymce.init({
_editor.setContent(value);
},
plugins: [
- "print fullpage searchreplace autolink directionality "+
+ "print searchreplace autolink directionality "+
"visualblocks visualchars image link media template "+
"codesample table charmap hr pagebreak nonbreaking anchor toc "+
"insertdatetime advlist lists textcolor wordcount imagetools "+
diff --git a/api/src/Html/CkEditorConfig.php b/api/src/Html/CkEditorConfig.php
deleted file mode 100644
index bad609570a..0000000000
--- a/api/src/Html/CkEditorConfig.php
+++ /dev/null
@@ -1,537 +0,0 @@
-
- * @package api
- * @subpackage html
- * @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
- * @version $Id$
- */
-
-namespace EGroupware\Api\Html;
-
-use EGroupware\Api\Header\ContentSecurityPolicy;
-
-/**
- * CK-Editor configuration
- */
-class CkEditorConfig
-{
- private static $lang = null;
- private static $country = null;
- private static $enterMode = null;
- private static $skin = null;
-
- // Defaults, defined in /vendor/egroupware/ckeditor/plugins/font/plugin.js
- public static $font_options = array(
- 'arial, helvetica, sans-serif' => 'Arial',
- 'Comic Sans MS, cursive' => 'Comic Sans MS',
- 'Courier New, Courier, monospace' => 'Courier New',
- 'Georgia, serif' => 'Georgia',
- 'Lucida Sans Unicode, Lucida Grande, sans-serif' => 'Lucida Sans Unicode',
- 'Tahoma, Geneva, sans-serif' => 'Tahoma',
- 'times new roman, times, serif' => 'Times New Roman',
- 'Trebuchet MS, Helvetica, sans-serif' => 'Trebuchet MS',
- 'Verdana, Geneva, sans-serif' => 'Verdana'
- );
- public static $font_size_options = array(
- 8 => '8',
- 9 => '9',
- 10 => '10',
- 11 => '11',
- 12 => '12',
- 14 => '14',
- 16 => '16',
- 18 => '18',
- 20 => '20',
- 22 => '22',
- 24 => '24',
- 26 => '26',
- 28 => '28',
- 36 => '36',
- 48 => '48',
- 72 => '72',
- );
- public static $font_unit_options = array(
- 'pt' => 'pt: points (1/72 inch)',
- 'px' => 'px: display pixels',
- );
-
- /**
- * Functions that can be called via menuaction
- *
- * @var array
- */
- var $public_functions = array(
- 'vfsSelectHelper' => true,
- );
-
- /**
- * Get available CKEditor Skins
- *
- * Only return skins existing in filesystem, as we disable / remove them if not compatible with supported browsers.
- *
- * @return array skin => label pairs alphabetical sorted with default moono first
- */
- public static function getAvailableCKEditorSkins()
- {
- $labels = array(
- 'kama' => lang('kama theme'),
- 'moono' => lang('moono theme (default)'),
- );
- $skins = array();
-
- foreach(scandir(EGW_SERVER_ROOT.'/vendor/egroupware/ckeditor/skins') as $skin)
- {
- if ($skin[0] == '.') continue;
-
- if (isset($labels[$skin]))
- {
- $skins[$skin] = $labels[$skin];
- }
- else
- {
- $skins[$skin] = str_replace('_', '-', $skin).' '.lang('Theme');
- }
- }
- uasort($skins, 'strcasecmp');
-
- // flat skin is reserved for mobile template, although we are not
- // supporting it on desktop (becuase FF has problem with action icons)
- if (!\EGroupware\Api\Header\UserAgent::mobile()) unset($skins['flat']);
-
- // return our default "moono" first
- return isset($skins['moono']) ? array('moono' => $skins['moono'])+$skins : $skins;
- }
-
- /**
- * Get font size from preferences
- *
- * @param array $prefs =null default $GLOBALS['egw_info']['user']['preferences']
- * @param string &$size =null on return just size, without unit
- * @param string &$unit =null on return just unit
- * @return string font-size including unit
- */
- public static function font_size_from_prefs(array $prefs=null, &$size=null, &$unit=null)
- {
- if (is_null($prefs)) $prefs = $GLOBALS['egw_info']['user']['preferences'];
-
- $size = $prefs['common']['rte_font_size'];
- $unit = $prefs['common']['rte_font_unit'];
- if (substr($size, -2) == 'px')
- {
- $unit = 'px';
- $size = (string)(int)$size;
- }
- return $size.($size?$unit:'');
- }
-
- /**
- * Read language and country settings for the ckeditor and store them in static
- * variables
- */
- private static function read_lang_country()
- {
- //use the lang and country information to construct a possible lang info for CKEditor UI and scayt_slang
- self::$lang = $GLOBALS['egw_info']['user']['preferences']['common']['lang'];
-
- self::$country = $GLOBALS['egw_info']['user']['preferences']['common']['country'];
-
- if (!(strpos(self::$lang, '-')===false))
- list(self::$lang, self::$country) = explode('-', self::$lang);
- }
-
- /**
- * Returns the current user language
- */
- private static function get_lang()
- {
- if (self::$lang == null || self::$country == null)
- self::read_lang_country();
-
- return self::$lang;
- }
-
- /**
- * Returns the current user country
- */
- private static function get_country()
- {
- if (self::$lang == null || self::$country == null)
- self::read_lang_country();
-
- return strtoupper(self::$country);
- }
-
- /**
- * Returns the ckeditor basepath
- */
- private static function get_base_path()
- {
- //Get the ckeditor base url
- return $GLOBALS['egw_info']['server']['webserver_url'].'/vendor/egroupware/ckeditor/';
- }
-
- /**
- * Returns the ckeditor enter mode which defaults to "BR"
- */
- private static function get_enter_mode()
- {
- if (self::$enterMode == null)
- {
- //Get the input name
- $enterMode = 2;
- if (isset($GLOBALS['egw_info']['user']['preferences']['common']['rte_enter_mode']))
- {
- switch ($GLOBALS['egw_info']['user']['preferences']['common']['rte_enter_mode'])
- {
- case 'p':
- $enterMode = 1;
- break;
- case 'br':
- $enterMode = 2;
- break;
- case 'div':
- $enterMode = 3;
- break;
- }
- }
-
- self::$enterMode = $enterMode;
- }
-
- return self::$enterMode;
- }
-
- /**
- * Returns the skin the ckeditor should use
- */
- private static function get_skin()
- {
- if (self::$skin == null)
- {
- //Get the skin name
- $skin = $GLOBALS['egw_info']['user']['preferences']['common']['rte_skin'];
- //error_log(__METHOD__.__LINE__.' UserAgent:'.EGroupware\Api\Header\UserAgent::type());
- //Convert old fckeditor skin names to new ones
- switch ($skin)
- {
- case 'kama':
- $skin = "kama";
- //if (EGroupware\Api\Header\UserAgent::type()=='firefox' || EGroupware\Api\Header\UserAgent::type()=='msie') $skin='moonocolor';
- break;
- // no longer supported by egw
- case 'flat':
- case 'silver':
- case 'moono-dark':
- case 'icy_orange':
- case 'bootstrapck':
- case 'Moono_blue':
- case 'office2013':
- case 'office2003':
- case 'moonocolor':
- case 'moono':
- case 'default':
- default:
- $skin = "moono";
- }
-
- //Check whether the skin actually exists, if not, switch to a default
- if (!file_exists(EGW_SERVER_ROOT.'/vendor/egroupware/ckeditor/skins/'.$skin))
- {
- $skin = "moono"; //this is the basic skin for ckeditor
- }
- // Skin used for mobile template
- self::$skin = \EGroupware\Api\Header\UserAgent::mobile()?'flat':$skin;
- }
-
- return self::$skin;
- }
-
- /**
- * Returns the URL of the filebrowser
- *
- * @param string $start_path start path for file browser
- */
- private static function get_filebrowserBrowseUrl($start_path = '')
- {
- // Still need to treat old etemplate app to use filemanager_select.
- // *Admin: admin app also still have some old etmplate apps like login_message.
- // @TODO: this should be removed when we don't have any old etemplate app anymore.
- if (in_array($GLOBALS['app'], array('phpbrain', 'sitemgr', 'admin')))
- {
- return $GLOBALS['egw_info']['server']['webserver_url'].'/index.php?menuaction=filemanager.filemanager_select.select&mode=open&method=ckeditor_return'
- .($start_path != '' ? '&path='.$start_path : '');
- }
-
- return \EGroupware\Api\Egw::link('/index.php',array(
- 'menuaction' => 'api.EGroupware\\Api\\Html\\CkEditorConfig.vfsSelectHelper',
- 'path' => $start_path
- ));
- }
-
- /**
- * Adds all "easy to write" options to the configuration
- *
- * @param array& $config array were config get's added to
- * @param int|string $height integer height in pixel or string with css unit
- * @param boolean|string $expanded_toolbar show toolbar expanded, boolean value, string "false", or string casted to boolean
- * @param string $start_path start path for file browser
- */
- private static function add_default_options(&$config, $height, $expanded_toolbar, $start_path)
- {
- //Convert the pixel height to an integer value
- $config['resize_enabled'] = false;
- $config['height'] = is_numeric($height) ? (int)$height : $height;
- //disable encoding as entities needs to set the config value to false, as the default is true with the current ckeditor version
- $config['entities'] = false;
- $config['entities_latin'] = false;
- $config['editingBlock'] = true;
- $config['disableNativeSpellChecker'] = true;
- // we set allowedContent to true as the 4.1 contentFiltering system allows only activated features as content
- $config['allowedContent'] = true;
-
- $config['removePlugins'] = 'elementspath';
-
- $config['toolbarCanCollapse'] = true;
- $config['toolbarStartupExpanded'] = is_bool($expanded_toolbar) ? $expanded_toolbar :
- ($expanded_toolbar === 'false' ? false : (boolean)$expanded_toolbar);
-
- $config['filebrowserBrowseUrl'] = self::get_filebrowserBrowseUrl($start_path);
- $config['filebrowserWindowHeight'] = 640;
- $config['filebrowserWindowWidth'] = 580;
-
- $config['language'] = self::get_lang();
- $config['enterMode'] = self::get_enter_mode();
- $config['skin'] = self::get_skin();
-
- $config['fontSize_sizes'] = '';
- $unit = $GLOBALS['egw_info']['user']['preferences']['common']['rte_font_unit'];
- if (empty($unit)) $unit = 'px';
- foreach(self::$font_size_options as $k => $v)
- {
- $config['fontSize_sizes'] .= $v.$unit.'/'.$k.$unit.';';
- }
- }
-
- /**
- * Adds the spellchecker configuration to the options and writes the name of
- * the spellchecker toolbar button to the "spellchecker_button" parameter
- */
- private static function add_spellchecker_options(&$config, &$spellchecker_button, &$scayt_button)
- {
- //error_log(__METHOD__.__LINE__.' Spellcheck:'.$GLOBALS['egw_info']['server']['enabled_spellcheck']);
-
- // currently we only support browser native spellchecker, and always disable Scayt
- $config['disableNativeSpellChecker'] = false;
- $config['scayt_autoStartup'] = false;
- $spellchecker_button = $scayt_button = null;
-
- /*
- if (isset($GLOBALS['egw_info']['server']['enabled_spellcheck']) && $GLOBALS['egw_info']['server']['enabled_spellcheck'])
- {
- // enable browsers native spellchecker as default, if e.g.: aspell fails
- // to use browsers native spellchecker, you have to hold CMD/CTRL button on rightclick to
- // access the browsers spell correction options
- if ($GLOBALS['egw_info']['server']['enabled_spellcheck']!='YesNoSCAYT') $config['disableNativeSpellChecker'] = false;
-
- if (!empty($GLOBALS['egw_info']['server']['aspell_path']) &&
- is_executable($GLOBALS['egw_info']['server']['aspell_path']) &&
- ($GLOBALS['egw_info']['server']['enabled_spellcheck']!='YesUseWebSpellCheck' &&
- $GLOBALS['egw_info']['server']['enabled_spellcheck']!='YesBrowserBased')
- )
- {
- $spellchecker_button = 'SpellCheck';
- self::append_extraPlugins_config_array($config, array("aspell"));
- }
- if ($GLOBALS['egw_info']['server']['enabled_spellcheck']!='YesNoSCAYT' &&
- $GLOBALS['egw_info']['server']['enabled_spellcheck']!='YesBrowserBased'
- )
- {
- $scayt_button='Scayt';
- $config['scayt_autoStartup'] = true;
- $config['scayt_sLang'] = self::get_lang().'_'.self::get_country();
- $config['disableNativeSpellChecker'] = true; // only one spell as you type
- }
- }
- else
- {
- $config['scayt_autoStartup'] = false;
- }
- */
- }
-
- /**
- * Writes the toolbar configuration to the options which depends on the chosen
- * mode and the spellchecker_button written by the add_spellchecker_options button
- */
- private static function add_toolbar_options(&$config, $mode, $spellchecker_button, $scayt_button=false)
- {
- $config['toolbar'] = array();
- switch ($mode)
- {
- case 'advanced':
- $config['toolbar'][] = array('name' => 'document', 'items' => array('Source','DocProps','-','Preview','-','Templates'));
- $config['toolbar'][] = array('name' => 'clipboard', 'items' => array('Cut','Copy','Paste','PasteText','PasteFromWord','-','Print'));
- if ($spellchecker_button||$scayt_button)
- {
- $configArray = array();
- if ($spellchecker_button) $configArray[] = $spellchecker_button;
- if ($scayt_button) $configArray[] = $scayt_button;
- $config['toolbar'][] = array('name' => 'tools', 'items' => $configArray);
- }
- $config['toolbar'][] = array('name' => 'edit', 'items' => array('Undo','Redo','-','Find','Replace','-','SelectAll','RemoveFormat'));
-
- $config['toolbar'][] = '/';
-
- $config['toolbar'][] = array('name' => 'basicstyles', 'items' => array('Bold','Italic','Underline','Strike','-','Subscript','Superscript'));
- $config['toolbar'][] = array('name' => 'justify', 'items' => array('JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'));
- $config['toolbar'][] = array('name' => 'paragraph', 'items' => array('BulletedList','NumberedList','-','Outdent','Indent'));
- $config['toolbar'][] = array('name' => 'links', 'items' => array('Link','Unlink','Anchor'));
- $config['toolbar'][] = array('name' => 'insert', 'items' => array('Maximize','Image','Table','HorizontalRule','SpecialChar'/*,'Smiley'*/));
-
- $config['toolbar'][] = '/';
-
- $config['toolbar'][] = array('name' => 'styles', 'items' => array('Style','Format','Font','FontSize'));
- $config['toolbar'][] = array('name' => 'colors', 'items' => array('TextColor','BGColor'));
- $config['toolbar'][] = array('name' => 'tools', 'items' => array('ShowBlocks','-','About'));
- break;
-
- case 'extended': default:
- $config['toolbar'][] = array('name' => 'clipboard', 'items' => array('Bold','Italic','Underline'));
- $config['toolbar'][] = array('name' => 'justify', 'items' => array('JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'));
- $config['toolbar'][] = array('name' => 'paragraph', 'items' => array('BulletedList','NumberedList'/*,'Smiley'*/,'Outdent','Indent','Undo','Redo'));
- $config['toolbar'][] = array('name' => 'clipboard', 'items' => array('Cut','Copy','Paste','PasteText','PasteFromWord','-','Print'));
-
- if ($mode == 'extended')
- {
- $config['toolbar'][] = array('name' => 'insert', 'items' => array('Image','Link','Unlink','Anchor'));
- if ($spellchecker_button||$scayt_button)
- {
- $configArray = array('Maximize');
- if ($spellchecker_button) $configArray[] = $spellchecker_button;
- if ($scayt_button) $configArray[] = $scayt_button;
- $config['toolbar'][] = array('name' => 'tools', 'items' => $configArray);
- }
- else
- $config['toolbar'][] = array('name' => 'insert', 'items' => array('Maximize'));//, 'Image', 'Table');
-
- $config['toolbar'][count($config['toolbar']) - 1][] = array('name' => 'insert', 'items' => array('Image', 'Table'));
- }
- else
- {
- if ($spellchecker_button||$scayt_button)
- {
- $configArray = array('Maximize');
- if ($spellchecker_button) $configArray[] = $spellchecker_button;
- if ($scayt_button) $configArray[] = $scayt_button;
- $config['toolbar'][] = array('name' => 'tools', 'items' => $configArray);
- }
- else
- $config['toolbar'][] = array('name' => 'tools', 'items' => array('Maximize'));
- }
-
- $config['toolbar'][] = '/';
- $config['toolbar'][] = array('name' => 'edit', 'items' => array('Find','Replace','-','SelectAll','RemoveFormat'));
- if ($mode == 'simple-withimage') $config['toolbar'][] = array('name' => 'links', 'items' => array('Image','Link','Unlink'));
- $config['toolbar'][] = array('name' => 'styles', 'items' => array('Format','Font','FontSize'));
- $config['toolbar'][] = array('name' => 'colors', 'items' => array('TextColor','BGColor'));
- $config['toolbar'][] = array('name' => 'tools', 'items' => array('ShowBlocks','-','About'));
- }
- }
-
- /**
- * @see get_ckeditor_config
- */
- public static function get_ckeditor_config_array($mode = '', $height = 400, $expanded_toolbar = true, $start_path = '')
- {
- // set for CK-Editor necessary CSP script-src attributes
- self::set_csp_script_src_attrs();
-
- // If not explicitly set, use preference for toolbar mode
- if(!$mode || trim($mode) == '') $mode = $GLOBALS['egw_info']['user']['preferences']['common']['rte_features'];
- $config = array();
- $spellchecker_button = null;
-
- self::add_default_options($config, $height, $expanded_toolbar, $start_path);
- $scayt_button = null;
- self::add_spellchecker_options($config, $spellchecker_button, $scayt_button);
- self::add_toolbar_options($config, $mode, $spellchecker_button, $scayt_button);
- //error_log(__METHOD__."('$mode', $height, ".array2string($expanded_toolbar).") returning ".array2string($config));
- // Add extra plugins
- self::append_extraPlugins_config_array($config, array('uploadimage','uploadwidget','widget','notification','notificationaggregator','lineutils'));
- return $config;
- }
-
- /**
- * Adds extra
- * @param array $config
- * @param array $plugins plugins name which needs to be appended into extraPlugins
- */
- public static function append_extraPlugins_config_array (&$config, $plugins)
- {
- if (is_array($plugins))
- {
- foreach ($plugins as &$plugin)
- {
- if (!empty($config['extraPlugins']) && $config['extraPlugins'] !== '')
- {
- $config['extraPlugins'] .= ',' . $plugin;
- }
- else
- {
- $config['extraPlugins'] = $plugin;
- }
- }
- }
- }
-
- /**
- * Returns a json encoded string containing the configuration for the ckeditor.
- * @param string $mode specifies the count of toolbar buttons available to the user. Possible
- * values are 'simple', 'extended' and 'advanced'. All other values will default to 'simple'
- * @param integer $height contains the height of the ckeditor in pixels
- * @param boolean $expanded_toolbar specifies whether the ckeditor should start with an expanded toolbar or not
- * @param string $start_path specifies
- */
- public static function get_ckeditor_config($mode = '', $height = 400, $expanded_toolbar = true, $start_path = '')
- {
- return json_encode(self::get_ckeditor_config_array($mode, $height, $expanded_toolbar, $start_path));
- }
-
- /**
- * URL webspellchecker uses for scripts and style-sheets
- */
- const WEBSPELLCHECK_HOST = 'svc.webspellchecker.net';
-
- /**
- * Set for CK-Editor necessary CSP script-src attributes
- *
- * Get's called automatic from get_ckeditor_config(_array)
- */
- public static function set_csp_script_src_attrs()
- {
- // tell framework CK Editor needs eval and inline javascript :(
- ContentSecurityPolicy::add('script-src', 'unsafe-inline');
- }
-
- /**
- * It helps to get CKEditor Browse server button to open VfsSelect widget
- * in client side.
- * @todo Once the ckeditor allows to overrride the Browse Server button handler
- * we should remove this function and handle everything in ckeditor widget in
- * client side.
- */
- public function vfsSelectHelper()
- {
- $tmp = new \EGroupware\Api\Etemplate('api.vfsSelectUI');
- $response = \EGroupware\Api\Json\Response::get();
- $response->call('window.opener.et2_ckeditor.buildVfsSelectForCKEditor',
- array('funcNum' => $_GET['CKEditorFuncNum']));
- $response->call('window.close');
- $tmp->exec('',array());
- }
-}
diff --git a/composer.json b/composer.json
index 09ca9ccc53..88fc199b10 100644
--- a/composer.json
+++ b/composer.json
@@ -36,7 +36,6 @@
"npm-asset/as-jqplot" : "1.0.*",
"npm-asset/gridster":"0.5.*",
"adldap2/adldap2": "=4.0.4",
- "egroupware/ckeditor": "^4",
"egroupware/magicsuggest": "^2.1"
},
"require-dev": {
diff --git a/composer.lock b/composer.lock
index 06f115334c..11c1f9d104 100644
--- a/composer.lock
+++ b/composer.lock
@@ -321,40 +321,6 @@
"homepage": "http://jquery.com",
"time": "2018-03-04 13:23:48"
},
- {
- "name": "egroupware/ckeditor",
- "version": "v4.9.2",
- "source": {
- "type": "git",
- "url": "https://github.com/EGroupware/ckeditor.git",
- "reference": "cd542e5b23f750f074a13228e1c8c783021ebd77"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/EGroupware/ckeditor/zipball/cd542e5b23f750f074a13228e1c8c783021ebd77",
- "reference": "cd542e5b23f750f074a13228e1c8c783021ebd77",
- "shasum": ""
- },
- "require": {
- "php": ">=5.4"
- },
- "type": "library",
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "GPL-2.0+",
- "LGPL-2.1+",
- "MPL-1.1+"
- ],
- "authors": [
- {
- "name": "CKSource",
- "homepage": "http://cksource.com"
- }
- ],
- "description": "Compiled version of CKEditor customized for EGroupware project.",
- "homepage": "https://github.com/EGroupware/ckeditor",
- "time": "2018-05-08 13:42:32"
- },
{
"name": "egroupware/magicsuggest",
"version": "2.1.5",
diff --git a/filemanager/inc/class.filemanager_select.inc.php b/filemanager/inc/class.filemanager_select.inc.php
index d875f0cfe1..3f98f70890 100644
--- a/filemanager/inc/class.filemanager_select.inc.php
+++ b/filemanager/inc/class.filemanager_select.inc.php
@@ -77,14 +77,6 @@ class filemanager_select
if (!is_array($content))
{
$content = array();
- // recover from a failed upload in CkEditor, eg. > max_uploadsize
- if ($_GET['failed_upload'] && $_GET['msg'])
- {
- $content['msg'] = $_GET['msg'];
- $_GET['mode'] = 'open';
- $_GET['method'] = 'ckeditor_return';
- $_GET['CKEditorFuncNum'] = Api\Cache::getSession('filemanager','ckeditorfuncnum');
- }
$content['mode'] = $_GET['mode'];
if (!in_array($content['mode'],array('open','open-multiple','saveas','select-dir')))
{
@@ -97,18 +89,6 @@ class filemanager_select
}
$content['name'] = (string)$_GET['name'];
$content['method'] = $_GET['method'];
- if ($content['method'] == 'ckeditor_return')
- {
- if (isset($_GET['CKEditorFuncNum']) && is_numeric($_GET['CKEditorFuncNum']))
- {
- Api\Cache::setSession('filemanager','ckeditorfuncnum',
- $content['ckeditorfuncnum'] = $_GET['CKEditorFuncNum']);
- }
- else
- {
- throw new Api\Exception\WrongParameter("chkeditor_return has been specified as a method but some parameters are missing or invalid.");
- }
- }
$content['id'] = $_GET['id'];
$content['label'] = isset($_GET['label']) ? $_GET['label'] : lang('Open');
if (($content['options-mime'] = isset($_GET['mime'])))
@@ -193,31 +173,16 @@ class filemanager_select
break;
}
- if ($content['method'] && $content['method'] != 'ckeditor_return')
+ if ($content['method'] == 'download_url' && !is_array($files))
{
- if ($content['method'] == 'download_url' && !is_array($files))
- {
$files = Vfs::download_url($files);
if ($files[0] == '/') $files = Egw::link($files);
- }
- else
- {
- $js = ExecMethod2($content['method'],$content['id'],$files);
- }
}
- else if ($content['method'] == 'ckeditor_return')
+ else
{
- $download_url = Vfs::download_url(Vfs::concat($content['path'],$content['name']));
- if ($download_url[0] == '/') $download_url = Egw::link($download_url);
-
- $response = Api\Json\Response::get();
- $response->apply('window.opener.CKEDITOR.tools.callFunction', array(
- $content['ckeditorfuncnum'],
- str_replace("'", "\\'", $download_url)
- ));
- Framework::window_close();
- exit();
+ $js = ExecMethod2($content['method'],$content['id'],$files);
}
+
if(Api\Json\Response::isJSONResponse())
{
$response = Api\Json\Response::get();
@@ -345,18 +310,6 @@ class filemanager_select
'options-mime' => $sel_options['mime'],
'old_path' => $content['path'],
);
-
- if (isset($content['ckeditorfuncnum']))
- {
- $preserve['ckeditorfuncnum'] = $content['ckeditorfuncnum'];
- $preserve['ckeditor'] = $content['ckeditor'];
- }
-
- // tell framework we need inline javascript for ckeditor_return
- if ($content['method'] == 'ckeditor_return')
- {
- Api\Header\ContentSecurityPolicy::add('script-src', 'unsafe-inline');
- }
$tpl->exec('filemanager.filemanager_select.select',$content,$sel_options,$readonlys,$preserve,2);
}
diff --git a/infolog/inc/class.infolog_hooks.inc.php b/infolog/inc/class.infolog_hooks.inc.php
index 54105ace6a..9143766897 100644
--- a/infolog/inc/class.infolog_hooks.inc.php
+++ b/infolog/inc/class.infolog_hooks.inc.php
@@ -111,9 +111,7 @@ class infolog_hooks
$file = Array(
'Site configuration' => Egw::link('/index.php',array(
'menuaction' => 'infolog.infolog_ui.admin',
- // As long as CKEditor needs CSP exceptions, this needs to
- // load in an iframe
- 'ajax' => 'false',
+ 'ajax' => 'true',
)),
'Global Categories' => Egw::link('/index.php',array(
'menuaction' => 'admin.admin_categories.index',
diff --git a/pixelegg/mobile/fw_mobile.css b/pixelegg/mobile/fw_mobile.css
index 07bc1f67e7..747fe23fa6 100644
--- a/pixelegg/mobile/fw_mobile.css
+++ b/pixelegg/mobile/fw_mobile.css
@@ -7590,8 +7590,6 @@ form[id^="wiki-"] .dialogHeadbar {
/**************************************/
/*************** SLIDESWITCH **********/
/***************************************/
- /*************** CKEDITOR **************/
- /***************************************/
}
body .egw_fw_mobile_popup_container {
background: transparent;
@@ -8897,20 +8895,6 @@ form[id^="wiki-"] .dialogHeadbar {
width: 100% !important;
height: 100% !important;
}
- body .cke_inner .cke_toolbox .cke_toolbox_main {
- height: 30px;
- white-space: nowrap;
- display: inline-block;
- overflow-y: hidden;
- width: 100%;
- }
- body .cke_inner .cke_toolbox .cke_toolbox_main .cke_toolbar {
- display: inline-block;
- float: none;
- }
- body .cke_inner .cke_toolbox .cke_toolbox_collapser {
- height: auto;
- }
body .entry_id {
position: absolute;
right: 10px;
diff --git a/pixelegg/mobile/fw_mobile.less b/pixelegg/mobile/fw_mobile.less
index 4b02719449..bec6ccb701 100644
--- a/pixelegg/mobile/fw_mobile.less
+++ b/pixelegg/mobile/fw_mobile.less
@@ -1562,28 +1562,6 @@
}
input {width: 100% !important;height:100% !important;}
}
- /*************** CKEDITOR **************/
- /***************************************/
- .cke_inner {
- .cke_toolbox {
- .cke_toolbox_main {
- height: 30px;
- white-space: nowrap;
- display: inline-block;
- overflow-y: hidden;
- width: 100%;
- .cke_toolbar {
- display: inline-block;
- float: none;
- }
- }
-
- .cke_toolbox_collapser {
- height: auto;
- }
- }
- }
-
.entry_id {
position: absolute;
right: 10px;
diff --git a/preferences/inc/class.preferences_hooks.inc.php b/preferences/inc/class.preferences_hooks.inc.php
index 43eb4a5400..57af0a83f6 100644
--- a/preferences/inc/class.preferences_hooks.inc.php
+++ b/preferences/inc/class.preferences_hooks.inc.php
@@ -108,12 +108,12 @@ class preferences_hooks
{
if (substr($prefs->{$type}['common']['rte_font_size'], -2) == 'px')
{
- Api\Html\CkEditorConfig::font_size_from_prefs($prefs->{$type}, $prefs->{$type}['common']['rte_font_size'],
+ Api\Etemplate\Widget\HtmlArea::font_size_from_prefs($prefs->{$type}, $prefs->{$type}['common']['rte_font_size'],
$prefs->{$type}['common']['rte_font_unit']);
$prefs->save_repository(false, $type);
}
}
- Api\Html\CkEditorConfig::font_size_from_prefs($GLOBALS['egw_info']['user']['preferences'],
+ Api\Etemplate\Widget\HtmlArea::font_size_from_prefs($GLOBALS['egw_info']['user']['preferences'],
$GLOBALS['egw_info']['user']['preferences']['common']['rte_font_size'],
$GLOBALS['egw_info']['user']['preferences']['common']['rte_font_unit']);
}
@@ -376,7 +376,7 @@ class preferences_hooks
'type' => 'select',
'label' => 'Default font',
'name' => 'rte_font',
- 'values' => Api\Html\CkEditorConfig::$font_options,
+ 'values' => Api\Etemplate\Widget\HtmlArea::$font_options,
'help' => 'Automatically start with this font',
'xmlrpc' => True,
'admin' => false,
@@ -386,7 +386,7 @@ class preferences_hooks
'type' => 'select',
'label' => 'Font size unit',
'name' => 'rte_font_unit',
- 'values' => array_map('lang', Api\Html\CkEditorConfig::$font_unit_options),
+ 'values' => array_map('lang', Api\Etemplate\Widget\HtmlArea::$font_unit_options),
'help' => 'Unit of displayed font sizes: either "px" as used eg. for web-pages or "pt" as used in text processing.',
'default'=> 'pt',
'xmlrpc' => True,
@@ -397,7 +397,7 @@ class preferences_hooks
'type' => 'select',
'label' => 'Default font size',
'name' => 'rte_font_size',
- 'values' => Api\Html\CkEditorConfig::$font_size_options,
+ 'values' => Api\Etemplate\Widget\HtmlArea::$font_size_options,
'help' => 'Automatically start with this font size',
'xmlrpc' => True,
'admin' => false,
diff --git a/preferences/lang/egw_cs.lang b/preferences/lang/egw_cs.lang
index 542acbea64..23ad106816 100644
--- a/preferences/lang/egw_cs.lang
+++ b/preferences/lang/egw_cs.lang
@@ -13,7 +13,6 @@ audio effect preferences cs Zvukové efekty
audio effect enables|disables sound effects used in the theme preferences cs Povolí, nebo zakáže použití zvukových efektů použitých v tématu.
automatically start with this font preferences cs Automaticky začínat s tímto typem písma
automatically start with this font size preferences cs Automaticky začínat s touto velikostí písma
-bootstrap theme for ckeditor preferences cs Výchozí téma pro FCK Editor
br preferences cs br
change a user password by passing the old and new passwords. returns true on success, false on failure. preferences cs Mění uživatelské heslo po zadání starého a nového hesla. Vrací TRUE je-li vše v pořádku, FALSE při chybě.
change password preferences cs Změna hesla
diff --git a/preferences/lang/egw_de.lang b/preferences/lang/egw_de.lang
index 5ba8e967c8..2617a3ec9e 100644
--- a/preferences/lang/egw_de.lang
+++ b/preferences/lang/egw_de.lang
@@ -13,7 +13,6 @@ audio effect preferences de Audio Effect
audio effect enables|disables sound effects used in the theme preferences de Audio Effekte (Sound) für das Thema aktivieren|deaktivieren.
automatically start with this font preferences de Startet automatisch mit dieser Schrift
automatically start with this font size preferences de Startet automatisch mit dieser Schriftgröße
-bootstrap theme for ckeditor preferences de Bootstrap Schema für den CKEditor
br preferences de br
change a user password by passing the old and new passwords. returns true on success, false on failure. preferences de Ändern Sie Ihr Passwort, indem Sie Ihr altes und neues Passwort angeben. Es wird TRUE zurückgegeben für eine erfolgreiche Änderung und FALSE wenn es nicht erfolgreich war.
change password preferences de Passwort ändern
diff --git a/preferences/lang/egw_en.lang b/preferences/lang/egw_en.lang
index 20eea61f4d..0d873f79e3 100644
--- a/preferences/lang/egw_en.lang
+++ b/preferences/lang/egw_en.lang
@@ -13,7 +13,6 @@ audio effect preferences en Audio effect
audio effect enables|disables sound effects used in the theme preferences en Audio effect enables|disables sound effects used in the theme
automatically start with this font preferences en Automatically start with this font
automatically start with this font size preferences en Automatically start with this font size
-bootstrap theme for ckeditor preferences en Bootstrap Theme for CKEditor
br preferences en br
change a user password by passing the old and new passwords. returns true on success, false on failure. preferences en Change a user password by passing the old and new passwords. Returns TRUE on success, FALSE on failure.
change password preferences en Change password
diff --git a/preferences/lang/egw_es-es.lang b/preferences/lang/egw_es-es.lang
index d54e7c7a87..1e37c69c11 100644
--- a/preferences/lang/egw_es-es.lang
+++ b/preferences/lang/egw_es-es.lang
@@ -13,7 +13,6 @@ audio effect preferences es-es Efecto de audio
audio effect enables|disables sound effects used in the theme preferences es-es El efecto de audio habilita|deshabilita los efectos de sonido usados en el tema
automatically start with this font preferences es-es Comenzar automáticamente con esta tipografía
automatically start with this font size preferences es-es Comenzar automáticamente con este tamaño de tipografía
-bootstrap theme for ckeditor preferences es-es Tema Bootstrap para CKEditor
br preferences es-es br
change a user password by passing the old and new passwords. returns true on success, false on failure. preferences es-es Cambia la contraseña de un usuario pasando la contraseña anterior y la nueva. Si es correcto, devuelve TRUE, y si no, FALSE.
change password preferences es-es Cambiar contraseña
diff --git a/preferences/lang/egw_fr.lang b/preferences/lang/egw_fr.lang
index 09fc519805..44f08c5215 100644
--- a/preferences/lang/egw_fr.lang
+++ b/preferences/lang/egw_fr.lang
@@ -13,7 +13,6 @@ audio effect preferences fr Effet audio
audio effect enables|disables sound effects used in the theme preferences fr Effets Audio : active|désactive les effets sonores utilisés dans le thème
automatically start with this font preferences fr Démarrer automatiquement avec cette police
automatically start with this font size preferences fr Démarrer automatiquement avec cette taille de police
-bootstrap theme for ckeditor preferences fr Thème Bootstrap pour le CKEditor
br preferences fr br
change a user password by passing the old and new passwords. returns true on success, false on failure. preferences fr Change un mot de passe en fournissant l'ancien et le nouveau mot de passe. Retourne TRUE en cas de réussite, FALSE en cas d'échec.
change password preferences fr Changer votre mot de passe
diff --git a/preferences/lang/egw_it.lang b/preferences/lang/egw_it.lang
index 3b9dbf2ccb..e4cf323302 100644
--- a/preferences/lang/egw_it.lang
+++ b/preferences/lang/egw_it.lang
@@ -13,7 +13,6 @@ audio effect preferences it Avviso sonoro
audio effect enables|disables sound effects used in the theme preferences it L'impostazione dell'effetto sonoro abilita/disabilita i suoni usati nel tema
automatically start with this font preferences it Comincia automaticamente con questo font
automatically start with this font size preferences it Comincia automaticamente con questa dimensione font
-bootstrap theme for ckeditor preferences it Tema Bootstrap per l'editor ckeditor
br preferences it br
change a user password by passing the old and new passwords. returns true on success, false on failure. preferences it Modifica la password di un utente passando la vecchia e nuova password. Restituisce TRUE se ha successo, FALSE se fallisce.
change password preferences it Cambia password
diff --git a/preferences/lang/egw_ja.lang b/preferences/lang/egw_ja.lang
index 88873a4aa4..28c472a5ab 100644
--- a/preferences/lang/egw_ja.lang
+++ b/preferences/lang/egw_ja.lang
@@ -13,7 +13,6 @@ audio effect preferences ja オーディオ効果
audio effect enables|disables sound effects used in the theme preferences ja テーマで使うオーディオ効果を有効化/無効化します。
automatically start with this font preferences ja このフォントで開始
automatically start with this font size preferences ja このフォント・サイズで開始
-bootstrap theme for ckeditor preferences ja Bootstrap Theme for CKEditor
br preferences ja br
change a user password by passing the old and new passwords. returns true on success, false on failure. preferences ja 新旧パスワードを設定してパスワードを変更します(TRUE=成功, FALSE=失敗)。
change password preferences ja パスワード変更
diff --git a/preferences/lang/egw_sl.lang b/preferences/lang/egw_sl.lang
index ea954dc686..ab5853687f 100644
--- a/preferences/lang/egw_sl.lang
+++ b/preferences/lang/egw_sl.lang
@@ -13,7 +13,6 @@ audio effect preferences sl Zvočni učinek
audio effect enables|disables sound effects used in the theme preferences sl Zvočni učinek omogoča | onemogoči zvočne učinke, ki se uporabljajo v predlogi
automatically start with this font preferences sl Samodejno zaženite s to pisavo
automatically start with this font size preferences sl Samodejno začnite s to velikostjo pisave
-bootstrap theme for ckeditor preferences sl Predloga Bootstrap za CKEditor
br preferences sl br
change a user password by passing the old and new passwords. returns true on success, false on failure. preferences sl Spremeni geslo uporabniku tako, da podate staro in novo geslo. Če se operacija uspešno izvede, vrne TRUE, drugače pa FALSE.
change password preferences sl Spremeni geslo
diff --git a/updateGruntfile.php b/updateGruntfile.php
index 4670721f95..83979645ae 100755
--- a/updateGruntfile.php
+++ b/updateGruntfile.php
@@ -45,10 +45,6 @@ $exclude = array(
'api/js/jsapi/egw.js',
// TinyMCE is loaded separate before the bundle
'api/js/tinymce/tinymce.min.js',
- // ckeditor is loaded on demand only
- 'vendor/egroupware/ckeditor/ckeditor.js',
- 'vendor/egroupware/ckeditor/ckeditor.config.js',
- 'vendor/egroupware/ckeditor/ckeditor.adapters/jquery.js',
);
foreach(Bundle::all() as $name => $files)