update to v1.3 and new folder

This commit is contained in:
Marat 2014-08-20 04:09:21 +02:00
parent 8fc7f06162
commit 74fa09ab1f
117 changed files with 481 additions and 756 deletions

10
README.md Normal file → Executable file
View File

@ -1,14 +1,14 @@
## TinyMCE 4.1.2 for OXID eShop CE 4.7+
### hdi-tinymce module version 1.2.1 from 2014-07-28
## TinyMCE 4.1.3 for OXID eShop
### hdi-tinymce module version 1.3 from 2014-08-20
TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under LGPL.
More information here: http://www.tinymce.com/
and here: https://github.com/tinymce
## more info here: http://bit.ly/hdi-TinyMCE
## more info here: http://bit.ly/bla-TinyMCE
### LICENSE AGREEMENT
HDI TinyMCE
Copyright (C) 2012-2014 bestlife AG
bestlife AG - TinyMCE for OXID eShop
Copyright (C) 2014 bestlife AG
info: oxid@bestlife.ag
This program is free software;

View File

@ -0,0 +1,15 @@
## [bla] TinyMCE for OXID eShop 4.7 & 4.8
#### raw module branch, also contains development files
### installation
* navigate into modules/ directory of your shop
* $ git clone https://github.com/vanilla-thunder/bla.git
* $ cd bla
* $ git clone -b module https://github.com/vanilla-thunder/bla-tinymce.git
### development / updating (node.js required)
* nagivate into bla-tinymce/ directory
* $ npm install
* $ node update.js- will update tinymce and language files
* $ node update.js version 1.5 - will get new update.jpg for version 1.5

View File

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

