Version Description
- Tested with WP 5.9
- Fixed some https links
- Fix: file get contents do not receive LOCK_EX flag
- Fix: the .min files weren't loaded
Download this release
Release Info
Developer | lordspace |
Plugin | Child Theme Creator by Orbisius |
Version | 1.5.4 |
Comparing to | |
See all releases |
Code changes from version 1.5.2 to 1.5.4
- addons/clipboard/share/clipboard-js/readme.md +5 -5
- nbproject/private/config.properties +0 -0
- nbproject/private/private.properties +0 -6
- nbproject/private/private.xml +0 -148
- nbproject/project.properties +0 -7
- nbproject/project.xml +0 -9
- orbisius-child-theme-creator.php +139 -87
- readme.txt +17 -4
addons/clipboard/share/clipboard-js/readme.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1 |
# clipboard.js
|
2 |
|
3 |
-
[![Build Status](
|
4 |
![Killing Flash](https://img.shields.io/badge/killing-flash-brightgreen.svg?style=flat)
|
5 |
|
6 |
> Modern copy to clipboard. No Flash. Just 3kb gzipped.
|
@@ -39,7 +39,7 @@ new Clipboard('.btn');
|
|
39 |
|
40 |
Internally, we need to fetch all elements that matches with your selector and attach event listeners for each one. But guess what? If you have hundreds of matches, this operation can consume a lot of memory.
|
41 |
|
42 |
-
For this reason we use [event delegation](
|
43 |
|
44 |
# Usage
|
45 |
|
@@ -125,7 +125,7 @@ For a live demonstration, go to this [site](https://clipboardjs.com/) and open y
|
|
125 |
|
126 |
Each application has different design needs, that's why clipboard.js does not include any CSS or built-in tooltip solution.
|
127 |
|
128 |
-
The tooltips you see on the [demo site](https://clipboardjs.com/) were built using [GitHub's Primer](
|
129 |
|
130 |
## Advanced Options
|
131 |
|
@@ -168,7 +168,7 @@ clipboard.destroy();
|
|
168 |
|
169 |
## Browser Support
|
170 |
|
171 |
-
This library relies on both [Selection](https://developer.mozilla.org/en-US/docs/Web/API/Selection) and [execCommand](https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand) APIs. The first one is [supported by all browsers](
|
172 |
|
173 |
| <img src="https://clipboardjs.com/assets/images/chrome.png" width="48px" height="48px" alt="Chrome logo"> | <img src="https://clipboardjs.com/assets/images/edge.png" width="48px" height="48px" alt="Edge logo"> | <img src="https://clipboardjs.com/assets/images/firefox.png" width="48px" height="48px" alt="Firefox logo"> | <img src="https://clipboardjs.com/assets/images/ie.png" width="48px" height="48px" alt="Internet Explorer logo"> | <img src="https://clipboardjs.com/assets/images/opera.png" width="48px" height="48px" alt="Opera logo"> | <img src="https://clipboardjs.com/assets/images/safari.png" width="48px" height="48px" alt="Safari logo"> |
|
174 |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
@@ -186,4 +186,4 @@ Install for [Chrome](https://chrome.google.com/webstore/detail/codecopy/fkbfebkc
|
|
186 |
|
187 |
## License
|
188 |
|
189 |
-
[MIT License](
|
1 |
# clipboard.js
|
2 |
|
3 |
+
[![Build Status](https://img.shields.io/travis/zenorocha/clipboard.js/master.svg?style=flat)](https://travis-ci.org/zenorocha/clipboard.js)
|
4 |
![Killing Flash](https://img.shields.io/badge/killing-flash-brightgreen.svg?style=flat)
|
5 |
|
6 |
> Modern copy to clipboard. No Flash. Just 3kb gzipped.
|
39 |
|
40 |
Internally, we need to fetch all elements that matches with your selector and attach event listeners for each one. But guess what? If you have hundreds of matches, this operation can consume a lot of memory.
|
41 |
|
42 |
+
For this reason we use [event delegation](https://stackoverflow.com/questions/1687296/what-is-dom-event-delegation) which replaces multiple event listeners with just a single listener. After all, [#perfmatters](https://twitter.com/hashtag/perfmatters).
|
43 |
|
44 |
# Usage
|
45 |
|
125 |
|
126 |
Each application has different design needs, that's why clipboard.js does not include any CSS or built-in tooltip solution.
|
127 |
|
128 |
+
The tooltips you see on the [demo site](https://clipboardjs.com/) were built using [GitHub's Primer](https://primercss.io/tooltips/). You may want to check that out if you're looking for a similar look and feel.
|
129 |
|
130 |
## Advanced Options
|
131 |
|
168 |
|
169 |
## Browser Support
|
170 |
|
171 |
+
This library relies on both [Selection](https://developer.mozilla.org/en-US/docs/Web/API/Selection) and [execCommand](https://developer.mozilla.org/en-US/docs/Web/API/Document/execCommand) APIs. The first one is [supported by all browsers](https://caniuse.com/#search=selection) while the second one is supported in the following browsers.
|
172 |
|
173 |
| <img src="https://clipboardjs.com/assets/images/chrome.png" width="48px" height="48px" alt="Chrome logo"> | <img src="https://clipboardjs.com/assets/images/edge.png" width="48px" height="48px" alt="Edge logo"> | <img src="https://clipboardjs.com/assets/images/firefox.png" width="48px" height="48px" alt="Firefox logo"> | <img src="https://clipboardjs.com/assets/images/ie.png" width="48px" height="48px" alt="Internet Explorer logo"> | <img src="https://clipboardjs.com/assets/images/opera.png" width="48px" height="48px" alt="Opera logo"> | <img src="https://clipboardjs.com/assets/images/safari.png" width="48px" height="48px" alt="Safari logo"> |
|
174 |
|:---:|:---:|:---:|:---:|:---:|:---:|
|
186 |
|
187 |
## License
|
188 |
|
189 |
+
[MIT License](https://zenorocha.mit-license.org/) © Zeno Rocha
|
nbproject/private/config.properties
DELETED
File without changes
|
nbproject/private/private.properties
DELETED
@@ -1,6 +0,0 @@
|
|
1 |
-
copy.src.files=false
|
2 |
-
copy.src.on.open=false
|
3 |
-
copy.src.target=
|
4 |
-
index.file=orbisius-child-theme-creator.php
|
5 |
-
run.as=LOCAL
|
6 |
-
url=http://localhost/wordpress313/
|
|
|
|
|
|
|
|
|
|
|
|
nbproject/private/private.xml
DELETED
@@ -1,148 +0,0 @@
|
|
1 |
-
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
-
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
|
3 |
-
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="36">
|
4 |
-
<file>
|
5 |
-
<url>assets/main.js</url>
|
6 |
-
<bookmark id="19">
|
7 |
-
<name/>
|
8 |
-
<line>109</line>
|
9 |
-
<key/>
|
10 |
-
</bookmark>
|
11 |
-
</file>
|
12 |
-
<file>
|
13 |
-
<url>orbisius-child-theme-creator.php</url>
|
14 |
-
<bookmark id="20">
|
15 |
-
<name/>
|
16 |
-
<line>104</line>
|
17 |
-
<key/>
|
18 |
-
</bookmark>
|
19 |
-
<bookmark id="34">
|
20 |
-
<name/>
|
21 |
-
<line>271</line>
|
22 |
-
<key/>
|
23 |
-
</bookmark>
|
24 |
-
<bookmark id="21">
|
25 |
-
<name/>
|
26 |
-
<line>725</line>
|
27 |
-
<key/>
|
28 |
-
</bookmark>
|
29 |
-
<bookmark id="15">
|
30 |
-
<name/>
|
31 |
-
<line>1503</line>
|
32 |
-
<key/>
|
33 |
-
</bookmark>
|
34 |
-
<bookmark id="16">
|
35 |
-
<name/>
|
36 |
-
<line>1644</line>
|
37 |
-
<key/>
|
38 |
-
</bookmark>
|
39 |
-
<bookmark id="6">
|
40 |
-
<name/>
|
41 |
-
<line>1718</line>
|
42 |
-
<key/>
|
43 |
-
</bookmark>
|
44 |
-
<bookmark id="14">
|
45 |
-
<name/>
|
46 |
-
<line>1796</line>
|
47 |
-
<key/>
|
48 |
-
</bookmark>
|
49 |
-
<bookmark id="12">
|
50 |
-
<name/>
|
51 |
-
<line>2253</line>
|
52 |
-
<key/>
|
53 |
-
</bookmark>
|
54 |
-
<bookmark id="9">
|
55 |
-
<name/>
|
56 |
-
<line>2258</line>
|
57 |
-
<key/>
|
58 |
-
</bookmark>
|
59 |
-
<bookmark id="5">
|
60 |
-
<name/>
|
61 |
-
<line>2300</line>
|
62 |
-
<key/>
|
63 |
-
</bookmark>
|
64 |
-
<bookmark id="18">
|
65 |
-
<name/>
|
66 |
-
<line>2310</line>
|
67 |
-
<key/>
|
68 |
-
</bookmark>
|
69 |
-
<bookmark id="4">
|
70 |
-
<name/>
|
71 |
-
<line>2415</line>
|
72 |
-
<key/>
|
73 |
-
</bookmark>
|
74 |
-
<bookmark id="17">
|
75 |
-
<name/>
|
76 |
-
<line>2447</line>
|
77 |
-
<key/>
|
78 |
-
</bookmark>
|
79 |
-
<bookmark id="13">
|
80 |
-
<name/>
|
81 |
-
<line>2628</line>
|
82 |
-
<key/>
|
83 |
-
</bookmark>
|
84 |
-
<bookmark id="3">
|
85 |
-
<name/>
|
86 |
-
<line>2673</line>
|
87 |
-
<key/>
|
88 |
-
</bookmark>
|
89 |
-
</file>
|
90 |
-
<file>
|
91 |
-
<url>addons/cloud_lib/assets/custom.js</url>
|
92 |
-
<bookmark id="29">
|
93 |
-
<name/>
|
94 |
-
<line>287</line>
|
95 |
-
<key/>
|
96 |
-
</bookmark>
|
97 |
-
<bookmark id="30">
|
98 |
-
<name/>
|
99 |
-
<line>379</line>
|
100 |
-
<key/>
|
101 |
-
</bookmark>
|
102 |
-
<bookmark id="33">
|
103 |
-
<name/>
|
104 |
-
<line>419</line>
|
105 |
-
<key/>
|
106 |
-
</bookmark>
|
107 |
-
</file>
|
108 |
-
<file>
|
109 |
-
<url>addons/cloud_lib/lib/snippet_lib.php</url>
|
110 |
-
<bookmark id="28">
|
111 |
-
<name/>
|
112 |
-
<line>355</line>
|
113 |
-
<key/>
|
114 |
-
</bookmark>
|
115 |
-
<bookmark id="27">
|
116 |
-
<name/>
|
117 |
-
<line>355</line>
|
118 |
-
<key/>
|
119 |
-
</bookmark>
|
120 |
-
<bookmark id="26">
|
121 |
-
<name/>
|
122 |
-
<line>483</line>
|
123 |
-
<key/>
|
124 |
-
</bookmark>
|
125 |
-
</file>
|
126 |
-
<file>
|
127 |
-
<url>orbisius-child_theme_creator.php</url>
|
128 |
-
<bookmark id="2">
|
129 |
-
<name/>
|
130 |
-
<line>379</line>
|
131 |
-
<key/>
|
132 |
-
</bookmark>
|
133 |
-
</file>
|
134 |
-
</editor-bookmarks>
|
135 |
-
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
|
136 |
-
<group name="qsandbox"/>
|
137 |
-
<group name="Go359">
|
138 |
-
<file>file:/C:/Copy/Dropbox/cloud/projects/default/htdocs/wordpress313/wp-content/plugins/orbisius-child-theme-creator/orbisius-child-theme-creator.php</file>
|
139 |
-
<file>file:/C:/Copy/Dropbox/cloud/projects/default/htdocs/wordpress313/wp-content/plugins/orbisius-child-theme-creator/readme.txt</file>
|
140 |
-
</group>
|
141 |
-
<group name="qSandbox"/>
|
142 |
-
<group>
|
143 |
-
<file>file:/C:/Copy/Dropbox/cloud/projects/default/htdocs/wordpress313/wp-content/plugins/orbisius-child-theme-creator/assets/main.css</file>
|
144 |
-
<file>file:/C:/Copy/Dropbox/cloud/projects/default/htdocs/wordpress313/wp-content/plugins/orbisius-child-theme-creator/assets/main.min.css</file>
|
145 |
-
<file>file:/C:/Copy/Dropbox/cloud/projects/default/htdocs/wordpress313/wp-content/plugins/orbisius-child-theme-creator/orbisius-child-theme-creator.php</file>
|
146 |
-
</group>
|
147 |
-
</open-files>
|
148 |
-
</project-private>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
nbproject/project.properties
DELETED
@@ -1,7 +0,0 @@
|
|
1 |
-
include.path=${php.global.include.path}
|
2 |
-
php.version=PHP_54
|
3 |
-
source.encoding=UTF-8
|
4 |
-
src.dir=.
|
5 |
-
tags.asp=false
|
6 |
-
tags.short=true
|
7 |
-
web.root=.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
nbproject/project.xml
DELETED
@@ -1,9 +0,0 @@
|
|
1 |
-
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
-
<project xmlns="http://www.netbeans.org/ns/project/1">
|
3 |
-
<type>org.netbeans.modules.php.project</type>
|
4 |
-
<configuration>
|
5 |
-
<data xmlns="http://www.netbeans.org/ns/php-project/1">
|
6 |
-
<name>orbisius-child_theme_creator</name>
|
7 |
-
</data>
|
8 |
-
</configuration>
|
9 |
-
</project>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
orbisius-child-theme-creator.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: Orbisius Child Theme Creator
|
4 |
Plugin URI: https://orbisius.com/products/wordpress-plugins/orbisius-child-theme-creator/
|
5 |
Description: This plugin allows you to quickly create child themes from any theme that you have currently installed on your site/blog.
|
6 |
-
Version: 1.5.
|
7 |
Author: Svetoslav Marinov (Slavi)
|
8 |
Author URI: https://orbisius.com
|
9 |
*/
|
@@ -423,51 +423,12 @@ function orbisius_child_theme_creator_settings_page() {
|
|
423 |
<li>Customize the child theme</li>
|
424 |
</ul>
|
425 |
|
426 |
-
<iframe width="560" height="315" src="https://youtube.com/embed/BZUVq6ZTv-o" frameborder="0" allowfullscreen></iframe>
|
427 |
|
428 |
</div> <!-- .inside -->
|
429 |
|
430 |
</div> <!-- .postbox -->
|
431 |
|
432 |
-
<div class="postbox">
|
433 |
-
<?php
|
434 |
-
$plugin_data = orbisius_child_theme_creator_get_plugin_data();
|
435 |
-
|
436 |
-
$app_link = urlencode($plugin_data['PluginURI']);
|
437 |
-
$app_title = urlencode($plugin_data['Name']);
|
438 |
-
$app_descr = urlencode($plugin_data['Description']);
|
439 |
-
?>
|
440 |
-
<h3>Share</h3>
|
441 |
-
<p>
|
442 |
-
<!-- AddThis Button BEGIN -->
|
443 |
-
<div class="addthis_toolbox addthis_default_style addthis_32x32_style">
|
444 |
-
<a class="addthis_button_facebook" addthis:url="<?php echo $app_link ?>" addthis:title="<?php echo $app_title ?>" addthis:description="<?php echo $app_descr ?>"></a>
|
445 |
-
<a class="addthis_button_twitter" addthis:url="<?php echo $app_link ?>" addthis:title="<?php echo $app_title ?>" addthis:description="<?php echo $app_descr ?>"></a>
|
446 |
-
<a class="addthis_button_google_plusone" g:plusone:count="false" addthis:url="<?php echo $app_link ?>" addthis:title="<?php echo $app_title ?>" addthis:description="<?php echo $app_descr ?>"></a>
|
447 |
-
<a class="addthis_button_linkedin" addthis:url="<?php echo $app_link ?>" addthis:title="<?php echo $app_title ?>" addthis:description="<?php echo $app_descr ?>"></a>
|
448 |
-
<a class="addthis_button_email" addthis:url="<?php echo $app_link ?>" addthis:title="<?php echo $app_title ?>" addthis:description="<?php echo $app_descr ?>"></a>
|
449 |
-
<a class="addthis_button_myspace" addthis:url="<?php echo $app_link ?>" addthis:title="<?php echo $app_title ?>" addthis:description="<?php echo $app_descr ?>"></a>
|
450 |
-
<a class="addthis_button_google" addthis:url="<?php echo $app_link ?>" addthis:title="<?php echo $app_title ?>" addthis:description="<?php echo $app_descr ?>"></a>
|
451 |
-
<a class="addthis_button_digg" addthis:url="<?php echo $app_link ?>" addthis:title="<?php echo $app_title ?>" addthis:description="<?php echo $app_descr ?>"></a>
|
452 |
-
<a class="addthis_button_delicious" addthis:url="<?php echo $app_link ?>" addthis:title="<?php echo $app_title ?>" addthis:description="<?php echo $app_descr ?>"></a>
|
453 |
-
<a class="addthis_button_stumbleupon" addthis:url="<?php echo $app_link ?>" addthis:title="<?php echo $app_title ?>" addthis:description="<?php echo $app_descr ?>"></a>
|
454 |
-
<a class="addthis_button_tumblr" addthis:url="<?php echo $app_link ?>" addthis:title="<?php echo $app_title ?>" addthis:description="<?php echo $app_descr ?>"></a>
|
455 |
-
<a class="addthis_button_favorites" addthis:url="<?php echo $app_link ?>" addthis:title="<?php echo $app_title ?>" addthis:description="<?php echo $app_descr ?>"></a>
|
456 |
-
<a class="addthis_button_compact"></a>
|
457 |
-
</div>
|
458 |
-
<!-- The JS code is in the footer -->
|
459 |
-
|
460 |
-
<script type="text/javascript">
|
461 |
-
var addthis_config = {"data_track_clickback": true};
|
462 |
-
var addthis_share = {
|
463 |
-
templates: {twitter: 'Check out {{title}} #WordPress #plugin at {{lurl}}'}
|
464 |
-
}
|
465 |
-
</script>
|
466 |
-
<!-- AddThis Button START part2 -->
|
467 |
-
<script type="text/javascript" src="//s7.addthis.com/js/250/addthis_widget.js"></script>
|
468 |
-
<!-- AddThis Button END part2 -->
|
469 |
-
</div> <!-- .postbox -->
|
470 |
-
|
471 |
</div> <!-- .meta-box-sortables .ui-sortable -->
|
472 |
|
473 |
</div> <!-- post-body-content -->
|
@@ -832,14 +793,14 @@ function orbisius_child_theme_creator_tools_action() {
|
|
832 |
$child_custom_info = empty($_REQUEST['child_custom_info']) ? array() : $_REQUEST['child_custom_info'];
|
833 |
|
834 |
$parent_theme_base_dirname = trim($parent_theme_base_dirname);
|
835 |
-
$parent_theme_base_dirname = preg_replace('#[^\w
|
836 |
-
$parent_theme_base_dirname = preg_replace('#[_
|
837 |
$parent_theme_base_dirname = trim($parent_theme_base_dirname, '-');
|
838 |
|
839 |
if (!empty($_POST) || !empty($parent_theme_base_dirname)) {
|
840 |
if (!wp_verify_nonce($orbisius_child_theme_creator_nonce, basename(__FILE__) . '-action')) {
|
841 |
$errors[] = "Invalid action";
|
842 |
-
} elseif (empty($parent_theme_base_dirname) || !preg_match('#^[\w
|
843 |
$errors[] = "Parent theme's directory is invalid. May contain only [a-z0-9-]";
|
844 |
} elseif (strlen($parent_theme_base_dirname) > 70) {
|
845 |
$errors[] = "Parent theme's directory should be fewer than 70 characters long.";
|
@@ -858,8 +819,13 @@ function orbisius_child_theme_creator_tools_action() {
|
|
858 |
$installer->check_permissions();
|
859 |
$installer->copy_main_files();
|
860 |
$installer->generate_style();
|
861 |
-
|
862 |
-
|
|
|
|
|
|
|
|
|
|
|
863 |
|
864 |
// Does the user want to copy the functions.php?
|
865 |
// This is dangerous and can crash the site.
|
@@ -1046,6 +1012,9 @@ function orbisius_child_theme_creator_tools_action() {
|
|
1046 |
. "Switch theme to the new theme after it is created</label></li>\n";
|
1047 |
}
|
1048 |
|
|
|
|
|
|
|
1049 |
// This allows the users to specify title and description of the target child theme
|
1050 |
$customize_info_container_id = 'orbisius_ctc_cust_info_' . md5($src);
|
1051 |
|
@@ -1089,7 +1058,7 @@ function orbisius_child_theme_creator_tools_action() {
|
|
1089 |
<tr>
|
1090 |
<td>Version</td>
|
1091 |
<td><input type='text' id='cust_child_theme_ver_$customize_info_container_id' name='child_custom_info[ver]' value='' placeholder='$ver' /></td>
|
1092 |
-
</tr>
|
1093 |
</table>
|
1094 |
</div> <!-- /$customize_info_container_id -->
|
1095 |
";
|
@@ -1835,59 +1804,135 @@ class orbisius_child_theme_creator {
|
|
1835 |
/**
|
1836 |
*
|
1837 |
* @param str $file
|
|
|
1838 |
*/
|
1839 |
public function create_file($file, $params = array() ) {
|
1840 |
-
if ($file
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1841 |
$parent_base_dir = $params['parent_theme_basedir'];
|
1842 |
// this should be unique dir so use it for function
|
1843 |
$func_prefix = strtolower( $this->target_base_dirname );
|
1844 |
$func_prefix = 'orbisius_ct_' . preg_replace( '#[^\w]+#si', '_', $func_prefix );
|
1845 |
$func_prefix = trim( $func_prefix, '_' );
|
1846 |
|
1847 |
-
$file_tpl = <<<BUFF_EOF
|
1848 |
<?php
|
1849 |
/*
|
1850 |
-
* Generated By Orbisius Child Theme Creator - your favorite plugin for Child Theme creation :)
|
1851 |
-
* https://
|
1852 |
*
|
1853 |
* Unlike style.css, the functions.php of a child theme does not override its counterpart from the parent.
|
1854 |
* Instead, it is loaded in addition to the parent’s functions.php. (Specifically, it is loaded right before the parent theme's functions.php).
|
1855 |
* Source: https://codex.wordpress.org/Child_Themes#Using_functions.php
|
1856 |
*
|
1857 |
-
*
|
1858 |
-
*
|
1859 |
-
* Also
|
1860 |
*/
|
1861 |
|
1862 |
/**
|
1863 |
-
* Loads parent and child
|
1864 |
*/
|
1865 |
function {$func_prefix}_child_theme_enqueue_styles() {
|
1866 |
-
|
1867 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1868 |
|
1869 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1870 |
get_template_directory_uri() . '/style.css',
|
1871 |
array(),
|
1872 |
-
|
1873 |
);
|
1874 |
|
1875 |
-
wp_enqueue_style(
|
1876 |
get_stylesheet_directory_uri() . '/style.css',
|
1877 |
-
array(
|
1878 |
-
|
1879 |
);
|
1880 |
}
|
1881 |
|
1882 |
-
add_action( 'wp_enqueue_scripts', '{$func_prefix}_child_theme_enqueue_styles' );
|
1883 |
|
|
|
|
|
|
|
1884 |
BUFF_EOF;
|
1885 |
|
1886 |
-
$file_tpl = ltrim( $file_tpl );
|
|
|
|
|
|
|
|
|
1887 |
|
1888 |
$file = $this->target_dir_path . $file;
|
1889 |
-
file_put_contents($file, $file_tpl, LOCK_EX);
|
|
|
1890 |
}
|
|
|
|
|
1891 |
}
|
1892 |
}
|
1893 |
|
@@ -1948,6 +1993,13 @@ class orbisius_child_theme_creator_util {
|
|
1948 |
$file_name = preg_replace('#(?:\/+|\\+)#si', '/', $file_name);
|
1949 |
$file_name = ltrim($file_name, '/'); // rm leading /
|
1950 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1951 |
if (!empty($jail_root)) {
|
1952 |
$file_name = $jail_root . $file_name;
|
1953 |
}
|
@@ -1957,7 +2009,7 @@ class orbisius_child_theme_creator_util {
|
|
1957 |
|
1958 |
/**
|
1959 |
* Uses wp_kses to sanitize the data
|
1960 |
-
* @param
|
1961 |
* @return mixed: str/array
|
1962 |
* @throws Exception
|
1963 |
*/
|
@@ -2250,7 +2302,7 @@ class orbisius_child_theme_creator_html {
|
|
2250 |
// This makes certain options to have certain CSS class
|
2251 |
// which can be used to highlight the row
|
2252 |
// the key must start with __sys_CLASS_NAME
|
2253 |
-
if (preg_match('#__sys_([\w
|
2254 |
$label = str_replace($matches[0], '', $label);
|
2255 |
$selected .= " class='$matches[1]' ";
|
2256 |
}
|
@@ -2265,7 +2317,6 @@ class orbisius_child_theme_creator_html {
|
|
2265 |
}
|
2266 |
|
2267 |
public static function html_files_tree( $class = '', $files = array() ) {
|
2268 |
-
|
2269 |
$html = '<ul class="orbisius_folder_list">';
|
2270 |
|
2271 |
foreach ( $files as $item => $value ) {
|
@@ -2276,14 +2327,13 @@ class orbisius_child_theme_creator_html {
|
|
2276 |
$list_class = $is_folder ? 'orbisius_folder' : 'orbisius_file';
|
2277 |
$html .= '<li class="'.$list_class.'">' .$folder_checkbox . ( $is_folder ? orbisius_child_theme_creator_html::html_files_tree($class, $value) : '<label class="orbisius_file_label"><input type="checkbox" class="orb_files" name="'.$class.'_files_checkbox[]" value="'.$value.'" ><span class="dashicons dashicons-text-page"></span>'.$item.'</label>' ) . '</li>';
|
2278 |
}
|
|
|
2279 |
$html .= '</ul>';
|
2280 |
|
2281 |
return $html;
|
2282 |
-
|
2283 |
}
|
2284 |
}
|
2285 |
|
2286 |
-
|
2287 |
/**
|
2288 |
* This method creates 2 panes that the user is able to use to edit theme files.
|
2289 |
* Everythin happens with AJAX
|
@@ -2605,7 +2655,6 @@ function orbisius_ctc_theme_editor_no_auth_ajax() {
|
|
2605 |
function orbisius_ctc_theme_editor_ajax() {
|
2606 |
check_ajax_referer( 'orbisius_ctc_nonce' );
|
2607 |
|
2608 |
-
|
2609 |
$buff = 'INVALID AJAX SUB_CMD';
|
2610 |
|
2611 |
$req = orbisius_child_theme_creator_get_request();
|
@@ -2825,17 +2874,13 @@ function orbisius_ctc_theme_editor_check_syntax($theme_file_contents) {
|
|
2825 |
function orbisius_ctc_theme_editor_generate_dropdown() {
|
2826 |
$req = orbisius_child_theme_creator_get_request();
|
2827 |
$html_dropdown_theme_1_files = orbisius_ctc_generate_list_of_theme_files($req);
|
2828 |
-
$buff = orbisius_child_theme_creator_html::html_select(
|
2829 |
-
|
2830 |
return $buff;
|
2831 |
}
|
2832 |
|
2833 |
function orbisius_ctc_theme_editor_generate_files_tree() {
|
2834 |
-
|
2835 |
$req = orbisius_child_theme_creator_get_request();
|
2836 |
-
|
2837 |
$paths = orbisius_ctc_generate_list_of_theme_files($req);
|
2838 |
-
|
2839 |
$tree = orbisius_ctc_explode_tree( $paths, "/" );
|
2840 |
|
2841 |
if (!empty($req['theme_1'])) {
|
@@ -2843,17 +2888,22 @@ function orbisius_ctc_theme_editor_generate_files_tree() {
|
|
2843 |
} elseif (!empty($req['theme_2'])) {
|
2844 |
$name = 'theme_2_files';
|
2845 |
}
|
|
|
2846 |
$buff = orbisius_child_theme_creator_html::html_files_tree($name, $tree);
|
2847 |
|
2848 |
return $buff;
|
2849 |
}
|
2850 |
|
|
|
2851 |
// https://kvz.io/convert-anything-to-tree-structures-in-php.html
|
2852 |
function orbisius_ctc_explode_tree($array, $delimiter = '_', $baseval = false) {
|
2853 |
-
if ( !is_array($array) )
|
|
|
|
|
2854 |
|
2855 |
$split = '/' . preg_quote($delimiter, '/') . '/';
|
2856 |
$return_array = array();
|
|
|
2857 |
foreach ($array as $key => $val) {
|
2858 |
// Get parent parts and the current leaf
|
2859 |
$parts = preg_split($split, $key, -1, PREG_SPLIT_NO_EMPTY);
|
@@ -2886,6 +2936,7 @@ function orbisius_ctc_explode_tree($array, $delimiter = '_', $baseval = false) {
|
|
2886 |
return $return_array;
|
2887 |
}
|
2888 |
|
|
|
2889 |
|
2890 |
/**
|
2891 |
* This returns array of theme files
|
@@ -2893,16 +2944,15 @@ function orbisius_ctc_explode_tree($array, $delimiter = '_', $baseval = false) {
|
|
2893 |
* @return array
|
2894 |
*/
|
2895 |
function orbisius_ctc_generate_list_of_theme_files($req) {
|
2896 |
-
|
2897 |
-
|
2898 |
-
|
2899 |
-
$select_name = 'theme_1_file';
|
2900 |
|
2901 |
if (!empty($req['theme_1'])) {
|
2902 |
-
$theme_base_dir = empty($req['theme_1']) ? '' : preg_replace('#[^\w
|
2903 |
$theme_1_file = empty($req['theme_1_file']) ? 'style.css' : $req['theme_1_file'];
|
2904 |
} elseif (!empty($req['theme_2'])) {
|
2905 |
-
$theme_base_dir = empty($req['theme_2']) ? '' : preg_replace('#[^\w
|
2906 |
$theme_1_file = empty($req['theme_2_file']) ? 'style.css' : $req['theme_2_file'];
|
2907 |
$select_name = 'theme_2_file';
|
2908 |
} else {
|
@@ -2939,10 +2989,12 @@ function orbisius_ctc_theme_editor_manage_file( $cmd_id = 1 ) {
|
|
2939 |
return 'Missing data!';
|
2940 |
}
|
2941 |
|
2942 |
-
$buff =
|
|
|
|
|
|
|
2943 |
|
2944 |
$req = orbisius_child_theme_creator_get_request();
|
2945 |
-
|
2946 |
$theme_root = trailingslashit( get_theme_root() );
|
2947 |
|
2948 |
$theme_dir_regex = '#[^\w\-]#si';
|
@@ -2975,7 +3027,7 @@ function orbisius_ctc_theme_editor_manage_file( $cmd_id = 1 ) {
|
|
2975 |
}
|
2976 |
|
2977 |
if ($cmd_id == 1) {
|
2978 |
-
$buff = file_get_contents($theme_file
|
2979 |
} elseif ($cmd_id == 2) {
|
2980 |
$suff = '';
|
2981 |
|
@@ -3017,7 +3069,7 @@ function orbisius_ctc_theme_editor_manage_file( $cmd_id = 1 ) {
|
|
3017 |
}
|
3018 |
|
3019 |
elseif ($cmd_id == 5) { // zip
|
3020 |
-
$to = empty($req['email']) ? '' : preg_replace('#[^\w
|
3021 |
$status_rec = orbisius_ctc_theme_editor_zip_theme($theme_base_dir, $to);
|
3022 |
|
3023 |
if (function_exists('wp_send_json')) { // since WP 3.5
|
3 |
Plugin Name: Orbisius Child Theme Creator
|
4 |
Plugin URI: https://orbisius.com/products/wordpress-plugins/orbisius-child-theme-creator/
|
5 |
Description: This plugin allows you to quickly create child themes from any theme that you have currently installed on your site/blog.
|
6 |
+
Version: 1.5.4
|
7 |
Author: Svetoslav Marinov (Slavi)
|
8 |
Author URI: https://orbisius.com
|
9 |
*/
|
423 |
<li>Customize the child theme</li>
|
424 |
</ul>
|
425 |
|
426 |
+
<iframe width="560" height="315" src="https://youtube-nocookie.com/embed/BZUVq6ZTv-o" frameborder="0" allowfullscreen></iframe>
|
427 |
|
428 |
</div> <!-- .inside -->
|
429 |
|
430 |
</div> <!-- .postbox -->
|
431 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
432 |
</div> <!-- .meta-box-sortables .ui-sortable -->
|
433 |
|
434 |
</div> <!-- post-body-content -->
|
793 |
$child_custom_info = empty($_REQUEST['child_custom_info']) ? array() : $_REQUEST['child_custom_info'];
|
794 |
|
795 |
$parent_theme_base_dirname = trim($parent_theme_base_dirname);
|
796 |
+
$parent_theme_base_dirname = preg_replace('#[^\w\-]#si', '-', $parent_theme_base_dirname);
|
797 |
+
$parent_theme_base_dirname = preg_replace('#[_\-]+#si', '-', $parent_theme_base_dirname);
|
798 |
$parent_theme_base_dirname = trim($parent_theme_base_dirname, '-');
|
799 |
|
800 |
if (!empty($_POST) || !empty($parent_theme_base_dirname)) {
|
801 |
if (!wp_verify_nonce($orbisius_child_theme_creator_nonce, basename(__FILE__) . '-action')) {
|
802 |
$errors[] = "Invalid action";
|
803 |
+
} elseif (empty($parent_theme_base_dirname) || !preg_match('#^[\w\-]+$#si', $parent_theme_base_dirname)) {
|
804 |
$errors[] = "Parent theme's directory is invalid. May contain only [a-z0-9-]";
|
805 |
} elseif (strlen($parent_theme_base_dirname) > 70) {
|
806 |
$errors[] = "Parent theme's directory should be fewer than 70 characters long.";
|
819 |
$installer->check_permissions();
|
820 |
$installer->copy_main_files();
|
821 |
$installer->generate_style();
|
822 |
+
$installer->create_file( 'functions.php', $theme_setup_params );
|
823 |
+
|
824 |
+
if (!empty($_REQUEST['create_index'])) {
|
825 |
+
$installer->create_file( 'index.html', $theme_setup_params );
|
826 |
+
}
|
827 |
+
|
828 |
+
$installer->copy_parent_themes_options();
|
829 |
|
830 |
// Does the user want to copy the functions.php?
|
831 |
// This is dangerous and can crash the site.
|
1012 |
. "Switch theme to the new theme after it is created</label></li>\n";
|
1013 |
}
|
1014 |
|
1015 |
+
$buff .= "<li><label><input type='checkbox' id='orbisius_child_theme_creator_create_index' name='create_index' value='1' checked='checked' /> "
|
1016 |
+
. "Create index.html placeholder to prevent file listing in child theme directory</label></li>\n";
|
1017 |
+
|
1018 |
// This allows the users to specify title and description of the target child theme
|
1019 |
$customize_info_container_id = 'orbisius_ctc_cust_info_' . md5($src);
|
1020 |
|
1058 |
<tr>
|
1059 |
<td>Version</td>
|
1060 |
<td><input type='text' id='cust_child_theme_ver_$customize_info_container_id' name='child_custom_info[ver]' value='' placeholder='$ver' /></td>
|
1061 |
+
</tr>
|
1062 |
</table>
|
1063 |
</div> <!-- /$customize_info_container_id -->
|
1064 |
";
|
1804 |
/**
|
1805 |
*
|
1806 |
* @param str $file
|
1807 |
+
* @return bool
|
1808 |
*/
|
1809 |
public function create_file($file, $params = array() ) {
|
1810 |
+
if (strpos($file, '.html') !== false) {
|
1811 |
+
$default_buff = <<<'BUFF_EOF'
|
1812 |
+
<!DOCTYPE html>
|
1813 |
+
<html>
|
1814 |
+
<title>Hello</title>
|
1815 |
+
<body>
|
1816 |
+
<h3>Generated By Orbisius Child Theme Creator - your favorite plugin for WordPress Child Theme creation and editing :)</h3>
|
1817 |
+
|
1818 |
+
<br />
|
1819 |
+
Plugin URL: <a href="https://orbisius.com/products/wordpress-plugins/orbisius-child-theme-creator"
|
1820 |
+
title="WordPress Plugin for Child Theme creation"
|
1821 |
+
target="_blank">Orbisius Child Theme Creator</a>
|
1822 |
+
<br />
|
1823 |
+
</body>
|
1824 |
+
</html>
|
1825 |
+
BUFF_EOF;
|
1826 |
+
|
1827 |
+
$file_tpl = empty($params['buff']) ? $default_buff : $params['buff'];
|
1828 |
+
$full_file = $this->target_dir_path . ltrim($file, '/\\');
|
1829 |
+
$file_tpl = trim($file_tpl);
|
1830 |
+
|
1831 |
+
if (!file_exists($full_file) || !empty($params['override'])) {
|
1832 |
+
$res = file_put_contents($full_file, $file_tpl, LOCK_EX);
|
1833 |
+
return $res;
|
1834 |
+
}
|
1835 |
+
|
1836 |
+
return true;
|
1837 |
+
} elseif ($file == 'functions.php') {
|
1838 |
$parent_base_dir = $params['parent_theme_basedir'];
|
1839 |
// this should be unique dir so use it for function
|
1840 |
$func_prefix = strtolower( $this->target_base_dirname );
|
1841 |
$func_prefix = 'orbisius_ct_' . preg_replace( '#[^\w]+#si', '_', $func_prefix );
|
1842 |
$func_prefix = trim( $func_prefix, '_' );
|
1843 |
|
1844 |
+
$file_tpl = <<<'BUFF_EOF'
|
1845 |
<?php
|
1846 |
/*
|
1847 |
+
* Generated By Orbisius Child Theme Creator - your favorite plugin for Child Theme creation and editing :)
|
1848 |
+
* https://orbisius.com/products/wordpress-plugins/orbisius-child-theme-creator
|
1849 |
*
|
1850 |
* Unlike style.css, the functions.php of a child theme does not override its counterpart from the parent.
|
1851 |
* Instead, it is loaded in addition to the parent’s functions.php. (Specifically, it is loaded right before the parent theme's functions.php).
|
1852 |
* Source: https://codex.wordpress.org/Child_Themes#Using_functions.php
|
1853 |
*
|
1854 |
+
* When copying functions from the parent theme make sure you use function_exists( 'put_the_function_name_here' ) calls.
|
1855 |
+
* Otherwise having functions with the same name will crash the site.
|
1856 |
+
* Also when adding new functions do put prefix before the function names to ensure uniqueness.
|
1857 |
*/
|
1858 |
|
1859 |
/**
|
1860 |
+
* Loads parent theme's style first and then child theme's style.css so you can override parent styles
|
1861 |
*/
|
1862 |
function {$func_prefix}_child_theme_enqueue_styles() {
|
1863 |
+
global $wp_styles;
|
1864 |
+
|
1865 |
+
$parent_style = '{$func_prefix}_parent_style';
|
1866 |
+
$parent_base_dir = '{$parent_base_dir}';
|
1867 |
+
$child_dir_id = basename(get_stylesheet_directory());
|
1868 |
+
|
1869 |
+
// WP enqueues the child style automatically. We want to dequeue it so we can load parent first and child theme's css later
|
1870 |
+
// We'll also append the last modified times for versions and for better cache clean up.
|
1871 |
+
if ( ! empty( $wp_styles->queue ) ) {
|
1872 |
+
$srch_arr = [
|
1873 |
+
$parent_base_dir,
|
1874 |
+
$parent_base_dir . '-style',
|
1875 |
+
$parent_base_dir . '_style',
|
1876 |
+
$child_dir_id,
|
1877 |
+
$child_dir_id . '-style',
|
1878 |
+
$child_dir_id . '_style',
|
1879 |
+
];
|
1880 |
+
|
1881 |
+
foreach ( $wp_styles->queue as $registered_style_id ) {
|
1882 |
+
if ( in_array( $registered_style_id, $srch_arr ) ) {
|
1883 |
+
wp_dequeue_style( $registered_style_id );
|
1884 |
+
wp_deregister_style( $registered_style_id );
|
1885 |
+
}
|
1886 |
+
}
|
1887 |
+
}
|
1888 |
+
|
1889 |
+
// We use last modified as version as it's a reliable way to tell when the file was modified so
|
1890 |
+
// the browser can load the new file if necessary and not use the cached version.
|
1891 |
+
$parent_ver = time();
|
1892 |
+
$parent_style_css_file = get_template_directory() . '/style.css';
|
1893 |
|
1894 |
+
if (file_exists($parent_style_css_file)) {
|
1895 |
+
$parent_ver = filemtime($parent_style_css_file);
|
1896 |
+
} else {
|
1897 |
+
$v = wp_get_theme( $parent_base_dir )->get('Version');
|
1898 |
+
|
1899 |
+
if (!empty($v)) {
|
1900 |
+
$parent_ver = $v;
|
1901 |
+
}
|
1902 |
+
}
|
1903 |
+
|
1904 |
+
wp_enqueue_style( $parent_style,
|
1905 |
get_template_directory_uri() . '/style.css',
|
1906 |
array(),
|
1907 |
+
$parent_ver
|
1908 |
);
|
1909 |
|
1910 |
+
wp_enqueue_style( $parent_style . '_child_style',
|
1911 |
get_stylesheet_directory_uri() . '/style.css',
|
1912 |
+
array( $parent_style ),
|
1913 |
+
filemtime(get_stylesheet_directory() . '/style.css')
|
1914 |
);
|
1915 |
}
|
1916 |
|
1917 |
+
add_action( 'wp_enqueue_scripts', '{$func_prefix}_child_theme_enqueue_styles', 25 );
|
1918 |
|
1919 |
+
function {$func_prefix}_example_function() {
|
1920 |
+
// put some code here
|
1921 |
+
}
|
1922 |
BUFF_EOF;
|
1923 |
|
1924 |
+
$file_tpl = ltrim( $file_tpl ); // we want some trailing space
|
1925 |
+
|
1926 |
+
// It's Nowdoc so we have to replace php vars
|
1927 |
+
$file_tpl = str_replace('{$func_prefix}', $func_prefix, $file_tpl );
|
1928 |
+
$file_tpl = str_replace('{$parent_base_dir}', $parent_base_dir, $file_tpl );
|
1929 |
|
1930 |
$file = $this->target_dir_path . $file;
|
1931 |
+
$res = file_put_contents($file, $file_tpl, LOCK_EX);
|
1932 |
+
return $res;
|
1933 |
}
|
1934 |
+
|
1935 |
+
return false;
|
1936 |
}
|
1937 |
}
|
1938 |
|
1993 |
$file_name = preg_replace('#(?:\/+|\\+)#si', '/', $file_name);
|
1994 |
$file_name = ltrim($file_name, '/'); // rm leading /
|
1995 |
|
1996 |
+
// it seems sanitize_file_name confuses .min the WP sanitizer.
|
1997 |
+
// /assets/css/boxicons.min_.css
|
1998 |
+
if (stripos($file_name, '.min_.') !== false) {
|
1999 |
+
$file_name = str_replace('.min_.js', '.min.js', $file_name);
|
2000 |
+
$file_name = str_replace('.min_.css', '.min.css', $file_name);
|
2001 |
+
}
|
2002 |
+
|
2003 |
if (!empty($jail_root)) {
|
2004 |
$file_name = $jail_root . $file_name;
|
2005 |
}
|
2009 |
|
2010 |
/**
|
2011 |
* Uses wp_kses to sanitize the data
|
2012 |
+
* @param string|array $value
|
2013 |
* @return mixed: str/array
|
2014 |
* @throws Exception
|
2015 |
*/
|
2302 |
// This makes certain options to have certain CSS class
|
2303 |
// which can be used to highlight the row
|
2304 |
// the key must start with __sys_CLASS_NAME
|
2305 |
+
if (preg_match('#__sys_([\w\-]+)#si', $label, $matches)) {
|
2306 |
$label = str_replace($matches[0], '', $label);
|
2307 |
$selected .= " class='$matches[1]' ";
|
2308 |
}
|
2317 |
}
|
2318 |
|
2319 |
public static function html_files_tree( $class = '', $files = array() ) {
|
|
|
2320 |
$html = '<ul class="orbisius_folder_list">';
|
2321 |
|
2322 |
foreach ( $files as $item => $value ) {
|
2327 |
$list_class = $is_folder ? 'orbisius_folder' : 'orbisius_file';
|
2328 |
$html .= '<li class="'.$list_class.'">' .$folder_checkbox . ( $is_folder ? orbisius_child_theme_creator_html::html_files_tree($class, $value) : '<label class="orbisius_file_label"><input type="checkbox" class="orb_files" name="'.$class.'_files_checkbox[]" value="'.$value.'" ><span class="dashicons dashicons-text-page"></span>'.$item.'</label>' ) . '</li>';
|
2329 |
}
|
2330 |
+
|
2331 |
$html .= '</ul>';
|
2332 |
|
2333 |
return $html;
|
|
|
2334 |
}
|
2335 |
}
|
2336 |
|
|
|
2337 |
/**
|
2338 |
* This method creates 2 panes that the user is able to use to edit theme files.
|
2339 |
* Everythin happens with AJAX
|
2655 |
function orbisius_ctc_theme_editor_ajax() {
|
2656 |
check_ajax_referer( 'orbisius_ctc_nonce' );
|
2657 |
|
|
|
2658 |
$buff = 'INVALID AJAX SUB_CMD';
|
2659 |
|
2660 |
$req = orbisius_child_theme_creator_get_request();
|
2874 |
function orbisius_ctc_theme_editor_generate_dropdown() {
|
2875 |
$req = orbisius_child_theme_creator_get_request();
|
2876 |
$html_dropdown_theme_1_files = orbisius_ctc_generate_list_of_theme_files($req);
|
2877 |
+
$buff = orbisius_child_theme_creator_html::html_select('', null, $html_dropdown_theme_1_files);
|
|
|
2878 |
return $buff;
|
2879 |
}
|
2880 |
|
2881 |
function orbisius_ctc_theme_editor_generate_files_tree() {
|
|
|
2882 |
$req = orbisius_child_theme_creator_get_request();
|
|
|
2883 |
$paths = orbisius_ctc_generate_list_of_theme_files($req);
|
|
|
2884 |
$tree = orbisius_ctc_explode_tree( $paths, "/" );
|
2885 |
|
2886 |
if (!empty($req['theme_1'])) {
|
2888 |
} elseif (!empty($req['theme_2'])) {
|
2889 |
$name = 'theme_2_files';
|
2890 |
}
|
2891 |
+
|
2892 |
$buff = orbisius_child_theme_creator_html::html_files_tree($name, $tree);
|
2893 |
|
2894 |
return $buff;
|
2895 |
}
|
2896 |
|
2897 |
+
|
2898 |
// https://kvz.io/convert-anything-to-tree-structures-in-php.html
|
2899 |
function orbisius_ctc_explode_tree($array, $delimiter = '_', $baseval = false) {
|
2900 |
+
if ( !is_array($array) ) {
|
2901 |
+
return false;
|
2902 |
+
}
|
2903 |
|
2904 |
$split = '/' . preg_quote($delimiter, '/') . '/';
|
2905 |
$return_array = array();
|
2906 |
+
|
2907 |
foreach ($array as $key => $val) {
|
2908 |
// Get parent parts and the current leaf
|
2909 |
$parts = preg_split($split, $key, -1, PREG_SPLIT_NO_EMPTY);
|
2936 |
return $return_array;
|
2937 |
}
|
2938 |
|
2939 |
+
$test = &$return_array;
|
2940 |
|
2941 |
/**
|
2942 |
* This returns array of theme files
|
2944 |
* @return array
|
2945 |
*/
|
2946 |
function orbisius_ctc_generate_list_of_theme_files($req) {
|
2947 |
+
$theme_1_file = '';
|
2948 |
+
$theme_base_dir = '';
|
2949 |
+
$select_name = 'theme_1_file';
|
|
|
2950 |
|
2951 |
if (!empty($req['theme_1'])) {
|
2952 |
+
$theme_base_dir = empty($req['theme_1']) ? '' : preg_replace('#[^\w\-]#si', '', $req['theme_1']);
|
2953 |
$theme_1_file = empty($req['theme_1_file']) ? 'style.css' : $req['theme_1_file'];
|
2954 |
} elseif (!empty($req['theme_2'])) {
|
2955 |
+
$theme_base_dir = empty($req['theme_2']) ? '' : preg_replace('#[^\w\-]#si', '', $req['theme_2']);
|
2956 |
$theme_1_file = empty($req['theme_2_file']) ? 'style.css' : $req['theme_2_file'];
|
2957 |
$select_name = 'theme_2_file';
|
2958 |
} else {
|
2989 |
return 'Missing data!';
|
2990 |
}
|
2991 |
|
2992 |
+
$buff = '';
|
2993 |
+
$theme_dir = '';
|
2994 |
+
$theme_file = '';
|
2995 |
+
$theme_base_dir = '';
|
2996 |
|
2997 |
$req = orbisius_child_theme_creator_get_request();
|
|
|
2998 |
$theme_root = trailingslashit( get_theme_root() );
|
2999 |
|
3000 |
$theme_dir_regex = '#[^\w\-]#si';
|
3027 |
}
|
3028 |
|
3029 |
if ($cmd_id == 1) {
|
3030 |
+
$buff = file_get_contents($theme_file);
|
3031 |
} elseif ($cmd_id == 2) {
|
3032 |
$suff = '';
|
3033 |
|
3069 |
}
|
3070 |
|
3071 |
elseif ($cmd_id == 5) { // zip
|
3072 |
+
$to = empty($req['email']) ? '' : preg_replace('#[^\w\-\.@,\'"]#si', '', $req['email']);
|
3073 |
$status_rec = orbisius_ctc_theme_editor_zip_theme($theme_base_dir, $to);
|
3074 |
|
3075 |
if (function_exists('wp_send_json')) { // since WP 3.5
|
readme.txt
CHANGED
@@ -3,9 +3,9 @@ Contributors: lordspace,orbisius
|
|
3 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7APYDVPBCSY9A
|
4 |
Tags: theme,child theme,childtheme,childthemes,parent theme,child themes,CSS,styling,resposive design,design,custom themeing, shared hosting,theme editor theme,themes,wp,wordpress,orbisius,theme creator,custom theme,theme generator,css,css editor
|
5 |
Requires at least: 3.4
|
6 |
-
Tested up to: 5.
|
7 |
Requires PHP: 5.6
|
8 |
-
Stable tag: 1.5.
|
9 |
License: GPLv2 or later
|
10 |
|
11 |
Create Child Themes quickly and easily from any theme that you have currently installed on your site/blog.
|
@@ -80,7 +80,7 @@ Go to Admin > Appearance > Orbisius Child Theme Creator then click on the theme
|
|
80 |
Go to Admin > Appearance > Orbisius Theme Editor then click on the theme you like and the child theme will be created for you.
|
81 |
|
82 |
= Demo =
|
83 |
-
|
84 |
|
85 |
= Premium =
|
86 |
Do you want to be able to preview themes from within the 2 editors?
|
@@ -163,13 +163,26 @@ Let's talk.
|
|
163 |
title="If you want a custom web/mobile app/plugin developed contact us. This opens in a new window/tab"
|
164 |
class="button-primary" target="_blank">Get a Free Quote</a>
|
165 |
|
166 |
-
Todo
|
167 |
- Add buttons in the WP's Theme listing page near Customize
|
168 |
- Orbisius Create
|
169 |
- Orbisius Edit
|
170 |
|
171 |
== Changelog ==
|
172 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
173 |
= 1.5.2 =
|
174 |
* Copy files from one theme to another
|
175 |
* Simplified settings page
|
3 |
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=7APYDVPBCSY9A
|
4 |
Tags: theme,child theme,childtheme,childthemes,parent theme,child themes,CSS,styling,resposive design,design,custom themeing, shared hosting,theme editor theme,themes,wp,wordpress,orbisius,theme creator,custom theme,theme generator,css,css editor
|
5 |
Requires at least: 3.4
|
6 |
+
Tested up to: 5.9
|
7 |
Requires PHP: 5.6
|
8 |
+
Stable tag: 1.5.4
|
9 |
License: GPLv2 or later
|
10 |
|
11 |
Create Child Themes quickly and easily from any theme that you have currently installed on your site/blog.
|
80 |
Go to Admin > Appearance > Orbisius Theme Editor then click on the theme you like and the child theme will be created for you.
|
81 |
|
82 |
= Demo =
|
83 |
+
https://www.youtube.com/watch?v=BZUVq6ZTv-o
|
84 |
|
85 |
= Premium =
|
86 |
Do you want to be able to preview themes from within the 2 editors?
|
163 |
title="If you want a custom web/mobile app/plugin developed contact us. This opens in a new window/tab"
|
164 |
class="button-primary" target="_blank">Get a Free Quote</a>
|
165 |
|
166 |
+
@Todo
|
167 |
- Add buttons in the WP's Theme listing page near Customize
|
168 |
- Orbisius Create
|
169 |
- Orbisius Edit
|
170 |
|
171 |
== Changelog ==
|
172 |
|
173 |
+
= 1.5.4 =
|
174 |
+
* Tested with WP 5.9
|
175 |
+
* Fixed some https links
|
176 |
+
* Fix: file get contents do not receive LOCK_EX flag
|
177 |
+
* Fix: the .min files weren't loaded
|
178 |
+
|
179 |
+
= 1.5.3 =
|
180 |
+
* Update code to ensure that parent theme css is loaded first and then child theme's css file next.
|
181 |
+
* Added priority to the enqueued style so the child theme can override the parent theme's css styles
|
182 |
+
* Using last modified time for the parent and child themes' css files so the browsers load the files as soon as they are updated
|
183 |
+
* Removed some social sharing widgets
|
184 |
+
* Added an option for index.html file to be generated to prevent file listing when child theme folder is directly accessed.
|
185 |
+
|
186 |
= 1.5.2 =
|
187 |
* Copy files from one theme to another
|
188 |
* Simplified settings page
|