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 );
+
+})();