X-Git-Url: https://git.immae.eu/?p=perso%2FImmae%2FProjets%2Fpackagist%2Fpiedsjaloux-ckeditor-component.git;a=blobdiff_plain;f=sources%2Fplugins%2FAudio%2Fplugin.js;fp=sources%2Fplugins%2FAudio%2Fplugin.js;h=ee618f6dd74805360549a7628dd44baa4e052726;hp=0000000000000000000000000000000000000000;hb=317f8f8f0651488f226b5280a8f036c7c135c639;hpb=1096cdefb1c9a3f3c4ca6807e272da6c92e5ed9c diff --git a/sources/plugins/Audio/plugin.js b/sources/plugins/Audio/plugin.js new file mode 100644 index 0000000..ee618f6 --- /dev/null +++ b/sources/plugins/Audio/plugin.js @@ -0,0 +1,211 @@ +/* + * @file audio plugin for CKEditor + * Copyright (C) 2011 Alfonso Martínez de Lizarrondo + * + * == 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_audio', 'audio', false ), + fakeStyle = fakeElement.attributes.style || ''; + + var width = realElement.attributes.width, + height = realElement.attributes.height, + poster = realElement.attributes.poster; + + 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 ) + ';'; + + if ( poster ) + fakeStyle = fakeElement.attributes.style = fakeStyle + 'background-image:url(' + poster + ');'; + + 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', + poster: 'Poster image', + sourceaudio: 'Source audio', + sourceType : 'Audio type', + linkTemplate : '%type% ', + fallbackTemplate : 'Your browser doesn\'t support audio.
Please download the file: %links%' + }; + +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', + poster: 'Imagen de presentación', + sourceaudio: 'Archivo de audio', + sourceType : 'Tipo', + linkTemplate : '%type% ', + fallbackTemplate : 'Su navegador no soporta audio.
Por favor, descargue el fichero: %links%' + }; + + // v3 + if (CKEDITOR.skins) + { + en = { audio : en} ; + es = { audio : es} ; + } + +// Translations +CKEDITOR.plugins.setLang( 'audio', 'en', en ); + +CKEDITOR.plugins.setLang( 'audio', 'es', es ); + +})();