/home/arranoyd/magicraft/wp-content/themes/massive-dynamic/lib/admin/public/js/kia-metabox.js
/*-----------------------------------------------------------------------------------*/
/* KIA Metabox scripts
/*
/* upload media buttons, sort, repeatable tinyMCE fields
/* requires jquery 1.7
/* tested on WordPress 3.3.1
/*
/* © Kathy Darling http://www.kathyisawesome.com
/* 2012-03-07.
/*
/* A bit modification to work with Vafpress (http://vafpress.com)
/*-----------------------------------------------------------------------------------*/
var KIA_metabox, tinyMCEbackupConfig = null;
;(function ($) {
KIA_metabox = {
/*-----------------------------------------------------------------------------------*/
/* Repeatable TinyMCE-enhanced textareas
/*-----------------------------------------------------------------------------------*/
runTinyMCE: function($textareas) {
// some settings for a more minimal tinyMCE editor
tinyMCEminConfig = {
theme : "advanced",
skin:"wp_theme",
mode : "none",
language : "en",
theme_advanced_resizing:"1",
width :"100%",
height : "250",
theme_advanced_layout_manager : "SimpleLayout",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_buttons1:"styleselect,formatselect,bold,italic,strikethrough,underline,|,link,unlink,|,forecolor,|undo,redo,|,code",
theme_advanced_buttons2 : "",
theme_advanced_buttons3 : "",
theme_advanced_statusbar_location:"",
remove_linebreaks: true,
plugins:"safari,inlinepopups,spellchecker,paste,wordpress,tabfocus"
};
if(tinyMCEbackupConfig === null)
{
tinyMCEbackupConfig = $.extend(true, {}, tinyMCE.settings);
}
//store the default settings
try {
tinyMCEdefaultConfig = $.extend(true, {}, tinyMCE.settings);
//tweak the setting just a litte to set the height and to add an HTML code button (since toggling editors is crazy difficult)
tinyMCEdefaultConfig.height = "250";
tinyMCEdefaultConfig.theme_advanced_buttons1 = tinyMCEdefaultConfig.theme_advanced_buttons1 + ',|,code';
} catch(e) {
tinyMCEdefaultConfig = tinyMCEminConfig;
}
$textareas.each(function(){
//give each a unique ID so we can apply TinyMCE to each
var id = $(this).attr('id');
try {
//if the customEditor div has the minimal class, serve up the minimal tinyMCE configuration
if($(this).parent().hasClass('minimal')){
tinyMCE.settings = tinyMCEminConfig;
} else {
tinyMCE.settings = tinyMCEdefaultConfig;
}
var options = $(this).getDatas();
options = vp.parseOpt(options.opt);
options.use_external_plugins = options.use_external_plugins ? true : false;
var plugins = tinyMCE.settings.plugins;
var theme_advanced_buttons1 = tinyMCE.settings.theme_advanced_buttons1;
// remove `wpfullscreen` plugin
plugins = plugins.replace(/,wpfullscreen/gm, '');
// remove `wp_fullscreen` button
theme_advanced_buttons1 = theme_advanced_buttons1.replace(/wp_fullscreen/gm, '');
if(options.use_external_plugins === false)
{
plugins = plugins.replace(/\-(.*?)(,|$)+?/gm, '');
}
else
{
var dep = options.disabled_externals_plugins,
dip = options.disabled_internals_plugins,
reg;
dep = dep.trim();
dep = dep.split(/[\s,]+/).join("|");
if(dep !== "")
{
reg = new RegExp('\\-(' + dep + ')(,|$)+?', 'gmi');
plugins = plugins.replace(reg, '');
}
dip = dip.trim();
dip = dip.split(/[\s,]+/).join("|");
if(dip !== "")
{
reg = new RegExp('\\-(' + dip + ')(,|$)+?', 'gmi');
plugins = plugins.replace(reg, '');
}
}
tinyMCE.settings.plugins = plugins;
tinyMCE.settings.theme_advanced_buttons1 = theme_advanced_buttons1;
tinyMCE.execCommand('mceAddEditor', false, id);
} catch(e){}
});
// restore default settings
tinyMCE.settings = $.extend(true, {}, tinyMCEbackupConfig);
} , //end runTinyMCE text areas
/*-----------------------------------------------------------------------------------*/
/* Custom Media Upload Buttons for tinyMCE textareas
/*-----------------------------------------------------------------------------------*/
mediaButtons: function() {
$('body').on('click','.custom_upload_buttons a',function(){
textarea = $(this).closest('.customEditor').find('textarea');
mceID = textarea.attr('id');
kia_backup = window.send_to_editor; // backup the original 'send_to_editor' function
window.send_to_editor = window.send_to_editor_clone;
});
//borrow the send to editor function
window.send_to_editor_clone = function(html){
try {
tinyMCE.get(mceID).insertContent(html);
} catch(e) {
$(textarea).insertAtCaret(html);
}
tb_remove();
// restore the default behavior
window.send_to_editor = kia_backup;
};
}, //end mediaButtons
}; // End KIA_metabox Object // Don't remove this, or the sky will fall on your head.
})(jQuery);
// jQuery insertAtCaret plugin
// http://stackoverflow.com/questions/946534/insert-text-into-textarea-with-jquery#answer-2819568
if(!jQuery.fn.insertAtCaret)
{
jQuery.fn.extend({
insertAtCaret: function(myValue){
return this.each(function(i) {
if (document.selection) {
//For browsers like Internet Explorer
this.focus();
sel = document.selection.createRange();
sel.text = myValue;
this.focus();
}
else if (this.selectionStart || this.selectionStart == '0') {
//For browsers like Firefox and Webkit based
var startPos = this.selectionStart;
var endPos = this.selectionEnd;
var scrollTop = this.scrollTop;
this.value = this.value.substring(0, startPos)+myValue+this.value.substring(endPos,this.value.length);
this.focus();
this.selectionStart = startPos + myValue.length;
this.selectionEnd = startPos + myValue.length;
this.scrollTop = scrollTop;
} else {
this.value += myValue;
this.focus();
}
});
}
});
}