83 lines
2.7 KiB
JavaScript
83 lines
2.7 KiB
JavaScript
/*/* ===========================================================
|
|
* trumbowyg.insertaudio.js v1.0
|
|
* InsertAudio plugin for Trumbowyg
|
|
* http://alex-d.github.com/Trumbowyg
|
|
* ===========================================================
|
|
* Author : Adam Hess (AdamHess)
|
|
*/
|
|
|
|
(function ($) {
|
|
'use strict';
|
|
|
|
var insertAudioOptions = {
|
|
src: {
|
|
label: 'URL',
|
|
required: true
|
|
},
|
|
autoplay: {
|
|
label: 'AutoPlay',
|
|
required: false,
|
|
type: 'checkbox'
|
|
},
|
|
muted: {
|
|
label: 'Muted',
|
|
required: false,
|
|
type: 'checkbox'
|
|
},
|
|
preload: {
|
|
label: 'preload options',
|
|
required: false
|
|
}
|
|
};
|
|
|
|
|
|
$.extend(true, $.trumbowyg, {
|
|
langs: {
|
|
en: {
|
|
insertAudio: 'Insert Audio'
|
|
},
|
|
ru: {
|
|
insertAudio: 'Вставить аудио'
|
|
},
|
|
ja: {
|
|
insertAudio: '音声の挿入'
|
|
}
|
|
},
|
|
plugins: {
|
|
insertAudio: {
|
|
init: function (trumbowyg) {
|
|
var btnDef = {
|
|
fn: function () {
|
|
var insertAudioCallback = function (v) {
|
|
// controls should always be show otherwise the audio will
|
|
// be invisible defeating the point of a wysiwyg
|
|
var html = '<audio controls';
|
|
if (v.src) {
|
|
html += ' src=\'' + v.src + '\'';
|
|
}
|
|
if (v.autoplay) {
|
|
html += ' autoplay';
|
|
}
|
|
if (v.muted) {
|
|
html += ' muted';
|
|
}
|
|
if (v.preload) {
|
|
html += ' preload=\'' + v + '\'';
|
|
}
|
|
html += '></audio>';
|
|
var node = $(html)[0];
|
|
trumbowyg.range.deleteContents();
|
|
trumbowyg.range.insertNode(node);
|
|
return true;
|
|
};
|
|
|
|
trumbowyg.openModalInsert(trumbowyg.lang.insertAudio, insertAudioOptions, insertAudioCallback);
|
|
}
|
|
};
|
|
|
|
trumbowyg.addBtnDef('insertAudio', btnDef);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
})(jQuery); |