@ -0,0 +1,243 @@
<?php
/*
* bestlife AG - TinyMCE for OXID eShop
* Copyright (C) 2014 bestlife AG
* info: oxid@bestlife.ag
*
* This program is free software;
* you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation;
* either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
* You should have received a copy of the GNU General Public License along with this program; if not, see <http://www.gnu.org/licenses/>
*/
class blaTinyMceOxViewConfig extends blaTinyMceOxViewConfig_parent
{
public function loadTinyMce()
{
$cfg = oxRegistry::getConfig();
$blEnabled = in_array( $this->getActiveClassName(), $cfg->getConfigParam( "aTinyMCE_classes" ) );
$blPlainCms = in_array( $cfg->getActiveView()->getViewDataElement( "edit" )->oxcontents__oxloadid->value, $cfg->getConfigParam( "aTinyMCE_plaincms" ) );
if (!$blEnabled) return;
if ($blPlainCms) return oxRegistry::getLang()->translateString( "hdi_tinymce_plaincms" );
// processind editor config & other stuff
$sLang = oxRegistry::getLang()->getLanguageAbbr( oxRegistry::getLang()->getTplLanguage() );
// array to assign shops lang abbreviations to lang file names of tinymce: shopLangAbbreviation => fileName (without .js )
$aLang = array(
"cs" => "cs",
"da" => "da",
"de" => "de",
"fr" => "fr_FR",
"it" => "it",
"nl" => "nl",
"ru" => "ru"
);
$aConfig = array(
'browser_spellcheck' => ( $cfg->getConfigParam( "bTinyMCE_browser_spellcheck" ) ? 'true' : 'false' ),
'language' => '"'.( in_array( $sLang, $aLang ) ? $aLang[$sLang] : 'en' ).'"',
'height' => $cfg->getConfigParam( "sTinyMCE_height" ),
'nowrap' => 'true',
'selector' => '"textarea"',
'relative_urls' => 'false',
'document_base_url' => '"'.$this->getBaseDir().'"',
'menubar' => 'false',
'plugin_preview_width' => 'window.innerWidth',
'plugin_preview_height' => 'window.innerHeight-90',
'code_dialog_width' => 'window.innerWidth-50',
'code_dialog_height' => 'window.innerHeight-130',
'image_advtab' => 'true',
'moxiemanager_fullscreen' => 'true',
'insertdatetime_formats' => '[ "%d.%m.%Y", "%H:%M" ]',
'nonbreaking_force_tab' => 'true', // http://www.tinymce.com/wiki.php/Plugin:nonbreaking
'autoresize_max_height' => '400'
);
//merging with custom config
$aConfig = ( $aCustCfg = $this->_getTinyCustConfig() ) ? array_merge( $aConfig, $aCustCfg ) : $aConfig;
// plugins and their buttons
$aPlugins = array(
"textcolor" => "forecolor backcolor",
"advlist" => false,
"anchor" => "anchor",
"autolink" => false,
"autoresize" => false,
"autosave" => false , // http://www.tinymce.com/wiki.php/Plugin:autosave
//"bbcode" => ,
"charmap" => "charmap",
"colorpicker" => false,
//"compat3x" => ,
//"contextmenu" => , // http://www.tinymce.com/wiki.php/Plugin:contextmenu
//"directionality" => "ltr rtl",
"emoticons" => "emoticons",
//"example" => ,
//"example_dependency" => ,
//"fullpage" => , // nein! http://www.tinymce.com/wiki.php/Plugin:fullpage
"hr" => "hr",
"image" => "image", // http://www.tinymce.com/wiki.php/Plugin:image
"insertdatetime" => "insertdatetime",
//"layer" => , // This plugin adds some layer controls. Only works on some browsers. Will probably be removed in the future. http://www.tinymce.com/wiki.php/Plugin:layer
"legacyoutput" => false,
"link" => "link unlink",
"lists" => false,
//"importcss" => false, // http://www.tinymce.com/wiki.php/Plugin:importcss
"media" => "media",
"nonbreaking" => "nonbreaking",
//"noneditable" => false, // http://www.tinymce.com/wiki.php/Plugin:noneditable
"pagebreak" => "pagebreak",
"paste" => "pastetext",
//"print" => "print",
//"save" => "save cancel",
"searchreplace" => "searchreplace",
//"spellchecker" => "spellchecker", // http://www.tinymce.com/wiki.php/Plugin:spellchecker
// "tabfocus" => false, // http://www.tinymce.com/wiki.php/Plugin:tabfocus
"table" => "table",
//"template" => "template",
// "textpattern" => false, // sowas wie markdown http://www.tinymce.com/wiki.php/Plugin:textpattern
"visualblocks" => "visualblocks",
"visualchars" => "visualchars",
"wordcount" => false,
"code" => "code",
"fullscreen" => "fullscreen",
"preview" => "preview"
);
if ($this->getActiveClassName()=="newsletter_main") $aPlugins[] = "legacyoutput";
// plugin override
if($aOverride = $cfg->getConfigParam("aTinyMCE_plugins_override"))
{
foreach( $aOverride AS $key => $value)
{
unset($aPlugins[$value]);
}
}
$aConfig['plugins'] = '"'.implode( ' ', array_keys($aPlugins)).'"';
// external plugins
if ($aExtPlugins = $this->_getTinyExtPlugins())
{
$aConfig['external_plugins'] = '{ ';
foreach ($aExtPlugins AS $plugin => $file)
{
$aConfig['external_plugins'] .= '"'.$plugin.'": "'.$file.'", ';
}
$aConfig['external_plugins'] .= ' }';
}
// default tollbar buttons
$aButtons = array(
//"newdocument",
"undo redo",
"bold italic underline strikethrough",
"alignleft aligncenter alignright alignjustify",
//"styleselect",
//"cut copy paste",
"bullist numlist",
"outdent indent",
"blockquote",
"removeformat",
"subscript",
"superscript",
"formatselect",
"fontselect",
"fontsizeselect"
);
// buttons for plugins, enable only if plugin is active
$aButtons = array_merge($aButtons, array_filter(array_values($aPlugins)));
// custom buttons
$aButtons[] = $this->_getTinyCustControls();
$aConfig['toolbar'] = '"'.implode( " | ", $aButtons ).'"';
/*
$aConfig['toolbar1'] = '"undo redo searchreplace preview print fullscreen code paste | image media emoticons table inserttable bullist numlist outdent indent | ';
$aConfig['toolbar1'] .= 'ltr rtl | blockquote subscript superscript '.( $cfg->getConfigParam( "bTinyMCE_charmap" ) ? 'charmap' : '' ).' hr nonbreaking anchor link unlink ';
$aConfig['toolbar1'] .= $this->_getTinyCustControls().'"';
$aConfig['toolbar2'] = '"bold italic underline strikethrough | forecolor backcolor | alignleft aligncenter alignright alignjustify | fontselect fontsizeselect formatselect | removeformat | spellchecker visualchars | insertdatetime"';
*/
// compile the whole config stuff
$sConfig = '';
foreach ($aConfig AS $param => $value)
{
$sConfig .= "$param: $value, ";
}
// add init script
$sInit = 'tinymce.init({ '.$sConfig.' });';
$sCopyLongDescFromTinyMCE = 'function copyLongDescFromTinyMCE(sIdent)
{
var editor = tinymce.get("editor_"+sIdent);
if (editor && editor.isHidden() !== true)
{
console.log("copy content from tinymce");
var content = editor.getContent({format: "raw"}).replace(/\[{([^\]]*?)}\]/g, function(m) { return m.replace(/&gt;/g, ">").replace(/&lt;/g, "<").replace(/&amp;/g, "&") });
document.getElementsByName("editval[" + sIdent + "]").item(0).value = content;
return true;
}
return false;
}
var origCopyLongDesc = copyLongDesc;
copyLongDesc = function(sIdent)
{
if ( copyLongDescFromTinyMCE( sIdent ) ) return;
console.log("tinymce disabled, copy content from regular textarea");
origCopyLongDesc( sIdent );
}';
// adding scripts to template
$smarty = oxRegistry::get( "oxUtilsView" )->getSmarty();
$sSufix = ( $smarty->_tpl_vars["__oxid_include_dynamic"] ) ? '_dynamic' : '';
$aScript = (array) $cfg->getGlobalParameter( 'scripts'.$sSufix );
$aScript[] = $sCopyLongDescFromTinyMCE;
$aScript[] = $sInit;
$cfg->setGlobalParameter( 'scripts'.$sSufix, $aScript );
$aInclude = (array) $cfg->getGlobalParameter( 'includes'.$sSufix );
$aInclude[3][] = $this->getModuleUrl( 'bla-tinymce', 'tinymce/tinymce.min.js' );
$cfg->setGlobalParameter( 'includes'.$sSufix, $aInclude );
return '<li style="margin-left: 50px;">
<button style="border: 1px solid #0089EE; color: #0089EE;padding: 3px 10px; margin-top: -10px; background: white;" onclick="tinymce.each(tinymce.editors, function(editor) { if(editor.isHidden()) { editor.show(); } else { editor.hide(); } });">
<span>TinyMCE zeigen/verstecken</span>
</button>
</li>';
// javascript:tinymce.execCommand(\'mceToggleEditor\',false,\'editor1\');
}
protected function _getTinyCustControls()
{
$sControls = oxRegistry::getConfig()->getConfigParam( "sTinyMCE_custom_controls" );
if (method_exists( get_parent_class( __CLASS__ ), __FUNCTION__ )) $sControls = parent::_getTinyCustControls()." ".$sControls;
return $sControls;
}
protected function _getTinyExtPlugins()
{
$aPlugins = oxRegistry::getConfig()->getConfigParam( "aTinyMCE_external_plugins" );
if (method_exists( get_parent_class( __CLASS__ ), __FUNCTION__ )) $aPlugins = array_merge( parent::_getTinyExtPlugins(), $aPlugins );
return $aPlugins;
}
protected function _getTinyCustConfig()
{
$aConfig = oxRegistry::getConfig()->getConfigParam( "aTinyMCE_custom_config" );
if (method_exists( get_parent_class( __CLASS__ ), __FUNCTION__ )) $aConfig = array_merge( parent::_getTinyCustConfig(), $aConfig );
return $aConfig;
}
}

