User Tools

Site Tools


de:getsimplede:editor-update-auf-version-4

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

de:getsimplede:editor-update-auf-version-4 [2014/05/03 22:19] (current)
Lars created
Line 1: Line 1:
 +====== Editor-Update:​ GS 3.2.0 mit CKE 4.1 + Fehlerkorrektur ======
  
 +Ein Gastbeitrag von karamo, danke!
 +
 +----
 +
 +Der aktuelle Stand (10.4.2013) ist: **GetSimple v3.2.0** mit **CKEditor v3.6.2**
 +
 +Die Zeit schreitet aber voran und damit auch die Versionen.
 +
 +**GetSimple v3.2.1 mit CKE v4.1** ist als Testversion hier verfügbar: [[https://​github.com/​GetSimpleCMS/​GetSimpleCMS/​wiki/​testing|Stable patched to ckeditor to 4.1 Download]]
 +
 +Wenn Ihr aber den neueren **CKE 4.1** in Eurem bestehenden **GS 3.2.0** updaten wollt, dann sind ein paar kleine Schritte durchzuführen. Die Änderungen wurden von mir getestet und werden nachfolgend im Detail angegeben. (Siehe auch Thread: [[http://​get-simple.info/​forums/​showthread.php?​tid=4514|http://​get-simple.info/​forums/​showthread.php?​tid=4514]] )
 +
 +Gleichzeitig werden auch folgende Fehler bzw. Einschränkungen von GS 3.2.0 behoben:
 +
 +  * Änderungen im Editor-Fenster,​ die nur durch Betätigung eines Toolbar-Buttons bestehen und keine Eingaben im Text-Eingabefenster erfordern, wurden nicht erkannt und daher auch für's Speichern der Seite nicht vorgemerkt. (Die Schaltfläche rechts: [Änderungen speichern])
 +  * Inkompatibler Skin "​getsimple"​ wurde ersetzt durch vollständige Toolbar von CKE 4.1 mit Skin "​kama"​ (bunt) oder "​moono"​ (unbunt) oder "​moonocolor"​ und damit besser sichtbar und leichter verwendbar.
 +
 +Für diese Änderungen stelle ich auch fertige Dateien zur Verfügung, __wo dies möglich ist__. Dies ist gedacht für diejenigen, die lieber ein Upload einer Datei auf ihren Server machen wollen, als eine bestehende Datei ändern.
 +
 +**__Vorbedingungen (dafür getestet):​__**
 +
 +  * **GetSimple** v3.2.0
 +
 +Der einfache Weg, nur die neueren Dateien des CKEditor 4.1 über die bestehenden zu kopieren (Upload), ist zwar der erste Schritt, reicht aber nicht aus. Der Grund ist unter anderem auch der, dass der Skin "​getsimple"​ mit **CKEditor 4.1** nicht kompatibel ist. Die teilweise doch blassen Buttons waren aber sowieso immer schon recht ärgerlich.
 +
 +Mein Ziel ist es immer, möglichst wenige Eingriffe und Änderungen in bestehende Systeme zu machen. Und auch die Anpassungen dort zu machen, wo sie hingehören. Damit war klar, dass "**CKE 4.1 full**"​ grundsätzlich mal mit seinen Default-Einstellungen verwendet werden soll.
 +
 +Den **CKEditor  4.1** gibt es in 4 verschiedenen "​Versionen"​ als Download: [[http://​ckeditor.com/​download|Basic,​ Standard, Full und Custom]], die sich nur im Umfang der Toolbar und Plugins unterscheiden.
 +
 +Anpassungen und Ergänzungen sind dann natürlich jederzeit nach persönlichem Geschmack und Erfordernissen möglich.
 +
 +Es sind noch nicht alle hier vorgeschlagenen Änderungen in der Stable-Patch-Version **GetSimple 3.2.1** (siehe oben) durchgeführt.
 +
 + 
 +
 +__**Die erforderlichen Schritte:​**__
 +
 +  - Sichern durch Umbenennen des Verzeichnisses ...\getsimple\admin\template\js\ckeditor in zB. ...\ckeditor362
 +  - Download von [[http://​ckeditor.com/​download|CKE 4.1 full]], entpacken und Upload auf den Server.
 +  - Wenn gewünscht, Download von [[http://​ckeditor.com/​addon/​kama|Skin "​kama"​]] und/oder [[http://​ckeditor.com/​addon/​moonocolor|Skin "​moonocolor"​]],​ diese entpacken und Upload auf den Server unter ...\getsimple\admin\template\js\ckeditor\skins\\ Diese Dateien / Skins  können auch von hier geladen werden: [[http://​192.168.1.22/​getsimple.de/​data/​uploads/​karamo/​moono_4.1.zip|moono]] [[http://​192.168.1.22/​getsimple.de/​data/​uploads/​karamo/​moonocolor_1.0.zip|moonocolor]] [[http://​192.168.1.22/​getsimple.de/​data/​uploads/​karamo/​kama_4.1.zip|kama]]
 +  - Die Datei ...\getsimple\admin\edit.php zur Sicherung umbenennen, eine Kopie davon als edit.php händisch nach nachfolgenden Angaben editieren oder die gesamte geänderte Datei [[http://​192.168.1.22/​getsimple.de/​data/​uploads/​karamo/​edit_gs320-cke41.zip|edit.php]][[http://​192.168.1.22/​getsimple.de/​data/​uploads/​karamo/​edit_gs320-cke41.zip| von hier]] verwenden. Entpacken und Upload auf Server.
 +  - Den  Skin "​kama"​ o. a. aktivieren und Toolbar umrangieren für bessere Platzeinteilung.
 +  - Weitere Optionen in der Konfigurationsdatei von CKE eintragen.
 +  - SyntaxHighlighting mittels CodeMirror benötigt noch kleine Anpassungen. (Infos folgen)
 +  - Die deutsche [[http://​192.168.1.22/​getsimple.de/​data/​uploads/​karamo/​de_de.zip|Sprachdatei]] muß erweitert/​ersetzt werden.
 +
 + 
 +
 +__**Die Änderungen im Detail:**__
 +
 +**edit.php ab Zeile 302 -** **Original aus GS 3.2.0**\\ Die php-Sequenz und den folgenden javascript-Abschnitt vollständig ersetzen.
 +
 +<​code>​
 +<?​php ​
 +        if (defined('​GSEDITORHEIGHT'​)) { $EDHEIGHT = GSEDITORHEIGHT .'​px';​ } else {     ​$EDHEIGHT = '​500px';​ }
 +        if (defined('​GSEDITORLANG'​)) { $EDLANG = GSEDITORLANG;​ } else { $EDLANG = i18n_r('​CKEDITOR_LANG'​);​ }
 +        if (defined('​GSEDITORTOOL'​)) { $EDTOOL = GSEDITORTOOL;​ } else { $EDTOOL = '​basic';​ }
 +        if (defined('​GSEDITOROPTIONS'​) && trim(GSEDITOROPTIONS)!=""​) { $EDOPTIONS = ", "​.GSEDITOROPTIONS;​ } else {      $EDOPTIONS = '';​ }
 +                        ​
 +        if ($EDTOOL == '​advanced'​) {
 +                $toolbar = "​['​Bold',​ '​Italic',​ '​Underline',​ '​NumberedList',​ '​BulletedList',​ '​JustifyLeft',​ '​JustifyCenter',​ '​JustifyRight',​ '​JustifyBlock',​ '​Table',​ '​TextColor',​ '​BGColor',​ '​Link',​ '​Unlink',​ '​Image',​ '​RemoveFormat',​ '​Source'​],​
 +                '/',​
 +                ['​Styles','​Format','​Font','​FontSize'​]";​
 +        } elseif ($EDTOOL == '​basic'​) {
 +                $toolbar = "​['​Bold',​ '​Italic',​ '​Underline',​ '​NumberedList',​ '​BulletedList',​ '​JustifyLeft',​ '​JustifyCenter',​ '​JustifyRight',​ '​JustifyBlock',​ '​Link',​ '​Unlink',​ '​Image',​ '​RemoveFormat',​ '​Source'​]";​
 +        } else { $toolbar = GSEDITORTOOL;​ }
 +?>
 +
 +<?php if ($HTMLEDITOR != ''​) { ?>
 +<script type="​text/​javascript"​ src="​template/​js/​ckeditor/​ckeditor.js"></​script><​script type="​text/​javascript">​
 +
 +<script type="​text/​javascript">​
 +
 +var editor = CKEDITOR.replace( '​post-content',​ {
 +                skin : '​getsimple',​
 +                forcePasteAsPlainText : true,
 +                language : '<?​php echo $EDLANG; ?>',​
 +                defaultLanguage : '​en',​
 +                <?php if (file_exists(GSTHEMESPATH .$TEMPLATE."/​editor.css"​)) { 
 +                        $fullpath = suggest_site_path();​
 +                        ?>
 +                        contentsCss:​ '<?​php echo $fullpath; ?>​theme/<?​php echo $TEMPLATE; ?>/​editor.css',​
 +                <?php } ?>
 +                entities : false,
 +                uiColor : '#​FFFFFF',​
 +                height: '<?​php echo $EDHEIGHT; ?>',​
 +                baseHref : '<?​php echo $SITEURL; ?>',​
 +                toolbar : 
 +                [
 +                <?php echo $toolbar; ?>
 +                ]
 +                <?php echo $EDOPTIONS; ?>, ​                                       ​
 +                tabSpaces:​10,​
 +                filebrowserBrowseUrl : '​filebrowser.php?​type=all',​
 +                filebrowserImageBrowseUrl : '​filebrowser.php?​type=images',​
 +                filebrowserWindowWidth : '​730',​
 +                filebrowserWindowHeight : '​500'​
 +});
 +CKEDITOR.instances["​post-content"​].on("​instanceReady",​ InstanceReadyEvent);​
 +        function InstanceReadyEvent() {
 +                this.document.on("​keyup",​ function () {
 +                                $('#​editform #​post-content'​).trigger('​change'​);​
 +          });
 +        }
 +
 +</​script>​
 +</​code>​
 +
 +**ersetzen durch:**
 +
 +<​code>​
 +<?​php ​
 +        if (defined('​GSEDITORHEIGHT'​)) { $EDHEIGHT = GSEDITORHEIGHT .'​px';​ } else {     ​$EDHEIGHT = '​500px';​ }
 +        if (defined('​GSEDITORLANG'​)) { $EDLANG = GSEDITORLANG;​ } else { $EDLANG = i18n_r('​CKEDITOR_LANG'​);​ }
 +        if (defined('​GSEDITORTOOL'​)) { $EDTOOL = GSEDITORTOOL;​ } else { $EDTOOL = '';​ }
 +        if (defined('​GSEDITOROPTIONS'​) && trim(GSEDITOROPTIONS)!=""​) { $EDOPTIONS = GSEDITOROPTIONS.",";​ } else { $EDOPTIONS = '';​ }
 +
 +        if ($EDTOOL == '​advanced'​) {
 +                $toolbar = "​['​Bold',​ '​Italic',​ '​Underline',​ '​NumberedList',​ '​BulletedList',​ '​JustifyLeft',​ '​JustifyCenter',​ '​JustifyRight',​ '​JustifyBlock',​ '​Table',​ '​TextColor',​ '​BGColor',​ '​Link',​ '​Unlink',​ '​Image',​ '​RemoveFormat',​ '​Source'​],​
 +                '/',​
 +                ['​Styles','​Format','​Font','​FontSize'​]";​
 +        } elseif ($EDTOOL == '​basic'​) {
 +                $toolbar = "​['​Bold',​ '​Italic',​ '​Underline',​ '​NumberedList',​ '​BulletedList',​ '​JustifyLeft',​ '​JustifyCenter',​ '​JustifyRight',​ '​JustifyBlock',​ '​Link',​ '​Unlink',​ '​Image',​ '​RemoveFormat',​ '​Source'​]";​
 +        } else { $toolbar = GSEDITORTOOL;​ }
 +
 +        if (defined('​GSEDITORTOOL'​)) { $toolbar = '​toolbar :​['​.$toolbar.'​],';​ }
 +        else { $toolbar = '';​ }
 +                        ​
 +?>
 +
 +<?php if ($HTMLEDITOR != ''​) { ?>
 +        <script type="​text/​javascript"​ src="​template/​js/​ckeditor/​ckeditor.js"></​script>​
 +
 +        <script type="​text/​javascript">​
 +                        ​
 +        var editor = CKEDITOR.replace( '​post-content',​ {
 +                        forcePasteAsPlainText : true,
 +                        language : '<?​php echo $EDLANG; ?>',​
 +                        defaultLanguage : '​en',​
 +                        <?php if (file_exists(GSTHEMESPATH .$TEMPLATE."/​editor.css"​)) { 
 +                                $fullpath = suggest_site_path();​
 +                        ?>
 +                        contentsCss:​ '<?​php echo $fullpath; ?>​theme/<?​php echo $TEMPLATE; ?>/​editor.css',​
 +                        <?php } ?>
 +                        entities : false,
 +                        height: '<?​php echo $EDHEIGHT; ?>',​
 +                        baseHref : '<?​php echo $SITEURL; ?>',​
 +                        <?php echo $toolbar; ?>
 +                        <?php echo $EDOPTIONS; ?>
 +                        tabSpaces:​10,​
 +                        filebrowserBrowseUrl : '​filebrowser.php?​type=all',​
 +                        filebrowserImageBrowseUrl : '​filebrowser.php?​type=images',​
 +                        filebrowserWindowWidth : '​730',​
 +                        filebrowserWindowHeight : '​500',​
 +                        magicline_color : '#​CF3805',​
 +                        allowedContent ​ : true // disable acf                                   
 +        });
 +
 +
 +CKEDITOR.instances["​post-content"​].on("​instanceReady",​ InstanceReadyEvent);​
 +
 +function InstanceReadyEvent(ev) {
 +        _this = this;
 +        this.document.on("​keyup",​ function () {
 +                $('#​editform #​post-content'​).trigger('​change'​);​
 +                _this.resetDirty();​
 +        });
 +
 +        this.timer = setInterval(function(){trackChanges(_this)},​500);​
 +}               
 +
 +/**
 + * keep track of changes for editor
 + * until cke 4.2 is released with onchange event
 + */
 +function trackChanges(editor) {
 +        // console.log('​check changes'​);​
 +        if ( editor.checkDirty() ) {
 +                $('#​editform #​post-content'​).trigger('​change'​);​
 +                editor.resetDirty(); ​                   ​
 +        }
 +};
 +
 +</​script>​
 +</​code>​
 +
 + 
 +
 +__**Konfiguration von CKE 4.1**__
 +
 +Es sind zwar Editor-Optionen in gsconfig.php vorgesehen, aber ich bevorzuge diese Änderungen dort zu machen, wo sie hingehören:​ ...\getsimple\admin\template\js\ckeditor\config.js\\ Diese Datei wird nur in einer sehr rudimentären Form ausgeliefert:​
 +
 +<​code>​
 +/**
 + * @license Copyright (c) 2003-2013, CKSource - Frederico Knabben. All rights reserved.
 + * For licensing, see LICENSE.html or http://​ckeditor.com/​license
 + */
 +
 +CKEDITOR.editorConfig = function( config ) {
 +        // Define changes to default configuration here. For example:
 +        // config.language = '​fr';​
 +        // config.uiColor = '#​AADC6E';​
 +};
 +</​code>​
 +
 +Die Dokumentation der Konfigurationsparameter sind nachzulesen unter: [[http://​docs.ckeditor.com/#​!/​api/​CKEDITOR.config|http://​docs.ckeditor.com/#​!/​api/​CKEDITOR.config]]
 +
 +Die mit **GetSimple 3.2.0** und auch **GetSimple 3.2.1** ausgelieferte Datei schränkt die Funktion bzw. Möglichkeiten der Änderungen von Links und Images unnötig ein. Daher bevorzuge ich die nachfolgenden Einstellungen:​
 +
 +<​code>​
 +CKEDITOR.editorConfig = function( config ) {
 +        // Define changes to default configuration here.
 +        //​config.resize_dir = '​vertical';​ // vertical resize
 +        config.toolbarCanCollapse = true; // hide/show toolbar collapse button
 +        config.skin = '​kama';​
 +        config.uiColor = '#​8080E0';​ // helles blau
 +        config.language = '​de';​
 +        config.emailProtection = '​encode';​
 +
 +        // Default setting. rearranged
 +        config.toolbarGroups = [
 +    { name: '​document', ​   groups: [ '​mode',​ '​document',​ '​doctools'​ ] },
 +    { name: '​clipboard', ​  ​groups:​ [ '​clipboard',​ '​undo'​ ] },
 +    { name: '​editing', ​    ​groups:​ [ '​find',​ '​selection',​ '​spellchecker'​ ] },
 +    { name: '​forms'​ }, { name: '​insert'​ },
 +    '/',​
 +    { name: '​basicstyles',​ groups: [ '​basicstyles',​ '​cleanup'​ ] },
 +    { name: '​paragraph', ​  ​groups:​ [ '​list',​ '​indent',​ '​blocks',​ '​align'​ ] },
 +    { name: '​links'​ },
 +    // '​insert'​ war hier
 +    '/',​
 +    { name: '​styles'​ },
 +    { name: '​colors'​ },
 +    { name: '​tools'​ },
 +    { name: '​others'​ },
 +    { name: '​about'​ }
 +];
 +};
 +
 +CKEDITOR.on( '​dialogDefinition',​ function( ev ) {
 +                var dialogName = ev.data.name;​
 +                var dialogDefinition = ev.data.definition;​
 +                ev.data.definition.resizable = CKEDITOR.DIALOG_RESIZE_NONE;​
 +
 +                if ( dialogName == '​link'​ ) {
 +                        var infoTab = dialogDefinition.getContents( '​info'​ );
 +                        var advTab = dialogDefinition.getContents( '​advanced'​ );
 +                        advTab.remove( '​advLangDir'​ );
 +                        advTab.remove( '​advLangCode'​ );
 +                        advTab.remove( '​advContentType'​ );
 +                        advTab.remove( '​advCharset'​ );
 +                }
 +});
 +</​code>​
 +
 +__**Deutsche Sprachdatei:​**__
 +
 +Folgende Zeilen haben gefehlt:
 +
 +<​code>​
 +  , "​PAGE_UNSAVED" ​     =>  "Seite hat ungesicherte Änderungen"​
 +  , "​PLUGIN_DISABLED" ​  => "​Plugin deaktiviert"​
 +</​code>​
 +
 +[karamo]
de/getsimplede/editor-update-auf-version-4.txt · Last modified: 2014/05/03 22:19 by Lars