PluginProbe
Customify / 1.3.0
Customify v1.3.0
2.10.9 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.7.1 1.3.0 1.3.1 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.6.0 1.6.0.1 1.6.5 1.7.0 1.7.1 All 77 releases
customify / features / class-CSS_Editor.php

class-CSS_Editor.php in Customify 1.3.0, at features/class-CSS_Editor.php

203 lines 6.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 class Customify_CSS_Live_Editor {
4
5 /**
6 * Instance of this class.
7 * @since 1.0.0
8 * @var object
9 */
10 protected static $instance = null;
11
12 protected function __construct() {
13
14 add_action( 'customify_create_custom_control', array( $this, 'cle_create_custom_control' ), 10, 1 );
15 add_action( 'customize_controls_enqueue_scripts', array( $this, 'enqueue_admin_customizer_styles' ), 10 );
16 $load_location = PixCustomifyPlugin::get_plugin_option( 'style_resources_location', 'wp_head' );
17
18 if ( function_exists( 'wp_custom_css_cb' ) ) {
19 remove_action( 'wp_head', 'wp_custom_css_cb', 11 );
20 add_action( $load_location, 'wp_custom_css_cb', 999999999 );
21 }
22
23 //Check the WordPress version and if there are known problems disable it
24 add_filter( 'customify_css_live_editor_enabled', array( $this, 'disable_if_wp_incompatible' ), 10, 1 );
25 }
26
27 /**
28 * Return an instance of this class.
29 * @since 1.0.0
30 * @return object A single instance of this class.
31 */
32 public static function get_instance() {
33
34 // If the single instance hasn't been set, set it now.
35 if ( null == self::$instance ) {
36 self::$instance = new self;
37 }
38
39 return self::$instance;
40 }
41
42 function enqueue_admin_customizer_styles() {
43
44 $dir = plugin_dir_url( __FILE__ );
45 $dir = rtrim( $dir, 'features/' );
46
47 wp_enqueue_script( 'customify-ace-editor', $dir . '/js/ace/ace.js', array( 'jquery' ), false, true );
48
49 if ( ! apply_filters( 'customify_css_live_editor_enabled', true ) ) {
50 return ;
51 }
52
53 wp_enqueue_script( 'live-css-editor', $dir . '/js/live_css_editor.js', array( 'customify-ace-editor' ), false, true );
54 }
55
56 function cle_create_custom_control( $wp_customize ) {
57 // Allow others to short-circuit us
58 if ( ! apply_filters( 'customify_css_live_editor_enabled', true ) ) {
59
60 // port CSS if
61 if ( function_exists( 'wp_update_custom_css_post' ) ) {
62 // Migrate any existing theme CSS to the core option added in WordPress 4.7.
63 $store_type = PixCustomifyPlugin::get_plugin_option( 'values_store_mod', 'option' );
64
65 $default_css = __( "/*
66 * Welcome to the Custom CSS Editor
67 *
68 * CSS (Cascading Style Sheets) is a language that helps
69 * the browser render your website. You may remove these
70 * lines and get started with your own customizations.
71 *
72 * The generated code will be placed after the theme
73 * stylesheets, which means that your rules can take
74 * precedence and override the theme CSS rules. Just
75 * write here what you want to change, you don't need
76 * to copy all your theme's stylesheet content.
77 *
78 * Getting started with CSS (tutorial):
79 * http://bit.ly/css-getting-started
80 */
81
82 /* An example of a Custom CSS Snippet */
83 selector {
84 color: green;
85 }", 'customify_txtd' );
86
87 if ( $store_type === 'option' ) {
88 $CSS = get_option( 'live_css_edit' );
89 } elseif ( $store_type === 'theme_mod' ) {
90 $CSS = get_theme_mod( 'live_css_edit' );
91 }
92
93 if ( ! empty( $CSS ) && $default_css !== $CSS ) {
94
95 $CSS = str_replace( $default_css, '', $CSS );
96
97 $core_css = wp_get_custom_css(); // Preserve any CSS already added to the core option.
98 $return = wp_update_custom_css_post( $core_css . $CSS );
99 if ( ! is_wp_error( $return ) ) {
100 // Remove the old theme_mod, so that the CSS is stored in only one place moving forward.
101 remove_theme_mod( 'custom_theme_css' );
102 if ( $store_type === 'option' ) {
103 $CSS = delete_option( 'live_css_edit' );
104 } elseif ( $store_type === 'theme_mod' ) {
105 $CSS = remove_theme_mod( 'live_css_edit' );
106 }
107 }
108 }
109 }
110
111 return;
112 }
113
114 $wp_customize->add_section( 'live_css_edit_section', array(
115 'priority' => 11,
116 'capability' => 'edit_theme_options',
117 'title' => __( 'CSS Editor', 'customify_txtd' ),
118 ) );
119
120 $saving_type = PixCustomifyPlugin::get_plugin_option( 'values_store_mod', 'option' );
121
122 $wp_customize->add_setting( 'live_css_edit', array(
123 'type' => $saving_type,
124 'label' => __( 'CSS Editor', 'customify_txtd' ),
125 'capability' => 'edit_theme_options',
126 'transport' => 'postMessage',
127 'default' => __( "/*
128 * Welcome to the Custom CSS Editor
129 *
130 * CSS (Cascading Style Sheets) is a language that helps
131 * the browser render your website. You may remove these
132 * lines and get started with your own customizations.
133 *
134 * The generated code will be placed after the theme
135 * stylesheets, which means that your rules can take
136 * precedence and override the theme CSS rules. Just
137 * write here what you want to change, you don't need
138 * to copy all your theme's stylesheet content.
139 *
140 * Getting started with CSS (tutorial):
141 * http://bit.ly/css-getting-started
142 */
143
144 /* An example of a Custom CSS Snippet */
145 selector {
146 color: green;
147 }", 'customify_txtd' )
148 ) );
149
150 $this_control = new Pix_Customize_CSS_Editor_Control(
151 $wp_customize,
152 'live_css_edit_control',
153 array(
154 'label' => __( 'Edit Live Css', 'customify_txtd' ),
155 'section' => 'live_css_edit_section',
156 'settings' => 'live_css_edit',
157 )
158 );
159 $wp_customize->add_control( $this_control );
160 }
161
162 function output_dynamic_style() {
163 // Allow others to short-circuit us
164 if ( ! apply_filters( 'customify_css_live_editor_enabled', true ) ) {
165 return;
166 }
167
168 $store_type = PixCustomifyPlugin::get_plugin_option( 'values_store_mod', 'option' );
169 if ( $store_type === 'option' ) {
170 $output = get_option( 'live_css_edit' );
171 } elseif ( $store_type === 'theme_mod' ) {
172 $output = get_theme_mod( 'live_css_edit' );
173 }
174
175 if ( empty( $output ) ) {
176 return;
177 } ?>
178 <style id="customify_css_editor_output">
179 <?php echo $output; ?>
180 </style>
181 <?php
182 }
183
184 function disable_if_wp_incompatible( $enabled ) {
185 global $wp_version;
186
187 // WordPress 4.7 introduced a Customizer CSS editor that conflicts with our own
188 // It's best to leave only the one in core
189 // So only load our CSS editor for WP version smaller than 4.7
190 // We use 4.6.9 to catch the release candidates also
191 if ( version_compare( $wp_version, '4.6.9', '>=' ) ) {
192 return false;
193 }
194
195 return $enabled;
196 }
197 }
198
199 $customify_CSS_Editor = Customify_CSS_Live_Editor::get_instance();
200
201
202
203