PluginProbe ʕ •ᴥ•ʔ
ShopEngine Elementor WooCommerce Builder Addon – All in One WooCommerce Solution / trunk
ShopEngine Elementor WooCommerce Builder Addon – All in One WooCommerce Solution vtrunk
4.9.1 4.9.0 2.0.0 2.1.0 2.2.0 2.2.1 2.2.2 2.3.0 2.4.0 2.5.0 2.5.1 3.0.0 3.1.0 3.1.1 4.0.0 4.0.1 4.1.0 4.1.1 4.2.0 4.2.1 4.3.0 4.3.1 4.4.0 4.5.0 4.5.1 4.6.0 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 4.6.6 4.6.7 4.6.8 4.6.9 4.7.0 4.7.1 4.7.2 4.7.3 4.7.4 4.7.5 4.7.6 4.7.7 4.7.8 4.7.9 4.8.0 4.8.1 4.8.2 4.8.3 4.8.4 4.8.5 4.8.6 4.8.7 4.8.8 4.8.9 trunk 0.1.2-beta 0.1.3-beta 0.1.4-beta 1.0.0 1.1.0 1.1.1 1.1.2 1.1.3 1.2.0 1.2.1 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.5.0 1.5.1 1.6.0 1.6.1 1.7.0 1.8.0 1.8.1 1.9.0
shopengine / core / settings / base.php
shopengine / core / settings Last commit date
screens 4 years ago action.php 2 years ago api.php 1 day ago base.php 4 months ago plugin-status.php 3 years ago
base.php
247 lines
1 <?php
2
3 namespace ShopEngine\Core\Settings;
4
5 use ShopEngine\Core\Builders\Action;
6 use ShopEngine\Core\PageTemplates\Page_Templates;
7 use ShopEngine\Core\Template_Cpt;
8 use ShopEngine\Traits\Singleton;
9
10 defined('ABSPATH') || exit;
11
12 class Base {
13 use Singleton;
14
15 private $menu_link_part;
16
17
18 /**
19 *
20 * @since 1.0.0
21 *
22 */
23 public function init() {
24
25 new Api();
26
27 $this->menu_link_part = admin_url('edit.php?post_type=' . \ShopEngine\Core\Template_Cpt::TYPE);
28
29 // check permission for manage user
30 if(current_user_can('manage_options')) {
31 add_action('admin_menu', [$this, 'menu_getting_started']);
32 add_action('admin_menu', [$this, 'menu_others'], 100);
33 }
34
35 add_action('admin_enqueue_scripts', function () {
36 //phpcs:ignore WordPress.Security.NonceVerification.Recommended -- Just checking post type shopengine template or not
37 if(isset($_REQUEST['post_type']) && sanitize_text_field(wp_unslash($_REQUEST['post_type'])) === \ShopEngine\Core\Template_Cpt::TYPE) {
38
39 if(function_exists('wc_get_products') && !\ShopEngine\Core\Builders\Templates::has_simple_product()) {
40
41 \ShopEngine\Core\Builders\Templates::create_wc_simple_product();
42 }
43 }
44 } );
45
46 add_action('before_delete_post', function($post_id, $post) {
47 if('shopengine-template' === $post->post_type) {
48 Action::delete_template_form_activated_list($post_id);
49 }
50 }, 10, 2);
51
52 add_action('admin_head', [$this, 'admin_head_enqueue_scripts']);
53 add_action('admin_enqueue_scripts', [$this, 'js_css_admin']);
54 add_action('admin_footer', [$this, 'content']);
55 }
56
57 public function admin_head_enqueue_scripts() {
58 echo "<script>
59 jQuery(document).ready( function($) {
60 $('.toplevel_page_shopengine-settings').find('.wp-first-item').css({display:'none'});
61 $('.shopengine_pro_aware').parent().attr('target','_blank');
62 });
63 </script>";
64 }
65
66 public function js_css_admin() {
67
68 wp_enqueue_style('shopengine-admin-style-common', \ShopEngine::plugin_url() . 'assets/css/admin-style-common.css', false, \ShopEngine::version());
69 wp_enqueue_style('shopnegine-panel-icon', \ShopEngine::plugin_url() . 'assets/css/shopengine-icon.css', false, \ShopEngine::version());
70
71 if (is_plugin_active('tiktok-for-business/tiktok-for-woocommerce.php')) {
72 wp_dequeue_style('tts_order_css');
73 wp_dequeue_script('tts_order_js');
74 }
75
76 // get screen id
77 $screen = get_current_screen();
78
79 $cptName = \ShopEngine\Core\Template_Cpt::TYPE;
80
81 $dashboardPage = 'toplevel_page_shopengine-settings';
82
83 if(in_array($screen->id, ['edit-' . $cptName, 'shopengine_page_mt-form-settings', $dashboardPage])) {
84
85 wp_enqueue_script('htm', \ShopEngine::plugin_url() . 'assets/js/htm.js', null, \ShopEngine::version(), true);
86
87 wp_enqueue_script('shopengine-admin-js', \ShopEngine::plugin_url() . 'assets/js/app.js', ['htm', 'jquery', 'wp-element'], \ShopEngine::version(), true);
88
89 // page template lists
90 $page_templates = Page_Templates::instance()->getTemplates();
91
92 wp_localize_script('shopengine-admin-js', 'shopengine_admin_var', [
93 'version' => \ShopEngine::version(),
94 'package_type' => \ShopEngine::package_type(),
95 'license_status' => \ShopEngine::license_status(),
96 'cpt' => $cptName,
97 'resturl' => get_rest_url(),
98 'adminurl' => get_admin_url(),
99 'siteurl' => get_option('siteurl'),
100 'rest_nonce' => wp_create_nonce('wp_rest'),
101 'plugin_url' => \ShopEngine::plugin_url(),
102 'pricing_page' => \ShopEngine::landing_page(),
103 'form_prefix' => \ShopEngine::SHOPENGINE_PREFIX,
104 'template_types' => json_encode($page_templates),
105 'elementor_installed' => did_action('elementor/loaded') ? 'yes' : 'no',
106 'gutenberg_installed' => did_action('shopengine-gutenberg-addon/before_loaded') ? 'yes' : 'no',
107 'supported_builders' => $this->get_supported_builders(),
108 'default_builder' => $this->get_default_builder(),
109 'both_builders_active' => (did_action('elementor/loaded') && did_action('shopengine-gutenberg-addon/before_loaded')) ? 'yes' : 'no',
110 'license_activated_message' => sprintf(esc_html__('Congratulations! Your product is activated for "%s"', 'shopengine'), parse_url(home_url(), PHP_URL_HOST)),
111 'is_rtl' => is_rtl() ? 'true' : 'false',
112 'ajaxurl' => admin_url( ).'admin-ajax.php',
113 'nonce' => wp_create_nonce(),
114 'banner_show' => \ShopEngine\Utils\Util::get_settings( 'shopengine_user_consent_for_banner', 'true' )
115 ]);
116
117 wp_enqueue_style('shopengine-admin-style', \ShopEngine::plugin_url() . 'assets/css/admin-style.css', false, \ShopEngine::version());
118 }
119
120 if($screen->id == 'edit-shopengine-entry' || $screen->id == 'shopengine-entry') {
121 wp_enqueue_style('shopengine-ui', \ShopEngine::plugin_url() . 'assets/css/design-ui.css', false, \ShopEngine::version());
122 wp_enqueue_script('shopengine-entry-script', \ShopEngine::plugin_url() . 'assets/js/admin-entry-script.js', [], \ShopEngine::version(), true);
123 }
124 }
125
126
127 function menu_getting_started() {
128 add_menu_page(
129 esc_html__('ShopEngine', 'shopengine'),
130 esc_html__('ShopEngine', 'shopengine'),
131 'manage_options',
132 'shopengine-settings',
133 [$this, 'redirect_to_content'],
134 \ShopEngine::plugin_url() . 'assets/images/icons/shopengine_icon_white.svg',
135 '58.7'
136 );
137
138 add_submenu_page(
139 'shopengine-settings',
140 esc_html__('Getting Started', 'shopengine'),
141 esc_html__('Getting Started', 'shopengine'),
142 'manage_options',
143 $this->menu_link_part . '#getting-started'
144 );
145 }
146
147 public function menu_others() {
148 add_submenu_page(
149 'shopengine-settings',
150 esc_html__('Add-ons', 'shopengine'),
151 esc_html__('Add-ons', 'shopengine'),
152 'manage_options',
153 $this->menu_link_part . '#shopengine-modules'
154 );
155
156 add_submenu_page(
157 'shopengine-settings',
158 esc_html__('Widgets', 'shopengine'),
159 esc_html__('Widgets', 'shopengine'),
160 'manage_options',
161 $this->menu_link_part . '#shopengine-widgets'
162 );
163
164 add_submenu_page(
165 'shopengine-settings',
166 esc_html__('Get Help', 'shopengine'),
167 esc_html__('Get Help', 'shopengine'),
168 'manage_options',
169 $this->menu_link_part . '#shopengine-get-help'
170 );
171
172 // license activation & go premium menu links
173 if(\ShopEngine::package_type() != 'free') { // is pro
174 add_submenu_page(
175 'shopengine-settings',
176 '<span style="color: #49dd85;" class="shopengine_pro_license pro">' . esc_html__('License', 'shopengine') . '</span>',
177 '<span style="color: #49dd85;" class="shopengine_pro_license pro">' . esc_html__('License', 'shopengine') . '</span>',
178 'manage_options',
179 $this->menu_link_part . '#shopengine-license'
180 );
181 } else { // is free
182 add_submenu_page(
183 'shopengine-settings',
184 '<span style="color: #f9b015;" class="shopengine_pro_aware pro">' . esc_html__('Upgrade to Premium', 'shopengine') . '</span>',
185 '<span style="color: #f9b015;" class="shopengine_pro_aware pro">' . esc_html__('Upgrade to Premium', 'shopengine') . '</span>',
186 'manage_options',
187 \ShopEngine::landing_page()
188 );
189 }
190 }
191
192 function redirect_to_content() {
193 wp_safe_redirect($this->menu_link_part . '#getting-started');
194 exit;
195 }
196
197 function content() {
198 $screen = get_current_screen();
199
200 if($screen->id == 'edit-' . Template_Cpt::TYPE) {
201 include_once \ShopEngine::plugin_dir() . 'core/settings/screens/default.php';
202 }
203 }
204
205 /**
206 * Get supported builders based on active plugins
207 *
208 * @return array
209 */
210 private function get_supported_builders() {
211 $builders = [];
212
213 // Check if Elementor is active
214 if(did_action('elementor/loaded')) {
215 $builders[\ShopEngine\Core\Builders\Action::EDIT_WITH_ELEMENTOR] = 'Elementor';
216 }
217
218 // Check if Blocks for ShopEngine (Gutenberg addon) is active
219 if(did_action('shopengine-gutenberg-addon/before_loaded')) {
220 $builders[\ShopEngine\Core\Builders\Action::EDIT_WITH_GUTENBERG] = 'Gutenberg';
221 }
222
223 return $builders;
224 }
225
226 /**
227 * Get default builder based on active plugins
228 *
229 * @return string
230 */
231 private function get_default_builder() {
232 // Prefer Elementor if it's active
233 if(did_action('elementor/loaded')) {
234 return \ShopEngine\Core\Builders\Action::EDIT_WITH_ELEMENTOR;
235 }
236
237 // Use Gutenberg if the addon is active
238 if(did_action('shopengine-gutenberg-addon/before_loaded')) {
239 return \ShopEngine\Core\Builders\Action::EDIT_WITH_GUTENBERG;
240 }
241
242 // Fallback to Elementor if neither is active
243 return \ShopEngine\Core\Builders\Action::EDIT_WITH_ELEMENTOR;
244 }
245
246 }
247