engine/app/assets/javascripts/tinymce/plugins/locomotive_media/editor_plugin.js

78 lines
2.2 KiB
JavaScript

/**
* editor_plugin_src.js
*
* Copyright 2009, Moxiecode Systems AB
* Released under LGPL License.
*
* License: http://tinymce.moxiecode.com/license
* Contributing: http://tinymce.moxiecode.com/contributing
*/
(function() {
var insertImage = function(ed, asset) {
var args = {}, el;
// Fixes crash in Safari
if (tinymce.isWebKit) ed.getWin().focus();
if (asset.get('image'))
tinymce.extend(args, { src : asset.get('url') });
else
tinymce.extend(args, { href : asset.get('url') });
el = ed.selection.getNode();
if (el && (el.nodeName == 'IMG' || el.nodeName == 'A')) {
ed.dom.setAttribs(el, args);
} else {
if (asset.get('image')) {
ed.execCommand('mceInsertContent', false, '<img id="__mce_tmp" />', { skip_undo: 1 });
} else {
var html = ed.selection.getContent();
if (html == '') html = asset.get('filename');
ed.execCommand('mceInsertContent', false, '<a id="__mce_tmp" >' + html + '</a>', { skip_undo: 1 });
}
ed.dom.setAttribs('__mce_tmp', args);
ed.dom.setAttrib('__mce_tmp', 'id', '');
ed.undoManager.add();
}
}
tinymce.create('tinymce.plugins.LocomotiveMediaPicker', {
init : function(ed, url) {
view = new Locomotive.Views.ContentAssets.PickerView({
'collection': new Locomotive.Models.ContentAssetsCollection()
});
// Register commands
ed.addCommand('locomotiveMedia', function() {
view.options.on_select = function(asset) {
insertImage(ed, asset);
view.close();
}
view.render();
});
// Register buttons
ed.addButton('locomotive_media', {
title : 'locomotive_media.image_desc',
cmd : 'locomotiveMedia'
});
},
getInfo : function() {
return {
longname : 'Locomotive Media Picker',
author : 'Didier Lafforgue',
authorurl : 'http://www.locomotivecms.com',
infourl : 'http://www.locomotivecms.com',
version : tinymce.majorVersion + "." + tinymce.minorVersion
};
}
});
// Register plugin
tinymce.PluginManager.add('locomotive_media', tinymce.plugins.LocomotiveMediaPicker);
})();