Simple Social Icons - Version 0.9.2

Version Description

  • Added new profile options
  • Changed default border radius to 3px
Download this release

Release Info

Developer nathanrice
Plugin Icon 128x128 Simple Social Icons
Version 0.9.2
Comparing to
See all releases

Code changes from version 0.9.0 to 0.9.2

images/sprite_24x24.png CHANGED
Binary file
images/sprite_32x32.png CHANGED
Binary file
images/sprite_48x48.png CHANGED
Binary file
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: nathanrice, studiopress
3
  Tags: social media, social networking, social profiles
4
  Requires at least: 3.3
5
  Tested up to: 3.3.1
6
- Stable tag: 0.9.0
7
 
8
  This plugin/widget allows you to insert social icons in any widget area.
9
 
@@ -27,4 +27,11 @@ No, not at this time.
27
  == Changelog ==
28
 
29
  = 0.9.0 =
30
- * Initial Beta Release
 
 
 
 
 
 
 
3
  Tags: social media, social networking, social profiles
4
  Requires at least: 3.3
5
  Tested up to: 3.3.1
6
+ Stable tag: 0.9.2
7
 
8
  This plugin/widget allows you to insert social icons in any widget area.
9
 
27
  == Changelog ==
28
 
29
  = 0.9.0 =
30
+ * Initial Beta Release
31
+
32
+ = 0.9.1 =
33
+ * Fixed some styling issues
34
+
35
+ = 0.9.2 =
36
+ * Added new profile options
37
+ * Changed default border radius to 3px
simple-social-icons.php CHANGED
@@ -6,42 +6,42 @@ Description: A simple, CSS and sprite driven social icons widget.
6
  Author: Nathan Rice
7
  Author URI: http://www.nathanrice.net/
8
 
9
- Version: 0.9.0
10
 
11
  License: GNU General Public License v2.0 (or later)
12
  License URI: http://www.opensource.org/licenses/gpl-license.php
13
  */
14
 
