PluginProbe
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions / 110731
s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions v110731
260917 260913 260909 260829 260814 260805 110710 110731 110812 110815 110912 110913 110915 110926 110927 111002 111003 111011 111017 111029 111105 111206 111216 111220 120213 All 189 releases
s2member / includes / menu-pages / gen-ops.inc.php

gen-ops.inc.php in s2Member – Excellent for All Kinds of Memberships, Content Restriction Paywalls & Member Access Subscriptions 110731, at includes/menu-pages/gen-ops.inc.php

1,265 lines 86.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Menu page for the s2Member plugin ( General Options page ).
4 *
5 * Copyright: © 2009-2011
6 * {@link http://www.websharks-inc.com/ WebSharks, Inc.}
7 * ( coded in the USA )
8 *
9 * Released under the terms of the GNU General Public License.
10 * You should have received a copy of the GNU General Public License,
11 * along with this software. In the main directory, see: /licensing/
12 * If not, see: {@link http://www.gnu.org/licenses/}.
13 *
14 * @package s2Member\Menu_Pages
15 * @since 3.0
16 */
17 if (realpath (__FILE__) === realpath ($_SERVER["SCRIPT_FILENAME"]))
18 exit("Do not access this file directly.");
19 /**/
20 if (!class_exists ("c_ws_plugin__s2member_menu_page_gen_ops"))
21 {
22 /**
23 * Menu page for the s2Member plugin ( General Options page ).
24 *
25 * @package s2Member\Menu_Pages
26 * @since 110531
27 */
28 class c_ws_plugin__s2member_menu_page_gen_ops
29 {
30 public function __construct ()
31 {
32 echo '<div class="wrap ws-menu-page">' . "\n";
33 /**/
34 echo '<div id="icon-plugins" class="icon32"><br /></div>' . "\n";
35 echo '<h2>s2Member® General Options</h2>' . "\n";
36 /**/
37 echo '<table class="ws-menu-page-table">' . "\n";
38 echo '<tbody class="ws-menu-page-table-tbody">' . "\n";
39 echo '<tr class="ws-menu-page-table-tr">' . "\n";
40 echo '<td class="ws-menu-page-table-l">' . "\n";
41 /**/
42 echo '<form method="post" name="ws_plugin__s2member_options_form" id="ws-plugin--s2member-options-form">' . "\n";
43 echo '<input type="hidden" name="ws_plugin__s2member_options_save" id="ws-plugin--s2member-options-save" value="' . esc_attr (wp_create_nonce ("ws-plugin--s2member-options-save")) . '" />' . "\n";
44 echo '<input type="hidden" name="ws_plugin__s2member_configured" id="ws-plugin--s2member-configured" value="1" />' . "\n";
45 /**/
46 do_action ("ws_plugin__s2member_during_gen_ops_page_before_left_sections", get_defined_vars ());
47 /**/
48 if (apply_filters ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_display_deactivation", (!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site () || is_super_admin ()), get_defined_vars ()))
49 {
50 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_before_deactivation", get_defined_vars ());
51 /**/
52 echo '<div class="ws-menu-page-group" title="Deactivation Safeguards"' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["run_deactivation_routines"]) ? ' default-state="open"' : '') . '>' . "\n";
53 /**/
54 echo '<div class="ws-menu-page-section ws-plugin--s2member-deactivation-section">' . "\n";
55 echo '<h3>Deactivation Safeguards ( optional, recommended )</h3>' . "\n";
56 echo (is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site () && is_super_admin ()) ? '<p><em class="ws-menu-page-hilite">On a Multisite Blog Farm, this panel is ONLY visible to YOU, as a Super Administrator. s2Member automatically Safeguards everything on a Multisite Blog Farm. However, as the Super Administrator, you may turn this off; on a per-Blog basis. For example, if you\'re going to de-activate s2Member on this particular Blog, you can turn OFF the Safeguards below, so that s2Member will completely erase itself.</em></p>' . "\n" : '<p>By default, s2Member will cleanup ( erase ) all of it\'s Roles, Capabilities, and your Configuration Options when/if you deactivate it from the Plugins Menu in WordPress®. If you would like to Safeguard all of this information, in case s2Member is deactivated inadvertently, please choose Yes ( safeguard all s2Member data/options ).</p>' . "\n";
57 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_during_deactivation", get_defined_vars ());
58 /**/
59 echo '<table class="form-table">' . "\n";
60 echo '<tbody>' . "\n";
61 echo '<tr>' . "\n";
62 /**/
63 echo '<th>' . "\n";
64 echo '<label for="ws-plugin--s2member-run-deactivation-routines">' . "\n";
65 echo 'Safeguard s2Member Data/Options?' . "\n";
66 echo '</label>' . "\n";
67 echo '</th>' . "\n";
68 /**/
69 echo '</tr>' . "\n";
70 echo '<tr>' . "\n";
71 /**/
72 echo '<td>' . "\n";
73 echo '<select name="ws_plugin__s2member_run_deactivation_routines" id="ws-plugin--s2member-run-deactivation-routines">' . "\n";
74 echo '<option value="1"' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["run_deactivation_routines"]) ? ' selected="selected"' : '') . '></option>' . "\n";
75 echo '<option value="0"' . ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["run_deactivation_routines"]) ? ' selected="selected"' : '') . '>Yes ( safeguard all data/options )</option>' . "\n";
76 echo '</select><br />' . "\n";
77 echo 'Recommended setting: ( <code>Yes, safeguard all data/options</code> )' . "\n";
78 echo '</td>' . "\n";
79 /**/
80 echo '</tr>' . "\n";
81 echo '</tbody>' . "\n";
82 echo '</table>' . "\n";
83 echo '</div>' . "\n";
84 /**/
85 echo '</div>' . "\n";
86 /**/
87 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_after_deactivation", get_defined_vars ());
88 }
89 /**/
90 if (apply_filters ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_display_security", true, get_defined_vars ()))
91 {
92 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_before_security", get_defined_vars ());
93 /**/
94 echo '<div class="ws-menu-page-group" title="Security Encryption Key">' . "\n";
95 /**/
96 echo '<div class="ws-menu-page-section ws-plugin--s2member-security-section">' . "\n";
97 echo '<img src="' . esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]) . '/images/large-icon.png" title="s2Member ( a Membership management system for WordPress® )" alt="" style="float:right; margin:0 0 0 25px; border:0;" />' . "\n";
98 echo '<h3>Security Encryption Key ( optional, for tighter security )</h3>' . "\n";
99 echo '<p>Just like WordPress®, s2Member is open-source software. Which is wonderful. However, this also makes it possible for anyone to grab a copy of the software, and try to learn their way around its security measures. In order to keep your installation of s2Member unique/secure, you should configure a Security Encryption Key. s2Member will use your Security Encryption Key to protect itself against hackers. It does this by encrypting all sensitive information with your Key. A Security Encryption Key is unique to your installation.</p>' . "\n";
100 echo '<p>Once you configure this, you do NOT want to change it; not ever. In fact, it is a VERY good idea to keep this backed up in a safe place, just in case you need to move your site, or re-install s2Member in the future. Some of the sensitive data that s2Member stores, will be encrypted with this Key. If you change it, that data can no longer be read, even by s2Member itself. In other words, don\'t use s2Member for six months, then decide to change your Key. That would break your installation. You configure this once, for each installation of s2Member; and you NEVER change it.</p>' . "\n";
101 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_during_security", get_defined_vars ());
102 /**/
103 echo '<table class="form-table">' . "\n";
104 echo '<tbody>' . "\n";
105 echo '<tr>' . "\n";
106 /**/
107 echo '<th>' . "\n";
108 echo '<label for="ws-plugin--s2member-sec-encryption-key">' . "\n";
109 echo 'Security Encryption Key ( at least 60 chars )' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["sec_encryption_key"]) ? ' <a href="#" onclick="ws_plugin__s2member_enableSecurityKey(); return false;" title="( not recommended )">edit key</a>' : ' <a href="#" onclick="ws_plugin__s2member_generateSecurityKey(); return false;" title="Insert an auto-generated Key. ( recommended )">auto-generate</a>') . "\n";
110 echo '</label>' . "\n";
111 echo '</th>' . "\n";
112 /**/
113 echo '</tr>' . "\n";
114 echo '<tr>' . "\n";
115 /**/
116 echo '<td>' . "\n";
117 echo '<input type="text" name="ws_plugin__s2member_sec_encryption_key" id="ws-plugin--s2member-sec-encryption-key" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["sec_encryption_key"]) . '" maxlength="256" autocomplete="off"' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["sec_encryption_key"]) ? ' disabled="disabled"' : '') . ' />' . "\n";
118 echo (!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["sec_encryption_key"]) ? '<br />This may contain letters, numbers, spaces; even punctuation. Up to 256 characters.<br /><em>Ex: <code>' . esc_html (strtoupper (c_ws_plugin__s2member_utils_strings::random_str_gen (64))) . '</code></em>' . "\n" : '';
119 echo (count ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["sec_encryption_key_history"]) > 1) ? '<br /><a href="#" onclick="ws_plugin__s2member_securityKeyHistory(); return false;">Click here</a> for a history of your last 10 Encryption Keys.<div id="ws-plugin--s2member-sec-encryption-key-history" style="display:none;"><code>' . implode ('</code><br /><code>', $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["sec_encryption_key_history"]) . '</code></div>' . "\n" : '';
120 echo '</td>' . "\n";
121 /**/
122 echo '</tr>' . "\n";
123 echo '</tbody>' . "\n";
124 echo '</table>' . "\n";
125 echo '</div>' . "\n";
126 /**/
127 echo '</div>' . "\n";
128 /**/
129 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_after_security", get_defined_vars ());
130 }
131 /**/
132 if (apply_filters ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_display_s_badge_wp_footer_code", true, get_defined_vars ()))
133 {
134 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_before_s_badge_wp_footer_code", get_defined_vars ());
135 /**/
136 echo '<div class="ws-menu-page-group" title="s2Member® Security Badge">' . "\n";
137 /**/
138 echo '<div class="ws-menu-page-section ws-plugin--s2member-s-badge-wp-footer-code-section">' . "\n";
139 echo '<h3>Security Badge &amp; Footer Configuration ( optional )</h3>' . "\n";
140 echo '<div class="ws-menu-page-right">' . c_ws_plugin__s2member_utilities::s_badge_gen ("1", true, true) . '</div>' . "\n";
141 echo '<p>An s2Member® Security Badge <em>( optional )</em>, can be used to express your site\'s concern for security; demonstrating to all Users/Members that your site <em>( and the s2Member software )</em>, takes security seriously. However, in order to qualify your site, you MUST generate a Security Encryption Key <em>( previous section )</em>, and then click "Save All Changes". Only then, will s2Member officially verify your installation <em>( verification occurs automatically )</em>. Once you\'ve properly configured all aspects of s2Member, your s2Member® Security Badge will be verified. *Note: to see the "verified" version of your Security Badge, you might need to refresh your browser after saving all changes <em>( i.e. after you create a Security Encryption Key )</em>. Also, s2Member will NOT "verify" your site if you turn off Unique IP Restrictions, Brute Force Login Protection, or if your <code>/wp-config.php</code> file lacks <a href="http://codex.wordpress.org/Editing_wp-config.php#Security_Keys" target="_blank" rel="external">Security Keys</a> <em>( at least 60 chars in length, each )</em>.</p>' . "\n";
142 echo '<p><strong>How does s2Member know when my site is secure?</strong><br />If enabled below, an API call for "Security Badge Status", will allow web service connections to determine your status. Clicking <a href="' . esc_attr (site_url ("/?s2member_s_badge_status=1")) . '" target="_blank" rel="external">this link</a> will report <code>1</code> <em>( secure )</em>, <code>0</code> <em>( at risk )</em>, or <code>-</code> <em>( API disabled )</em>. Once all security considerations are satisfied, s2Member will report <code>1</code> <em>( secure )</em> for your installation. *Note, this simple API will NOT, and should not, report any other information. It will ONLY report the current status of your Security Badge, as determined by your installation of s2Member. When/if you install the s2Member Security Badge, s2Member will make a connection to your site "once per day", to test the status of your Security Badge.</p>' . "\n";
143 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_during_s_badge_wp_footer_code", get_defined_vars ());
144 /**/
145 echo '<table class="form-table">' . "\n";
146 echo '<tbody>' . "\n";
147 echo '<tr>' . "\n";
148 /**/
149 echo '<th>' . "\n";
150 echo '<label for="ws-plugin--s2member-s-badge-status-enabled">' . "\n";
151 echo 'Enable Security Badge Status API?' . "\n";
152 echo '</label>' . "\n";
153 echo '</th>' . "\n";
154 /**/
155 echo '</tr>' . "\n";
156 echo '<tr>' . "\n";
157 /**/
158 echo '<td>' . "\n";
159 echo '<select name="ws_plugin__s2member_s_badge_status_enabled" id="ws-plugin--s2member-s-badge-status-enabled">' . "\n";
160 echo '<option value="0"' . ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["s_badge_status_enabled"]) ? ' selected="selected"' : '') . '>No ( default, Badge Status API is disabled )</option>' . "\n";
161 echo '<option value="1"' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["s_badge_status_enabled"]) ? ' selected="selected"' : '') . '>Yes ( enable Badge Status API for verification )</option>' . "\n";
162 echo '</select><br />' . "\n";
163 echo 'This must be enabled if you want s2Member to verify your Security Badge.' . "\n";
164 echo '</td>' . "\n";
165 /**/
166 echo '</tr>' . "\n";
167 echo '<tr>' . "\n";
168 /**/
169 echo '<th>' . "\n";
170 echo '<label for="ws-plugin--s2member-wp-footer-code">' . "\n";
171 echo 'Customize WordPress® Footer:<br />' . "\n";
172 echo '<small>[ <a href="#" onclick="this.$code = jQuery(\'textarea#ws-plugin--s2member-wp-footer-code\'); this.$code.val(jQuery.trim(unescape(\'' . rawurlencode ('[s2Member-Security-Badge v="1" /]') . '\')+\'\n\'+this.$code.val())); return false;">Click HERE to insert your Security Badge</a> ],<br />or use Shortcode <code>[s2Member-Security-Badge v="1" /]</code> in a Post/Page/Widget.</small>' . "\n";
173 echo '</label>' . "\n";
174 echo '</th>' . "\n";
175 /**/
176 echo '</tr>' . "\n";
177 echo '<tr>' . "\n";
178 /**/
179 echo '<td>' . "\n";
180 echo '<textarea name="ws_plugin__s2member_wp_footer_code" id="ws-plugin--s2member-wp-footer-code" rows="8" wrap="off" spellcheck="false" style="font-family:Consolas, monospace;">' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["wp_footer_code"]) . '</textarea><br />' . "\n";
181 echo 'Any valid XHTML / JavaScript' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? '' : ' ( or even PHP )') . ' code will work just fine here.' . "\n";
182 echo '</td>' . "\n";
183 /**/
184 echo '</tr>' . "\n";
185 echo '</tbody>' . "\n";
186 echo '</table>' . "\n";
187 echo '</div>' . "\n";
188 /**/
189 echo '</div>' . "\n";
190 /**/
191 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_after_s_badge_wp_footer_code", get_defined_vars ());
192 }
193 /**/
194 if (apply_filters ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_display_email_config", true, get_defined_vars ()))
195 {
196 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_before_email_config", get_defined_vars ());
197 /**/
198 echo '<div class="ws-menu-page-group" title="Email Configuration">' . "\n";
199 /**/
200 echo '<div class="ws-menu-page-section ws-plugin--s2member-email-section">' . "\n";
201 echo '<h3 style="margin:0;">Email From: ' . esc_html ('"Name" <address>') . '</h3>' . "\n";
202 echo '<p style="margin:0;">This is the name/address that will appear in outgoing email notifications sent by the s2Member plugin.</p>' . "\n";
203 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_during_email_from_name_config", get_defined_vars ());
204 /**/
205 echo '<table class="form-table">' . "\n";
206 echo '<tbody>' . "\n";
207 echo '<tr>' . "\n";
208 /**/
209 echo '<th>' . "\n";
210 echo '<label for="ws-plugin--s2member-reg-email-from-name">' . "\n";
211 echo 'Email From Name:' . "\n";
212 echo '</label>' . "\n";
213 echo '</th>' . "\n";
214 /**/
215 echo '</tr>' . "\n";
216 echo '<tr>' . "\n";
217 /**/
218 echo '<td>' . "\n";
219 echo '<input type="text" name="ws_plugin__s2member_reg_email_from_name" id="ws-plugin--s2member-reg-email-from-name" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["reg_email_from_name"]) . '" /><br />' . "\n";
220 echo 'We recommend that you use the name of your site here.' . "\n";
221 echo '</td>' . "\n";
222 /**/
223 echo '</tr>' . "\n";
224 echo '<tr>' . "\n";
225 /**/
226 echo '<th>' . "\n";
227 echo '<label for="ws-plugin--s2member-reg-email-from-email">' . "\n";
228 echo 'Email From Address:' . "\n";
229 echo '</label>' . "\n";
230 echo '</th>' . "\n";
231 /**/
232 echo '</tr>' . "\n";
233 echo '<tr>' . "\n";
234 /**/
235 echo '<td>' . "\n";
236 echo '<input type="text" name="ws_plugin__s2member_reg_email_from_email" id="ws-plugin--s2member-reg-email-from-email" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["reg_email_from_email"]) . '" /><br />' . "\n";
237 echo 'We recommend something like: support@your-domain.com.' . "\n";
238 echo '</td>' . "\n";
239 /**/
240 echo '</tr>' . "\n";
241 echo '<tr>' . "\n";
242 /**/
243 echo '<th>' . "\n";
244 echo '<label for="ws-plugin--s2member-reg-email-support-link">' . "\n";
245 echo 'Email Support/Contact Link:' . "\n";
246 echo '</label>' . "\n";
247 echo '</th>' . "\n";
248 /**/
249 echo '</tr>' . "\n";
250 echo '<tr>' . "\n";
251 /**/
252 echo '<td>' . "\n";
253 echo '<input type="text" name="ws_plugin__s2member_reg_email_support_link" id="ws-plugin--s2member-reg-email-support-link" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["reg_email_support_link"]) . '" /><br />' . "\n";
254 echo 'Ex: <code>mailto:support@your-domain.com</code> ( <em>mailto link</em> ).<br />' . "\n";
255 echo 'Or: <code>' . esc_html (site_url ("/contact-us/")) . '</code>.' . "\n";
256 echo '</td>' . "\n";
257 /**/
258 echo '</tr>' . "\n";
259 echo '</tbody>' . "\n";
260 echo '</table>' . "\n";
261 /**/
262 echo '<div class="ws-menu-page-hr"></div>' . "\n";
263 /**/
264 echo '<h3 style="margin:0;">New User Email Configuration</h3>' . "\n";
265 echo '<input type="hidden" id="ws-plugin--s2member-pluggables-wp-new-user-notification" value="' . esc_attr ((empty ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["pluggables"]["wp_new_user_notification"])) ? '0' : '1') . '" />' . "\n";
266 echo (empty ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["pluggables"]["wp_new_user_notification"])) ? '<p class="ws-menu-page-error" style="margin:0;"><em><strong>Conflict warning:</strong> You have another theme or plugin installed that is preventing s2Member from controlling this aspect of your installation. When the pluggable function <code><a href="http://codex.wordpress.org/Function_Reference/wp_new_user_notification" target="_blank" rel="external">wp_new_user_notification()</a></code> is handled by another plugin, it\'s not possible for s2Member to allow customization of New User Emails. This is NOT a major issue. In fact, in some cases, it might be desirable. That being said, if you DO want to use s2Member\'s customization of New User Emails, you will need to deactivate one plugin at a time until this conflict warning goes away.</em></p>' . "\n" : '';
267 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_during_new_user_emails", get_defined_vars ());
268 /**/
269 echo '<table class="form-table">' . "\n";
270 echo '<tbody>' . "\n";
271 echo '<tr>' . "\n";
272 /**/
273 echo '<td>' . "\n";
274 echo '<select name="ws_plugin__s2member_new_user_emails_enabled" id="ws-plugin--s2member-new-user-emails-enabled">' . "\n";
275 echo '<option value="0"' . ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_emails_enabled"]) ? ' selected="selected"' : '') . '>No ( default, use WordPress® defaults )</option>' . "\n";
276 echo '<option value="1"' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_emails_enabled"]) ? ' selected="selected"' : '') . '>Yes ( customize New User Emails with s2Member )</option>' . "\n";
277 echo '</select>' . "\n";
278 echo '</td>' . "\n";
279 /**/
280 echo '</tr>' . "\n";
281 echo '</tbody>' . "\n";
282 echo '</table>' . "\n";
283 /**/
284 echo '<div id="ws-plugin--s2member-new-user-emails">' . "\n";
285 /**/
286 echo '<div class="ws-menu-page-hr"></div>' . "\n";
287 /**/
288 echo '<h3 style="margin:0;">New User Email Message ( <a href="#" onclick="jQuery(\'div#ws-plugin--s2member-new-user-email-details\').toggle(); return false;" class="ws-dotted-link">click to customize</a> )</h3>' . "\n";
289 echo '<p style="margin:0;">This email is sent to all new Users/Members. It should always contain their Username/Password. In addition to this email, s2Member will also send new paying Customers a Signup Confirmation Email, which you can customize from your Dashboard, under: <code>s2Member -> PayPal® Options</code>. You may wish to customize these emails further, by providing details that are specifically geared to your site.</p>' . "\n";
290 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_during_new_user_email", get_defined_vars ());
291 /**/
292 echo '<div id="ws-plugin--s2member-new-user-email-details" style="display:none;">' . "\n";
293 echo '<table class="form-table">' . "\n";
294 echo '<tbody>' . "\n";
295 echo '<tr>' . "\n";
296 /**/
297 echo '<th>' . "\n";
298 echo '<label for="ws-plugin--s2member-new-user-email-subject">' . "\n";
299 echo 'New User Email Subject:' . "\n";
300 echo '</label>' . "\n";
301 echo '</th>' . "\n";
302 /**/
303 echo '</tr>' . "\n";
304 echo '<tr>' . "\n";
305 /**/
306 echo '<td>' . "\n";
307 echo '<input type="text" name="ws_plugin__s2member_new_user_email_subject" id="ws-plugin--s2member-new-user-email-subject" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_email_subject"]) . '" /><br />' . "\n";
308 echo 'Subject Line used in the email sent to new Users/Members.' . "\n";
309 echo '</td>' . "\n";
310 /**/
311 echo '</tr>' . "\n";
312 echo '<tr>' . "\n";
313 /**/
314 echo '<th>' . "\n";
315 echo '<label for="ws-plugin--s2member-new-user-email-message">' . "\n";
316 echo 'New User Email Message:' . "\n";
317 echo '</label>' . "\n";
318 echo '</th>' . "\n";
319 /**/
320 echo '</tr>' . "\n";
321 echo '<tr>' . "\n";
322 /**/
323 echo '<td>' . "\n";
324 echo '<textarea name="ws_plugin__s2member_new_user_email_message" id="ws-plugin--s2member-new-user-email-message" rows="10">' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_email_message"]) . '</textarea><br />' . "\n";
325 echo 'Message Body used in the email sent to new Users/Members.<br /><br />' . "\n";
326 echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
327 echo '<ul>' . "\n";
328 echo '<li><code>%%user_first_name%%</code> = The First Name of the Member who registered their Username.</li>' . "\n";
329 echo '<li><code>%%user_last_name%%</code> = The Last Name of the Member who registered their Username.</li>' . "\n";
330 echo '<li><code>%%user_full_name%%</code> = The Full Name ( First &amp; Last ) of the Member who registered their Username.</li>' . "\n";
331 echo '<li><code>%%user_email%%</code> = The Email Address of the Member who registered their Username.</li>' . "\n";
332 echo '<li><code>%%user_login%%</code> = The Username the Member selected during registration.</li>' . "\n";
333 echo '<li><code>%%user_pass%%</code> = The Password selected or generated during registration.</li>' . "\n";
334 echo '<li><code>%%user_ip%%</code> = The User\'s IP Address, detected via <code>$_SERVER["REMOTE_ADDR"]</code>.</li>' . "\n";
335 echo '<li><code>%%user_id%%</code> = A unique WordPress® User ID generated during registration.</li>' . "\n";
336 echo '<li><code>%%wp_login_url%%</code> = The full URL where Users can get logged into your site.</li>' . "\n";
337 echo '</ul>' . "\n";
338 /**/
339 echo '<strong>Custom Registration Fields are also supported in this email:</strong>' . "\n";
340 echo '<ul>' . "\n";
341 echo '<li><code>%%date_of_birth%%</code> would be valid; if you have a Custom Registration Field with the ID <code>date_of_birth</code>.</li>' . "\n";
342 echo '<li><code>%%street_address%%</code> would be valid; if you have a Custom Registration Field with the ID <code>street_address</code>.</li>' . "\n";
343 echo '<li><code>%%country%%</code> would be valid; if you have a Custom Registration Field with the ID <code>country</code>.</li>' . "\n";
344 echo '<li><em><code>%%etc, etc...%%</code> <strong>see:</strong> s2Member -> General Options -> Custom Registration Fields</em>.</li>' . "\n";
345 echo '</ul>' . "\n";
346 /**/
347 echo '<strong>Custom Replacement Codes can also be inserted using these instructions:</strong>' . "\n";
348 echo '<ul>' . "\n";
349 echo '<li><code>%%cv0%%</code> = The domain of your site, which is passed through the `custom` attribute in your Shortcode.</li>' . "\n";
350 echo '<li><code>%%cv1%%</code> = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute; inside your Shortcode, like this: <code>custom="' . esc_html ($_SERVER["HTTP_HOST"]) . '|cv1|cv2|cv3"</code>. You can have an unlimited number of custom variables. Obviously, this is for advanced webmasters; but the functionality has been made available for those who need it.</li>' . "\n";
351 echo '</ul>' . "\n";
352 echo '<strong>This example uses cv1 to record a special marketing campaign:</strong><br />' . "\n";
353 echo '<em>( The campaign ( i.e. christmas-promo ) could be referenced using <code>%%cv1%%</code> )</em><br />' . "\n";
354 echo '<code>custom="' . esc_html ($_SERVER["HTTP_HOST"]) . '|christmas-promo"</code>' . "\n";
355 /**/
356 echo '</td>' . "\n";
357 /**/
358 echo '</tr>' . "\n";
359 echo '</tbody>' . "\n";
360 echo '</table>' . "\n";
361 echo '</div>' . "\n";
362 /**/
363 echo '<div class="ws-menu-page-hr"></div>' . "\n";
364 /**/
365 echo '<h3 style="margin:0;">Administrative: New User Notification ( <a href="#" onclick="jQuery(\'div#ws-plugin--s2member-new-user-admin-email-details\').toggle(); return false;" class="ws-dotted-link">click to customize</a> )</h3>' . "\n";
366 echo '<p style="margin:0;">This email notification is sent to you, each time a new User/Member registers.</p>' . "\n";
367 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_during_new_user_admin_email", get_defined_vars ());
368 /**/
369 echo '<div id="ws-plugin--s2member-new-user-admin-email-details" style="display:none;">' . "\n";
370 echo '<table class="form-table">' . "\n";
371 echo '<tbody>' . "\n";
372 echo '<tr>' . "\n";
373 /**/
374 echo '<th>' . "\n";
375 echo '<label for="ws-plugin--s2member-new-user-admin-email-recipients">' . "\n";
376 echo 'New User Notification Recipients:' . "\n";
377 echo '</label>' . "\n";
378 echo '</th>' . "\n";
379 /**/
380 echo '</tr>' . "\n";
381 echo '<tr>' . "\n";
382 /**/
383 echo '<td>' . "\n";
384 echo '<input type="text" name="ws_plugin__s2member_new_user_admin_email_recipients" id="ws-plugin--s2member-new-user-admin-email-recipients" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_admin_email_recipients"]) . '" /><br />' . "\n";
385 echo 'This is a semicolon ( ; ) delimited list of Recipients. Here is an example:<br />' . "\n";
386 echo '<code>"Name" &lt;user@example.com&gt;; admin@example.com; "Webmaster" &lt;webmaster@example.com&gt;</code>' . "\n";
387 echo '</td>' . "\n";
388 /**/
389 echo '</tr>' . "\n";
390 echo '<tr>' . "\n";
391 /**/
392 echo '<th>' . "\n";
393 echo '<label for="ws-plugin--s2member-new-user-admin-email-subject">' . "\n";
394 echo 'New User Notification Subject:' . "\n";
395 echo '</label>' . "\n";
396 echo '</th>' . "\n";
397 /**/
398 echo '</tr>' . "\n";
399 echo '<tr>' . "\n";
400 /**/
401 echo '<td>' . "\n";
402 echo '<input type="text" name="ws_plugin__s2member_new_user_admin_email_subject" id="ws-plugin--s2member-new-user-admin-email-subject" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_admin_email_subject"]) . '" /><br />' . "\n";
403 echo 'Subject Line used in the email notification sent to Administrator.' . "\n";
404 echo '</td>' . "\n";
405 /**/
406 echo '</tr>' . "\n";
407 echo '<tr>' . "\n";
408 /**/
409 echo '<th>' . "\n";
410 echo '<label for="ws-plugin--s2member-new-user-admin-email-message">' . "\n";
411 echo 'New User Notification Message:' . "\n";
412 echo '</label>' . "\n";
413 echo '</th>' . "\n";
414 /**/
415 echo '</tr>' . "\n";
416 echo '<tr>' . "\n";
417 /**/
418 echo '<td>' . "\n";
419 echo '<textarea name="ws_plugin__s2member_new_user_admin_email_message" id="ws-plugin--s2member-new-user-admin-email-message" rows="10">' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["new_user_admin_email_message"]) . '</textarea><br />' . "\n";
420 echo 'Message Body used in the email notification sent to Administrator.<br /><br />' . "\n";
421 echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
422 echo '<ul>' . "\n";
423 echo '<li><code>%%user_first_name%%</code> = The First Name of the Member who registered their Username.</li>' . "\n";
424 echo '<li><code>%%user_last_name%%</code> = The Last Name of the Member who registered their Username.</li>' . "\n";
425 echo '<li><code>%%user_full_name%%</code> = The Full Name ( First &amp; Last ) of the Member who registered their Username.</li>' . "\n";
426 echo '<li><code>%%user_email%%</code> = The Email Address of the Member who registered their Username.</li>' . "\n";
427 echo '<li><code>%%user_login%%</code> = The Username the Member selected during registration.</li>' . "\n";
428 echo '<li><code>%%user_pass%%</code> = The Password selected or generated during registration.</li>' . "\n";
429 echo '<li><code>%%user_ip%%</code> = The User\'s IP Address, detected via <code>$_SERVER["REMOTE_ADDR"]</code>.</li>' . "\n";
430 echo '<li><code>%%user_id%%</code> = A unique WordPress® User ID generated during registration.</li>' . "\n";
431 echo '<li><code>%%wp_login_url%%</code> = The full URL where Users can get logged into your site.</li>' . "\n";
432 echo '</ul>' . "\n";
433 /**/
434 echo '<strong>Custom Registration Fields are also supported in this email:</strong>' . "\n";
435 echo '<ul>' . "\n";
436 echo '<li><code>%%date_of_birth%%</code> would be valid; if you have a Custom Registration Field with the ID <code>date_of_birth</code>.</li>' . "\n";
437 echo '<li><code>%%street_address%%</code> would be valid; if you have a Custom Registration Field with the ID <code>street_address</code>.</li>' . "\n";
438 echo '<li><code>%%country%%</code> would be valid; if you have a Custom Registration Field with the ID <code>country</code>.</li>' . "\n";
439 echo '<li><em><code>%%etc, etc...%%</code> <strong>see:</strong> s2Member -> General Options -> Custom Registration Fields</em>.</li>' . "\n";
440 echo '</ul>' . "\n";
441 /**/
442 echo '<strong>Custom Replacement Codes can also be inserted using these instructions:</strong>' . "\n";
443 echo '<ul>' . "\n";
444 echo '<li><code>%%cv0%%</code> = The domain of your site, which is passed through the `custom` attribute in your Shortcode.</li>' . "\n";
445 echo '<li><code>%%cv1%%</code> = If you need to track additional custom variables, you can pipe delimit them into the `custom` attribute; inside your Shortcode, like this: <code>custom="' . esc_html ($_SERVER["HTTP_HOST"]) . '|cv1|cv2|cv3"</code>. You can have an unlimited number of custom variables. Obviously, this is for advanced webmasters; but the functionality has been made available for those who need it.</li>' . "\n";
446 echo '</ul>' . "\n";
447 echo '<strong>This example uses cv1 to record a special marketing campaign:</strong><br />' . "\n";
448 echo '<em>( The campaign ( i.e. christmas-promo ) could be referenced using <code>%%cv1%%</code> )</em><br />' . "\n";
449 echo '<code>custom="' . esc_html ($_SERVER["HTTP_HOST"]) . '|christmas-promo"</code>' . "\n";
450 /**/
451 echo '</td>' . "\n";
452 /**/
453 echo '</tr>' . "\n";
454 echo '</tbody>' . "\n";
455 echo '</table>' . "\n";
456 echo '</div>' . "\n";
457 echo '</div>' . "\n";
458 /**/
459 echo '</div>' . "\n";
460 /**/
461 echo '</div>' . "\n";
462 /**/
463 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_after_email_config", get_defined_vars ());
464 }
465 /**/
466 if (apply_filters ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_display_open_registration", true, get_defined_vars ()))
467 {
468 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_before_open_registration", get_defined_vars ());
469 /**/
470 if (is_multisite () && is_main_site ()) /* A Multisite Network, and we're on the Main Site? */
471 {
472 echo '<div class="ws-menu-page-group" title="Open Registration">' . "\n";
473 /**/
474 echo '<div class="ws-menu-page-section ws-plugin--s2member-open-registration-section">' . "\n";
475 echo '<h3>Open Registration / Free Subscribers ( optional )</h3>' . "\n";
476 echo '<p>On the Main Site of a Multisite Network, the settings for Open Registration are consolidated into the <code>s2Member -> Multisite (Config)</code> panel.</p>' . "\n";
477 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_during_open_registration", get_defined_vars ());
478 echo '</div>' . "\n";
479 /**/
480 echo '</div>' . "\n";
481 }
482 else /* Else we display this section normally. No special considerations are required in this case. */
483 {
484 echo '<div class="ws-menu-page-group" title="Open Registration">' . "\n";
485 /**/
486 echo '<div class="ws-menu-page-section ws-plugin--s2member-open-registration-section">' . "\n";
487 echo '<h3>Open Registration / Free Subscribers ( optional )</h3>' . "\n";
488 echo '<p>s2Member supports Free Subscribers ( at Level #0 ), along with four Primary Levels [1-4] of paid Membership. If you want your visitors to be capable of registering absolutely free, you will want to "allow" Open Registration. Whenever a visitor registers without paying, they\'ll automatically become a Free Subscriber, at Level #0.</p>' . "\n";
489 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_during_open_registration", get_defined_vars ());
490 /**/
491 echo '<table class="form-table">' . "\n";
492 echo '<tbody>' . "\n";
493 echo '<tr>' . "\n";
494 /**/
495 echo '<th>' . "\n";
496 echo '<label for="ws-plugin--s2member-allow-subscribers-in">' . "\n";
497 echo 'Allow Open Registration? ( Free Subscribers )' . "\n";
498 echo '</label>' . "\n";
499 echo '</th>' . "\n";
500 /**/
501 echo '</tr>' . "\n";
502 echo '<tr>' . "\n";
503 /**/
504 echo '<td>' . "\n";
505 echo '<select name="ws_plugin__s2member_allow_subscribers_in" id="ws-plugin--s2member-allow-subscribers-in">' . "\n";
506 echo '<option value="0"' . ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["allow_subscribers_in"]) ? ' selected="selected"' : '') . '>No ( do NOT allow Open Registration )</option>' . "\n";
507 echo '<option value="1"' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["allow_subscribers_in"]) ? ' selected="selected"' : '') . '>Yes ( allow Open Registration; Free Subscribers at Level #0 )</option>' . "\n";
508 echo '</select><br />' . "\n";
509 echo 'If you set this to <code>Yes</code>, you\'re unlocking <a href="' . esc_attr (c_ws_plugin__s2member_utils_urls::wp_register_url ()) . '" target="_blank" rel="external">wp-login.php?action=register</a>. When a visitor registers without paying, they\'ll automatically become a Free Subscriber, at Level #0. The s2Member software reserves Level #0; to be used ONLY for Free Subscribers. All other Membership Levels [1-4] require payment.' . "\n";
510 echo '</td>' . "\n";
511 /**/
512 echo '</tr>' . "\n";
513 echo '</tbody>' . "\n";
514 echo '</table>' . "\n";
515 echo '</div>' . "\n";
516 /**/
517 echo '</div>' . "\n";
518 }
519 /**/
520 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_after_open_registration", get_defined_vars ());
521 }
522 /**/
523 if (apply_filters ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_display_membership_levels", true, get_defined_vars ()))
524 {
525 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_before_membership_levels", get_defined_vars ());
526 /**/
527 echo '<div class="ws-menu-page-group" title="Membership Levels/Labels">' . "\n";
528 /**/
529 echo '<div class="ws-menu-page-section ws-plugin--s2member-membership-levels-section">' . "\n";
530 echo '<h3>Membership Levels ( required, please customize these )</h3>' . "\n";
531 echo '<p>The default Membership Levels are labeled generically; feel free to modify them as needed. s2Member supports Free Subscribers <em>( at Level #0 )</em>, along with several Primary Roles for paid Membership <em>( i.e. Levels 1-4 )</em>, created by the s2Member plugin.' . ((!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()) ? ' s2Member also supports unlimited Custom Capability Packages <em>( see <code>s2Member -> API Scripting -> Custom Capabilities</code> )</em>' : '') . '. That being said, you don\'t have to use all of the Membership Levels if you don\'t want to. To use only 1 or 2 of these Levels, just create and/or modify your Membership Options Page, so that it only includes payment Buttons for the Levels you wish to use.</p>' . "\n";
532 echo (!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()) ? '<p><em><strong>TIP:</strong> <strong>Unlimited Membership Levels</strong> are only possible with <a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Pro Module / Prices")) . '" target="_blank" rel="external">s2Member Pro</a>. However, Custom Capabilities are possible in all versions of s2Member, including the free version. Custom Capabilities are a great way to extend s2Member in creative ways. If you\'re an advanced site owner, a theme designer, or a web developer integrating s2Member for a client, please check your Dashboard, under: <code>s2Member -> API Scripting -> Custom Capabilities</code>. We also recommend the <a href="http://www.primothemes.com/forums/viewforum.php?f=40" target="_blank" rel="external">s2Member Codex</a>.</em></p>' . "\n" : '';
533 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_during_membership_levels", get_defined_vars ());
534 /**/
535 echo '<table class="form-table">' . "\n";
536 echo '<tbody>' . "\n";
537 /**/
538 for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++)
539 {
540 echo '<tr>' . "\n";
541 /**/
542 echo '<th>' . "\n";
543 echo '<label for="ws-plugin--s2member-level' . $n . '-label">' . "\n";
544 echo ($n === 0) ? 'Level #' . $n . ' <em>( Free Subscribers )</em>:' . "\n" : 'Level #' . $n . ' Members:' . "\n";
545 echo '</label>' . "\n";
546 echo '</th>' . "\n";
547 /**/
548 echo '</tr>' . "\n";
549 echo '<tr>' . "\n";
550 /**/
551 echo '<td>' . "\n";
552 echo '<input type="text" name="ws_plugin__s2member_level' . $n . '_label" id="ws-plugin--s2member-level' . $n . '-label" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_label"]) . '" /><br />' . "\n";
553 echo 'This is the Label for Level #' . $n . (($n === 0) ? ' ( Free Subscribers )' : ' Members') . '.<br />' . "\n";
554 echo '</td>' . "\n";
555 /**/
556 echo '</tr>' . "\n";
557 }
558 /**/
559 echo '</tbody>' . "\n";
560 echo '</table>' . "\n";
561 /**/
562 echo '<div class="ws-menu-page-hr"></div>' . "\n";
563 /**/
564 echo '<table class="form-table" style="margin-top:0;">' . "\n";
565 echo '<tbody>' . "\n";
566 echo '<tr>' . "\n";
567 /**/
568 echo '<th style="padding-top:0;">' . "\n";
569 echo '<label for="ws-plugin--s2member-apply-label-translations">' . "\n";
570 echo 'Force WordPress® to use your Labels?' . "\n";
571 echo '</label>' . "\n";
572 echo '</th>' . "\n";
573 /**/
574 echo '</tr>' . "\n";
575 echo '<tr>' . "\n";
576 /**/
577 echo '<td>' . "\n";
578 echo '<input type="radio" name="ws_plugin__s2member_apply_label_translations" id="ws-plugin--s2member-apply-label-translations-0" value="0"' . ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["apply_label_translations"]) ? ' checked="checked"' : '') . ' /> <label for="ws-plugin--s2member-apply-label-translations-0">No</label> &nbsp;&nbsp;&nbsp; <input type="radio" name="ws_plugin__s2member_apply_label_translations" id="ws-plugin--s2member-apply-label-translations-1" value="1"' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["apply_label_translations"]) ? ' checked="checked"' : '') . ' /> <label for="ws-plugin--s2member-apply-label-translations-1">Yes, force WordPress® to use my Labels.</label><br />' . "\n";
579 echo 'This particular option affects your administrative Dashboard only <em>( i.e. your list of Users )</em>. s2Member can force WordPress® to use your Labels instead of referencing Roles by `s2Member Level #`. If this is your first installation of s2Member, we suggest leaving this set to <code>no</code> until you\'ve had a chance to get acclimated with s2Member\'s functionality. In fact, many site owners choose to leave this off, because they find it less confusing when Roles are referred to by their s2Member Level #.' . "\n";
580 echo '</td>' . "\n";
581 /**/
582 echo '</tr>' . "\n";
583 echo '</tbody>' . "\n";
584 echo '</table>' . "\n";
585 echo '</div>' . "\n";
586 /**/
587 echo '</div>' . "\n";
588 /**/
589 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_after_membership_levels", get_defined_vars ());
590 }
591 /**/
592 if (apply_filters ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_display_login_registration", true, get_defined_vars ()))
593 {
594 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_before_login_registration", get_defined_vars ());
595 /**/
596 echo '<div class="ws-menu-page-group" title="Login/Registration Design">' . "\n";
597 /**/
598 echo '<div class="ws-menu-page-section ws-plugin--s2member-login-registration-section">' . "\n";
599 echo '<h3>Login/Registration Page Customization ( required )</h3>' . "\n";
600 echo '<p>These settings allow you to customize the user interface for your Login / Registration Pages:<br />( <a href="' . esc_attr (c_ws_plugin__s2member_utils_urls::wp_register_url ()) . '" target="_blank" rel="external">' . esc_html (c_ws_plugin__s2member_utils_urls::wp_register_url ()) . '</a> )</p>' . "\n";
601 echo (is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && is_main_site ()) ? '<p><em>A Multisite Blog Farm uses this Form instead, powered by your theme.<br />( <a href="' . esc_attr (c_ws_plugin__s2member_utils_urls::wp_signup_url ()) . '" target="_blank" rel="external">' . esc_html (c_ws_plugin__s2member_utils_urls::wp_signup_url ()) . '</a> )</em></p>' . "\n" : '';
602 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_during_login_registration", get_defined_vars ());
603 /**/
604 echo '<table class="form-table">' . "\n";
605 echo '<tbody>' . "\n";
606 echo '<tr>' . "\n";
607 /**/
608 echo '<td>' . "\n";
609 echo '<h3 style="margin:0;">Overall Font/Size Configuration</h3>' . "\n";
610 echo '<p style="margin:0;">These settings are all focused on your Login/Registration Fonts.</p>' . "\n";
611 echo '</td>' . "\n";
612 /**/
613 echo '</tr>' . "\n";
614 echo '<tr>' . "\n";
615 /**/
616 echo '<th>' . "\n";
617 echo '<label for="ws-plugin--s2member-login-reg-font-size">' . "\n";
618 echo 'Overall Font Size:' . "\n";
619 echo '</label>' . "\n";
620 echo '</th>' . "\n";
621 /**/
622 echo '</tr>' . "\n";
623 echo '<tr>' . "\n";
624 /**/
625 echo '<td>' . "\n";
626 echo '<input type="text" name="ws_plugin__s2member_login_reg_font_size" id="ws-plugin--s2member-login-reg-font-size" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_font_size"]) . '" /><br />' . "\n";
627 echo 'Set this to a numeric value, calculated in pixels.' . "\n";
628 echo '</td>' . "\n";
629 /**/
630 echo '</tr>' . "\n";
631 echo '<tr>' . "\n";
632 /**/
633 echo '<th>' . "\n";
634 echo '<label for="ws-plugin--s2member-login-reg-font-family">' . "\n";
635 echo 'Overall Font Family:' . "\n";
636 echo '</label>' . "\n";
637 echo '</th>' . "\n";
638 /**/
639 echo '</tr>' . "\n";
640 echo '<tr>' . "\n";
641 /**/
642 echo '<td>' . "\n";
643 echo '<input type="text" name="ws_plugin__s2member_login_reg_font_family" id="ws-plugin--s2member-login-reg-font-family" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_font_family"]) . '" /><br />' . "\n";
644 echo 'Set this to a web-safe font family.' . "\n";
645 echo '</td>' . "\n";
646 /**/
647 echo '</tr>' . "\n";
648 echo '<tr>' . "\n";
649 /**/
650 echo '<th>' . "\n";
651 echo '<label for="ws-plugin--s2member-login-reg-font-field-size">' . "\n";
652 echo 'Form Field Font Size:' . "\n";
653 echo '</label>' . "\n";
654 echo '</th>' . "\n";
655 /**/
656 echo '</tr>' . "\n";
657 echo '<tr>' . "\n";
658 /**/
659 echo '<td>' . "\n";
660 echo '<input type="text" name="ws_plugin__s2member_login_reg_font_field_size" id="ws-plugin--s2member-login-reg-font-field-size" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_font_field_size"]) . '" /><br />' . "\n";
661 echo 'Set this to a numeric value, calculated in pixels.' . "\n";
662 echo '</td>' . "\n";
663 /**/
664 echo '</tr>' . "\n";
665 echo '</tbody>' . "\n";
666 echo '</table>' . "\n";
667 /**/
668 echo '<div class="ws-menu-page-hr"></div>' . "\n";
669 /**/
670 echo '<table class="form-table" style="margin-top:0;">' . "\n";
671 echo '<tbody>' . "\n";
672 echo '<tr>' . "\n";
673 /**/
674 echo '<td>' . "\n";
675 echo '<h3 style="margin:0;">Background Configuration</h3>' . "\n";
676 echo '<p style="margin:0;">These settings are all focused on your Login/Registration Background.</p>' . "\n";
677 echo '</td>' . "\n";
678 /**/
679 echo '</tr>' . "\n";
680 echo '<tr>' . "\n";
681 /**/
682 echo '<th>' . "\n";
683 echo '<label for="ws-plugin--s2member-login-reg-background-color">' . "\n";
684 echo 'Background Color:' . "\n";
685 echo '</label>' . "\n";
686 echo '</th>' . "\n";
687 /**/
688 echo '</tr>' . "\n";
689 echo '<tr>' . "\n";
690 /**/
691 echo '<td>' . "\n";
692 echo '<input type="text" name="ws_plugin__s2member_login_reg_background_color" id="ws-plugin--s2member-login-reg-background-color" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_background_color"]) . '" /><br />' . "\n";
693 echo 'Set this to a 6-digit hex color code.' . "\n";
694 echo '</td>' . "\n";
695 /**/
696 echo '</tr>' . "\n";
697 echo '<tr>' . "\n";
698 /**/
699 echo '<th>' . "\n";
700 echo '<label for="ws-plugin--s2member-login-reg-background-image">' . "\n";
701 echo 'Background Image:' . "\n";
702 echo '</label>' . "\n";
703 echo '</th>' . "\n";
704 /**/
705 echo '</tr>' . "\n";
706 echo '<tr>' . "\n";
707 /**/
708 echo '<td>' . "\n";
709 echo '<input type="text" name="ws_plugin__s2member_login_reg_background_image" id="ws-plugin--s2member-login-reg-background-image" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_background_image"]) . '" /><br />' . "\n";
710 echo '<input type="button" id="ws-plugin--s2member-login-reg-background-image-media-btn" value="Open Media Library" class="ws-menu-page-media-btn" rel="ws-plugin--s2member-login-reg-background-image" />' . "\n";
711 echo 'Set this to the URL of your Background Image. ( this is optional )<br />';
712 echo 'If supplied, your Background Image will be tiled.' . "\n";
713 echo '</td>' . "\n";
714 /**/
715 echo '</tr>' . "\n";
716 echo '<tr>' . "\n";
717 /**/
718 echo '<th>' . "\n";
719 echo '<label for="ws-plugin--s2member-login-reg-background-image-repeat">' . "\n";
720 echo 'Background Image Tile:' . "\n";
721 echo '</label>' . "\n";
722 echo '</th>' . "\n";
723 /**/
724 echo '</tr>' . "\n";
725 echo '<tr>' . "\n";
726 /**/
727 echo '<td>' . "\n";
728 echo '<select name="ws_plugin__s2member_login_reg_background_image_repeat" id="ws-plugin--s2member-login-reg-background-image-repeat">' . "\n";
729 echo '<option value="repeat"' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_background_image_repeat"] === "repeat") ? ' selected="selected"' : '') . '>Seamless Tile ( background-repeat: repeat; )</option>' . "\n";
730 echo '<option value="repeat-x"' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_background_image_repeat"] === "repeat-x") ? ' selected="selected"' : '') . '>Tile Horizontally ( background-repeat: repeat-x; )</option>' . "\n";
731 echo '<option value="repeat-y"' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_background_image_repeat"] === "repeat-y") ? ' selected="selected"' : '') . '>Tile Vertically ( background-repeat: repeat-y; )</option>' . "\n";
732 echo '<option value="no-repeat"' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_background_image_repeat"] === "no-repeat") ? ' selected="selected"' : '') . '>No Tiles ( background-repeat: no-repeat; )</option>' . "\n";
733 echo '</select><br />' . "\n";
734 echo 'This controls the way your Background Image is styled with CSS. [ <a href="http://www.w3schools.com/css/pr_background-repeat.asp" target="_blank" rel="external">learn more</a> ]' . "\n";
735 echo '</td>' . "\n";
736 /**/
737 echo '</tr>' . "\n";
738 echo '<tr>' . "\n";
739 /**/
740 echo '<th>' . "\n";
741 echo '<label for="ws-plugin--s2member-login-reg-background-text-color">' . "\n";
742 echo 'Color of Text on top of your Background:' . "\n";
743 echo '</label>' . "\n";
744 echo '</th>' . "\n";
745 /**/
746 echo '</tr>' . "\n";
747 echo '<tr>' . "\n";
748 /**/
749 echo '<td>' . "\n";
750 echo '<input type="text" name="ws_plugin__s2member_login_reg_background_text_color" id="ws-plugin--s2member-login-reg-background-text-color" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_background_text_color"]) . '" /><br />' . "\n";
751 echo 'Set this to a 6-digit hex color code.' . "\n";
752 echo '</td>' . "\n";
753 /**/
754 echo '</tr>' . "\n";
755 echo '<tr>' . "\n";
756 /**/
757 echo '<th>' . "\n";
758 echo '<label for="ws-plugin--s2member-login-reg-background-text-shadow-color">' . "\n";
759 echo 'Shadow Color for Text on top of your Background:' . "\n";
760 echo '</label>' . "\n";
761 echo '</th>' . "\n";
762 /**/
763 echo '</tr>' . "\n";
764 echo '<tr>' . "\n";
765 /**/
766 echo '<td>' . "\n";
767 echo '<input type="text" name="ws_plugin__s2member_login_reg_background_text_shadow_color" id="ws-plugin--s2member-login-reg-background-text-shadow-color" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_background_text_shadow_color"]) . '" /><br />' . "\n";
768 echo 'Set this to a 6-digit hex color code.' . "\n";
769 echo '</td>' . "\n";
770 /**/
771 echo '</tr>' . "\n";
772 echo '<tr>' . "\n";
773 /**/
774 echo '<th>' . "\n";
775 echo '<label for="ws-plugin--s2member-login-reg-background-box-shadow-color">' . "\n";
776 echo 'Shadow Color for Boxes on top of your Background:' . "\n";
777 echo '</label>' . "\n";
778 echo '</th>' . "\n";
779 /**/
780 echo '</tr>' . "\n";
781 echo '<tr>' . "\n";
782 /**/
783 echo '<td>' . "\n";
784 echo '<input type="text" name="ws_plugin__s2member_login_reg_background_box_shadow_color" id="ws-plugin--s2member-login-reg-background-box-shadow-color" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_background_box_shadow_color"]) . '" /><br />' . "\n";
785 echo 'Set this to a 6-digit hex color code.' . "\n";
786 echo '</td>' . "\n";
787 /**/
788 echo '</tr>' . "\n";
789 echo '</tbody>' . "\n";
790 echo '</table>' . "\n";
791 /**/
792 echo '<div class="ws-menu-page-hr"></div>' . "\n";
793 /**/
794 echo '<table class="form-table" style="margin-top:0;">' . "\n";
795 echo '<tbody>' . "\n";
796 echo '<tr>' . "\n";
797 /**/
798 echo '<td>' . "\n";
799 echo '<h3 style="margin:0;">Logo Image Configuration</h3>' . "\n";
800 echo '<p style="margin:0;">These settings are all focused on your Login/Registration Logo.</p>' . "\n";
801 echo '</td>' . "\n";
802 /**/
803 echo '</tr>' . "\n";
804 echo '<tr>' . "\n";
805 /**/
806 echo '<th>' . "\n";
807 echo '<label for="ws-plugin--s2member-login-reg-logo-src">' . "\n";
808 echo 'Logo Image Location:' . "\n";
809 echo '</label>' . "\n";
810 echo '</th>' . "\n";
811 /**/
812 echo '</tr>' . "\n";
813 echo '<tr>' . "\n";
814 /**/
815 echo '<td>' . "\n";
816 echo '<input type="text" name="ws_plugin__s2member_login_reg_logo_src" id="ws-plugin--s2member-login-reg-logo-src" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_logo_src"]) . '" /><br />' . "\n";
817 echo '<input type="button" id="ws-plugin--s2member-login-reg-logo-src-media-btn" value="Open Media Library" class="ws-menu-page-media-btn" rel="ws-plugin--s2member-login-reg-logo-src" />' . "\n";
818 echo 'Set this to the URL of your Logo Image.<br />' . "\n";
819 echo 'Suggested size is around 500 x 100.' . "\n";
820 echo '</td>' . "\n";
821 /**/
822 echo '</tr>' . "\n";
823 echo '<tr>' . "\n";
824 /**/
825 echo '<th>' . "\n";
826 echo '<label for="ws-plugin--s2member-login-reg-logo-src-width">' . "\n";
827 echo 'Logo Image Width:' . "\n";
828 echo '</label>' . "\n";
829 echo '</th>' . "\n";
830 /**/
831 echo '</tr>' . "\n";
832 echo '<tr>' . "\n";
833 /**/
834 echo '<td>' . "\n";
835 echo '<input type="text" name="ws_plugin__s2member_login_reg_logo_src_width" id="ws-plugin--s2member-login-reg-logo-src-width" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_logo_src_width"]) . '" /><br />' . "\n";
836 echo 'The pixel Width of your Logo Image. <em>* This ALSO affects the overall width of your Login/Registration forms. If you want wider form fields, use a wider Logo.</em>' . "\n";
837 echo '</td>' . "\n";
838 /**/
839 echo '</tr>' . "\n";
840 echo '<tr>' . "\n";
841 /**/
842 echo '<th>' . "\n";
843 echo '<label for="ws-plugin--s2member-login-reg-logo-src-height">' . "\n";
844 echo 'Logo Image Height:' . "\n";
845 echo '</label>' . "\n";
846 echo '</th>' . "\n";
847 /**/
848 echo '</tr>' . "\n";
849 echo '<tr>' . "\n";
850 /**/
851 echo '<td>' . "\n";
852 echo '<input type="text" name="ws_plugin__s2member_login_reg_logo_src_height" id="ws-plugin--s2member-login-reg-logo-src-height" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_logo_src_height"]) . '" /><br />' . "\n";
853 echo 'The pixel Height of your Logo Image.' . "\n";
854 echo '</td>' . "\n";
855 /**/
856 echo '</tr>' . "\n";
857 echo '<tr>' . "\n";
858 /**/
859 echo '<th>' . "\n";
860 echo '<label for="ws-plugin--s2member-login-reg-logo-url">' . "\n";
861 echo 'Logo Image Click URL:' . "\n";
862 echo '</label>' . "\n";
863 echo '</th>' . "\n";
864 /**/
865 echo '</tr>' . "\n";
866 echo '<tr>' . "\n";
867 /**/
868 echo '<td>' . "\n";
869 echo '<input type="text" name="ws_plugin__s2member_login_reg_logo_url" id="ws-plugin--s2member-login-reg-logo-url" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_logo_url"]) . '" /><br />' . "\n";
870 echo 'Set this to the Click URL for your Logo Image.' . "\n";
871 echo '</td>' . "\n";
872 /**/
873 echo '</tr>' . "\n";
874 echo '<tr>' . "\n";
875 /**/
876 echo '<th>' . "\n";
877 echo '<label for="ws-plugin--s2member-login-reg-logo-title">' . "\n";
878 echo 'Logo Image Title Attribute:' . "\n";
879 echo '</label>' . "\n";
880 echo '</th>' . "\n";
881 /**/
882 echo '</tr>' . "\n";
883 echo '<tr>' . "\n";
884 /**/
885 echo '<td>' . "\n";
886 echo '<input type="text" name="ws_plugin__s2member_login_reg_logo_title" id="ws-plugin--s2member-login-reg-logo-title" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_logo_title"]) . '" /><br />' . "\n";
887 echo 'Used as the <code>title=""</code> attribute for your Logo Image.' . "\n";
888 echo '</td>' . "\n";
889 /**/
890 echo '</tr>' . "\n";
891 echo '</tbody>' . "\n";
892 echo '</table>' . "\n";
893 /**/
894 echo '<div class="ws-menu-page-hr"></div>' . "\n";
895 /**/
896 echo '<table class="form-table" style="margin-top:0;">' . "\n";
897 echo '<tbody>' . "\n";
898 echo '<tr>' . "\n";
899 /**/
900 echo '<td>' . "\n";
901 echo '<h3 style="margin:0;">Footer Design ( i.e. Bottom )</h3>' . "\n";
902 echo '<p style="margin:0;">This field accepts raw HTML' . ((!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()) ? ' ( and/or PHP )' : '') . ' code.</p>' . "\n";
903 echo '</td>' . "\n";
904 /**/
905 echo '</tr>' . "\n";
906 echo '<tr>' . "\n";
907 /**/
908 echo '<th>' . "\n";
909 echo '<label for="ws-plugin--s2member-login-reg-footer-design">' . "\n";
910 echo 'Login/Registration Footer Design ( optional ):' . "\n";
911 echo '</label>' . "\n";
912 echo '</th>' . "\n";
913 /**/
914 echo '</tr>' . "\n";
915 echo '<tr>' . "\n";
916 /**/
917 echo '<td>' . "\n";
918 echo '<textarea name="ws_plugin__s2member_login_reg_footer_design" id="ws-plugin--s2member-login-reg-footer-design" rows="3" wrap="off" spellcheck="false">' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_reg_footer_design"]) . '</textarea><br />' . "\n";
919 echo 'This optional HTML' . ((!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()) ? ' ( and/or PHP )' : '') . ' code will appear at the very bottom of your Login/Registration Forms.' . "\n";
920 echo '</td>' . "\n";
921 /**/
922 echo '</tr>' . "\n";
923 echo '</tbody>' . "\n";
924 echo '</table>' . "\n";
925 echo '</div>' . "\n";
926 /**/
927 echo '</div>' . "\n";
928 /**/
929 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_after_login_registration", get_defined_vars ());
930 }
931 /**/
932 if (apply_filters ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_display_custom_reg_fields", true, get_defined_vars ()))
933 {
934 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_before_custom_reg_fields", get_defined_vars ());
935 /**/
936 echo '<div class="ws-menu-page-group" title="Custom Registration Fields/Options">' . "\n";
937 /**/
938 echo '<div class="ws-menu-page-section ws-plugin--s2member-custom-reg-fields-section">' . "\n";
939 echo '<h3>Custom Registration Fields ( optional, for further customization )</h3>' . "\n";
940 echo '<p>Some fields are already built-in by default. The defaults are: <code>*Username*, *Email*, *First Name*, *Last Name*</code>.</p>' . "\n";
941 /**/
942 echo '<p>Custom Fields will appear in your Standard Registration Form:<br />( <a href="' . esc_attr (c_ws_plugin__s2member_utils_urls::wp_register_url ()) . '" target="_blank" rel="external">' . esc_html (c_ws_plugin__s2member_utils_urls::wp_register_url ()) . '</a> )</p>' . "\n";
943 echo (is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && is_main_site ()) ? '<p><em>A Multisite Blog Farm uses this Form instead. It supports Custom Fields too.<br />( <a href="' . esc_attr (c_ws_plugin__s2member_utils_urls::wp_signup_url ()) . '" target="_blank" rel="external">' . esc_html (c_ws_plugin__s2member_utils_urls::wp_signup_url ()) . '</a> )</em></p>' . "\n" : '';
944 /**/
945 if (is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && is_main_site ())
946 echo '<p><em>* For security purposes, Custom Passwords are NOT possible on the Main Site of a Blog Farm. A User MUST wait for the activation/confirmation email; where a randomly generated Password will be assigned. Please note... this limitation only affects your Main Site, via <code>/wp-signup.php</code>. In other words, your Customers ( i.e. other Blog Owners ) will still have the ability to allow Custom Passwords with s2Member. YOU are affected by this limitation, NOT them. * NOTE: s2Member (Pro) removes this limitation. If you install the s2Member Pro Module, you WILL be able to allow Custom Passwords through s2Member Pro Forms; even on a Multisite Blog Farm.</em></p>' . "\n";
947 /**/
948 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_during_custom_reg_fields", get_defined_vars ());
949 /**/
950 echo '<table class="form-table">' . "\n";
951 echo '<tbody>' . "\n";
952 echo '<tr>' . "\n";
953 /**/
954 echo '<th>' . "\n";
955 echo '<label>' . "\n";
956 echo 'Custom Registration Fields:' . "\n";
957 echo '</label>' . "\n";
958 echo '</th>' . "\n";
959 /**/
960 echo '</tr>' . "\n";
961 echo '<tr>' . "\n";
962 /**/
963 echo '<td>' . "\n";
964 echo '<input type="hidden" name="ws_plugin__s2member_custom_reg_fields" id="ws-plugin--s2member-custom-reg-fields" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields"]) . '" />' . "\n";
965 echo '<div id="ws-plugin--s2member-custom-reg-field-configuration"></div>' . "\n"; /* This is filled by JavaScript routines. */
966 echo '</td>' . "\n";
967 /**/
968 echo '</tr>' . "\n";
969 echo '<tr>' . "\n";
970 /**/
971 echo '<th>' . "\n";
972 echo '<label for="ws-plugin--s2member-custom-reg-names">' . "\n";
973 echo 'Collect First/Last Names during Registration?' . "\n";
974 echo '</label>' . "\n";
975 echo '</th>' . "\n";
976 /**/
977 echo '</tr>' . "\n";
978 echo '<tr>' . "\n";
979 /**/
980 echo '<td>' . "\n";
981 echo '<select name="ws_plugin__s2member_custom_reg_names" id="ws-plugin--s2member-custom-reg-names">' . "\n";
982 echo '<option value="1"' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_password"]) ? ' selected="selected"' : '') . '>Yes ( always collect First/Last Names during registration )</option>' . "\n";
983 echo '<option value="0"' . ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_names"]) ? ' selected="selected"' : '') . '>No ( do NOT collect First/Last Names during registration )</option>' . "\n";
984 echo '</select><br />' . "\n";
985 echo 'Recommended setting ( <code>Yes</code> ). It\'s usually a good idea to leave this on.' . "\n";
986 echo (c_ws_plugin__s2member_utils_conds::pro_is_installed ()) ? '<br /><em>* s2Member Pro (Checkout) Forms always require a First/Last Name.</em>' . "\n" : '';
987 echo '</td>' . "\n";
988 /**/
989 echo '</tr>' . "\n";
990 echo '<tr>' . "\n";
991 /**/
992 echo '<th>' . "\n";
993 echo '<label for="ws-plugin--s2member-custom-reg-display-name">' . "\n";
994 echo 'Set "Display Name" during Registration?' . "\n";
995 echo '</label>' . "\n";
996 echo '</th>' . "\n";
997 /**/
998 echo '</tr>' . "\n";
999 echo '<tr>' . "\n";
1000 /**/
1001 echo '<td>' . "\n";
1002 echo '<select name="ws_plugin__s2member_custom_reg_display_name" id="ws-plugin--s2member-custom-reg-display-name">' . "\n";
1003 echo '<option value="full"' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_display_name"] === "full") ? ' selected="selected"' : '') . '>Yes ( set Display Name to User\'s Full Name )</option>' . "\n";
1004 echo '<option value="first"' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_display_name"] === "first") ? ' selected="selected"' : '') . '>Yes ( set Display Name to User\'s First Name )</option>' . "\n";
1005 echo '<option value="last"' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_display_name"] === "last") ? ' selected="selected"' : '') . '>Yes ( set Display Name to User\'s Last Name )</option>' . "\n";
1006 echo '<option value="login"' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_display_name"] === "login") ? ' selected="selected"' : '') . '>Yes ( set Display Name to User\'s Username )</option>' . "\n";
1007 echo '<option value="0"' . ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_display_name"]) ? ' selected="selected"' : '') . '>No ( leave Display Name at default WordPress® value )</option>' . "\n";
1008 echo '</select>' . "\n";
1009 echo '</td>' . "\n";
1010 /**/
1011 echo '</tr>' . "\n";
1012 echo '<tr>' . "\n";
1013 /**/
1014 echo '<th>' . "\n";
1015 echo '<label for="ws-plugin--s2member-custom-reg-password">' . "\n";
1016 echo 'Allow Custom Passwords during Registration?' . "\n";
1017 echo '</label>' . "\n";
1018 echo '</th>' . "\n";
1019 /**/
1020 echo '</tr>' . "\n";
1021 echo '<tr>' . "\n";
1022 /**/
1023 echo '<td>' . "\n";
1024 echo '<select name="ws_plugin__s2member_custom_reg_password" id="ws-plugin--s2member-custom-reg-password"' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && is_main_site () && !c_ws_plugin__s2member_utils_conds::pro_is_installed ()) ? ' disabled="disabled"' : '') . '>' . "\n";
1025 echo '<option value="0"' . ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_password"]) ? ' selected="selected"' : '') . '>No ( send auto-generated passwords via email; after registration )</option>' . "\n";
1026 echo '<option value="1"' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_password"]) ? ' selected="selected"' : '') . '>Yes ( allow members to create their own password during registration )</option>' . "\n";
1027 echo '</select><br />' . "\n";
1028 echo 'Auto-generated Passwords are recommended for best security; because, this also serves as a form of email confirmation.' . "\n";
1029 echo '</td>' . "\n";
1030 /**/
1031 echo '</tr>' . "\n";
1032 echo '<tr>' . "\n";
1033 /**/
1034 echo '<th>' . "\n";
1035 echo '<label for="ws-plugin--s2member-custom-reg-force-personal-emails">' . "\n";
1036 echo 'Force Personal Emails during Registration?' . "\n";
1037 echo '</label>' . "\n";
1038 echo '</th>' . "\n";
1039 /**/
1040 echo '</tr>' . "\n";
1041 echo '<tr>' . "\n";
1042 /**/
1043 echo '<td>' . "\n";
1044 echo '<input type="text" name="ws_plugin__s2member_custom_reg_force_personal_emails" id="ws-plugin--s2member-custom-reg-force-personal-emails" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_force_personal_emails"]) . '" /><br />' . "\n";
1045 echo 'To force personal email addresses, provide a comma-delimited list of email users to reject. <a href="#" onclick="alert(\'s2Member will reject [user]@ ( based on your configuration here ). A JavaScript alert message will be issued, asking the User to, `please use a personal email address`.\'); return false;" tabindex="-1">[?]</a><br />' . "\n";
1046 echo 'Ex: <code>info,help,admin,webmaster,hostmaster,sales,support,spam</code><br />' . "\n";
1047 echo 'See: <a href="http://kb.mailchimp.com/article/what-role-addresses-does-mailchimp-specifically-block-from-bulk-importing/" target="_blank" rel="external">this article</a> for a more complete list.' . "\n";
1048 echo '</td>' . "\n";
1049 /**/
1050 echo '</tr>' . "\n";
1051 echo '<tr>' . "\n";
1052 /**/
1053 echo '<th>' . "\n";
1054 echo '<label for="ws-plugin--s2member-custom-reg-fields-4bp">' . "\n";
1055 echo 'Integrate Custom Registration Fields with BuddyPress too?' . "\n";
1056 echo '</label>' . "\n";
1057 echo '</th>' . "\n";
1058 /**/
1059 echo '</tr>' . "\n";
1060 echo '<tr>' . "\n";
1061 /**/
1062 echo '<td>' . "\n";
1063 echo '<div class="ws-menu-page-scrollbox" style="height:65px;">' . "\n";
1064 echo '<input type="hidden" name="ws_plugin__s2member_custom_reg_fields_4bp[]" value="update-signal"' . ((!c_ws_plugin__s2member_utils_conds::bp_is_installed ()) ? ' disabled="disabled"' : '') . ' />' . "\n";
1065 foreach (array ("profile-view" => "Yes, integrate with BuddyPress Public Profiles.", "registration" => "Yes, integrate with BuddyPress Registration Form.", "profile" => "Yes, integrate with BuddyPress Profile Editing Panel.") as $ws_plugin__s2member_temp_s_value => $ws_plugin__s2member_temp_s_label)
1066 echo '<input type="checkbox" name="ws_plugin__s2member_custom_reg_fields_4bp[]" id="ws-plugin--s2member-custom-reg-fields-4bp-' . esc_attr (preg_replace ("/[^a-z0-9_\-]/", "-", $ws_plugin__s2member_temp_s_value)) . '" value="' . esc_attr ($ws_plugin__s2member_temp_s_value) . '"' . ((in_array ($ws_plugin__s2member_temp_s_value, $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_fields_4bp"])) ? ' checked="checked"' : '') . ((!c_ws_plugin__s2member_utils_conds::bp_is_installed ()) ? ' disabled="disabled"' : '') . ' /> <label for="ws-plugin--s2member-custom-reg-fields-4bp-' . esc_attr (preg_replace ("/[^a-z0-9_\-]/", "-", $ws_plugin__s2member_temp_s_value)) . '">' . $ws_plugin__s2member_temp_s_label . '</label><br />' . "\n";
1067 echo '</div>' . "\n";
1068 echo (!c_ws_plugin__s2member_utils_conds::bp_is_installed ()) ? 'BuddyPress is NOT installed; which is perfectly OK. BuddyPress is NOT a requirement.<br />' . "\n" : '';
1069 echo 'Also, see below: <code>Member Profile Modifications</code>.' . "\n";
1070 echo '</td>' . "\n";
1071 /**/
1072 echo '</tr>' . "\n";
1073 echo '</tbody>' . "\n";
1074 echo '</table>' . "\n";
1075 echo '</div>' . "\n";
1076 /**/
1077 echo '</div>' . "\n";
1078 /**/
1079 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_after_custom_reg_fields", get_defined_vars ());
1080 }
1081 /**/
1082 if (apply_filters ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_display_login_welcome_page", true, get_defined_vars ()))
1083 {
1084 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_before_login_welcome_page", get_defined_vars ());
1085 /**/
1086 echo '<div class="ws-menu-page-group" title="Login Welcome Page">' . "\n";
1087 /**/
1088 echo '<div class="ws-menu-page-section ws-plugin--s2member-login-welcome-page-section">' . "\n";
1089 echo '<h3>Login Welcome Page ( required, please customize this )</h3>' . "\n";
1090 echo '<p>Please create and/or choose an existing Page to use as the first page Members will see after logging in.</p>' . "\n";
1091 echo '<p><em><strong>*Tip*</strong> This special Page will be protected from public access ( automatically ) by s2Member.</em></p>' . "\n";
1092 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_during_login_welcome_page", get_defined_vars ());
1093 /**/
1094 echo '<table class="form-table">' . "\n";
1095 echo '<tbody>' . "\n";
1096 echo '<tr>' . "\n";
1097 /**/
1098 echo '<th>' . "\n";
1099 echo '<label for="ws-plugin--s2member-login-welcome-page">' . "\n";
1100 echo 'Login Welcome Page:' . "\n";
1101 echo '</label>' . "\n";
1102 echo '</th>' . "\n";
1103 /**/
1104 echo '</tr>' . "\n";
1105 echo '<tr>' . "\n";
1106 /**/
1107 echo '<td>' . "\n";
1108 echo '<select name="ws_plugin__s2member_login_welcome_page" id="ws-plugin--s2member-login-welcome-page">' . "\n";
1109 echo '<option value="">&mdash; Select &mdash;</option>' . "\n";
1110 foreach (($ws_plugin__s2member_temp_a = array_merge ((array)get_pages ())) as $ws_plugin__s2member_temp_o)
1111 echo '<option value="' . esc_attr ($ws_plugin__s2member_temp_o->ID) . '"' . ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"] && $ws_plugin__s2member_temp_o->ID == $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_welcome_page"]) ? ' selected="selected"' : '') . '>' . esc_html ($ws_plugin__s2member_temp_o->post_title) . '</option>' . "\n";
1112 echo '</select><br />' . "\n";
1113 echo 'Please choose a Page to be used as the first page Members will see after logging in. This Page can contain anything you like. We recommend the following title: <code>Welcome To Our Members Area</code>.<br /><br />' . "\n";
1114 echo '&darr; Or, you may configure a Special Redirection URL, if you prefer. You\'ll need to type in the full URL, starting with: <code>http://</code>. <em>A few <a href="#" onclick="alert(\'Replacement Codes:\\n\\n%%current_user_login%% = The current User\\\'s Username, lowercase.\\n%%current_user_id%% = The current User\\\'s ID.\\n%%current_user_level%% = The current User\\\'s s2Member Level.\\n%%current_user_role%% = The current User\\\'s WordPress® Role.' . ((!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()) ? '\\n%%current_user_ccaps%% = The current User\\\'s Custom Capabilities.' : '') . '\\n%%current_user_logins%% = Number of times the current User has logged in.\\n\\nFor example, if you\\\'re using BuddyPress, and you want to redirect Members to their BuddyPress Profile page after logging in, you would setup a Special Redirection URL, like this: ' . site_url ("/members/%%current_user_login%%/profile/") . '\\n\\nOr ... using %%current_user_level%%, you could have a separate Login Welcome Page for each Membership Level that you plan to offer. BuddyPress not required.\'); return false;">Replacement Codes</a> are also supported here.</em>' . "\n";
1115 echo '<input type="text" name="ws_plugin__s2member_login_redirection_override" id="ws-plugin--s2member-login-redirection-override" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["login_redirection_override"]) . '" /><br />' . "\n";
1116 echo '</td>' . "\n";
1117 /**/
1118 echo '</tr>' . "\n";
1119 echo '</tbody>' . "\n";
1120 echo '</table>' . "\n";
1121 echo '</div>' . "\n";
1122 /**/
1123 echo '</div>' . "\n";
1124 /**/
1125 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_after_login_welcome_page", get_defined_vars ());
1126 }
1127 /**/
1128 if (apply_filters ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_display_membership_options_page", true, get_defined_vars ()))
1129 {
1130 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_before_membership_options_page", get_defined_vars ());
1131 /**/
1132 echo '<div class="ws-menu-page-group" title="Membership Options Page">' . "\n";
1133 /**/
1134 echo '<div class="ws-menu-page-section ws-plugin--s2member-membership-options-page-section">' . "\n";
1135 echo '<h3>Membership Options Page ( required, please customize this )</h3>' . "\n";
1136 echo '<p>Please create and/or choose an existing Page that showcases your Membership subscription options. This special Page is where you will insert the PayPal® Subscription Buttons generated for you by s2Member. This Page serves as your signup page. It should detail all of the features that come with Membership to your site, and provide a PayPal® Subscription Button for each Level of access you plan to offer. This is also the page that Users will be redirected to, should they attempt to access an area of your site that requires Membership.</p>' . "\n";
1137 echo '<p><em><strong>*Tip*</strong> s2Member will NEVER allow this Page to be protected from public access.</em></p>' . "\n";
1138 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_during_membership_options_page", get_defined_vars ());
1139 /**/
1140 echo '<table class="form-table">' . "\n";
1141 echo '<tbody>' . "\n";
1142 echo '<tr>' . "\n";
1143 /**/
1144 echo '<th>' . "\n";
1145 echo '<label for="ws-plugin--s2member-membership-options-page">' . "\n";
1146 echo 'Membership Options Page:' . "\n";
1147 echo '</label>' . "\n";
1148 echo '</th>' . "\n";
1149 /**/
1150 echo '</tr>' . "\n";
1151 echo '<tr>' . "\n";
1152 /**/
1153 echo '<td>' . "\n";
1154 echo '<select name="ws_plugin__s2member_membership_options_page" id="ws-plugin--s2member-membership-options-page">' . "\n";
1155 echo '<option value="">&mdash; Select &mdash;</option>' . "\n";
1156 foreach (($ws_plugin__s2member_temp_a = array_merge ((array)get_pages ())) as $ws_plugin__s2member_temp_o)
1157 echo '<option value="' . esc_attr ($ws_plugin__s2member_temp_o->ID) . '"' . (($ws_plugin__s2member_temp_o->ID == $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["membership_options_page"]) ? ' selected="selected"' : '') . '>' . esc_html ($ws_plugin__s2member_temp_o->post_title) . '</option>' . "\n";
1158 echo '</select><br />' . "\n";
1159 echo 'Please choose a Page that provides Users a way to signup for Membership. This Page should also contain your PayPal&reg Subscription button(s). We recommend the following title: <code>Membership Signup</code>.' . "\n";
1160 echo '</td>' . "\n";
1161 /**/
1162 echo '</tr>' . "\n";
1163 echo '</tbody>' . "\n";
1164 echo '</table>' . "\n";
1165 echo '</div>' . "\n";
1166 /**/
1167 echo '</div>' . "\n";
1168 /**/
1169 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_after_membership_options_page", get_defined_vars ());
1170 }
1171 /**/
1172 if (apply_filters ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_display_profile_modifications", true, get_defined_vars ()))
1173 {
1174 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_before_profile_modifications", get_defined_vars ());
1175 /**/
1176 echo '<div class="ws-menu-page-group" title="Member Profile Modifications">' . "\n";
1177 /**/
1178 echo '<div class="ws-menu-page-section ws-plugin--s2member-profile-modifications-section">' . "\n";
1179 echo '<h3>Giving Members The Ability To Modify Their Profile</h3>' . "\n";
1180 echo '<p>s2Member can be configured to redirect Members away from the <a href="' . esc_attr (admin_url ("/profile.php")) . '" target="_blank" rel="external">default Profile Editing Panel</a> that is built into WordPress®. When/if a Member attempts to access the default Profile Editing Panel, they\'ll instead, be redirected to the Login Welcome Page that you\'ve configured through s2Member. <strong>Why would I redirect?</strong> Unless you\'ve made some drastic modifications to your WordPress® installation, the default Profile Editing Panel that ships with WordPress®, is NOT really suited for public access, even by a Member.</p>' . "\n";
1181 echo '<p>So instead of using this default Profile Editing Panel; s2Member creates an added layer of functionality, on top of WordPress®. It does this by providing you ( as the site owner ), with a special Shortcode: <code>[s2Member-Profile /]</code> that you can place into your Login Welcome Page, or any Post/Page for that matter ( even into a Text Widget ). This Shortcode produces an Inline Profile Editing Form that supports all aspects of s2Member, including Password changes; and any Custom Registration/Profile Fields that you\'ve configured with s2Member.</p>' . "\n";
1182 echo '<p>Alternatively, s2Member also gives you the ability to send your Members to a <a href="' . esc_attr (site_url ("/?s2member_profile=1")) . '" target="_blank" rel="external">special Stand-Alone version</a>. This Stand-Alone version has been designed ( with a bare-bones format ), intentionally. This makes it possible for you to <a href="#" onclick="if(!window.open(\'' . site_url ("/?s2member_profile=1") . '\', \'_popup\', \'width=600,height=400,left=100,screenX=100,top=100,screenY=100,location=0,menubar=0,toolbar=0,status=0,scrollbars=1,resizable=1\')) alert(\'Please disable popup blockers and try again!\'); return false;" rel="external">open it up in a popup window</a>, or embed it into your Login Welcome Page using an IFRAME. Code samples are provided below.</p>' . "\n";
1183 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_during_profile_modifications", get_defined_vars ());
1184 /**/
1185 echo '<table class="form-table">' . "\n";
1186 echo '<tbody>' . "\n";
1187 echo '<tr>' . "\n";
1188 /**/
1189 echo '<th>' . "\n";
1190 echo '<label for="ws-plugin--s2member-force-admin-lockouts">' . "\n";
1191 echo 'Redirect Members away from the Default Profile Panel?' . "\n";
1192 echo '</label>' . "\n";
1193 echo '</th>' . "\n";
1194 /**/
1195 echo '</tr>' . "\n";
1196 echo '<tr>' . "\n";
1197 /**/
1198 echo '<td>' . "\n";
1199 echo '<select name="ws_plugin__s2member_force_admin_lockouts" id="ws-plugin--s2member-force-admin-lockouts">' . "\n";
1200 echo '<option value="0"' . ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["force_admin_lockouts"]) ? ' selected="selected"' : '') . '>No ( I want to use the WordPress® default methodologies )</option>' . "\n";
1201 echo '<option value="1"' . (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["force_admin_lockouts"]) ? ' selected="selected"' : '') . '>Yes ( redirect to Login Welcome Page; locking all /wp-admin/ areas )</option>' . "\n";
1202 echo '</select><br />' . "\n";
1203 echo 'Recommended setting ( <code>Yes</code> ). <em><strong>*Note*</strong> When this is set to ( <code>Yes</code> ), s2Member will take an initiative to further safeguard ALL <code>/wp-admin/</code> areas of your installation; not just the Default Profile Panel. Also, starting with WordPress® 3.1+, setting this to ( <code>Yes</code> ) tells s2Member to dynamically modify links/titles in the new Admin Bar that can be enabled on WordPress® 3.1+. s2Member will force links to your Login Welcome Page instead of the Default Profile Panel; and Dashboard links are removed for non-Admin accounts ( as they should be ).</em>' . "\n";
1204 echo '</td>' . "\n";
1205 /**/
1206 echo '</tr>' . "\n";
1207 echo '</tbody>' . "\n";
1208 echo '</table>' . "\n";
1209 /**/
1210 echo '<div class="ws-menu-page-hr"></div>' . "\n";
1211 /**/
1212 echo '<p><strong>Shortcode ( copy/paste )</strong>, for an Inline Profile Modification Form:<br />' . "\n";
1213 echo '<p><input type="text" value="' . format_to_edit ('[s2Member-Profile /]') . '" style="font-size:90%; font-family:Consolas, monospace; width:99%;" onclick="this.select ();" /></p>' . "\n";
1214 /**/
1215 echo '<p style="margin-top:20px;"><strong>Stand-Alone ( copy/paste )</strong>, for popup window:</p>' . "\n";
1216 echo '<p><input type="text" value="' . format_to_edit (preg_replace ("/\<\?php echo S2MEMBER_CURRENT_USER_PROFILE_MODIFICATION_PAGE_URL; \?\>/", c_ws_plugin__s2member_utils_strings::esc_ds (site_url ("/?s2member_profile=1")), file_get_contents (dirname (__FILE__) . "/code-samples/current-user-profile-modification-page-url-2-ops.php"))) . '" style="font-size:90%; font-family:Consolas, monospace; width:99%;" onclick="this.select ();" /></p>' . "\n";
1217 echo '</div>' . "\n";
1218 /**/
1219 echo '</div>' . "\n";
1220 /**/
1221 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_after_profile_modifications", get_defined_vars ());
1222 }
1223 /**/
1224 if (apply_filters ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_display_restrictions", true, get_defined_vars ()))
1225 {
1226 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_before_restrictions", get_defined_vars ());
1227 /**/
1228 echo '<div class="ws-menu-page-group" title="Restrictions ( Posts/Pages/Categories/Tags/URIs/etc. )">' . "\n";
1229 /**/
1230 echo '<div class="ws-menu-page-section ws-plugin--s2member-restrictions-section">' . "\n";
1231 echo '<h3>Restrictions ( Posts/Pages/Categories/Tags/URIs/etc. )</h3>' . "\n";
1232 echo '<p>All of these options have been moved into their own configuration panel.<br />Please go to: <code>s2Member -> Restriction Options</code></p>' . "\n";
1233 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_during_restrictions", get_defined_vars ());
1234 echo '</div>' . "\n";
1235 /**/
1236 echo '</div>' . "\n";
1237 /**/
1238 do_action ("ws_plugin__s2member_during_gen_ops_page_during_left_sections_after_restrictions", get_defined_vars ());
1239 }
1240 /**/
1241 do_action ("ws_plugin__s2member_during_gen_ops_page_after_left_sections", get_defined_vars ());
1242 /**/
1243 echo '<div class="ws-menu-page-hr"></div>' . "\n";
1244 /**/
1245 echo '<p class="submit"><input type="submit" class="button-primary" value="Save All Changes" /></p>' . "\n";
1246 /**/
1247 echo '</form>' . "\n";
1248 /**/
1249 echo '</td>' . "\n";
1250 /**/
1251 echo '<td class="ws-menu-page-table-r">' . "\n";
1252 c_ws_plugin__s2member_menu_pages_rs::display ();
1253 echo '</td>' . "\n";
1254 /**/
1255 echo '</tr>' . "\n";
1256 echo '</tbody>' . "\n";
1257 echo '</table>' . "\n";
1258 /**/
1259 echo '</div>' . "\n";
1260 }
1261 }
1262 }
1263 /**/
1264 new c_ws_plugin__s2member_menu_page_gen_ops ();
1265 ?>