PluginProbe
Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! / 2.0.4
Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! v2.0.4
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.0.4, at includes/Core/Admin.php

285 lines 9.2 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 PriyoMukul\WPNotice\Notices;
5 use Templately\API\Login;
6 use Templately\Utils\Base;
7 use Templately\Utils\Helper;
8
9 use Templately\Core\Platform\Elementor;
10 use Templately\Core\Platform\Gutenberg;
11 use Templately\Utils\Options;
12
13 use function site_url;
14 use function home_url;
15 use function get_rest_url;
16 use function wp_create_nonce;
17 use function add_menu_page;
18
19 class Admin extends Base {
20
21 /**
22 * Initially invoked function.
23 * Menu, Assets and maybe redirect on plugin activation is initialized.
24 */
25 public function __construct() {
26 add_action( 'admin_enqueue_scripts', [$this, 'scripts'] );
27 add_action( 'admin_init', [$this, 'notices'] );
28 add_action( 'admin_init', [$this, 'maybe_redirect_templately'] );
29 add_action( 'admin_menu', [$this, 'admin_menu'] );
30 }
31
32 /**
33 * Enqueuing Assets
34 *
35 * @param string $hook
36 * @return void
37 */
38 public function scripts( $hook ){
39 if ( ! in_array( $hook, array ( 'toplevel_page_templately', 'elementor', 'gutenberg' ), true ) ) {
40 return;
41 }
42
43 $script_dependencies = [];
44 $_localize_handle = 'templately';
45 $_current_screen = 'templately';
46
47 if( $hook === 'elementor' || $hook === 'gutenberg' ) {
48 $_current_screen = $hook;
49 $_localize_handle = 'templately-' . $hook;
50 $script_dependencies = [ $_localize_handle ];
51 }
52
53 if( $hook === 'toplevel_page_templately' ) {
54 templately()->assets->enqueue( 'templately-admin', 'css/admin.css', [ 'templately' ] );
55 }
56
57 // Google Font Enqueueing
58 templately()->assets->enqueue(
59 'templately-dmsans',
60 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' )
61 );
62
63 templately()->assets->enqueue( 'templately', 'js/templately.js', $script_dependencies, true );
64 templately()->assets->enqueue( 'templately', 'css/templately.css', [ 'templately-dmsans' ] );
65
66 /**
67 * @var Elementor|Gutenberg $platform
68 */
69 $platform = $this->platform( $_current_screen );
70
71 templately()->assets->localize( $_localize_handle, 'templately', [
72 'url' => home_url(),
73 'site_url' => site_url(),
74 'nonce' => wp_create_nonce( 'templately_nonce' ),
75 'rest_args' => [
76 'nonce' => wp_create_nonce( 'wp_rest' ),
77 'endpoint' => get_rest_url( null, 'templately/v1/' )
78 ],
79 'log' => defined('TEMPLATELY_DEBUG_LOG') && TEMPLATELY_DEBUG_LOG,
80 "icons" => [
81 'profile' => templately()->assets->icon('icons/profile.svg')
82 ],
83 'default_image' => templately()->assets->icon('clouds/cloud-item.svg'),
84 'not_found' => templately()->assets->icon('no-item-found.png'),
85 'no_items' => templately()->assets->icon('no-items.png'),
86 'loadingImage' => templately()->assets->icon('logos/loading-logo.gif'),
87 'current_url' => admin_url('admin.php?page=templately'),
88 'is_signed' => Login::is_signed(),
89 'is_globally_signed' => Login::is_globally_signed(),
90 'signed_as_global' => Login::signed_as_global(),
91 'current_screen' => $_current_screen,
92 'theme' => $_current_screen == 'templately' ? 'light' : $platform->ui_theme(),
93 ] );
94 }
95
96 /**
97 * Admin notices for Review and others.
98 *
99 * @since 2.0.0
100 * @return void
101 */
102 public function notices(){
103 global $current_screen;
104
105 $notices = new Notices([
106 'id' => 'templately',
107 'store' => 'options',
108 'storage_key' => 'notices',
109 'version' => '1.0.0',
110 'lifetime' => 3,
111 'styles' => TEMPLATELY_ASSETS . 'css/notices.css',
112 ]);
113
114 $global_user = Options::get_instance()->get('user', false, get_current_user_id());
115
116 if( ! empty( $global_user['my_cloud']['usages'] ) ) {
117 $cloud_items = intval($global_user['my_cloud']['usages']);
118 if( $cloud_items >= 15 ) {
119 $message = sprintf(
120 __( 'Hi, %s 👋 You have saved %s in MyCloud so far ☁️ If you are enjoying <strong>Templately</strong>, would you mind taking a few seconds to give us a <strong>5-star</strong> rating on WordPress?', 'templately' ),
121 $global_user['name'],
122 $cloud_items . ' ' . _n( 'item', 'items', $cloud_items, 'templately' )
123 );
124
125 $_review_notice = [
126 'thumbnail' => templately()->assets->icon('logos/logo.svg'),
127 'html' => '<p>'. $message .'</p>',
128 'links' => [
129 'later' => array(
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' => array(
136 'label' => __( 'I already did', 'templately' ),
137 'icon_class' => 'dashicons dashicons-smiley',
138 'attributes' => [
139 'data-dismiss' => true
140 ],
141 ),
142 'maybe_later' => array(
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' => array(
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' => array(
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('+15 day'),
173 'recurrence' => 30,
174 'dismissible' => true,
175 'refresh' => TEMPLATELY_VERSION
176 ]
177 );
178 }
179 }
180
181
182 $_black_friday_notice_message = sprintf(
183 '<p style="margin: 0"><strong>%s</strong>: %s <a class="button button-small" href="%s" target="_blank">%s</a></p>',
184 __('Black Friday Exclusive', 'templately'),
185 __( 'SAVE up to 80% & access to Templately Premium templates and features.', 'templately' ),
186 esc_url('https://templately.com/#pricing'),
187 __( 'Grab The Deal', 'templately' )
188 );
189
190 $_black_friday_notice = [
191 'thumbnail' => templately()->assets->icon('logos/logo.svg'),
192 'html' => $_black_friday_notice_message,
193 ];
194
195 $notices->add(
196 'black_friday_notice',
197 $_black_friday_notice,
198 [
199 'start' => $notices->time(),
200 'recurrence' => false,
201 'dismissible' => true,
202 "expire" => 1669852799,
203 "display_if" => empty( $global_user['plan'] ) || $global_user['plan'] == 'free'
204 ]
205 );
206
207 if( $current_screen !== null && in_array( $current_screen->base, [ 'post', 'toplevel_page_templately' ] ) ) {
208 return;
209 }
210
211 $notices->init();
212 }
213
214 /**
215 * Adding Menu In Sidebar ( WordPress Left-side Dashboard Menu )
216 *
217 * @return void
218 */
219 public function admin_menu() {
220 // TODO: Role Management
221 add_menu_page(
222 'Templately',
223 'Templately',
224 'delete_posts',
225 'templately',
226 array($this, 'display'),
227 templately()->assets->icon('logos/logo-icon.svg'),
228 '58.7'
229 );
230 }
231
232 public function display() {
233 Helper::views('settings');
234 }
235
236 /**
237 * Redirect on Active
238 */
239 public function maybe_redirect_templately(){
240 if ( ! get_transient( 'templately_activation_redirect' ) ) {
241 return;
242 }
243 if ( wp_doing_ajax() ) {
244 return;
245 }
246
247 delete_transient( 'templately_activation_redirect' );
248 if ( is_network_admin() || isset( $_GET['activate-multi'] ) ) {
249 return;
250 }
251 // Safe Redirect to Templately Page
252 wp_safe_redirect( admin_url( 'admin.php?page=templately' ) );
253 exit;
254 }
255
256 /**
257 * If Elementor doesn't exists.
258 *
259 * @return boolean
260 */
261 public static function has_no_elementor() {
262 $plugin_url = \wp_nonce_url(\self_admin_url('update.php?action=install-plugin&amp;plugin=elementor'), 'install-plugin_elementor');
263 $button_text = 'Install Elementor';
264 if (isset(Helper::get_plugins()['elementor/elementor.php'])) {
265 $plugin_url = \wp_nonce_url('plugins.php?action=activate&amp;plugin=elementor/elementor.php', 'activate-plugin_elementor/elementor.php');
266 $button_text = 'Activate Elementor';
267 }
268 $output = '<div class="notice notice-error">';
269 $output .= sprintf(
270 "<p><strong>%s</strong> %s <strong>%s</strong> %s &nbsp;&nbsp;<a class='button-primary' href='%s'>%s</a></p>",
271 __('Templately', 'templately'),
272 __('requires', 'templately'),
273 __('Elementor', 'templately'),
274 __('plugin to be installed and activated. Please install Elementor to continue.', 'templately'),
275 esc_url( $plugin_url ),
276 __($button_text, 'templately')
277 );
278 $output .= '</div>';
279 echo $output;
280 }
281
282 public function header(){
283 Helper::views('header');
284 }
285 }