PluginProbe
GiveWP – Donation Plugin and Fundraising Platform / 4.16.9
GiveWP – Donation Plugin and Fundraising Platform v4.16.9
4.16.9 4.16.8.1 4.16.8 4.16.7.2 4.16.7.1 4.16.7 4.16.6.1 4.16.6 4.16.5.1 4.16.5 4.16.4 4.16.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 All 255 releases
← All changes | includes/admin/views/html-admin-settings.php +181 -104 2.3.14.16.9 View file →
@@ -1,121 +1,198 @@
1 1 <?php
2 +
3 +use Give\Helpers\Utils;
4 +
2 5 /**
3 6 * Admin View: Settings
4 7 */
5 -if ( ! defined( 'ABSPATH' ) ) {
6 - exit;
8 +if ( ! defined('ABSPATH')) {
9 + exit;
7 10 }
8 11
9 12 // Bailout: Do not output anything if setting tab is not defined.
10 -if ( ! empty( $tabs ) && array_key_exists( give_get_current_setting_tab(), $tabs ) ) :
11 - /**
12 - * Filter the form action.
13 - *
14 - * Note: filter dynamically fire on basis of setting page slug
15 - * For example: if you register a setting page with give-settings menu slug and general current tab
16 - * then filter will be give-settings_form_method_tab_general
17 - *
18 - * @since 1.8
19 - */
20 - $form_method = apply_filters( self::$setting_filter_prefix . '_form_method_tab_' . $current_tab, 'post' );
13 +if ( ! empty($tabs) && array_key_exists(give_get_current_setting_tab(), $tabs)) :
14 + /**
15 + * Filter the form action.
16 + *
17 + * Note: filter dynamically fire on basis of setting page slug
18 + * For example: if you register a setting page with give-settings menu slug and general current tab
19 + * then filter will be give-settings_form_method_tab_general
20 + *
21 + * @since 1.8
22 + */
23 + $form_method = apply_filters(self::$setting_filter_prefix . '_form_method_tab_' . $current_tab, 'post');
21 24
22 - /**
23 - * Filter the main form tab.
24 - *
25 - * Note: You can stop print main form if you want to.filter dynamically fire on basis of setting page slug
26 - * For example: if you register a setting page with give-settings menu slug
27 - * then filter will be give-settings_open_form, give-settings_close_form
28 - * We are using this filter in includes/admin/tools/class-settings-data.php#L52
29 - *
30 - * @since 1.8
31 - */
32 - $form_open_tag = apply_filters( self::$setting_filter_prefix . '_open_form', '<form method="' . $form_method . '" id="give-mainform" action="" enctype="multipart/form-data">' );
33 - $form_close_tag = apply_filters( self::$setting_filter_prefix . '_close_form', '</form>' );
25 + /**
26 + * Filter the main form tab.
27 + *
28 + * Note: You can stop print main form if you want to filter dynamically fire on basis of setting page slug
29 + * For example: if you register a setting page with give-settings menu slug
30 + * then filter will be give-settings_open_form, give-settings_close_form
31 + * We are using this filter in includes/admin/tools/class-settings-data.php#L52
32 + *
33 + * @since 1.8
34 + */
35 + $form_open_tag = apply_filters(
36 + self::$setting_filter_prefix . '_open_form',
37 + '<form method="' . $form_method . '" id="give-mainform" action="" enctype="multipart/form-data">'
38 + );
39 + $form_close_tag = apply_filters(self::$setting_filter_prefix . '_close_form', '</form>');
34 40
35 - $wrapper_class = implode( ' ',
36 - array(
37 - self::$setting_filter_prefix . '-setting-page',
38 - self::$setting_filter_prefix . '-' . give_get_current_setting_section() . '-section',
39 - self::$setting_filter_prefix . '-' . give_get_current_setting_tab() . '-tab',
40 - )
41 - );
42 - ?>
43 - <div class="wrap give-settings-page <?php echo $wrapper_class; ?>">
44 - <?php
45 - echo $form_open_tag;
41 + $wrapper_class = implode(
42 + ' ',
43 + [
44 + self::$setting_filter_prefix . '-setting-page',
45 + self::$setting_filter_prefix . '-' . give_get_current_setting_section() . '-section',
46 + self::$setting_filter_prefix . '-' . give_get_current_setting_tab() . '-tab',
47 + ]
48 + );
49 + ?>
46 50
47 - /* @var Give_Settings_Page $current_setting_obj */
48 - if (
49 - ! empty( $current_setting_obj ) &&
50 - method_exists( $current_setting_obj, 'get_heading_html' )
51 - ) {
52 - echo $current_setting_obj->get_heading_html();
53 - } else {
51 + <div class="wrap give-settings-page <?php
52 + echo esc_html($wrapper_class); ?>">
54 53
55 - // Backward compatibility.
56 - echo sprintf(
57 - '<h1 class="wp-heading-inline">%s</h1><hr class="wp-header-end">',
58 - esc_html( $tabs[ $current_tab ] )
59 - );
60 - }
54 + <?php
55 + echo $form_open_tag; ?>
61 56
62 - self::show_messages();
63 - ?>
64 - <div class="nav-tab-wrapper give-nav-tab-wrapper">
65 - <?php
66 - foreach ( $tabs as $name => $label ) {
67 - echo '<a href="' . admin_url( "edit.php?post_type=give_forms&page=" . self::$setting_filter_prefix . "&tab={$name}" ) . '" class="nav-tab ' . ( $current_tab === $name ? 'nav-tab-active' : 'give-mobile-hidden' ) . '">' . $label . '</a>';
68 - }
57 + <div class="give-settings-header">
58 + <?php
59 + /* @var Give_Settings_Page $current_setting_obj */
60 + if (
61 + ! empty($current_setting_obj)
62 + && method_exists($current_setting_obj, 'get_heading_html')
63 + ) {
64 + echo $current_setting_obj->get_heading_html();
65 + } else {
66 + // Backward compatibility.
67 + echo sprintf(
68 + '<h1 class="wp-heading-inline">%s</h1>',
69 + esc_html($tabs[$current_tab])
70 + );
71 + }
69 72
70 - /**
71 - * Trigger Action.
72 - *
73 - * Note: action dynamically fire on basis of setting page slug.
74 - * For example: if you register a setting page with give-settings menu slug
75 - * then action will be give-settings_tabs
76 - *
77 - * @since 1.8
78 - */
79 - do_action( self::$setting_filter_prefix . '_tabs' );
80 - ?>
81 - <div class="give-sub-nav-tab-wrapper">
82 - <a href="#" id="give-show-sub-nav" class="nav-tab give-not-tab" title="<?php _e( 'View remaining setting tabs', 'give' ); ?>"><span class="dashicons dashicons-arrow-down-alt2"></span></span>
83 - </a>
84 - <nav class="give-sub-nav-tab give-hidden"></nav>
85 - </div>
86 - </div>
87 - <?php
73 + self::show_messages();
88 74
89 - /**
90 - * Trigger Action.
91 - *
92 - * Note: action dynamically fire on basis of setting page slug.
93 - * For example: if you register a setting page with give-settings menu slug and general current tab
94 - * then action will be give-settings_sections_general_page
95 - *
96 - * @since 1.8
97 - */
98 - do_action( self::$setting_filter_prefix . "_sections_{$current_tab}_page" );
75 + do_action('give_settings_page_header');
76 + ?>
99 77
100 - /**
101 - * Trigger Action.
102 - *
103 - * Note: action dynamically fire on basis of setting page slug.
104 - * For example: if you register a setting page with give-settings menu slug and general current tab
105 - * then action will be give-settings_settings_general_page
106 - *
107 - * @since 1.8
108 - */
109 - do_action( self::$setting_filter_prefix . "_settings_{$current_tab}_page" );
78 + </div>
110 79
111 - wp_nonce_field( 'give-save-settings', '_give-save-settings' );
80 + <?php
81 + /*
82 + Default behavior of WordPress places admin notices directly after the first h-tag inside any element
83 + with the class of wrap. The tag below will instruct WordPress to place these notices below the header.
84 + */
85 + ?>
86 + <hr class="wp-header-end hidden">
112 87
113 - if ( empty( $GLOBALS['give_hide_save_button'] ) ) : ?>
114 - <div class="give-submit-wrap">
115 - <input name="save" class="button-primary give-save-button" type="submit" value="<?php _e( 'Save changes', 'give' ); ?>"/>
116 - </div>
117 - <?php endif; ?>
118 - <?php echo $form_close_tag; ?>
119 - </div>
120 -<?php else : echo '<div class="error"><p>' . __( 'Oops, this settings page does not exist.', 'give' ) . '</p></div>'; ?>
121 -<?php endif; ?>
88 + <div class="nav-tab-wrapper give-nav-tab-wrapper">
89 + <?php
90 + /**
91 + * Render Recurring Donations UTM link.
92 + *
93 + * @since 2.27.1
94 + */
95 + foreach ($tabs as $name => $label) {
96 + $target = $name === 'recurring' ? 'target="_blank" ' : false;
97 + $urlPath = $name === 'recurring' ? 'https://docs.givewp.com/recurring-link' : admin_url(
98 + 'edit.php?post_type=give_forms&page=' . self::$setting_filter_prefix . "&tab={$name}"
99 + );
100 + echo '<a ' . $target . 'href="' . $urlPath . '"' . ' class="nav-tab ' . ($current_tab === $name ? 'nav-tab-active' : 'give-mobile-hidden') . '">' . $label . '</a>';
101 + }
102 +
103 + /**
104 + * Render Addon product recommendation link if Recurring Donations is active.
105 + *
106 + * @since 2.27.1
107 + */
108 + if (Utils::isPluginActive('give-recurring/give-recurring.php')) {
109 + echo '
110 + <a class="give-nav-addons-tab" href="' . esc_url(
111 + admin_url('edit.php?post_type=give_forms&page=give-add-ons')
112 + ) . '">
113 + <img src="' . GIVE_PLUGIN_URL . 'build/assets/dist/images/admin/add-on-star-icon.svg"/>
114 + <span>' . __('ADD-ONS', 'give') . '</span>
115 + </a>
116 + ';
117 + }
118 +
119 + /**
120 + * Trigger Action.
121 + *
122 + * Note: action dynamically fire on basis of setting page slug.
123 + * For example: if you register a setting page with give-settings menu slug
124 + * then action will be give-settings_tabs
125 + *
126 + * @since 1.8
127 + */
128 + do_action(self::$setting_filter_prefix . '_tabs');
129 +
130 + // Show link to New Reports page
131 + $isReports = isset($_GET['page']) && $_GET['page'] === 'give-reports';
132 + if ($isReports === true) {
133 + echo sprintf(
134 + '<a href="%1$s" class="nav-tab nav-tab" id="new-reports-link">%2$s</a>',
135 + admin_url('edit.php?post_type=give_forms&page=give-reports'),
136 + esc_html__('New Reports Dashboard', 'give')
137 + );
138 + }
139 + ?>
140 +
141 + <div class="give-sub-nav-tab-wrapper">
142 + <a href="#" id="give-show-sub-nav" class="nav-tab give-not-tab" title="<?php
143 + esc_html_e('View remaining setting tabs', 'give'); ?>">
144 + <span class="dashicons dashicons-arrow-down-alt2"></span>
145 + </a>
146 + <nav class="give-sub-nav-tab give-hidden"></nav>
147 + </div>
148 + </div>
149 +
150 + <?php
151 +
152 + /**
153 + * Trigger Action.
154 + *
155 + * Note: action dynamically fire on basis of setting page slug.
156 + * For example: if you register a setting page with give-settings menu slug and general current tab
157 + * then action will be give-settings_sections_general_page
158 + *
159 + * @since 1.8
160 + */
161 + do_action(self::$setting_filter_prefix . "_sections_{$current_tab}_page");
162 +
163 + /**
164 + * Trigger Action.
165 + *
166 + * Note: action dynamically fire on basis of setting page slug.
167 + * For example: if you register a setting page with give-settings menu slug and general current tab
168 + * then action will be give-settings_settings_general_page
169 + *
170 + * @since 1.8
171 + */
172 + do_action(self::$setting_filter_prefix . "_settings_{$current_tab}_page");
173 +
174 + wp_nonce_field('give-save-settings', '_give-save-settings');
175 +
176 + if (empty($GLOBALS['give_hide_save_button'])) :
177 + ?>
178 + <div class="give-submit-wrap">
179 + <input name="save" class="button-primary give-save-button" type="submit" value="<?php
180 + esc_html_e('Save changes', 'give'); ?>" />
181 + </div>
182 + <?php
183 + endif; ?>
184 + <?php
185 + echo $form_close_tag; ?>
186 + </div>
187 +<?php
188 +else :
189 + ?>
190 + <div class="error">
191 + <p>
192 + <?php
193 + esc_html_e('Oops, this settings page does not exist.', 'give'); ?>
194 + </p>
195 + </div>
196 +<?php
197 +endif;
198 +?>