Version Description
Download this release
Release Info
Developer | peterchester |
Plugin | Image Widget |
Version | 1.0 |
Comparing to | |
See all releases |
Version 1.0
- image-widget.php +157 -0
- readme.txt +34 -0
image-widget.php
ADDED
@@ -0,0 +1,157 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*
|
4 |
+
Plugin Name: Image Widget
|
5 |
+
Plugin URI: http://www.shaneandpeter.com/wordpress
|
6 |
+
Description: This widget accepts a title, a link and an image and displays them. The admin panel is separated from the widget to offer independant control
|
7 |
+
Author: Shane & Peter, Inc.
|
8 |
+
Version: 1.0
|
9 |
+
Author URI: http://www.shaneandpeter.com
|
10 |
+
*/
|
11 |
+
|
12 |
+
class spImageWidget {
|
13 |
+
|
14 |
+
var $id = "image-widget";
|
15 |
+
var $name = "Image Widget";
|
16 |
+
var $classname = "spImageWidget";
|
17 |
+
var $optionsname = "spImageWidget_option";
|
18 |
+
var $description = 'This widget accepts a title, a link and an image and displays them. The admin panel is separated from the widget to offer independant control';
|
19 |
+
var $thispage = 'sp-image-widget';
|
20 |
+
|
21 |
+
// Display the widget
|
22 |
+
function widget($args) {
|
23 |
+
extract($args);
|
24 |
+
$options = get_option($this->optionsname);
|
25 |
+
echo $before_widget;
|
26 |
+
if ($options[$this->id]['link']) {
|
27 |
+
if ($options[$this->id]['title'])
|
28 |
+
echo $before_title.'<a href="'.$options[$this->id]['link'].'">'.$options[$this->id]['title'].'</a>'.$after_title;
|
29 |
+
if ($options[$this->id]['image'])
|
30 |
+
echo '<a href="'.$options[$this->id]['link'].'"><img src="'.$options[$this->id]['image'].'" /></a>';
|
31 |
+
} else {
|
32 |
+
if ($options[$this->id]['title'])
|
33 |
+
echo $before_title.$options[$this->id]['title'].$after_title;
|
34 |
+
if ($options[$this->id]['image'])
|
35 |
+
echo '<img src="'.$options[$this->id]['image'].'" />';
|
36 |
+
}
|
37 |
+
if ($options[$this->id]['description'])
|
38 |
+
echo '<p>'.$options[$this->id]['description'].'</p>';
|
39 |
+
echo $after_widget;
|
40 |
+
}
|
41 |
+
|
42 |
+
|
43 |
+
// Controller for modifying the Widget
|
44 |
+
function control() {
|
45 |
+
$options = get_option($this->optionsname);
|
46 |
+
if ( !is_array($options) ) {
|
47 |
+
$options = array();
|
48 |
+
$options[$this->id] = array(
|
49 |
+
'title' => &$this->name,
|
50 |
+
'link' => '',
|
51 |
+
'description' => '',
|
52 |
+
'image' => ''
|
53 |
+
);
|
54 |
+
}
|
55 |
+
|
56 |
+
$title = $this->id.'-title';
|
57 |
+
$link = $this->id.'-link';
|
58 |
+
$description = $this->id.'-description';
|
59 |
+
$import = $this->id.'-import';
|
60 |
+
$submit = $this->id.'-submit';
|
61 |
+
|
62 |
+
if ( $_POST[$submit] ) {
|
63 |
+
check_admin_referer($this->classname);
|
64 |
+
|
65 |
+
$options[$this->id]['title'] = htmlentities(stripslashes($_POST[$title]));
|
66 |
+
$options[$this->id]['description'] = htmlentities(stripslashes($_POST[$description]));
|
67 |
+
$options[$this->id]['link'] = htmlentities(stripslashes($_POST[$link]));
|
68 |
+
|
69 |
+
// Image Upload
|
70 |
+
if ($_FILES[$import]['size'] > 0) {
|
71 |
+
$file = wp_handle_upload($_FILES[$import], array('test_form' => false));
|
72 |
+
|
73 |
+
if ( isset($file['error']) )
|
74 |
+
die( $file['error'] );
|
75 |
+
|
76 |
+
$url = $file['url'];
|
77 |
+
$type = $file['type'];
|
78 |
+
$file = $file['file'];
|
79 |
+
$filename = basename($file);
|
80 |
+
|
81 |
+
// Construct the object array
|
82 |
+
$object = array(
|
83 |
+
'post_title' => $filename,
|
84 |
+
'post_content' => $url,
|
85 |
+
'post_mime_type' => $type,
|
86 |
+
'guid' => $url);
|
87 |
+
|
88 |
+
$id = wp_insert_attachment($object, $file);
|
89 |
+
list($width, $height, $type, $attr) = getimagesize( $file );
|
90 |
+
|
91 |
+
// Add the meta-data
|
92 |
+
wp_update_attachment_metadata( $id, wp_generate_attachment_metadata( $id, $file ) );
|
93 |
+
|
94 |
+
do_action('wp_create_file_in_uploads', $file, $id); // For replication
|
95 |
+
|
96 |
+
$options[$this->id]['image'] = $url;
|
97 |
+
}
|
98 |
+
|
99 |
+
update_option($this->optionsname, $options);
|
100 |
+
}
|
101 |
+
|
102 |
+
|
103 |
+
echo '<div class="wrap">';
|
104 |
+
echo '<h2>';
|
105 |
+
echo $this->name;
|
106 |
+
echo '</h2>';
|
107 |
+
echo '<form name="form1" method="post" action="' . str_replace( '%7E', '~', $_SERVER['REQUEST_URI']) . '" enctype="multipart/form-data">';
|
108 |
+
echo '<p>';
|
109 |
+
_e('Title:');
|
110 |
+
echo ' <br /><input type="text" name="'.$title.'" value="' . htmlspecialchars($options[$this->id]['title'], ENT_QUOTES) . '" size="20">';
|
111 |
+
echo '</p>';
|
112 |
+
echo '<p>';
|
113 |
+
_e('Link:');
|
114 |
+
echo ' <br /><input type="text" name="'.$link.'" value="' . htmlspecialchars($options[$this->id]['link'], ENT_QUOTES) . '" size="20">';
|
115 |
+
echo '</p>';
|
116 |
+
echo '<p>';
|
117 |
+
_e('Description:');
|
118 |
+
echo ' <br /><textarea type="text" name="'.$description.'">' . htmlspecialchars($options[$this->id]['description'], ENT_QUOTES) . '</textarea>';
|
119 |
+
echo '</p>';
|
120 |
+
echo '<p>';
|
121 |
+
_e('Image:');
|
122 |
+
echo ' <input type="file" id="upload" name="'.$import.'" />';
|
123 |
+
if ($options[$this->id]['image']) {
|
124 |
+
echo "<br/><img src=\"".$options[$this->id]['image']."\" />";
|
125 |
+
}
|
126 |
+
echo '</p>';
|
127 |
+
echo '<p class="submit"><input type="submit" name="'.$submit.'" value="Save" /></p>';
|
128 |
+
wp_nonce_field($this->classname);
|
129 |
+
echo '</form>';
|
130 |
+
echo '</div>';
|
131 |
+
}
|
132 |
+
|
133 |
+
|
134 |
+
// Initialize the widget
|
135 |
+
function init() {
|
136 |
+
wp_register_sidebar_widget(
|
137 |
+
$this->id,
|
138 |
+
$this->name,
|
139 |
+
array(&$this, 'widget'),
|
140 |
+
array('classname' => $this->classname, 'description' => $this->description),
|
141 |
+
array( 'number' => -1 )
|
142 |
+
);
|
143 |
+
}
|
144 |
+
|
145 |
+
// Admin menu placement
|
146 |
+
function admin() {
|
147 |
+
$options = get_option($this->optionsname);
|
148 |
+
add_management_page($this->name, $this->name, 5, $this->thispage, array(&$this, 'control'));
|
149 |
+
}
|
150 |
+
|
151 |
+
}
|
152 |
+
|
153 |
+
$o = new spImageWidget();
|
154 |
+
add_action("plugins_loaded", array($o,"init"));
|
155 |
+
add_action('admin_menu', array($o,"admin"));
|
156 |
+
|
157 |
+
?>
|
readme.txt
ADDED
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== Image Widget ===
|
2 |
+
Contributors: Shane & Peter, Inc.
|
3 |
+
Donate link: http://www.shaneandpeter.com
|
4 |
+
Tags: widget, image, ad, banner, simple
|
5 |
+
Requires at least: 2.0
|
6 |
+
Tested up to: 2.6
|
7 |
+
stable tag: 1.0
|
8 |
+
|
9 |
+
Simple image widget. Allows for placement of an image in the sidebar without requiring Design access.
|
10 |
+
|
11 |
+
== Description ==
|
12 |
+
Simple image widget. Allows for placement of an image in the sidebar without requiring Design access.
|
13 |
+
|
14 |
+
todo:
|
15 |
+
* support multiple instances
|
16 |
+
* encapsulate code in an object
|
17 |
+
* support image sizing (maybe)
|
18 |
+
|
19 |
+
== Installation ==
|
20 |
+
|
21 |
+
**Install**
|
22 |
+
|
23 |
+
1. Unzip the `image-widget.zip` file.
|
24 |
+
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.
|
25 |
+
|
26 |
+
**Activate**
|
27 |
+
|
28 |
+
1. In your WordPress administration, go to the Plugins page
|
29 |
+
1. Activate the Image Widget plugin and a subpage for the plugin will appear
|
30 |
+
in your Manage menu.
|
31 |
+
1. Go to the Design > Widget page and place the widget in your sidebar in the Design
|
32 |
+
1. Go to Manage > Image Widget to add a title, link, and image.
|
33 |
+
|
34 |
+
If you find any bugs or have any ideas, please mail us.
|