suite.asyncTest('Do not reload language pack if it was already loaded or registered manually.', function (_, done) { const langCode = 'mce_lang'; const langUrl = 'http://example.com/language/' + langCode + '.js'; EditorManager.addI18n(langCode, { from: 'to' }); viewBlock.update('<textarea></textarea>'); EditorManager.init({ selector: 'textarea', skin_url: '/project/js/tinymce/skins/lightgray', language: langCode, language_url: langUrl, init_instance_callback (ed) { const scripts = Tools.grep(document.getElementsByTagName('script'), function (script) { return script.src === langUrl; }); LegacyUnit.equal(scripts.length, 0); teardown(done); } }); });
suite.asyncTest('Externally destroyed editor', function (_, done) { EditorManager.remove(); EditorManager.init({ selector: 'textarea', skin_url: '/project/js/tinymce/skins/lightgray', init_instance_callback (editor1) { Delay.setTimeout(function () { // Destroy the editor by setting innerHTML common ajax pattern viewBlock.update('<textarea id="' + editor1.id + '"></textarea>'); // Re-init the editor will have the same id EditorManager.init({ selector: 'textarea', skin_url: '/project/js/tinymce/skins/lightgray', init_instance_callback (editor2) { LegacyUnit.equal(EditorManager.get().length, 1); LegacyUnit.equal(editor1.id, editor2.id); LegacyUnit.equal(editor1.destroyed, 1, 'First editor instance should be destroyed'); teardown(done); } }); }, 0); } }); });
const setup = function (success, failure) { const div = document.createElement('div'); div.innerHTML = ( '<div id="lists">' + '<ul><li>before</li></ul>' + '<ul id="inline"><li>x</li></ul>' + '<ul><li>after</li></ul>' + '</div>' ); document.body.appendChild(div); EditorManager.init({ selector: '#inline', inline: true, add_unload_trigger: false, skin: false, plugins: 'lists', disable_nodechange: true, init_instance_callback (editor) { Pipeline.async({}, suite.toSteps(editor), function () { teardown(editor, div); success(); }, failure); }, valid_styles: { '*': 'color,font-size,font-family,background-color,font-weight,font-style,text-decoration,float,' + 'margin,margin-top,margin-right,margin-bottom,margin-left,display,position,top,left,list-style-type' } }); };
suite.asyncTest('selector on non existing targets', function (_, done) { EditorManager.init({ selector: '#non-existing-id', skin_url: '/project/js/tinymce/skins/lightgray' }).then(function (result) { Assertions.assertEq('Should be an result that is zero length', 0, result.length); teardown(done); }); });
const mCreateInlineModeMultipleInstances = Step.stateful(function (value, next, die) { viewBlock.update('<div class="tinymce-editor"><p>a</p></div><div class="tinymce-editor"><p>b</p></div>'); EditorManager.init({ selector: '.tinymce-editor', inline: true, skin_url: '/project/js/tinymce/skins/lightgray' }).then(next, die); });
const mCreateInlineModeMultipleInstances = Step.label('mCreateInlineModeMultipleInstances', Step.stateful(function (value, next, die) { viewBlock.update('<div class="tinymce-editor"><p>a</p></div><div class="tinymce-editor"><p>b</p></div>'); EditorManager.init({ selector: '.tinymce-editor', inline: true, skin_url: '/project/tinymce/js/tinymce/skins/ui/oxide', content_css: '/project/tinymce/js/tinymce/skins/content/default', }).then(next, die); }));
return Step.async(function (done) { viewBlock.update(html); EditorManager.init({ selector: '.tinymce', inline: true, skin_url: '/project/js/tinymce/skins/lightgray' }).then(function () { done(); }); });
suite.asyncTest('target (initialised properly)', function (_, done) { const elm1 = viewBlock.get().querySelector('#elm-1'); EditorManager.init({ target: elm1, skin_url: '/project/js/tinymce/skins/lightgray', init_instance_callback (ed) { LegacyUnit.equalDom(ed.targetElm, elm1); teardown(done); } }); });
Tools.each(invalidNames.split(' '), function (invalidName) { const elm = DOMUtils.DOM.add(document.body, invalidName, { class: 'targetEditor' }, null); EditorManager.init({ selector: invalidName + '.targetEditor', skin_url: '/project/js/tinymce/skins/lightgray', inline: true }); LegacyUnit.strictEqual(EditorManager.get().length, 0, 'Should not have created an editor'); DOMUtils.DOM.remove(elm); });
suite.asyncTest('get', function (_, done) { viewBlock.update('<textarea class="tinymce"></textarea>'); EditorManager.init({ selector: 'textarea.tinymce', skin_url: '/project/tinymce/js/tinymce/skins/ui/oxide', content_css: '/project/tinymce/js/tinymce/skins/content/default', init_instance_callback (editor1) { LegacyUnit.equal(EditorManager.get().length, 1); LegacyUnit.equal(EditorManager.get(0) === EditorManager.activeEditor, true); LegacyUnit.equal(EditorManager.get(1), null); LegacyUnit.equal(EditorManager.get('noid'), null); LegacyUnit.equal(EditorManager.get(undefined), null); LegacyUnit.equal(EditorManager.get()[0] === EditorManager.activeEditor, true); LegacyUnit.equal(EditorManager.get(EditorManager.activeEditor.id) === EditorManager.activeEditor, true); LegacyUnit.equal(EditorManager.get() !== EditorManager.get(), true); // Trigger save let saveCount = 0; editor1.on('SaveContent', function () { saveCount++; }); EditorManager.triggerSave(); LegacyUnit.equal(saveCount, 1); // Re-init on same id EditorManager.init({ selector: '#' + EditorManager.activeEditor.id, skin_url: '/project/tinymce/js/tinymce/skins/ui/oxide', content_css: '/project/tinymce/js/tinymce/skins/content/default', }); LegacyUnit.equal(EditorManager.get().length, 1); teardown(done); } }); });