Version Description
- Added support for smilies conversion (based on the general Wordpress option)
- Updated styling to match the new default Wordpress editor appearence
- Refactoring of PHP and JS code to be compliant with Wordpress coding standard
- Fixed compatibility issue with Wordpress 3.9 alpha and TinyMCE 4.0
- Fixed compatibility issue with Jetpack / After the Deadline plugin
- Fixed editor behavior on widget title clicks
- Fixed CSS issue affecting Firefox on Wordpress 3.8
- Added finnish translation (Contributor: Timo Leini)
- Better handling of "More tag" button
- Included JS dev version
Download this release
Release Info
Developer | marcochiesi |
Plugin | ![]() |
Version | 1.3.0 |
Comparing to | |
See all releases |
Code changes from version 1.2.0 to 1.3.0
- black-studio-tinymce-widget-legacy.dev.js +131 -0
- black-studio-tinymce-widget-legacy.js +1 -1
- black-studio-tinymce-widget.css +17 -27
- black-studio-tinymce-widget.dev.js +141 -0
- black-studio-tinymce-widget.js +1 -1
- black-studio-tinymce-widget.php +103 -88
- languages/black-studio-tinymce-widget-fi_FI.mo +0 -0
- languages/black-studio-tinymce-widget-fi_FI.po +37 -0
- readme.txt +15 -3
black-studio-tinymce-widget-legacy.dev.js
ADDED
@@ -0,0 +1,131 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// TinyMCE initialization parameters
|
2 |
+
var tinyMCEPreInit;
|
3 |
+
// Current editor (backward compatibility)
|
4 |
+
var edCanvas;
|
5 |
+
// Current editor
|
6 |
+
var wpActiveEditor;
|
7 |
+
|
8 |
+
(function($) {
|
9 |
+
// Activate visual editor
|
10 |
+
function black_studio_activate_visual_editor(id) {
|
11 |
+
$('#'+id).addClass("mceEditor");
|
12 |
+
if ( typeof( tinyMCE ) == "object" && typeof( tinyMCE.execCommand ) == "function" ) {
|
13 |
+
black_studio_deactivate_visual_editor(id);
|
14 |
+
if (typeof (tinyMCEPreInit.mceInit['black-studio-tinymce-widget']) == "object") { // WP 3.3+
|
15 |
+
tinyMCEPreInit.mceInit[id] = tinyMCEPreInit.mceInit['black-studio-tinymce-widget'];
|
16 |
+
tinyMCEPreInit.mceInit[id]["elements"] = id;
|
17 |
+
try {
|
18 |
+
// Instantiate new TinyMCE editor
|
19 |
+
tinymce.init(tinymce.extend( {}, tinyMCEPreInit.mceInit['black-studio-tinymce-widget'], tinyMCEPreInit.mceInit[id] ));
|
20 |
+
} catch(e){
|
21 |
+
alert(e);
|
22 |
+
}
|
23 |
+
}
|
24 |
+
else { // WP 3.2
|
25 |
+
tinyMCE.execCommand("mceAddControl", false, id);
|
26 |
+
}
|
27 |
+
}
|
28 |
+
}
|
29 |
+
// Deactivate visual editor
|
30 |
+
function black_studio_deactivate_visual_editor(id) {
|
31 |
+
if ( typeof( tinyMCE ) == "object" && typeof( tinyMCE.execCommand ) == "function" ) {
|
32 |
+
if (typeof(tinyMCE.get(id)) == "object") {
|
33 |
+
var content = tinyMCE.get(id).getContent();
|
34 |
+
tinyMCE.execCommand("mceRemoveControl", false, id);
|
35 |
+
$('textarea#'+id).val(content);
|
36 |
+
}
|
37 |
+
}
|
38 |
+
}
|
39 |
+
// Activate editor deferred (used upon opening the widget)
|
40 |
+
function black_studio_open_deferred_activate_visual_editor(id) {
|
41 |
+
$('div.widget-inside:has(#' + id + ') input[id^=widget-black-studio-tinymce][id$=type][value=visual]').each(function() {
|
42 |
+
// If textarea is visible and animation/ajax has completed (or in accessibility mode) then trigger a click to Visual button and enable the editor
|
43 |
+
if ($('div.widget:has(#' + id + ') :animated').size() == 0 && typeof(tinyMCE.get(id)) != "object" && $('#' + id).is(':visible')) {
|
44 |
+
$('a[id^=widget-black-studio-tinymce][id$=visual]', $(this).closest('div.widget-inside')).click();
|
45 |
+
}
|
46 |
+
// Otherwise wait and retry later (animation ongoing)
|
47 |
+
else if (typeof(tinyMCE.get(id)) != "object") {
|
48 |
+
setTimeout(function(){black_studio_open_deferred_activate_visual_editor(id);id=null;}, 100);
|
49 |
+
}
|
50 |
+
// If editor instance is already existing (i.e. dragged from another sidebar) just activate it
|
51 |
+
else {
|
52 |
+
$('a[id^=widget-black-studio-tinymce][id$=visual]', $(this).closest('div.widget-inside')).click();
|
53 |
+
}
|
54 |
+
});
|
55 |
+
}
|
56 |
+
|
57 |
+
// Activate editor deferred (used upon ajax requests)
|
58 |
+
function black_studio_ajax_deferred_activate_visual_editor(id) {
|
59 |
+
$('div.widget-inside:has(#' + id + ') input[id^=widget-black-studio-tinymce][id$=type][value=visual]').each(function() {
|
60 |
+
// If textarea is visible and animation/ajax has completed then trigger a click to Visual button and enable the editor
|
61 |
+
if ($.active == 0 && typeof(tinyMCE.get(id)) != "object" && $('#' + id).is(':visible')) {
|
62 |
+
$('a[id^=widget-black-studio-tinymce][id$=visual]', $(this).closest('div.widget-inside')).click();
|
63 |
+
}
|
64 |
+
// Otherwise wait and retry later (animation ongoing)
|
65 |
+
else if ($('div.widget:has(#' + id + ') div.widget-inside').is(':visible') && typeof(tinyMCE.get(id)) != "object") {
|
66 |
+
setTimeout(function(){black_studio_ajax_deferred_activate_visual_editor(id);id=null;}, 100);
|
67 |
+
}
|
68 |
+
});
|
69 |
+
}
|
70 |
+
|
71 |
+
|
72 |
+
// Document ready stuff
|
73 |
+
$(document).ready(function(){
|
74 |
+
// Event handler for widget opening button
|
75 |
+
$('div.widget:has(textarea[id^=widget-black-studio-tinymce]) a.widget-action').live('click', function(event){
|
76 |
+
event.preventDefault();
|
77 |
+
var $widget = $(this).closest('div.widget');
|
78 |
+
var $text_area = $('textarea[id^=widget-black-studio-tinymce]', $widget);
|
79 |
+
$('#wpbody-content').css('overflow', 'visible'); // needed for small screens
|
80 |
+
$widget.css('position', 'relative').css('z-index', '100'); // needed for small screens
|
81 |
+
black_studio_open_deferred_activate_visual_editor($text_area.attr('id'));
|
82 |
+
});
|
83 |
+
// Force BS handler of opening button to be executed before the one coming with Wordpress
|
84 |
+
$(document).data("events").click.unshift($(document).data("events").click.pop());
|
85 |
+
// Event handler for widget saving button
|
86 |
+
$('div.widget[id*=black-studio-tinymce] input[name=savewidget]').live('click', function(event){
|
87 |
+
event.preventDefault();
|
88 |
+
var $widget = $(this).closest('div.widget')
|
89 |
+
var $text_area = $('textarea[id^=widget-black-studio-tinymce]', $widget);
|
90 |
+
if (typeof(tinyMCE.get($text_area.attr('id'))) == "object") {
|
91 |
+
black_studio_deactivate_visual_editor($text_area.attr('id'));
|
92 |
+
}
|
93 |
+
// Event handler for ajax complete
|
94 |
+
$(this).unbind('ajaxSuccess').ajaxSuccess(function(event, xhr, settings) {
|
95 |
+
var $text_area = $('textarea[id^=widget-black-studio-tinymce]', $(this).closest('div.widget-inside'));
|
96 |
+
black_studio_ajax_deferred_activate_visual_editor($text_area.attr('id'));
|
97 |
+
});
|
98 |
+
});
|
99 |
+
// Force BS handler of save button to be executed before the one coming with Wordpress
|
100 |
+
$(document).data("events").click.unshift($(document).data("events").click.pop());
|
101 |
+
// Event handler for visual switch button
|
102 |
+
$('a[id^=widget-black-studio-tinymce][id$=visual]').live('click', function(event){
|
103 |
+
event.preventDefault();
|
104 |
+
var $widget_inside = $(this).closest('div.widget-inside')
|
105 |
+
$('input[id^=widget-black-studio-tinymce][id$=type]', $widget_inside).val('visual');
|
106 |
+
$(this).addClass('active');
|
107 |
+
$('a[id^=widget-black-studio-tinymce][id$=html]', $widget_inside).removeClass('active');
|
108 |
+
black_studio_activate_visual_editor($('textarea[id^=widget-black-studio-tinymce]', $widget_inside).attr('id'));
|
109 |
+
});
|
110 |
+
// Event handler for html switch button
|
111 |
+
$('a[id^=widget-black-studio-tinymce][id$=html]').live('click', function(event){
|
112 |
+
event.preventDefault();
|
113 |
+
var $widget_inside = $(this).closest('div.widget-inside')
|
114 |
+
$('input[id^=widget-black-studio-tinymce][id$=type]', $widget_inside).val('html');
|
115 |
+
$(this).addClass('active');
|
116 |
+
$('a[id^=widget-black-studio-tinymce][id$=visual]', $widget_inside).removeClass('active');
|
117 |
+
black_studio_deactivate_visual_editor($('textarea[id^=widget-black-studio-tinymce]', $widget_inside).attr('id'));
|
118 |
+
});
|
119 |
+
// Set edCanvas/wpActiveEditor variables used when adding media from media library dialog
|
120 |
+
$('.editor_media_buttons a').live('click', function(){
|
121 |
+
var $widget_inside = $(this).closest('div.widget-inside')
|
122 |
+
edCanvas = $('textarea[id^=widget-black-studio-tinymce]', $widget_inside).get();
|
123 |
+
wpActiveEditor = $('textarea[id^=widget-black-studio-tinymce]', $widget_inside).attr('id');
|
124 |
+
});
|
125 |
+
// Activate editor when in accessibility mode
|
126 |
+
if($('body.widgets_access').size() > 0) {
|
127 |
+
var $text_area = $('textarea[id^=widget-black-studio-tinymce]');
|
128 |
+
black_studio_open_deferred_activate_visual_editor($text_area.attr('id'));
|
129 |
+
}
|
130 |
+
});
|
131 |
+
})(jQuery); // end self-invoked wrapper function
|
black-studio-tinymce-widget-legacy.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
|
1 |
+
var tinyMCEPreInit;var edCanvas;var wpActiveEditor;(function(c){function d(g){c("#"+g).addClass("mceEditor");if(typeof(tinyMCE)=="object"&&typeof(tinyMCE.execCommand)=="function"){b(g);if(typeof(tinyMCEPreInit.mceInit["black-studio-tinymce-widget"])=="object"){tinyMCEPreInit.mceInit[g]=tinyMCEPreInit.mceInit["black-studio-tinymce-widget"];tinyMCEPreInit.mceInit[g]["elements"]=g;try{tinymce.init(tinymce.extend({},tinyMCEPreInit.mceInit["black-studio-tinymce-widget"],tinyMCEPreInit.mceInit[g]))}catch(f){alert(f)}}else{tinyMCE.execCommand("mceAddControl",false,g)}}}function b(g){if(typeof(tinyMCE)=="object"&&typeof(tinyMCE.execCommand)=="function"){if(typeof(tinyMCE.get(g))=="object"){var f=tinyMCE.get(g).getContent();tinyMCE.execCommand("mceRemoveControl",false,g);c("textarea#"+g).val(f)}}}function a(f){c("div.widget-inside:has(#"+f+") input[id^=widget-black-studio-tinymce][id$=type][value=visual]").each(function(){if(c("div.widget:has(#"+f+") :animated").size()==0&&typeof(tinyMCE.get(f))!="object"&&c("#"+f).is(":visible")){c("a[id^=widget-black-studio-tinymce][id$=visual]",c(this).closest("div.widget-inside")).click()}else{if(typeof(tinyMCE.get(f))!="object"){setTimeout(function(){a(f);f=null},100)}else{c("a[id^=widget-black-studio-tinymce][id$=visual]",c(this).closest("div.widget-inside")).click()}}})}function e(f){c("div.widget-inside:has(#"+f+") input[id^=widget-black-studio-tinymce][id$=type][value=visual]").each(function(){if(c.active==0&&typeof(tinyMCE.get(f))!="object"&&c("#"+f).is(":visible")){c("a[id^=widget-black-studio-tinymce][id$=visual]",c(this).closest("div.widget-inside")).click()}else{if(c("div.widget:has(#"+f+") div.widget-inside").is(":visible")&&typeof(tinyMCE.get(f))!="object"){setTimeout(function(){e(f);f=null},100)}}})}c(document).ready(function(){c("div.widget:has(textarea[id^=widget-black-studio-tinymce]) a.widget-action").live("click",function(g){g.preventDefault();var i=c(this).closest("div.widget");var h=c("textarea[id^=widget-black-studio-tinymce]",i);c("#wpbody-content").css("overflow","visible");i.css("position","relative").css("z-index","100");a(h.attr("id"))});c(document).data("events").click.unshift(c(document).data("events").click.pop());c("div.widget[id*=black-studio-tinymce] input[name=savewidget]").live("click",function(g){g.preventDefault();var i=c(this).closest("div.widget");var h=c("textarea[id^=widget-black-studio-tinymce]",i);if(typeof(tinyMCE.get(h.attr("id")))=="object"){b(h.attr("id"))}c(this).unbind("ajaxSuccess").ajaxSuccess(function(k,l,j){var m=c("textarea[id^=widget-black-studio-tinymce]",c(this).closest("div.widget-inside"));e(m.attr("id"))})});c(document).data("events").click.unshift(c(document).data("events").click.pop());c("a[id^=widget-black-studio-tinymce][id$=visual]").live("click",function(g){g.preventDefault();var h=c(this).closest("div.widget-inside");c("input[id^=widget-black-studio-tinymce][id$=type]",h).val("visual");c(this).addClass("active");c("a[id^=widget-black-studio-tinymce][id$=html]",h).removeClass("active");d(c("textarea[id^=widget-black-studio-tinymce]",h).attr("id"))});c("a[id^=widget-black-studio-tinymce][id$=html]").live("click",function(g){g.preventDefault();var h=c(this).closest("div.widget-inside");c("input[id^=widget-black-studio-tinymce][id$=type]",h).val("html");c(this).addClass("active");c("a[id^=widget-black-studio-tinymce][id$=visual]",h).removeClass("active");b(c("textarea[id^=widget-black-studio-tinymce]",h).attr("id"))});c(".editor_media_buttons a").live("click",function(){var g=c(this).closest("div.widget-inside");edCanvas=c("textarea[id^=widget-black-studio-tinymce]",g).get();wpActiveEditor=c("textarea[id^=widget-black-studio-tinymce]",g).attr("id")});if(c("body.widgets_access").size()>0){var f=c("textarea[id^=widget-black-studio-tinymce]");a(f.attr("id"))}})})(jQuery);
|
black-studio-tinymce-widget.css
CHANGED
@@ -10,47 +10,37 @@
|
|
10 |
|
11 |
.editor_container {
|
12 |
background-color: #FFF;
|
13 |
-
border-color: #
|
14 |
border-style: solid;
|
15 |
border-width: 1px;
|
16 |
border-collapse: separate;
|
17 |
-
-moz-border-radius: 3px 3px 0 0;
|
18 |
-
-webkit-border-top-right-radius: 3px;
|
19 |
-
-webkit-border-top-left-radius: 3px;
|
20 |
-
-khtml-border-top-right-radius: 3px;
|
21 |
-
-khtml-border-top-left-radius: 3px;
|
22 |
border-top-right-radius: 3px;
|
23 |
border-top-left-radius: 3px;
|
|
|
|
|
24 |
}
|
25 |
.editor_toggle_buttons {
|
26 |
-
height: 30px;
|
27 |
margin-right: 15px;
|
28 |
margin-top: 8px;
|
29 |
float: right;
|
30 |
}
|
31 |
.editor_toggle_buttons a {
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
-khtml-border-top-right-radius: 3px;
|
43 |
-
-khtml-border-top-left-radius: 3px;
|
44 |
-
border-top-right-radius: 3px;
|
45 |
-
border-top-left-radius: 3px;
|
46 |
-
background-color: #F1F1F1;
|
47 |
-
border-color: #DFDFDF #DFDFDF #CCC;
|
48 |
-
color: #999;
|
49 |
}
|
50 |
.editor_toggle_buttons a.active {
|
51 |
-
|
52 |
-
|
53 |
-
|
|
|
54 |
}
|
55 |
.editor_toggle_buttons_legacy a.active {
|
56 |
border-color: #CCC #CCC #E9E9E9;
|
10 |
|
11 |
.editor_container {
|
12 |
background-color: #FFF;
|
13 |
+
border-color: #DEDEDE;
|
14 |
border-style: solid;
|
15 |
border-width: 1px;
|
16 |
border-collapse: separate;
|
|
|
|
|
|
|
|
|
|
|
17 |
border-top-right-radius: 3px;
|
18 |
border-top-left-radius: 3px;
|
19 |
+
padding: 0 1px 1px 1px;
|
20 |
+
clear: both;
|
21 |
}
|
22 |
.editor_toggle_buttons {
|
|
|
23 |
margin-right: 15px;
|
24 |
margin-top: 8px;
|
25 |
float: right;
|
26 |
}
|
27 |
.editor_toggle_buttons a {
|
28 |
+
background: none repeat scroll 0 0 #EBEBEB;
|
29 |
+
border: 1px solid #DEDEDE;
|
30 |
+
color: #777777;
|
31 |
+
cursor: pointer;
|
32 |
+
float: right;
|
33 |
+
font: 13px/19px "Open Sans",sans-serif;
|
34 |
+
margin: 5px 0 0 5px;
|
35 |
+
padding: 3px 8px 4px;
|
36 |
+
position: relative;
|
37 |
+
top: 1px;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
38 |
}
|
39 |
.editor_toggle_buttons a.active {
|
40 |
+
background: none repeat scroll 0 0 #F5F5F5;
|
41 |
+
border-bottom: 0 none;
|
42 |
+
color: #555555;
|
43 |
+
height: 20px;
|
44 |
}
|
45 |
.editor_toggle_buttons_legacy a.active {
|
46 |
border-color: #CCC #CCC #E9E9E9;
|
black-studio-tinymce-widget.dev.js
ADDED
@@ -0,0 +1,141 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
// TinyMCE initialization parameters
|
2 |
+
var tinyMCEPreInit;
|
3 |
+
// Current editor
|
4 |
+
var wpActiveEditor;
|
5 |
+
|
6 |
+
(function( $ ) {
|
7 |
+
// Activate visual editor
|
8 |
+
function black_studio_activate_visual_editor(id) {
|
9 |
+
$( '#' + id ).addClass( 'mceEditor' );
|
10 |
+
if ( typeof tinyMCE == 'object' && typeof tinyMCE.execCommand == 'function' ) {
|
11 |
+
black_studio_deactivate_visual_editor( id );
|
12 |
+
tinyMCEPreInit.mceInit[id] = tinyMCEPreInit.mceInit['black-studio-tinymce-widget'];
|
13 |
+
tinyMCEPreInit.mceInit[id]['selector'] = '#' + id;
|
14 |
+
try {
|
15 |
+
// Instantiate new TinyMCE editor
|
16 |
+
tinymce.init( tinymce.extend( {}, tinyMCEPreInit.mceInit['black-studio-tinymce-widget'], tinyMCEPreInit.mceInit[id] ) );
|
17 |
+
tinyMCE.execCommand( 'mceAddControl', false, id );
|
18 |
+
} catch( e ) {
|
19 |
+
alert( e );
|
20 |
+
}
|
21 |
+
}
|
22 |
+
}
|
23 |
+
// Deactivate visual editor
|
24 |
+
function black_studio_deactivate_visual_editor( id ) {
|
25 |
+
if ( typeof tinyMCE == 'object' && typeof tinyMCE.execCommand == 'function' ) {
|
26 |
+
if ( typeof tinyMCE.get( id ) == 'object' && typeof tinyMCE.get( id ).getContent == 'function' ) {
|
27 |
+
var content = tinyMCE.get( id ).getContent();
|
28 |
+
// tinyMCE.execCommand('mceRemoveControl', false, id);
|
29 |
+
tinyMCE.get( id ).remove();
|
30 |
+
$( 'textarea#' + id ).val( content );
|
31 |
+
}
|
32 |
+
}
|
33 |
+
}
|
34 |
+
// Activate editor deferred (used upon opening the widget)
|
35 |
+
function black_studio_open_deferred_activate_visual_editor( id ) {
|
36 |
+
$( 'div.widget-inside:has(#' + id + ') input[id^=widget-black-studio-tinymce][id$=type][value=visual]' ).each(function() {
|
37 |
+
// If textarea is visible and animation/ajax has completed (or in accessibility mode) then trigger a click to Visual button and enable the editor
|
38 |
+
if ( $('div.widget:has(#' + id + ') :animated' ).size() == 0 && typeof tinyMCE.get( id ) != 'object' && $( '#' + id ).is( ':visible' ) ) {
|
39 |
+
$( 'a[id^=widget-black-studio-tinymce][id$=visual]', $( this ).closest( 'div.widget-inside' ) ).click();
|
40 |
+
}
|
41 |
+
// Otherwise wait and retry later (animation ongoing)
|
42 |
+
else if ( typeof tinyMCE.get( id ) != 'object' ) {
|
43 |
+
setTimeout(function() {
|
44 |
+
black_studio_open_deferred_activate_visual_editor( id );
|
45 |
+
id = null;
|
46 |
+
}, 100 );
|
47 |
+
}
|
48 |
+
// If editor instance is already existing (i.e. dragged from another sidebar) just activate it
|
49 |
+
else {
|
50 |
+
$( 'a[id^=widget-black-studio-tinymce][id$=visual]', $( this ).closest( 'div.widget-inside' ) ).click();
|
51 |
+
}
|
52 |
+
});
|
53 |
+
}
|
54 |
+
|
55 |
+
// Activate editor deferred (used upon ajax requests)
|
56 |
+
function black_studio_ajax_deferred_activate_visual_editor( id ) {
|
57 |
+
$( 'div.widget-inside:has(#' + id + ') input[id^=widget-black-studio-tinymce][id$=type][value=visual]' ).each(function() {
|
58 |
+
// If textarea is visible and animation/ajax has completed then trigger a click to Visual button and enable the editor
|
59 |
+
if ( $.active == 0 && typeof tinyMCE.get( id ) != 'object' && $( '#' + id ).is( ':visible' ) ) {
|
60 |
+
$( 'a[id^=widget-black-studio-tinymce][id$=visual]', $( this ).closest( 'div.widget-inside' ) ).click();
|
61 |
+
}
|
62 |
+
// Otherwise wait and retry later (animation ongoing)
|
63 |
+
else if ( $( 'div.widget:has(#' + id + ') div.widget-inside' ).is( ':visible' ) && typeof tinyMCE.get( id ) != 'object') {
|
64 |
+
setTimeout(function() {
|
65 |
+
black_studio_ajax_deferred_activate_visual_editor( id );
|
66 |
+
id=null;
|
67 |
+
}, 100 );
|
68 |
+
}
|
69 |
+
});
|
70 |
+
}
|
71 |
+
|
72 |
+
|
73 |
+
|
74 |
+
// Document ready stuff
|
75 |
+
$( document ).ready(function() {
|
76 |
+
// Event handler for widget opening button
|
77 |
+
$( document ).on( 'click', 'div.widget:has(textarea[id^=widget-black-studio-tinymce]) .widget-title, div.widget:has(textarea[id^=widget-black-studio-tinymce]) a.widget-action', function( event ) {
|
78 |
+
//event.preventDefault();
|
79 |
+
var $widget = $( this ).closest( 'div.widget' );
|
80 |
+
var $text_area = $( 'textarea[id^=widget-black-studio-tinymce]', $widget );
|
81 |
+
// Event handler for widget saving button (for new instances)
|
82 |
+
$( 'input[name=savewidget]', $widget ).on( 'click', function( event ) {
|
83 |
+
var $widget = $( this ).closest( 'div.widget' )
|
84 |
+
var $text_area = $( 'textarea[id^=widget-black-studio-tinymce]', $widget );
|
85 |
+
if ( typeof tinyMCE.get( $text_area.attr( 'id' ) ) == 'object') {
|
86 |
+
black_studio_deactivate_visual_editor( $text_area.attr( 'id' ) );
|
87 |
+
}
|
88 |
+
// Event handler for ajax complete
|
89 |
+
$( this ).unbind( 'ajaxSuccess' ).ajaxSuccess( function( event, xhr, settings ) {
|
90 |
+
var $text_area = $( 'textarea[id^=widget-black-studio-tinymce]', $( this ).closest( 'div.widget-inside') );
|
91 |
+
black_studio_ajax_deferred_activate_visual_editor( $text_area.attr( 'id' ) );
|
92 |
+
});
|
93 |
+
});
|
94 |
+
$( '#wpbody-content' ).css( 'overflow', 'visible' ); // needed for small screens
|
95 |
+
$widget.css( 'position', 'relative' ).css( 'z-index', '100' ); // needed for small screens
|
96 |
+
black_studio_open_deferred_activate_visual_editor( $text_area.attr( 'id' ) );
|
97 |
+
$( '.insert-media', $widget ).data( 'editor', $text_area.attr( 'id' ) );
|
98 |
+
});
|
99 |
+
// Event handler for widget saving button (for existing instances)
|
100 |
+
$( 'div.widget[id*=black-studio-tinymce] input[name=savewidget]').on( 'click', function( event ) {
|
101 |
+
var $widget = $( this ).closest( 'div.widget' )
|
102 |
+
var $text_area = $( 'textarea[id^=widget-black-studio-tinymce]', $widget );
|
103 |
+
if ( typeof tinyMCE.get( $text_area.attr( 'id' ) ) == 'object') {
|
104 |
+
black_studio_deactivate_visual_editor( $text_area.attr( 'id' ) );
|
105 |
+
}
|
106 |
+
// Event handler for ajax complete
|
107 |
+
$( this ).unbind( 'ajaxSuccess' ).ajaxSuccess( function( event, xhr, settings ) {
|
108 |
+
var $text_area = $( 'textarea[id^=widget-black-studio-tinymce]', $( this ).closest( 'div.widget-inside' ) );
|
109 |
+
black_studio_ajax_deferred_activate_visual_editor( $text_area.attr( 'id' ) );
|
110 |
+
});
|
111 |
+
});
|
112 |
+
// Event handler for visual switch button
|
113 |
+
$( document ).on( 'click', 'a[id^=widget-black-studio-tinymce][id$=visual]', function( event ) {
|
114 |
+
//event.preventDefault();
|
115 |
+
var $widget_inside = $( this ).closest( 'div.widget-inside,div.panel-dialog' );
|
116 |
+
$( 'input[id^=widget-black-studio-tinymce][id$=type]', $widget_inside ).val( 'visual' );
|
117 |
+
$( this ).addClass( 'active' );
|
118 |
+
$( 'a[id^=widget-black-studio-tinymce][id$=html]', $widget_inside ).removeClass( 'active' );
|
119 |
+
black_studio_activate_visual_editor( $( 'textarea[id^=widget-black-studio-tinymce]', $widget_inside ).attr( 'id' ) );
|
120 |
+
});
|
121 |
+
// Event handler for html switch button
|
122 |
+
$( document ).on( 'click', 'a[id^=widget-black-studio-tinymce][id$=html]', function( event ) {
|
123 |
+
//event.preventDefault();
|
124 |
+
var $widget_inside = $( this ).closest( 'div.widget-inside,div.panel-dialog' );
|
125 |
+
$( 'input[id^=widget-black-studio-tinymce][id$=type]', $widget_inside ).val( 'html' );
|
126 |
+
$( this ).addClass( 'active' );
|
127 |
+
$( 'a[id^=widget-black-studio-tinymce][id$=visual]', $widget_inside ).removeClass( 'active' );
|
128 |
+
black_studio_deactivate_visual_editor( $( 'textarea[id^=widget-black-studio-tinymce]', $widget_inside ).attr( 'id' ) );
|
129 |
+
});
|
130 |
+
// Set wpActiveEditor variables used when adding media from media library dialog
|
131 |
+
$( document ).on( 'click', '.editor_media_buttons a', function() {
|
132 |
+
var $widget_inside = $( this ).closest( 'div.widget-inside' );
|
133 |
+
wpActiveEditor = $( 'textarea[id^=widget-black-studio-tinymce]', $widget_inside ).attr( 'id' );
|
134 |
+
});
|
135 |
+
// Activate editor when in accessibility mode
|
136 |
+
if ( $( 'body.widgets_access' ).size() > 0) {
|
137 |
+
var $text_area = $( 'textarea[id^=widget-black-studio-tinymce]' );
|
138 |
+
black_studio_open_deferred_activate_visual_editor( $text_area.attr( 'id' ) );
|
139 |
+
}
|
140 |
+
});
|
141 |
+
})( jQuery ); // end self-invoked wrapper function
|
black-studio-tinymce-widget.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
|
1 |
+
var tinyMCEPreInit;var wpActiveEditor;(function(c){function d(g){c("#"+g).addClass("mceEditor");if(typeof tinyMCE=="object"&&typeof tinyMCE.execCommand=="function"){b(g);tinyMCEPreInit.mceInit[g]=tinyMCEPreInit.mceInit["black-studio-tinymce-widget"];tinyMCEPreInit.mceInit[g]["selector"]="#"+g;try{tinymce.init(tinymce.extend({},tinyMCEPreInit.mceInit["black-studio-tinymce-widget"],tinyMCEPreInit.mceInit[g]));tinyMCE.execCommand("mceAddControl",false,g)}catch(f){alert(f)}}}function b(g){if(typeof tinyMCE=="object"&&typeof tinyMCE.execCommand=="function"){if(typeof tinyMCE.get(g)=="object"&&typeof tinyMCE.get(g).getContent=="function"){var f=tinyMCE.get(g).getContent();tinyMCE.get(g).remove();c("textarea#"+g).val(f)}}}function a(f){c("div.widget-inside:has(#"+f+") input[id^=widget-black-studio-tinymce][id$=type][value=visual]").each(function(){if(c("div.widget:has(#"+f+") :animated").size()==0&&typeof tinyMCE.get(f)!="object"&&c("#"+f).is(":visible")){c("a[id^=widget-black-studio-tinymce][id$=visual]",c(this).closest("div.widget-inside")).click()}else{if(typeof tinyMCE.get(f)!="object"){setTimeout(function(){a(f);f=null},100)}else{c("a[id^=widget-black-studio-tinymce][id$=visual]",c(this).closest("div.widget-inside")).click()}}})}function e(f){c("div.widget-inside:has(#"+f+") input[id^=widget-black-studio-tinymce][id$=type][value=visual]").each(function(){if(c.active==0&&typeof tinyMCE.get(f)!="object"&&c("#"+f).is(":visible")){c("a[id^=widget-black-studio-tinymce][id$=visual]",c(this).closest("div.widget-inside")).click()}else{if(c("div.widget:has(#"+f+") div.widget-inside").is(":visible")&&typeof tinyMCE.get(f)!="object"){setTimeout(function(){e(f);f=null},100)}}})}c(document).ready(function(){c(document).on("click","div.widget:has(textarea[id^=widget-black-studio-tinymce]) .widget-title, div.widget:has(textarea[id^=widget-black-studio-tinymce]) a.widget-action",function(g){var i=c(this).closest("div.widget");var h=c("textarea[id^=widget-black-studio-tinymce]",i);c("input[name=savewidget]",i).on("click",function(j){var l=c(this).closest("div.widget");var k=c("textarea[id^=widget-black-studio-tinymce]",l);if(typeof tinyMCE.get(k.attr("id"))=="object"){b(k.attr("id"))}c(this).unbind("ajaxSuccess").ajaxSuccess(function(n,o,m){var p=c("textarea[id^=widget-black-studio-tinymce]",c(this).closest("div.widget-inside"));e(p.attr("id"))})});c("#wpbody-content").css("overflow","visible");i.css("position","relative").css("z-index","100");a(h.attr("id"));c(".insert-media",i).data("editor",h.attr("id"))});c("div.widget[id*=black-studio-tinymce] input[name=savewidget]").on("click",function(g){var i=c(this).closest("div.widget");var h=c("textarea[id^=widget-black-studio-tinymce]",i);if(typeof tinyMCE.get(h.attr("id"))=="object"){b(h.attr("id"))}c(this).unbind("ajaxSuccess").ajaxSuccess(function(k,l,j){var m=c("textarea[id^=widget-black-studio-tinymce]",c(this).closest("div.widget-inside"));e(m.attr("id"))})});c(document).on("click","a[id^=widget-black-studio-tinymce][id$=visual]",function(g){var h=c(this).closest("div.widget-inside,div.panel-dialog");c("input[id^=widget-black-studio-tinymce][id$=type]",h).val("visual");c(this).addClass("active");c("a[id^=widget-black-studio-tinymce][id$=html]",h).removeClass("active");d(c("textarea[id^=widget-black-studio-tinymce]",h).attr("id"))});c(document).on("click","a[id^=widget-black-studio-tinymce][id$=html]",function(g){var h=c(this).closest("div.widget-inside,div.panel-dialog");c("input[id^=widget-black-studio-tinymce][id$=type]",h).val("html");c(this).addClass("active");c("a[id^=widget-black-studio-tinymce][id$=visual]",h).removeClass("active");b(c("textarea[id^=widget-black-studio-tinymce]",h).attr("id"))});c(document).on("click",".editor_media_buttons a",function(){var g=c(this).closest("div.widget-inside");wpActiveEditor=c("textarea[id^=widget-black-studio-tinymce]",g).attr("id")});if(c("body.widgets_access").size()>0){var f=c("textarea[id^=widget-black-studio-tinymce]");a(f.attr("id"))}})})(jQuery);
|
black-studio-tinymce-widget.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Black Studio TinyMCE Widget
|
4 |
Plugin URI: http://wordpress.org/extend/plugins/black-studio-tinymce-widget/
|
5 |
Description: Adds a WYSIWYG widget based on the standard TinyMCE WordPress visual editor.
|
6 |
-
Version: 1.
|
7 |
Author: Black Studio
|
8 |
Author URI: http://www.blackstudio.it
|
9 |
License: GPL2
|
@@ -11,65 +11,70 @@ License: GPL2
|
|
11 |
|
12 |
global $black_studio_tinymce_widget_version;
|
13 |
global $black_studio_tinymce_widget_dev_mode;
|
14 |
-
$black_studio_tinymce_widget_version = "1.
|
15 |
$black_studio_tinymce_widget_dev_mode = false;
|
16 |
|
17 |
/* Widget class */
|
18 |
class WP_Widget_Black_Studio_TinyMCE extends WP_Widget {
|
19 |
|
20 |
function __construct() {
|
21 |
-
$widget_ops = array('classname' => 'widget_black_studio_tinymce', 'description' => __('Arbitrary text or HTML with visual editor', 'black-studio-tinymce-widget'));
|
22 |
-
$control_ops = array('width' => 800, 'height' => 800);
|
23 |
-
parent::__construct('black-studio-tinymce', __('Black Studio TinyMCE', 'black-studio-tinymce-widget'), $widget_ops, $control_ops);
|
24 |
}
|
25 |
|
26 |
function widget( $args, $instance ) {
|
27 |
-
if ( get_option('embed_autourls') ) {
|
28 |
$wp_embed = $GLOBALS['wp_embed'];
|
29 |
add_filter( 'widget_text', array( $wp_embed, 'run_shortcode' ), 8 );
|
30 |
add_filter( 'widget_text', array( $wp_embed, 'autoembed' ), 8 );
|
31 |
}
|
32 |
-
extract($args);
|
33 |
-
$title = apply_filters( 'widget_title', empty($instance['title']) ? '' : $instance['title'], $instance, $this->id_base);
|
34 |
$text = apply_filters( 'widget_text', $instance['text'], $instance );
|
35 |
-
if( function_exists( 'icl_t' )) {
|
36 |
$title = icl_t( "Widgets", 'widget title - ' . md5 ( $title ), $title );
|
37 |
$text = icl_t( "Widgets", 'widget body - ' . $this->id_base . '-' . $this->number, $text );
|
38 |
}
|
39 |
$text = do_shortcode( $text );
|
40 |
echo $before_widget;
|
41 |
-
if ( !empty( $title ) ) {
|
|
|
|
|
|
|
42 |
<div class="textwidget"><?php echo $text; ?></div>
|
43 |
-
|
44 |
echo $after_widget;
|
45 |
}
|
46 |
|
47 |
function update( $new_instance, $old_instance ) {
|
48 |
$instance = $old_instance;
|
49 |
-
$instance['title'] = strip_tags($new_instance['title']);
|
50 |
-
if ( current_user_can('unfiltered_html') )
|
51 |
$instance['text'] = $new_instance['text'];
|
52 |
-
|
|
|
53 |
$instance['text'] = stripslashes( wp_filter_post_kses( addslashes($new_instance['text']) ) ); // wp_filter_post_kses() expects slashed
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
icl_register_string( "Widgets", 'widget
|
|
|
58 |
}
|
59 |
return $instance;
|
60 |
}
|
61 |
|
62 |
function form( $instance ) {
|
63 |
$instance = wp_parse_args( (array) $instance, array( 'title' => '', 'text' => '', 'type' => 'visual' ) );
|
64 |
-
$title = strip_tags($instance['title']);
|
65 |
-
if (function_exists('esc_textarea')) {
|
66 |
-
$text = esc_textarea($instance['text']);
|
67 |
}
|
68 |
else {
|
69 |
$text = stripslashes( wp_filter_post_kses( addslashes( $instance['text'] ) ) );
|
70 |
}
|
71 |
-
$type = esc_attr($instance['type']);
|
72 |
-
if (get_bloginfo('version') < "3.5") {
|
73 |
$toggle_buttons_extra_class = "editor_toggle_buttons_legacy";
|
74 |
$media_buttons_extra_class = "editor_media_buttons_legacy";
|
75 |
}
|
@@ -78,89 +83,90 @@ class WP_Widget_Black_Studio_TinyMCE extends WP_Widget {
|
|
78 |
$media_buttons_extra_class = "wp-media-buttons";
|
79 |
}
|
80 |
?>
|
81 |
-
<input id="<?php echo $this->get_field_id('type'); ?>" name="<?php echo $this->get_field_name('type'); ?>" type="hidden" value="<?php echo esc_attr($type); ?>" />
|
82 |
-
<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?></label>
|
83 |
-
<input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
<div class="editor_media_buttons hide-if-no-js <?php echo $media_buttons_extra_class; ?>">
|
89 |
<?php do_action( 'media_buttons' ); ?>
|
90 |
</div>
|
91 |
<div class="editor_container">
|
92 |
-
<textarea class="widefat" rows="20" cols="40" id="<?php echo $this->get_field_id('text'); ?>" name="<?php echo $this->get_field_name('text'); ?>"><?php echo $text; ?></textarea>
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
}
|
97 |
}
|
98 |
|
99 |
/* Load localization */
|
100 |
-
load_plugin_textdomain('black-studio-tinymce-widget', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
|
101 |
|
102 |
/* Widget initialization */
|
103 |
-
add_action('widgets_init', 'black_studio_tinymce_widgets_init');
|
104 |
function black_studio_tinymce_widgets_init() {
|
105 |
-
if ( !is_blog_installed() )
|
106 |
return;
|
107 |
-
register_widget('WP_Widget_Black_Studio_TinyMCE');
|
108 |
}
|
109 |
|
110 |
/* Add actions and filters (only in widgets admin page) */
|
111 |
-
add_action('admin_init', 'black_studio_tinymce_admin_init');
|
112 |
function black_studio_tinymce_admin_init() {
|
113 |
global $pagenow;
|
114 |
$load_editor = false;
|
115 |
-
if ($pagenow == "widgets.php") {
|
116 |
$load_editor = true;
|
117 |
}
|
118 |
// Compatibility for WP Page Widget plugin
|
119 |
-
if (is_plugin_active('wp-page-widget/wp-page-widgets.php') && (
|
120 |
-
(in_array($pagenow, array('post-new.php', 'post.php'))) ||
|
121 |
-
(in_array($pagenow, array('edit-tags.php')) && isset($_GET['action']) && $_GET['action'] == 'edit') ||
|
122 |
-
(in_array($pagenow, array('admin.php')) && isset($_GET['page']) && in_array($_GET['page'], array('pw-front-page', 'pw-search-page')))
|
123 |
-
)) {
|
124 |
$load_editor = true;
|
125 |
}
|
126 |
-
if ($load_editor) {
|
127 |
-
add_action( 'admin_head', 'black_studio_tinymce_load_tiny_mce');
|
128 |
-
add_filter( 'tiny_mce_before_init', 'black_studio_tinymce_init_editor', 20);
|
129 |
-
add_action( 'admin_print_scripts', 'black_studio_tinymce_scripts');
|
130 |
-
add_action( 'admin_print_styles', 'black_studio_tinymce_styles');
|
131 |
-
add_action( 'admin_print_footer_scripts', 'black_studio_tinymce_footer_scripts');
|
|
|
132 |
}
|
133 |
}
|
134 |
|
135 |
/* Instantiate tinyMCE editor */
|
136 |
function black_studio_tinymce_load_tiny_mce() {
|
137 |
// Remove filters added from "After the deadline" plugin, to avoid conflicts
|
138 |
-
remove_filter( 'mce_external_plugins', 'add_AtD_tinymce_plugin' );
|
139 |
-
remove_filter( 'mce_buttons', 'register_AtD_button' );
|
140 |
-
remove_filter( 'tiny_mce_before_init', 'AtD_change_mce_settings' );
|
141 |
// Add support for thickbox media dialog
|
142 |
add_thickbox();
|
143 |
// New media modal dialog (WP 3.5+)
|
144 |
-
if (function_exists('wp_enqueue_media')) {
|
145 |
wp_enqueue_media();
|
146 |
}
|
147 |
}
|
148 |
|
149 |
/* TinyMCE setup customization */
|
150 |
-
function black_studio_tinymce_init_editor($initArray) {
|
|
|
151 |
// Remove WP fullscreen mode and set the native tinyMCE fullscreen mode
|
152 |
-
if (get_bloginfo('version') < "3.3") {
|
153 |
$plugins = explode(',', $initArray['plugins']);
|
154 |
-
if (isset($plugins['wpfullscreen'])) {
|
155 |
-
unset($plugins['wpfullscreen']);
|
156 |
}
|
157 |
-
if (!isset($plugins['fullscreen'])) {
|
158 |
$plugins[] = 'fullscreen';
|
159 |
}
|
160 |
-
$initArray['plugins'] = implode(',', $plugins);
|
|
|
|
|
|
|
|
|
161 |
}
|
162 |
-
// Remove the "More" toolbar button
|
163 |
-
$initArray['theme_advanced_buttons1'] = str_replace(',wp_more', '', $initArray['theme_advanced_buttons1']);
|
164 |
// Do not remove linebreaks
|
165 |
$initArray['remove_linebreaks'] = false;
|
166 |
// Convert newline characters to BR tags
|
@@ -183,72 +189,81 @@ function black_studio_tinymce_init_editor($initArray) {
|
|
183 |
function black_studio_tinymce_scripts() {
|
184 |
global $black_studio_tinymce_widget_version, $black_studio_tinymce_widget_dev_mode;
|
185 |
wp_enqueue_script('media-upload');
|
186 |
-
if (get_bloginfo('version') >= "3.3") {
|
187 |
-
wp_enqueue_script('wplink');
|
188 |
-
wp_enqueue_script('wpdialogs-popup');
|
189 |
-
wp_enqueue_script('black-studio-tinymce-widget', plugins_url('black-studio-tinymce-widget'.($black_studio_tinymce_widget_dev_mode?'.dev':'').'.js', __FILE__), array('jquery'), $black_studio_tinymce_widget_version);
|
190 |
}
|
191 |
else {
|
192 |
-
wp_enqueue_script('black-studio-tinymce-widget-legacy', plugins_url('black-studio-tinymce-widget-legacy'.($black_studio_tinymce_widget_dev_mode?'.dev':'').'.js', __FILE__), array('jquery'), $black_studio_tinymce_widget_version);
|
193 |
}
|
194 |
}
|
195 |
|
196 |
/* Widget css loading */
|
197 |
function black_studio_tinymce_styles() {
|
198 |
global $black_studio_tinymce_widget_version;
|
199 |
-
if (get_bloginfo('version') < "3.3") {
|
200 |
-
wp_enqueue_style('thickbox');
|
201 |
}
|
202 |
else {
|
203 |
-
wp_enqueue_style('wp-jquery-ui-dialog');
|
204 |
}
|
205 |
-
wp_print_styles('editor-buttons');
|
206 |
-
wp_enqueue_style('black-studio-tinymce-widget', plugins_url('black-studio-tinymce-widget.css', __FILE__), array(), $black_studio_tinymce_widget_version);
|
207 |
}
|
208 |
|
209 |
|
210 |
/* Footer script */
|
211 |
function black_studio_tinymce_footer_scripts() {
|
212 |
// Setup for WP 3.1 and previous versions
|
213 |
-
if (get_bloginfo('version') < "3.2") {
|
214 |
-
if (function_exists('wp_tiny_mce')) {
|
215 |
-
wp_tiny_mce(false, array());
|
216 |
}
|
217 |
-
if(function_exists('wp_tiny_mce_preload_dialogs')) {
|
218 |
wp_tiny_mce_preload_dialogs();
|
219 |
}
|
220 |
}
|
221 |
// Setup for WP 3.2.x
|
222 |
-
else if (get_bloginfo('version') < "3.3") {
|
223 |
-
if (function_exists('wp_tiny_mce')) {
|
224 |
-
wp_tiny_mce(false, array());
|
225 |
}
|
226 |
-
if(function_exists('wp_preload_dialogs')) {
|
227 |
wp_preload_dialogs( array( 'plugins' => 'wpdialogs,wplink,wpfullscreen' ) );
|
228 |
}
|
229 |
}
|
230 |
// Setup for WP 3.3 - New Editor API
|
231 |
else {
|
232 |
-
wp_editor('', 'black-studio-tinymce-widget');
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
233 |
}
|
|
|
234 |
}
|
235 |
|
236 |
/* Hack needed to enable full media options when adding content form media library */
|
237 |
/* (this is done excluding post_id parameter in Thickbox iframe url) */
|
238 |
-
add_filter('_upload_iframe_src', 'black_studio_tinymce_upload_iframe_src');
|
239 |
-
function black_studio_tinymce_upload_iframe_src ($upload_iframe_src) {
|
240 |
global $pagenow;
|
241 |
-
if ($pagenow == "widgets.php" || ($pagenow == "admin-ajax.php" && isset ($_POST['id_base']) && $_POST['id_base'] == "black-studio-tinymce") ) {
|
242 |
-
$upload_iframe_src = str_replace('post_id=0', '', $upload_iframe_src);
|
243 |
}
|
244 |
return $upload_iframe_src;
|
245 |
}
|
246 |
|
247 |
/* Hack for widgets accessibility mode */
|
248 |
-
add_filter('wp_default_editor', 'black_studio_tinymce_editor_accessibility_mode');
|
249 |
function black_studio_tinymce_editor_accessibility_mode($editor) {
|
250 |
global $pagenow;
|
251 |
-
if ($pagenow == "widgets.php" && isset($_GET['editwidget']) && strpos($_GET['editwidget'], 'black-studio-tinymce') === 0 ) {
|
252 |
$editor = 'html';
|
253 |
}
|
254 |
return $editor;
|
3 |
Plugin Name: Black Studio TinyMCE Widget
|
4 |
Plugin URI: http://wordpress.org/extend/plugins/black-studio-tinymce-widget/
|
5 |
Description: Adds a WYSIWYG widget based on the standard TinyMCE WordPress visual editor.
|
6 |
+
Version: 1.3.0
|
7 |
Author: Black Studio
|
8 |
Author URI: http://www.blackstudio.it
|
9 |
License: GPL2
|
11 |
|
12 |
global $black_studio_tinymce_widget_version;
|
13 |
global $black_studio_tinymce_widget_dev_mode;
|
14 |
+
$black_studio_tinymce_widget_version = "1.3.0"; // This is used internally - should be the same reported on the plugin header
|
15 |
$black_studio_tinymce_widget_dev_mode = false;
|
16 |
|
17 |
/* Widget class */
|
18 |
class WP_Widget_Black_Studio_TinyMCE extends WP_Widget {
|
19 |
|
20 |
function __construct() {
|
21 |
+
$widget_ops = array( 'classname' => 'widget_black_studio_tinymce', 'description' => __( 'Arbitrary text or HTML with visual editor', 'black-studio-tinymce-widget' ) );
|
22 |
+
$control_ops = array( 'width' => 800, 'height' => 800 );
|
23 |
+
parent::__construct( 'black-studio-tinymce', __( 'Black Studio TinyMCE', 'black-studio-tinymce-widget' ), $widget_ops, $control_ops );
|
24 |
}
|
25 |
|
26 |
function widget( $args, $instance ) {
|
27 |
+
if ( get_option( 'embed_autourls' ) ) {
|
28 |
$wp_embed = $GLOBALS['wp_embed'];
|
29 |
add_filter( 'widget_text', array( $wp_embed, 'run_shortcode' ), 8 );
|
30 |
add_filter( 'widget_text', array( $wp_embed, 'autoembed' ), 8 );
|
31 |
}
|
32 |
+
extract( $args );
|
33 |
+
$title = apply_filters( 'widget_title', empty($instance['title']) ? '' : $instance['title'], $instance, $this->id_base );
|
34 |
$text = apply_filters( 'widget_text', $instance['text'], $instance );
|
35 |
+
if ( function_exists( 'icl_t' ) ) {
|
36 |
$title = icl_t( "Widgets", 'widget title - ' . md5 ( $title ), $title );
|
37 |
$text = icl_t( "Widgets", 'widget body - ' . $this->id_base . '-' . $this->number, $text );
|
38 |
}
|
39 |
$text = do_shortcode( $text );
|
40 |
echo $before_widget;
|
41 |
+
if ( ! empty( $title ) ) {
|
42 |
+
echo $before_title . $title . $after_title;
|
43 |
+
}
|
44 |
+
?>
|
45 |
<div class="textwidget"><?php echo $text; ?></div>
|
46 |
+
<?php
|
47 |
echo $after_widget;
|
48 |
}
|
49 |
|
50 |
function update( $new_instance, $old_instance ) {
|
51 |
$instance = $old_instance;
|
52 |
+
$instance['title'] = strip_tags( $new_instance['title'] );
|
53 |
+
if ( current_user_can('unfiltered_html') ) {
|
54 |
$instance['text'] = $new_instance['text'];
|
55 |
+
}
|
56 |
+
else {
|
57 |
$instance['text'] = stripslashes( wp_filter_post_kses( addslashes($new_instance['text']) ) ); // wp_filter_post_kses() expects slashed
|
58 |
+
}
|
59 |
+
$instance['type'] = strip_tags( $new_instance['type'] );
|
60 |
+
if ( function_exists( 'icl_register_string' )) {
|
61 |
+
//icl_register_string( "Widgets", 'widget title - ' . $this->id_base . '-' . $this->number /* md5 ( apply_filters( 'widget_title', $instance['title'] ))*/, apply_filters( 'widget_title', $instance['title'] ) ); // This is handled automatically by WPML
|
62 |
+
icl_register_string( "Widgets", 'widget body - ' . $this->id_base . '-' . $this->number, apply_filters( 'widget_text', $instance['text'] ) );
|
63 |
}
|
64 |
return $instance;
|
65 |
}
|
66 |
|
67 |
function form( $instance ) {
|
68 |
$instance = wp_parse_args( (array) $instance, array( 'title' => '', 'text' => '', 'type' => 'visual' ) );
|
69 |
+
$title = strip_tags( $instance['title'] );
|
70 |
+
if ( function_exists( 'esc_textarea' ) ) {
|
71 |
+
$text = esc_textarea( $instance['text'] );
|
72 |
}
|
73 |
else {
|
74 |
$text = stripslashes( wp_filter_post_kses( addslashes( $instance['text'] ) ) );
|
75 |
}
|
76 |
+
$type = esc_attr( $instance['type'] );
|
77 |
+
if ( get_bloginfo( 'version' ) < "3.5" ) {
|
78 |
$toggle_buttons_extra_class = "editor_toggle_buttons_legacy";
|
79 |
$media_buttons_extra_class = "editor_media_buttons_legacy";
|
80 |
}
|
83 |
$media_buttons_extra_class = "wp-media-buttons";
|
84 |
}
|
85 |
?>
|
86 |
+
<input id="<?php echo $this->get_field_id( 'type' ); ?>" name="<?php echo $this->get_field_name( 'type' ); ?>" type="hidden" value="<?php echo esc_attr( $type ); ?>" />
|
87 |
+
<p><label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label>
|
88 |
+
<input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo esc_attr($title); ?>" /></p>
|
89 |
+
<div class="editor_toggle_buttons hide-if-no-js <?php echo $toggle_buttons_extra_class; ?>">
|
90 |
+
<a id="widget-<?php echo $this->id_base; ?>-<?php echo $this->number; ?>-html"<?php if ( $type == 'html' ) {?> class="active"<?php }?>><?php _e( 'HTML' ); ?></a>
|
91 |
+
<a id="widget-<?php echo $this->id_base; ?>-<?php echo $this->number; ?>-visual"<?php if ( $type == 'visual' ) {?> class="active"<?php }?>><?php _e(' Visual' ); ?></a>
|
92 |
+
</div>
|
93 |
<div class="editor_media_buttons hide-if-no-js <?php echo $media_buttons_extra_class; ?>">
|
94 |
<?php do_action( 'media_buttons' ); ?>
|
95 |
</div>
|
96 |
<div class="editor_container">
|
97 |
+
<textarea class="widefat" rows="20" cols="40" id="<?php echo $this->get_field_id( 'text' ); ?>" name="<?php echo $this->get_field_name('text'); ?>"><?php echo $text; ?></textarea>
|
98 |
+
</div>
|
99 |
+
<div class="editor_links"><a href="http://www.blackstudio.it/en/wordpress-plugins/black-studio-tinymce-widget/" target="_blank"><?php echo __( 'Donate', 'black-studio-tinymce-widget' ); ?></a> | <a href="http://wordpress.org/support/plugin/black-studio-tinymce-widget" target="_blank"><?php echo __( 'Support', 'black-studio-tinymce-widget' ); ?></a> | <a href="https://twitter.com/blackstudioita" target="_blank"><?php echo __( 'Follow', 'black-studio-tinymce-widget' ); ?></a></div>
|
100 |
+
<?php
|
101 |
}
|
102 |
}
|
103 |
|
104 |
/* Load localization */
|
105 |
+
load_plugin_textdomain( 'black-studio-tinymce-widget', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
|
106 |
|
107 |
/* Widget initialization */
|
108 |
+
add_action( 'widgets_init', 'black_studio_tinymce_widgets_init' );
|
109 |
function black_studio_tinymce_widgets_init() {
|
110 |
+
if ( ! is_blog_installed() )
|
111 |
return;
|
112 |
+
register_widget( 'WP_Widget_Black_Studio_TinyMCE' );
|
113 |
}
|
114 |
|
115 |
/* Add actions and filters (only in widgets admin page) */
|
116 |
+
add_action( 'admin_init', 'black_studio_tinymce_admin_init' );
|
117 |
function black_studio_tinymce_admin_init() {
|
118 |
global $pagenow;
|
119 |
$load_editor = false;
|
120 |
+
if ( $pagenow == "widgets.php" ) {
|
121 |
$load_editor = true;
|
122 |
}
|
123 |
// Compatibility for WP Page Widget plugin
|
124 |
+
if ( is_plugin_active('wp-page-widget/wp-page-widgets.php' ) && (
|
125 |
+
( in_array( $pagenow, array( 'post-new.php', 'post.php') ) ) ||
|
126 |
+
( in_array( $pagenow, array( 'edit-tags.php' ) ) && isset( $_GET['action'] ) && $_GET['action'] == 'edit' ) ||
|
127 |
+
( in_array( $pagenow, array( 'admin.php' ) ) && isset( $_GET['page'] ) && in_array( $_GET['page'], array( 'pw-front-page', 'pw-search-page' ) ) )
|
128 |
+
) ) {
|
129 |
$load_editor = true;
|
130 |
}
|
131 |
+
if ( $load_editor ) {
|
132 |
+
add_action( 'admin_head', 'black_studio_tinymce_load_tiny_mce' );
|
133 |
+
add_filter( 'tiny_mce_before_init', 'black_studio_tinymce_init_editor', 20 );
|
134 |
+
add_action( 'admin_print_scripts', 'black_studio_tinymce_scripts' );
|
135 |
+
add_action( 'admin_print_styles', 'black_studio_tinymce_styles' );
|
136 |
+
add_action( 'admin_print_footer_scripts', 'black_studio_tinymce_footer_scripts' );
|
137 |
+
add_filter( 'atd_load_scripts', '__return_true'); // Compatibility with Jetpack After the deadline
|
138 |
}
|
139 |
}
|
140 |
|
141 |
/* Instantiate tinyMCE editor */
|
142 |
function black_studio_tinymce_load_tiny_mce() {
|
143 |
// Remove filters added from "After the deadline" plugin, to avoid conflicts
|
|
|
|
|
|
|
144 |
// Add support for thickbox media dialog
|
145 |
add_thickbox();
|
146 |
// New media modal dialog (WP 3.5+)
|
147 |
+
if ( function_exists( 'wp_enqueue_media' ) ) {
|
148 |
wp_enqueue_media();
|
149 |
}
|
150 |
}
|
151 |
|
152 |
/* TinyMCE setup customization */
|
153 |
+
function black_studio_tinymce_init_editor( $initArray ) {
|
154 |
+
global $pagenow;
|
155 |
// Remove WP fullscreen mode and set the native tinyMCE fullscreen mode
|
156 |
+
if ( get_bloginfo( 'version' ) < "3.3" ) {
|
157 |
$plugins = explode(',', $initArray['plugins']);
|
158 |
+
if ( isset( $plugins['wpfullscreen'] ) ) {
|
159 |
+
unset( $plugins['wpfullscreen'] );
|
160 |
}
|
161 |
+
if ( ! isset( $plugins['fullscreen'] ) ) {
|
162 |
$plugins[] = 'fullscreen';
|
163 |
}
|
164 |
+
$initArray['plugins'] = implode( ',', $plugins );
|
165 |
+
}
|
166 |
+
// Remove the "More" toolbar button (only in widget screen)
|
167 |
+
if ( $pagenow == "widgets.php" ) {
|
168 |
+
$initArray['theme_advanced_buttons1'] = str_replace( ',wp_more', '', $initArray['theme_advanced_buttons1'] );
|
169 |
}
|
|
|
|
|
170 |
// Do not remove linebreaks
|
171 |
$initArray['remove_linebreaks'] = false;
|
172 |
// Convert newline characters to BR tags
|
189 |
function black_studio_tinymce_scripts() {
|
190 |
global $black_studio_tinymce_widget_version, $black_studio_tinymce_widget_dev_mode;
|
191 |
wp_enqueue_script('media-upload');
|
192 |
+
if ( get_bloginfo( 'version' ) >= "3.3" ) {
|
193 |
+
wp_enqueue_script( 'wplink' );
|
194 |
+
wp_enqueue_script( 'wpdialogs-popup' );
|
195 |
+
wp_enqueue_script( 'black-studio-tinymce-widget', plugins_url('black-studio-tinymce-widget' . ($black_studio_tinymce_widget_dev_mode ? '.dev' : '' ) . '.js', __FILE__ ), array( 'jquery' ), $black_studio_tinymce_widget_version );
|
196 |
}
|
197 |
else {
|
198 |
+
wp_enqueue_script( 'black-studio-tinymce-widget-legacy', plugins_url('black-studio-tinymce-widget-legacy' . ($black_studio_tinymce_widget_dev_mode? '.dev' : '' ) . '.js', __FILE__ ), array( 'jquery' ), $black_studio_tinymce_widget_version );
|
199 |
}
|
200 |
}
|
201 |
|
202 |
/* Widget css loading */
|
203 |
function black_studio_tinymce_styles() {
|
204 |
global $black_studio_tinymce_widget_version;
|
205 |
+
if ( get_bloginfo( 'version' ) < "3.3" ) {
|
206 |
+
wp_enqueue_style( 'thickbox' );
|
207 |
}
|
208 |
else {
|
209 |
+
wp_enqueue_style( 'wp-jquery-ui-dialog' );
|
210 |
}
|
211 |
+
wp_print_styles( 'editor-buttons' );
|
212 |
+
wp_enqueue_style( 'black-studio-tinymce-widget', plugins_url( 'black-studio-tinymce-widget.css', __FILE__ ), array(), $black_studio_tinymce_widget_version );
|
213 |
}
|
214 |
|
215 |
|
216 |
/* Footer script */
|
217 |
function black_studio_tinymce_footer_scripts() {
|
218 |
// Setup for WP 3.1 and previous versions
|
219 |
+
if ( get_bloginfo( 'version' ) < "3.2" ) {
|
220 |
+
if ( function_exists( 'wp_tiny_mce' ) ) {
|
221 |
+
wp_tiny_mce( false, array() );
|
222 |
}
|
223 |
+
if ( function_exists( 'wp_tiny_mce_preload_dialogs' ) ) {
|
224 |
wp_tiny_mce_preload_dialogs();
|
225 |
}
|
226 |
}
|
227 |
// Setup for WP 3.2.x
|
228 |
+
else if ( get_bloginfo( 'version' ) < "3.3" ) {
|
229 |
+
if ( function_exists( 'wp_tiny_mce' ) ) {
|
230 |
+
wp_tiny_mce( false, array() );
|
231 |
}
|
232 |
+
if ( function_exists( 'wp_preload_dialogs') ) {
|
233 |
wp_preload_dialogs( array( 'plugins' => 'wpdialogs,wplink,wpfullscreen' ) );
|
234 |
}
|
235 |
}
|
236 |
// Setup for WP 3.3 - New Editor API
|
237 |
else {
|
238 |
+
wp_editor( '', 'black-studio-tinymce-widget' );
|
239 |
+
}
|
240 |
+
}
|
241 |
+
|
242 |
+
/* Support for Smilies */
|
243 |
+
add_filter( 'widget_text', 'black_studio_tinymce_apply_smilies_to_widget_text' );
|
244 |
+
function black_studio_tinymce_apply_smilies_to_widget_text( $text ) {
|
245 |
+
if ( get_option( 'use_smilies' ) ) {
|
246 |
+
$text = convert_smilies( $text );
|
247 |
}
|
248 |
+
return $text;
|
249 |
}
|
250 |
|
251 |
/* Hack needed to enable full media options when adding content form media library */
|
252 |
/* (this is done excluding post_id parameter in Thickbox iframe url) */
|
253 |
+
add_filter( '_upload_iframe_src', 'black_studio_tinymce_upload_iframe_src' );
|
254 |
+
function black_studio_tinymce_upload_iframe_src ( $upload_iframe_src ) {
|
255 |
global $pagenow;
|
256 |
+
if ( $pagenow == "widgets.php" || ( $pagenow == "admin-ajax.php" && isset ( $_POST['id_base'] ) && $_POST['id_base'] == "black-studio-tinymce" ) ) {
|
257 |
+
$upload_iframe_src = str_replace( 'post_id=0', '', $upload_iframe_src );
|
258 |
}
|
259 |
return $upload_iframe_src;
|
260 |
}
|
261 |
|
262 |
/* Hack for widgets accessibility mode */
|
263 |
+
add_filter( 'wp_default_editor', 'black_studio_tinymce_editor_accessibility_mode' );
|
264 |
function black_studio_tinymce_editor_accessibility_mode($editor) {
|
265 |
global $pagenow;
|
266 |
+
if ( $pagenow == "widgets.php" && isset( $_GET['editwidget'] ) && strpos( $_GET['editwidget'], 'black-studio-tinymce' ) === 0 ) {
|
267 |
$editor = 'html';
|
268 |
}
|
269 |
return $editor;
|
languages/black-studio-tinymce-widget-fi_FI.mo
ADDED
Binary file
|
languages/black-studio-tinymce-widget-fi_FI.po
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: Black Studio TinyMCE Widget\n"
|
4 |
+
"Report-Msgid-Bugs-To: \n"
|
5 |
+
"POT-Creation-Date: 2012-07-31 10:19+0100\n"
|
6 |
+
"PO-Revision-Date: 2013-07-23 22:34+0200\n"
|
7 |
+
"Last-Translator: Marco <marco@blackstudio.it>\n"
|
8 |
+
"Language-Team: Timo Leiniö <timo@wpopas.fi>\n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"X-Poedit-KeywordsList: _;gettext;gettext_noop;__\n"
|
13 |
+
"X-Poedit-Basepath: ..\n"
|
14 |
+
"X-Poedit-SourceCharset: UTF-8\n"
|
15 |
+
"Language: fi\n"
|
16 |
+
"X-Generator: Poedit 1.5.7\n"
|
17 |
+
"X-Poedit-SearchPath-0: .\n"
|
18 |
+
|
19 |
+
#: black-studio-tinymce-widget.php:19
|
20 |
+
msgid "Arbitrary text or HTML with visual editor"
|
21 |
+
msgstr "Lisää sisältöä visuaalisella editorilla"
|
22 |
+
|
23 |
+
#: black-studio-tinymce-widget.php:21
|
24 |
+
msgid "Black Studio TinyMCE"
|
25 |
+
msgstr "Black Studio TinyMCE"
|
26 |
+
|
27 |
+
#: black-studio-tinymce-widget.php:79
|
28 |
+
msgid "Donate"
|
29 |
+
msgstr "Lahjoita"
|
30 |
+
|
31 |
+
#: black-studio-tinymce-widget.php:79
|
32 |
+
msgid "Support"
|
33 |
+
msgstr "Tue"
|
34 |
+
|
35 |
+
#: black-studio-tinymce-widget.php:79
|
36 |
+
msgid "Follow"
|
37 |
+
msgstr "Seuraa"
|
readme.txt
CHANGED
@@ -3,8 +3,8 @@ Contributors: marcochiesi, thedarkmist
|
|
3 |
Donate link: http://www.blackstudio.it/en/wordpress-plugins/black-studio-tinymce-widget/
|
4 |
Tags: wysiwyg, widget, tinymce, editor, image, media, rich text, rich text editor, visual editor, wysiwyg editor, tinymce editor, widget editor, html editor, wysiwyg widget, html widget, editor widget, text widget, rich text widget, enhanced text widget, tinymce widget, visual widget, image widget, media widget
|
5 |
Requires at least: 3.0
|
6 |
-
Tested up to: 3.
|
7 |
-
Stable tag: 1.
|
8 |
|
9 |
Adds a WYSIWYG widget based on the standard TinyMCE WordPress visual editor.
|
10 |
|
@@ -68,6 +68,18 @@ Alternatively, if you don't want to use `[embed]` shortcode, ensure that the URL
|
|
68 |
|
69 |
== Changelog ==
|
70 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
= 1.2.0 =
|
72 |
* Fixed issue with Wordpress widgets accessibility mode
|
73 |
* Fixed compatibility issue with WPML plugin generating an error in debug mode
|
@@ -129,7 +141,7 @@ Alternatively, if you don't want to use `[embed]` shortcode, ensure that the URL
|
|
129 |
* Forced TinyMCE editor to not automatically add/remove paragraph tags when switching to HTML mode (you may need to re-edit your widgets to adjust linebreaks, if you were using multiple paragraphs)
|
130 |
|
131 |
= 0.6.4 =
|
132 |
-
* Fixed compatibility issue with
|
133 |
* Optimization of javascript/css loading
|
134 |
|
135 |
= 0.6.3 =
|
3 |
Donate link: http://www.blackstudio.it/en/wordpress-plugins/black-studio-tinymce-widget/
|
4 |
Tags: wysiwyg, widget, tinymce, editor, image, media, rich text, rich text editor, visual editor, wysiwyg editor, tinymce editor, widget editor, html editor, wysiwyg widget, html widget, editor widget, text widget, rich text widget, enhanced text widget, tinymce widget, visual widget, image widget, media widget
|
5 |
Requires at least: 3.0
|
6 |
+
Tested up to: 3.9
|
7 |
+
Stable tag: 1.3.0
|
8 |
|
9 |
Adds a WYSIWYG widget based on the standard TinyMCE WordPress visual editor.
|
10 |
|
68 |
|
69 |
== Changelog ==
|
70 |
|
71 |
+
= 1.3.0 =
|
72 |
+
* Added support for smilies conversion (based on the general Wordpress option)
|
73 |
+
* Updated styling to match the new default Wordpress editor appearence
|
74 |
+
* Refactoring of PHP and JS code to be compliant with Wordpress coding standard
|
75 |
+
* Fixed compatibility issue with Wordpress 3.9 alpha and TinyMCE 4.0
|
76 |
+
* Fixed compatibility issue with Jetpack / After the Deadline plugin
|
77 |
+
* Fixed editor behavior on widget title clicks
|
78 |
+
* Fixed CSS issue affecting Firefox on Wordpress 3.8
|
79 |
+
* Added finnish translation (Contributor: Timo Leiniö)
|
80 |
+
* Better handling of "More tag" button
|
81 |
+
* Included JS dev version
|
82 |
+
|
83 |
= 1.2.0 =
|
84 |
* Fixed issue with Wordpress widgets accessibility mode
|
85 |
* Fixed compatibility issue with WPML plugin generating an error in debug mode
|
141 |
* Forced TinyMCE editor to not automatically add/remove paragraph tags when switching to HTML mode (you may need to re-edit your widgets to adjust linebreaks, if you were using multiple paragraphs)
|
142 |
|
143 |
= 0.6.4 =
|
144 |
+
* Fixed compatibility issue with Jetpack / After the Deadline plugin
|
145 |
* Optimization of javascript/css loading
|
146 |
|
147 |
= 0.6.3 =
|