15
  class Simple_Social_Icons_Widget extends WP_Widget {
16
-
17
  /**
18
  * Default widget values.
19
- *
20
  * @var array
21
  */
22
  protected $defaults;
23
-
24
  /**
25
  * Default widget values.
26
- *
27
  * @var array
28
  */
29
  protected $sizes;
30
-
31
  /**
32
  * Default widget values.
33
- *
34
  * @var array
35
  */
36
  protected $profiles;
37
-
38
  /**
39
  * Constructor method.
40
- *
41
  * Set some global values and create widget.
42
  */
43
  function __construct() {
44
-
45
  /**
46
  * Default widget option values.
47
  */
@@ -49,85 +49,115 @@ class Simple_Social_Icons_Widget extends WP_Widget {
49
  'title' => '',
50
  'new_window' => 0,
51
  'size' => 32,
52
- 'border_radius' => 6,
53
  'background_color' => '#999999',
54
  'background_color_hover' => '#666666',
55
  'alignment' => 'alignleft',
 
 
56
  'facebook' => '',
57
  'gplus' => '',
58
  'linkedin' => '',
59
  'pinterest' => '',
60
  'rss' => '',
 
61
  'twitter' => '',
62
  );
63
-
64
  /**
65
  * Icon sizes.
66
  */
67
  $this->sizes = array( '24', '32', '48' );
68
-
69
  /**
70
  * Social profile choices.
71
  */
72
  $this->profiles = array(
73
- 'facebook' => array(
74
- 'label' => __( 'Facebook URI', 'ssiw' ),
75
- 'pattern' => '<li class="social-facebook"><a href="%s" %s>Facebook</a></li>',
76
  'background_positions' => array(
77
  '24' => '0 0',
78
  '32' => '0 0',
79
  '48' => '0 0',
80
  )
81
  ),
82
- 'gplus' => array(
83
- 'label' => __( 'Google+ URI', 'ssiw' ),
84
- 'pattern' => '<li class="social-gplus"><a href="%s" %s>Google+</a></li>',
85
  'background_positions' => array(
86
  '24' => '-24px 0',
87
  '32' => '-32px 0',
88
  '48' => '-48px 0',
89
  )
90
  ),
91
- 'linkedin' => array(
92
- 'label' => __( 'Linkedin URI', 'ssiw' ),
93
- 'pattern' => '<li class="social-linkedin"><a href="%s" %s>Linkedin</a></li>',
94
  'background_positions' => array(
95
  '24' => '-48px 0',
96
  '32' => '-64px 0',
97
  '48' => '-96px 0',
98
  )
99
  ),
100
- 'pinterest' => array(
101
- 'label' => __( 'Pinterest URI', 'ssiw' ),
102
- 'pattern' => '<li class="social-pinterest"><a href="%s" %s>Pinterest</a></li>',
103
  'background_positions' => array(
104
  '24' => '-72px 0',
105
  '32' => '-96px 0',
106
  '48' => '-144px 0',
107
  )
108
  ),
109
- 'rss' => array(
110
- 'label' => __( 'RSS URI', 'ssiw' ),
111
- 'pattern' => '<li class="social-rss"><a href="%s" %s>RSS</a></li>',
112
  'background_positions' => array(
113
  '24' => '-96px 0',
114
  '32' => '-128px 0',
115
  '48' => '-192px 0',
116
  )
117
  ),
118
- 'twitter' => array(
119
- 'label' => __( 'Twitter URI', 'ssiw' ),
120
- 'pattern' => '<li class="social-twitter"><a href="%s" %s>Twitter</a></li>',
121
  'background_positions' => array(
122
  '24' => '-120px 0',
123
  '32' => '-160px 0',
124
  '48' => '-240px 0',
125
  )
126
  ),
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
127
  );
128
-
129
  $widget_ops = array(
130
- 'classname' => 'simple-social-icons',
131
  'description' => __( 'Displays select social icons.', 'ssiw' ),
132
  );
133
 
@@ -138,12 +168,12 @@ class Simple_Social_Icons_Widget extends WP_Widget {
138
  );
139
 
140
  $this->WP_Widget( 'simple-social-icons', __( 'Simple Social Icons', 'ssiw' ), $widget_ops, $control_ops );
141
-
142
  /** Load CSS in <head> */
143
  add_action( 'wp_head', array( $this, 'css' ) );
144
-
145
  }
146
-
147
  /**
148
  * Widget Form.
149
  *
@@ -151,15 +181,15 @@ class Simple_Social_Icons_Widget extends WP_Widget {
151
  *
152
  */
153
  function form( $instance ) {
154
-
155
  /** Merge with defaults */
156
  $instance = wp_parse_args( (array) $instance, $this->defaults );
157
  ?>
158
-
159
  <p><label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label> <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( $instance['title'] ); ?>" /></p>
160
-
161
  <p><label><input id="<?php echo $this->get_field_id( 'new_window' ); ?>" type="checkbox" name="<?php echo $this->get_field_name( 'new_window' ); ?>" value="1" <?php checked( 1, $instance['new_window'] ); ?>/> <?php esc_html_e( 'Open links in new window?', 'ssiw' ); ?></label></p>
162
-
163
  <p>
164
  <label for="<?php echo $this->get_field_id( 'size' ); ?>"><?php _e( 'Icon Size', 'ssiw' ); ?>:</label>
165
  <select id="<?php echo $this->get_field_id( 'size' ); ?>" name="<?php echo $this->get_field_name( 'size' ); ?>">
@@ -170,13 +200,13 @@ class Simple_Social_Icons_Widget extends WP_Widget {
170
  ?>
171
  </select>
172
  </p>
173
-
174
  <p><label for="<?php echo $this->get_field_id( 'border_radius' ); ?>"><?php _e( 'Icon Border Radius:', 'ssiw' ); ?></label> <input id="<?php echo $this->get_field_id( 'border_radius' ); ?>" name="<?php echo $this->get_field_name( 'border_radius' ); ?>" type="text" value="<?php echo esc_attr( $instance['border_radius'] ); ?>" size="3" />px</p>
175
-
176
  <p><label for="<?php echo $this->get_field_id( 'background_color' ); ?>"><?php _e( 'Icon Color:', 'ssiw' ); ?></label> <input id="<?php echo $this->get_field_id( 'background_color' ); ?>" name="<?php echo $this->get_field_name( 'background_color' ); ?>" type="text" value="<?php echo esc_attr( $instance['background_color'] ); ?>" size="8" /></p>
177
-
178
  <p><label for="<?php echo $this->get_field_id( 'background_color_hover' ); ?>"><?php _e( 'Hover Color:', 'ssiw' ); ?></label> <input id="<?php echo $this->get_field_id( 'background_color_hover' ); ?>" name="<?php echo $this->get_field_name( 'background_color_hover' ); ?>" type="text" value="<?php echo esc_attr( $instance['background_color_hover'] ); ?>" size="8" /></p>
179
-
180
  <p>
181
  <label for="<?php echo $this->get_field_id( 'alignment' ); ?>"><?php _e( 'Alignment', 'ssiw' ); ?>:</label>
182
  <select id="<?php echo $this->get_field_id( 'alignment' ); ?>" name="<?php echo $this->get_field_name( 'alignment' ); ?>">
@@ -184,19 +214,19 @@ class Simple_Social_Icons_Widget extends WP_Widget {
184
  <option value="alignright" <?php selected( 'alignright', $instance['alignment'] ) ?>><?php _e( 'Align Right', 'ssiw' ); ?></option>
185
  </select>
186
  </p>
187
-
188
  <hr style="background: #ccc; border: 0; height: 1px; margin: 20px 0;" />
189
-
190
  <?php
191
  foreach ( (array) $this->profiles as $profile => $data ) {
192
-
193
  printf( '<p><label for="%s">%s:</label>', esc_attr( $this->get_field_id( $profile ) ), esc_attr( $data['label'] ) );
194
  printf( '<input type="text" id="%s" class="widefat" name="%s" value="%s" /></p>', esc_attr( $this->get_field_id( $profile ) ), esc_attr( $this->get_field_name( $profile ) ), esc_url( $instance[$profile] ) );
195
-
196
  }
197
-
198
  }
199
-
200
  /**
201
  * Form validation and sanitization.
202
  *
@@ -204,30 +234,30 @@ class Simple_Social_Icons_Widget extends WP_Widget {
204
  *
205
  */
206
  function update( $newinstance, $oldinstance ) {
207
-
208
  foreach ( $newinstance as $key => $value ) {
209
-
210
  /** Border radius must not be empty, must be a digit */
211
  if ( 'border_radius' == $key && ( '' == $value || ! ctype_digit( $value ) ) ) {
212
  $newinstance[$key] = 0;
213
  }
214
-
215
  /** Validate hex code colors */
216
  elseif ( strpos( $key, '_color' ) && 0 == preg_match( '/^#(([a-fA-F0-9]{3}$)|([a-fA-F0-9]{6}$))/', $value ) ) {
217
  $newinstance[$key] = $oldinstance[$key];
218
  }
219
-
220
  /** Sanitize Profile URIs */
221
  elseif ( array_key_exists( $key, (array) $this->profiles ) ) {
222
  $newinstance[$key] = esc_url( $newinstance[$key] );
223
  }
224
-
225
  }
226
-
227
  return $newinstance;
228
-
229
  }
230
-
231
  /**
232
  * Widget Output.
233
  *
@@ -235,9 +265,9 @@ class Simple_Social_Icons_Widget extends WP_Widget {
235
  *
236
  */
237
  function widget( $args, $instance ) {
238
-
239
  extract( $args );
240
-
241
  /** Merge with defaults */
242
  $instance = wp_parse_args( (array) $instance, $this->defaults );
243
 
@@ -245,47 +275,50 @@ class Simple_Social_Icons_Widget extends WP_Widget {
245
 
246
  if ( ! empty( $instance['title'] ) )
247
  echo $before_title . apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base ) . $after_title;
248
-
249
  $output = '';
250
-
251
  $new_window = $instance['new_window'] ? 'target="_blank"' : '';
252
-
253
  foreach ( (array) $this->profiles as $profile => $data ) {
254
  if ( ! empty( $instance[$profile] ) )
255
  $output .= sprintf( $data['pattern'], esc_url( $instance[$profile] ), $new_window );
256
  }
257
-
258
  if ( $output )
259
  printf( '<ul class="%s">%s</ul>', $instance['alignment'], $output );
260
-
261
  echo $after_widget;
262
-
263
  }
264
-
265
  /**
266
  * Custom CSS.
267
  *
268
  * Outputs custom CSS to control the look of the icons.
269
  */
270
  function css() {
271
-
272
  /** Pull widget settings, merge with defaults */
273
  $all_instances = $this->get_settings();
274
  $instance = wp_parse_args( $all_instances[$this->number], $this->defaults );
275
-
276
  /** The image locations */
277
  $imgs = array(
278
  '24' => plugin_dir_url( __FILE__ ) . 'images/sprite_24x24.png',
279
  '32' => plugin_dir_url( __FILE__ ) . 'images/sprite_32x32.png',
280
  '48' => plugin_dir_url( __FILE__ ) . 'images/sprite_48x48.png'
281
  );
282
-
283
  /** The CSS to output */
284
- $css = '.simple-social-icons .alignleft, .simple-social-icons .alignright {
 
 
 
285
  margin: 0; padding: 0;
286
  }
287
- .simple-social-icons ul li {
288
- background: none; border: none; float: left;
289
  }
290
  .simple-social-icons ul li a,
291
  .simple-social-icons ul li a:hover {
@@ -295,39 +328,37 @@ class Simple_Social_Icons_Widget extends WP_Widget {
295
  border-radius: ' . $instance['border_radius'] . 'px;
296
  display: block;
297
  height: ' . $instance['size'] . 'px;
298
- margin: 0 5px;
299
  overflow: hidden;
300
- padding: 0;
301
  text-indent: -999px;
302
  width: ' . $instance['size'] . 'px;
303
  }
304
-
305
  .simple-social-icons ul li a:hover {
306
  background-color: ' . $instance['background_color_hover'] . ';
307
  }';
308
-
309
  /** Individual Profile button styles */
310
  foreach ( (array) $this->profiles as $profile => $data ) {
311
 
312
  if ( ! $instance[$profile] )
313
  continue;
314
-
315
  $css .= '.simple-social-icons ul li.social-' . $profile . ' a,
316
  .simple-social-icons ul li.social-' . $profile . ' a:hover {
317
  background-position: ' . $data['background_positions'][$instance['size']] . ';
318
  }';
319
 
320
  }
321
-
322
  /** Minify a bit */
323
  $css = str_replace( "\t", '', $css );
324
  $css = str_replace( array( "\n", "\r" ), ' ', $css );
325
-
326
  /** Echo the CSS */
327
  echo '<style type="text/css" media="screen">' . $css . '</style>';
328
-
329
  }
330
-
331
  }
332
 
333
  add_action( 'widgets_init', 'ssiw_load_widget' );
6
  Author: Nathan Rice
7
  Author URI: http://www.nathanrice.net/
8
 
9
+ Version: 0.9.2
10
 
11
  License: GNU General Public License v2.0 (or later)
12
  License URI: http://www.opensource.org/licenses/gpl-license.php
13
  */
14
 
15
  class Simple_Social_Icons_Widget extends WP_Widget {
16
+
17
  /**
18
  * Default widget values.
19
+ *
20
  * @var array
21
  */
22
  protected $defaults;
23
+
24
  /**
25
  * Default widget values.
26
+ *
27
  * @var array
28
  */
29
  protected $sizes;
30
+
31
  /**
32
  * Default widget values.
33
+ *
34
  * @var array
35
  */
36
  protected $profiles;
37
+
38
  /**
39
  * Constructor method.
40
+ *
41
  * Set some global values and create widget.
42
  */
43
  function __construct() {
44
+
45
  /**
46
  * Default widget option values.
47
  */
49
  'title' => '',
50
  'new_window' => 0,
51
  'size' => 32,
52
+ 'border_radius' => 3,
53
  'background_color' => '#999999',
54
  'background_color_hover' => '#666666',
55
  'alignment' => 'alignleft',
56
+ 'dribbble' => '',
57
+ 'email' => '',
58
  'facebook' => '',
59
  'gplus' => '',
60
  'linkedin' => '',
61
  'pinterest' => '',
62
  'rss' => '',
63
+ 'stumbleupon' => '',
64
  'twitter' => '',
65
  );
66
+
67
  /**
68
  * Icon sizes.
69
  */
70
  $this->sizes = array( '24', '32', '48' );
71
+
72
  /**
73
  * Social profile choices.
74
  */
75
  $this->profiles = array(
76
+ 'dribbble' => array(
77
+ 'label' => __( 'Dribbble URI', 'ssiw' ),
78
+ 'pattern' => '<li class="social-dribbble"><a href="%s" %s>Dribbble</a></li>',
79
  'background_positions' => array(
80
  '24' => '0 0',
81
  '32' => '0 0',
82
  '48' => '0 0',
83
  )
84
  ),
85
+ 'email' => array(
86
+ 'label' => __( 'Email URI', 'ssiw' ),
87
+ 'pattern' => '<li class="social-email"><a href="%s" %s>Email</a></li>',
88
  'background_positions' => array(
89
  '24' => '-24px 0',
90
  '32' => '-32px 0',
91
  '48' => '-48px 0',
92
  )
93
  ),
94
+ 'facebook' => array(
95
+ 'label' => __( 'Facebook URI', 'ssiw' ),
96
+ 'pattern' => '<li class="social-facebook"><a href="%s" %s>Facebook</a></li>',
97
  'background_positions' => array(
98
  '24' => '-48px 0',
99
  '32' => '-64px 0',
100
  '48' => '-96px 0',
101
  )
102
  ),
103
+ 'gplus' => array(
104
+ 'label' => __( 'Google+ URI', 'ssiw' ),
105
+ 'pattern' => '<li class="social-gplus"><a href="%s" %s>Google+</a></li>',
106
  'background_positions' => array(
107
  '24' => '-72px 0',
108
  '32' => '-96px 0',
109
  '48' => '-144px 0',
110
  )
111
  ),
112
+ 'linkedin' => array(
113
+ 'label' => __( 'Linkedin URI', 'ssiw' ),
114
+ 'pattern' => '<li class="social-linkedin"><a href="%s" %s>Linkedin</a></li>',
115
  'background_positions' => array(
116
  '24' => '-96px 0',
117
  '32' => '-128px 0',
118
  '48' => '-192px 0',
119
  )
120
  ),
121
+ 'pinterest' => array(
122
+ 'label' => __( 'Pinterest URI', 'ssiw' ),
123
+ 'pattern' => '<li class="social-pinterest"><a href="%s" %s>Pinterest</a></li>',
124
  'background_positions' => array(
125
  '24' => '-120px 0',
126
  '32' => '-160px 0',
127
  '48' => '-240px 0',
128
  )
129
  ),
130
+ 'rss' => array(
131
+ 'label' => __( 'RSS URI', 'ssiw' ),
132
+ 'pattern' => '<li class="social-rss"><a href="%s" %s>RSS</a></li>',
133
+ 'background_positions' => array(
134
+ '24' => '-144px 0',
135
+ '32' => '-192px 0',
136
+ '48' => '-288px 0',
137
+ )
138
+ ),
139
+ 'stumbleupon' => array(
140
+ 'label' => __( 'StumbleUpon URI', 'ssiw' ),
141
+ 'pattern' => '<li class="social-stumbleupon"><a href="%s" %s>StumbleUpon</a></li>',
142
+ 'background_positions' => array(
143
+ '24' => '-168px 0',
144
+ '32' => '-224px 0',
145
+ '48' => '-336px 0',
146
+ )
147
+ ),
148
+ 'twitter' => array(
149
+ 'label' => __( 'Twitter URI', 'ssiw' ),
150
+ 'pattern' => '<li class="social-twitter"><a href="%s" %s>Twitter</a></li>',
151
+ 'background_positions' => array(
152
+ '24' => '-192px 0',
153
+ '32' => '-256px 0',
154
+ '48' => '-384px 0',
155
+ )
156
+ ),
157
  );
158
+
159
  $widget_ops = array(
160
+ 'classname' => 'simple-social-icons',
161
  'description' => __( 'Displays select social icons.', 'ssiw' ),
162
  );
163
 
168
  );
169
 
170
  $this->WP_Widget( 'simple-social-icons', __( 'Simple Social Icons', 'ssiw' ), $widget_ops, $control_ops );
171
+
172
  /** Load CSS in <head> */
173
  add_action( 'wp_head', array( $this, 'css' ) );
174
+
175
  }
176
+
177
  /**
178
  * Widget Form.
179
  *
181
  *
182
  */
183
  function form( $instance ) {
184
+
185
  /** Merge with defaults */
186
  $instance = wp_parse_args( (array) $instance, $this->defaults );
187
  ?>
188
+
189
  <p><label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label> <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( $instance['title'] ); ?>" /></p>
190
+
191
  <p><label><input id="<?php echo $this->get_field_id( 'new_window' ); ?>" type="checkbox" name="<?php echo $this->get_field_name( 'new_window' ); ?>" value="1" <?php checked( 1, $instance['new_window'] ); ?>/> <?php esc_html_e( 'Open links in new window?', 'ssiw' ); ?></label></p>
192
+
193
  <p>
194
  <label for="<?php echo $this->get_field_id( 'size' ); ?>"><?php _e( 'Icon Size', 'ssiw' ); ?>:</label>
195
  <select id="<?php echo $this->get_field_id( 'size' ); ?>" name="<?php echo $this->get_field_name( 'size' ); ?>">
200
  ?>
201
  </select>
202
  </p>
203
+
204
  <p><label for="<?php echo $this->get_field_id( 'border_radius' ); ?>"><?php _e( 'Icon Border Radius:', 'ssiw' ); ?></label> <input id="<?php echo $this->get_field_id( 'border_radius' ); ?>" name="<?php echo $this->get_field_name( 'border_radius' ); ?>" type="text" value="<?php echo esc_attr( $instance['border_radius'] ); ?>" size="3" />px</p>
205
+
206
  <p><label for="<?php echo $this->get_field_id( 'background_color' ); ?>"><?php _e( 'Icon Color:', 'ssiw' ); ?></label> <input id="<?php echo $this->get_field_id( 'background_color' ); ?>" name="<?php echo $this->get_field_name( 'background_color' ); ?>" type="text" value="<?php echo esc_attr( $instance['background_color'] ); ?>" size="8" /></p>
207
+
208
  <p><label for="<?php echo $this->get_field_id( 'background_color_hover' ); ?>"><?php _e( 'Hover Color:', 'ssiw' ); ?></label> <input id="<?php echo $this->get_field_id( 'background_color_hover' ); ?>" name="<?php echo $this->get_field_name( 'background_color_hover' ); ?>" type="text" value="<?php echo esc_attr( $instance['background_color_hover'] ); ?>" size="8" /></p>
209
+
210
  <p>
211
  <label for="<?php echo $this->get_field_id( 'alignment' ); ?>"><?php _e( 'Alignment', 'ssiw' ); ?>:</label>
212
  <select id="<?php echo $this->get_field_id( 'alignment' ); ?>" name="<?php echo $this->get_field_name( 'alignment' ); ?>">
214
  <option value="alignright" <?php selected( 'alignright', $instance['alignment'] ) ?>><?php _e( 'Align Right', 'ssiw' ); ?></option>
215
  </select>
216
  </p>
217
+
218
  <hr style="background: #ccc; border: 0; height: 1px; margin: 20px 0;" />
219
+
220
  <?php
221
  foreach ( (array) $this->profiles as $profile => $data ) {
222
+
223
  printf( '<p><label for="%s">%s:</label>', esc_attr( $this->get_field_id( $profile ) ), esc_attr( $data['label'] ) );
224
  printf( '<input type="text" id="%s" class="widefat" name="%s" value="%s" /></p>', esc_attr( $this->get_field_id( $profile ) ), esc_attr( $this->get_field_name( $profile ) ), esc_url( $instance[$profile] ) );
225
+
226
  }
227
+
228
  }
229
+
230
  /**
231
  * Form validation and sanitization.
232
  *
234
  *
235
  */
236
  function update( $newinstance, $oldinstance ) {
237
+
238
  foreach ( $newinstance as $key => $value ) {
239
+
240
  /** Border radius must not be empty, must be a digit */
241
  if ( 'border_radius' == $key && ( '' == $value || ! ctype_digit( $value ) ) ) {
242
  $newinstance[$key] = 0;
243
  }
244
+
245
  /** Validate hex code colors */
246
  elseif ( strpos( $key, '_color' ) && 0 == preg_match( '/^#(([a-fA-F0-9]{3}$)|([a-fA-F0-9]{6}$))/', $value ) ) {
247
  $newinstance[$key] = $oldinstance[$key];
248
  }
249
+
250
  /** Sanitize Profile URIs */
251
  elseif ( array_key_exists( $key, (array) $this->profiles ) ) {
252
  $newinstance[$key] = esc_url( $newinstance[$key] );
253
  }
254
+
255
  }
256
+
257
  return $newinstance;
258
+
259
  }
260
+
261
  /**
262
  * Widget Output.
263
  *
265
  *
266
  */
267
  function widget( $args, $instance ) {
268
+
269
  extract( $args );
270
+
271
  /** Merge with defaults */
272
  $instance = wp_parse_args( (array) $instance, $this->defaults );
273
 
275
 
276
  if ( ! empty( $instance['title'] ) )
277
  echo $before_title . apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base ) . $after_title;
278
+
279
  $output = '';
280
+
281
  $new_window = $instance['new_window'] ? 'target="_blank"' : '';
282
+
283
  foreach ( (array) $this->profiles as $profile => $data ) {
284
  if ( ! empty( $instance[$profile] ) )
285
  $output .= sprintf( $data['pattern'], esc_url( $instance[$profile] ), $new_window );
286
  }
287
+
288
  if ( $output )
289
  printf( '<ul class="%s">%s</ul>', $instance['alignment'], $output );
290
+
291
  echo $after_widget;
292
+
293
  }
