123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- /*
- * @file Audio plugin for CKEditor - fork from the Video plugin for CKEditor
- * Copyright (C) 2014 BeezNest Latino S.A.C
- *
- * == BEGIN LICENSE ==
- *
- * Licensed under the terms of any of the following licenses at your
- * choice:
- *
- * - GNU General Public License Version 2 or later (the "GPL")
- * http://www.gnu.org/licenses/gpl.html
- *
- * - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
- * http://www.gnu.org/licenses/lgpl.html
- *
- * - Mozilla Public License Version 1.1 or later (the "MPL")
- * http://www.mozilla.org/MPL/MPL-1.1.html
- *
- * == END LICENSE ==
- *
- */
- (function() {
- CKEDITOR.plugins.add('audio', {
- // Translations, available at the end of this file, without extra requests
- lang: ['en', 'es'],
- getPlaceholderCss: function() {
- return 'img.cke_audio' +
- '{' +
- 'background-image: url(' + CKEDITOR.getUrl(this.path + 'images/placeholder.png') + ');' +
- 'background-position: center center;' +
- 'background-repeat: no-repeat;' +
- 'background-color:gray;' +
- 'border: 1px solid #a9a9a9;' +
- 'width: 80px;' +
- 'height: 80px;' +
- '}';
- },
- onLoad: function() {
- // v4
- if (CKEDITOR.addCss)
- CKEDITOR.addCss(this.getPlaceholderCss());
- },
- init: function(editor) {
- var lang = editor.lang.audio;
- // Check for CKEditor 3.5
- if (typeof editor.element.data == 'undefined') {
- alert('The "audio" plugin requires CKEditor 3.5 or newer');
- return;
- }
- CKEDITOR.dialog.add('audio', this.path + 'dialogs/audio.js');
- editor.addCommand('Audio', new CKEDITOR.dialogCommand('audio'));
- editor.ui.addButton('Audio', {
- label: lang.toolbar,
- command: 'Audio',
- icon: this.path + 'images/icon.png'
- });
- // v3
- if (editor.addCss) {
- editor.addCss(this.getPlaceholderCss());
- }
- // If the "menu" plugin is loaded, register the menu items.
- if (editor.addMenuItems) {
- editor.addMenuItems({
- audio: {
- label: lang.properties,
- command: 'Audio',
- group: 'flash'
- }
- });
- }
- editor.on('doubleclick', function(evt) {
- var element = evt.data.element;
- if (element.is('img') && element.data('cke-real-element-type') == 'audio') {
- evt.data.dialog = 'audio';
- }
- });
- // If the "contextmenu" plugin is loaded, register the listeners.
- if (editor.contextMenu) {
- editor.contextMenu.addListener(function(element, selection) {
- if (element && element.is('img') && !element.isReadOnly()
- && element.data('cke-real-element-type') == 'audio') {
- return {audio: CKEDITOR.TRISTATE_OFF};
- }
- });
- }
- // Add special handling for these items
- CKEDITOR.dtd.$empty['cke:source'] = 1;
- CKEDITOR.dtd.$empty['source'] = 1;
- editor.lang.fakeobjects.audio = lang.fakeObject;
- }, //Init
- afterInit: function(editor) {
- var dataProcessor = editor.dataProcessor,
- htmlFilter = dataProcessor && dataProcessor.htmlFilter,
- dataFilter = dataProcessor && dataProcessor.dataFilter;
- // dataFilter : conversion from html input to internal data
- dataFilter.addRules({
- elements: {
- $: function(realElement) {
- if (realElement.name == 'audio') {
- realElement.name = 'cke:audio';
- for (var i = 0; i < realElement.children.length; i++) {
- if (realElement.children[ i ].name == 'source') {
- realElement.children[ i ].name = 'cke:source';
- }
- }
- var fakeElement = editor.createFakeParserElement(realElement, 'cke_video', 'audio', false),
- fakeStyle = fakeElement.attributes.style || '';
- var width = realElement.attributes.width,
- height = realElement.attributes.height;
- if (typeof width != 'undefined') {
- fakeStyle = fakeElement.attributes.style = fakeStyle + 'width:' + CKEDITOR.tools.cssLength(width) + ';';
- }
- if (typeof height != 'undefined') {
- fakeStyle = fakeElement.attributes.style = fakeStyle + 'height:' + CKEDITOR.tools.cssLength(height) + ';';
- }
- return fakeElement;
- }
- }
- }
- });
- } // afterInit
- }); // plugins.add
- var en = {
- toolbar: 'Audio',
- dialogTitle: 'Audio properties',
- fakeObject: 'Audio',
- properties: 'Edit audio',
- widthRequired: 'Width field cannot be empty',
- heightRequired: 'Height field cannot be empty',
- sourceAudio: 'Source audio',
- sourceType: 'Audio type',
- linkTemplate: '<a href="%src%">%type%</a> ',
- fallbackTemplate: 'Your browser doesn\'t support audio.<br>Please download the file: %links%',
- autoPlay: 'Auto play'
- };
- var es = {
- toolbar: 'Audio',
- dialogTitle: 'Propiedades de audio',
- fakeObject: 'Audio',
- properties: 'Editar el audio',
- widthRequired: 'La anchura no se puede dejar en blanco',
- heightRequired: 'La altura no se puede dejar en blanco',
- sourceAudio: 'Archivo de audio',
- sourceType: 'Tipo',
- linkTemplate: '<a href="%src%">%type%</a> ',
- fallbackTemplate: 'Su navegador no soporta AUDIO.<br>Por favor, descargue el fichero: %links%',
- autoPlay: 'Reproducir automáticamente'
- };
- // v3
- if (CKEDITOR.skins) {
- en = {audio: en};
- es = {audio: es};
- }
- // Translations
- CKEDITOR.plugins.setLang('audio', 'en', en);
- CKEDITOR.plugins.setLang('audio', 'es', es);
- })();
|