PluginProbe
AL Pack / 1.1.2
AL Pack v1.1.2
1.3.13 trunk 1.0.0 1.1.1 1.1.2 1.2.0 1.2.1 1.2.2 1.3.0 1.3.1 1.3.11 1.3.12
alpack / includes / admin.php

admin.php in AL Pack 1.1.2, at includes/admin.php

199 lines 6.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 if (!defined('ABSPATH')) {
3 exit;
4 }
5
6 /**
7 * Admin functionality for PressLearn Plugin
8 */
9
10 /**
11 * Admin settings styles
12 */
13 function presslearn_admin_settings_styles() {
14 if (!is_admin()) {
15 return;
16 }
17
18 $screen = get_current_screen();
19 if (!$screen || strpos($screen->id, 'presslearn-settings') === false) {
20 return;
21 }
22
23 wp_register_style(
24 'presslearn-admin-settings-css',
25 false,
26 array(),
27 PRESSLEARN_PLUGIN_VERSION
28 );
29 wp_enqueue_style('presslearn-admin-settings-css');
30
31 $admin_settings_css = "
32 /* Admin Settings specific styles can be added here if needed */
33 ";
34
35 wp_add_inline_style('presslearn-admin-settings-css', $admin_settings_css);
36 }
37
38 /**
39 * Admin settings scripts
40 */
41 function presslearn_admin_settings_scripts() {
42 if (!is_admin()) {
43 return;
44 }
45
46 $screen = get_current_screen();
47 if (!$screen || strpos($screen->id, 'presslearn-settings') === false) {
48 return;
49 }
50
51 wp_register_script(
52 'presslearn-admin-login-js',
53 false,
54 array('jquery'),
55 PRESSLEARN_PLUGIN_VERSION,
56 true
57 );
58 wp_enqueue_script('presslearn-admin-login-js');
59
60 wp_localize_script('presslearn-admin-login-js', 'presslearn_admin_login', array(
61 'status_url' => rest_url('presslearn/v1/status'),
62 'banner_url' => rest_url('presslearn/v1/banner')
63 ));
64
65 $login_js = "
66 document.addEventListener('DOMContentLoaded', function() {
67 let loginWindow = null;
68
69 function checkAPIStatus() {
70 fetch(presslearn_admin_login.status_url, {
71 method: 'GET',
72 headers: {
73 'Content-Type': 'application/json',
74 }
75 })
76 .then(response => response.json())
77 .then(data => {
78 if (data.is_active) {
79 if (loginWindow && !loginWindow.closed) {
80 loginWindow.close();
81 }
82 location.reload();
83 }
84 })
85 .catch(error => {
86 console.log('Status check failed:', error);
87 });
88 }
89
90 const loginButton = document.getElementById('presslearn-login-button');
91 if (loginButton) {
92 loginButton.addEventListener('click', function(e) {
93 e.preventDefault();
94
95 if (loginWindow && !loginWindow.closed) {
96 loginWindow.focus();
97 return;
98 }
99
100 const loginUrl = this.getAttribute('href');
101 loginWindow = window.open(loginUrl, 'presslearn_login', 'width=600,height=700');
102
103 if (loginWindow) {
104 const checkInterval = setInterval(function() {
105 checkAPIStatus();
106 }, 1000);
107
108 const windowCheckInterval = setInterval(function() {
109 if (loginWindow.closed) {
110 clearInterval(checkInterval);
111 clearInterval(windowCheckInterval);
112 setTimeout(checkAPIStatus, 1000);
113 }
114 }, 1000);
115
116 setTimeout(function() {
117 clearInterval(checkInterval);
118 clearInterval(windowCheckInterval);
119 }, 30000);
120 } else {
121 alert('팝�
122 창이 차단되었습니다. 팝�
123 차단을 해제한 후 다시 시도해주세요.');
124 }
125 });
126 }
127 });
128 ";
129
130 wp_add_inline_script('presslearn-admin-login-js', $login_js);
131
132 wp_register_script(
133 'presslearn-admin-banner-js',
134 false,
135 array('jquery'),
136 PRESSLEARN_PLUGIN_VERSION,
137 true
138 );
139 wp_enqueue_script('presslearn-admin-banner-js');
140
141 wp_localize_script('presslearn-admin-banner-js', 'presslearn_admin_banner', array(
142 'banner_url' => rest_url('presslearn/v1/banner')
143 ));
144
145 $banner_js = "
146 document.addEventListener('DOMContentLoaded', function() {
147 const bannerContainer = document.getElementById('presslearn-banner-container');
148 const banner = document.getElementById('presslearn-banner');
149 const bannerSkeleton = document.getElementById('presslearn-banner-skeleton');
150 const bannerLink = document.getElementById('presslearn-banner-link');
151 const bannerImage = document.getElementById('presslearn-banner-image');
152
153 function fetchBanner() {
154 if (!bannerContainer || !banner || !bannerSkeleton || !bannerLink || !bannerImage) {
155 return;
156 }
157
158 banner.style.display = 'none';
159 bannerSkeleton.style.display = 'block';
160
161 fetch(presslearn_admin_banner.banner_url, {
162 method: 'GET',
163 headers: {
164 'Content-Type': 'application/json',
165 }
166 })
167 .then(response => response.json())
168 .then(data => {
169 if (data.success && data.data) {
170 bannerImage.src = data.data.url;
171 bannerLink.href = data.data.href_url;
172 bannerImage.alt = data.data.title || 'PressLearn Banner';
173
174 banner.style.display = 'block';
175 bannerSkeleton.style.display = 'none';
176 } else {
177 bannerSkeleton.style.display = 'none';
178 }
179 })
180 .catch(error => {
181 console.log('Banner load failed:', error);
182 bannerSkeleton.style.display = 'none';
183 });
184 }
185
186 if (bannerContainer && banner && bannerSkeleton && bannerLink && bannerImage) {
187 fetchBanner();
188 setInterval(fetchBanner, 300000);
189 }
190 });
191 ";
192
193 wp_add_inline_script('presslearn-admin-banner-js', $banner_js);
194 }
195
196 add_action('admin_enqueue_scripts', 'presslearn_admin_settings_styles');
197 add_action('admin_enqueue_scripts', 'presslearn_admin_settings_scripts');
198
199