PluginProbe
Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! / 2.2.3
Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! v2.2.3
3.7.5 3.7.4 3.7.3 3.7.2 1-final 3.7.1 3.7.0 3.6.8 3.6.7 3.6.6 3.6.5 3.6.4 3.6.3 3.6.2 3.6.1 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.10 All 111 releases
templately / includes / Core / Admin.php

Admin.php in Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! 2.2.3, at includes/Core/Admin.php

283 lines 10.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace Templately\Core;
3
4 use Templately\API\Login;
5 use Templately\Utils\Base;
6 use Templately\Utils\Helper;
7 use Templately\Utils\Options;
8 use PriyoMukul\WPNotice\Notices;
9 use Templately\Core\Platform\Elementor;
10 use Templately\Core\Platform\Gutenberg;
11
12 class Admin extends Base {
13
14 /**
15 * Initially invoked function.
16 * Menu, Assets and maybe redirect on plugin activation is initialized.
17 */
18 public function __construct() {
19 add_action( 'admin_enqueue_scripts', [$this, 'scripts'] );
20 add_action( 'admin_init', [$this, 'notices'] );
21 add_action( 'admin_init', [$this, 'maybe_redirect_templately'] );
22 add_action( 'admin_menu', [$this, 'admin_menu'] );
23 }
24
25 /**
26 * Enqueuing Assets
27 *
28 * @param string $hook
29 * @return void
30 */
31 public function scripts( $hook ) {
32 if ( ! in_array( $hook, [ 'toplevel_page_templately', 'elementor', 'gutenberg' ], true ) ) {
33 return;
34 }
35
36 $script_dependencies = [];
37 $_localize_handle = 'templately';
38 $_current_screen = 'templately';
39
40 if ( $hook === 'elementor' || $hook === 'gutenberg' ) {
41 $_current_screen = $hook;
42 $_localize_handle = 'templately-' . $hook;
43 $script_dependencies = [$_localize_handle];
44 }
45
46 if ( $hook === 'toplevel_page_templately' ) {
47 templately()->assets->enqueue( 'templately-admin', 'css/admin.css', ['templately'] );
48 }
49
50 // Google Font Enqueueing
51 templately()->assets->enqueue(
52 'templately-dmsans',
53 set_url_scheme( '//fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&display=swap' )
54 );
55
56 templately()->assets->enqueue( 'templately', 'js/templately.js', $script_dependencies, true );
57 templately()->assets->enqueue( 'templately', 'css/templately.css', ['templately-dmsans'] );
58
59 /**
60 * @var Elementor|Gutenberg $platform
61 */
62 $platform = $this->platform( $_current_screen );
63
64 templately()->assets->localize( $_localize_handle, 'templately', [
65 'url' => home_url(),
66 'site_url' => site_url(),
67 'nonce' => wp_create_nonce( 'templately_nonce' ),
68 'rest_args' => [
69 'nonce' => wp_create_nonce( 'wp_rest' ),
70 'endpoint' => get_rest_url( null, 'templately/v1/' )
71 ],
72 'log' => defined( 'TEMPLATELY_DEBUG_LOG' ) && TEMPLATELY_DEBUG_LOG,
73 'dev_mode' => defined( 'TEMPLATELY_DEV' ) && TEMPLATELY_DEV,
74 "icons" => [
75 'profile' => templately()->assets->icon( 'icons/profile.svg' ),
76 'warning' => templately()->assets->icon( 'icons/warning.png' )
77 ],
78 'promo_image' => templately()->assets->icon( 'single-page-promo.png' ),
79 'default_image' => templately()->assets->icon( 'clouds/cloud-item.svg' ),
80 'not_found' => templately()->assets->icon( 'no-item-found.png' ),
81 'no_items' => templately()->assets->icon( 'no-items.png' ),
82 'loadingImage' => templately()->assets->icon( 'logos/loading-logo.gif' ),
83 'current_url' => admin_url( 'admin.php?page=templately' ),
84 'is_signed' => Login::is_signed(),
85 'is_globally_signed' => Login::is_globally_signed(),
86 'signed_as_global' => Login::signed_as_global(),
87 'current_screen' => $_current_screen,
88 'has_elementor_pro' => rest_sanitize_boolean( is_plugin_active( 'elementor-pro/elementor-pro.php' ) ),
89 'theme' => $_current_screen == 'templately' ? 'light' : $platform->ui_theme()
90 ] );
91 }
92
93 /**
94 * Admin notices for Review and others.
95 *
96 * @since 2.0.0
97 * @return void
98 */
99 public function notices() {
100 global $current_screen;
101
102 $notices = new Notices( [
103 'id' => 'templately',
104 'store' => 'options',
105 'storage_key' => 'notices',
106 'version' => '1.0.0',
107 'lifetime' => 3,
108 'styles' => TEMPLATELY_ASSETS . 'css/notices.css'
109 ] );
110
111 $global_user = Options::get_instance()->get( 'user', false, get_current_user_id() );
112 $download_counts = Options::get_instance()->get( 'total_downlaod_counts', 0, get_current_user_id() );
113 $cloud_items = 0;
114 if ( isset( $global_user['my_cloud']['usages'] ) ) {
115 $cloud_items = intval( $global_user['my_cloud']['usages'] );
116 }
117
118 if ( $cloud_items >= 5 || $download_counts >= 4 ) {
119 $message = sprintf(
120 __( "We hope you're enjoying %s! Could you please do us a favor and give us a review on %s to help us spread the word and boost our motivation?", 'templately' ),
121 '<strong>Templately</strong>',
122 '<strong>WordPress</strong>'
123 );
124
125 $_review_notice = [
126 'thumbnail' => templately()->assets->icon( 'logos/logo.svg' ),
127 'html' => '<p>' . $message . '</p>',
128 'links' => [
129 'later' => [
130 'link' => 'https://wordpress.org/support/plugin/templately/reviews/#new-post',
131 'target' => '_blank',
132 'label' => __( 'Sure, you deserve it!', 'templately' ),
133 'icon_class' => 'dashicons dashicons-external'
134 ],
135 'allready' => [
136 'label' => __( 'I already did', 'templately' ),
137 'icon_class' => 'dashicons dashicons-smiley',
138 'attributes' => [
139 'data-dismiss' => true
140 ]
141 ],
142 'maybe_later' => [
143 'label' => __( 'Maybe Later', 'templately' ),
144 'icon_class' => 'dashicons dashicons-calendar-alt',
145 'attributes' => [
146 'data-later' => true,
147 'class' => 'dismiss-btn'
148 ]
149 ],
150 'support' => [
151 'link' => 'https://wpdeveloper.com/support',
152 'attributes' => [
153 'target' => '_blank'
154 ],
155 'label' => __( 'I need help', 'templately' ),
156 'icon_class' => 'dashicons dashicons-sos'
157 ],
158 'never_show_again' => [
159 'label' => __( 'Never show again', 'templately' ),
160 'icon_class' => 'dashicons dashicons-dismiss',
161 'attributes' => [
162 'data-dismiss' => true
163 ]
164 ]
165 ]
166 ];
167
168 $notices->add(
169 'review',
170 $_review_notice,
171 [
172 'start' => $notices->strtotime( '+7 day' ),
173 'recurrence' => 20,
174 'dismissible' => true,
175 'refresh' => TEMPLATELY_VERSION,
176 'screens' => [
177 'dashboard', 'plugins', 'themes', 'edit-page',
178 'edit-post', 'users', 'tools', 'options-general',
179 'nav-menus'
180 ]
181 ]
182 );
183 }
184
185 if( $global_user === false || isset( $global_user['plan'] ) && $global_user['plan'] == 'free' ) {
186 $notices->add(
187 'upsale',
188 wp_sprintf(
189 '<p>%1$s <a target="_blank" href="%3$s">%2$s</a>.</p>',
190 __('🔥 Get access to 4,000+ Ready Templates & save up to 65% OFF now', 'templately'),
191 __('Upgrade to Pro', 'templately'),
192 'https://templately.com/#pricing'
193 ),
194 [
195 'start' => $notices->time(),
196 'dismissible' => true,
197 'refresh' => TEMPLATELY_VERSION,
198 'screens' => [
199 'dashboard', 'plugins', 'themes', 'edit-page',
200 'edit-post', 'users', 'tools', 'options-general',
201 'nav-menus'
202 ]
203 ]
204 );
205 }
206
207
208 $notices->init();
209 }
210
211 /**
212 * Adding Menu In Sidebar ( WordPress Left-side Dashboard Menu )
213 *
214 * @return void
215 */
216 public function admin_menu() {
217 // TODO: Role Management
218 add_menu_page(
219 'Templately',
220 'Templately',
221 'delete_posts',
222 'templately',
223 [ $this, 'display' ],
224 templately()->assets->icon( 'logos/logo-icon.svg' ),
225 '58.7'
226 );
227 }
228
229 public function display() {
230 Helper::views( 'settings' );
231 }
232
233 /**
234 * Redirect on Active
235 */
236 public function maybe_redirect_templately() {
237 if ( ! get_transient( 'templately_activation_redirect' ) ) {
238 return;
239 }
240 if ( wp_doing_ajax() ) {
241 return;
242 }
243
244 delete_transient( 'templately_activation_redirect' );
245 if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) {
246 return;
247 }
248 // Safe Redirect to Templately Page
249 wp_safe_redirect( admin_url( 'admin.php?page=templately' ) );
250 exit;
251 }
252
253 /**
254 * If Elementor doesn't exists.
255 *
256 * @return void
257 */
258 public static function has_no_elementor() {
259 $plugin_url = \wp_nonce_url( \self_admin_url( 'update.php?action=install-plugin&amp;plugin=elementor' ), 'install-plugin_elementor' );
260 $button_text = 'Install Elementor';
261 if ( isset( Helper::get_plugins()['elementor/elementor.php'] ) ) {
262 $plugin_url = \wp_nonce_url( 'plugins.php?action=activate&amp;plugin=elementor/elementor.php', 'activate-plugin_elementor/elementor.php' );
263 $button_text = 'Activate Elementor';
264 }
265 $output = '<div class="notice notice-error">';
266 $output .= sprintf(
267 "<p><strong>%s</strong> %s <strong>%s</strong> %s &nbsp;&nbsp;<a class='button-primary' href='%s'>%s</a></p>",
268 __( 'Templately', 'templately' ),
269 __( 'requires', 'templately' ),
270 __( 'Elementor', 'templately' ),
271 __( 'plugin to be installed and activated. Please install Elementor to continue.', 'templately' ),
272 esc_url( $plugin_url ),
273 __( $button_text, 'templately' )
274 );
275 $output .= '</div>';
276 echo $output;
277 }
278
279 public function header() {
280 Helper::views( 'header' );
281 }
282 }
283