PluginProbe
Customify / 1.5.5
Customify v1.5.5
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.5.5, at features/class-CSS_Editor.php

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