Version Description
- Add minor security updates.
- Update readme, thumbnails and other minor descriptors.
Download this release
Release Info
| Developer | peterchester |
| Plugin | |
| Version | 3.3.1 |
| Comparing to | |
| See all releases | |
Code changes from version 3.3 to 3.3.1
- image-widget-fix-browser-upload.js +0 -83
- image-widget.js +82 -1
- image-widget.php +28 -33
- readme.txt +9 -8
- screenshot-1.png +0 -0
- screenshot-2.png +0 -0
- screenshot-3.png +0 -0
- views/widget-admin.php +9 -0
- views/widget.php +15 -3
image-widget-fix-browser-upload.js
DELETED
|
@@ -1,83 +0,0 @@
|
|
| 1 |
-
jQuery(document).ready(function() {
|
| 2 |
-
|
| 3 |
-
jQuery('form#image-form').submit(function(){
|
| 4 |
-
var wp_ref = jQuery("input[name='_wp_http_referer']").val();
|
| 5 |
-
// _wp_http_referer only contains the widget_sp_image if the
|
| 6 |
-
// previous action was pressing the add image link in an Image Widget
|
| 7 |
-
// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/String/indexOf
|
| 8 |
-
if( wp_ref.indexOf('widget_sp_image') != -1 ) {
|
| 9 |
-
var parsed_url = parse_url(wp_ref);
|
| 10 |
-
var nw_action_url = jQuery('form#image-form').attr('action');
|
| 11 |
-
|
| 12 |
-
// make sure the widget_sp_image is not part of the form action url
|
| 13 |
-
// so we will add it to fix the context
|
| 14 |
-
if( nw_action_url.indexOf('widget_sp_image') == -1 ) {
|
| 15 |
-
nw_action_url = nw_action_url + '&' + parsed_url.query;
|
| 16 |
-
jQuery('form#image-form').attr('action', nw_action_url);
|
| 17 |
-
}
|
| 18 |
-
}
|
| 19 |
-
return true;
|
| 20 |
-
});
|
| 21 |
-
});
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
/*
|
| 25 |
-
* Thanks to http://github.com/kvz/phpjs/raw/master/functions/url/parse_url.js
|
| 26 |
-
*/
|
| 27 |
-
function parse_url (str, component) {
|
| 28 |
-
// http://kevin.vanzonneveld.net
|
| 29 |
-
// + original by: Steven Levithan (http://blog.stevenlevithan.com)
|
| 30 |
-
// + reimplemented by: Brett Zamir (http://brett-zamir.me)
|
| 31 |
-
// + input by: Lorenzo Pisani
|
| 32 |
-
// + input by: Tony
|
| 33 |
-
// + improved by: Brett Zamir (http://brett-zamir.me)
|
| 34 |
-
// % note: Based on http://stevenlevithan.com/demo/parseuri/js/assets/parseuri.js
|
| 35 |
-
// % note: blog post at http://blog.stevenlevithan.com/archives/parseuri
|
| 36 |
-
// % note: demo at http://stevenlevithan.com/demo/parseuri/js/assets/parseuri.js
|
| 37 |
-
// % note: Does not replace invalid characters with '_' as in PHP, nor does it return false with
|
| 38 |
-
// % note: a seriously malformed URL.
|
| 39 |
-
// % note: Besides function name, is essentially the same as parseUri as well as our allowing
|
| 40 |
-
// % note: an extra slash after the scheme/protocol (to allow file:/// as in PHP)
|
| 41 |
-
// * example 1: parse_url('http://username:password@hostname/path?arg=value#anchor');
|
| 42 |
-
// * returns 1: {scheme: 'http', host: 'hostname', user: 'username', pass: 'password', path: '/path', query: 'arg=value', fragment: 'anchor'}
|
| 43 |
-
var key = ['source', 'scheme', 'authority', 'userInfo', 'user', 'pass', 'host', 'port',
|
| 44 |
-
'relative', 'path', 'directory', 'file', 'query', 'fragment'],
|
| 45 |
-
ini = (this.php_js && this.php_js.ini) || {},
|
| 46 |
-
mode = (ini['phpjs.parse_url.mode'] &&
|
| 47 |
-
ini['phpjs.parse_url.mode'].local_value) || 'php',
|
| 48 |
-
parser = {
|
| 49 |
-
php: /^(?:([^:\/?#]+):)?(?:\/\/()(?:(?:()(?:([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?()(?:(()(?:(?:[^?#\/]*\/)*)()(?:[^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
|
| 50 |
-
strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
|
| 51 |
-
loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/\/?)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ // Added one optional slash to post-scheme to catch file:/// (should restrict this)
|
| 52 |
-
};
|
| 53 |
-
|
| 54 |
-
var m = parser[mode].exec(str),
|
| 55 |
-
uri = {},
|
| 56 |
-
i = 14;
|
| 57 |
-
while (i--) {
|
| 58 |
-
if (m[i]) {
|
| 59 |
-
uri[key[i]] = m[i];
|
| 60 |
-
}
|
| 61 |
-
}
|
| 62 |
-
|
| 63 |
-
if (component) {
|
| 64 |
-
return uri[component.replace('PHP_URL_', '').toLowerCase()];
|
| 65 |
-
}
|
| 66 |
-
if (mode !== 'php') {
|
| 67 |
-
var name = (ini['phpjs.parse_url.queryKey'] &&
|
| 68 |
-
ini['phpjs.parse_url.queryKey'].local_value) || 'queryKey';
|
| 69 |
-
parser = /(?:^|&)([^&=]*)=?([^&]*)/g;
|
| 70 |
-
uri[name] = {};
|
| 71 |
-
uri[key[12]].replace(parser, function ($0, $1, $2) {
|
| 72 |
-
if ($1) {uri[name][$1] = $2;}
|
| 73 |
-
});
|
| 74 |
-
}
|
| 75 |
-
delete uri.source;
|
| 76 |
-
return uri;
|
| 77 |
-
}
|
| 78 |
-
|
| 79 |
-
|
| 80 |
-
|
| 81 |
-
|
| 82 |
-
/* /wp-admin/media-upload.php?type=image&widget_id=widget_sp_image-11& */
|
| 83 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
image-widget.js
CHANGED
|
@@ -114,4 +114,85 @@
|
|
| 114 |
});
|
| 115 |
});
|
| 116 |
|
| 117 |
-
})(jQuery);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 114 |
});
|
| 115 |
});
|
| 116 |
|
| 117 |
+
})(jQuery);
|
| 118 |
+
|
| 119 |
+
/* Fix browser upload */
|
| 120 |
+
|
| 121 |
+
jQuery(document).ready(function() {
|
| 122 |
+
|
| 123 |
+
jQuery('form#image-form').submit(function(){
|
| 124 |
+
var wp_ref = jQuery("input[name='_wp_http_referer']").val();
|
| 125 |
+
// _wp_http_referer only contains the widget_sp_image if the
|
| 126 |
+
// previous action was pressing the add image link in an Image Widget
|
| 127 |
+
// https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objects/String/indexOf
|
| 128 |
+
if( wp_ref.indexOf('widget_sp_image') != -1 ) {
|
| 129 |
+
var parsed_url = parse_url(wp_ref);
|
| 130 |
+
var nw_action_url = jQuery('form#image-form').attr('action');
|
| 131 |
+
|
| 132 |
+
// make sure the widget_sp_image is not part of the form action url
|
| 133 |
+
// so we will add it to fix the context
|
| 134 |
+
if( nw_action_url.indexOf('widget_sp_image') == -1 ) {
|
| 135 |
+
nw_action_url = nw_action_url + '&' + parsed_url.query;
|
| 136 |
+
jQuery('form#image-form').attr('action', nw_action_url);
|
| 137 |
+
}
|
| 138 |
+
}
|
| 139 |
+
return true;
|
| 140 |
+
});
|
| 141 |
+
});
|
| 142 |
+
|
| 143 |
+
|
| 144 |
+
/*
|
| 145 |
+
* Thanks to http://github.com/kvz/phpjs/raw/master/functions/url/parse_url.js
|
| 146 |
+
*/
|
| 147 |
+
function parse_url (str, component) {
|
| 148 |
+
// http://kevin.vanzonneveld.net
|
| 149 |
+
// + original by: Steven Levithan (http://blog.stevenlevithan.com)
|
| 150 |
+
// + reimplemented by: Brett Zamir (http://brett-zamir.me)
|
| 151 |
+
// + input by: Lorenzo Pisani
|
| 152 |
+
// + input by: Tony
|
| 153 |
+
// + improved by: Brett Zamir (http://brett-zamir.me)
|
| 154 |
+
// % note: Based on http://stevenlevithan.com/demo/parseuri/js/assets/parseuri.js
|
| 155 |
+
// % note: blog post at http://blog.stevenlevithan.com/archives/parseuri
|
| 156 |
+
// % note: demo at http://stevenlevithan.com/demo/parseuri/js/assets/parseuri.js
|
| 157 |
+
// % note: Does not replace invalid characters with '_' as in PHP, nor does it return false with
|
| 158 |
+
// % note: a seriously malformed URL.
|
| 159 |
+
// % note: Besides function name, is essentially the same as parseUri as well as our allowing
|
| 160 |
+
// % note: an extra slash after the scheme/protocol (to allow file:/// as in PHP)
|
| 161 |
+
// * example 1: parse_url('http://username:password@hostname/path?arg=value#anchor');
|
| 162 |
+
// * returns 1: {scheme: 'http', host: 'hostname', user: 'username', pass: 'password', path: '/path', query: 'arg=value', fragment: 'anchor'}
|
| 163 |
+
var key = ['source', 'scheme', 'authority', 'userInfo', 'user', 'pass', 'host', 'port',
|
| 164 |
+
'relative', 'path', 'directory', 'file', 'query', 'fragment'],
|
| 165 |
+
ini = (this.php_js && this.php_js.ini) || {},
|
| 166 |
+
mode = (ini['phpjs.parse_url.mode'] &&
|
| 167 |
+
ini['phpjs.parse_url.mode'].local_value) || 'php',
|
| 168 |
+
parser = {
|
| 169 |
+
php: /^(?:([^:\/?#]+):)?(?:\/\/()(?:(?:()(?:([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?()(?:(()(?:(?:[^?#\/]*\/)*)()(?:[^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
|
| 170 |
+
strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
|
| 171 |
+
loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/\/?)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ // Added one optional slash to post-scheme to catch file:/// (should restrict this)
|
| 172 |
+
};
|
| 173 |
+
|
| 174 |
+
var m = parser[mode].exec(str),
|
| 175 |
+
uri = {},
|
| 176 |
+
i = 14;
|
| 177 |
+
while (i--) {
|
| 178 |
+
if (m[i]) {
|
| 179 |
+
uri[key[i]] = m[i];
|
| 180 |
+
}
|
| 181 |
+
}
|
| 182 |
+
|
| 183 |
+
if (component) {
|
| 184 |
+
return uri[component.replace('PHP_URL_', '').toLowerCase()];
|
| 185 |
+
}
|
| 186 |
+
if (mode !== 'php') {
|
| 187 |
+
var name = (ini['phpjs.parse_url.queryKey'] &&
|
| 188 |
+
ini['phpjs.parse_url.queryKey'].local_value) || 'queryKey';
|
| 189 |
+
parser = /(?:^|&)([^&=]*)=?([^&]*)/g;
|
| 190 |
+
uri[name] = {};
|
| 191 |
+
uri[key[12]].replace(parser, function ($0, $1, $2) {
|
| 192 |
+
if ($1) {uri[name][$1] = $2;}
|
| 193 |
+
});
|
| 194 |
+
}
|
| 195 |
+
delete uri.source;
|
| 196 |
+
return uri;
|
| 197 |
+
}
|
| 198 |
+
/* /wp-admin/media-upload.php?type=image&widget_id=widget_sp_image-11& */
|
image-widget.php
CHANGED
|
@@ -4,10 +4,14 @@ Plugin Name: Image Widget
|
|
| 4 |
Plugin URI: http://wordpress.org/extend/plugins/image-widget/
|
| 5 |
Description: Simple image widget that uses native Wordpress upload thickbox to add image widgets to your site.
|
| 6 |
Author: Modern Tribe, Inc.
|
| 7 |
-
Version: 3.3
|
| 8 |
-
Author URI: http://tri.be
|
| 9 |
*/
|
| 10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
// Load the widget on widgets_init
|
| 12 |
function tribe_load_image_widget() {
|
| 13 |
register_widget('Tribe_Image_Widget');
|
|
@@ -16,8 +20,6 @@ add_action('widgets_init', 'tribe_load_image_widget');
|
|
| 16 |
|
| 17 |
/**
|
| 18 |
* Tribe_Image_Widget class
|
| 19 |
-
*
|
| 20 |
-
* @author Shane & Peter, Inc. (Peter Chester)
|
| 21 |
**/
|
| 22 |
class Tribe_Image_Widget extends WP_Widget {
|
| 23 |
|
|
@@ -26,8 +28,7 @@ class Tribe_Image_Widget extends WP_Widget {
|
|
| 26 |
/**
|
| 27 |
* SP Image Widget constructor
|
| 28 |
*
|
| 29 |
-
* @
|
| 30 |
-
* @author Shane & Peter, Inc. (Peter Chester)
|
| 31 |
*/
|
| 32 |
function Tribe_Image_Widget() {
|
| 33 |
$this->loadPluginTextDomain();
|
|
@@ -57,8 +58,7 @@ class Tribe_Image_Widget extends WP_Widget {
|
|
| 57 |
|
| 58 |
function register_scripts_and_styles() {
|
| 59 |
$dir = plugins_url('/', __FILE__);
|
| 60 |
-
wp_register_script( 'tribe-image-widget', $dir . 'image-widget.js', array('thickbox'), false, true );
|
| 61 |
-
wp_register_script( 'fix-browser-upload', $dir . 'image-widget-fix-browser-upload.js', array('jquery'), false, true );
|
| 62 |
}
|
| 63 |
|
| 64 |
function fix_async_upload_image() {
|
|
@@ -79,7 +79,7 @@ class Tribe_Image_Widget extends WP_Widget {
|
|
| 79 |
* @param int $width desired width of image (optional)
|
| 80 |
* @param int $height desired height of image (optional)
|
| 81 |
* @return string URL
|
| 82 |
-
* @author
|
| 83 |
*/
|
| 84 |
function get_image_url( $id, $width=false, $height=false ) {
|
| 85 |
|
|
@@ -91,10 +91,11 @@ class Tribe_Image_Widget extends WP_Widget {
|
|
| 91 |
if ($width && $height) {
|
| 92 |
$uploads = wp_upload_dir();
|
| 93 |
$imgpath = $uploads['basedir'].'/'.$attachment['file'];
|
| 94 |
-
|
|
|
|
|
|
|
| 95 |
$image = image_resize( $imgpath, $width, $height );
|
| 96 |
if ( $image && !is_wp_error( $image ) ) {
|
| 97 |
-
error_log( is_wp_error($image) );
|
| 98 |
$image = path_join( dirname($attachment_url), basename($image) );
|
| 99 |
} else {
|
| 100 |
$image = $attachment_url;
|
|
@@ -111,8 +112,7 @@ class Tribe_Image_Widget extends WP_Widget {
|
|
| 111 |
/**
|
| 112 |
* Test context to see if the uploader is being used for the image widget or for other regular uploads
|
| 113 |
*
|
| 114 |
-
* @
|
| 115 |
-
* @author Shane & Peter, Inc. (Peter Chester)
|
| 116 |
*/
|
| 117 |
function is_sp_widget_context() {
|
| 118 |
if ( isset($_SERVER['HTTP_REFERER']) && strpos($_SERVER['HTTP_REFERER'],$this->id_base) !== false ) {
|
|
@@ -131,8 +131,7 @@ class Tribe_Image_Widget extends WP_Widget {
|
|
| 131 |
* @param string $translated_text text that has already been translated (normally passed straight through)
|
| 132 |
* @param string $source_text text as it is in the code
|
| 133 |
* @param string $domain domain of the text
|
| 134 |
-
* @
|
| 135 |
-
* @author Shane & Peter, Inc. (Peter Chester)
|
| 136 |
*/
|
| 137 |
function replace_text_in_thickbox($translated_text, $source_text, $domain) {
|
| 138 |
if ( $this->is_sp_widget_context() ) {
|
|
@@ -154,7 +153,7 @@ class Tribe_Image_Widget extends WP_Widget {
|
|
| 154 |
* @param string $url
|
| 155 |
* @param array $size
|
| 156 |
* @return string javascript array of attachment url and id or just the url
|
| 157 |
-
* @author
|
| 158 |
*/
|
| 159 |
function image_send_to_editor( $html, $id, $caption, $title, $align, $url, $size, $alt = '' ) {
|
| 160 |
// Normally, media uploader return an HTML string (in this case, typically a complete image tag surrounded by a caption).
|
|
@@ -166,14 +165,14 @@ class Tribe_Image_Widget extends WP_Widget {
|
|
| 166 |
<script type="text/javascript">
|
| 167 |
// send image variables back to opener
|
| 168 |
var win = window.dialogArguments || opener || parent || top;
|
| 169 |
-
win.IW_html = '<?php echo addslashes($html) ?>';
|
| 170 |
-
win.IW_img_id = '<?php echo $id ?>';
|
| 171 |
-
win.IW_alt = '<?php echo addslashes($alt) ?>';
|
| 172 |
-
win.IW_caption = '<?php echo addslashes($caption) ?>';
|
| 173 |
-
win.IW_title = '<?php echo addslashes($title) ?>';
|
| 174 |
-
win.IW_align = '<?php echo $align ?>';
|
| 175 |
-
win.IW_url = '<?php echo $url ?>';
|
| 176 |
-
win.IW_size = '<?php echo $size ?>';
|
| 177 |
</script>
|
| 178 |
<?php
|
| 179 |
}
|
|
@@ -184,8 +183,7 @@ class Tribe_Image_Widget extends WP_Widget {
|
|
| 184 |
* Remove from url tab until that functionality is added to widgets.
|
| 185 |
*
|
| 186 |
* @param array $tabs
|
| 187 |
-
* @
|
| 188 |
-
* @author Shane & Peter, Inc. (Peter Chester)
|
| 189 |
*/
|
| 190 |
function media_upload_tabs($tabs) {
|
| 191 |
if ( $this->is_sp_widget_context() ) {
|
|
@@ -200,8 +198,7 @@ class Tribe_Image_Widget extends WP_Widget {
|
|
| 200 |
*
|
| 201 |
* @param array $args
|
| 202 |
* @param array $instance
|
| 203 |
-
* @
|
| 204 |
-
* @author Shane & Peter, Inc. (Peter Chester)
|
| 205 |
*/
|
| 206 |
function widget( $args, $instance ) {
|
| 207 |
extract( $args );
|
|
@@ -217,7 +214,7 @@ class Tribe_Image_Widget extends WP_Widget {
|
|
| 217 |
* @param object $new_instance Widget Instance
|
| 218 |
* @param object $old_instance Widget Instance
|
| 219 |
* @return object
|
| 220 |
-
* @author
|
| 221 |
*/
|
| 222 |
function update( $new_instance, $old_instance ) {
|
| 223 |
$instance = $old_instance;
|
|
@@ -248,8 +245,7 @@ class Tribe_Image_Widget extends WP_Widget {
|
|
| 248 |
* Form UI
|
| 249 |
*
|
| 250 |
* @param object $instance Widget Instance
|
| 251 |
-
* @
|
| 252 |
-
* @author Shane & Peter, Inc. (Peter Chester)
|
| 253 |
*/
|
| 254 |
function form( $instance ) {
|
| 255 |
|
|
@@ -271,8 +267,7 @@ class Tribe_Image_Widget extends WP_Widget {
|
|
| 271 |
/**
|
| 272 |
* Admin header css
|
| 273 |
*
|
| 274 |
-
* @
|
| 275 |
-
* @author Shane & Peter, Inc. (Peter Chester)
|
| 276 |
*/
|
| 277 |
function admin_head() {
|
| 278 |
?>
|
| 4 |
Plugin URI: http://wordpress.org/extend/plugins/image-widget/
|
| 5 |
Description: Simple image widget that uses native Wordpress upload thickbox to add image widgets to your site.
|
| 6 |
Author: Modern Tribe, Inc.
|
| 7 |
+
Version: 3.3.1
|
| 8 |
+
Author URI: http://tri.be
|
| 9 |
*/
|
| 10 |
|
| 11 |
+
// Block direct requests
|
| 12 |
+
if ( !defined('ABSPATH') )
|
| 13 |
+
die('-1');
|
| 14 |
+
|
| 15 |
// Load the widget on widgets_init
|
| 16 |
function tribe_load_image_widget() {
|
| 17 |
register_widget('Tribe_Image_Widget');
|
| 20 |
|
| 21 |
/**
|
| 22 |
* Tribe_Image_Widget class
|
|
|
|
|
|
|
| 23 |
**/
|
| 24 |
class Tribe_Image_Widget extends WP_Widget {
|
| 25 |
|
| 28 |
/**
|
| 29 |
* SP Image Widget constructor
|
| 30 |
*
|
| 31 |
+
* @author Modern Tribe, Inc. (Peter Chester)
|
|
|
|
| 32 |
*/
|
| 33 |
function Tribe_Image_Widget() {
|
| 34 |
$this->loadPluginTextDomain();
|
| 58 |
|
| 59 |
function register_scripts_and_styles() {
|
| 60 |
$dir = plugins_url('/', __FILE__);
|
| 61 |
+
wp_register_script( 'tribe-image-widget', $dir . 'image-widget.js', array('jquery','thickbox'), false, true );
|
|
|
|
| 62 |
}
|
| 63 |
|
| 64 |
function fix_async_upload_image() {
|
| 79 |
* @param int $width desired width of image (optional)
|
| 80 |
* @param int $height desired height of image (optional)
|
| 81 |
* @return string URL
|
| 82 |
+
* @author Modern Tribe, Inc. (Peter Chester)
|
| 83 |
*/
|
| 84 |
function get_image_url( $id, $width=false, $height=false ) {
|
| 85 |
|
| 91 |
if ($width && $height) {
|
| 92 |
$uploads = wp_upload_dir();
|
| 93 |
$imgpath = $uploads['basedir'].'/'.$attachment['file'];
|
| 94 |
+
if (WP_DEBUG) {
|
| 95 |
+
error_log(__CLASS__.'->'.__FUNCTION__.'() $imgpath = '.$imgpath);
|
| 96 |
+
}
|
| 97 |
$image = image_resize( $imgpath, $width, $height );
|
| 98 |
if ( $image && !is_wp_error( $image ) ) {
|
|
|
|
| 99 |
$image = path_join( dirname($attachment_url), basename($image) );
|
| 100 |
} else {
|
| 101 |
$image = $attachment_url;
|
| 112 |
/**
|
| 113 |
* Test context to see if the uploader is being used for the image widget or for other regular uploads
|
| 114 |
*
|
| 115 |
+
* @author Modern Tribe, Inc. (Peter Chester)
|
|
|
|
| 116 |
*/
|
| 117 |
function is_sp_widget_context() {
|
| 118 |
if ( isset($_SERVER['HTTP_REFERER']) && strpos($_SERVER['HTTP_REFERER'],$this->id_base) !== false ) {
|
| 131 |
* @param string $translated_text text that has already been translated (normally passed straight through)
|
| 132 |
* @param string $source_text text as it is in the code
|
| 133 |
* @param string $domain domain of the text
|
| 134 |
+
* @author Modern Tribe, Inc. (Peter Chester)
|
|
|
|
| 135 |
*/
|
| 136 |
function replace_text_in_thickbox($translated_text, $source_text, $domain) {
|
| 137 |
if ( $this->is_sp_widget_context() ) {
|
| 153 |
* @param string $url
|
| 154 |
* @param array $size
|
| 155 |
* @return string javascript array of attachment url and id or just the url
|
| 156 |
+
* @author Modern Tribe, Inc. (Peter Chester)
|
| 157 |
*/
|
| 158 |
function image_send_to_editor( $html, $id, $caption, $title, $align, $url, $size, $alt = '' ) {
|
| 159 |
// Normally, media uploader return an HTML string (in this case, typically a complete image tag surrounded by a caption).
|
| 165 |
<script type="text/javascript">
|
| 166 |
// send image variables back to opener
|
| 167 |
var win = window.dialogArguments || opener || parent || top;
|
| 168 |
+
win.IW_html = '<?php echo addslashes($html); ?>';
|
| 169 |
+
win.IW_img_id = '<?php echo $id; ?>';
|
| 170 |
+
win.IW_alt = '<?php echo addslashes($alt); ?>';
|
| 171 |
+
win.IW_caption = '<?php echo addslashes($caption); ?>';
|
| 172 |
+
win.IW_title = '<?php echo addslashes($title); ?>';
|
| 173 |
+
win.IW_align = '<?php echo esc_attr($align); ?>';
|
| 174 |
+
win.IW_url = '<?php echo esc_url($url); ?>';
|
| 175 |
+
win.IW_size = '<?php echo esc_attr($size); ?>';
|
| 176 |
</script>
|
| 177 |
<?php
|
| 178 |
}
|
| 183 |
* Remove from url tab until that functionality is added to widgets.
|
| 184 |
*
|
| 185 |
* @param array $tabs
|
| 186 |
+
* @author Modern Tribe, Inc. (Peter Chester)
|
|
|
|
| 187 |
*/
|
| 188 |
function media_upload_tabs($tabs) {
|
| 189 |
if ( $this->is_sp_widget_context() ) {
|
| 198 |
*
|
| 199 |
* @param array $args
|
| 200 |
* @param array $instance
|
| 201 |
+
* @author Modern Tribe, Inc. (Peter Chester)
|
|
|
|
| 202 |
*/
|
| 203 |
function widget( $args, $instance ) {
|
| 204 |
extract( $args );
|
| 214 |
* @param object $new_instance Widget Instance
|
| 215 |
* @param object $old_instance Widget Instance
|
| 216 |
* @return object
|
| 217 |
+
* @author Modern Tribe, Inc. (Peter Chester)
|
| 218 |
*/
|
| 219 |
function update( $new_instance, $old_instance ) {
|
| 220 |
$instance = $old_instance;
|
| 245 |
* Form UI
|
| 246 |
*
|
| 247 |
* @param object $instance Widget Instance
|
| 248 |
+
* @author Modern Tribe, Inc. (Peter Chester)
|
|
|
|
| 249 |
*/
|
| 250 |
function form( $instance ) {
|
| 251 |
|
| 267 |
/**
|
| 268 |
* Admin header css
|
| 269 |
*
|
| 270 |
+
* @author Modern Tribe, Inc. (Peter Chester)
|
|
|
|
| 271 |
*/
|
| 272 |
function admin_head() {
|
| 273 |
?>
|
readme.txt
CHANGED
|
@@ -1,10 +1,10 @@
|
|
| 1 |
=== Image Widget ===
|
| 2 |
-
Contributors:
|
| 3 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=4BSPTNFFY6AL6
|
| 4 |
Tags: widget, image, ad, banner, simple, upload, sidebar, admin, thickbox, resize
|
| 5 |
Requires at least: 3.0
|
| 6 |
-
Tested up to: 3.3
|
| 7 |
-
Stable tag: 3.3
|
| 8 |
|
| 9 |
== Description ==
|
| 10 |
|
|
@@ -25,16 +25,12 @@ This plugin is actively supported and we will do our best to help you. In return
|
|
| 25 |
1. Help Out. If you see a question on the forum you can help with or have a great idea and want to code it up and submit a patch, that would be just plain awesome and we will shower your with praise. Might even be a good way to get to know us and lead to some paid work if you freelance. Also, we are happy to post translations if you provide them.
|
| 26 |
1. Donate - if this is generating enough revenue to support our time it makes all the difference in the world
|
| 27 |
https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=4BSPTNFFY6AL6
|
|
|
|
| 28 |
|
| 29 |
== Installation ==
|
| 30 |
|
| 31 |
= Install =
|
| 32 |
|
| 33 |
-
1. Unzip the `image-widget.zip` file.
|
| 34 |
-
1. Upload the the `image-widget` folder (not just the files in it!) to your `wp-contents/plugins` folder. If you're using FTP, use 'binary' mode.
|
| 35 |
-
|
| 36 |
-
= Activate =
|
| 37 |
-
|
| 38 |
1. In your WordPress administration, go to the Plugins page
|
| 39 |
1. Activate the Image Widget plugin and a subpage for the plugin will appear
|
| 40 |
in your Manage menu.
|
|
@@ -68,6 +64,11 @@ function my_template_filter($template) {
|
|
| 68 |
|
| 69 |
== Changelog ==
|
| 70 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 71 |
= 3.3 =
|
| 72 |
|
| 73 |
* Fix to allow the widget to work in the non-async (browser) uploader. Props Bjorn Wijers
|
| 1 |
=== Image Widget ===
|
| 2 |
+
Contributors: ModernTribe, peterchester, mattwiebe, Produced by Modern Tribe, Inc.
|
| 3 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=4BSPTNFFY6AL6
|
| 4 |
Tags: widget, image, ad, banner, simple, upload, sidebar, admin, thickbox, resize
|
| 5 |
Requires at least: 3.0
|
| 6 |
+
Tested up to: 3.3.1
|
| 7 |
+
Stable tag: 3.3.1
|
| 8 |
|
| 9 |
== Description ==
|
| 10 |
|
| 25 |
1. Help Out. If you see a question on the forum you can help with or have a great idea and want to code it up and submit a patch, that would be just plain awesome and we will shower your with praise. Might even be a good way to get to know us and lead to some paid work if you freelance. Also, we are happy to post translations if you provide them.
|
| 26 |
1. Donate - if this is generating enough revenue to support our time it makes all the difference in the world
|
| 27 |
https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=4BSPTNFFY6AL6
|
| 28 |
+
1. Support us by buying our Premium plugins. In particular, check out our Events Calendar Pro http://tri.be/wordpress-events-calendar-pro/
|
| 29 |
|
| 30 |
== Installation ==
|
| 31 |
|
| 32 |
= Install =
|
| 33 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 34 |
1. In your WordPress administration, go to the Plugins page
|
| 35 |
1. Activate the Image Widget plugin and a subpage for the plugin will appear
|
| 36 |
in your Manage menu.
|
| 64 |
|
| 65 |
== Changelog ==
|
| 66 |
|
| 67 |
+
= 3.3.1 =
|
| 68 |
+
|
| 69 |
+
* Add minor security updates.
|
| 70 |
+
* Update readme, thumbnails and other minor descriptors.
|
| 71 |
+
|
| 72 |
= 3.3 =
|
| 73 |
|
| 74 |
* Fix to allow the widget to work in the non-async (browser) uploader. Props Bjorn Wijers
|
screenshot-1.png
CHANGED
|
Binary file
|
screenshot-2.png
CHANGED
|
Binary file
|
screenshot-3.png
CHANGED
|
Binary file
|
views/widget-admin.php
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:', $this->pluginDomain); ?></label>
|
| 2 |
<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(strip_tags($instance['title'])); ?>" /></p>
|
| 3 |
|
| 1 |
+
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Widget admin template
|
| 4 |
+
*/
|
| 5 |
+
|
| 6 |
+
// Block direct requests
|
| 7 |
+
if ( !defined('ABSPATH') )
|
| 8 |
+
die('-1');
|
| 9 |
+
?>
|
| 10 |
<p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:', $this->pluginDomain); ?></label>
|
| 11 |
<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(strip_tags($instance['title'])); ?>" /></p>
|
| 12 |
|
views/widget.php
CHANGED
|
@@ -1,12 +1,21 @@
|
|
| 1 |
<?php
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2 |
echo $before_widget;
|
| 3 |
-
if ( !empty( $title ) ) { echo $before_title . $title . $after_title; }
|
| 4 |
if ( !empty( $image ) ) {
|
| 5 |
if ( $link ) {
|
| 6 |
-
echo '<a class="'.$this->widget_options['classname'].'-image-link" href="'
|
| 7 |
}
|
| 8 |
if ( $imageurl ) {
|
| 9 |
-
echo
|
| 10 |
if ( !empty( $width ) && is_numeric( $width ) ) {
|
| 11 |
echo "max-width: {$width}px;";
|
| 12 |
}
|
|
@@ -15,11 +24,14 @@ if ( !empty( $image ) ) {
|
|
| 15 |
}
|
| 16 |
echo "\"";
|
| 17 |
if ( !empty( $align ) && $align != 'none' ) {
|
|
|
|
| 18 |
echo " class=\"align{$align}\"";
|
| 19 |
}
|
| 20 |
if ( !empty( $alt ) ) {
|
|
|
|
| 21 |
echo " alt=\"{$alt}\"";
|
| 22 |
} else {
|
|
|
|
| 23 |
echo " alt=\"{$title}\"";
|
| 24 |
}
|
| 25 |
echo " />";
|
| 1 |
<?php
|
| 2 |
+
/**
|
| 3 |
+
* Widget template. This template can be overriden using the "sp_template_image-widget_widget.php" filter.
|
| 4 |
+
* See the readme.txt file for more info.
|
| 5 |
+
*/
|
| 6 |
+
|
| 7 |
+
// Block direct requests
|
| 8 |
+
if ( !defined('ABSPATH') )
|
| 9 |
+
die('-1');
|
| 10 |
+
|
| 11 |
echo $before_widget;
|
| 12 |
+
if ( !empty( $title ) ) { echo $before_title . esc_attr($title) . $after_title; }
|
| 13 |
if ( !empty( $image ) ) {
|
| 14 |
if ( $link ) {
|
| 15 |
+
echo '<a class="'.$this->widget_options['classname'].'-image-link" href="'.esc_url($link).'" target="'.esc_attr($linktarget).'">';
|
| 16 |
}
|
| 17 |
if ( $imageurl ) {
|
| 18 |
+
echo '<img src="'.esc_url($imageurl).'" style="';
|
| 19 |
if ( !empty( $width ) && is_numeric( $width ) ) {
|
| 20 |
echo "max-width: {$width}px;";
|
| 21 |
}
|
| 24 |
}
|
| 25 |
echo "\"";
|
| 26 |
if ( !empty( $align ) && $align != 'none' ) {
|
| 27 |
+
$align = esc_attr($align);
|
| 28 |
echo " class=\"align{$align}\"";
|
| 29 |
}
|
| 30 |
if ( !empty( $alt ) ) {
|
| 31 |
+
$alt = esc_attr($alt);
|
| 32 |
echo " alt=\"{$alt}\"";
|
| 33 |
} else {
|
| 34 |
+
$title = esc_attr($title);
|
| 35 |
echo " alt=\"{$title}\"";
|
| 36 |
}
|
| 37 |
echo " />";
|
