Styles - Version 1.2

Version Description

  • New: Links to support services.
  • New: Links to free themes in readme.
  • New: Dismissable notices.
  • New: PHP7 compatability. Thanks @davidbe929.
Download this release

Release Info

Developer pdclark
Plugin Icon Styles
Version 1.2
Comparing to
See all releases

Code changes from version 1.1.10 to 1.2

classes/csstidy/class.csstidy.php CHANGED
@@ -246,7 +246,7 @@ class csstidy {
246
  * @access private
247
  * @version 1.3
248
  */
249
- function csstidy() {
250
  $this->settings['remove_bslash'] = true;
251
  $this->settings['compress_colors'] = true;
252
  $this->settings['compress_font-weight'] = true;
246
  * @access private
247
  * @version 1.3
248
  */
249
+ function __construct() {
250
  $this->settings['remove_bslash'] = true;
251
  $this->settings['compress_colors'] = true;
252
  $this->settings['compress_font-weight'] = true;
classes/csstidy/class.csstidy_optimise.php CHANGED
@@ -47,7 +47,7 @@ class csstidy_optimise {
47
  * @access private
48
  * @version 1.0
49
  */
50
- function csstidy_optimise(&$css) {
51
  $this->parser = & $css;
52
  $this->css = & $css->css;
53
  $this->sub_value = & $css->sub_value;
47
  * @access private
48
  * @version 1.0
49
  */
50
+ function __construct(&$css) {
51
  $this->parser = & $css;
52
  $this->css = & $css->css;
53
  $this->sub_value = & $css->sub_value;
classes/csstidy/class.csstidy_print.php CHANGED
@@ -66,7 +66,7 @@ class csstidy_print {
66
  * @access private
67
  * @version 1.0
68
  */
69
- function csstidy_print(&$css) {
70
  $this->parser = & $css;
71
  $this->css = & $css->css;
72
  $this->template = & $css->template;
66
  * @access private
67
  * @version 1.0
68
  */
69
+ function __construct(&$css) {
70
  $this->parser = & $css;
71
  $this->css = & $css->css;
72
  $this->template = & $css->template;
classes/styles-admin-ajax.php ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ class Styles_Admin_Ajax {
4
+
5
+ /**
6
+ * @var Styles_Plugin
7
+ */
8
+ var $plugin;
9
+
10
+ /**
11
+ * Admin notices
12
+ */
13
+ var $notices = array();
14
+
15
+ public function __construct( $plugin ) {
16
+ $this->plugin = $plugin;
17
+
18
+ // Dismiss notices
19
+ add_action( 'wp_ajax_styles-dismiss-notice', array( $this, 'dismiss_notice' ) );
20
+ add_action( 'wp_ajax_styles-clear-notice-dismissals', array( $this, 'clear_notice_dismissals' ) );
21
+ }
22
+
23
+ public function dismiss_notice() {
24
+ $options = get_option( 'storm-styles' );
25
+ $key = sanitize_key( $_GET['key'] );
26
+
27
+ if ( ! isset( $options['notices_dismissed'] ) ) {
28
+ $options['notices_dismissed'] = array();
29
+ }
30
+
31
+ if ( ! in_array( $key, $options['notices_dismissed'] ) ) {
32
+ $options['notices_dismissed'][] = $key;
33
+ }
34
+
35
+ echo (int) update_option( 'storm-styles', $options );
36
+
37
+ exit;
38
+ }
39
+
40
+ public function clear_notice_dismissals() {
41
+ $options = get_option( 'storm-styles' );
42
+
43
+ $options['notices_dismissed'] = array();
44
+
45
+ echo (int) update_option( 'storm-styles', $options );
46
+
47
+ exit;
48
+ }
49
+
50
+ }
classes/styles-admin.php CHANGED
@@ -47,6 +47,7 @@ class Styles_Admin {
47
  // Notices
48
  add_action( 'admin_init', array( $this, 'install_default_themes_notice' ), 20 );
49
  add_action( 'admin_init', array( $this, 'activate_notice' ), 30 );
 
50
  add_action( 'admin_notices', array( $this, 'admin_notices' ) );
51
  add_action( 'customize_controls_enqueue_scripts', array( $this, 'customize_notices' ), 11 );
52
 
@@ -285,6 +286,7 @@ class Styles_Admin {
285
  if ( STYLES_BASENAME == $basename ) {
286
  $meta[2] = str_replace( 'Visit plugin site', 'Get More Themes', $meta[2] );
287
  $meta[] = '<a class="button button-primary" href="' . admin_url( 'customize.php' ) . '">Customize Theme</a>';
 
288
  }
289
  return $meta;
290
  }
@@ -362,6 +364,17 @@ class Styles_Admin {
362
 
363
  }
364
 
 
 
 
 
 
 
 
 
 
 
 
365
  /**
366
  * Check whether we're on a screen for updating or deleting plugins.
367
  * If we are, return false to disable notices.
@@ -390,8 +403,21 @@ class Styles_Admin {
390
  update_option( 'storm-styles', $options );
391
  }
392
 
 
 
393
  foreach( $this->notices as $key => $message ) {
394
- echo "<div class='updated fade' id='styles-$key'>$message</div>";
 
 
 
 
 
 
 
 
 
 
 
395
  }
396
  }
397
 
@@ -401,7 +427,35 @@ class Styles_Admin {
401
  * @return null Passes $this->notices array to styles-customize-controls.js
402
  */
403
  public function customize_notices() {
 
404
  wp_localize_script( 'styles-customize-controls', 'wp_styles_notices', $this->notices );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
405
  }
406
 
407
  /**
47
  // Notices
48
  add_action( 'admin_init', array( $this, 'install_default_themes_notice' ), 20 );
49
  add_action( 'admin_init', array( $this, 'activate_notice' ), 30 );
50
+ add_action( 'admin_init', array( $this, 'support_notice' ) );
51
  add_action( 'admin_notices', array( $this, 'admin_notices' ) );
52
  add_action( 'customize_controls_enqueue_scripts', array( $this, 'customize_notices' ), 11 );
53
 
286
  if ( STYLES_BASENAME == $basename ) {
287
  $meta[2] = str_replace( 'Visit plugin site', 'Get More Themes', $meta[2] );
288
  $meta[] = '<a class="button button-primary" href="' . admin_url( 'customize.php' ) . '">Customize Theme</a>';
289
+ $meta[] = '<a class="button button-secondary" href="http://stylesplugin.com/support">Order Theme Support</a>';
290
  }
291
  return $meta;
292
  }
364
 
365
  }
366
 
367
+ /**
368
+ * Display link to Support services.
369
+ */
370
+ public function support_notice() {
371
+ if ( apply_filters( 'styles_disable_notices', false ) ) {
372
+ return false;
373
+ }
374
+
375
+ $this->notices[] = "<p><strong>Styles</strong> now offers support services for <strong>adding editing options</strong>!</p><p>If you'd like Customizer options added for a theme or other part of your site, please visit us: <a href='http://stylesplugin.com/support' target='_blank'>stylesplugin.com/support</a></p>";
376
+ }
377
+
378
  /**
379
  * Check whether we're on a screen for updating or deleting plugins.
380
  * If we are, return false to disable notices.
403
  update_option( 'storm-styles', $options );
404
  }
405
 
406
+ $this->md5_notices();
407
+
408
  foreach( $this->notices as $key => $message ) {
409
+ ?>
410
+ <div
411
+ class='updated notice fade is-dismissible styles-notice'
412
+ data-key='<?php esc_attr_e( $key ) ?>'
413
+ >
414
+ <?php echo $message ?>
415
+ </div>
416
+ <?php
417
+ }
418
+
419
+ if ( ! empty( $this->notices ) ) {
420
+ wp_enqueue_script( 'styles-admin-notices', plugins_url( '/js/admin-notices.js', STYLES_BASENAME ), array(), $this->plugin->version );
421
  }
422
  }
423
 
427
  * @return null Passes $this->notices array to styles-customize-controls.js
428
  */
429
  public function customize_notices() {
430
+ $this->md5_notices();
431
  wp_localize_script( 'styles-customize-controls', 'wp_styles_notices', $this->notices );
432
+ wp_enqueue_script( 'styles-admin-notices', plugins_url( '/js/admin-notices.js', STYLES_BASENAME ), array( 'styles-customize-controls' ), $this->plugin->version );
433
+ }
434
+
435
+ public function md5_notices() {
436
+ $notices = array();
437
+ $options = get_option( 'storm-styles' );
438
+
439
+ foreach ( $this->notices as $message ) {
440
+ $key = md5( $message );
441
+
442
+ // Clear dismissed notices
443
+ if ( ! $this->is_notice_dismissed( $key, $options ) ) {
444
+ $notices[ $key ] = $message;
445
+ }
446
+ }
447
+
448
+ $this->notices = $notices;
449
+ }
450
+
451
+ public function is_notice_dismissed( $key, $options ) {
452
+ if ( isset( $options['notices_dismissed'] ) ) {
453
+ $notices_dismissed = $options['notices_dismissed'];
454
+ }else {
455
+ $notices_dismissed = array();
456
+ }
457
+
458
+ return in_array( $key, $notices_dismissed );
459
  }
460
 
461
  /**
classes/styles-control-text.php CHANGED
@@ -81,6 +81,7 @@ class Styles_Control_Text extends Styles_Control {
81
 
82
  $css = '';
83
  if ( $value ) {
 
84
  $args = array(
85
  'template' => $this->template_font_size,
86
  'value' => $value,
@@ -103,12 +104,14 @@ class Styles_Control_Text extends Styles_Control {
103
  }
104
 
105
  if ( isset( $font->import_family ) ) {
 
106
  $styles = Styles_Plugin::get_instance();
107
- $styles->css->google_fonts[ $value ] = "@import url(//fonts.googleapis.com/css?family={$font->import_family});\r";
108
  }
109
 
110
  $css = '';
111
  if ( $value ) {
 
112
  $args = array(
113
  'template' => $this->template_font_family,
114
  'value' => $value,
@@ -120,6 +123,50 @@ class Styles_Control_Text extends Styles_Control {
120
  return apply_filters( 'styles_css_font_family', $css );
121
  }
122
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
123
  public function post_message( $js ) {
124
  $setting_font_size = $this->setting . '[font_size]';
125
  $setting_font_family = $this->setting . '[font_family]';
81
 
82
  $css = '';
83
  if ( $value ) {
84
+ $value = $this->encodeCssValue($value);
85
  $args = array(
86
  'template' => $this->template_font_size,
87
  'value' => $value,
104
  }
105
 
106
  if ( isset( $font->import_family ) ) {
107
+ $import_family = $this->encodeCssValue($font->import_family);
108
  $styles = Styles_Plugin::get_instance();
109
+ $styles->css->google_fonts[ $value ] = "@import url(//fonts.googleapis.com/css?family={$import_family});\r";
110
  }
111
 
112
  $css = '';
113
  if ( $value ) {
114
+ $value = $this->encodeCssValue($value);
115
  $args = array(
116
  'template' => $this->template_font_family,
117
  'value' => $value,
123
  return apply_filters( 'styles_css_font_family', $css );
124
  }
125
 
126
+ private function encodePregMatch($matches) {
127
+ $return = mb_convert_encoding('', 'UTF-8');
128
+ // Convert from UTF-8 to UTF-32BE for easy ord()'ing.
129
+ foreach ($matches as $match) {
130
+ // 32-bit unsigned integer in big endian order.
131
+ $char = mb_convert_encoding( $match, 'UTF-32BE', 'UTF-8' );
132
+ // Unpack will read the 32-bit integer in Network order (BE) and
133
+ // return the resulting integer value as a numeric.
134
+ list( , $ord ) = unpack( 'N', $char );
135
+ // Convert to hex and return.
136
+ $return .= '\\' . dechex( $ord );
137
+ }
138
+ return $return;
139
+ }
140
+
141
+ private function encodeCssValue($value) {
142
+ // Ensure UTF-8.
143
+ if (preg_match('/^./us', $value) !== 1) {
144
+ $value = mb_convert_encoding($value, 'UTF-8');
145
+ }
146
+ // Replace most non-alphanumeric characters with their hex equivalents.
147
+ // Special handling for spaces and quotes, which we'll balance at the end of
148
+ // processing. Also allow for hyphens, commas, and #.
149
+ $value = preg_replace_callback('/[^ a-z0-9\'"",#-]|#(?!([a-f0-9]{3}){1,2}\b)/iu', array($this, 'encodePregMatch'), $value);
150
+ // Balance quotes. We can't just count occurrences of " or ' because then
151
+ // mismatching quotes (i.e. '"'"breakout) could result in a break.
152
+ $len = mb_strlen($value);
153
+ $in_quote = FALSE;
154
+ for ( $i = 0; $i < $len; ++ $i ) {
155
+ $char = mb_substr( $value, $i, 1 );
156
+ if (!!$in_quote && $char === $in_quote) {
157
+ $in_quote = FALSE;
158
+ }
159
+ else if (!$in_quote && ($char === '"' || $char === "'")) {
160
+ $in_quote = $char;
161
+ }
162
+ }
163
+ // Make sure all quotes close at the end of the string.
164
+ if (!!$in_quote) {
165
+ $value .= $in_quote;
166
+ }
167
+ return $value;
168
+ }
169
+
170
  public function post_message( $js ) {
171
  $setting_font_size = $this->setting . '[font_size]';
172
  $setting_font_family = $this->setting . '[font_family]';
classes/styles-font-menu/classes/markdown/markdown.php CHANGED
@@ -220,7 +220,7 @@ class Markdown_Parser {
220
  var $escape_chars_re;
221
 
222
 
223
- function Markdown_Parser() {
224
  #
225
  # Constructor function. Initialize appropriate member variables.
226
  #
220
  var $escape_chars_re;
221
 
222
 
223
+ function __construct() {
224
  #
225
  # Constructor function. Initialize appropriate member variables.
226
  #
classes/styles-plugin.php CHANGED
@@ -34,6 +34,11 @@ class Styles_Plugin {
34
  */
35
  var $admin;
36
 
 
 
 
 
 
37
  /**
38
  * @var Styles_Upgrade
39
  */
@@ -94,6 +99,12 @@ class Styles_Plugin {
94
  add_action( 'customize_register', array( $this, 'customize_register' ), 1 );
95
  add_action( 'customize_save_after', array( $this, 'customize_save_after' ) );
96
 
 
 
 
 
 
 
97
  if ( $this->get_option( 'debug_mode' ) ) {
98
  require_once dirname( __FILE__ ) . '/styles-debug.php';
99
  $this->debug = new Styles_Debug();
34
  */
35
  var $admin;
36
 
37
+ /**
38
+ * @var Styles_Admin_Ajax
39
+ */
40
+ var $admin_ajax;
41
+
42
  /**
43
  * @var Styles_Upgrade
44
  */
99
  add_action( 'customize_register', array( $this, 'customize_register' ), 1 );
100
  add_action( 'customize_save_after', array( $this, 'customize_save_after' ) );
101
 
102
+ if ( ( defined('DOING_AJAX') && DOING_AJAX ) ) {
103
+ require_once dirname( __FILE__ ) . '/styles-admin-ajax.php';
104
+
105
+ $this->admin_ajax = new Styles_Admin_Ajax( $this );
106
+ }
107
+
108
  if ( $this->get_option( 'debug_mode' ) ) {
109
  require_once dirname( __FILE__ ) . '/styles-debug.php';
110
  $this->debug = new Styles_Debug();
js/admin-notices.js ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ jQuery( document ).ready( function ( $ ) {
2
+
3
+ // $('#styles_installation_notices').remove();
4
+
5
+ $( 'div.styles-notice .notice-dismiss' ).click( function(){
6
+ $.get(
7
+ ajaxurl,
8
+ {
9
+ 'action': 'styles-dismiss-notice',
10
+ 'key': $(this).parent().data('key')
11
+ },
12
+ function( response ){
13
+ console.log( response );
14
+ }
15
+ );
16
+
17
+ // Notices in Customizer
18
+ var $customizer_wrapper = $( '#styles_installation_notices' );
19
+ if ( $customizer_wrapper.length ) {
20
+
21
+ $(this).parent().slideUp( 400, function(){
22
+ // If all notices hidden, hide wrapper
23
+ if ( ! $(this).siblings().filter(':visible').length ) {
24
+ $customizer_wrapper.slideUp( 200 );
25
+ }
26
+ });
27
+
28
+ }
29
+
30
+ } );
31
+
32
+ } );
js/styles-customize-controls.js CHANGED
@@ -14,7 +14,15 @@ jQuery( document ).ready( function ( $ ) {
14
  .show();
15
 
16
  jQuery.each( wp_styles_notices, function( index, value ){
17
- $notices.append( value );
 
 
 
 
 
 
 
 
18
  });
19
 
20
  $( '#customize-info' ).prepend( $notices );
14
  .show();
15
 
16
  jQuery.each( wp_styles_notices, function( index, value ){
17
+ var $notice = $( '<div>' + value + '</div>' )
18
+ .addClass( 'styles-notice' );
19
+
20
+ // Duplicate functionality of styles-admin.php::admin_notices()
21
+ $notice.data( 'key', index );
22
+ // Duplicate functionality of WP Core .is-dismissable
23
+ $notice.append( '<button type="button" class="notice-dismiss"><span class="screen-reader-text">Dismiss this notice.</span></button>' );
24
+
25
+ $notices.append( $notice );
26
  });
27
 
28
  $( '#customize-info' ).prepend( $notices );
readme.txt CHANGED
@@ -1,11 +1,11 @@
1
  === Styles ===
2
  Contributors: pdclark, elusivelight
3
  Plugin URI: http://stylesplugin.com
4
- Author URI: http://pdclark.com
5
  Tags: css, stylesheet, appearance, customize, customizer, colors, color picker, background, fonts, google fonts, user interface, twenty ten, twenty eleven, twenty twelve, twenty thirteen, genesis
6
  Requires at least: 3.4
7
- Tested up to: 4.3
8
- Stable tag: 1.1.10
9
 
10
  Be creative with colors and fonts. Styles changes everything.
11
 
@@ -31,14 +31,14 @@ http://youtube.com/watch?v=CpKiZEqpcr8
31
 
32
  Styles and options for all built-in WordPress themes are free. More themes are available at [StylesPlugin.com](http://stylesplugin.com).
33
 
34
- **Free Themes**
35
 
36
- * TwentyTen
37
- * TwentyEleven
38
- * TwentyTwelve
39
- * TwentyThirteen
40
- * TwentyFourteen
41
- * TwentyFifteen
42
 
43
  **Styles for Genesis**
44
 
@@ -52,9 +52,8 @@ A third-party developer, The Stiz Media, maintains [Styles add-ons for Genesis t
52
 
53
  **Contact**
54
 
55
- * [@stylesplugin](http://twitter.com/stylesplugin) on Twitter
56
  * [Review this plugin](http://wordpress.org/support/view/plugin-reviews/styles)
57
- * [Get support](http://wordpress.org/support/plugin/styles)
58
 
59
  == Installation ==
60
 
@@ -74,29 +73,35 @@ A third-party developer, The Stiz Media, maintains [Styles add-ons for Genesis t
74
 
75
  = Why is this plugin free? =
76
 
77
- We believe life is better when we work together. :) Support for WordPress default themes, like TwentyTwelve and TwentyThirteen, will always be free. Continued development in Styles will be supported by:
78
-
79
- * Plugins for additional themes
80
- * Plugins for add-on features
81
- * Premium support and updates
82
- * Documentation for using Styles in your own themes
83
 
84
  = Does Styles support my theme? =
85
 
86
  Maybe! We have additional themes available available at [StylesPlugin.com](http://stylesplugin.com). If you don't find your theme there, [watch this walkthrough](http://www.youtube.com/playlist?list=PLxj61Fojm1RGevBh10U2qCqjwoH4Awo-P) for a developer's guide on how to add support. Adding one option takes only one line of code.
87
 
 
 
88
  = I'd like to distribute a theme add-on I created for Styles =
89
 
90
  If you [watched the walkthrough](http://www.youtube.com/playlist?list=PLxj61Fojm1RGevBh10U2qCqjwoH4Awo-P) and created an add-on for Styles, please share it with others. It's our goal to make the lives of theme developers and end-users much, much easier.
91
 
92
- If you would like to sell your add-on at [stylesplugin.com](http://stylesplugin.com), get in touch! Email us at `styles (at) stylesplugin.com` or find us on Twitter as [@stylesplugin](http://twitter.com/stylesplugin).
93
-
94
  = Will this plugin slow down my site? =
95
 
96
- No! Styles is very careful about only loading what is needed to get its job done. Once you're done editing, stylesheets are cached and loaded for your sites users as quickly as possible.
 
 
97
 
98
  == Changelog ==
99
 
 
 
 
 
 
 
 
100
  = 1.1.10 =
101
 
102
  * New: Linked auto-install for styles-twentyfifteen by @dim.
1
  === Styles ===
2
  Contributors: pdclark, elusivelight
3
  Plugin URI: http://stylesplugin.com
4
+ Author URI: http://profiles.wordpress.org/pdclark
5
  Tags: css, stylesheet, appearance, customize, customizer, colors, color picker, background, fonts, google fonts, user interface, twenty ten, twenty eleven, twenty twelve, twenty thirteen, genesis
6
  Requires at least: 3.4
7
+ Tested up to: 4.7.4
8
+ Stable tag: 1.2
9
 
10
  Be creative with colors and fonts. Styles changes everything.
11
 
31
 
32
  Styles and options for all built-in WordPress themes are free. More themes are available at [StylesPlugin.com](http://stylesplugin.com).
33
 
34
+ **Free Theme Support Add-ons**
35
 
36
+ * [Twenty Ten](https://wordpress.org/plugins/styles-twentyten/)
37
+ * [Twenty Eleven](https://wordpress.org/plugins/styles-twentyeleven/)
38
+ * [Twenty Twelve](https://wordpress.org/plugins/styles-twentytwelve/)
39
+ * [Twenty Thirteen](https://wordpress.org/plugins/styles-twentythirteen/)
40
+ * [Twenty Fourteen](https://wordpress.org/plugins/styles-twentyfourteen/)
41
+ * [Twenty Fifteen](https://wordpress.org/plugins/styles-twentyfifteen/)
42
 
43
  **Styles for Genesis**
44
 
52
 
53
  **Contact**
54
 
55
+ * [Support Services](http://stylesplugin.com/support)
56
  * [Review this plugin](http://wordpress.org/support/view/plugin-reviews/styles)
 
57
 
58
  == Installation ==
59
 
73
 
74
  = Why is this plugin free? =
75
 
76
+ Styles provides an interface for quickly adding options to the WordPress Customizer.
77
+ This framework is free. Small add-on plugins connect it to themes.
78
+ [Paid Support Services](http://stylesplugin.com/support) allow us to extend the plugin, adding options for themes or site features according to your requests.
 
 
 
79
 
80
  = Does Styles support my theme? =
81
 
82
  Maybe! We have additional themes available available at [StylesPlugin.com](http://stylesplugin.com). If you don't find your theme there, [watch this walkthrough](http://www.youtube.com/playlist?list=PLxj61Fojm1RGevBh10U2qCqjwoH4Awo-P) for a developer's guide on how to add support. Adding one option takes only one line of code.
83
 
84
+ If coding isn't for you, [contact us for help](http://stylesplugin.com/support) adding options to your theme.
85
+
86
  = I'd like to distribute a theme add-on I created for Styles =
87
 
88
  If you [watched the walkthrough](http://www.youtube.com/playlist?list=PLxj61Fojm1RGevBh10U2qCqjwoH4Awo-P) and created an add-on for Styles, please share it with others. It's our goal to make the lives of theme developers and end-users much, much easier.
89
 
 
 
90
  = Will this plugin slow down my site? =
91
 
92
+ No! Styles is very careful about only loading what is needed to get its job done.
93
+ Once done editing, stylesheets are cached and loaded for your sites users as quickly as possible.
94
+ In non-editing mode, Styles only outputs one cached CSS block to your site's header.
95
 
96
  == Changelog ==
97
 
98
+ = 1.2 =
99
+
100
+ * New: Links to [support services](http://stylesplugin.com/support).
101
+ * New: Links to free themes in readme.
102
+ * New: Dismissable notices.
103
+ * New: PHP7 compatability. Thanks [@davidbe929](https://wordpress.org/support/topic/php7-non-compatibility/).
104
+
105
  = 1.1.10 =
106
 
107
  * New: Linked auto-install for styles-twentyfifteen by @dim.
styles.php CHANGED
@@ -2,10 +2,10 @@
2
  /*
3
  Plugin Name: Styles
4
  Plugin URI: http://stylesplugin.com
5
- Description: Change the appearance of your theme using the <a href="customize.php">WordPress Customizer</a>. Styles changes everything.
6
- Version: 1.1.10
7
  Author: Paul Clark
8
- Author URI: http://pdclark.com
9
  License: GPLv2
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
  */
2
  /*
3
  Plugin Name: Styles
4
  Plugin URI: http://stylesplugin.com
5
+ Description: Change the appearance of your theme using the <a href="customize.php">Customizer</a>. Most default themes supported via free add-ons on WordPress.org (see <a href="http://wordpress.org/plugins/styles" target="_blank">links in readme</a>). Custom support and theme additions available via <a href="http://stylesplugin.com/support">Styles Support Services</a>.
6
+ Version: 1.2
7
  Author: Paul Clark
8
+ Author URI: http://profiles.wordpress.org/pdclark
9
  License: GPLv2
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
  */