View File

@ -0,0 +1,116 @@
<?php
/**
* bestlife AG - TinyMCE for OXID eShop
* Copyright (C) 2014 bestlife AG
* info: oxid@bestlife.ag
*
* This program is free software;
* you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation;
* either version 3 of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
* You should have received a copy of the GNU General Public License along with this program; if not, see <http://www.gnu.org/licenses/>
*/
$v = "https://raw.githubusercontent.com/vanilla-thunder/bla-tinymce/master/copy_this/modules/bla/bla-tinymce/version.jpg";
$sMetadataVersion = '1.1';
$aModule = array(
'id' => 'bla-tinymce',
'title' => '<strong style="color:#95b900;font-size:125%;">best</strong><strong style="color:#c4ca77;font-size:125%;">life</strong> <strong>TinyMCE</strong>',
'description' => 'TinyMCE 4.1.3 WYSIWYG Editor for OXID eShop 4.7 & 4.8<br/>visit <a href="http://www.tinymce.com/" target="_blank">http://www.tinymce.com/</a> for demo and more details<hr/><b style="display: inline-block; float:left;">newest version:</b><img src="' . $v . '" style=" float:left;"/><a style="display: inline-block; padding: 1px 25px; background: dodgerblue; border: 1px solid #585858; color: white;" href="http://bit.ly/bla-TinyMCE" target="_blank">info</a>&nbsp;<a style="display: inline-block; padding: 1px 25px; background: forestgreen; border: 1px solid #585858; color: white;" href="https://github.com/vanilla-thunder/bla-tinymce/archive/master.zip">download</a>',
'thumbnail' => 'tinymce.png',
'version' => '1.3.0 (2014-08-20)',
'author' => 'Marat Bedoev, bestlife AG',
'email' => 'oxid@bestlife.ag',
'url' => 'http://www.bestlife.ag',
'extend' => array(
'oxviewconfig' => 'bla/bla-tinymce/core/blatinymceoxviewconfig'
),
'templates' => array(
'tinymce.tpl' => 'bla/bla-tinymce/views/tinymce.tpl',
),
'blocks' => array(
array(
'template' => 'bottomnaviitem.tpl',
'block' => 'admin_bottomnaviitem',
'file' => '/views/blocks/admin/bottomnaviitem_admin_bottomnaviitem.tpl'
)
),
'settings' => array(
/* enabling tinyMCE for this classes */
array(
'group' => 'tinyMceMain',
'name' => 'aTinyMCE_classes',
'type' => 'arr',
'value' => array(
"article_main",
"category_text",
"content_main",
"newsletter_main",
"news_text"
),
'position' => 0
),
array(
'group' => 'tinyMceMain',
'name' => 'aTinyMCE_plaincms',
'type' => 'arr',
'value' => array(
"oxadminorderplainemail",
"oxadminordernpplainemail", // bestellbenachrichtigung admin + fremdländer
"oxuserorderplainemail",
"oxuserordernpplainemail",
"oxuserorderemailendplain", // bestellbenachrichtigung user + fremdländer + abschluss
"oxordersendplainemail", // versandbestätigung
"oxregisterplainemail",
"oxregisterplainaltemail", // registrierung
"oxupdatepassinfoplainemail", // passwort update
"oxnewsletterplainemail", // newsletter
"oxemailfooterplain", // email fußtext
"oxrighttocancellegend",
"oxrighttocancellegend2", // widerrufsrecht
"oxstartmetadescription",
"oxstartmetakeywords" // META Tags
),
'position' => 1
),
array(
'group' => 'tinyMceSettings',
'name' => 'sTinyMCE_height',
'type' => 'str',
'value' => '300',
'position' => 0
),
array(
'group' => 'tinyMceSettings',
'name' => 'aTinyMCE_plugins_override',
'type' => 'arr',
'value' => null,
'position' => 1
),
array(
'group' => 'tinyMceSettings',
'name' => 'aTinyMCE_external_plugins',
'type' => 'arr',
'value' => null,
'position' => 2
),
array(
'group' => 'tinyMceSettings',
'name' => 'sTinyMCE_custom_controls',
'type' => 'str',
'value' => '',
'position' => 3
),
array(
'group' => 'tinyMceSettings',
'name' => 'aTinyMCE_custom_config',
'type' => 'aarr',
'value' => null,
'position' => 4
),
)
);

