PluginProbe ʕ •ᴥ•ʔ
GiveWP – Donation Plugin and Fundraising Platform / 2.22.3
GiveWP – Donation Plugin and Fundraising Platform v2.22.3
4.16.2 4.16.1 4.16.0 4.15.5 4.15.4 4.15.3 4.15.2 4.15.1 4.15.0 2.3.0 2.3.1 2.3.2 2.30.0 2.31.0 2.31.1 2.32.0 2.33.0 2.33.1 2.33.2 2.33.3 2.33.4 2.33.5 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 2.4.6 2.4.7 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.2 2.5.3 2.5.4 2.5.5 2.5.6 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.2 2.6.3 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.9.0 2.9.1 2.9.2 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 3.0.0 3.0.1 3.0.2 3.0.3 3.0.4 3.1.0 3.1.1 3.1.2 3.10.0 3.11.0 3.12.0 3.12.1 3.12.2 3.12.3 3.13.0 3.14.0 3.14.1 3.14.2 3.15.0 3.15.1 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.17.0 3.17.1 3.17.2 3.18.0 3.19.0 3.19.1 3.19.2 3.19.3 3.19.4 3.2.0 3.2.1 3.2.2 3.20.0 3.21.0 3.21.1 3.22.0 3.22.1 3.22.2 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.5.0 3.5.1 3.6.0 3.6.1 3.6.2 3.7.0 3.8.0 3.9.0 4.0.0 4.1.0 4.1.1 4.10.0 4.10.1 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.14.5 4.14.6 4.2.0 4.2.1 4.3.0 4.3.1 4.3.2 4.4.0 4.5.0 4.6.1 4.7.0 4.7.1 4.8.0 4.8.1 4.9.0 trunk 1.9.0 2.0.0 2.0.1 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 2.0.7 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.10.0 2.10.1 2.10.2 2.10.3 2.10.4 2.11.0 2.11.1 2.11.2 2.11.3 2.12.0 2.12.1 2.12.2 2.12.3 2.13.0 2.13.1 2.13.2 2.13.3 2.13.4 2.14.0 2.15.0 2.16.0 2.16.1 2.17.0 2.17.1 2.17.3 2.18.0 2.18.1 2.19.1 2.19.2 2.19.3 2.19.4 2.19.5 2.19.6 2.19.7 2.19.8 2.2.0 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.20.0 2.20.1 2.20.2 2.21.0 2.21.1 2.21.2 2.21.3 2.21.4 2.22.0 2.22.1 2.22.2 2.22.3 2.23.0 2.23.1 2.23.2 2.24.0 2.24.1 2.24.2 2.25.0 2.25.1 2.25.2 2.25.3 2.26.0 2.27.0 2.27.1 2.27.2 2.27.3 2.28.0 2.29.0 2.29.1 2.29.2
give / src / DonationForms / DonationFormsAdminPage.php
give / src / DonationForms Last commit date
Controllers 4 years ago DataTransferObjects 4 years ago Endpoints 4 years ago Repositories 4 years ago ValueObjects 4 years ago resources 4 years ago DonationFormsAdminPage.php 4 years ago ServiceProvider.php 4 years ago
DonationFormsAdminPage.php
192 lines
1 <?php
2
3 namespace Give\DonationForms;
4
5 use Give\Helpers\EnqueueScript;
6 use WP_REST_Request;
7
8 /**
9 * @since 2.19.0
10 */
11 class DonationFormsAdminPage
12 {
13 /**
14 * @var string
15 */
16 protected $apiRoot;
17
18 public function __construct()
19 {
20 $this->apiRoot = esc_url_raw(rest_url('give-api/v2/admin/forms'));
21 }
22
23 /**
24 * Register menu item
25 */
26 public function register()
27 {
28 remove_submenu_page('edit.php?post_type=give_forms', 'edit.php?post_type=give_forms');
29 add_submenu_page(
30 'edit.php?post_type=give_forms',
31 esc_html__('Donation Forms', 'give'),
32 esc_html__('All Forms', 'give'),
33 'edit_give_forms',
34 'give-forms',
35 [$this, 'render'],
36 // Do not change the submenu position unless you have a strong reason.
37 // We use this position value to access this menu data in $submenu to add a custom class.
38 // Check DonationFormsAdminPage::highlightAllFormsMenuItem
39 0
40 );
41 }
42
43 /**
44 * @since 2.20.0
45 */
46 public function highlightAllFormsMenuItem()
47 {
48 global $submenu;
49 $pages = [
50 '/wp-admin/admin.php?page=give-forms', // Donation main menu page.
51 '/wp-admin/edit.php?post_type=give_forms' // Legacy donation form listing page.
52 ];
53
54 if (in_array($_SERVER['REQUEST_URI'], $pages)) {
55 // Add class to highlight 'All Forms' submenu.
56 $submenu['edit.php?post_type=give_forms'][0][4] = add_cssclass(
57 'current',
58 isset($submenu['edit.php?post_type=give_forms'][0][4]) ? $submenu['edit.php?post_type=give_forms'][0][4] : ''
59 );
60 }
61 }
62
63 /**
64 * Load scripts
65 */
66 public function loadScripts()
67 {
68 $data = [
69 'apiRoot' => $this->apiRoot,
70 'apiNonce' => wp_create_nonce('wp_rest'),
71 'preload' => $this->preloadDonationForms(),
72 'authors' => $this->getAuthors(),
73 ];
74
75 EnqueueScript::make('give-admin-donation-forms', 'assets/dist/js/give-admin-donation-forms.js')
76 ->loadInFooter()
77 ->registerTranslations()
78 ->registerLocalizeData('GiveDonationForms', $data)->enqueue();
79
80 wp_enqueue_style(
81 'give-admin-ui-font',
82 'https://fonts.googleapis.com/css2?family=Open+Sans:wght@400..700&display=swap',
83 [],
84 null
85 );
86 }
87
88 /**
89 * Get first page of results from REST API to display as initial table data
90 *
91 * @since 2.20.0
92 * @return array
93 */
94 private function preloadDonationForms()
95 {
96 $queryParameters = [
97 'page' => 1,
98 'perPage' => 30,
99 ];
100
101 $request = WP_REST_Request::from_url(add_query_arg(
102 $queryParameters,
103 $this->apiRoot
104 ));
105
106 return rest_do_request($request)->get_data();
107 }
108
109 /**
110 * Get a list of author user IDs and names
111 * @since 2.20.0
112 */
113 public function getAuthors()
114 {
115 $author_users = get_users([
116 'role__in' => ['author', 'administrator']
117 ]);
118 return array_map(function($user){
119 return [
120 'id' => $user->ID,
121 'name' => $user->display_name,
122 ];
123 }, $author_users);
124 }
125
126 /**
127 * Render admin page
128 */
129 public function render()
130 {
131 echo '<div id="give-admin-donation-forms-root"></div>';
132 }
133
134 /**
135 * Display a button on the old donation forms table that switches to the React view
136 *
137 * @since 2.20.0
138 */
139 public function renderReactSwitch()
140 {
141 ?>
142 <script type="text/javascript">
143 function showReactTable () {
144 fetch( '<?php echo esc_url_raw(rest_url('give-api/v2/admin/forms/view?isLegacy=0')) ?>', {
145 method: 'GET',
146 headers: {
147 ['X-WP-Nonce']: '<?php echo wp_create_nonce('wp_rest') ?>'
148 }
149 })
150 .then((res) => {
151 window.location = window.location.href = '/wp-admin/edit.php?post_type=give_forms&page=give-forms';
152 });
153 }
154 jQuery( function() {
155 jQuery(jQuery(".wrap .page-title-action")[0]).after(
156 '<button class="page-title-action" onclick="showReactTable()">Switch to New View</button>'
157 );
158 });
159 </script>
160 <?php
161 }
162
163 /**
164 * Helper function to determine if current page is Give Add-ons admin page
165 *
166 * @since 2.20.0
167 */
168 public static function isShowing(): bool
169 {
170 return isset($_GET['page']) && $_GET['page'] === 'give-forms';
171 }
172
173 /**
174 * Helper function to determine if the current page is the legacy donation forms list page
175 *
176 * @since 2.20.1
177 */
178 public static function isShowingLegacyPage(): bool
179 {
180 return isset($_GET['post_type']) && $_GET['post_type'] === 'give_forms' && empty($_GET['page']);
181 }
182
183 /**
184 * @since 2.20.0
185 * @return string
186 */
187 public static function getUrl()
188 {
189 return add_query_arg(['page' => 'give-forms'], admin_url('edit.php?post_type=give_forms'));
190 }
191 }
192