PluginProbe
Copy Anything to Clipboard for WordPress – Copy Button, Copy Text & Copy Code / 5.5.4
Copy Anything to Clipboard for WordPress – Copy Button, Copy Text & Copy Code v5.5.4
5.5.4 5.5.3 3.1.0 3.2.0 3.2.1 3.3.0 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.6.0 3.7.0 3.8.0 3.8.1 3.8.2 3.8.3 4.0.0 4.0.2 4.0.3 4.0.4 4.0.5 4.1.0 All 79 releases
copy-the-code / includes / elementor / widgets / code-snippet / widget.php

widget.php in Copy Anything to Clipboard for WordPress – Copy Button, Copy Text & Copy Code 5.5.4, at includes/elementor/widgets/code-snippet/widget.php

362 lines 9.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Elementor Code Snippet Block
5 *
6 * @package CTC
7 * @since 5.0.0
8 */
9 namespace CTC\Elementor\Block;
10
11 use CTC\Helpers;
12 use Elementor\Widget_Base;
13 use Elementor\Controls_Manager;
14 /**
15 * Code Snippet Block
16 *
17 * @since 5.0.0
18 */
19 class CodeSnippet extends Widget_Base {
20 /**
21 * Constructor
22 *
23 * @param array $data
24 * @param array $args
25 *
26 * @since 5.0.0
27 */
28 public function __construct( $data = [], $args = null ) {
29 parent::__construct( $data, $args );
30 // Register assets; Elementor enqueues via get_*_depends() when used.
31 wp_register_style(
32 'ctc-blocks-core',
33 CTC_URI . 'includes/assets/css/style.css',
34 [],
35 CTC_VER,
36 'all'
37 );
38 wp_register_script(
39 'ctc-lib-core',
40 CTC_URI . 'assets/frontend/js/lib/ctc.js',
41 ['jquery'],
42 CTC_VER,
43 true
44 );
45 wp_register_script(
46 'ctc-blocks-core',
47 CTC_URI . 'includes/assets/js/core.js',
48 ['ctc-lib-core'],
49 CTC_VER,
50 true
51 );
52 // Prism JS scripts.
53 wp_register_script(
54 'ctc-prism-default',
55 CTC_URI . 'includes/assets/lib/prism/prism-default.js',
56 [],
57 CTC_VER,
58 true
59 );
60 wp_register_script(
61 'ctc-prism-coy',
62 CTC_URI . 'includes/assets/lib/prism/prism-coy.js',
63 [],
64 CTC_VER,
65 true
66 );
67 wp_register_script(
68 'ctc-prism-dark',
69 CTC_URI . 'includes/assets/lib/prism/prism-dark.js',
70 [],
71 CTC_VER,
72 true
73 );
74 wp_register_script(
75 'ctc-prism-funky',
76 CTC_URI . 'includes/assets/lib/prism/prism-funky.js',
77 [],
78 CTC_VER,
79 true
80 );
81 wp_register_script(
82 'ctc-prism-okaidia',
83 CTC_URI . 'includes/assets/lib/prism/prism-okaidia.js',
84 [],
85 CTC_VER,
86 true
87 );
88 wp_register_script(
89 'ctc-prism-solarizedlight',
90 CTC_URI . 'includes/assets/lib/prism/prism-solarizedlight.js',
91 [],
92 CTC_VER,
93 true
94 );
95 wp_register_script(
96 'ctc-prism-tomorrow',
97 CTC_URI . 'includes/assets/lib/prism/prism-tomorrow.js',
98 [],
99 CTC_VER,
100 true
101 );
102 wp_register_script(
103 'ctc-prism-twilight',
104 CTC_URI . 'includes/assets/lib/prism/prism-twilight.js',
105 [],
106 CTC_VER,
107 true
108 );
109 // Prism CSS styles.
110 wp_register_style(
111 'ctc-prism-default',
112 CTC_URI . 'includes/assets/lib/prism/prism-default.css',
113 [],
114 CTC_VER,
115 'all'
116 );
117 wp_register_style(
118 'ctc-prism-coy',
119 CTC_URI . 'includes/assets/lib/prism/prism-coy.css',
120 [],
121 CTC_VER,
122 'all'
123 );
124 wp_register_style(
125 'ctc-prism-dark',
126 CTC_URI . 'includes/assets/lib/prism/prism-dark.css',
127 [],
128 CTC_VER,
129 'all'
130 );
131 wp_register_style(
132 'ctc-prism-funky',
133 CTC_URI . 'includes/assets/lib/prism/prism-funky.css',
134 [],
135 CTC_VER,
136 'all'
137 );
138 wp_register_style(
139 'ctc-prism-okaidia',
140 CTC_URI . 'includes/assets/lib/prism/prism-okaidia.css',
141 [],
142 CTC_VER,
143 'all'
144 );
145 wp_register_style(
146 'ctc-prism-solarizedlight',
147 CTC_URI . 'includes/assets/lib/prism/prism-solarizedlight.css',
148 [],
149 CTC_VER,
150 'all'
151 );
152 wp_register_style(
153 'ctc-prism-tomorrow',
154 CTC_URI . 'includes/assets/lib/prism/prism-tomorrow.css',
155 [],
156 CTC_VER,
157 'all'
158 );
159 wp_register_style(
160 'ctc-prism-twilight',
161 CTC_URI . 'includes/assets/lib/prism/prism-twilight.css',
162 [],
163 CTC_VER,
164 'all'
165 );
166 wp_register_style(
167 'ctc-el-code-snippet',
168 CTC_URI . 'includes/elementor/widgets/code-snippet/style.css',
169 ['ctc-blocks-core'],
170 CTC_VER,
171 'all'
172 );
173 }
174
175 public function get_theme() {
176 return 'ctc-prism-' . apply_filters( 'ctc/elementor/code_snippet/theme', 'default' );
177 }
178
179 /**
180 * Get script dependencies
181 */
182 public function get_script_depends() {
183 $theme = $this->get_theme();
184 if ( $theme ) {
185 return [$theme, 'ctc-lib-core', 'ctc-blocks-core'];
186 }
187 return ['ctc-lib-core', 'ctc-blocks-core'];
188 }
189
190 /**
191 * Get style dependencies
192 */
193 public function get_style_depends() {
194 $theme = $this->get_theme();
195 if ( $theme ) {
196 return [$theme, 'ctc-el-code-snippet'];
197 }
198 return ['ctc-el-code-snippet'];
199 }
200
201 /**
202 * Get name
203 */
204 public function get_name() {
205 return 'ctc_code_snippet';
206 }
207
208 /**
209 * Get title
210 */
211 public function get_title() {
212 return esc_html__( 'Code Snippet', 'ctc' );
213 }
214
215 /**
216 * Get icon
217 */
218 public function get_icon() {
219 return 'eicon-code-bold';
220 }
221
222 /**
223 * Get categories
224 */
225 public function get_categories() {
226 return ['ctc'];
227 }
228
229 /**
230 * Get keywords
231 */
232 public function get_keywords() {
233 return Helpers::get_keywords( [
234 'code',
235 'snippet',
236 'copy code',
237 'copy snippet',
238 'copy code snippet'
239 ] );
240 }
241
242 /**
243 * Render
244 */
245 public function render() {
246 $code_snippet = $this->get_settings_for_display( 'code_snippet' );
247 $language = $this->get_settings_for_display( 'language' );
248 $file_name = $this->get_settings_for_display( 'file_name' );
249 $theme = $this->get_theme();
250 $languages = $this->get_languages();
251 $language = ( isset( $languages[$language] ) ? $languages[$language] : $language );
252 ?>
253 <div class="ctc-block ctc-code-snippet <?php
254 echo esc_attr( $theme );
255 ?>">
256 <div class="ctc-code-snippet-header">
257 <?php
258 if ( $file_name ) {
259 ?>
260 <div class='ctc-code-snippet-file-name'>
261 <?php
262 echo do_shortcode( '[copy]' . esc_html( $file_name ) . '[/copy]' );
263 ?>
264 </div>
265 <?php
266 }
267 ?>
268 <div class='ctc-code-snippet-language'><?php
269 echo esc_html( $language );
270 ?></div>
271 </div>
272 <div class="ctc-block-content">
273 <pre><code class="language-<?php
274 echo esc_attr( $language );
275 ?>"><?php
276 echo esc_html( $code_snippet );
277 ?></code></pre>
278 </div>
279 <div class="ctc-block-actions">
280 <?php
281 Helpers::render_copy_button( $this );
282 ?>
283 </div>
284 <textarea class="ctc-copy-content" style="display: none;"><?php
285 echo esc_html( $code_snippet );
286 ?></textarea>
287 </div>
288 <?php
289 }
290
291 /**
292 * Get languages
293 */
294 public function get_languages() {
295 return [
296 'markup' => esc_html__( 'Markup', 'ctc' ),
297 'html' => esc_html__( 'HTML', 'ctc' ),
298 'css' => esc_html__( 'CSS', 'ctc' ),
299 'javascript' => esc_html__( 'JavaScript', 'ctc' ),
300 'php' => esc_html__( 'PHP', 'ctc' ),
301 'python' => esc_html__( 'Python', 'ctc' ),
302 'ruby' => esc_html__( 'Ruby', 'ctc' ),
303 'sass' => esc_html__( 'Sass', 'ctc' ),
304 'scss' => esc_html__( 'SCSS', 'ctc' ),
305 'sql' => esc_html__( 'SQL', 'ctc' ),
306 'bash' => esc_html__( 'Bash', 'ctc' ),
307 'c' => esc_html__( 'C', 'ctc' ),
308 'cpp' => esc_html__( 'C++', 'ctc' ),
309 'csharp' => esc_html__( 'C#', 'ctc' ),
310 'go' => esc_html__( 'Go', 'ctc' ),
311 'java' => esc_html__( 'Java', 'ctc' ),
312 'kotlin' => esc_html__( 'Kotlin', 'ctc' ),
313 'objectivec' => esc_html__( 'Objective-C', 'ctc' ),
314 'swift' => esc_html__( 'Swift', 'ctc' ),
315 'typescript' => esc_html__( 'TypeScript', 'ctc' ),
316 'vbnet' => esc_html__( 'VB.Net', 'ctc' ),
317 ];
318 }
319
320 /**
321 * Register controls
322 */
323 protected function _register_controls() {
324 /**
325 * Group: Code Section
326 */
327 $this->start_controls_section( 'code_section', [
328 'label' => esc_html__( 'Code Snippet', 'ctc' ),
329 ] );
330 $this->add_control( 'file_name', [
331 'label' => esc_html__( 'File Name', 'ctc' ),
332 'type' => Controls_Manager::TEXT,
333 'default' => 'index.js',
334 ] );
335 $this->add_control( 'language', [
336 'label' => esc_html__( 'Language', 'ctc' ),
337 'type' => Controls_Manager::SELECT,
338 'default' => 'javascript',
339 'options' => $this->get_languages(),
340 ] );
341 $this->add_control( 'code_snippet', [
342 'label' => esc_html__( 'Code Snippet', 'ctc' ),
343 'type' => Controls_Manager::TEXTAREA,
344 'default' => 'console.log("Hello World");',
345 'rows' => 10,
346 ] );
347 $this->end_controls_section();
348 // Copy Button Section.
349 Helpers::register_copy_button_section( $this, [
350 'button_text' => esc_html__( 'Copy Code Snippet', 'ctc' ),
351 ] );
352 Helpers::register_pro_sections( $this, [
353 'Quote Box',
354 'Message Box',
355 'Quote',
356 'Author'
357 ] );
358 Helpers::register_copy_button_style_section( $this );
359 }
360
361 }
362