294
+
295
  /**
296
  * Custom CSS.
297
  *
298
  * Outputs custom CSS to control the look of the icons.
299
  */
300
  function css() {
301
+
302
  /** Pull widget settings, merge with defaults */
303
  $all_instances = $this->get_settings();
304
  $instance = wp_parse_args( $all_instances[$this->number], $this->defaults );
305
+
306
  /** The image locations */
307
  $imgs = array(
308
  '24' => plugin_dir_url( __FILE__ ) . 'images/sprite_24x24.png',
309
  '32' => plugin_dir_url( __FILE__ ) . 'images/sprite_32x32.png',
310
  '48' => plugin_dir_url( __FILE__ ) . 'images/sprite_48x48.png'
311
  );
312
+
313
  /** The CSS to output */
314
+ $css = '.simple-social-icons {
315
+ overflow: hidden;
316
+ }
317
+ .simple-social-icons .alignleft, .simple-social-icons .alignright {
318
  margin: 0; padding: 0;
319
  }
320
+ .simple-social-icons ul li, .sidebar .simple-social-icons ul li, #header .widget-area ul li {
321
+ background: none; border: none; float: left; list-style-type: none; margin: 0 5px; padding: 0;
322
  }
323
  .simple-social-icons ul li a,
324
  .simple-social-icons ul li a:hover {
328
  border-radius: ' . $instance['border_radius'] . 'px;
329
  display: block;
330
  height: ' . $instance['size'] . 'px;
 
331
  overflow: hidden;
 
332
  text-indent: -999px;
333
  width: ' . $instance['size'] . 'px;
334
  }
335
+
336
  .simple-social-icons ul li a:hover {
337
  background-color: ' . $instance['background_color_hover'] . ';
338
  }';
339
+
340
  /** Individual Profile button styles */
341
  foreach ( (array) $this->profiles as $profile => $data ) {
342
 
343
  if ( ! $instance[$profile] )
344
  continue;
345
+
346
  $css .= '.simple-social-icons ul li.social-' . $profile . ' a,
347
  .simple-social-icons ul li.social-' . $profile . ' a:hover {
348
  background-position: ' . $data['background_positions'][$instance['size']] . ';
349
  }';
350
 
351
  }
352
+
353
  /** Minify a bit */
354
  $css = str_replace( "\t", '', $css );
355
  $css = str_replace( array( "\n", "\r" ), ' ', $css );
356
+
357
  /** Echo the CSS */
358
  echo '<style type="text/css" media="screen">' . $css . '</style>';
359
+
360
  }
361
+
362
  }
363
 
364
  add_action( 'widgets_init', 'ssiw_load_widget' );