View File

@ -1,15 +1,15 @@
{
"name": "hdi-tinymce",
"version": "1.2.1",
"name": "bla-tinymce",
"version": "1.2.2",
"description": "TinyMCE integration for OXID eShop CE",
"author": "Marat Bedoev, bestlife AG <oxid@bestlife.ag>",
"license": "GPLv3",
"repository": {
"type": "git",
"url": "git://github.com/vanilla-thunder/hdi-tinymce.git"
"url": "git://github.com/vanilla-thunder/bla-tinymce.git"
},
"bugs": {
"url": "https://github.com/vanilla-thunder/hdi-tinymce/issues"
"url": "https://github.com/vanilla-thunder/bla-tinymce/issues"
},
"keywords": [
"tinymce",

View File

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@ -1,8 +1,11 @@
tinymce.addI18n('it',{
"Cut": "Taglia",
"Heading 5": "Intestazione 5",
"Header 2": "Header 2",
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Il tuo browser non supporta l'accesso diretto negli Appunti. Per favore usa i tasti di scelta rapida Ctrl+X\/C\/V.",
"Heading 4": "Intestazione 4",
"Div": "Div",
"Heading 2": "Intestazione 2",
"Paste": "Incolla",
"Close": "Chiudi",
"Font Family": "Famiglia font",
@ -11,6 +14,8 @@ tinymce.addI18n('it',{
"New document": "Nuovo Documento",
"Blockquote": "Blockquote",
"Numbered list": "Elenchi Numerati",
"Heading 1": "Intestazione 1",
"Headings": "Intestazioni",
"Increase indent": "Aumenta Rientro",
"Formats": "Formattazioni",
"Headers": "Intestazioni",
@ -34,6 +39,8 @@ tinymce.addI18n('it',{
"Italic": "Corsivo",
"Align center": "Allinea al Cento",
"Header 5": "Intestazione 5",
"Heading 6": "Intestazione 6",
"Heading 3": "Intestazione 3",
"Decrease indent": "Riduci Rientro",
"Header 4": "Intestazione 4",
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Incolla \u00e8 in modalit\u00e0 testo normale. I contenuti sono incollati come testo normale se non disattivi l'opzione.",
@ -59,6 +66,7 @@ tinymce.addI18n('it',{
"Restore last draft": "Ripristina l'ultima bozza.",
"Special character": "Carattere Speciale",
"Source code": "Codice Sorgente",
"Color": "Colore",
"Right to left": "Da Destra a Sinistra",
"Left to right": "Da Sinistra a Destra",
"Emoticons": "Emoction",
@ -121,11 +129,13 @@ tinymce.addI18n('it',{
"Finish": "Termina",
"Ignore all": "Ignora Tutto",
"Ignore": "Ignora",
"Add to Dictionary": "Aggiungi al Dizionario",
"Insert row before": "Inserisci una Riga Prima",
"Rows": "Righe",
"Height": "Altezza",
"Paste row after": "Incolla una Riga Dopo",
"Alignment": "Allineamento",
"Border color": "Colore bordo",
"Column group": "Gruppo di Colonne",
"Row": "Riga",
"Insert column before": "Inserisci una Colonna Prima",
@ -141,15 +151,20 @@ tinymce.addI18n('it',{
"Paste row before": "Incolla una Riga Prima",
"Scope": "Campo",
"Delete table": "Cancella Tabella",
"H Align": "Allineamento H",
"Top": "In alto",
"Header cell": "cella d'intestazione",
"Column": "Colonna",
"Row group": "Gruppo di Righe",
"Cell": "Cella",
"Header": "Header",
"Middle": "In mezzo",
"Cell type": "Tipo di Cella",
"Copy row": "Copia Riga",
"Row properties": "Propriet\u00e0 della Riga",
"Table properties": "Propiet\u00e0 della Tabella",
"Row group": "Gruppo di Righe",
"Bottom": "In fondo",
"V Align": "Allineamento V",
"Header": "Header",
"Right": "Destra",
"Insert column after": "Inserisci una Colonna Dopo",
"Cols": "Colonne",
@ -164,6 +179,9 @@ tinymce.addI18n('it',{
"Insert template": "Inserisci Template",
"Templates": "Template",
"Background color": "Colore Background",
"Custom...": "Personalizzato...",
"Custom color": "Colore personalizzato",
"No color": "Nessun colore",
"Text color": "Colore Testo",
"Show blocks": "Mostra Blocchi",
"Show invisible characters": "Mostra Caratteri Invisibili",

View File

@ -66,6 +66,7 @@ tinymce.addI18n('nl',{
"Restore last draft": "Herstel het laatste concept",
"Special character": "Speciale karakters",
"Source code": "Broncode",
"Color": "Kleur",
"Right to left": "Rechts naar links",
"Left to right": "Links naar rechts",
"Emoticons": "Emoticons",
@ -128,11 +129,13 @@ tinymce.addI18n('nl',{
"Finish": "Einde",
"Ignore all": "Alles negeren",
"Ignore": "Negeren",
"Add to Dictionary": "Toevoegen aan woordenlijst",
"Insert row before": "Voeg rij boven toe",
"Rows": "Rijen",
"Height": "Hoogte",
"Paste row after": "Plak rij onder",
"Alignment": "Uitlijning",
"Border color": "Lijnkleur",
"Column group": "Kolomgroep",
"Row": "Rij",
"Insert column before": "Voeg kolom in voor",
@ -176,6 +179,9 @@ tinymce.addI18n('nl',{
"Insert template": "Sjabloon invoegen",
"Templates": "Sjablonen",
"Background color": "Achtergrondkleur",
"Custom...": "Eigen...",
"Custom color": "Eigen kleur",
"No color": "Geen kleur",
"Text color": "Tekstkleur",
"Show blocks": "Blokken tonen",
"Show invisible characters": "Onzichtbare karakters tonen",

View File

@ -135,6 +135,7 @@ tinymce.addI18n('ru',{
"Height": "\u0412\u044b\u0441\u043e\u0442\u0430",
"Paste row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043d\u0438\u0437\u0443",
"Alignment": "\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",
"Border color": "\u0426\u0432\u0435\u0442 \u0440\u0430\u043c\u043a\u0438",
"Column group": "\u0413\u0440\u0443\u043f\u043f\u0430 \u043a\u043e\u043b\u043e\u043d\u043e\u043a",
"Row": "\u0421\u0442\u0440\u043e\u043a\u0430",
"Insert column before": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441\u043b\u0435\u0432\u0430",

View File

@ -0,0 +1 @@
tinymce._beforeUnloadHandler=function(){var e;return tinymce.each(tinymce.editors,function(t){t.plugins.autosave&&t.plugins.autosave.storeDraft(),!e&&t.isDirty()&&t.getParam("autosave_ask_before_unload",!0)&&(e=t.translate("You have unsaved changes are you sure you want to navigate away?"))}),e},tinymce.PluginManager.add("autosave",function(e){function t(e,t){var n={s:1e3,m:6e4};return e=/^(\d+)([ms]?)$/.exec(""+(e||t)),(e[2]?n[e[2]]:1)*parseInt(e,10)}function n(){var e=parseInt(v.getItem(c+"time"),10)||0;return(new Date).getTime()-e>m.autosave_retention?(a(!1),!1):!0}function a(t){v.removeItem(c+"draft"),v.removeItem(c+"time"),t!==!1&&e.fire("RemoveDraft")}function r(){!f()&&e.isDirty()&&(v.setItem(c+"draft",e.getContent({format:"raw",no_events:!0})),v.setItem(c+"time",(new Date).getTime()),e.fire("StoreDraft"))}function o(){n()&&(e.setContent(v.getItem(c+"draft"),{format:"raw"}),e.fire("RestoreDraft"))}function i(){d||(setInterval(function(){e.removed||r()},m.autosave_interval),d=!0)}function s(){var t=this;t.disabled(!n()),e.on("StoreDraft RestoreDraft RemoveDraft",function(){t.disabled(!n())}),i()}function u(){e.undoManager.beforeChange(),o(),a(),e.undoManager.add()}function f(t){var n=e.settings.forced_root_block;return t=tinymce.trim("undefined"==typeof t?e.getBody().innerHTML:t),""===t||new RegExp("^<"+n+"[^>]*>(( |&nbsp;|[ ]|<br[^>]*>)+?|)</"+n+">|<br>$","i").test(t)}var c,d,m=e.settings,v=tinymce.util.LocalStorage;c=m.autosave_prefix||"tinymce-autosave-{path}{query}-{id}-",c=c.replace(/\{path\}/g,document.location.pathname),c=c.replace(/\{query\}/g,document.location.search),c=c.replace(/\{id\}/g,e.id),m.autosave_interval=t(m.autosave_interval,"30s"),m.autosave_retention=t(m.autosave_retention,"20m"),e.addButton("restoredraft",{title:"Restore last draft",onclick:u,onPostRender:s}),e.addMenuItem("restoredraft",{text:"Restore last draft",onclick:u,onPostRender:s,context:"file"}),e.settings.autosave_restore_when_empty!==!1&&(e.on("init",function(){n()&&f()&&o()}),e.on("saveContent",function(){a()})),window.onbeforeunload=tinymce._beforeUnloadHandler,this.hasDraft=n,this.storeDraft=r,this.restoreDraft=o,this.removeDraft=a,this.isEmpty=f});

View File

@ -0,0 +1 @@
tinymce.PluginManager.add("nonbreaking",function(n){var e=n.getParam("nonbreaking_force_tab");if(n.addCommand("mceNonBreaking",function(){n.insertContent(n.plugins.visualchars&&n.plugins.visualchars.state?'<span class="mce-nbsp">&nbsp;</span>':"&nbsp;"),n.dom.setAttrib(n.dom.select("span.mce-nbsp"),"data-mce-bogus","1")}),n.addButton("nonbreaking",{title:"Nonbreaking space",cmd:"mceNonBreaking"}),n.addMenuItem("nonbreaking",{text:"Nonbreaking space",cmd:"mceNonBreaking",context:"insert"}),e){var a=+e>1?+e:3;n.on("keydown",function(e){if(9==e.keyCode){if(e.shiftKey)return;e.preventDefault();for(var t=0;a>t;t++)n.execCommand("mceNonBreaking")}})}});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More