Version Description
= v131109 = (Maintenance Release) Upgrade immediately.
Download this release
Release Info
Developer | WebSharks |
Plugin | s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members) |
Version | 131109 |
Comparing to | |
See all releases |
Code changes from version 131026 to 131109
- checksum.txt +1 -1
- images/brand-favicon.png +0 -0
- images/s2___.png +0 -0
- images/s2___bar.png +0 -0
- images/s2___end.png +0 -0
- includes/classes/admin-notices.inc.php +1 -1
- includes/classes/cache.inc.php +3 -3
- includes/classes/constants.inc.php +1 -1
- includes/classes/css-js-themes.inc.php +43 -5
- includes/classes/menu-pages-rs.inc.php +9 -16
- includes/classes/menu-pages-tb.inc.php +83 -0
- includes/classes/menu-pages.inc.php +2 -1
- includes/classes/no-cache.inc.php +3 -1
- includes/classes/s-badge-status-in.inc.php +2 -1
- includes/classes/sc-files-in.inc.php +4 -4
- includes/classes/utils-html.inc.php +2 -6
- includes/classes/utils-strings.inc.php +3 -3
- includes/externals/markdown/nc-markdown.inc.php +108 -109
- includes/menu-pages/api-ops.inc.php +6 -3
- includes/menu-pages/code-samples/jwplayer-v5-standard-mp4.x-php +0 -30
- includes/menu-pages/code-samples/jwplayer-v5-streaming-mp4-sca.x-php +0 -42
- includes/menu-pages/code-samples/jwplayer-v5-streaming-mp4-webm.x-php +0 -45
- includes/menu-pages/code-samples/jwplayer-v5-streaming-mp4.x-php +0 -38
- includes/menu-pages/down-ops.inc.php +13 -47
- includes/menu-pages/els-ops.inc.php +9 -6
- includes/menu-pages/gen-ops.inc.php +9 -6
- includes/menu-pages/info.inc.php +5 -2
- includes/menu-pages/integrations.inc.php +5 -2
- includes/menu-pages/js-c-warning.inc.php +0 -40
- includes/menu-pages/logs.inc.php +20 -14
- includes/menu-pages/menu-pages-min.js +1 -1
- includes/menu-pages/menu-pages.css +753 -429
- includes/menu-pages/menu-pages.js +33 -33
- includes/menu-pages/mms-ops.inc.php +6 -3
- includes/menu-pages/paypal-buttons.inc.php +23 -20
- includes/menu-pages/paypal-ops.inc.php +10 -7
- includes/menu-pages/res-ops.inc.php +10 -7
- includes/menu-pages/scripting.inc.php +9 -6
- includes/menu-pages/start.inc.php +6 -3
- includes/menu-pages/trk-ops.inc.php +16 -17
- includes/menu-pages/updates.inc.php +7 -5
- includes/s2member-min.js +1 -1
- includes/s2member.js +44 -25
- includes/translations/s2member.pot +257 -257
- readme.txt +28 -6
- s2member.php +5 -5
checksum.txt
CHANGED
@@ -1 +1 @@
|
|
1 |
-
|
1 |
+
4f4a8d6b4f39d49be334333ddb1b073e
|
images/brand-favicon.png
CHANGED
Binary file
|
images/s2___.png
ADDED
Binary file
|
images/s2___bar.png
ADDED
Binary file
|
images/s2___end.png
ADDED
Binary file
|
includes/classes/admin-notices.inc.php
CHANGED
@@ -131,7 +131,7 @@ if (!class_exists ("c_ws_plugin__s2member_admin_notices"))
|
|
131 |
$page = preg_replace ("/^([^\:]*)\:/i", "", $page);
|
132 |
|
133 |
if (empty ($adms) || in_array ("*", $adms) || in_array ($a, $adms))
|
134 |
-
if (!$page || "*" === $page || $pagenow === $page ||
|
135 |
{
|
136 |
if /* Time to show it? */ (strtotime ("now") >= (int)$notice["time"])
|
137 |
{
|
131 |
$page = preg_replace ("/^([^\:]*)\:/i", "", $page);
|
132 |
|
133 |
if (empty ($adms) || in_array ("*", $adms) || in_array ($a, $adms))
|
134 |
+
if (!$page || "*" === $page || $pagenow === $page || @$_GET["page"] === $page)
|
135 |
{
|
136 |
if /* Time to show it? */ (strtotime ("now") >= (int)$notice["time"])
|
137 |
{
|
includes/classes/cache.inc.php
CHANGED
@@ -62,7 +62,7 @@ if (!class_exists ("c_ws_plugin__s2member_cache"))
|
|
62 |
{
|
63 |
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["login_welcome_page"]["page"] = $lwp;
|
64 |
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["login_welcome_page"]["time"] = time ();
|
65 |
-
$links["login_welcome_page"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["login_welcome_page"]["link"] = get_page_link ($lwp);
|
66 |
|
67 |
$cache_needs_updating = /* Flag for cache update. */ true;
|
68 |
}
|
@@ -74,7 +74,7 @@ if (!class_exists ("c_ws_plugin__s2member_cache"))
|
|
74 |
{
|
75 |
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["membership_options_page"]["page"] = $mop;
|
76 |
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["membership_options_page"]["time"] = time ();
|
77 |
-
$links["membership_options_page"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["membership_options_page"]["link"] = get_page_link ($mop);
|
78 |
|
79 |
$cache_needs_updating = /* Flag for cache update. */ true;
|
80 |
}
|
@@ -86,7 +86,7 @@ if (!class_exists ("c_ws_plugin__s2member_cache"))
|
|
86 |
{
|
87 |
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["file_download_limit_exceeded_page"]["page"] = $fdlep;
|
88 |
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["file_download_limit_exceeded_page"]["time"] = time ();
|
89 |
-
$links["file_download_limit_exceeded_page"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["file_download_limit_exceeded_page"]["link"] = get_page_link ($fdlep);
|
90 |
|
91 |
$cache_needs_updating = /* Flag for cache update. */ true;
|
92 |
}
|
62 |
{
|
63 |
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["login_welcome_page"]["page"] = $lwp;
|
64 |
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["login_welcome_page"]["time"] = time ();
|
65 |
+
$links["login_welcome_page"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["login_welcome_page"]["link"] = ($lwp) ? get_page_link ($lwp) : home_url("/");
|
66 |
|
67 |
$cache_needs_updating = /* Flag for cache update. */ true;
|
68 |
}
|
74 |
{
|
75 |
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["membership_options_page"]["page"] = $mop;
|
76 |
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["membership_options_page"]["time"] = time ();
|
77 |
+
$links["membership_options_page"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["membership_options_page"]["link"] = ($mop) ? get_page_link ($mop) : home_url("/");
|
78 |
|
79 |
$cache_needs_updating = /* Flag for cache update. */ true;
|
80 |
}
|
86 |
{
|
87 |
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["file_download_limit_exceeded_page"]["page"] = $fdlep;
|
88 |
$GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["file_download_limit_exceeded_page"]["time"] = time ();
|
89 |
+
$links["file_download_limit_exceeded_page"] = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["cache"]["file_download_limit_exceeded_page"]["link"] = ($fdlep) ? get_page_link ($fdlep) : home_url("/");
|
90 |
|
91 |
$cache_needs_updating = /* Flag for cache update. */ true;
|
92 |
}
|
includes/classes/constants.inc.php
CHANGED
@@ -282,7 +282,7 @@ if (!class_exists ("c_ws_plugin__s2member_constants"))
|
|
282 |
* @see http://codex.wordpress.org/Function_Reference/wp_get_current_user wp_get_current_user()
|
283 |
*/
|
284 |
if (!defined ("S2MEMBER_CURRENT_USER_ACCESS_LABEL"))
|
285 |
-
define ("S2MEMBER_CURRENT_USER_ACCESS_LABEL", ($c[] = (string)
|
286 |
/**
|
287 |
* The current User's Paid Subscription ID (when applicable).
|
288 |
*
|
282 |
* @see http://codex.wordpress.org/Function_Reference/wp_get_current_user wp_get_current_user()
|
283 |
*/
|
284 |
if (!defined ("S2MEMBER_CURRENT_USER_ACCESS_LABEL"))
|
285 |
+
define ("S2MEMBER_CURRENT_USER_ACCESS_LABEL", ($c[] = (string)@$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $level . "_label"]));
|
286 |
/**
|
287 |
* The current User's Paid Subscription ID (when applicable).
|
288 |
*
|
includes/classes/css-js-themes.inc.php
CHANGED
@@ -27,7 +27,44 @@ if (!class_exists ("c_ws_plugin__s2member_css_js_themes"))
|
|
27 |
*/
|
28 |
class c_ws_plugin__s2member_css_js_themes
|
29 |
{
|
30 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
* Enqueues CSS file for theme integration.
|
32 |
*
|
33 |
* @package s2Member\CSS_JS
|
@@ -41,7 +78,7 @@ if (!class_exists ("c_ws_plugin__s2member_css_js_themes"))
|
|
41 |
{
|
42 |
do_action ("ws_plugin__s2member_before_add_css", get_defined_vars ());
|
43 |
|
44 |
-
if
|
45 |
{
|
46 |
$s2o = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["s2o_url"];
|
47 |
|
@@ -71,7 +108,8 @@ if (!class_exists ("c_ws_plugin__s2member_css_js_themes"))
|
|
71 |
|
72 |
do_action ("ws_plugin__s2member_before_add_js_w_globals", get_defined_vars ());
|
73 |
|
74 |
-
if (!is_admin
|
|
|
75 |
{
|
76 |
$s2o = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["s2o_url"];
|
77 |
|
@@ -80,11 +118,11 @@ if (!class_exists ("c_ws_plugin__s2member_css_js_themes"))
|
|
80 |
$md5 = /* An MD5 hash based on global key => values. */ WS_PLUGIN__S2MEMBER_API_CONSTANTS_MD5;
|
81 |
// The MD5 hash allows the script to be cached in the browser until the globals happen to change.
|
82 |
// For instance, the global variables may change when a User who is logged-in changes their Profile.
|
83 |
-
wp_enqueue_script ("ws-plugin--s2member", $s2o . "?ws_plugin__s2member_js_w_globals=" . urlencode ($md5) . "&qcABC=1", array ("jquery"
|
84 |
}
|
85 |
else // Else if they are not logged in, we distinguish the JavaScript file by NOT including $md5.
|
86 |
{ // This essentially creates 2 versions of the script. One while logged in & another when not.
|
87 |
-
wp_enqueue_script ("ws-plugin--s2member", $s2o . "?ws_plugin__s2member_js_w_globals=1&qcABC=1", array ("jquery"
|
88 |
}
|
89 |
do_action ("ws_plugin__s2member_during_add_js_w_globals", get_defined_vars ());
|
90 |
}
|
27 |
*/
|
28 |
class c_ws_plugin__s2member_css_js_themes
|
29 |
{
|
30 |
+
/**
|
31 |
+
* Lazy load CSS/JS files?
|
32 |
+
*
|
33 |
+
* @package s2Member\CSS_JS
|
34 |
+
* @since 131028
|
35 |
+
*
|
36 |
+
* @return boolean TRUE if we should load; else FALSE.
|
37 |
+
*/
|
38 |
+
public static function lazy_load_css_js ()
|
39 |
+
{
|
40 |
+
static $load; // Static cache var.
|
41 |
+
|
42 |
+
if(isset($load)) return $load;
|
43 |
+
|
44 |
+
if(c_ws_plugin__s2member_systematics::is_s2_systematic_use_page())
|
45 |
+
$load = TRUE;
|
46 |
+
|
47 |
+
else if(c_ws_plugin__s2member_utils_conds::bp_is_installed()
|
48 |
+
&& (bp_is_register_page() || bp_is_activation_page() || bp_is_user_profile()))
|
49 |
+
$load = TRUE;
|
50 |
+
|
51 |
+
else if(is_singular() && ($post = get_post())
|
52 |
+
&& (stripos($post->post_content, "s2member") !== FALSE
|
53 |
+
|| stripos($post->post_content, "[s2") !== FALSE))
|
54 |
+
$load = TRUE;
|
55 |
+
|
56 |
+
else if(preg_match("/\/wp\-signup\.php".
|
57 |
+
"|\/wp\-login\.php".
|
58 |
+
"|\/wp\-admin\/(?:user\/)?profile\.php".
|
59 |
+
"|[?&]s2member/", $_SERVER["REQUEST_URI"]))
|
60 |
+
$load = TRUE;
|
61 |
+
|
62 |
+
if(!isset($load)) $load = FALSE; // Make sure it's set; always.
|
63 |
+
|
64 |
+
return ($load = apply_filters("ws_plugin__s2member_lazy_load_css_js", $load));
|
65 |
+
}
|
66 |
+
|
67 |
+
/**
|
68 |
* Enqueues CSS file for theme integration.
|
69 |
*
|
70 |
* @package s2Member\CSS_JS
|
78 |
{
|
79 |
do_action ("ws_plugin__s2member_before_add_css", get_defined_vars ());
|
80 |
|
81 |
+
if(!is_admin () && c_ws_plugin__s2member_css_js_themes::lazy_load_css_js())
|
82 |
{
|
83 |
$s2o = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["s2o_url"];
|
84 |
|
108 |
|
109 |
do_action ("ws_plugin__s2member_before_add_js_w_globals", get_defined_vars ());
|
110 |
|
111 |
+
if ((!is_admin() && c_ws_plugin__s2member_css_js_themes::lazy_load_css_js())
|
112 |
+
|| (is_user_admin () && $pagenow === "profile.php" && !current_user_can ("edit_users")))
|
113 |
{
|
114 |
$s2o = $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["s2o_url"];
|
115 |
|
118 |
$md5 = /* An MD5 hash based on global key => values. */ WS_PLUGIN__S2MEMBER_API_CONSTANTS_MD5;
|
119 |
// The MD5 hash allows the script to be cached in the browser until the globals happen to change.
|
120 |
// For instance, the global variables may change when a User who is logged-in changes their Profile.
|
121 |
+
wp_enqueue_script ("ws-plugin--s2member", $s2o . "?ws_plugin__s2member_js_w_globals=" . urlencode ($md5) . "&qcABC=1", array ("jquery"), c_ws_plugin__s2member_utilities::ver_checksum (), TRUE);
|
122 |
}
|
123 |
else // Else if they are not logged in, we distinguish the JavaScript file by NOT including $md5.
|
124 |
{ // This essentially creates 2 versions of the script. One while logged in & another when not.
|
125 |
+
wp_enqueue_script ("ws-plugin--s2member", $s2o . "?ws_plugin__s2member_js_w_globals=1&qcABC=1", array ("jquery"), c_ws_plugin__s2member_utilities::ver_checksum (), TRUE);
|
126 |
}
|
127 |
do_action ("ws_plugin__s2member_during_add_js_w_globals", get_defined_vars ());
|
128 |
}
|
includes/classes/menu-pages-rs.inc.php
CHANGED
@@ -39,13 +39,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_pages_rs"))
|
|
39 |
{
|
40 |
do_action ("ws_plugin__s2member_during_menu_pages_before_right_sections", get_defined_vars ());
|
41 |
|
42 |
-
|
43 |
-
include_once dirname (dirname (__FILE__)) . "/menu-pages/js-c-warning.inc.php";
|
44 |
-
echo '</div>' . "\n";
|
45 |
-
|
46 |
-
echo '<script type="text/javascript">' . "\n";
|
47 |
-
echo "jQuery('div#ws-menu-page-js-c-w').hide();" . "\n";
|
48 |
-
echo '</script>' . "\n";
|
49 |
|
50 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["updates"])
|
51 |
{
|
@@ -53,59 +47,58 @@ if (!class_exists ("c_ws_plugin__s2member_menu_pages_rs"))
|
|
53 |
include_once dirname (dirname (__FILE__)) . "/menu-pages/updates.inc.php";
|
54 |
echo '</div>' . "\n";
|
55 |
}
|
56 |
-
|
57 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["upsell-pro"])
|
58 |
{
|
59 |
echo '<div class="ws-menu-page-others">' . "\n";
|
60 |
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Pro Module / Prices")) . '" target="_blank"><img src="' . esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]) . '/images/brand-upsell-pro.png" alt="." /></a>' . "\n";
|
61 |
echo '</div>' . "\n";
|
62 |
}
|
63 |
-
|
64 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["installation"])
|
65 |
{
|
66 |
echo '<div class="ws-menu-page-installation">' . "\n";
|
67 |
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Professional Installation URI")) . '" target="_blank"><img src="' . esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]) . '/images/brand-installation.png" alt="." /></a>' . "\n";
|
68 |
echo '</div>' . "\n";
|
69 |
}
|
70 |
-
|
71 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["tools"])
|
72 |
{
|
73 |
echo '<div class="ws-menu-page-tools">' . "\n";
|
74 |
echo '<img src="' . esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]) . '/images/brand-tools.png" alt="." />' . "\n";
|
75 |
echo '</div>' . "\n";
|
76 |
}
|
77 |
-
|
78 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["kb"])
|
79 |
{
|
80 |
echo '<div class="ws-menu-page-kb">' . "\n";
|
81 |
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Knowledge Base")) . '" target="_blank"><img src="' . esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]) . '/images/brand-kb.png" alt="." /></a>' . "\n";
|
82 |
echo '</div>' . "\n";
|
83 |
}
|
84 |
-
|
85 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["videos"])
|
86 |
{
|
87 |
echo '<div class="ws-menu-page-videos">' . "\n";
|
88 |
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Video Tutorials")) . '" target="_blank"><img src="' . esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]) . '/images/brand-videos.png" alt="." /></a>' . "\n";
|
89 |
echo '</div>' . "\n";
|
90 |
}
|
91 |
-
|
92 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["support"])
|
93 |
{
|
94 |
echo '<div class="ws-menu-page-support">' . "\n";
|
95 |
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Forum URI")) . '" target="_blank"><img src="' . esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]) . '/images/brand-support.png" alt="." /></a>' . "\n";
|
96 |
echo '</div>' . "\n";
|
97 |
}
|
98 |
-
|
99 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["donations"])
|
100 |
{
|
101 |
echo '<div class="ws-menu-page-donations">' . "\n";
|
102 |
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Donate link")) . '" target="_blank"><img src="' . esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]) . '/images/brand-donations.png" alt="." /></a>' . "\n";
|
103 |
echo '</div>' . "\n";
|
104 |
}
|
105 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
106 |
do_action ("ws_plugin__s2member_during_menu_pages_after_right_sections", get_defined_vars ());
|
107 |
|
108 |
-
return /*
|
109 |
}
|
110 |
}
|
111 |
}
|
39 |
{
|
40 |
do_action ("ws_plugin__s2member_during_menu_pages_before_right_sections", get_defined_vars ());
|
41 |
|
42 |
+
ob_start(); // output buffer these so we can display a toggler conditionally.
|
|
|
|
|
|
|
|
|
|
|
|
|
43 |
|
44 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["updates"])
|
45 |
{
|
47 |
include_once dirname (dirname (__FILE__)) . "/menu-pages/updates.inc.php";
|
48 |
echo '</div>' . "\n";
|
49 |
}
|
|
|
50 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["upsell-pro"])
|
51 |
{
|
52 |
echo '<div class="ws-menu-page-others">' . "\n";
|
53 |
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Pro Module / Prices")) . '" target="_blank"><img src="' . esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]) . '/images/brand-upsell-pro.png" alt="." /></a>' . "\n";
|
54 |
echo '</div>' . "\n";
|
55 |
}
|
|
|
56 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["installation"])
|
57 |
{
|
58 |
echo '<div class="ws-menu-page-installation">' . "\n";
|
59 |
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Professional Installation URI")) . '" target="_blank"><img src="' . esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]) . '/images/brand-installation.png" alt="." /></a>' . "\n";
|
60 |
echo '</div>' . "\n";
|
61 |
}
|
|
|
62 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["tools"])
|
63 |
{
|
64 |
echo '<div class="ws-menu-page-tools">' . "\n";
|
65 |
echo '<img src="' . esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]) . '/images/brand-tools.png" alt="." />' . "\n";
|
66 |
echo '</div>' . "\n";
|
67 |
}
|
|
|
68 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["kb"])
|
69 |
{
|
70 |
echo '<div class="ws-menu-page-kb">' . "\n";
|
71 |
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Knowledge Base")) . '" target="_blank"><img src="' . esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]) . '/images/brand-kb.png" alt="." /></a>' . "\n";
|
72 |
echo '</div>' . "\n";
|
73 |
}
|
|
|
74 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["videos"])
|
75 |
{
|
76 |
echo '<div class="ws-menu-page-videos">' . "\n";
|
77 |
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Video Tutorials")) . '" target="_blank"><img src="' . esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]) . '/images/brand-videos.png" alt="." /></a>' . "\n";
|
78 |
echo '</div>' . "\n";
|
79 |
}
|
|
|
80 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["support"])
|
81 |
{
|
82 |
echo '<div class="ws-menu-page-support">' . "\n";
|
83 |
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Forum URI")) . '" target="_blank"><img src="' . esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]) . '/images/brand-support.png" alt="." /></a>' . "\n";
|
84 |
echo '</div>' . "\n";
|
85 |
}
|
|
|
86 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["donations"])
|
87 |
{
|
88 |
echo '<div class="ws-menu-page-donations">' . "\n";
|
89 |
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Donate link")) . '" target="_blank"><img src="' . esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]) . '/images/brand-donations.png" alt="." /></a>' . "\n";
|
90 |
echo '</div>' . "\n";
|
91 |
}
|
92 |
+
if (($rs = ob_get_clean()))
|
93 |
+
{
|
94 |
+
$rs = '<div class="wrapper">'.$rs.'</div>';
|
95 |
+
$rs = '<div class="toggler" title="toggle sidebar"'.
|
96 |
+
((!empty($_GET['page']) && preg_match('/\-(?:start|info)$/', $_GET['page'])) ? ' default-state="open"' : '').'></div>' . "\n".$rs;
|
97 |
+
echo $rs; // output content now; w/ possible toggler.
|
98 |
+
}
|
99 |
do_action ("ws_plugin__s2member_during_menu_pages_after_right_sections", get_defined_vars ());
|
100 |
|
101 |
+
return /* return for uniformity. */;
|
102 |
}
|
103 |
}
|
104 |
}
|
includes/classes/menu-pages-tb.inc.php
ADDED
@@ -0,0 +1,83 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Toolbox for Menu Pages.
|
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 131108
|
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_pages_tb"))
|
21 |
+
{
|
22 |
+
/**
|
23 |
+
* Toolbox for Menu Pages.
|
24 |
+
*
|
25 |
+
* @package s2Member\Menu_Pages
|
26 |
+
* @since 131108
|
27 |
+
*/
|
28 |
+
class c_ws_plugin__s2member_menu_pages_tb
|
29 |
+
{
|
30 |
+
/**
|
31 |
+
* Toolbox for Menu Pages.
|
32 |
+
*
|
33 |
+
* @package s2Member\Menu_Pages
|
34 |
+
* @since 131108
|
35 |
+
*
|
36 |
+
* @return null
|
37 |
+
*/
|
38 |
+
public static function display ()
|
39 |
+
{
|
40 |
+
do_action ("ws_plugin__s2member_during_menu_pages_before_toolbox_sections", get_defined_vars ());
|
41 |
+
|
42 |
+
ob_start(); // output buffer these so we can display a toggler conditionally.
|
43 |
+
|
44 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["updates"])
|
45 |
+
{
|
46 |
+
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Newsletter")) . '" target="_blank"><i class="fa fa-envelope"></i> s2 Updates (via Email)</a>';
|
47 |
+
}
|
48 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["upsell-pro"])
|
49 |
+
{
|
50 |
+
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Pro Module / Prices")) . '" target="_blank" style="font-size:120%; font-weight:bold;"><i class="fa fa-money"></i> s2Member® Pro (Upgrade)</a>' . "\n";
|
51 |
+
}
|
52 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["installation"])
|
53 |
+
{
|
54 |
+
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Professional Installation URI")) . '" target="_blank"><i class="fa fa-wrench"></i> Professional Installation Service</a>' . "\n";
|
55 |
+
}
|
56 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["kb"])
|
57 |
+
{
|
58 |
+
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Knowledge Base")) . '" target="_blank"><i class="fa fa-lightbulb-o"></i> Knowledge Base</a>' . "\n";
|
59 |
+
}
|
60 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["videos"])
|
61 |
+
{
|
62 |
+
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Video Tutorials")) . '" target="_blank"><i class="fa fa-film"></i> Video Tutorials</a>' . "\n";
|
63 |
+
}
|
64 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["support"])
|
65 |
+
{
|
66 |
+
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Forum URI")) . '" target="_blank"><i class="fa fa-comments-o"></i> Community</a>' . "\n";
|
67 |
+
}
|
68 |
+
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["menu_pages"]["donations"])
|
69 |
+
{
|
70 |
+
echo '<a href="' . esc_attr (c_ws_plugin__s2member_readmes::parse_readme_value ("Donate link")) . '" target="_blank"><i class="fa fa-heart-o"></i> Contribute</a>' . "\n";
|
71 |
+
}
|
72 |
+
if (($links = ob_get_clean()))
|
73 |
+
{
|
74 |
+
$links = '<div class="links">'.$links.'</div>';
|
75 |
+
echo $links; // output content now; w/ possible toggler.
|
76 |
+
}
|
77 |
+
do_action ("ws_plugin__s2member_during_menu_pages_after_toolbox_sections", get_defined_vars ());
|
78 |
+
|
79 |
+
return /* return for uniformity. */;
|
80 |
+
}
|
81 |
+
}
|
82 |
+
}
|
83 |
+
?>
|
includes/classes/menu-pages.inc.php
CHANGED
@@ -148,7 +148,8 @@ if(!class_exists("c_ws_plugin__s2member_menu_pages"))
|
|
148 |
$menu = apply_filters("ws_plugin__s2member_during_add_admin_options_menu_slug", "ws-plugin--s2member-start", get_defined_vars());
|
149 |
|
150 |
if(apply_filters("ws_plugin__s2member_during_add_admin_options_add_menu_page", true, get_defined_vars()))
|
151 |
-
add_menu_page("s2Member"
|
|
|
152 |
|
153 |
if(apply_filters("ws_plugin__s2member_during_add_admin_options_add_start_page", true, get_defined_vars()))
|
154 |
add_submenu_page($menu, "s2Member Quick-Start Guide", "Quick-Start Guide", "create_users", "ws-plugin--s2member-start", "c_ws_plugin__s2member_menu_pages::start_page");
|
148 |
$menu = apply_filters("ws_plugin__s2member_during_add_admin_options_menu_slug", "ws-plugin--s2member-start", get_defined_vars());
|
149 |
|
150 |
if(apply_filters("ws_plugin__s2member_during_add_admin_options_add_menu_page", true, get_defined_vars()))
|
151 |
+
add_menu_page(((c_ws_plugin__s2member_utils_conds::pro_is_installed()) ? "s2Member (Pro)" : "s2Member"), ((c_ws_plugin__s2member_utils_conds::pro_is_installed()) ? "s2Member (Pro)" : "s2Member"),
|
152 |
+
"create_users", $menu, "c_ws_plugin__s2member_menu_pages::start_page", $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]."/images/brand-favicon.png");
|
153 |
|
154 |
if(apply_filters("ws_plugin__s2member_during_add_admin_options_add_start_page", true, get_defined_vars()))
|
155 |
add_submenu_page($menu, "s2Member Quick-Start Guide", "Quick-Start Guide", "create_users", "ws-plugin--s2member-start", "c_ws_plugin__s2member_menu_pages::start_page");
|
includes/classes/no-cache.inc.php
CHANGED
@@ -88,7 +88,9 @@ if (!class_exists ("c_ws_plugin__s2member_no_cache"))
|
|
88 |
do_action ("ws_plugin__s2member_before_no_cache_constants", get_defined_vars ());
|
89 |
unset /* Unset defined __refs, __v. */ ($__refs, $__v);
|
90 |
|
91 |
-
if (!$once && empty ($_GET["qcAC"]) && ($no_cache
|
|
|
|
|
92 |
{
|
93 |
/**
|
94 |
* No-cache DB queries for plugins.
|
88 |
do_action ("ws_plugin__s2member_before_no_cache_constants", get_defined_vars ());
|
89 |
unset /* Unset defined __refs, __v. */ ($__refs, $__v);
|
90 |
|
91 |
+
if (!$once && empty ($_GET["qcAC"]) && ($no_cache
|
92 |
+
|| (is_user_logged_in () && (!defined("QUICK_CACHE_WHEN_LOGGED_IN") || !QUICK_CACHE_WHEN_LOGGED_IN))
|
93 |
+
|| c_ws_plugin__s2member_systematics::is_s2_systematic_use_page ()))
|
94 |
{
|
95 |
/**
|
96 |
* No-cache DB queries for plugins.
|
includes/classes/s-badge-status-in.inc.php
CHANGED
@@ -71,7 +71,8 @@ if (!class_exists ("c_ws_plugin__s2member_s_badge_status_in"))
|
|
71 |
{
|
72 |
if (defined ("DB_USER") && DB_USER && defined ("DB_PASSWORD") && DB_PASSWORD && DB_USER !== DB_PASSWORD)
|
73 |
{
|
74 |
-
if (!apply_filters ("ws_plugin__s2member_disable_all_ip_restrictions", false, get_defined_vars ()) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["max_ip_restriction"])
|
|
|
75 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["max_failed_login_attempts"])
|
76 |
{
|
77 |
if ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"] && !glob($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"].'/*'))
|
71 |
{
|
72 |
if (defined ("DB_USER") && DB_USER && defined ("DB_PASSWORD") && DB_PASSWORD && DB_USER !== DB_PASSWORD)
|
73 |
{
|
74 |
+
if ((!apply_filters ("ws_plugin__s2member_disable_all_ip_restrictions", false, get_defined_vars ()) && $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["max_ip_restriction"])
|
75 |
+
|| ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["max_simultaneous_logins"]) /* Either of these are acceptable. */)
|
76 |
if ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["max_failed_login_attempts"])
|
77 |
{
|
78 |
if ((!$GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["gateway_debug_logs"] && !glob($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["logs_dir"].'/*'))
|
includes/classes/sc-files-in.inc.php
CHANGED
@@ -102,7 +102,7 @@ if(!class_exists("c_ws_plugin__s2member_sc_files_in"))
|
|
102 |
|
103 |
$attr = /* Force array; trim quote entities. */ c_ws_plugin__s2member_utils_strings::trim_qts_deep((array)$attr);
|
104 |
|
105 |
-
$attr = shortcode_atts(array("download" => "", "download_key" => "", "stream" => "yes", "inline" => "yes", "storage" => "", "remote" => "", "ssl" => "", "rewrite" => "yes", "rewrite_base" => "", "skip_confirmation" => "", "url_to_storage_source" => "yes", "count_against_user" => "yes", "check_user" => "yes", /* Shortcode-specifics »» */ "file_download" => "", /* Configuration » */ "player" => "jwplayer-v6-rtmp", "player_id" => "s2-stream-".md5(uniqid("", TRUE)), "player_path" => "/jwplayer/jwplayer.js", "player_key" => "", "player_title" => "", "player_image" => "", "player_mediaid" => "", "player_description" => "", "player_captions" => "", /* Layout » */ "player_controls" => "yes", "player_skin" => "", "player_stretching" => "uniform", "player_width" => "480", "player_height" => "270", "player_aspectratio" => "", /* Playback » */ "player_autostart" => "no", "player_fallback" => "yes", "player_mute" => "no", "player_primary" => "flash", "player_repeat" => "no", "player_startparam" => "", /* Advanced option blocks » */ "player_option_blocks" => ""), $attr);
|
106 |
$attr["download"] = (!empty($attr["file_download"])) ? $attr["file_download"] : $attr["download"];
|
107 |
|
108 |
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
@@ -116,7 +116,7 @@ if(!class_exists("c_ws_plugin__s2member_sc_files_in"))
|
|
116 |
$config[$key] = $value;
|
117 |
|
118 |
unset /* Ditch these now. We don't want these bleeding into Hooks/Filters anyway. */($key, $value);
|
119 |
-
|
120 |
if /* Looking for a File Download URL? */(!empty($config) && isset($config["file_download"]))
|
121 |
{
|
122 |
$_get = c_ws_plugin__s2member_files::create_file_download_url($config, TRUE);
|
@@ -129,7 +129,7 @@ if(!class_exists("c_ws_plugin__s2member_sc_files_in"))
|
|
129 |
if(strpos($attr["player"], "jwplayer-v6") === 0)
|
130 |
{
|
131 |
$get = trim(c_ws_plugin__s2member_utilities::evl(file_get_contents($template)));
|
132 |
-
|
133 |
$get = preg_replace("/%%streamer%%/", $_get["streamer"], $get);
|
134 |
$get = preg_replace("/%%prefix%%/", $_get["prefix"], $get);
|
135 |
$get = preg_replace("/%%file%%/", $_get["file"], $get);
|
@@ -155,7 +155,7 @@ if(!class_exists("c_ws_plugin__s2member_sc_files_in"))
|
|
155 |
$get = preg_replace("/%%player_aspectratio%%/", $attr["player_aspectratio"], $get);
|
156 |
$get = preg_replace("/%%player_skin%%/", $attr["player_skin"], $get);
|
157 |
$get = preg_replace("/%%player_stretching%%/", $attr["player_stretching"], $get);
|
158 |
-
|
159 |
$get = preg_replace("/%%player_autostart%%/", ((filter_var($attr["player_autostart"], FILTER_VALIDATE_BOOLEAN)) ? "true" : "false"), $get);
|
160 |
$get = preg_replace("/%%player_fallback%%/", ((filter_var($attr["player_fallback"], FILTER_VALIDATE_BOOLEAN)) ? "true" : "false"), $get);
|
161 |
$get = preg_replace("/%%player_mute%%/", ((filter_var($attr["player_mute"], FILTER_VALIDATE_BOOLEAN)) ? "true" : "false"), $get);
|
102 |
|
103 |
$attr = /* Force array; trim quote entities. */ c_ws_plugin__s2member_utils_strings::trim_qts_deep((array)$attr);
|
104 |
|
105 |
+
$attr = shortcode_atts(array("download" => "", "download_key" => "", "stream" => "yes", "inline" => "yes", "storage" => "", "remote" => "", "ssl" => "", "rewrite" => "yes", "rewrite_base" => "", "skip_confirmation" => "", "url_to_storage_source" => "yes", "count_against_user" => "yes", "check_user" => "yes", /* Shortcode-specifics »» */ "file_download" => "", /* Configuration » */ "player" => "jwplayer-v6-rtmp", "player_id" => "s2-stream-".md5(uniqid("", TRUE)), "player_path" => "/jwplayer/jwplayer.js", "player_key" => "", "player_title" => "", "player_image" => "", "player_mediaid" => "", "player_description" => "", "player_captions" => "", /* Layout » */ "player_controls" => "yes", "player_skin" => "", "player_stretching" => "uniform", "player_width" => "480", "player_height" => "270", "player_aspectratio" => "", /* Playback » */ "player_autostart" => "no", "player_fallback" => "yes", "player_mute" => "no", "player_primary" => (($attr["player"] === "jw-player-v6") ? "html5" : "flash"), "player_repeat" => "no", "player_startparam" => "", /* Advanced option blocks » */ "player_option_blocks" => ""), $attr);
|
106 |
$attr["download"] = (!empty($attr["file_download"])) ? $attr["file_download"] : $attr["download"];
|
107 |
|
108 |
foreach(array_keys(get_defined_vars())as$__v)$__refs[$__v]=&$$__v;
|
116 |
$config[$key] = $value;
|
117 |
|
118 |
unset /* Ditch these now. We don't want these bleeding into Hooks/Filters anyway. */($key, $value);
|
119 |
+
|
120 |
if /* Looking for a File Download URL? */(!empty($config) && isset($config["file_download"]))
|
121 |
{
|
122 |
$_get = c_ws_plugin__s2member_files::create_file_download_url($config, TRUE);
|
129 |
if(strpos($attr["player"], "jwplayer-v6") === 0)
|
130 |
{
|
131 |
$get = trim(c_ws_plugin__s2member_utilities::evl(file_get_contents($template)));
|
132 |
+
|
133 |
$get = preg_replace("/%%streamer%%/", $_get["streamer"], $get);
|
134 |
$get = preg_replace("/%%prefix%%/", $_get["prefix"], $get);
|
135 |
$get = preg_replace("/%%file%%/", $_get["file"], $get);
|
155 |
$get = preg_replace("/%%player_aspectratio%%/", $attr["player_aspectratio"], $get);
|
156 |
$get = preg_replace("/%%player_skin%%/", $attr["player_skin"], $get);
|
157 |
$get = preg_replace("/%%player_stretching%%/", $attr["player_stretching"], $get);
|
158 |
+
|
159 |
$get = preg_replace("/%%player_autostart%%/", ((filter_var($attr["player_autostart"], FILTER_VALIDATE_BOOLEAN)) ? "true" : "false"), $get);
|
160 |
$get = preg_replace("/%%player_fallback%%/", ((filter_var($attr["player_fallback"], FILTER_VALIDATE_BOOLEAN)) ? "true" : "false"), $get);
|
161 |
$get = preg_replace("/%%player_mute%%/", ((filter_var($attr["player_mute"], FILTER_VALIDATE_BOOLEAN)) ? "true" : "false"), $get);
|
includes/classes/utils-html.inc.php
CHANGED
@@ -54,15 +54,11 @@ if (!class_exists ("c_ws_plugin__s2member_utils_html"))
|
|
54 |
|
55 |
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />' . "\n";
|
56 |
|
57 |
-
echo '<
|
58 |
-
|
59 |
-
echo '<script type="text/javascript">' . "var pwsL10n = {empty: '" . c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Strength indicator", "s2member-front", "s2member")) . "', short: '" . c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Very weak", "s2member-front", "s2member")) . "', bad: '" . c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Weak", "s2member-front", "s2member")) . "', good: '" . c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Medium", "s2member-front", "s2member")) . "', strong: '" . c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Strong", "s2member-front", "s2member")) . "', mismatch: '" . c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Mismatch", "s2member-front", "s2member")) . "'};</script>" . "\n";
|
60 |
-
echo '<script type="text/javascript" src="' . esc_attr (site_url ("/wp-admin/js/password-strength-meter.js?ver=" . urlencode (c_ws_plugin__s2member_utilities::ver_checksum ()))) . '"></script>' . "\n";
|
61 |
|
|
|
62 |
echo '<script type="text/javascript" src="' . esc_attr ($s2o . "?ws_plugin__s2member_js_w_globals=" . urlencode (WS_PLUGIN__S2MEMBER_API_CONSTANTS_MD5) . "&qcABC=1&ver=" . urlencode (c_ws_plugin__s2member_utilities::ver_checksum ())) . '"></script>' . "\n";
|
63 |
|
64 |
-
echo '<link href="' . esc_attr ($s2o . "?ws_plugin__s2member_css=1&qcABC=1&ver=" . urlencode (c_ws_plugin__s2member_utilities::ver_checksum ())) . '" type="text/css" rel="stylesheet" media="all" />' . "\n";
|
65 |
-
|
66 |
if ($doctype_html_head_title) // Add <title></title> tag?
|
67 |
echo '<title>' . $doctype_html_head_title . '</title>' . "\n";
|
68 |
|
54 |
|
55 |
echo '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />' . "\n";
|
56 |
|
57 |
+
echo '<link href="' . esc_attr ($s2o . "?ws_plugin__s2member_css=1&qcABC=1&ver=" . urlencode (c_ws_plugin__s2member_utilities::ver_checksum ())) . '" type="text/css" rel="stylesheet" media="all" />' . "\n";
|
|
|
|
|
|
|
58 |
|
59 |
+
echo '<script type="text/javascript" src="' . esc_attr (site_url ("/wp-includes/js/jquery/jquery.js?ver=" . urlencode (c_ws_plugin__s2member_utilities::ver_checksum ()))) . '"></script>' . "\n";
|
60 |
echo '<script type="text/javascript" src="' . esc_attr ($s2o . "?ws_plugin__s2member_js_w_globals=" . urlencode (WS_PLUGIN__S2MEMBER_API_CONSTANTS_MD5) . "&qcABC=1&ver=" . urlencode (c_ws_plugin__s2member_utilities::ver_checksum ())) . '"></script>' . "\n";
|
61 |
|
|
|
|
|
62 |
if ($doctype_html_head_title) // Add <title></title> tag?
|
63 |
echo '<title>' . $doctype_html_head_title . '</title>' . "\n";
|
64 |
|
includes/classes/utils-strings.inc.php
CHANGED
@@ -332,9 +332,9 @@ if(!class_exists("c_ws_plugin__s2member_utils_strings"))
|
|
332 |
*/
|
333 |
public static function highlight_php($string = FALSE)
|
334 |
{
|
335 |
-
$string = highlight_string((string)$string, true); // Start with PHP syntax, then Shortcodes.
|
336 |
-
|
337 |
-
return
|
338 |
}
|
339 |
/**
|
340 |
* Parses email addresses from a string or array.
|
332 |
*/
|
333 |
public static function highlight_php($string = FALSE)
|
334 |
{
|
335 |
+
$string = highlight_string(trim((string)$string), true); // Start with PHP syntax, then Shortcodes.
|
336 |
+
$string = preg_replace("/\[\/?_*s2[a-z0-9_\-]+.*?\]/i", '<span style="color:#164A61;">$0</span>', $string);
|
337 |
+
return str_replace('<code>', '<code class="highlight-php">', $string);
|
338 |
}
|
339 |
/**
|
340 |
* Parses email addresses from a string or array.
|
includes/externals/markdown/nc-markdown.inc.php
CHANGED
@@ -27,8 +27,7 @@ function NC_Markdown($text) {
|
|
27 |
|
28 |
static $parser;
|
29 |
if (!isset($parser)) {
|
30 |
-
$
|
31 |
-
$parser = new $parser_class;
|
32 |
}
|
33 |
|
34 |
return $parser->transform($text);
|
@@ -44,7 +43,7 @@ class NC_Markdown_Parser {
|
|
44 |
# Needed to insert a maximum bracked depth while converting to PHP.
|
45 |
var $nested_brackets_depth = 6;
|
46 |
var $nested_brackets_re;
|
47 |
-
|
48 |
var $nested_url_parenthesis_depth = 4;
|
49 |
var $nested_url_parenthesis_re;
|
50 |
|
@@ -55,11 +54,11 @@ class NC_Markdown_Parser {
|
|
55 |
# Change to ">" for HTML output.
|
56 |
var $empty_element_suffix = " />";
|
57 |
var $tab_width = 4;
|
58 |
-
|
59 |
# Change to `true` to disallow markup or entities.
|
60 |
var $no_markup = false;
|
61 |
var $no_entities = false;
|
62 |
-
|
63 |
# Predefined urls and titles for reference links and images.
|
64 |
var $predef_urls = array();
|
65 |
var $predef_titles = array();
|
@@ -71,17 +70,17 @@ class NC_Markdown_Parser {
|
|
71 |
#
|
72 |
$this->_initDetab();
|
73 |
$this->prepareItalicsAndBold();
|
74 |
-
|
75 |
-
$this->nested_brackets_re =
|
76 |
str_repeat('(?>[^\[\]]+|\[', $this->nested_brackets_depth).
|
77 |
str_repeat('\])*', $this->nested_brackets_depth);
|
78 |
-
|
79 |
-
$this->nested_url_parenthesis_re =
|
80 |
str_repeat('(?>[^()\s]+|\(', $this->nested_url_parenthesis_depth).
|
81 |
str_repeat('(?>\)))*', $this->nested_url_parenthesis_depth);
|
82 |
-
|
83 |
$this->escape_chars_re = '['.preg_quote($this->escape_chars).']';
|
84 |
-
|
85 |
# Sort document, block, and span gamut in ascendent priority order.
|
86 |
asort($this->document_gamut);
|
87 |
asort($this->block_gamut);
|
@@ -93,27 +92,27 @@ class NC_Markdown_Parser {
|
|
93 |
var $urls = array();
|
94 |
var $titles = array();
|
95 |
var $html_hashes = array();
|
96 |
-
|
97 |
# Status flag to avoid invalid nesting.
|
98 |
var $in_anchor = false;
|
99 |
-
|
100 |
-
|
101 |
function setup() {
|
102 |
#
|
103 |
-
# Called before the transformation process starts to setup parser
|
104 |
# states.
|
105 |
#
|
106 |
# Clear global hashes.
|
107 |
$this->urls = $this->predef_urls;
|
108 |
$this->titles = $this->predef_titles;
|
109 |
$this->html_hashes = array();
|
110 |
-
|
111 |
$in_anchor = false;
|
112 |
}
|
113 |
-
|
114 |
function teardown() {
|
115 |
#
|
116 |
-
# Called after the transformation process to clear any variable
|
117 |
# which may be taking up memory unnecessarly.
|
118 |
#
|
119 |
$this->urls = array();
|
@@ -128,7 +127,7 @@ class NC_Markdown_Parser {
|
|
128 |
# and pass it through the document gamut.
|
129 |
#
|
130 |
$this->setup();
|
131 |
-
|
132 |
# Remove UTF-8 BOM and marker character in input, if present.
|
133 |
$text = preg_replace('{^\xEF\xBB\xBF|\x1A}', '', $text);
|
134 |
|
@@ -155,16 +154,16 @@ class NC_Markdown_Parser {
|
|
155 |
foreach ($this->document_gamut as $method => $priority) {
|
156 |
$text = $this->$method($text);
|
157 |
}
|
158 |
-
|
159 |
$this->teardown();
|
160 |
|
161 |
return $text . "\n";
|
162 |
}
|
163 |
-
|
164 |
var $document_gamut = array(
|
165 |
# Strip link definitions, store in hashes.
|
166 |
"stripLinkDefinitions" => 20,
|
167 |
-
|
168 |
"runBasicBlockGamut" => 30,
|
169 |
);
|
170 |
|
@@ -220,8 +219,8 @@ class NC_Markdown_Parser {
|
|
220 |
# hard-coded:
|
221 |
#
|
222 |
# * List "a" is made of tags which can be both inline or block-level.
|
223 |
-
# These will be treated block-level when the start tag is alone on
|
224 |
-
# its line, otherwise they're not matched here and will be taken as
|
225 |
# inline later.
|
226 |
# * List "b" is made of tags which are always block-level;
|
227 |
#
|
@@ -243,7 +242,7 @@ class NC_Markdown_Parser {
|
|
243 |
|
|
244 |
\'[^\']*\' # text inside single quotes (tolerate ">")
|
245 |
)*
|
246 |
-
)?
|
247 |
';
|
248 |
$content =
|
249 |
str_repeat('
|
@@ -260,7 +259,7 @@ class NC_Markdown_Parser {
|
|
260 |
str_repeat('
|
261 |
</\2\s*> # closing nested tag
|
262 |
)
|
263 |
-
|
|
264 |
<(?!/\2\s*> # other tags with a different name
|
265 |
)
|
266 |
)*',
|
@@ -286,9 +285,9 @@ class NC_Markdown_Parser {
|
|
286 |
)
|
287 |
( # save in $1
|
288 |
|
289 |
-
# Match from `\n<tag>` to `</tag>\n`, handling nested tags
|
290 |
# in between.
|
291 |
-
|
292 |
[ ]{0,'.$less_than_tab.'}
|
293 |
<('.$block_tags_b_re.')# start tag = $2
|
294 |
'.$attr.'> # attributes followed by > and \n
|
@@ -306,28 +305,28 @@ class NC_Markdown_Parser {
|
|
306 |
</\3> # the matching end tag
|
307 |
[ ]* # trailing spaces/tabs
|
308 |
(?=\n+|\Z) # followed by a newline or end of document
|
309 |
-
|
310 |
-
| # Special case just for <hr />. It was easier to make a special
|
311 |
# case than to make the other regex more complicated.
|
312 |
-
|
313 |
[ ]{0,'.$less_than_tab.'}
|
314 |
<(hr) # start tag = $2
|
315 |
'.$attr.' # attributes
|
316 |
/?> # the matching end tag
|
317 |
[ ]*
|
318 |
(?=\n{2,}|\Z) # followed by a blank line or end of document
|
319 |
-
|
320 |
| # Special case for standalone HTML comments:
|
321 |
-
|
322 |
[ ]{0,'.$less_than_tab.'}
|
323 |
(?s:
|
324 |
<!-- .*? -->
|
325 |
)
|
326 |
[ ]*
|
327 |
(?=\n{2,}|\Z) # followed by a blank line or end of document
|
328 |
-
|
329 |
| # PHP and ASP-style processor instructions (<? and <%)
|
330 |
-
|
331 |
[ ]{0,'.$less_than_tab.'}
|
332 |
(?s:
|
333 |
<([?%]) # $2
|
@@ -336,7 +335,7 @@ class NC_Markdown_Parser {
|
|
336 |
)
|
337 |
[ ]*
|
338 |
(?=\n{2,}|\Z) # followed by a blank line or end of document
|
339 |
-
|
340 |
)
|
341 |
)}Sxmi',
|
342 |
array(&$this, '_hashHTMLBlocks_callback'),
|
@@ -349,11 +348,11 @@ class NC_Markdown_Parser {
|
|
349 |
$key = $this->hashBlock($text);
|
350 |
return "\n\n$key\n\n";
|
351 |
}
|
352 |
-
|
353 |
-
|
354 |
function hashPart($text, $boundary = 'X') {
|
355 |
#
|
356 |
-
# Called whenever a tag must be hashed when a function insert an atomic
|
357 |
# element in the text stream. Passing $text to through this function gives
|
358 |
# a unique text-token which will be reverted back when calling unhash.
|
359 |
#
|
@@ -365,7 +364,7 @@ class NC_Markdown_Parser {
|
|
365 |
# Swap back any tag hash found in $text so we do not have to `unhash`
|
366 |
# multiple times at the end.
|
367 |
$text = $this->unhash($text);
|
368 |
-
|
369 |
# Then hash the block.
|
370 |
static $i = 0;
|
371 |
$key = "$boundary\x1A" . ++$i . $boundary;
|
@@ -389,7 +388,7 @@ class NC_Markdown_Parser {
|
|
389 |
#
|
390 |
"doHeaders" => 10,
|
391 |
"doHorizontalRules" => 20,
|
392 |
-
|
393 |
"doLists" => 40,
|
394 |
"doCodeBlocks" => 50,
|
395 |
"doBlockQuotes" => 60,
|
@@ -399,33 +398,33 @@ class NC_Markdown_Parser {
|
|
399 |
#
|
400 |
# Run block gamut tranformations.
|
401 |
#
|
402 |
-
# We need to escape raw HTML in Markdown source before doing anything
|
403 |
-
# else. This need to be done for each block, and not only at the
|
404 |
# begining in the Markdown function since hashed blocks can be part of
|
405 |
-
# list items and could have been indented. Indented blocks would have
|
406 |
# been seen as a code block in a previous pass of hashHTMLBlocks.
|
407 |
$text = $this->hashHTMLBlocks($text);
|
408 |
-
|
409 |
return $this->runBasicBlockGamut($text);
|
410 |
}
|
411 |
-
|
412 |
function runBasicBlockGamut($text) {
|
413 |
#
|
414 |
-
# Run block gamut tranformations, without hashing HTML blocks. This is
|
415 |
# useful when HTML blocks are known to be already hashed, like in the first
|
416 |
# whole-document pass.
|
417 |
#
|
418 |
foreach ($this->block_gamut as $method => $priority) {
|
419 |
$text = $this->$method($text);
|
420 |
}
|
421 |
-
|
422 |
# Finally form paragraph and restore hashed blocks.
|
423 |
$text = $this->formParagraphs($text);
|
424 |
|
425 |
return $text;
|
426 |
}
|
427 |
-
|
428 |
-
|
429 |
function doHorizontalRules($text) {
|
430 |
# Do Horizontal Rules:
|
431 |
return preg_replace(
|
@@ -439,7 +438,7 @@ class NC_Markdown_Parser {
|
|
439 |
[ ]* # Tailing spaces
|
440 |
$ # End of line.
|
441 |
}mx',
|
442 |
-
"\n".$this->hashBlock("<hr$this->empty_element_suffix")."\n",
|
443 |
$text);
|
444 |
}
|
445 |
|
@@ -457,7 +456,7 @@ class NC_Markdown_Parser {
|
|
457 |
# because ![foo][f] looks like an anchor.
|
458 |
"doImages" => 10,
|
459 |
"doAnchors" => 20,
|
460 |
-
|
461 |
# Make links out of things like `<http://example.com/>`
|
462 |
# Must come after doAnchors, because you can use < and >
|
463 |
# delimiters in inline links like [this](<url>).
|
@@ -478,11 +477,11 @@ class NC_Markdown_Parser {
|
|
478 |
|
479 |
return $text;
|
480 |
}
|
481 |
-
|
482 |
-
|
483 |
function doHardBreaks($text) {
|
484 |
# Do hard breaks:
|
485 |
-
return preg_replace_callback('/ {2,}\n/',
|
486 |
array(&$this, '_doHardBreaks_callback'), $text);
|
487 |
}
|
488 |
function _doHardBreaks_callback($matches) {
|
@@ -496,7 +495,7 @@ class NC_Markdown_Parser {
|
|
496 |
#
|
497 |
if ($this->in_anchor) return $text;
|
498 |
$this->in_anchor = true;
|
499 |
-
|
500 |
#
|
501 |
# First, handle reference-style links: [link text] [id]
|
502 |
#
|
@@ -569,7 +568,7 @@ class NC_Markdown_Parser {
|
|
569 |
# for shortcut links like [this][] or [this].
|
570 |
$link_id = $link_text;
|
571 |
}
|
572 |
-
|
573 |
# lower-case and turn embedded newlines into spaces
|
574 |
$link_id = strtolower($link_id);
|
575 |
$link_id = preg_replace('{[ ]?\n}', ' ', $link_id);
|
@@ -577,14 +576,14 @@ class NC_Markdown_Parser {
|
|
577 |
if (isset($this->urls[$link_id])) {
|
578 |
$url = $this->urls[$link_id];
|
579 |
$url = $this->encodeAttribute($url);
|
580 |
-
|
581 |
$result = "<a href=\"$url\"";
|
582 |
if ( isset( $this->titles[$link_id] ) ) {
|
583 |
$title = $this->titles[$link_id];
|
584 |
$title = $this->encodeAttribute($title);
|
585 |
$result .= " title=\"$title\"";
|
586 |
}
|
587 |
-
|
588 |
$link_text = $this->runSpanGamut($link_text);
|
589 |
$result .= ">$link_text</a>";
|
590 |
$result = $this->hashPart($result);
|
@@ -607,7 +606,7 @@ class NC_Markdown_Parser {
|
|
607 |
$title = $this->encodeAttribute($title);
|
608 |
$result .= " title=\"$title\"";
|
609 |
}
|
610 |
-
|
611 |
$link_text = $this->runSpanGamut($link_text);
|
612 |
$result .= ">$link_text</a>";
|
613 |
|
@@ -636,7 +635,7 @@ class NC_Markdown_Parser {
|
|
636 |
\]
|
637 |
|
638 |
)
|
639 |
-
}xs',
|
640 |
array(&$this, '_doImages_reference_callback'), $text);
|
641 |
|
642 |
#
|
@@ -721,7 +720,7 @@ class NC_Markdown_Parser {
|
|
721 |
# Setext-style headers:
|
722 |
# Header 1
|
723 |
# ========
|
724 |
-
#
|
725 |
# Header 2
|
726 |
# --------
|
727 |
#
|
@@ -751,7 +750,7 @@ class NC_Markdown_Parser {
|
|
751 |
# Terrible hack to check we haven't found an empty list item.
|
752 |
if ($matches[2] == '-' && preg_match('{^-(?: |$)}', $matches[1]))
|
753 |
return $matches[0];
|
754 |
-
|
755 |
$level = $matches[2]{0} == '=' ? 1 : 2;
|
756 |
$block = "<h$level>".$this->runSpanGamut($matches[1])."</h$level>";
|
757 |
return "\n" . $this->hashBlock($block) . "\n\n";
|
@@ -798,10 +797,10 @@ class NC_Markdown_Parser {
|
|
798 |
)
|
799 |
)
|
800 |
'; // mx
|
801 |
-
|
802 |
# We use a different prefix before nested lists than top-level lists.
|
803 |
# See extended comment in _ProcessListItems().
|
804 |
-
|
805 |
if ($this->list_level) {
|
806 |
$text = preg_replace_callback('{
|
807 |
^
|
@@ -825,15 +824,15 @@ class NC_Markdown_Parser {
|
|
825 |
$marker_ul_re = '[*+-]';
|
826 |
$marker_ol_re = '\d+[.]';
|
827 |
$marker_any_re = "(?:$marker_ul_re|$marker_ol_re)";
|
828 |
-
|
829 |
$list = $matches[1];
|
830 |
$list_type = preg_match("/$marker_ul_re/", $matches[3]) ? "ul" : "ol";
|
831 |
-
|
832 |
$marker_any_re = ( $list_type == "ul" ? $marker_ul_re : $marker_ol_re );
|
833 |
-
|
834 |
$list .= "\n";
|
835 |
$result = $this->processListItems($list, $marker_any_re);
|
836 |
-
|
837 |
$result = $this->hashBlock("<$list_type>\n" . $result . "</$list_type>");
|
838 |
return "\n". $result ."\n\n";
|
839 |
}
|
@@ -865,7 +864,7 @@ class NC_Markdown_Parser {
|
|
865 |
# without resorting to mind-reading. Perhaps the solution is to
|
866 |
# change the syntax rules such that sub-lists must start with a
|
867 |
# starting cardinal number; e.g. "1." or "a.".
|
868 |
-
|
869 |
$this->list_level++;
|
870 |
|
871 |
# trim trailing blank lines:
|
@@ -893,7 +892,7 @@ class NC_Markdown_Parser {
|
|
893 |
$marker_space = $matches[3];
|
894 |
$tailing_blank_line =& $matches[5];
|
895 |
|
896 |
-
if ($leading_line || $tailing_blank_line ||
|
897 |
preg_match('/\n{2,}/', $item))
|
898 |
{
|
899 |
# Replace marker with the appropriate whitespace indentation
|
@@ -968,7 +967,7 @@ class NC_Markdown_Parser {
|
|
968 |
'___' => '(?<=\S)(?<!_)___(?!_)',
|
969 |
);
|
970 |
var $em_strong_prepared_relist;
|
971 |
-
|
972 |
function prepareItalicsAndBold() {
|
973 |
#
|
974 |
# Prepare regular expressions for seraching emphasis tokens in any
|
@@ -983,37 +982,37 @@ class NC_Markdown_Parser {
|
|
983 |
}
|
984 |
$token_relist[] = $em_re;
|
985 |
$token_relist[] = $strong_re;
|
986 |
-
|
987 |
# Construct master expression from list.
|
988 |
$token_re = '{('. implode('|', $token_relist) .')}';
|
989 |
$this->em_strong_prepared_relist["$em$strong"] = $token_re;
|
990 |
}
|
991 |
}
|
992 |
}
|
993 |
-
|
994 |
function doItalicsAndBold($text) {
|
995 |
$token_stack = array('');
|
996 |
$text_stack = array('');
|
997 |
$em = '';
|
998 |
$strong = '';
|
999 |
$tree_char_em = false;
|
1000 |
-
|
1001 |
while (1) {
|
1002 |
#
|
1003 |
# Get prepared regular expression for seraching emphasis tokens
|
1004 |
# in current context.
|
1005 |
#
|
1006 |
$token_re = $this->em_strong_prepared_relist["$em$strong"];
|
1007 |
-
|
1008 |
#
|
1009 |
-
# Each loop iteration seach for the next emphasis token.
|
1010 |
# Each token is then passed to handleSpanToken.
|
1011 |
#
|
1012 |
$parts = preg_split($token_re, $text, 2, PREG_SPLIT_DELIM_CAPTURE);
|
1013 |
$text_stack[0] .= $parts[0];
|
1014 |
$token =& $parts[1];
|
1015 |
$text =& $parts[2];
|
1016 |
-
|
1017 |
if (empty($token)) {
|
1018 |
# Reached end of text span: empty stack without emitting.
|
1019 |
# any more emphasis.
|
@@ -1023,7 +1022,7 @@ class NC_Markdown_Parser {
|
|
1023 |
}
|
1024 |
break;
|
1025 |
}
|
1026 |
-
|
1027 |
$token_len = strlen($token);
|
1028 |
if ($tree_char_em) {
|
1029 |
# Reached closing marker while inside a three-char emphasis.
|
@@ -1062,7 +1061,7 @@ class NC_Markdown_Parser {
|
|
1062 |
$$tag = ''; # $$tag stands for $em or $strong
|
1063 |
}
|
1064 |
} else {
|
1065 |
-
# Reached opening three-char emphasis marker. Push on token
|
1066 |
# stack; will be handled by the special condition above.
|
1067 |
$em = $token{0};
|
1068 |
$strong = "$em$em";
|
@@ -1136,9 +1135,9 @@ class NC_Markdown_Parser {
|
|
1136 |
$bq = $this->runBlockGamut($bq); # recurse
|
1137 |
|
1138 |
$bq = preg_replace('/^/m', " ", $bq);
|
1139 |
-
# These leading spaces cause problem with <pre> content,
|
1140 |
# so we need to fix that:
|
1141 |
-
$bq = preg_replace_callback('{(\s*<pre>.+?</pre>)}sx',
|
1142 |
array(&$this, '_DoBlockQuotes_callback2'), $bq);
|
1143 |
|
1144 |
return "\n". $this->hashBlock("<blockquote>\n$bq\n</blockquote>")."\n\n";
|
@@ -1201,7 +1200,7 @@ class NC_Markdown_Parser {
|
|
1201 |
// # We can't call Markdown(), because that resets the hash;
|
1202 |
// # that initialization code should be pulled into its own sub, though.
|
1203 |
// $div_content = $this->hashHTMLBlocks($div_content);
|
1204 |
-
//
|
1205 |
// # Run document gamut methods on the content.
|
1206 |
// foreach ($this->document_gamut as $method => $priority) {
|
1207 |
// $div_content = $this->$method($div_content);
|
@@ -1229,11 +1228,11 @@ class NC_Markdown_Parser {
|
|
1229 |
$text = str_replace('"', '"', $text);
|
1230 |
return $text;
|
1231 |
}
|
1232 |
-
|
1233 |
-
|
1234 |
function encodeAmpsAndAngles($text) {
|
1235 |
#
|
1236 |
-
# Smart processing for ampersands and angle brackets that need to
|
1237 |
# be encoded. Valid character entities are left alone unless the
|
1238 |
# no-entities mode is set.
|
1239 |
#
|
@@ -1242,7 +1241,7 @@ class NC_Markdown_Parser {
|
|
1242 |
} else {
|
1243 |
# Ampersand-encoding based entirely on Nat Irons's Amputator
|
1244 |
# MT plugin: <http://bumppo.net/projects/amputator/>
|
1245 |
-
$text = preg_replace('/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/',
|
1246 |
'&', $text);;
|
1247 |
}
|
1248 |
# Encode remaining <'s
|
@@ -1253,7 +1252,7 @@ class NC_Markdown_Parser {
|
|
1253 |
|
1254 |
|
1255 |
function doAutoLinks($text) {
|
1256 |
-
$text = preg_replace_callback('{<((https?|ftp|dict):[^\'">\s]+)>}i',
|
1257 |
array(&$this, '_doAutoLinks_url_callback'), $text);
|
1258 |
|
1259 |
# Email addresses: <address@domain.foo>
|
@@ -1302,7 +1301,7 @@ class NC_Markdown_Parser {
|
|
1302 |
$addr = "mailto:" . $addr;
|
1303 |
$chars = preg_split('/(?<!^)(?!$)/', $addr);
|
1304 |
$seed = (int)abs(crc32($addr) / strlen($addr)); # Deterministic seed.
|
1305 |
-
|
1306 |
foreach ($chars as $key => $char) {
|
1307 |
$ord = ord($char);
|
1308 |
# Ignore non-ascii chars.
|
@@ -1315,7 +1314,7 @@ class NC_Markdown_Parser {
|
|
1315 |
else $chars[$key] = '&#'.$ord.';';
|
1316 |
}
|
1317 |
}
|
1318 |
-
|
1319 |
$addr = implode('', $chars);
|
1320 |
$text = implode('', array_slice($chars, 7)); # text without `mailto:`
|
1321 |
$addr = "<a href=\"$addr\">$text</a>";
|
@@ -1330,7 +1329,7 @@ class NC_Markdown_Parser {
|
|
1330 |
# escaped characters and handling code spans.
|
1331 |
#
|
1332 |
$output = '';
|
1333 |
-
|
1334 |
$span_re = '{
|
1335 |
(
|
1336 |
\\\\'.$this->escape_chars_re.'
|
@@ -1355,17 +1354,17 @@ class NC_Markdown_Parser {
|
|
1355 |
|
1356 |
while (1) {
|
1357 |
#
|
1358 |
-
# Each loop iteration seach for either the next tag, the next
|
1359 |
-
# openning code span marker, or the next escaped character.
|
1360 |
# Each token is then passed to handleSpanToken.
|
1361 |
#
|
1362 |
$parts = preg_split($span_re, $str, 2, PREG_SPLIT_DELIM_CAPTURE);
|
1363 |
-
|
1364 |
# Create token from text preceding tag.
|
1365 |
if ($parts[0] != "") {
|
1366 |
$output .= $parts[0];
|
1367 |
}
|
1368 |
-
|
1369 |
# Check if we reach the end.
|
1370 |
if (isset($parts[1])) {
|
1371 |
$output .= $this->handleSpanToken($parts[1], $parts[2]);
|
@@ -1375,14 +1374,14 @@ class NC_Markdown_Parser {
|
|
1375 |
break;
|
1376 |
}
|
1377 |
}
|
1378 |
-
|
1379 |
return $output;
|
1380 |
}
|
1381 |
-
|
1382 |
-
|
1383 |
function handleSpanToken($token, &$str) {
|
1384 |
#
|
1385 |
-
# Handle $token provided by parseSpan by determining its nature and
|
1386 |
# returning the corresponding value that should replace it.
|
1387 |
#
|
1388 |
switch ($token{0}) {
|
@@ -1390,7 +1389,7 @@ class NC_Markdown_Parser {
|
|
1390 |
return $this->hashPart("&#". ord($token{1}). ";");
|
1391 |
case "`":
|
1392 |
# Search for end marker in remaining text.
|
1393 |
-
if (preg_match('/^(.*?[^`])'.preg_quote($token).'(?!`)(.*)$/sm',
|
1394 |
$str, $matches))
|
1395 |
{
|
1396 |
$str = $matches[2];
|
@@ -1412,18 +1411,18 @@ class NC_Markdown_Parser {
|
|
1412 |
}
|
1413 |
|
1414 |
|
1415 |
-
# String length function for detab. `_initDetab` will create a function to
|
1416 |
# hanlde UTF-8 if the default function does not exist.
|
1417 |
var $utf8_strlen = 'mb_strlen';
|
1418 |
-
|
1419 |
function detab($text) {
|
1420 |
#
|
1421 |
# Replace tabs with the appropriate amount of space.
|
1422 |
#
|
1423 |
# For each line we separate the line in blocks delemited by
|
1424 |
-
# tab characters. Then we reconstruct every line by adding the
|
1425 |
# appropriate number of space between each blocks.
|
1426 |
-
|
1427 |
$text = preg_replace_callback('/^.*\t.*$/m',
|
1428 |
array(&$this, '_detab_callback'), $text);
|
1429 |
|
@@ -1432,7 +1431,7 @@ class NC_Markdown_Parser {
|
|
1432 |
function _detab_callback($matches) {
|
1433 |
$line = $matches[0];
|
1434 |
$strlen = $this->utf8_strlen; # strlen function for UTF-8.
|
1435 |
-
|
1436 |
# Split in blocks.
|
1437 |
$blocks = explode("\t", $line);
|
1438 |
# Add each blocks to the line.
|
@@ -1440,7 +1439,7 @@ class NC_Markdown_Parser {
|
|
1440 |
unset($blocks[0]); # Do not add first block twice.
|
1441 |
foreach ($blocks as $block) {
|
1442 |
# Calculate amount of space, insert spaces, insert block.
|
1443 |
-
$amount = $this->tab_width -
|
1444 |
$strlen($line, 'UTF-8') % $this->tab_width;
|
1445 |
$line .= str_repeat(" ", $amount) . $block;
|
1446 |
}
|
@@ -1449,13 +1448,13 @@ class NC_Markdown_Parser {
|
|
1449 |
function _initDetab() {
|
1450 |
#
|
1451 |
# Check for the availability of the function in the `utf8_strlen` property
|
1452 |
-
# (initially `mb_strlen`). If the function is not available, create a
|
1453 |
# function that will loosely count the number of UTF-8 characters with a
|
1454 |
# regular expression.
|
1455 |
#
|
1456 |
if (function_exists($this->utf8_strlen)) return;
|
1457 |
$this->utf8_strlen = create_function('$text', 'return preg_match_all(
|
1458 |
-
"/[\\\\x00-\\\\xBF]|[\\\\xC0-\\\\xFF][\\\\x80-\\\\xBF]*/",
|
1459 |
$text, $m);');
|
1460 |
}
|
1461 |
|
@@ -1464,7 +1463,7 @@ class NC_Markdown_Parser {
|
|
1464 |
#
|
1465 |
# Swap back in all the tags hashed by _HashHTMLBlocks.
|
1466 |
#
|
1467 |
-
return preg_replace_callback('/(.)\x1A[0-9]+\1/',
|
1468 |
array(&$this, '_unhash_callback'), $text);
|
1469 |
}
|
1470 |
function _unhash_callback($matches) {
|
27 |
|
28 |
static $parser;
|
29 |
if (!isset($parser)) {
|
30 |
+
$parser = new NC_Markdown_Parser;
|
|
|
31 |
}
|
32 |
|
33 |
return $parser->transform($text);
|
43 |
# Needed to insert a maximum bracked depth while converting to PHP.
|
44 |
var $nested_brackets_depth = 6;
|
45 |
var $nested_brackets_re;
|
46 |
+
|
47 |
var $nested_url_parenthesis_depth = 4;
|
48 |
var $nested_url_parenthesis_re;
|
49 |
|
54 |
# Change to ">" for HTML output.
|
55 |
var $empty_element_suffix = " />";
|
56 |
var $tab_width = 4;
|
57 |
+
|
58 |
# Change to `true` to disallow markup or entities.
|
59 |
var $no_markup = false;
|
60 |
var $no_entities = false;
|
61 |
+
|
62 |
# Predefined urls and titles for reference links and images.
|
63 |
var $predef_urls = array();
|
64 |
var $predef_titles = array();
|
70 |
#
|
71 |
$this->_initDetab();
|
72 |
$this->prepareItalicsAndBold();
|
73 |
+
|
74 |
+
$this->nested_brackets_re =
|
75 |
str_repeat('(?>[^\[\]]+|\[', $this->nested_brackets_depth).
|
76 |
str_repeat('\])*', $this->nested_brackets_depth);
|
77 |
+
|
78 |
+
$this->nested_url_parenthesis_re =
|
79 |
str_repeat('(?>[^()\s]+|\(', $this->nested_url_parenthesis_depth).
|
80 |
str_repeat('(?>\)))*', $this->nested_url_parenthesis_depth);
|
81 |
+
|
82 |
$this->escape_chars_re = '['.preg_quote($this->escape_chars).']';
|
83 |
+
|
84 |
# Sort document, block, and span gamut in ascendent priority order.
|
85 |
asort($this->document_gamut);
|
86 |
asort($this->block_gamut);
|
92 |
var $urls = array();
|
93 |
var $titles = array();
|
94 |
var $html_hashes = array();
|
95 |
+
|
96 |
# Status flag to avoid invalid nesting.
|
97 |
var $in_anchor = false;
|
98 |
+
|
99 |
+
|
100 |
function setup() {
|
101 |
#
|
102 |
+
# Called before the transformation process starts to setup parser
|
103 |
# states.
|
104 |
#
|
105 |
# Clear global hashes.
|
106 |
$this->urls = $this->predef_urls;
|
107 |
$this->titles = $this->predef_titles;
|
108 |
$this->html_hashes = array();
|
109 |
+
|
110 |
$in_anchor = false;
|
111 |
}
|
112 |
+
|
113 |
function teardown() {
|
114 |
#
|
115 |
+
# Called after the transformation process to clear any variable
|
116 |
# which may be taking up memory unnecessarly.
|
117 |
#
|
118 |
$this->urls = array();
|
127 |
# and pass it through the document gamut.
|
128 |
#
|
129 |
$this->setup();
|
130 |
+
|
131 |
# Remove UTF-8 BOM and marker character in input, if present.
|
132 |
$text = preg_replace('{^\xEF\xBB\xBF|\x1A}', '', $text);
|
133 |
|
154 |
foreach ($this->document_gamut as $method => $priority) {
|
155 |
$text = $this->$method($text);
|
156 |
}
|
157 |
+
|
158 |
$this->teardown();
|
159 |
|
160 |
return $text . "\n";
|
161 |
}
|
162 |
+
|
163 |
var $document_gamut = array(
|
164 |
# Strip link definitions, store in hashes.
|
165 |
"stripLinkDefinitions" => 20,
|
166 |
+
|
167 |
"runBasicBlockGamut" => 30,
|
168 |
);
|
169 |
|
219 |
# hard-coded:
|
220 |
#
|
221 |
# * List "a" is made of tags which can be both inline or block-level.
|
222 |
+
# These will be treated block-level when the start tag is alone on
|
223 |
+
# its line, otherwise they're not matched here and will be taken as
|
224 |
# inline later.
|
225 |
# * List "b" is made of tags which are always block-level;
|
226 |
#
|
242 |
|
|
243 |
\'[^\']*\' # text inside single quotes (tolerate ">")
|
244 |
)*
|
245 |
+
)?
|
246 |
';
|
247 |
$content =
|
248 |
str_repeat('
|
259 |
str_repeat('
|
260 |
</\2\s*> # closing nested tag
|
261 |
)
|
262 |
+
|
|
263 |
<(?!/\2\s*> # other tags with a different name
|
264 |
)
|
265 |
)*',
|
285 |
)
|
286 |
( # save in $1
|
287 |
|
288 |
+
# Match from `\n<tag>` to `</tag>\n`, handling nested tags
|
289 |
# in between.
|
290 |
+
|
291 |
[ ]{0,'.$less_than_tab.'}
|
292 |
<('.$block_tags_b_re.')# start tag = $2
|
293 |
'.$attr.'> # attributes followed by > and \n
|
305 |
</\3> # the matching end tag
|
306 |
[ ]* # trailing spaces/tabs
|
307 |
(?=\n+|\Z) # followed by a newline or end of document
|
308 |
+
|
309 |
+
| # Special case just for <hr />. It was easier to make a special
|
310 |
# case than to make the other regex more complicated.
|
311 |
+
|
312 |
[ ]{0,'.$less_than_tab.'}
|
313 |
<(hr) # start tag = $2
|
314 |
'.$attr.' # attributes
|
315 |
/?> # the matching end tag
|
316 |
[ ]*
|
317 |
(?=\n{2,}|\Z) # followed by a blank line or end of document
|
318 |
+
|
319 |
| # Special case for standalone HTML comments:
|
320 |
+
|
321 |
[ ]{0,'.$less_than_tab.'}
|
322 |
(?s:
|
323 |
<!-- .*? -->
|
324 |
)
|
325 |
[ ]*
|
326 |
(?=\n{2,}|\Z) # followed by a blank line or end of document
|
327 |
+
|
328 |
| # PHP and ASP-style processor instructions (<? and <%)
|
329 |
+
|
330 |
[ ]{0,'.$less_than_tab.'}
|
331 |
(?s:
|
332 |
<([?%]) # $2
|
335 |
)
|
336 |
[ ]*
|
337 |
(?=\n{2,}|\Z) # followed by a blank line or end of document
|
338 |
+
|
339 |
)
|
340 |
)}Sxmi',
|
341 |
array(&$this, '_hashHTMLBlocks_callback'),
|
348 |
$key = $this->hashBlock($text);
|
349 |
return "\n\n$key\n\n";
|
350 |
}
|
351 |
+
|
352 |
+
|
353 |
function hashPart($text, $boundary = 'X') {
|
354 |
#
|
355 |
+
# Called whenever a tag must be hashed when a function insert an atomic
|
356 |
# element in the text stream. Passing $text to through this function gives
|
357 |
# a unique text-token which will be reverted back when calling unhash.
|
358 |
#
|
364 |
# Swap back any tag hash found in $text so we do not have to `unhash`
|
365 |
# multiple times at the end.
|
366 |
$text = $this->unhash($text);
|
367 |
+
|
368 |
# Then hash the block.
|
369 |
static $i = 0;
|
370 |
$key = "$boundary\x1A" . ++$i . $boundary;
|
388 |
#
|
389 |
"doHeaders" => 10,
|
390 |
"doHorizontalRules" => 20,
|
391 |
+
|
392 |
"doLists" => 40,
|
393 |
"doCodeBlocks" => 50,
|
394 |
"doBlockQuotes" => 60,
|
398 |
#
|
399 |
# Run block gamut tranformations.
|
400 |
#
|
401 |
+
# We need to escape raw HTML in Markdown source before doing anything
|
402 |
+
# else. This need to be done for each block, and not only at the
|
403 |
# begining in the Markdown function since hashed blocks can be part of
|
404 |
+
# list items and could have been indented. Indented blocks would have
|
405 |
# been seen as a code block in a previous pass of hashHTMLBlocks.
|
406 |
$text = $this->hashHTMLBlocks($text);
|
407 |
+
|
408 |
return $this->runBasicBlockGamut($text);
|
409 |
}
|
410 |
+
|
411 |
function runBasicBlockGamut($text) {
|
412 |
#
|
413 |
+
# Run block gamut tranformations, without hashing HTML blocks. This is
|
414 |
# useful when HTML blocks are known to be already hashed, like in the first
|
415 |
# whole-document pass.
|
416 |
#
|
417 |
foreach ($this->block_gamut as $method => $priority) {
|
418 |
$text = $this->$method($text);
|
419 |
}
|
420 |
+
|
421 |
# Finally form paragraph and restore hashed blocks.
|
422 |
$text = $this->formParagraphs($text);
|
423 |
|
424 |
return $text;
|
425 |
}
|
426 |
+
|
427 |
+
|
428 |
function doHorizontalRules($text) {
|
429 |
# Do Horizontal Rules:
|
430 |
return preg_replace(
|
438 |
[ ]* # Tailing spaces
|
439 |
$ # End of line.
|
440 |
}mx',
|
441 |
+
"\n".$this->hashBlock("<hr$this->empty_element_suffix")."\n",
|
442 |
$text);
|
443 |
}
|
444 |
|
456 |
# because ![foo][f] looks like an anchor.
|
457 |
"doImages" => 10,
|
458 |
"doAnchors" => 20,
|
459 |
+
|
460 |
# Make links out of things like `<http://example.com/>`
|
461 |
# Must come after doAnchors, because you can use < and >
|
462 |
# delimiters in inline links like [this](<url>).
|
477 |
|
478 |
return $text;
|
479 |
}
|
480 |
+
|
481 |
+
|
482 |
function doHardBreaks($text) {
|
483 |
# Do hard breaks:
|
484 |
+
return preg_replace_callback('/ {2,}\n/',
|
485 |
array(&$this, '_doHardBreaks_callback'), $text);
|
486 |
}
|
487 |
function _doHardBreaks_callback($matches) {
|
495 |
#
|
496 |
if ($this->in_anchor) return $text;
|
497 |
$this->in_anchor = true;
|
498 |
+
|
499 |
#
|
500 |
# First, handle reference-style links: [link text] [id]
|
501 |
#
|
568 |
# for shortcut links like [this][] or [this].
|
569 |
$link_id = $link_text;
|
570 |
}
|
571 |
+
|
572 |
# lower-case and turn embedded newlines into spaces
|
573 |
$link_id = strtolower($link_id);
|
574 |
$link_id = preg_replace('{[ ]?\n}', ' ', $link_id);
|
576 |
if (isset($this->urls[$link_id])) {
|
577 |
$url = $this->urls[$link_id];
|
578 |
$url = $this->encodeAttribute($url);
|
579 |
+
|
580 |
$result = "<a href=\"$url\"";
|
581 |
if ( isset( $this->titles[$link_id] ) ) {
|
582 |
$title = $this->titles[$link_id];
|
583 |
$title = $this->encodeAttribute($title);
|
584 |
$result .= " title=\"$title\"";
|
585 |
}
|
586 |
+
|
587 |
$link_text = $this->runSpanGamut($link_text);
|
588 |
$result .= ">$link_text</a>";
|
589 |
$result = $this->hashPart($result);
|
606 |
$title = $this->encodeAttribute($title);
|
607 |
$result .= " title=\"$title\"";
|
608 |
}
|
609 |
+
|
610 |
$link_text = $this->runSpanGamut($link_text);
|
611 |
$result .= ">$link_text</a>";
|
612 |
|
635 |
\]
|
636 |
|
637 |
)
|
638 |
+
}xs',
|
639 |
array(&$this, '_doImages_reference_callback'), $text);
|
640 |
|
641 |
#
|
720 |
# Setext-style headers:
|
721 |
# Header 1
|
722 |
# ========
|
723 |
+
#
|
724 |
# Header 2
|
725 |
# --------
|
726 |
#
|
750 |
# Terrible hack to check we haven't found an empty list item.
|
751 |
if ($matches[2] == '-' && preg_match('{^-(?: |$)}', $matches[1]))
|
752 |
return $matches[0];
|
753 |
+
|
754 |
$level = $matches[2]{0} == '=' ? 1 : 2;
|
755 |
$block = "<h$level>".$this->runSpanGamut($matches[1])."</h$level>";
|
756 |
return "\n" . $this->hashBlock($block) . "\n\n";
|
797 |
)
|
798 |
)
|
799 |
'; // mx
|
800 |
+
|
801 |
# We use a different prefix before nested lists than top-level lists.
|
802 |
# See extended comment in _ProcessListItems().
|
803 |
+
|
804 |
if ($this->list_level) {
|
805 |
$text = preg_replace_callback('{
|
806 |
^
|
824 |
$marker_ul_re = '[*+-]';
|
825 |
$marker_ol_re = '\d+[.]';
|
826 |
$marker_any_re = "(?:$marker_ul_re|$marker_ol_re)";
|
827 |
+
|
828 |
$list = $matches[1];
|
829 |
$list_type = preg_match("/$marker_ul_re/", $matches[3]) ? "ul" : "ol";
|
830 |
+
|
831 |
$marker_any_re = ( $list_type == "ul" ? $marker_ul_re : $marker_ol_re );
|
832 |
+
|
833 |
$list .= "\n";
|
834 |
$result = $this->processListItems($list, $marker_any_re);
|
835 |
+
|
836 |
$result = $this->hashBlock("<$list_type>\n" . $result . "</$list_type>");
|
837 |
return "\n". $result ."\n\n";
|
838 |
}
|
864 |
# without resorting to mind-reading. Perhaps the solution is to
|
865 |
# change the syntax rules such that sub-lists must start with a
|
866 |
# starting cardinal number; e.g. "1." or "a.".
|
867 |
+
|
868 |
$this->list_level++;
|
869 |
|
870 |
# trim trailing blank lines:
|
892 |
$marker_space = $matches[3];
|
893 |
$tailing_blank_line =& $matches[5];
|
894 |
|
895 |
+
if ($leading_line || $tailing_blank_line ||
|
896 |
preg_match('/\n{2,}/', $item))
|
897 |
{
|
898 |
# Replace marker with the appropriate whitespace indentation
|
967 |
'___' => '(?<=\S)(?<!_)___(?!_)',
|
968 |
);
|
969 |
var $em_strong_prepared_relist;
|
970 |
+
|
971 |
function prepareItalicsAndBold() {
|
972 |
#
|
973 |
# Prepare regular expressions for seraching emphasis tokens in any
|
982 |
}
|
983 |
$token_relist[] = $em_re;
|
984 |
$token_relist[] = $strong_re;
|
985 |
+
|
986 |
# Construct master expression from list.
|
987 |
$token_re = '{('. implode('|', $token_relist) .')}';
|
988 |
$this->em_strong_prepared_relist["$em$strong"] = $token_re;
|
989 |
}
|
990 |
}
|
991 |
}
|
992 |
+
|
993 |
function doItalicsAndBold($text) {
|
994 |
$token_stack = array('');
|
995 |
$text_stack = array('');
|
996 |
$em = '';
|
997 |
$strong = '';
|
998 |
$tree_char_em = false;
|
999 |
+
|
1000 |
while (1) {
|
1001 |
#
|
1002 |
# Get prepared regular expression for seraching emphasis tokens
|
1003 |
# in current context.
|
1004 |
#
|
1005 |
$token_re = $this->em_strong_prepared_relist["$em$strong"];
|
1006 |
+
|
1007 |
#
|
1008 |
+
# Each loop iteration seach for the next emphasis token.
|
1009 |
# Each token is then passed to handleSpanToken.
|
1010 |
#
|
1011 |
$parts = preg_split($token_re, $text, 2, PREG_SPLIT_DELIM_CAPTURE);
|
1012 |
$text_stack[0] .= $parts[0];
|
1013 |
$token =& $parts[1];
|
1014 |
$text =& $parts[2];
|
1015 |
+
|
1016 |
if (empty($token)) {
|
1017 |
# Reached end of text span: empty stack without emitting.
|
1018 |
# any more emphasis.
|
1022 |
}
|
1023 |
break;
|
1024 |
}
|
1025 |
+
|
1026 |
$token_len = strlen($token);
|
1027 |
if ($tree_char_em) {
|
1028 |
# Reached closing marker while inside a three-char emphasis.
|
1061 |
$$tag = ''; # $$tag stands for $em or $strong
|
1062 |
}
|
1063 |
} else {
|
1064 |
+
# Reached opening three-char emphasis marker. Push on token
|
1065 |
# stack; will be handled by the special condition above.
|
1066 |
$em = $token{0};
|
1067 |
$strong = "$em$em";
|
1135 |
$bq = $this->runBlockGamut($bq); # recurse
|
1136 |
|
1137 |
$bq = preg_replace('/^/m', " ", $bq);
|
1138 |
+
# These leading spaces cause problem with <pre> content,
|
1139 |
# so we need to fix that:
|
1140 |
+
$bq = preg_replace_callback('{(\s*<pre>.+?</pre>)}sx',
|
1141 |
array(&$this, '_DoBlockQuotes_callback2'), $bq);
|
1142 |
|
1143 |
return "\n". $this->hashBlock("<blockquote>\n$bq\n</blockquote>")."\n\n";
|
1200 |
// # We can't call Markdown(), because that resets the hash;
|
1201 |
// # that initialization code should be pulled into its own sub, though.
|
1202 |
// $div_content = $this->hashHTMLBlocks($div_content);
|
1203 |
+
//
|
1204 |
// # Run document gamut methods on the content.
|
1205 |
// foreach ($this->document_gamut as $method => $priority) {
|
1206 |
// $div_content = $this->$method($div_content);
|
1228 |
$text = str_replace('"', '"', $text);
|
1229 |
return $text;
|
1230 |
}
|
1231 |
+
|
1232 |
+
|
1233 |
function encodeAmpsAndAngles($text) {
|
1234 |
#
|
1235 |
+
# Smart processing for ampersands and angle brackets that need to
|
1236 |
# be encoded. Valid character entities are left alone unless the
|
1237 |
# no-entities mode is set.
|
1238 |
#
|
1241 |
} else {
|
1242 |
# Ampersand-encoding based entirely on Nat Irons's Amputator
|
1243 |
# MT plugin: <http://bumppo.net/projects/amputator/>
|
1244 |
+
$text = preg_replace('/&(?!#?[xX]?(?:[0-9a-fA-F]+|\w+);)/',
|
1245 |
'&', $text);;
|
1246 |
}
|
1247 |
# Encode remaining <'s
|
1252 |
|
1253 |
|
1254 |
function doAutoLinks($text) {
|
1255 |
+
$text = preg_replace_callback('{<((https?|ftp|dict):[^\'">\s]+)>}i',
|
1256 |
array(&$this, '_doAutoLinks_url_callback'), $text);
|
1257 |
|
1258 |
# Email addresses: <address@domain.foo>
|
1301 |
$addr = "mailto:" . $addr;
|
1302 |
$chars = preg_split('/(?<!^)(?!$)/', $addr);
|
1303 |
$seed = (int)abs(crc32($addr) / strlen($addr)); # Deterministic seed.
|
1304 |
+
|
1305 |
foreach ($chars as $key => $char) {
|
1306 |
$ord = ord($char);
|
1307 |
# Ignore non-ascii chars.
|
1314 |
else $chars[$key] = '&#'.$ord.';';
|
1315 |
}
|
1316 |
}
|
1317 |
+
|
1318 |
$addr = implode('', $chars);
|
1319 |
$text = implode('', array_slice($chars, 7)); # text without `mailto:`
|
1320 |
$addr = "<a href=\"$addr\">$text</a>";
|
1329 |
# escaped characters and handling code spans.
|
1330 |
#
|
1331 |
$output = '';
|
1332 |
+
|
1333 |
$span_re = '{
|
1334 |
(
|
1335 |
\\\\'.$this->escape_chars_re.'
|
1354 |
|
1355 |
while (1) {
|
1356 |
#
|
1357 |
+
# Each loop iteration seach for either the next tag, the next
|
1358 |
+
# openning code span marker, or the next escaped character.
|
1359 |
# Each token is then passed to handleSpanToken.
|
1360 |
#
|
1361 |
$parts = preg_split($span_re, $str, 2, PREG_SPLIT_DELIM_CAPTURE);
|
1362 |
+
|
1363 |
# Create token from text preceding tag.
|
1364 |
if ($parts[0] != "") {
|
1365 |
$output .= $parts[0];
|
1366 |
}
|
1367 |
+
|
1368 |
# Check if we reach the end.
|
1369 |
if (isset($parts[1])) {
|
1370 |
$output .= $this->handleSpanToken($parts[1], $parts[2]);
|
1374 |
break;
|
1375 |
}
|
1376 |
}
|
1377 |
+
|
1378 |
return $output;
|
1379 |
}
|
1380 |
+
|
1381 |
+
|
1382 |
function handleSpanToken($token, &$str) {
|
1383 |
#
|
1384 |
+
# Handle $token provided by parseSpan by determining its nature and
|
1385 |
# returning the corresponding value that should replace it.
|
1386 |
#
|
1387 |
switch ($token{0}) {
|
1389 |
return $this->hashPart("&#". ord($token{1}). ";");
|
1390 |
case "`":
|
1391 |
# Search for end marker in remaining text.
|
1392 |
+
if (preg_match('/^(.*?[^`])'.preg_quote($token).'(?!`)(.*)$/sm',
|
1393 |
$str, $matches))
|
1394 |
{
|
1395 |
$str = $matches[2];
|
1411 |
}
|
1412 |
|
1413 |
|
1414 |
+
# String length function for detab. `_initDetab` will create a function to
|
1415 |
# hanlde UTF-8 if the default function does not exist.
|
1416 |
var $utf8_strlen = 'mb_strlen';
|
1417 |
+
|
1418 |
function detab($text) {
|
1419 |
#
|
1420 |
# Replace tabs with the appropriate amount of space.
|
1421 |
#
|
1422 |
# For each line we separate the line in blocks delemited by
|
1423 |
+
# tab characters. Then we reconstruct every line by adding the
|
1424 |
# appropriate number of space between each blocks.
|
1425 |
+
|
1426 |
$text = preg_replace_callback('/^.*\t.*$/m',
|
1427 |
array(&$this, '_detab_callback'), $text);
|
1428 |
|
1431 |
function _detab_callback($matches) {
|
1432 |
$line = $matches[0];
|
1433 |
$strlen = $this->utf8_strlen; # strlen function for UTF-8.
|
1434 |
+
|
1435 |
# Split in blocks.
|
1436 |
$blocks = explode("\t", $line);
|
1437 |
# Add each blocks to the line.
|
1439 |
unset($blocks[0]); # Do not add first block twice.
|
1440 |
foreach ($blocks as $block) {
|
1441 |
# Calculate amount of space, insert spaces, insert block.
|
1442 |
+
$amount = $this->tab_width -
|
1443 |
$strlen($line, 'UTF-8') % $this->tab_width;
|
1444 |
$line .= str_repeat(" ", $amount) . $block;
|
1445 |
}
|
1448 |
function _initDetab() {
|
1449 |
#
|
1450 |
# Check for the availability of the function in the `utf8_strlen` property
|
1451 |
+
# (initially `mb_strlen`). If the function is not available, create a
|
1452 |
# function that will loosely count the number of UTF-8 characters with a
|
1453 |
# regular expression.
|
1454 |
#
|
1455 |
if (function_exists($this->utf8_strlen)) return;
|
1456 |
$this->utf8_strlen = create_function('$text', 'return preg_match_all(
|
1457 |
+
"/[\\\\x00-\\\\xBF]|[\\\\xC0-\\\\xFF][\\\\x80-\\\\xBF]*/",
|
1458 |
$text, $m);');
|
1459 |
}
|
1460 |
|
1463 |
#
|
1464 |
# Swap back in all the tags hashed by _HashHTMLBlocks.
|
1465 |
#
|
1466 |
+
return preg_replace_callback('/(.)\x1A[0-9]+\1/',
|
1467 |
array(&$this, '_unhash_callback'), $text);
|
1468 |
}
|
1469 |
function _unhash_callback($matches) {
|
includes/menu-pages/api-ops.inc.php
CHANGED
@@ -31,8 +31,11 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_api_ops"))
|
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">' . "\n";
|
33 |
|
34 |
-
echo '<div
|
35 |
-
|
|
|
|
|
|
|
36 |
|
37 |
echo '<table class="ws-menu-page-table">' . "\n";
|
38 |
echo '<tbody class="ws-menu-page-table-tbody">' . "\n";
|
@@ -983,7 +986,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_api_ops"))
|
|
983 |
|
984 |
echo '<div class="ws-menu-page-hr"></div>' . "\n";
|
985 |
|
986 |
-
echo '<p class="submit"><input type="submit"
|
987 |
|
988 |
echo '</form>' . "\n";
|
989 |
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">' . "\n";
|
33 |
|
34 |
+
echo '<div class="ws-menu-page-toolbox">'."\n";
|
35 |
+
c_ws_plugin__s2member_menu_pages_tb::display ();
|
36 |
+
echo '</div>'."\n";
|
37 |
+
|
38 |
+
echo '<h2>API / Notifications</h2>' . "\n";
|
39 |
|
40 |
echo '<table class="ws-menu-page-table">' . "\n";
|
41 |
echo '<tbody class="ws-menu-page-table-tbody">' . "\n";
|
986 |
|
987 |
echo '<div class="ws-menu-page-hr"></div>' . "\n";
|
988 |
|
989 |
+
echo '<p class="submit"><input type="submit" value="Save All Changes" /></p>' . "\n";
|
990 |
|
991 |
echo '</form>' . "\n";
|
992 |
|
includes/menu-pages/code-samples/jwplayer-v5-standard-mp4.x-php
DELETED
@@ -1,30 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
// Configuration.
|
3 |
-
$s2_jw_config["jwplayer"] = "/jwplayer/"; // Relative URL path to JW Player files directory.
|
4 |
-
$s2_jw_config["mp4_video_file_name"] = "video.mp4"; // Name of your MP4 test file.
|
5 |
-
// Don't edit anything else below unless you know what you're doing.
|
6 |
-
?>
|
7 |
-
|
8 |
-
<div id="jw-container">JW Player® appears here.</div>
|
9 |
-
<script type="text/javascript" src="<?php echo $s2_jw_config["jwplayer"]; ?>jwplayer.js"></script>
|
10 |
-
<script type="text/javascript">
|
11 |
-
jwplayer("jw-container").setup({modes: // JW Player®.
|
12 |
-
[
|
13 |
-
// First try psuedo-streaming with Flash® player.
|
14 |
-
{type: "flash", provider: "http", src: "<?php echo $s2_jw_config["jwplayer"]; ?>player.swf",
|
15 |
-
config: {file: "/wp-content/plugins/s2member-files/s2member-file-inline/<?php echo $s2_jw_config["mp4_video_file_name"]; ?>"}},
|
16 |
-
// Shortcode equivalent: [s2File rewrite="yes" inline="yes" download="<?php echo $s2_jw_config["mp4_video_file_name"]; ?>" /]
|
17 |
-
|
18 |
-
// Else, try an HTML5 video tag.
|
19 |
-
{type: "html5", provider: "video",
|
20 |
-
config: {file: "/wp-content/plugins/s2member-files/s2member-file-inline/<?php echo $s2_jw_config["mp4_video_file_name"]; ?>"}},
|
21 |
-
// Shortcode equivalent: [s2File rewrite="yes" inline="yes" download="<?php echo $s2_jw_config["mp4_video_file_name"]; ?>" /]
|
22 |
-
|
23 |
-
// Else, this is a safe fallback.
|
24 |
-
{type: "download", // Download the file.
|
25 |
-
config: {file: "/wp-content/plugins/s2member-files/s2member-file-inline/<?php echo $s2_jw_config["mp4_video_file_name"]; ?>"}}
|
26 |
-
// Shortcode equivalent: [s2File rewrite="yes" inline="yes" download="<?php echo $s2_jw_config["mp4_video_file_name"]; ?>" /]
|
27 |
-
],
|
28 |
-
/* Set video dimensions. */ width: 480, height: 270
|
29 |
-
});
|
30 |
-
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/menu-pages/code-samples/jwplayer-v5-streaming-mp4-sca.x-php
DELETED
@@ -1,42 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
// Configuration.
|
3 |
-
$s2_jw_config["jwplayer"] = "/jwplayer/"; // Relative URL path to JW Player files directory.
|
4 |
-
$s2_jw_config["mp4_video_file_name"] = "video.mp4"; // Name of your MP4 test file.
|
5 |
-
// Don't edit anything else below unless you know what you're doing.
|
6 |
-
?>
|
7 |
-
|
8 |
-
<div id="jw-container">JW Player® appears here.</div>
|
9 |
-
<script type="text/javascript" src="<?php echo $s2_jw_config["jwplayer"]; ?>jwplayer.js"></script>
|
10 |
-
|
11 |
-
<script type="text/javascript">
|
12 |
-
// The Shortcode here will return a JSON object for JavaScript notation.
|
13 |
-
// A direct URL to the RTMP source; counting the file against the current User in real-time.
|
14 |
-
// API Shortcode `s2File` returns a null object if access is denied to the current User/Member.
|
15 |
-
var mp4 = [s2File download="<?php echo $s2_jw_config["mp4_video_file_name"]; ?>" url_to_storage_source="true" count_against_user="true" get_streamer_json="true" /];
|
16 |
-
</script>
|
17 |
-
|
18 |
-
<script type="text/javascript">
|
19 |
-
if(typeof mp4 === 'object') // `s2File` returns a null object if access is denied to the current User.
|
20 |
-
{
|
21 |
-
jwplayer("jw-container").setup({modes: // JW Player®.
|
22 |
-
[
|
23 |
-
// First try real-time streaming with Flash® player.
|
24 |
-
{type: "flash", provider: "rtmp", src: "<?php echo $s2_jw_config["jwplayer"]; ?>player.swf",
|
25 |
-
config: {streamer: mp4['streamer'], file: mp4['file']}},
|
26 |
-
|
27 |
-
// Else, try an HTML5 video tag.
|
28 |
-
{type: "html5", provider: "video",
|
29 |
-
config: {file: mp4['url']}},
|
30 |
-
|
31 |
-
// Else, this is a safe fallback.
|
32 |
-
{type: "download", // Download the file.
|
33 |
-
config: {file: mp4['url']}}
|
34 |
-
],
|
35 |
-
/* Set video dimensions. */ width: 480, height: 270
|
36 |
-
});
|
37 |
-
}
|
38 |
-
else // Else, `s2File` returned a null object value.
|
39 |
-
{
|
40 |
-
document.write('Sorry, you do NOT have access to this file.');
|
41 |
-
}
|
42 |
-
</script>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/menu-pages/code-samples/jwplayer-v5-streaming-mp4-webm.x-php
DELETED
@@ -1,45 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
// Configuration.
|
3 |
-
$s2_jw_config["jwplayer"] = "/jwplayer/"; // Relative URL path to JW Player files directory.
|
4 |
-
$s2_jw_config["mp4_video_file_name"] = "video.mp4"; // Name of your MP4 test file.
|
5 |
-
$s2_jw_config["webm_video_file_name"] = "video.webm"; // Name of your WEBM test file.
|
6 |
-
// Don't edit anything else below unless you know what you're doing.
|
7 |
-
?>
|
8 |
-
|
9 |
-
<div id="jw-container">JW Player® appears here.</div>
|
10 |
-
<script type="text/javascript" src="<?php echo $s2_jw_config["jwplayer"]; ?>jwplayer.js"></script>
|
11 |
-
|
12 |
-
<?php // A direct URL to the RTMP source; counting the file against the current User in real-time.
|
13 |
-
$mp4_cfg = array ("file_download" => $s2_jw_config["mp4_video_file_name"], "url_to_storage_source" => true, "count_against_user" => true);
|
14 |
-
$webm_cfg = array ("file_download" => $s2_jw_config["webm_video_file_name"], "url_to_storage_source" => true /* Don't count variations. */); ?>
|
15 |
-
|
16 |
-
<?php // API Function `s2member_file_download_url()` returns false if access is denied to the current User.
|
17 |
-
if (($mp4 = s2member_file_download_url ($mp4_cfg, "get-streamer-array"))
|
18 |
-
&& ($webm["url"] = s2member_file_download_url ($webm_cfg))) { ?>
|
19 |
-
|
20 |
-
<script type="text/javascript">
|
21 |
-
jwplayer("jw-container").setup({modes: // JW Player®.
|
22 |
-
[
|
23 |
-
// First try real-time streaming with Flash® player.
|
24 |
-
{type: "flash", provider: "rtmp", src: "<?php echo $s2_jw_config["jwplayer"]; ?>player.swf",
|
25 |
-
config: {streamer: "<?php echo $mp4["streamer"]; ?>", file: "<?php echo $mp4["file"]; ?>"}},
|
26 |
-
|
27 |
-
// Else, try an HTML5 video tag with the `mp4` file.
|
28 |
-
{type: "html5", provider: "video",
|
29 |
-
config: {file: "<?php echo $mp4["url"]; ?>"}},
|
30 |
-
|
31 |
-
// Else, try an HTML5 video tag with a `webm` file.
|
32 |
-
{type: "html5", provider: "video",
|
33 |
-
config: {file: "<?php echo $webm["url"]; ?>"}},
|
34 |
-
|
35 |
-
// Else, this is a safe fallback.
|
36 |
-
{type: "download", // Download the file.
|
37 |
-
config: {file: "<?php echo $mp4["url"]; ?>"}}
|
38 |
-
],
|
39 |
-
/* Set video dimensions. */ width: 480, height: 270
|
40 |
-
});
|
41 |
-
</script>
|
42 |
-
|
43 |
-
<?php } else /* Access is denied to the current User. */ { ?>
|
44 |
-
Sorry, you do NOT have access to this file.
|
45 |
-
<?php } ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/menu-pages/code-samples/jwplayer-v5-streaming-mp4.x-php
DELETED
@@ -1,38 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
// Configuration.
|
3 |
-
$s2_jw_config["jwplayer"] = "/jwplayer/"; // Relative URL path to JW Player files directory.
|
4 |
-
$s2_jw_config["mp4_video_file_name"] = "video.mp4"; // Name of your MP4 test file.
|
5 |
-
// Don't edit anything else below unless you know what you're doing.
|
6 |
-
?>
|
7 |
-
|
8 |
-
<div id="jw-container">JW Player® appears here.</div>
|
9 |
-
<script type="text/javascript" src="<?php echo $s2_jw_config["jwplayer"]; ?>jwplayer.js"></script>
|
10 |
-
|
11 |
-
<?php // A direct URL to the RTMP source; counting the file against the current User in real-time.
|
12 |
-
$cfg = array ("file_download" => $s2_jw_config["mp4_video_file_name"], "url_to_storage_source" => true, "count_against_user" => true); ?>
|
13 |
-
|
14 |
-
<?php // API Function `s2member_file_download_url()` returns false if access is denied to the current User.
|
15 |
-
if (($mp4 = s2member_file_download_url ($cfg, "get-streamer-array"))) { ?>
|
16 |
-
|
17 |
-
<script type="text/javascript">
|
18 |
-
jwplayer("jw-container").setup({modes: // JW Player®.
|
19 |
-
[
|
20 |
-
// First try real-time streaming with Flash® player.
|
21 |
-
{type: "flash", provider: "rtmp", src: "<?php echo $s2_jw_config["jwplayer"]; ?>player.swf",
|
22 |
-
config: {streamer: "<?php echo $mp4["streamer"]; ?>", file: "<?php echo $mp4["file"]; ?>"}},
|
23 |
-
|
24 |
-
// Else, try an HTML5 video tag.
|
25 |
-
{type: "html5", provider: "video",
|
26 |
-
config: {file: "<?php echo $mp4["url"]; ?>"}},
|
27 |
-
|
28 |
-
// Else, this is a safe fallback.
|
29 |
-
{type: "download", // Download the file.
|
30 |
-
config: {file: "<?php echo $mp4["url"]; ?>"}}
|
31 |
-
],
|
32 |
-
/* Set video dimensions. */ width: 480, height: 270
|
33 |
-
});
|
34 |
-
</script>
|
35 |
-
|
36 |
-
<?php } else /* Access is denied to the current User. */ { ?>
|
37 |
-
Sorry, you do NOT have access to this file.
|
38 |
-
<?php } ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/menu-pages/down-ops.inc.php
CHANGED
@@ -31,8 +31,11 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
|
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">'."\n";
|
33 |
|
34 |
-
echo '<div
|
35 |
-
|
|
|
|
|
|
|
36 |
|
37 |
echo '<table class="ws-menu-page-table">'."\n";
|
38 |
echo '<tbody class="ws-menu-page-table-tbody">'."\n";
|
@@ -248,7 +251,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
|
|
248 |
{
|
249 |
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_before_amazon_s3", get_defined_vars());
|
250 |
|
251 |
-
echo '<div class="ws-menu-page-group" title="Amazon S3/CDN Storage Option"'.((c_ws_plugin__s2member_menu_pages::$pre_display_errors["cf_files_auto_configure_distros"]) ? ' default-state="open"' : '').'>'."\n";
|
252 |
|
253 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-amazon-s3-section">'."\n";
|
254 |
echo '<h3>Amazon S3/CDN Storage & Delivery (optional)</h3>'."\n";
|
@@ -335,7 +338,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
|
|
335 |
{
|
336 |
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_before_amazon_cf", get_defined_vars());
|
337 |
|
338 |
-
echo '<div class="ws-menu-page-group" title="Amazon S3/CloudFront CDN Storage Option"'.((c_ws_plugin__s2member_menu_pages::$pre_display_errors["cf_files_auto_configure_distros"]) ? ' default-state="open"' : '').'>'."\n";
|
339 |
|
340 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-amazon-cf-section">'."\n";
|
341 |
echo '<h3>Amazon S3/CloudFront CDN Storage & Delivery (optional)</h3>'."\n";
|
@@ -395,7 +398,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
|
|
395 |
|
396 |
echo '<td>'."\n";
|
397 |
echo '<input type="hidden" name="ws_plugin__s2member_amazon_cf_files_private_key" id="ws-plugin--s2member-amazon-cf-files-private-key" value="'.format_to_edit($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_cf_files_private_key"]).'" data-s-prev-config-value="'.format_to_edit($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_cf_files_private_key"]).'" />'."\n";
|
398 |
-
echo '<textarea name="ws_plugin__s2member_amazon_cf_files_private_key_entry" id="ws-plugin--s2member-amazon-cf-files-private-key-entry" rows="3" wrap="off" spellcheck="false"
|
399 |
echo 'See: <code>Amazon Web Services Account -› Security Credentials -› Key Pairs</code>.<br />'."\n";
|
400 |
echo '<em>* Note, s2Member needs your <strong>Private Key file</strong>, NOT your Public Key file.</em>'."\n";
|
401 |
echo '</td>'."\n";
|
@@ -413,7 +416,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
|
|
413 |
echo '<tr>'."\n";
|
414 |
|
415 |
echo '<td>'."\n";
|
416 |
-
echo '<input type="checkbox" name="ws_plugin__s2member_amazon_cf_files_auto_configure_distros" id="ws-plugin--s2member-amazon-cf-files-auto-configure-distros" value="'.esc_attr(wp_create_nonce("ws-plugin--s2member-amazon-cf-files-auto-configure-distros")).'"'.((c_ws_plugin__s2member_menu_pages::$pre_display_errors["cf_files_auto_configure_distros"]) ? ' checked="checked"' : '').' /> <label for="ws-plugin--s2member-amazon-cf-files-auto-configure-distros"><strong>Yes</strong>, automatically configure my Amazon CloudFront Distributions & Amazon S3 ACLs for me.</label><br />'."\n";
|
417 |
echo '<em>s2Member will auto-configure and/or delete & re-configure your Amazon CloudFront Distributions for you.</em>'."\n";
|
418 |
echo '</td>'."\n";
|
419 |
|
@@ -421,7 +424,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
|
|
421 |
echo '<tr>'."\n";
|
422 |
|
423 |
echo '<td>'."\n";
|
424 |
-
echo '<input type="checkbox" name="ws_plugin__s2member_amazon_cf_files_auto_configure_distros_w_cnames" id="ws-plugin--s2member-amazon-cf-files-auto-configure-distros-w-cnames" value="'.esc_attr(wp_create_nonce("ws-plugin--s2member-amazon-cf-files-auto-configure-distros-w-cnames")).'"'.((c_ws_plugin__s2member_menu_pages::$pre_display_errors["cf_files_auto_configure_distros"] && ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_cf_files_distro_downloads_cname"] || $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_cf_files_distro_streaming_cname"])) ? ' checked="checked"' : '').' /> <label for="ws-plugin--s2member-amazon-cf-files-auto-configure-distros-w-cnames"><strong>Yes</strong>, I want s2Member to auto-configure using custom CNAMES that I\'ll setup.</label><br />'."\n";
|
425 |
echo '<em>* Optional, do NOT check this box unless you know what you\'re doing. This requires DNS changes.</em>'."\n";
|
426 |
echo '</td>'."\n";
|
427 |
|
@@ -486,7 +489,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
|
|
486 |
|
487 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-rtmp-streaming-section">'."\n";
|
488 |
echo '<h3>JW Player v6 & RTMP Protocol Examples</h3>'."\n";
|
489 |
-
echo '<a href="http://www.longtailvideo.com/players/" target="_blank"><img src="'.esc_attr($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]).'/images/jwplayer-logo.png" class="ws-menu-page-right" style="width:179px; height:58px; border:0;" alt="." /></a>'."\n";
|
490 |
echo '<p>While it is possible to serve audio/video files protected by s2Member, without needing to integrate Amazon S3 or CloudFront; we DO highly recommend that you integrate both Amazon S3 and Amazon CloudFront in order to maximize speed and compatibility across various viewing platforms. That being said, there are code samples below that will serve audio/video files both with and without Amazon S3/CloudFront. You can also check the <a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value("Forum URI")).'" target="_blank" rel="external">s2Member Support Forums</a> for tips/tricks if you like.</p>'."\n";
|
491 |
echo '<p><strong>One of the great things about Amazon CloudFront</strong>, is its ability to <strong>stream/seek media files</strong> in the truest sense of the word. For sites delivering protected <em>FLV/MP4/OGG/WEBM</em> and other streaming audio/video file types over the <em>RTMP</em> protocol, Amazon CloudFront is our recommendation. Once you\'ve successfully configured s2Member to use both Amazon S3 and Amazon CloudFront together, please review the code samples below. s2Member can automatically serve your protected files over the <em>RTMP</em> protocol using an Amazon CloudFront Streaming Distribution.</p>'."\n";
|
492 |
echo '<p><strong>See also:</strong> This KB article: <a href="http://www.s2member.com/kb/jwplayer-s2stream-shortcodes/" target="_blank" rel="external">JW Player w/ <code>[s2Stream /]</code> Shortcodes</a>.</p>'."\n";
|
@@ -543,43 +546,6 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
|
|
543 |
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_after_rtmp_streaming", get_defined_vars());
|
544 |
}
|
545 |
|
546 |
-
if(apply_filters("ws_plugin__s2member_during_down_ops_page_during_left_sections_display_rtmp_streaming", true, get_defined_vars()))
|
547 |
-
{
|
548 |
-
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_before_rtmp_streaming", get_defined_vars());
|
549 |
-
|
550 |
-
echo '<div class="ws-menu-page-group" title="JW Player v5 & RTMP Protocol Examples (Deprecated)">'."\n";
|
551 |
-
|
552 |
-
echo '<div class="ws-menu-page-section ws-plugin--s2member-rtmp-streaming-section">'."\n";
|
553 |
-
echo '<h3>JW Player v5 & RTMP Protocol Examples (Deprecated)</h3>'."\n";
|
554 |
-
echo '<a href="http://www.longtailvideo.com/players/" target="_blank"><img src="'.esc_attr($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]).'/images/jwplayer-logo.png" class="ws-menu-page-right" style="width:179px; height:58px; border:0;" alt="." /></a>'."\n";
|
555 |
-
echo '<p>While it is possible to serve audio/video files protected by s2Member, without needing to integrate Amazon S3 or CloudFront; we DO highly recommend that you integrate both Amazon S3 and Amazon CloudFront in order to maximize speed and compatibility across various viewing platforms. That being said, there are code samples below that will serve audio/video files both with and without Amazon S3/CloudFront. You can also check the <a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value("Forum URI")).'" target="_blank" rel="external">s2Member Support Forums</a> for tips/tricks if you like.</p>'."\n";
|
556 |
-
echo '<p><strong>One of the great things about Amazon CloudFront</strong>, is its ability to <strong>stream/seek media files</strong> in the truest sense of the word. For sites delivering protected <em>FLV/MP4/OGG/WEBM</em> and other streaming audio/video file types over the <em>RTMP</em> protocol, Amazon CloudFront is our recommendation. Once you\'ve successfully configured s2Member to use both Amazon S3 and Amazon CloudFront together, please review the code samples below. s2Member can automatically serve your protected files over the <em>RTMP</em> protocol using an Amazon CloudFront Streaming Distribution.</p>'."\n";
|
557 |
-
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_during_rtmp_streaming", get_defined_vars());
|
558 |
-
|
559 |
-
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
560 |
-
|
561 |
-
echo '<h3>PHP Code Examples (for more advanced integrations)</h3>'."\n";
|
562 |
-
echo '<p>These examples exist from past versions of s2Member. JW Player v5 is now outdated by JW Player v6 (recommended).</p>'."\n";
|
563 |
-
|
564 |
-
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-v5-standard-mp4\').toggle(); return false;" class="ws-dotted-link">JW Player (MP4 file, via Rewrite URLs. Amazon S3/CloudFront NOT required)</a></p>'."\n";
|
565 |
-
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-v5-standard-mp4" style="display:none;">Download <a href="http://www.longtailvideo.com/players/" target="_blank" rel="external">JW Player here</a>, and upload <code>/jwplayer/</code> to your website\'s root directory.<br />This does NOT require s2Member to be integrated with Amazon S3/CloudFront.<br />Also see: <code>s2Member -› Download Options -› Advanced Mod Rewrite Linkage</code>.<br /><br />'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/jwplayer-v5-standard-mp4.x-php")).'</p>'."\n";
|
566 |
-
|
567 |
-
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-v5-streaming-mp4\').toggle(); return false;" class="ws-dotted-link">JW Player (RTMP streaming MP4, via s2Member\'s Amazon S3/CloudFront integration)</a></p>'."\n";
|
568 |
-
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-v5-streaming-mp4" style="display:none;">Download <a href="http://www.longtailvideo.com/players/" target="_blank" rel="external">JW Player here</a>, and upload <code>/jwplayer/</code> to your website\'s root directory.<br />This requires s2Member to be integrated with Amazon S3/CloudFront.<br />Also see: <a href="http://www.s2member.com/codex/stable/s2member/api_functions/package-summary/" target="_blank" rel="external">s2Member Codex -› API Functions</a>.<br /><br />'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/jwplayer-v5-streaming-mp4.x-php")).'</p>'."\n";
|
569 |
-
|
570 |
-
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-v5-streaming-mp4-sca\').toggle(); return false;" class="ws-dotted-link">JW Player (RTMP streaming MP4, via s2Member\'s JSON/Shortcode alternative)</a></p>'."\n";
|
571 |
-
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-v5-streaming-mp4-sca" style="display:none;">Download <a href="http://www.longtailvideo.com/players/" target="_blank" rel="external">JW Player here</a>, and upload <code>/jwplayer/</code> to your website\'s root directory.<br />This requires s2Member to be integrated with Amazon S3/CloudFront.<br />Also see: <a href="http://www.s2member.com/codex/stable/s2member/api_functions/package-summary/" target="_blank" rel="external">s2Member Codex -› API Functions</a>.<br /><br />'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/jwplayer-v5-streaming-mp4-sca.x-php")).'</p>'."\n";
|
572 |
-
|
573 |
-
echo '<p style="font-size:110%;"><a href="#" onclick="jQuery(\'p#ws-plugin--s2member-rtmp-streaming-details-jwplayer-v5-streaming-mp4-webm\').toggle(); return false;" class="ws-dotted-link">JW Player (RTMP streaming MP4, advanced w/ multiple fallbacks)</a></p>'."\n";
|
574 |
-
echo '<p id="ws-plugin--s2member-rtmp-streaming-details-jwplayer-v5-streaming-mp4-webm" style="display:none;">Download <a href="http://www.longtailvideo.com/players/" target="_blank" rel="external">JW Player here</a>, and upload <code>/jwplayer/</code> to your website\'s root directory.<br />This requires s2Member to be integrated with Amazon S3/CloudFront.<br />Also see: <a href="http://www.s2member.com/codex/stable/s2member/api_functions/package-summary/" target="_blank" rel="external">s2Member Codex -› API Functions</a>.<br /><br />'.c_ws_plugin__s2member_utils_strings::highlight_php(file_get_contents(dirname(__FILE__)."/code-samples/jwplayer-v5-streaming-mp4-webm.x-php")).'</p>'."\n";
|
575 |
-
|
576 |
-
echo '</div>'."\n";
|
577 |
-
|
578 |
-
echo '</div>'."\n";
|
579 |
-
|
580 |
-
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_after_rtmp_streaming", get_defined_vars());
|
581 |
-
}
|
582 |
-
|
583 |
if(apply_filters("ws_plugin__s2member_during_down_ops_page_during_left_sections_display_rewrite_linkage", true, get_defined_vars()))
|
584 |
{
|
585 |
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_before_rewrite_linkage", get_defined_vars());
|
@@ -714,7 +680,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
|
|
714 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
715 |
echo '<p style="margin:0; font-weight:bold;">s2Member automatically adds this to your <code>.htaccess</code> file upon activation of the plugin.</p>'."\n";
|
716 |
echo '<p style="margin:0;">The following <code>mod_rewrite</code> rule goes inside this file: <code>'.esc_html(c_ws_plugin__s2member_utils_dirs::doc_root_path(ABSPATH.".htaccess")).'</code></p>'."\n";
|
717 |
-
echo '<pre><code>'.esc_html(trim(c_ws_plugin__s2member_utilities::evl(file_get_contents($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_no_gzip_htaccess"])))).'</code></pre>';
|
718 |
echo '<p><strong>* Tip:</strong> this covers all types of integration with s2Member File Downloads, even if you\'re using s2Member\'s Advanced Mod Rewrite Linkage.</p>'."\n";
|
719 |
echo '</div>'."\n";
|
720 |
|
@@ -763,7 +729,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_down_ops"))
|
|
763 |
|
764 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
765 |
|
766 |
-
echo '<p class="submit"><input type="submit"
|
767 |
|
768 |
echo '</form>'."\n";
|
769 |
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">'."\n";
|
33 |
|
34 |
+
echo '<div class="ws-menu-page-toolbox">'."\n";
|
35 |
+
c_ws_plugin__s2member_menu_pages_tb::display ();
|
36 |
+
echo '</div>'."\n";
|
37 |
+
|
38 |
+
echo '<h2>Download Options</h2>'."\n";
|
39 |
|
40 |
echo '<table class="ws-menu-page-table">'."\n";
|
41 |
echo '<tbody class="ws-menu-page-table-tbody">'."\n";
|
251 |
{
|
252 |
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_before_amazon_s3", get_defined_vars());
|
253 |
|
254 |
+
echo '<div class="ws-menu-page-group" title="Amazon S3/CDN Storage Option"'.((!empty(c_ws_plugin__s2member_menu_pages::$pre_display_errors["cf_files_auto_configure_distros"])) ? ' default-state="open"' : '').'>'."\n";
|
255 |
|
256 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-amazon-s3-section">'."\n";
|
257 |
echo '<h3>Amazon S3/CDN Storage & Delivery (optional)</h3>'."\n";
|
338 |
{
|
339 |
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_before_amazon_cf", get_defined_vars());
|
340 |
|
341 |
+
echo '<div class="ws-menu-page-group" title="Amazon S3/CloudFront CDN Storage Option"'.((!empty(c_ws_plugin__s2member_menu_pages::$pre_display_errors["cf_files_auto_configure_distros"])) ? ' default-state="open"' : '').'>'."\n";
|
342 |
|
343 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-amazon-cf-section">'."\n";
|
344 |
echo '<h3>Amazon S3/CloudFront CDN Storage & Delivery (optional)</h3>'."\n";
|
398 |
|
399 |
echo '<td>'."\n";
|
400 |
echo '<input type="hidden" name="ws_plugin__s2member_amazon_cf_files_private_key" id="ws-plugin--s2member-amazon-cf-files-private-key" value="'.format_to_edit($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_cf_files_private_key"]).'" data-s-prev-config-value="'.format_to_edit($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_cf_files_private_key"]).'" />'."\n";
|
401 |
+
echo '<textarea name="ws_plugin__s2member_amazon_cf_files_private_key_entry" id="ws-plugin--s2member-amazon-cf-files-private-key-entry" rows="3" wrap="off" spellcheck="false" class="monospace">'.format_to_edit($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_cf_files_private_key"]).'</textarea><br />'."\n";
|
402 |
echo 'See: <code>Amazon Web Services Account -› Security Credentials -› Key Pairs</code>.<br />'."\n";
|
403 |
echo '<em>* Note, s2Member needs your <strong>Private Key file</strong>, NOT your Public Key file.</em>'."\n";
|
404 |
echo '</td>'."\n";
|
416 |
echo '<tr>'."\n";
|
417 |
|
418 |
echo '<td>'."\n";
|
419 |
+
echo '<input type="checkbox" name="ws_plugin__s2member_amazon_cf_files_auto_configure_distros" id="ws-plugin--s2member-amazon-cf-files-auto-configure-distros" value="'.esc_attr(wp_create_nonce("ws-plugin--s2member-amazon-cf-files-auto-configure-distros")).'"'.((!empty(c_ws_plugin__s2member_menu_pages::$pre_display_errors["cf_files_auto_configure_distros"])) ? ' checked="checked"' : '').' /> <label for="ws-plugin--s2member-amazon-cf-files-auto-configure-distros"><strong>Yes</strong>, automatically configure my Amazon CloudFront Distributions & Amazon S3 ACLs for me.</label><br />'."\n";
|
420 |
echo '<em>s2Member will auto-configure and/or delete & re-configure your Amazon CloudFront Distributions for you.</em>'."\n";
|
421 |
echo '</td>'."\n";
|
422 |
|
424 |
echo '<tr>'."\n";
|
425 |
|
426 |
echo '<td>'."\n";
|
427 |
+
echo '<input type="checkbox" name="ws_plugin__s2member_amazon_cf_files_auto_configure_distros_w_cnames" id="ws-plugin--s2member-amazon-cf-files-auto-configure-distros-w-cnames" value="'.esc_attr(wp_create_nonce("ws-plugin--s2member-amazon-cf-files-auto-configure-distros-w-cnames")).'"'.((!empty(c_ws_plugin__s2member_menu_pages::$pre_display_errors["cf_files_auto_configure_distros"]) && ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_cf_files_distro_downloads_cname"] || $GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["amazon_cf_files_distro_streaming_cname"])) ? ' checked="checked"' : '').' /> <label for="ws-plugin--s2member-amazon-cf-files-auto-configure-distros-w-cnames"><strong>Yes</strong>, I want s2Member to auto-configure using custom CNAMES that I\'ll setup.</label><br />'."\n";
|
428 |
echo '<em>* Optional, do NOT check this box unless you know what you\'re doing. This requires DNS changes.</em>'."\n";
|
429 |
echo '</td>'."\n";
|
430 |
|
489 |
|
490 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-rtmp-streaming-section">'."\n";
|
491 |
echo '<h3>JW Player v6 & RTMP Protocol Examples</h3>'."\n";
|
492 |
+
echo '<a href="http://www.longtailvideo.com/players/" target="_blank"><img src="'.esc_attr($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]).'/images/jwplayer-logo.png" class="ws-menu-page-right" style="width:179px; height:58px; border:0; border-radius:3px; background:#FFFFFF; padding:15px;" alt="." /></a>'."\n";
|
493 |
echo '<p>While it is possible to serve audio/video files protected by s2Member, without needing to integrate Amazon S3 or CloudFront; we DO highly recommend that you integrate both Amazon S3 and Amazon CloudFront in order to maximize speed and compatibility across various viewing platforms. That being said, there are code samples below that will serve audio/video files both with and without Amazon S3/CloudFront. You can also check the <a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value("Forum URI")).'" target="_blank" rel="external">s2Member Support Forums</a> for tips/tricks if you like.</p>'."\n";
|
494 |
echo '<p><strong>One of the great things about Amazon CloudFront</strong>, is its ability to <strong>stream/seek media files</strong> in the truest sense of the word. For sites delivering protected <em>FLV/MP4/OGG/WEBM</em> and other streaming audio/video file types over the <em>RTMP</em> protocol, Amazon CloudFront is our recommendation. Once you\'ve successfully configured s2Member to use both Amazon S3 and Amazon CloudFront together, please review the code samples below. s2Member can automatically serve your protected files over the <em>RTMP</em> protocol using an Amazon CloudFront Streaming Distribution.</p>'."\n";
|
495 |
echo '<p><strong>See also:</strong> This KB article: <a href="http://www.s2member.com/kb/jwplayer-s2stream-shortcodes/" target="_blank" rel="external">JW Player w/ <code>[s2Stream /]</code> Shortcodes</a>.</p>'."\n";
|
546 |
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_after_rtmp_streaming", get_defined_vars());
|
547 |
}
|
548 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
549 |
if(apply_filters("ws_plugin__s2member_during_down_ops_page_during_left_sections_display_rewrite_linkage", true, get_defined_vars()))
|
550 |
{
|
551 |
do_action("ws_plugin__s2member_during_down_ops_page_during_left_sections_before_rewrite_linkage", get_defined_vars());
|
680 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
681 |
echo '<p style="margin:0; font-weight:bold;">s2Member automatically adds this to your <code>.htaccess</code> file upon activation of the plugin.</p>'."\n";
|
682 |
echo '<p style="margin:0;">The following <code>mod_rewrite</code> rule goes inside this file: <code>'.esc_html(c_ws_plugin__s2member_utils_dirs::doc_root_path(ABSPATH.".htaccess")).'</code></p>'."\n";
|
683 |
+
echo '<pre class="code"><code>'.esc_html(trim(c_ws_plugin__s2member_utilities::evl(file_get_contents($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_no_gzip_htaccess"])))).'</code></pre>';
|
684 |
echo '<p><strong>* Tip:</strong> this covers all types of integration with s2Member File Downloads, even if you\'re using s2Member\'s Advanced Mod Rewrite Linkage.</p>'."\n";
|
685 |
echo '</div>'."\n";
|
686 |
|
729 |
|
730 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
731 |
|
732 |
+
echo '<p class="submit"><input type="submit" value="Save All Changes" /></p>'."\n";
|
733 |
|
734 |
echo '</form>'."\n";
|
735 |
|
includes/menu-pages/els-ops.inc.php
CHANGED
@@ -31,8 +31,11 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_els_ops"))
|
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">'."\n";
|
33 |
|
34 |
-
echo '<div
|
35 |
-
|
|
|
|
|
|
|
36 |
|
37 |
echo '<table class="ws-menu-page-table">'."\n";
|
38 |
echo '<tbody class="ws-menu-page-table-tbody">'."\n";
|
@@ -105,7 +108,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_els_ops"))
|
|
105 |
|
106 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
107 |
|
108 |
-
echo '<div class="
|
109 |
echo '<p style="font-size:110%; margin-top:0;"><span>We HIGHLY recommend that you enable logging during your initial testing phase. Logs produce lots of useful details that can help in debugging. Logs can help you find issues in your configuration and/or problems during MailChimp processing. See: <a href="'.esc_attr(admin_url("/admin.php?page=ws-plugin--s2member-logs")).'">Log Files (Debug)</a>.</span></p>'."\n";
|
110 |
echo '<p style="font-size:110%; margin-bottom:0;"><span class="ws-menu-page-error">However, it is VERY IMPORTANT to disable logging once you go live. Log files may contain personally identifiable information, credit card numbers, secret API credentials, passwords and/or other sensitive information. We STRONGLY suggest that logging be disabled on a live site (for security reasons).</span></p>'."\n";
|
111 |
echo '</div>'."\n";
|
@@ -124,7 +127,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_els_ops"))
|
|
124 |
echo '<div class="ws-menu-page-group" title="AWeber Integration">'."\n";
|
125 |
|
126 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-aweber-section">'."\n";
|
127 |
-
echo '<a href="http://www.s2member.com/aweber" target="_blank"><img src="'.esc_attr($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]).'/images/aweber-logo.png" class="ws-menu-page-right" style="width:125px; height:125px; border:0;" alt="." /></a>'."\n";
|
128 |
echo '<h3>AWeber List Server Integration (optional)</h3>'."\n";
|
129 |
echo '<p>s2Member can be integrated with AWeber. AWeber is an email marketing service. Whether you\'re looking to get your first email campaign off the ground, or you\'re a seasoned veteran who wants to dig into advanced tools like detailed email web analytics, activity based segmentation, geo-targeting and broadcast split-testing, AWeber\'s got just what you need to make email marketing work for you.</p>'."\n";
|
130 |
echo '<p>You can have your Members automatically subscribed to your AWeber marketing lists <em>(e.g. newsletters / auto-responders)</em>. You\'ll need an <a href="http://www.s2member.com/aweber" target="_blank" rel="external">AWeber account</a> and your <a href="#" onclick="alert(\'To obtain your AWeber List ID(s), log into your AWeber account. Click on the Lists tab. On that page you\\\'ll find a Unique List ID associated with each of your lists. AWeber sometimes refers to this as a List Name instead of a List ID.\'); return false;">AWeber List IDs</a>. You will ALSO need to configure a <a href="http://www.s2member.com/kb/aweber-email-parser-for-s2member/" target="_blank" rel="external">Custom Email Parser</a> inside your AWeber account.</p>'."\n";
|
@@ -162,7 +165,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_els_ops"))
|
|
162 |
|
163 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
164 |
|
165 |
-
echo '<div class="
|
166 |
echo '<p style="font-size:110%; margin-top:0;"><span>We HIGHLY recommend that you enable logging during your initial testing phase. Logs produce lots of useful details that can help in debugging. Logs can help you find issues in your configuration and/or problems during AWeber processing. See: <a href="'.esc_attr(admin_url("/admin.php?page=ws-plugin--s2member-logs")).'">Log Files (Debug)</a>.</span></p>'."\n";
|
167 |
echo '<p style="font-size:110%; margin-bottom:0;"><span class="ws-menu-page-error">However, it is VERY IMPORTANT to disable logging once you go live. Log files may contain personally identifiable information, credit card numbers, secret API credentials, passwords and/or other sensitive information. We STRONGLY suggest that logging be disabled on a live site (for security reasons).</span></p>'."\n";
|
168 |
echo '</div>'."\n";
|
@@ -321,7 +324,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_els_ops"))
|
|
321 |
|
322 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
323 |
|
324 |
-
echo '<p class="submit"><input type="submit"
|
325 |
|
326 |
echo '</form>'."\n";
|
327 |
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">'."\n";
|
33 |
|
34 |
+
echo '<div class="ws-menu-page-toolbox">'."\n";
|
35 |
+
c_ws_plugin__s2member_menu_pages_tb::display ();
|
36 |
+
echo '</div>'."\n";
|
37 |
+
|
38 |
+
echo '<h2>API / List Servers</h2>'."\n";
|
39 |
|
40 |
echo '<table class="ws-menu-page-table">'."\n";
|
41 |
echo '<tbody class="ws-menu-page-table-tbody">'."\n";
|
108 |
|
109 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
110 |
|
111 |
+
echo '<div class="info" style="margin-bottom:0;">'."\n";
|
112 |
echo '<p style="font-size:110%; margin-top:0;"><span>We HIGHLY recommend that you enable logging during your initial testing phase. Logs produce lots of useful details that can help in debugging. Logs can help you find issues in your configuration and/or problems during MailChimp processing. See: <a href="'.esc_attr(admin_url("/admin.php?page=ws-plugin--s2member-logs")).'">Log Files (Debug)</a>.</span></p>'."\n";
|
113 |
echo '<p style="font-size:110%; margin-bottom:0;"><span class="ws-menu-page-error">However, it is VERY IMPORTANT to disable logging once you go live. Log files may contain personally identifiable information, credit card numbers, secret API credentials, passwords and/or other sensitive information. We STRONGLY suggest that logging be disabled on a live site (for security reasons).</span></p>'."\n";
|
114 |
echo '</div>'."\n";
|
127 |
echo '<div class="ws-menu-page-group" title="AWeber Integration">'."\n";
|
128 |
|
129 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-aweber-section">'."\n";
|
130 |
+
echo '<a href="http://www.s2member.com/aweber" target="_blank"><img src="'.esc_attr($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]).'/images/aweber-logo.png" class="ws-menu-page-right screenshot" style="width:125px; height:125px; border:0;" alt="." /></a>'."\n";
|
131 |
echo '<h3>AWeber List Server Integration (optional)</h3>'."\n";
|
132 |
echo '<p>s2Member can be integrated with AWeber. AWeber is an email marketing service. Whether you\'re looking to get your first email campaign off the ground, or you\'re a seasoned veteran who wants to dig into advanced tools like detailed email web analytics, activity based segmentation, geo-targeting and broadcast split-testing, AWeber\'s got just what you need to make email marketing work for you.</p>'."\n";
|
133 |
echo '<p>You can have your Members automatically subscribed to your AWeber marketing lists <em>(e.g. newsletters / auto-responders)</em>. You\'ll need an <a href="http://www.s2member.com/aweber" target="_blank" rel="external">AWeber account</a> and your <a href="#" onclick="alert(\'To obtain your AWeber List ID(s), log into your AWeber account. Click on the Lists tab. On that page you\\\'ll find a Unique List ID associated with each of your lists. AWeber sometimes refers to this as a List Name instead of a List ID.\'); return false;">AWeber List IDs</a>. You will ALSO need to configure a <a href="http://www.s2member.com/kb/aweber-email-parser-for-s2member/" target="_blank" rel="external">Custom Email Parser</a> inside your AWeber account.</p>'."\n";
|
165 |
|
166 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
167 |
|
168 |
+
echo '<div class="info" style="margin-bottom:0;">'."\n";
|
169 |
echo '<p style="font-size:110%; margin-top:0;"><span>We HIGHLY recommend that you enable logging during your initial testing phase. Logs produce lots of useful details that can help in debugging. Logs can help you find issues in your configuration and/or problems during AWeber processing. See: <a href="'.esc_attr(admin_url("/admin.php?page=ws-plugin--s2member-logs")).'">Log Files (Debug)</a>.</span></p>'."\n";
|
170 |
echo '<p style="font-size:110%; margin-bottom:0;"><span class="ws-menu-page-error">However, it is VERY IMPORTANT to disable logging once you go live. Log files may contain personally identifiable information, credit card numbers, secret API credentials, passwords and/or other sensitive information. We STRONGLY suggest that logging be disabled on a live site (for security reasons).</span></p>'."\n";
|
171 |
echo '</div>'."\n";
|
324 |
|
325 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
326 |
|
327 |
+
echo '<p class="submit"><input type="submit" value="Save All Changes" /></p>'."\n";
|
328 |
|
329 |
echo '</form>'."\n";
|
330 |
|
includes/menu-pages/gen-ops.inc.php
CHANGED
@@ -31,8 +31,11 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_gen_ops"))
|
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">' . "\n";
|
33 |
|
34 |
-
echo '<div
|
35 |
-
|
|
|
|
|
|
|
36 |
|
37 |
echo '<table class="ws-menu-page-table">' . "\n";
|
38 |
echo '<tbody class="ws-menu-page-table-tbody">' . "\n";
|
@@ -197,7 +200,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_gen_ops"))
|
|
197 |
echo '<tr>' . "\n";
|
198 |
|
199 |
echo '<td>' . "\n";
|
200 |
-
echo '<textarea name="ws_plugin__s2member_wp_footer_code" id="ws-plugin--s2member-wp-footer-code" rows="8" wrap="off" spellcheck="false"
|
201 |
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";
|
202 |
echo '</td>' . "\n";
|
203 |
|
@@ -1348,10 +1351,10 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_gen_ops"))
|
|
1348 |
echo '<div class="ws-menu-page-hr"></div>' . "\n";
|
1349 |
|
1350 |
echo '<p><strong>Shortcode (copy/paste)</strong>, for an Inline Profile Modification Form:<br />' . "\n";
|
1351 |
-
echo '<p><input type="text" autocomplete="off" value="' . format_to_edit ('[s2Member-Profile /]') . '"
|
1352 |
|
1353 |
echo '<p style="margin-top:20px;"><strong>Stand-Alone (copy/paste)</strong>, for popup window:</p>' . "\n";
|
1354 |
-
echo '<p><input type="text" autocomplete="off" 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.x-php"))) . '"
|
1355 |
echo '</div>' . "\n";
|
1356 |
|
1357 |
echo '</div>' . "\n";
|
@@ -1421,7 +1424,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_gen_ops"))
|
|
1421 |
|
1422 |
echo '<div class="ws-menu-page-hr"></div>' . "\n";
|
1423 |
|
1424 |
-
echo '<p class="submit"><input type="submit"
|
1425 |
|
1426 |
echo '</form>' . "\n";
|
1427 |
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">' . "\n";
|
33 |
|
34 |
+
echo '<div class="ws-menu-page-toolbox">'."\n";
|
35 |
+
c_ws_plugin__s2member_menu_pages_tb::display ();
|
36 |
+
echo '</div>'."\n";
|
37 |
+
|
38 |
+
echo '<h2>General Options</h2>' . "\n";
|
39 |
|
40 |
echo '<table class="ws-menu-page-table">' . "\n";
|
41 |
echo '<tbody class="ws-menu-page-table-tbody">' . "\n";
|
200 |
echo '<tr>' . "\n";
|
201 |
|
202 |
echo '<td>' . "\n";
|
203 |
+
echo '<textarea name="ws_plugin__s2member_wp_footer_code" id="ws-plugin--s2member-wp-footer-code" rows="8" wrap="off" spellcheck="false" class="monospace">' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["wp_footer_code"]) . '</textarea><br />' . "\n";
|
204 |
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";
|
205 |
echo '</td>' . "\n";
|
206 |
|
1351 |
echo '<div class="ws-menu-page-hr"></div>' . "\n";
|
1352 |
|
1353 |
echo '<p><strong>Shortcode (copy/paste)</strong>, for an Inline Profile Modification Form:<br />' . "\n";
|
1354 |
+
echo '<p><input type="text" autocomplete="off" value="' . format_to_edit ('[s2Member-Profile /]') . '" class="monospace" onclick="this.select ();" /></p>' . "\n";
|
1355 |
|
1356 |
echo '<p style="margin-top:20px;"><strong>Stand-Alone (copy/paste)</strong>, for popup window:</p>' . "\n";
|
1357 |
+
echo '<p><input type="text" autocomplete="off" 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.x-php"))) . '" class="monospace" onclick="this.select ();" /></p>' . "\n";
|
1358 |
echo '</div>' . "\n";
|
1359 |
|
1360 |
echo '</div>' . "\n";
|
1424 |
|
1425 |
echo '<div class="ws-menu-page-hr"></div>' . "\n";
|
1426 |
|
1427 |
+
echo '<p class="submit"><input type="submit" value="Save All Changes" /></p>' . "\n";
|
1428 |
|
1429 |
echo '</form>' . "\n";
|
1430 |
|
includes/menu-pages/info.inc.php
CHANGED
@@ -31,8 +31,11 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_info"))
|
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">' . "\n";
|
33 |
|
34 |
-
echo '<div
|
35 |
-
|
|
|
|
|
|
|
36 |
|
37 |
echo '<table class="ws-menu-page-table">' . "\n";
|
38 |
echo '<tbody class="ws-menu-page-table-tbody">' . "\n";
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">' . "\n";
|
33 |
|
34 |
+
echo '<div class="ws-menu-page-toolbox">'."\n";
|
35 |
+
c_ws_plugin__s2member_menu_pages_tb::display ();
|
36 |
+
echo '</div>'."\n";
|
37 |
+
|
38 |
+
echo '<h2>Specs / Info</h2>' . "\n";
|
39 |
|
40 |
echo '<table class="ws-menu-page-table">' . "\n";
|
41 |
echo '<tbody class="ws-menu-page-table-tbody">' . "\n";
|
includes/menu-pages/integrations.inc.php
CHANGED
@@ -31,8 +31,11 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_integrations"))
|
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">'."\n";
|
33 |
|
34 |
-
echo '<div
|
35 |
-
|
|
|
|
|
|
|
36 |
|
37 |
echo '<table class="ws-menu-page-table">'."\n";
|
38 |
echo '<tbody class="ws-menu-page-table-tbody">'."\n";
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">'."\n";
|
33 |
|
34 |
+
echo '<div class="ws-menu-page-toolbox">'."\n";
|
35 |
+
c_ws_plugin__s2member_menu_pages_tb::display ();
|
36 |
+
echo '</div>'."\n";
|
37 |
+
|
38 |
+
echo '<h2>Other Integrations</h2>'."\n";
|
39 |
|
40 |
echo '<table class="ws-menu-page-table">'."\n";
|
41 |
echo '<tbody class="ws-menu-page-table-tbody">'."\n";
|
includes/menu-pages/js-c-warning.inc.php
DELETED
@@ -1,40 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* JS conflict warning for Menu Pages.
|
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 110912
|
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_pages_js_c_warning"))
|
21 |
-
{
|
22 |
-
/**
|
23 |
-
* Newsletter/Feed Boxes for Menu Pages.
|
24 |
-
*
|
25 |
-
* @package s2Member\Menu_Pages
|
26 |
-
* @since 110531
|
27 |
-
*/
|
28 |
-
class c_ws_plugin__s2member_menu_pages_js_c_warning
|
29 |
-
{
|
30 |
-
public function __construct ()
|
31 |
-
{
|
32 |
-
echo '<p style="margin-top:0;"><strong>Dashboard JavaScript Conflict</strong></p>' . "\n";
|
33 |
-
echo '<p>Something is conflicting with the jQuery JavaScript framework, which s2Member uses; causing this warning to be visible to you.</p>' . "\n";
|
34 |
-
echo '<p style="margin-bottom:0;">Please deactivate one other plugin at a time until you find the culprit. Or, in Firefox, see <code>Tools -› Error Console</code>.</p>';
|
35 |
-
}
|
36 |
-
}
|
37 |
-
}
|
38 |
-
|
39 |
-
new c_ws_plugin__s2member_menu_pages_js_c_warning ();
|
40 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/menu-pages/logs.inc.php
CHANGED
@@ -31,8 +31,11 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_logs"))
|
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">'."\n";
|
33 |
|
34 |
-
echo '<div
|
35 |
-
|
|
|
|
|
|
|
36 |
|
37 |
echo '<table class="ws-menu-page-table">'."\n";
|
38 |
echo '<tbody class="ws-menu-page-table-tbody">'."\n";
|
@@ -66,7 +69,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_logs"))
|
|
66 |
|
67 |
echo '<h3>Search s2Member KB Articles, Forums, Codex and more<em>!</em></h3>'."\n";
|
68 |
echo '<form method="get" action="http://www.s2member.com/quick-s.php" target="_blank" onsubmit="if(this.q.value === \'enter search terms...\') this.q.value = \'\';">'."\n";
|
69 |
-
echo '<p><input type="text" name="q" value="enter search terms..." style="width:60%;" onfocus="if(this.value === \'enter search terms...\') this.value = \'\';" onblur="if(this.value === \'\') this.value = \'enter search terms...\';"
|
70 |
echo '</form>'."\n";
|
71 |
|
72 |
do_action ("ws_plugin__s2member_during_logs_page_during_left_sections_during_help", get_defined_vars ());
|
@@ -85,9 +88,12 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_logs"))
|
|
85 |
|
86 |
echo '<h3>Logging Configuration</h3>'."\n";
|
87 |
|
88 |
-
echo '<div class="
|
89 |
echo '<p style="font-size:110%; margin-top:0;"><span>We HIGHLY recommend that you enable logging during your initial testing phase. Logs produce lots of useful details that can help in debugging. Logs can help you find issues in your configuration and/or problems that occur during processing. Enable logging here, and then view your log files below; in the s2Member Log Viewer.</span></p>'."\n";
|
90 |
echo '<p style="font-size:110%; margin-bottom:0;"><span class="ws-menu-page-error">However, it is VERY IMPORTANT to disable logging once you go live. Log files may contain personally identifiable information, credit card numbers, secret API credentials, passwords and/or other sensitive information. We STRONGLY suggest that logging be disabled on a live site (for security reasons).</span></p>'."\n";
|
|
|
|
|
|
|
91 |
echo '<p style="font-size:110%; margin-bottom:0;"><span>Regarding s2Member Security Badges. If debug logging is enabled, your site will NOT qualify for an s2Member Security Badge until you disable logging (and you must ALSO download, and then delete any existing log files). For further details, please see KB Article: <a href="http://www.s2member.com/kb/security-badges/" target="_blank" rel="external">s2Member Security Badges</a>.</span></p>'."\n";
|
92 |
echo '</div>'."\n";
|
93 |
|
@@ -139,7 +145,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_logs"))
|
|
139 |
echo '</table>' . "\n";
|
140 |
|
141 |
echo '<p class="submit" style="margin-top:20px;">'."\n";
|
142 |
-
echo '<input type="submit"
|
143 |
echo '</p>' . "\n";
|
144 |
|
145 |
echo '</form>'."\n";
|
@@ -165,17 +171,17 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_logs"))
|
|
165 |
|
166 |
echo '<form method="post" onsubmit="if(!confirm(\'Archive all existing log files?\n\nAll of your current log files will be archived (e.g. they will simply be renamed with an ARCHIVED tag & date in their file name); and new log files will be created automatically the next time s2Member logs something on your installation.\n\nPlease click OK to confirm this action.\')) return false;">'."\n";
|
167 |
echo '<input type="hidden" name="ws_plugin__s2member_logs_archive_start_fresh" value="'.esc_attr(wp_create_nonce ("ws-plugin--s2member-logs-archive-start-fresh")).'" />'."\n";
|
168 |
-
echo '<input type="submit" value="Archive All Current Log Files" class="ws-menu-page-right ws-plugin--s2member-archive-logs-start-fresh-button" style="clear:right; min-width:200px;" />'."\n";
|
169 |
echo '</form>'."\n";
|
170 |
|
171 |
echo '<form method="post" onsubmit="if(!confirm(\'Delete all existing log files?\n\nThis will permanently delete ALL of your existing log files (including any archived log files).\n\nPlease click OK to confirm this action.\')) return false;">'."\n";
|
172 |
echo '<input type="hidden" name="ws_plugin__s2member_logs_delete_start_fresh" value="'.esc_attr(wp_create_nonce ("ws-plugin--s2member-logs-delete-start-fresh")).'" />'."\n";
|
173 |
-
echo '<input type="submit" value="Permanently Delete All Log Files" class="ws-menu-page-right ws-plugin--s2member-delete-logs-start-fresh-button" style="clear:right; min-width:200px;" />'."\n";
|
174 |
echo '</form>'."\n";
|
175 |
|
176 |
echo '<form method="post">'."\n";
|
177 |
echo '<input type="hidden" name="ws_plugin__s2member_logs_download_zip" value="'.esc_attr(wp_create_nonce ("ws-plugin--s2member-logs-download-zip")).'" />'."\n";
|
178 |
-
echo '<input type="submit" value="Download All Log Files (Zip File)" class="ws-menu-page-right ws-plugin--s2member-logs-download-zip-button" style="clear:right; min-width:200px;" />'."\n";
|
179 |
echo '</form>'."\n";
|
180 |
|
181 |
echo '<p><strong>Debugging Tips:</strong> It is normal to see a few errors in your log files. This is because s2Member logs ALL of its communication with Payment Gateways. Everything — not just successes. With that in mind, there will be some failures that s2Member expects (to a certain extent); and s2Member deals with these gracefully. What you\'re looking for here, are things that jump right out at you as being a major issue (e.g. when s2Member makes a point of providing details to you in a log entry about problems that should be corrected on your installation). Please read carefully.</p>'."\n";
|
@@ -261,8 +267,8 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_logs"))
|
|
261 |
echo '</select>' . "\n";
|
262 |
echo '</td>' . "\n";
|
263 |
|
264 |
-
echo '<td style="width:20%;">' . "\n";
|
265 |
-
echo '<input type="submit" value="View"
|
266 |
echo '</td>' . "\n";
|
267 |
|
268 |
echo '</tr>' . "\n";
|
@@ -295,20 +301,20 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_logs"))
|
|
295 |
echo '<p style="float:right; text-align:right;">[ <a href="'.esc_attr(add_query_arg(array("ws_plugin__s2member_download_log_file" => $view_log_file, "ws_plugin__s2member_download_log_file_v" => wp_create_nonce ("ws-plugin--s2member-download-log-file-v")))).'"><strong>download file</strong></a> ]</p>'."\n";
|
296 |
echo '<p style="margin-right:10px; float:right; text-align:right;"><a href="#" class="ws-plugin--s2member-log-file-viewport-toggle" style="text-decoration:none;">⇓ expand viewport ⇓</a></p>'."\n";
|
297 |
|
298 |
-
echo '<textarea id="ws-plugin--s2member-log-file-viewer" rows="20" wrap="on" spellcheck="false" style="box-shadow:inset 0 0
|
299 |
|
300 |
echo '<p style="float:left; text-align:left;"><strong>Viewing:</strong> <a href="'.esc_attr(add_query_arg(array("ws_plugin__s2member_download_log_file" => $view_log_file, "ws_plugin__s2member_download_log_file_v" => wp_create_nonce ("ws-plugin--s2member-download-log-file-v")))).'">'.esc_html($view_log_file).'</a> (log entries oldest to newest)</p>'."\n";
|
301 |
echo '<p style="float:right; text-align:right;">[ <a href="'.esc_attr(add_query_arg(array("ws_plugin__s2member_download_log_file" => $view_log_file, "ws_plugin__s2member_download_log_file_v" => wp_create_nonce ("ws-plugin--s2member-download-log-file-v")))).'"><strong>download file</strong></a> ]</p>'."\n";
|
302 |
echo '<p style="margin-right:10px; float:right; text-align:right;"><a href="#" class="ws-plugin--s2member-log-file-viewport-toggle" style="text-decoration:none;">⇓ expand viewport ⇓</a></p>'."\n";
|
303 |
}
|
304 |
else if($view_log_file && file_exists($logs_dir."/".$view_log_file))
|
305 |
-
echo '<textarea id="ws-plugin--s2member-log-file-viewer" rows="20" wrap="on" spellcheck="false" style="box-shadow:inset 0 0
|
306 |
|
307 |
else if($view_log_file && !file_exists($logs_dir."/".$view_log_file))
|
308 |
-
echo '<textarea id="ws-plugin--s2member-log-file-viewer" rows="20" wrap="on" spellcheck="false" style="box-shadow:inset 0 0
|
309 |
|
310 |
else // Display an empty textarea in this default scenario.
|
311 |
-
echo '<textarea id="ws-plugin--s2member-log-file-viewer" rows="20" wrap="on" spellcheck="false" style="box-shadow:inset 0 0
|
312 |
|
313 |
echo '</td>' . "\n";
|
314 |
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">'."\n";
|
33 |
|
34 |
+
echo '<div class="ws-menu-page-toolbox">'."\n";
|
35 |
+
c_ws_plugin__s2member_menu_pages_tb::display ();
|
36 |
+
echo '</div>'."\n";
|
37 |
+
|
38 |
+
echo '<h2>Log Files</h2>'."\n";
|
39 |
|
40 |
echo '<table class="ws-menu-page-table">'."\n";
|
41 |
echo '<tbody class="ws-menu-page-table-tbody">'."\n";
|
69 |
|
70 |
echo '<h3>Search s2Member KB Articles, Forums, Codex and more<em>!</em></h3>'."\n";
|
71 |
echo '<form method="get" action="http://www.s2member.com/quick-s.php" target="_blank" onsubmit="if(this.q.value === \'enter search terms...\') this.q.value = \'\';">'."\n";
|
72 |
+
echo '<p><input type="text" name="q" value="enter search terms..." style="width:60%;" onfocus="if(this.value === \'enter search terms...\') this.value = \'\';" onblur="if(this.value === \'\') this.value = \'enter search terms...\';" /> <input type="submit" value="Search" style="font-size:120%; font-weight:normal;" /></p>'."\n";
|
73 |
echo '</form>'."\n";
|
74 |
|
75 |
do_action ("ws_plugin__s2member_during_logs_page_during_left_sections_during_help", get_defined_vars ());
|
88 |
|
89 |
echo '<h3>Logging Configuration</h3>'."\n";
|
90 |
|
91 |
+
echo '<div class="info">'."\n";
|
92 |
echo '<p style="font-size:110%; margin-top:0;"><span>We HIGHLY recommend that you enable logging during your initial testing phase. Logs produce lots of useful details that can help in debugging. Logs can help you find issues in your configuration and/or problems that occur during processing. Enable logging here, and then view your log files below; in the s2Member Log Viewer.</span></p>'."\n";
|
93 |
echo '<p style="font-size:110%; margin-bottom:0;"><span class="ws-menu-page-error">However, it is VERY IMPORTANT to disable logging once you go live. Log files may contain personally identifiable information, credit card numbers, secret API credentials, passwords and/or other sensitive information. We STRONGLY suggest that logging be disabled on a live site (for security reasons).</span></p>'."\n";
|
94 |
+
echo '</div>'."\n";
|
95 |
+
|
96 |
+
echo '<div class="notice" style="margin-bottom:0;">'."\n";
|
97 |
echo '<p style="font-size:110%; margin-bottom:0;"><span>Regarding s2Member Security Badges. If debug logging is enabled, your site will NOT qualify for an s2Member Security Badge until you disable logging (and you must ALSO download, and then delete any existing log files). For further details, please see KB Article: <a href="http://www.s2member.com/kb/security-badges/" target="_blank" rel="external">s2Member Security Badges</a>.</span></p>'."\n";
|
98 |
echo '</div>'."\n";
|
99 |
|
145 |
echo '</table>' . "\n";
|
146 |
|
147 |
echo '<p class="submit" style="margin-top:20px;">'."\n";
|
148 |
+
echo '<input type="submit" value="Update Logging Configuration" />'."\n";
|
149 |
echo '</p>' . "\n";
|
150 |
|
151 |
echo '</form>'."\n";
|
171 |
|
172 |
echo '<form method="post" onsubmit="if(!confirm(\'Archive all existing log files?\n\nAll of your current log files will be archived (e.g. they will simply be renamed with an ARCHIVED tag & date in their file name); and new log files will be created automatically the next time s2Member logs something on your installation.\n\nPlease click OK to confirm this action.\')) return false;">'."\n";
|
173 |
echo '<input type="hidden" name="ws_plugin__s2member_logs_archive_start_fresh" value="'.esc_attr(wp_create_nonce ("ws-plugin--s2member-logs-archive-start-fresh")).'" />'."\n";
|
174 |
+
echo '<input type="submit" value="Archive All Current Log Files" class="ws-menu-page-right ws-plugin--s2member-archive-logs-start-fresh-button" style="font-size:110%; font-weight:normal; clear:right; min-width:200px;" />'."\n";
|
175 |
echo '</form>'."\n";
|
176 |
|
177 |
echo '<form method="post" onsubmit="if(!confirm(\'Delete all existing log files?\n\nThis will permanently delete ALL of your existing log files (including any archived log files).\n\nPlease click OK to confirm this action.\')) return false;">'."\n";
|
178 |
echo '<input type="hidden" name="ws_plugin__s2member_logs_delete_start_fresh" value="'.esc_attr(wp_create_nonce ("ws-plugin--s2member-logs-delete-start-fresh")).'" />'."\n";
|
179 |
+
echo '<input type="submit" value="Permanently Delete All Log Files" class="ws-menu-page-right ws-plugin--s2member-delete-logs-start-fresh-button" style="font-size:110%; font-weight:normal; clear:right; min-width:200px;" />'."\n";
|
180 |
echo '</form>'."\n";
|
181 |
|
182 |
echo '<form method="post">'."\n";
|
183 |
echo '<input type="hidden" name="ws_plugin__s2member_logs_download_zip" value="'.esc_attr(wp_create_nonce ("ws-plugin--s2member-logs-download-zip")).'" />'."\n";
|
184 |
+
echo '<input type="submit" value="Download All Log Files (Zip File)" class="ws-menu-page-right ws-plugin--s2member-logs-download-zip-button" style="font-size:110%; font-weight:normal; clear:right; min-width:200px;" />'."\n";
|
185 |
echo '</form>'."\n";
|
186 |
|
187 |
echo '<p><strong>Debugging Tips:</strong> It is normal to see a few errors in your log files. This is because s2Member logs ALL of its communication with Payment Gateways. Everything — not just successes. With that in mind, there will be some failures that s2Member expects (to a certain extent); and s2Member deals with these gracefully. What you\'re looking for here, are things that jump right out at you as being a major issue (e.g. when s2Member makes a point of providing details to you in a log entry about problems that should be corrected on your installation). Please read carefully.</p>'."\n";
|
267 |
echo '</select>' . "\n";
|
268 |
echo '</td>' . "\n";
|
269 |
|
270 |
+
echo '<td style="width:20%; padding-left:5px;">' . "\n";
|
271 |
+
echo '<input type="submit" value="View" style="font-size:120%; font-weight:normal;" />'."\n";
|
272 |
echo '</td>' . "\n";
|
273 |
|
274 |
echo '</tr>' . "\n";
|
301 |
echo '<p style="float:right; text-align:right;">[ <a href="'.esc_attr(add_query_arg(array("ws_plugin__s2member_download_log_file" => $view_log_file, "ws_plugin__s2member_download_log_file_v" => wp_create_nonce ("ws-plugin--s2member-download-log-file-v")))).'"><strong>download file</strong></a> ]</p>'."\n";
|
302 |
echo '<p style="margin-right:10px; float:right; text-align:right;"><a href="#" class="ws-plugin--s2member-log-file-viewport-toggle" style="text-decoration:none;">⇓ expand viewport ⇓</a></p>'."\n";
|
303 |
|
304 |
+
echo '<textarea id="ws-plugin--s2member-log-file-viewer" rows="20" wrap="on" spellcheck="false" style="box-shadow:inset 0 0 5px rgba(0,0,0,0.5); background:#EEEEEE; color:#000000; overflow-y:scroll;" class="monospace">'.htmlspecialchars(file_get_contents($logs_dir."/".$view_log_file)).'</textarea>' . "\n";
|
305 |
|
306 |
echo '<p style="float:left; text-align:left;"><strong>Viewing:</strong> <a href="'.esc_attr(add_query_arg(array("ws_plugin__s2member_download_log_file" => $view_log_file, "ws_plugin__s2member_download_log_file_v" => wp_create_nonce ("ws-plugin--s2member-download-log-file-v")))).'">'.esc_html($view_log_file).'</a> (log entries oldest to newest)</p>'."\n";
|
307 |
echo '<p style="float:right; text-align:right;">[ <a href="'.esc_attr(add_query_arg(array("ws_plugin__s2member_download_log_file" => $view_log_file, "ws_plugin__s2member_download_log_file_v" => wp_create_nonce ("ws-plugin--s2member-download-log-file-v")))).'"><strong>download file</strong></a> ]</p>'."\n";
|
308 |
echo '<p style="margin-right:10px; float:right; text-align:right;"><a href="#" class="ws-plugin--s2member-log-file-viewport-toggle" style="text-decoration:none;">⇓ expand viewport ⇓</a></p>'."\n";
|
309 |
}
|
310 |
else if($view_log_file && file_exists($logs_dir."/".$view_log_file))
|
311 |
+
echo '<textarea id="ws-plugin--s2member-log-file-viewer" rows="20" wrap="on" spellcheck="false" style="box-shadow:inset 0 0 5px rgba(0,0,0,0.5); background:#EEEEEE; color:#000000; overflow-y:scroll; font-style:italic;" class="monospace">— Empty at this time —</textarea>' . "\n";
|
312 |
|
313 |
else if($view_log_file && !file_exists($logs_dir."/".$view_log_file))
|
314 |
+
echo '<textarea id="ws-plugin--s2member-log-file-viewer" rows="20" wrap="on" spellcheck="false" style="box-shadow:inset 0 0 5px rgba(0,0,0,0.5); background:#EEEEEE; color:#000000; overflow-y:scroll; font-style:italic;" class="monospace">— File no longer exists —</textarea>' . "\n";
|
315 |
|
316 |
else // Display an empty textarea in this default scenario.
|
317 |
+
echo '<textarea id="ws-plugin--s2member-log-file-viewer" rows="20" wrap="on" spellcheck="false" style="box-shadow:inset 0 0 5px rgba(0,0,0,0.5); background:#EEEEEE; color:#000000; overflow-y:scroll; font-style:italic;" class="monospace"></textarea>' . "\n";
|
318 |
|
319 |
echo '</td>' . "\n";
|
320 |
|
includes/menu-pages/menu-pages-min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(document).ready(function(
|
1 |
+
jQuery(document).ready(function(e){e(window).resize(tb_position=function(){var f=(e(window).width()>720)?720:e(window).width(),i=e(window).height(),g=(e("body.admin-bar").length)?28:0;e("#TB_window").css({width:f-50+"px",height:i-45-g+"px",top:25+g+"px","margin-top":0,"margin-left":"-"+parseInt(((f-50)/2),10)+"px"});e("#TB_ajaxContent").css({width:f-50+"px",height:i-75-g+"px",margin:0,padding:0})});var b=e("table.ws-menu-page-table td.ws-menu-page-table-r"),a=e("> .toggler",b),d=e("> .wrapper",b);var c=e("div.ws-menu-page-group");c.each(function(g){var i=e(this),h=i,j=e.trim(h.attr("title"));var f=e('<div class="ws-menu-page-group-header">'+j+"</div>");f.css({"z-index":1});f.insertBefore(h),f.click(function(){var l=e(this),k=l.next();if(l.hasClass("open")){l.add(k).removeClass("open")}else{l.add(k).addClass("open")}return false});if(c.length>1&&g===0){e('<div class="ws-menu-page-groups-hide"><i class="fa fa-chevron-up"></i></div>').insertBefore("div.ws-menu-page-toolbox").click(function(){e("div.ws-menu-page-group-header").each(function(){var l=e(this),k=l.next();l.add(k).removeClass("open");return});return false});e('<div class="ws-menu-page-groups-show"><i class="fa fa-chevron-down"></i></div>').insertBefore("div.ws-menu-page-toolbox").click(function(){e("div.ws-menu-page-group-header").each(function(){var l=e(this),k=l.next();l.add(k).addClass("open");return});return false})}if(h.attr("default-state")==="open"){f.trigger("click")}return});a.click(function(){if(b.hasClass("open")){d.hide(),b.removeClass("open")}else{d.show(),b.addClass("open")}});if(a.attr("default-state")==="open"){a.click()}e("div.ws-menu-page-r-group-header").click(function(){var g=e(this),f=g.next();if(g.hasClass("open")){g.add(f).removeClass("open")}else{g.add(f).addClass("open")}return false});e("div.ws-menu-page-group-header:first, div.ws-menu-page-r-group-header:first").css({"margin-top":"0"});e("div.ws-menu-page-group-header:last, div.ws-menu-page-r-group-header:last, div.ws-menu-page-group:last").css({"margin-bottom":"0"});e("input.ws-menu-page-media-btn").filter(function(){return(e(this).attr("rel"))?true:false}).click(function(){var f=e(this);window.send_to_editor=function(j){var k,i,g=e.trim(f.attr("rel"));if(g&&(k=e("input#"+g)).length>0){var h=k.css("background-color"),l=e.trim(e(j).attr("src"));l=(!l)?e.trim(e("img",j).attr("src")):l;k.val(l),k.css({"background-color":"#FFFFCC"}),setTimeout(function(){k.css({"background-color":h})},2000);tb_remove();return}else{if(g&&(i=e("textarea#"+g)).length>0){var h=i.css("background-color"),l=e.trim(e(j).attr("src"));l=(!l)?e.trim(e("img",j).attr("src")):l;i.val(e.trim(i.val())+"\n"+l),i.css({"background-color":"#FFFFCC"}),setTimeout(function(){i.css({"background-color":h})},2000);tb_remove();return}}};tb_show("","./media-upload.php?type=image&TB_iframe=true");return false});e("form#ws-updates-form").submit(function(){var f="";if(!e.trim(e("input#ws-updates-fname").val())){f+="First Name missing, please try again.\n\n"}if(!e.trim(e("input#ws-updates-lname").val())){f+="Last Name missing, please try again.\n\n"}if(!e.trim(e("input#ws-updates-email").val())){f+="Email missing, please try again.\n\n"}else{if(!e("input#ws-updates-email").val().match(/^([a-z_~0-9\+\-]+)(((\.?)([a-z_~0-9\+\-]+))*)(@)([a-z0-9]+)(((-*)([a-z0-9]+))*)(((\.)([a-z0-9]+)(((-*)([a-z0-9]+))*))*)(\.)([a-z]{2,6})$/i)){f+="Invalid email address, please try again.\n\n"}}if(f=e.trim(f)){alert("— Oops, you missed something: —\n\n"+f);return false}return true})});
|
includes/menu-pages/menu-pages.css
CHANGED
@@ -15,509 +15,833 @@
|
|
15 |
* @package WebSharks\Menu Pages
|
16 |
* @since x.xx
|
17 |
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
/*
|
19 |
These CSS selectors address common layout styles.
|
20 |
*/
|
21 |
div.ws-menu-page
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
27 |
div.ws-menu-page a.ws-dotted-link
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
div.ws-menu-page > h2
|
33 |
-
|
34 |
-
|
35 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
36 |
div.ws-menu-page .ws-menu-page-right
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
div.ws-menu-page .ws-menu-page-left
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
div.ws-menu-page .ws-menu-page-center
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
div.ws-menu-page div.ws-menu-page-hr
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
div.ws-menu-page .ws-menu-page-hilite
|
60 |
-
{
|
61 |
-
font-size: 102%;
|
62 |
-
background: #FAF9BB;
|
63 |
-
}
|
64 |
div.ws-menu-page .ws-menu-page-error
|
65 |
-
|
66 |
-
|
67 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
68 |
div.ws-menu-page .ws-menu-page-error-hilite
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
|
|
|
|
|
|
73 |
div.ws-menu-page img.ws-menu-page-img-16
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
div.ws-menu-page
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
div.ws-menu-page
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
div.ws-menu-page
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
133 |
/*
|
134 |
Specifically for the main layout table.
|
135 |
These CSS selectors address common layout styles.
|
136 |
*/
|
137 |
table.ws-menu-page-table
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
142 |
table.ws-menu-page-table ul,
|
143 |
table.ws-menu-page-table ol
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
table.ws-menu-page-table ul > li
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
table.ws-menu-page-table ol > li
|
153 |
-
|
154 |
-
|
155 |
-
|
156 |
-
|
157 |
table.ws-menu-page-table > tbody > tr
|
158 |
-
|
159 |
-
|
160 |
-
|
161 |
table.ws-menu-page-table td.ws-menu-page-table-l
|
162 |
-
|
163 |
-
|
164 |
-
|
165 |
-
}
|
166 |
table.ws-menu-page-table td.ws-menu-page-table-r
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
171 |
table.ws-menu-page-table img.ws-menu-page-brand-icon
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
table.ws-menu-page-table img.ws-menu-page-brand-updates
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
table.ws-menu-page-table p.submit
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
table.ws-menu-page-table a[rel
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
table.ws-menu-page-table div.ws-menu-page-groups-show,
|
200 |
-
table.ws-menu-page-table div.ws-menu-page-groups-hide
|
201 |
-
{
|
202 |
-
float: right;
|
203 |
-
height: 24px;
|
204 |
-
width: 24px;
|
205 |
-
color: #333333;
|
206 |
-
padding: 5px;
|
207 |
-
cursor: pointer;
|
208 |
-
font-size: 28px;
|
209 |
-
font-weight: bold;
|
210 |
-
line-height: 25px;
|
211 |
-
text-align: center;
|
212 |
-
margin: 0 0 0 7px;
|
213 |
-
vertical-align: middle;
|
214 |
-
font-family: monospace;
|
215 |
-
border: 1px solid #666666;
|
216 |
-
-moz-border-radius: 5px;
|
217 |
-
-webkit-border-radius: 5px;
|
218 |
-
border-radius: 5px;
|
219 |
-
-moz-user-select: none;
|
220 |
-
-webkit-user-select: none;
|
221 |
-
user-select: none;
|
222 |
-
background: linear-gradient(to bottom, #FFFFFF 95%, rgba(236, 236, 236, 1) 90%);
|
223 |
-
}
|
224 |
-
table.ws-menu-page-table div.ws-menu-page-groups-hide
|
225 |
-
{
|
226 |
-
color: #999999;
|
227 |
-
border-color: #999999;
|
228 |
-
}
|
229 |
table.ws-menu-page-table div.ws-menu-page-group-header,
|
230 |
table.ws-menu-page-table div.ws-menu-page-r-group-header
|
231 |
-
|
232 |
-
|
233 |
-
|
234 |
-
|
235 |
-
|
236 |
-
|
237 |
-
|
238 |
-
|
239 |
-
|
240 |
-
|
241 |
-
|
242 |
-
|
243 |
-
|
244 |
-
|
245 |
-
|
246 |
-
|
247 |
-
|
248 |
-
|
249 |
-
|
250 |
-
|
251 |
-
|
252 |
-
table.ws-menu-page-table div.ws-menu-page-r-group-header > ins
|
253 |
-
{
|
254 |
-
padding: 0;
|
255 |
-
width: 22px;
|
256 |
-
height: 22px;
|
257 |
-
color: #CCCCCC;
|
258 |
-
font-size: 22px;
|
259 |
-
line-height: 22px;
|
260 |
-
font-weight: bold;
|
261 |
-
text-align: center;
|
262 |
-
margin: 0 10px 0 0;
|
263 |
-
background: #666666;
|
264 |
-
text-decoration: none;
|
265 |
-
font-family: monospace;
|
266 |
-
vertical-align: text-top;
|
267 |
-
border: 1px solid transparent;
|
268 |
-
-moz-border-radius: 5px;
|
269 |
-
-webkit-border-radius: 5px;
|
270 |
-
border-radius: 5px;
|
271 |
-
display: inline-block;
|
272 |
-
zoom: 1 !ie<8;
|
273 |
-
display: inline !ie<8;
|
274 |
-
margin-top: 0 !ie<8;
|
275 |
-
}
|
276 |
table.ws-menu-page-table div.ws-menu-page-group-header:hover,
|
277 |
-
table.ws-menu-page-table div.ws-menu-page-group-header.open,
|
278 |
table.ws-menu-page-table div.ws-menu-page-r-group-header:hover,
|
|
|
279 |
table.ws-menu-page-table div.ws-menu-page-r-group-header.open
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
table.ws-menu-page-table div.ws-menu-page-group-header
|
285 |
-
table.ws-menu-page-table div.ws-menu-page-group-header.open
|
286 |
-
|
287 |
-
|
288 |
-
|
289 |
-
|
290 |
-
|
291 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
292 |
table.ws-menu-page-table div.ws-menu-page-group,
|
293 |
table.ws-menu-page-table div.ws-menu-page-r-group
|
294 |
-
|
295 |
-
|
296 |
-
|
297 |
-
|
298 |
-
|
299 |
-
|
300 |
-
|
301 |
-
|
302 |
-
|
303 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
304 |
table.ws-menu-page-table div.ws-menu-page-group > div.ws-menu-page-hr,
|
305 |
table.ws-menu-page-table div.ws-menu-page-r-group > div.ws-menu-page-hr
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
|
|
|
|
|
|
310 |
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > th
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
|
321 |
-
|
|
|
322 |
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > td
|
323 |
-
|
324 |
-
|
325 |
-
|
326 |
-
|
327 |
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > th.ws-menu-page-th-side
|
328 |
-
|
329 |
-
|
330 |
-
|
331 |
-
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > td > input[type = "text"],
|
332 |
-
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > td > input[type = "password"],
|
333 |
-
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > td > textarea,
|
334 |
-
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > td > select
|
335 |
-
{
|
336 |
-
width: /* 100% does not work across all browsers. */ 100%;
|
337 |
-
width: /* 100% does not work in IE browsers < 8. */ 98% !ie<8;
|
338 |
-
box-sizing: /* Make all fields behave the same. */ border-box;
|
339 |
-
-ms-box-sizing: border-box;
|
340 |
-
-moz-box-sizing: border-box;
|
341 |
-
-webkit-box-sizing: border-box;
|
342 |
-
}
|
343 |
-
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > td > select
|
344 |
-
{
|
345 |
-
width: /* Required in IE < 8. */ 99.5% !ie<8;
|
346 |
-
}
|
347 |
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > td > textarea
|
348 |
-
|
349 |
-
|
350 |
-
|
351 |
-
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > td > input[type
|
352 |
-
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > td > input[type
|
353 |
-
|
354 |
-
|
355 |
-
|
356 |
-
|
357 |
-
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > td > input[
|
358 |
-
|
359 |
-
|
360 |
-
|
361 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
362 |
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > td > div.ws-menu-page-scrollbox
|
363 |
-
|
364 |
-
|
365 |
-
|
366 |
-
|
367 |
-
|
368 |
-
|
369 |
-
|
370 |
-
|
371 |
-
|
372 |
-
|
373 |
-
|
374 |
-
|
|
|
|
|
|
|
|
|
375 |
/*
|
376 |
Specifically for info pages with readme files.
|
377 |
These CSS selectors address common layout styles.
|
378 |
*/
|
379 |
div.ws-menu-page-readme > div.readme > div.section
|
380 |
-
|
381 |
-
|
382 |
-
|
383 |
-
|
384 |
-
|
385 |
-
|
|
|
|
|
|
|
|
|
386 |
div.ws-menu-page-readme > div.readme > div.section > h2
|
387 |
-
|
388 |
-
|
389 |
-
|
390 |
-
|
391 |
-
|
392 |
div.ws-menu-page-readme > div.readme > div.section > div.content ul,
|
393 |
div.ws-menu-page-readme > div.readme > div.section > div.content ol
|
394 |
-
|
395 |
-
|
396 |
-
|
397 |
-
|
398 |
div.ws-menu-page-readme > div.readme > div.section > div.content ul > li
|
399 |
-
|
400 |
-
|
401 |
-
|
402 |
-
|
403 |
div.ws-menu-page-readme > div.readme > div.section > div.content ol > li
|
404 |
-
|
405 |
-
|
406 |
-
|
407 |
-
|
408 |
-
|
409 |
-
Specifically for the right sidebar panel.
|
410 |
-
These CSS selectors address common layout styles.
|
411 |
-
*/
|
412 |
-
td.ws-menu-page-table-r div.ws-menu-page-js-c-w,
|
413 |
-
td.ws-menu-page-table-r div.ws-menu-page-updates,
|
414 |
-
td.ws-menu-page-table-r div.ws-menu-page-installation,
|
415 |
-
td.ws-menu-page-table-r div.ws-menu-page-tools,
|
416 |
-
td.ws-menu-page-table-r div.ws-menu-page-kb,
|
417 |
-
td.ws-menu-page-table-r div.ws-menu-page-videos,
|
418 |
-
td.ws-menu-page-table-r div.ws-menu-page-support,
|
419 |
-
td.ws-menu-page-table-r div.ws-menu-page-donations,
|
420 |
-
td.ws-menu-page-table-r div.ws-menu-page-others
|
421 |
-
{
|
422 |
-
width: 200px;
|
423 |
-
margin: 0 0 25px 25px;
|
424 |
-
}
|
425 |
-
td.ws-menu-page-table-r div.ws-menu-page-installation img,
|
426 |
-
td.ws-menu-page-table-r div.ws-menu-page-tools img,
|
427 |
-
td.ws-menu-page-table-r div.ws-menu-page-kb img,
|
428 |
-
td.ws-menu-page-table-r div.ws-menu-page-videos img,
|
429 |
-
td.ws-menu-page-table-r div.ws-menu-page-support img,
|
430 |
-
td.ws-menu-page-table-r div.ws-menu-page-donations img,
|
431 |
-
td.ws-menu-page-table-r div.ws-menu-page-others img
|
432 |
-
{
|
433 |
-
border: 0;
|
434 |
-
width: 200px;
|
435 |
-
height: auto;
|
436 |
-
}
|
437 |
-
td.ws-menu-page-table-r div.ws-menu-page-js-c-w
|
438 |
-
{
|
439 |
-
width: 178px;
|
440 |
-
padding: 10px;
|
441 |
-
background: #FFF5F7;
|
442 |
-
text-align: justify;
|
443 |
-
border: 1px solid #FA4D4D;
|
444 |
-
-moz-border-radius: 5px;
|
445 |
-
-webkit-border-radius: 5px;
|
446 |
-
border-radius: 5px;
|
447 |
-
}
|
448 |
/*
|
449 |
Specifically for the right sidebar panel.
|
450 |
- Specifically for the updates box.
|
451 |
These CSS selectors address common layout styles.
|
452 |
*/
|
453 |
div.ws-menu-page-updates ul
|
454 |
-
|
455 |
-
|
456 |
-
|
457 |
-
|
458 |
div.ws-menu-page-updates ul > li
|
459 |
-
|
460 |
-
|
461 |
-
|
462 |
-
|
463 |
-
|
464 |
-
|
465 |
-
|
466 |
-
|
467 |
div.ws-menu-page-updates ul > li:first-child
|
468 |
-
|
469 |
-
|
470 |
-
|
471 |
div.ws-menu-page-updates a[target = "_blank"]
|
472 |
-
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
div.ws-menu-page-updates div#creditfooter
|
477 |
-
|
478 |
-
|
479 |
-
|
480 |
div.ws-menu-page-updates div#ws-updates-div-fname,
|
481 |
div.ws-menu-page-updates div#ws-updates-div-lname,
|
482 |
div.ws-menu-page-updates div#ws-updates-div-email,
|
483 |
div.ws-menu-page-updates div#ws-updates-div-subs,
|
484 |
div.ws-menu-page-updates div#ws-updates-div-priv
|
485 |
-
|
486 |
-
|
487 |
-
|
488 |
div.ws-menu-page-updates div#ws-updates-div-subs
|
489 |
-
|
490 |
-
|
491 |
-
|
492 |
div.ws-menu-page-updates div#ws-updates-div-priv
|
493 |
-
|
494 |
-
|
495 |
-
|
496 |
-
|
497 |
div.ws-menu-page-updates input[type = "text"],
|
498 |
div.ws-menu-page-updates input[type = "password"],
|
499 |
div.ws-menu-page-updates input[type = "submit"],
|
500 |
div.ws-menu-page-updates textarea,
|
501 |
div.ws-menu-page-updates select
|
502 |
-
|
503 |
-
|
504 |
-
|
505 |
-
|
506 |
-
|
507 |
-
|
508 |
-
|
509 |
-
}
|
510 |
div.ws-menu-page-updates input[type = "checkbox"],
|
511 |
div.ws-menu-page-updates input[type = "radio"]
|
512 |
-
|
513 |
-
|
514 |
-
|
515 |
-
|
516 |
-
div.ws-menu-page-updates input[type = "submit"]
|
517 |
-
{
|
518 |
-
width: /* This width required in IE < 8. */ 100% !ie<8;
|
519 |
-
}
|
520 |
-
div.ws-menu-page-updates select
|
521 |
-
{
|
522 |
-
width: /* Required in IE < 8. */ 99.5% !ie<8;
|
523 |
-
}
|
15 |
* @package WebSharks\Menu Pages
|
16 |
* @since x.xx
|
17 |
*/
|
18 |
+
@import url('//netdna.bootstrapcdn.com/font-awesome/4.0.0/css/font-awesome.min.css');
|
19 |
+
|
20 |
+
/*
|
21 |
+
Align these with menu page.
|
22 |
+
*/
|
23 |
+
div.updated, div.error
|
24 |
+
{
|
25 |
+
font-size : 120%;
|
26 |
+
margin : 25px 25px 25px 5px;
|
27 |
+
}
|
28 |
+
|
29 |
/*
|
30 |
These CSS selectors address common layout styles.
|
31 |
*/
|
32 |
div.ws-menu-page
|
33 |
+
{
|
34 |
+
font-size : 14px;
|
35 |
+
padding : 25px;
|
36 |
+
min-width : 800px;
|
37 |
+
margin : 25px 25px 25px 5px;
|
38 |
+
|
39 |
+
border-radius : 5px;
|
40 |
+
background : #ECECEC;
|
41 |
+
border : 1px solid #A4A4A4;
|
42 |
+
box-shadow : 0 0 2px 0 rgba(0, 0, 0, 0.2) !important;
|
43 |
+
}
|
44 |
+
div.ws-menu-page a
|
45 |
+
{
|
46 |
+
color : #003E75;
|
47 |
+
}
|
48 |
+
div.ws-menu-page a:hover,
|
49 |
+
div.ws-menu-page a:active
|
50 |
+
{
|
51 |
+
color : #027E02;
|
52 |
+
}
|
53 |
+
div.ws-menu-page p:first-child,
|
54 |
+
div.ws-menu-page pre:first-child
|
55 |
+
{
|
56 |
+
margin-top : 0;
|
57 |
+
}
|
58 |
+
div.ws-menu-page p:last-child,
|
59 |
+
div.ws-menu-page pre:last-child
|
60 |
+
{
|
61 |
+
margin-bottom : 0;
|
62 |
+
}
|
63 |
+
div.ws-menu-page h3 + p
|
64 |
+
{
|
65 |
+
margin-top : 0;
|
66 |
+
}
|
67 |
div.ws-menu-page a.ws-dotted-link
|
68 |
+
{
|
69 |
+
text-decoration : none;
|
70 |
+
border-bottom : 1px dotted;
|
71 |
+
}
|
72 |
div.ws-menu-page > h2
|
73 |
+
{
|
74 |
+
font-size : 200%;
|
75 |
+
font-weight : bold;
|
76 |
+
|
77 |
+
height : 90px;
|
78 |
+
box-sizing : border-box;
|
79 |
+
position : relative;
|
80 |
+
z-index : 0;
|
81 |
+
|
82 |
+
margin-bottom : 25px;
|
83 |
+
padding : 25px 0 0 120px;
|
84 |
+
background : url('<?php echo $i; ?>/s2___.png') no-repeat left bottom;
|
85 |
+
}
|
86 |
+
div.ws-menu-page > h2:before
|
87 |
+
{
|
88 |
+
content : ' ';
|
89 |
+
display : block;
|
90 |
+
width : 85%;
|
91 |
+
width : calc(100% - 220px);
|
92 |
+
height : 90px;
|
93 |
+
|
94 |
+
right : 20px;
|
95 |
+
bottom : 0;
|
96 |
+
z-index : 0;
|
97 |
+
position : absolute;
|
98 |
+
|
99 |
+
background : url('<?php echo $i; ?>/s2___bar.png') repeat-x left bottom;
|
100 |
+
}
|
101 |
+
div.ws-menu-page > h2:after
|
102 |
+
{
|
103 |
+
content : ' ';
|
104 |
+
display : block;
|
105 |
+
width : 20px;
|
106 |
+
height : 90px;
|
107 |
+
|
108 |
+
right : 0;
|
109 |
+
bottom : 0;
|
110 |
+
z-index : 0;
|
111 |
+
position : absolute;
|
112 |
+
|
113 |
+
background : url('<?php echo $i; ?>/s2___end.png') no-repeat right bottom
|
114 |
+
}
|
115 |
+
div.ws-menu-page code
|
116 |
+
{
|
117 |
+
font-size : 1em;
|
118 |
+
font-family : 'Monaco', 'Menlo', 'Consolas', 'Courier New', monospace;
|
119 |
+
}
|
120 |
+
div.ws-menu-page pre.code
|
121 |
+
{
|
122 |
+
padding : 0;
|
123 |
+
background : none;
|
124 |
+
}
|
125 |
+
div.ws-menu-page pre.code > code
|
126 |
+
{
|
127 |
+
font-size : 90%;
|
128 |
+
color : #EEEEEE;
|
129 |
+
background : #222222;
|
130 |
+
overflow-x : auto;
|
131 |
+
max-width : 100%;
|
132 |
+
|
133 |
+
border-radius : 5px;
|
134 |
+
padding : 10px;
|
135 |
+
display : block;
|
136 |
+
box-shadow : 0 0 5px 1px #000000 inset, 0 0 1px 1px rgba(223, 245, 165, 0.5);
|
137 |
+
}
|
138 |
+
div.ws-menu-page code.highlight-php
|
139 |
+
{
|
140 |
+
font-size : 90%;
|
141 |
+
color : #EEEEEE;
|
142 |
+
background : #FFFFFF;
|
143 |
+
overflow : auto;
|
144 |
+
max-width : 100%;
|
145 |
+
max-height : 400px;
|
146 |
+
white-space : nowrap;
|
147 |
+
|
148 |
+
border-radius : 5px;
|
149 |
+
padding : 10px;
|
150 |
+
display : block;
|
151 |
+
box-shadow : 0 0 5px 1px rgba(0, 0, 0, 0.38) inset, 0 0 1px 1px rgba(223, 245, 165, 0.5);
|
152 |
+
}
|
153 |
+
div.ws-menu-page img
|
154 |
+
{
|
155 |
+
border : 0;
|
156 |
+
}
|
157 |
+
div.ws-menu-page img.screenshot
|
158 |
+
{
|
159 |
+
float : right;
|
160 |
+
margin : 0 0 0 25px;
|
161 |
+
|
162 |
+
border-radius : 5px;
|
163 |
+
border : 1px solid #AFAFAF;
|
164 |
+
|
165 |
+
box-shadow : 0 0 5px 0 rgba(0, 0, 0, 0.2) inset, 0 0 1px 0 rgba(72, 155, 88, 0.2);
|
166 |
+
background : #FFFFFF;
|
167 |
+
padding : 10px;
|
168 |
+
}
|
169 |
div.ws-menu-page .ws-menu-page-right
|
170 |
+
{
|
171 |
+
float : right;
|
172 |
+
margin-left : 25px;
|
173 |
+
}
|
174 |
div.ws-menu-page .ws-menu-page-left
|
175 |
+
{
|
176 |
+
float : left;
|
177 |
+
margin-right : 25px;
|
178 |
+
}
|
179 |
div.ws-menu-page .ws-menu-page-center
|
180 |
+
{
|
181 |
+
margin-left : auto;
|
182 |
+
margin-right : auto;
|
183 |
+
display : block;
|
184 |
+
}
|
185 |
div.ws-menu-page div.ws-menu-page-hr
|
186 |
+
{
|
187 |
+
height : 1px;
|
188 |
+
line-height : 1px;
|
189 |
+
background : #DDDDDD;
|
190 |
+
margin : 10px 0 10px 0;
|
191 |
+
}
|
|
|
|
|
|
|
|
|
|
|
192 |
div.ws-menu-page .ws-menu-page-error
|
193 |
+
{
|
194 |
+
color : #962722;
|
195 |
+
}
|
196 |
+
div.ws-menu-page .ws-menu-page-hilite
|
197 |
+
{
|
198 |
+
font-size : 102%;
|
199 |
+
background : #DFF0DF;
|
200 |
+
|
201 |
+
border-radius : 3px;
|
202 |
+
padding : 0.2em;
|
203 |
+
}
|
204 |
div.ws-menu-page .ws-menu-page-error-hilite
|
205 |
+
{
|
206 |
+
color : #FFFFFF;
|
207 |
+
background : #962722;
|
208 |
+
|
209 |
+
border-radius : 3px;
|
210 |
+
padding : 0.2em;
|
211 |
+
}
|
212 |
div.ws-menu-page img.ws-menu-page-img-16
|
213 |
+
{
|
214 |
+
border : 0;
|
215 |
+
width : 16px;
|
216 |
+
height : 16px;
|
217 |
+
}
|
218 |
+
div.ws-menu-page label
|
219 |
+
{
|
220 |
+
text-shadow : none;
|
221 |
+
|
222 |
+
-webkit-user-select : none;
|
223 |
+
-moz-user-select : none;
|
224 |
+
user-select : none;
|
225 |
+
}
|
226 |
+
div.ws-menu-page .form-table td
|
227 |
+
{
|
228 |
+
font-size : inherit;
|
229 |
+
line-height : inherit;
|
230 |
+
}
|
231 |
+
div.ws-menu-page input:not([type='image']):not([type='button']):not([type='submit']):not([type='radio']):not([type='checkbox']),
|
232 |
+
div.ws-menu-page input:not([type='image']):not([type='button']):not([type='submit']):not([type='radio']):not([type='checkbox']):focus,
|
233 |
+
div.ws-menu-page select, div.ws-menu-page select:focus,
|
234 |
+
div.ws-menu-page textarea, div.ws-menu-page textarea:focus
|
235 |
+
{
|
236 |
+
width : 100%;
|
237 |
+
height : auto;
|
238 |
+
|
239 |
+
margin : 0;
|
240 |
+
padding : 5px;
|
241 |
+
line-height : 1em;
|
242 |
+
box-sizing : border-box;
|
243 |
+
border : 1px solid rgba(13, 31, 47, 0.5);
|
244 |
+
|
245 |
+
color : #FFFFFF;
|
246 |
+
background : #73834B;
|
247 |
+
box-shadow : 0 0 1px 0 rgba(0, 0, 0, 0.5) inset, 0 0 1px 1px rgba(223, 245, 165, 0.5);
|
248 |
+
}
|
249 |
+
div.ws-menu-page input:not([type='image']):not([type='button']):not([type='submit']):not([type='radio']):not([type='checkbox']):focus,
|
250 |
+
div.ws-menu-page select:focus, div.ws-menu-page textarea:focus
|
251 |
+
{
|
252 |
+
background : #637041;
|
253 |
+
}
|
254 |
+
div.ws-menu-page input[disabled],
|
255 |
+
div.ws-menu-page select[disabled],
|
256 |
+
div.ws-menu-page textarea[disabled]
|
257 |
+
{
|
258 |
+
opacity : 0.5;
|
259 |
+
}
|
260 |
+
div.ws-menu-page button,
|
261 |
+
div.ws-menu-page input[type='button'],
|
262 |
+
div.ws-menu-page input[type='submit']
|
263 |
+
{
|
264 |
+
line-height : 1em;
|
265 |
+
font-size : 120%;
|
266 |
+
color : #FFFFFF;
|
267 |
+
background : #0E4152;
|
268 |
+
|
269 |
+
border-radius : 4px;
|
270 |
+
border : 1px solid rgba(0, 0, 0, 0.5);
|
271 |
+
box-shadow : 0 1px 1px 0 rgba(0, 0, 0, 0.25), -1px -1px 0 1px rgba(0, 0, 0, 0.2) inset, 1px 1px 0 1px rgba(255, 255, 255, 0.1) inset;
|
272 |
+
|
273 |
+
margin : 0;
|
274 |
+
box-sizing : border-box;
|
275 |
+
padding : 6px 12px 6px 12px;
|
276 |
+
|
277 |
+
outline : none;
|
278 |
+
|
279 |
+
cursor : pointer;
|
280 |
+
-webkit-user-select : none;
|
281 |
+
-moz-user-select : none;
|
282 |
+
user-select : none;
|
283 |
+
}
|
284 |
+
div.ws-menu-page button:hover,
|
285 |
+
div.ws-menu-page input[type='button']:hover,
|
286 |
+
div.ws-menu-page input[type='submit']:hover
|
287 |
+
{
|
288 |
+
background : #0D1F2F;
|
289 |
+
}
|
290 |
+
div.ws-menu-page button:active,
|
291 |
+
div.ws-menu-page input[type='button']:active,
|
292 |
+
div.ws-menu-page input[type='submit']:active
|
293 |
+
{
|
294 |
+
-webkit-transform : scale(0.98, 0.98);
|
295 |
+
transform : scale(0.98, 0.98);
|
296 |
+
}
|
297 |
+
div.ws-menu-page button[type='submit'],
|
298 |
+
div.ws-menu-page input[type='submit']
|
299 |
+
{
|
300 |
+
font-size : 150%;
|
301 |
+
font-weight : bold;
|
302 |
+
background : #5F7523;
|
303 |
+
}
|
304 |
+
div.ws-menu-page button[type='submit']:hover,
|
305 |
+
div.ws-menu-page input[type='submit']:hover
|
306 |
+
{
|
307 |
+
background : #4C6324;
|
308 |
+
}
|
309 |
+
div.ws-menu-page p.submit button[type='submit'],
|
310 |
+
div.ws-menu-page p.submit input[type='submit']
|
311 |
+
{
|
312 |
+
width : 100%;
|
313 |
+
}
|
314 |
+
div.ws-menu-page input[type='file']
|
315 |
+
{
|
316 |
+
width : auto !important;
|
317 |
+
}
|
318 |
+
div.ws-menu-page .pro-preview
|
319 |
+
{
|
320 |
+
opacity : 0.5;
|
321 |
+
}
|
322 |
+
div.ws-menu-page .info,
|
323 |
+
div.ws-menu-page .notice,
|
324 |
+
div.ws-menu-page .warning,
|
325 |
+
div.ws-menu-page .error
|
326 |
+
{
|
327 |
+
font-size : 120%;
|
328 |
+
padding : 10px;
|
329 |
+
margin : 0 0 25px 0;
|
330 |
+
border-radius : 5px;
|
331 |
+
}
|
332 |
+
div.ws-menu-page .info
|
333 |
+
{
|
334 |
+
border : 1px solid #35558A;
|
335 |
+
background : #C9E0FA;
|
336 |
+
}
|
337 |
+
div.ws-menu-page .notice
|
338 |
+
{
|
339 |
+
border : 1px solid #E6DB55;
|
340 |
+
background : #FFFBCC;
|
341 |
+
}
|
342 |
+
div.ws-menu-page .warning
|
343 |
+
{
|
344 |
+
border : 1px solid #D29A04;
|
345 |
+
background : #FADDAB;
|
346 |
+
}
|
347 |
+
div.ws-menu-page .error
|
348 |
+
{
|
349 |
+
border : 1px solid #711E1E;
|
350 |
+
background : #FABBC6;
|
351 |
+
}
|
352 |
+
div.ws-menu-page .monospace
|
353 |
+
{
|
354 |
+
font-family : 'Monaco', 'Menlo', 'Consolas', 'Courier New', monospace;
|
355 |
+
}
|
356 |
+
div.ws-menu-page textarea.monospace
|
357 |
+
{
|
358 |
+
white-space : nowrap;
|
359 |
+
}
|
360 |
+
div.ws-menu-page .clearfix:before,
|
361 |
+
div.ws-menu-page .clearfix:after
|
362 |
+
{
|
363 |
+
display : table;
|
364 |
+
content : ' ';
|
365 |
+
}
|
366 |
+
div.ws-menu-page .clearfix:after
|
367 |
+
{
|
368 |
+
clear : both;
|
369 |
+
}
|
370 |
+
|
371 |
+
/*
|
372 |
+
Tools and togglers.
|
373 |
+
*/
|
374 |
+
div.ws-menu-page div.ws-menu-page-groups-show,
|
375 |
+
div.ws-menu-page div.ws-menu-page-groups-hide
|
376 |
+
{
|
377 |
+
float : right;
|
378 |
+
|
379 |
+
z-index : 1;
|
380 |
+
position : relative;
|
381 |
+
|
382 |
+
line-height : 1em;
|
383 |
+
font-size : 150%;
|
384 |
+
font-weight : bold;
|
385 |
+
color : #FFFFFF;
|
386 |
+
background : #0E4152;
|
387 |
+
|
388 |
+
border-radius : 4px;
|
389 |
+
border : 1px solid rgba(0, 0, 0, 0.5);
|
390 |
+
box-shadow : 0 1px 1px 0 rgba(0, 0, 0, 0.25), -1px -1px 0 1px rgba(0, 0, 0, 0.2) inset, 1px 1px 0 1px rgba(255, 255, 255, 0.1) inset;
|
391 |
+
|
392 |
+
margin : 0;
|
393 |
+
box-sizing : border-box;
|
394 |
+
padding : 6px 12px 6px 12px;
|
395 |
+
|
396 |
+
outline : none;
|
397 |
+
|
398 |
+
cursor : pointer;
|
399 |
+
-webkit-user-select : none;
|
400 |
+
-moz-user-select : none;
|
401 |
+
user-select : none;
|
402 |
+
}
|
403 |
+
div.ws-menu-page div.ws-menu-page-groups-show
|
404 |
+
{
|
405 |
+
margin : 0 5px 0 0;
|
406 |
+
}
|
407 |
+
div.ws-menu-page div.ws-menu-page-groups-show:hover,
|
408 |
+
div.ws-menu-page div.ws-menu-page-groups-hide:hover
|
409 |
+
{
|
410 |
+
background : #0D1F2F;
|
411 |
+
}
|
412 |
+
div.ws-menu-page div.ws-menu-page-groups-show:active,
|
413 |
+
div.ws-menu-page div.ws-menu-page-groups-hide:active
|
414 |
+
{
|
415 |
+
-webkit-transform : scale(0.98, 0.98);
|
416 |
+
transform : scale(0.98, 0.98);
|
417 |
+
}
|
418 |
+
div.ws-menu-page div.ws-menu-page-toolbox
|
419 |
+
{
|
420 |
+
float : right;
|
421 |
+
max-width : 300px;
|
422 |
+
|
423 |
+
z-index : 1;
|
424 |
+
position : relative;
|
425 |
+
}
|
426 |
+
div.ws-menu-page div.ws-menu-page-toolbox > .links
|
427 |
+
{
|
428 |
+
text-align : center;
|
429 |
+
}
|
430 |
+
div.ws-menu-page div.ws-menu-page-toolbox > .links a
|
431 |
+
{
|
432 |
+
display : inline-block;
|
433 |
+
margin : 0 10px 0 10px;
|
434 |
+
text-decoration : none;
|
435 |
+
}
|
436 |
+
|
437 |
/*
|
438 |
Specifically for the main layout table.
|
439 |
These CSS selectors address common layout styles.
|
440 |
*/
|
441 |
table.ws-menu-page-table
|
442 |
+
{
|
443 |
+
border : 0;
|
444 |
+
width : 100%;
|
445 |
+
table-layout : fixed;
|
446 |
+
}
|
447 |
+
table.ws-menu-page-table .notice,
|
448 |
+
table.ws-menu-page-table .info,
|
449 |
+
table.ws-menu-page-table .warning,
|
450 |
+
table.ws-menu-page-table .error
|
451 |
+
{
|
452 |
+
font-size : 100%;
|
453 |
+
font-style : italic;
|
454 |
+
|
455 |
+
padding : 5px;
|
456 |
+
margin : 1em 0 1em 0;
|
457 |
+
}
|
458 |
table.ws-menu-page-table ul,
|
459 |
table.ws-menu-page-table ol
|
460 |
+
{
|
461 |
+
margin : 10px 0 10px 20px;
|
462 |
+
}
|
463 |
table.ws-menu-page-table ul > li
|
464 |
+
{
|
465 |
+
margin-bottom : 0;
|
466 |
+
list-style : disc outside;
|
467 |
+
}
|
468 |
table.ws-menu-page-table ol > li
|
469 |
+
{
|
470 |
+
margin-bottom : 0;
|
471 |
+
list-style : decimal outside;
|
472 |
+
}
|
473 |
table.ws-menu-page-table > tbody > tr
|
474 |
+
{
|
475 |
+
vertical-align : top;
|
476 |
+
}
|
477 |
table.ws-menu-page-table td.ws-menu-page-table-l
|
478 |
+
{
|
479 |
+
padding : 0;
|
480 |
+
}
|
|
|
481 |
table.ws-menu-page-table td.ws-menu-page-table-r
|
482 |
+
{
|
483 |
+
padding : 0;
|
484 |
+
width : 30px;
|
485 |
+
box-sizing : border-box;
|
486 |
+
|
487 |
+
height : 100%;
|
488 |
+
position : relative;
|
489 |
+
}
|
490 |
+
table.ws-menu-page-table td.ws-menu-page-table-r.open
|
491 |
+
{
|
492 |
+
width : 310px;
|
493 |
+
}
|
494 |
+
table.ws-menu-page-table td.ws-menu-page-table-r > .toggler
|
495 |
+
{
|
496 |
+
width : 12px;
|
497 |
+
box-sizing : border-box;
|
498 |
+
position : absolute;
|
499 |
+
min-height : 100%;
|
500 |
+
|
501 |
+
z-index : 2;
|
502 |
+
top : 0;
|
503 |
+
right : 0;
|
504 |
+
|
505 |
+
background : #8EA7BD;
|
506 |
+
box-shadow : 0 0 0 2px #FFFFFF;
|
507 |
+
border-radius : 3px;
|
508 |
+
|
509 |
+
cursor : pointer;
|
510 |
+
-webkit-user-select : none;
|
511 |
+
-moz-user-select : none;
|
512 |
+
user-select : none;
|
513 |
+
}
|
514 |
+
table.ws-menu-page-table td.ws-menu-page-table-r > .toggler:hover
|
515 |
+
{
|
516 |
+
background : #74808B;
|
517 |
+
}
|
518 |
+
table.ws-menu-page-table td.ws-menu-page-table-r > .wrapper
|
519 |
+
{
|
520 |
+
margin : 0;
|
521 |
+
padding : 25px;
|
522 |
+
position : relative;
|
523 |
+
box-sizing : border-box;
|
524 |
+
min-height : 100%;
|
525 |
+
width : 250px;
|
526 |
+
|
527 |
+
z-index : 1;
|
528 |
+
top : 0;
|
529 |
+
left : 25px;
|
530 |
+
|
531 |
+
border-radius : 5px;
|
532 |
+
background : #B2BFCA;
|
533 |
+
border : 1px solid #656F79;
|
534 |
+
|
535 |
+
display : none;
|
536 |
+
}
|
537 |
+
td.ws-menu-page-table-r div.ws-menu-page-js-c-w,
|
538 |
+
td.ws-menu-page-table-r div.ws-menu-page-updates,
|
539 |
+
td.ws-menu-page-table-r div.ws-menu-page-installation,
|
540 |
+
td.ws-menu-page-table-r div.ws-menu-page-tools,
|
541 |
+
td.ws-menu-page-table-r div.ws-menu-page-kb,
|
542 |
+
td.ws-menu-page-table-r div.ws-menu-page-videos,
|
543 |
+
td.ws-menu-page-table-r div.ws-menu-page-support,
|
544 |
+
td.ws-menu-page-table-r div.ws-menu-page-donations,
|
545 |
+
td.ws-menu-page-table-r div.ws-menu-page-others
|
546 |
+
{
|
547 |
+
width : 200px;
|
548 |
+
margin : 0 0 25px 0;
|
549 |
+
}
|
550 |
+
td.ws-menu-page-table-r div.ws-menu-page-installation img,
|
551 |
+
td.ws-menu-page-table-r div.ws-menu-page-tools img,
|
552 |
+
td.ws-menu-page-table-r div.ws-menu-page-kb img,
|
553 |
+
td.ws-menu-page-table-r div.ws-menu-page-videos img,
|
554 |
+
td.ws-menu-page-table-r div.ws-menu-page-support img,
|
555 |
+
td.ws-menu-page-table-r div.ws-menu-page-donations img,
|
556 |
+
td.ws-menu-page-table-r div.ws-menu-page-others img
|
557 |
+
{
|
558 |
+
border : 0;
|
559 |
+
width : 200px;
|
560 |
+
height : auto;
|
561 |
+
}
|
562 |
table.ws-menu-page-table img.ws-menu-page-brand-icon
|
563 |
+
{
|
564 |
+
border : 0px;
|
565 |
+
float : right;
|
566 |
+
width : 128px;
|
567 |
+
height : 128px;
|
568 |
+
margin : 0 0 0 25px;
|
569 |
+
vertical-align : middle;
|
570 |
+
}
|
571 |
table.ws-menu-page-table img.ws-menu-page-brand-updates
|
572 |
+
{
|
573 |
+
border : 0px;
|
574 |
+
float : right;
|
575 |
+
width : 155px;
|
576 |
+
height : 40px;
|
577 |
+
margin : 0 -153px 0 25px;
|
578 |
+
vertical-align : middle;
|
579 |
+
}
|
580 |
table.ws-menu-page-table p.submit
|
581 |
+
{
|
582 |
+
margin : 0;
|
583 |
+
padding : 0;
|
584 |
+
}
|
585 |
+
table.ws-menu-page-table a[rel~="external"]
|
586 |
+
{
|
587 |
+
padding-right : 18px;
|
588 |
+
background : url('<?php echo $i; ?>/brand-xlink.png') no-repeat center right;
|
589 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
590 |
table.ws-menu-page-table div.ws-menu-page-group-header,
|
591 |
table.ws-menu-page-table div.ws-menu-page-r-group-header
|
592 |
+
{
|
593 |
+
z-index : 1;
|
594 |
+
position : relative;
|
595 |
+
|
596 |
+
padding : 10px;
|
597 |
+
font-size : 150%;
|
598 |
+
font-weight : bold;
|
599 |
+
line-height : 1em;
|
600 |
+
color : #EEEEEE;
|
601 |
+
background : #173B47;
|
602 |
+
|
603 |
+
border-radius : 5px;
|
604 |
+
box-shadow : 0 2px 2px 0 rgba(0, 0, 0, 0.25);
|
605 |
+
|
606 |
+
margin-bottom : 25px;
|
607 |
+
|
608 |
+
cursor : pointer;
|
609 |
+
-webkit-user-select : none;
|
610 |
+
-moz-user-select : none;
|
611 |
+
user-select : none;
|
612 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
613 |
table.ws-menu-page-table div.ws-menu-page-group-header:hover,
|
|
|
614 |
table.ws-menu-page-table div.ws-menu-page-r-group-header:hover,
|
615 |
+
table.ws-menu-page-table div.ws-menu-page-group-header.open,
|
616 |
table.ws-menu-page-table div.ws-menu-page-r-group-header.open
|
617 |
+
{
|
618 |
+
color : #FFFFFF;
|
619 |
+
background : #0D1F2F;
|
620 |
+
}
|
621 |
+
table.ws-menu-page-table div.ws-menu-page-group-header.open,
|
622 |
+
table.ws-menu-page-table div.ws-menu-page-r-group-header.open
|
623 |
+
{
|
624 |
+
margin-bottom : 0;
|
625 |
+
}
|
626 |
+
table.ws-menu-page-table div.ws-menu-page-group-header:after,
|
627 |
+
table.ws-menu-page-table div.ws-menu-page-r-group-header:after
|
628 |
+
{
|
629 |
+
font-size : 80%;
|
630 |
+
content : '\f078';
|
631 |
+
font-weight : normal;
|
632 |
+
font-family : 'FontAwesome';
|
633 |
+
|
634 |
+
float : right;
|
635 |
+
margin : 0 0 0 10px;
|
636 |
+
display : inline-block;
|
637 |
+
}
|
638 |
+
table.ws-menu-page-table div.ws-menu-page-group-header.open:after,
|
639 |
+
table.ws-menu-page-table div.ws-menu-page-r-group-header.open:after
|
640 |
+
{
|
641 |
+
content : '\f077';
|
642 |
+
}
|
643 |
table.ws-menu-page-table div.ws-menu-page-group,
|
644 |
table.ws-menu-page-table div.ws-menu-page-r-group
|
645 |
+
{
|
646 |
+
z-index : 0;
|
647 |
+
position : relative;
|
648 |
+
display : none;
|
649 |
+
|
650 |
+
padding : 25px;
|
651 |
+
color : #333333;
|
652 |
+
background : #D0DDAD;
|
653 |
+
|
654 |
+
border-bottom-left-radius : 5px;
|
655 |
+
border-bottom-right-radius : 5px;
|
656 |
+
|
657 |
+
box-shadow : 0 1px 1px 0 rgba(0, 0, 0, 0.5);
|
658 |
+
}
|
659 |
+
table.ws-menu-page-table div.ws-menu-page-group.open,
|
660 |
+
table.ws-menu-page-table div.ws-menu-page-r-group.open
|
661 |
+
{
|
662 |
+
display : block;
|
663 |
+
margin-bottom : 25px;
|
664 |
+
}
|
665 |
+
table.ws-menu-page-table div.ws-menu-page-group div.ws-menu-page-hr,
|
666 |
+
table.ws-menu-page-table div.ws-menu-page-r-group div.ws-menu-page-hr
|
667 |
+
{
|
668 |
+
background : #81E07D;
|
669 |
+
}
|
670 |
table.ws-menu-page-table div.ws-menu-page-group > div.ws-menu-page-hr,
|
671 |
table.ws-menu-page-table div.ws-menu-page-r-group > div.ws-menu-page-hr
|
672 |
+
{
|
673 |
+
margin : 15px 0 15px 0;
|
674 |
+
}
|
675 |
+
div.ws-menu-page-group > div.ws-menu-page-section:first-child > h3
|
676 |
+
{
|
677 |
+
margin-top : 0;
|
678 |
+
}
|
679 |
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr
|
680 |
+
{
|
681 |
+
vertical-align : top;
|
682 |
+
}
|
683 |
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > th
|
684 |
+
{
|
685 |
+
font-size : 115%;
|
686 |
+
color : #73834B;
|
687 |
+
font-family : 'Georgia', serif;
|
688 |
+
|
689 |
+
width : auto;
|
690 |
+
padding : 0 0.5em 0 0;
|
691 |
+
}
|
692 |
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > td
|
693 |
+
{
|
694 |
+
width : auto;
|
695 |
+
padding : 0.5em 0 0.5em 0;
|
696 |
+
}
|
697 |
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > th.ws-menu-page-th-side
|
698 |
+
{
|
699 |
+
width : 200px;
|
700 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
701 |
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > td > textarea
|
702 |
+
{
|
703 |
+
font-family : 'Monaco', 'Menlo', 'Consolas', 'Courier New', monospace;
|
704 |
+
}
|
705 |
+
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > td > * input[type='text'],
|
706 |
+
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > td > * input[type='password'],
|
707 |
+
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > td > * select
|
708 |
+
{
|
709 |
+
width : auto !important;
|
710 |
+
}
|
711 |
+
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > td > * input[id*='shortcode']
|
712 |
+
{
|
713 |
+
width : 100% !important;
|
714 |
+
}
|
715 |
+
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > td > input[type = 'checkbox'],
|
716 |
+
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > td > input[type = 'radio']
|
717 |
+
{
|
718 |
+
margin-right : 3px;
|
719 |
+
vertical-align : middle;
|
720 |
+
}
|
721 |
+
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > td > input[type = 'button'].ws-menu-page-media-btn
|
722 |
+
{
|
723 |
+
float : left;
|
724 |
+
margin : 5px 25px 0 0;
|
725 |
+
}
|
726 |
table.ws-menu-page-table div.ws-menu-page-group table.form-table > tbody > tr > td > div.ws-menu-page-scrollbox
|
727 |
+
{
|
728 |
+
margin : 1px;
|
729 |
+
padding : 5px;
|
730 |
+
height : 150px;
|
731 |
+
|
732 |
+
overflow-y : scroll;
|
733 |
+
overflow-x : visible;
|
734 |
+
|
735 |
+
border-radius : 4px;
|
736 |
+
border : 1px solid rgba(13, 31, 47, 0.5);
|
737 |
+
|
738 |
+
color : #FFFFFF;
|
739 |
+
background : #73834B;
|
740 |
+
box-shadow : 0 0 1px 0 rgba(0, 0, 0, 0.5) inset, 0 0 1px 1px rgba(223, 245, 165, 0.5);
|
741 |
+
}
|
742 |
+
|
743 |
/*
|
744 |
Specifically for info pages with readme files.
|
745 |
These CSS selectors address common layout styles.
|
746 |
*/
|
747 |
div.ws-menu-page-readme > div.readme > div.section
|
748 |
+
{
|
749 |
+
margin : 0 0 20px 0;
|
750 |
+
padding : 0 0 20px 0;
|
751 |
+
border : 0 solid #DDDDDD;
|
752 |
+
border-width : 0 0 1px 0;
|
753 |
+
}
|
754 |
+
div.ws-menu-page-readme > div.readme > div.section:last-child
|
755 |
+
{
|
756 |
+
border-bottom-width : 0;
|
757 |
+
}
|
758 |
div.ws-menu-page-readme > div.readme > div.section > h2
|
759 |
+
{
|
760 |
+
margin-top : 0;
|
761 |
+
padding-top : 0;
|
762 |
+
font-size : 150%;
|
763 |
+
}
|
764 |
div.ws-menu-page-readme > div.readme > div.section > div.content ul,
|
765 |
div.ws-menu-page-readme > div.readme > div.section > div.content ol
|
766 |
+
{
|
767 |
+
padding : 0;
|
768 |
+
margin : 10px 0 0 25px;
|
769 |
+
}
|
770 |
div.ws-menu-page-readme > div.readme > div.section > div.content ul > li
|
771 |
+
{
|
772 |
+
list-style : disc outside;
|
773 |
+
margin-bottom : 0;
|
774 |
+
}
|
775 |
div.ws-menu-page-readme > div.readme > div.section > div.content ol > li
|
776 |
+
{
|
777 |
+
list-style : decimal outside;
|
778 |
+
margin-bottom : 0;
|
779 |
+
}
|
780 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
781 |
/*
|
782 |
Specifically for the right sidebar panel.
|
783 |
- Specifically for the updates box.
|
784 |
These CSS selectors address common layout styles.
|
785 |
*/
|
786 |
div.ws-menu-page-updates ul
|
787 |
+
{
|
788 |
+
padding : 0;
|
789 |
+
margin : 0 0 0 12px;
|
790 |
+
}
|
791 |
div.ws-menu-page-updates ul > li
|
792 |
+
{
|
793 |
+
padding : 0;
|
794 |
+
margin : 5px 0 5px 0;
|
795 |
+
list-style : square outside;
|
796 |
+
-moz-user-select : none;
|
797 |
+
-webkit-user-select : none;
|
798 |
+
user-select : none;
|
799 |
+
}
|
800 |
div.ws-menu-page-updates ul > li:first-child
|
801 |
+
{
|
802 |
+
margin-top : 0;
|
803 |
+
}
|
804 |
div.ws-menu-page-updates a[target = "_blank"]
|
805 |
+
{
|
806 |
+
padding-right : 18px;
|
807 |
+
background : url('<?php echo $i; ?>/brand-xlink.png') no-repeat center right;
|
808 |
+
}
|
809 |
div.ws-menu-page-updates div#creditfooter
|
810 |
+
{
|
811 |
+
display : none;
|
812 |
+
}
|
813 |
div.ws-menu-page-updates div#ws-updates-div-fname,
|
814 |
div.ws-menu-page-updates div#ws-updates-div-lname,
|
815 |
div.ws-menu-page-updates div#ws-updates-div-email,
|
816 |
div.ws-menu-page-updates div#ws-updates-div-subs,
|
817 |
div.ws-menu-page-updates div#ws-updates-div-priv
|
818 |
+
{
|
819 |
+
margin : 0 0 10px 0;
|
820 |
+
}
|
821 |
div.ws-menu-page-updates div#ws-updates-div-subs
|
822 |
+
{
|
823 |
+
margin : 15px 0 0 0;
|
824 |
+
}
|
825 |
div.ws-menu-page-updates div#ws-updates-div-priv
|
826 |
+
{
|
827 |
+
font-size : 80%;
|
828 |
+
margin : 0 0 5px 0;
|
829 |
+
}
|
830 |
div.ws-menu-page-updates input[type = "text"],
|
831 |
div.ws-menu-page-updates input[type = "password"],
|
832 |
div.ws-menu-page-updates input[type = "submit"],
|
833 |
div.ws-menu-page-updates textarea,
|
834 |
div.ws-menu-page-updates select
|
835 |
+
{
|
836 |
+
width : 100%;
|
837 |
+
box-sizing : border-box;
|
838 |
+
-ms-box-sizing : border-box;
|
839 |
+
-moz-box-sizing : border-box;
|
840 |
+
-webkit-box-sizing : border-box;
|
841 |
+
}
|
|
|
842 |
div.ws-menu-page-updates input[type = "checkbox"],
|
843 |
div.ws-menu-page-updates input[type = "radio"]
|
844 |
+
{
|
845 |
+
margin-right : 3px;
|
846 |
+
vertical-align : middle;
|
847 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
includes/menu-pages/menu-pages.js
CHANGED
@@ -20,8 +20,6 @@
|
|
20 |
*/
|
21 |
jQuery(document).ready (function($)
|
22 |
{
|
23 |
-
$('div#ws-menu-page-js-c-w').hide /* Hide JavaScript conflict warning. */ ();
|
24 |
-
|
25 |
$(window).resize ( /* Global function. */tb_position /* Thickbox resizer/positioner. */ = function()
|
26 |
{
|
27 |
var w = ($(window).width () > 720) ? 720 : $(window).width (), h = $(window).height (), admin_bar_h = ($('body.admin-bar').length) ? 28 : 0;
|
@@ -29,48 +27,51 @@ jQuery(document).ready (function($)
|
|
29 |
$('#TB_ajaxContent').css ({'width': w - 50 + 'px', 'height': h - 75 - admin_bar_h + 'px', 'margin': 0, 'padding': 0});
|
30 |
});
|
31 |
|
|
|
|
|
|
|
32 |
var $groups = /* Query groups. */ $('div.ws-menu-page-group');
|
33 |
$groups.each ( /* Go through each group, one at a time. */function(index)
|
34 |
{
|
35 |
-
var $this = $(this),
|
36 |
|
37 |
-
var $header = $('<div class="ws-menu-page-group-header">' +
|
38 |
|
39 |
$header.css /* Stack them sequentially, top to bottom. */ ({'z-index': 1});
|
40 |
|
41 |
-
$header.insertBefore ($group), $
|
42 |
{
|
43 |
-
var $this = $(this), $
|
44 |
|
45 |
-
if ($
|
46 |
-
$this.
|
47 |
-
|
48 |
-
else // Else remove open class and hide group.
|
49 |
-
$this.removeClass ('open'), $ins.html ('+'), $group.hide ();
|
50 |
|
51 |
return /* Return. */ false;
|
52 |
});
|
53 |
-
if
|
54 |
{
|
55 |
-
$('<div class="ws-menu-page-groups-
|
|
|
56 |
{
|
57 |
$('div.ws-menu-page-group-header').each (function()
|
58 |
{
|
59 |
-
var $this = $(this), $
|
60 |
|
61 |
-
$this.
|
62 |
|
63 |
return; // Return.
|
64 |
});
|
65 |
return /* Return. */ false;
|
66 |
});
|
67 |
-
$('<div class="ws-menu-page-groups-
|
|
|
68 |
{
|
69 |
$('div.ws-menu-page-group-header').each (function()
|
70 |
{
|
71 |
-
var $this = $(this), $
|
72 |
|
73 |
-
$this.
|
74 |
|
75 |
return; // Return.
|
76 |
});
|
@@ -82,28 +83,27 @@ jQuery(document).ready (function($)
|
|
82 |
|
83 |
return; // Return.
|
84 |
});
|
85 |
-
|
86 |
-
|
87 |
-
|
88 |
-
|
89 |
-
|
|
|
|
|
|
|
|
|
90 |
$('div.ws-menu-page-r-group-header').click (function()
|
91 |
{
|
92 |
-
var $this = $(this), $group = $this.next (
|
93 |
|
94 |
-
if ($
|
95 |
-
$
|
|
|
96 |
|
97 |
-
else // Otherwise, we hide this group.
|
98 |
-
{
|
99 |
-
$('ins', $this).html ('+'), $this.removeClass ('open');
|
100 |
-
$group.hide ();
|
101 |
-
}
|
102 |
return /* Return. */ false;
|
103 |
});
|
104 |
$('div.ws-menu-page-group-header:first, div.ws-menu-page-r-group-header:first').css ({'margin-top': '0'});
|
105 |
-
$('div.ws-menu-page-group
|
106 |
-
$('div.ws-menu-page-readme > div.readme > div.section:last-child').css ({'border-bottom-width': '0'});
|
107 |
|
108 |
$('input.ws-menu-page-media-btn').filter ( /* Only those that have a rel attribute. */function()
|
109 |
{
|
20 |
*/
|
21 |
jQuery(document).ready (function($)
|
22 |
{
|
|
|
|
|
23 |
$(window).resize ( /* Global function. */tb_position /* Thickbox resizer/positioner. */ = function()
|
24 |
{
|
25 |
var w = ($(window).width () > 720) ? 720 : $(window).width (), h = $(window).height (), admin_bar_h = ($('body.admin-bar').length) ? 28 : 0;
|
27 |
$('#TB_ajaxContent').css ({'width': w - 50 + 'px', 'height': h - 75 - admin_bar_h + 'px', 'margin': 0, 'padding': 0});
|
28 |
});
|
29 |
|
30 |
+
var $rs = $('table.ws-menu-page-table td.ws-menu-page-table-r'),
|
31 |
+
$rsToggler = $('> .toggler', $rs), $rsWrapper = $('> .wrapper', $rs);
|
32 |
+
|
33 |
var $groups = /* Query groups. */ $('div.ws-menu-page-group');
|
34 |
$groups.each ( /* Go through each group, one at a time. */function(index)
|
35 |
{
|
36 |
+
var $this = $(this), $group = $this, title = $.trim ($group.attr ('title'));
|
37 |
|
38 |
+
var $header = $('<div class="ws-menu-page-group-header">' + title + '</div>');
|
39 |
|
40 |
$header.css /* Stack them sequentially, top to bottom. */ ({'z-index': 1});
|
41 |
|
42 |
+
$header.insertBefore ($group), $header.click (function()
|
43 |
{
|
44 |
+
var $this = $(this), $group = $this.next ();
|
45 |
|
46 |
+
if ($this.hasClass('open'))
|
47 |
+
$this.add($group).removeClass ('open');
|
48 |
+
else $this.add($group).addClass ('open');
|
|
|
|
|
49 |
|
50 |
return /* Return. */ false;
|
51 |
});
|
52 |
+
if ($groups.length > 1 && index === 0)
|
53 |
{
|
54 |
+
$('<div class="ws-menu-page-groups-hide"><i class="fa fa-chevron-up"></i></div>')
|
55 |
+
.insertBefore ('div.ws-menu-page-toolbox').click (function()
|
56 |
{
|
57 |
$('div.ws-menu-page-group-header').each (function()
|
58 |
{
|
59 |
+
var $this = $(this), $group = $this.next ();
|
60 |
|
61 |
+
$this.add($group).removeClass ('open');
|
62 |
|
63 |
return; // Return.
|
64 |
});
|
65 |
return /* Return. */ false;
|
66 |
});
|
67 |
+
$('<div class="ws-menu-page-groups-show"><i class="fa fa-chevron-down"></i></div>')
|
68 |
+
.insertBefore ('div.ws-menu-page-toolbox').click (function()
|
69 |
{
|
70 |
$('div.ws-menu-page-group-header').each (function()
|
71 |
{
|
72 |
+
var $this = $(this), $group = $this.next ();
|
73 |
|
74 |
+
$this.add($group).addClass ('open');
|
75 |
|
76 |
return; // Return.
|
77 |
});
|
83 |
|
84 |
return; // Return.
|
85 |
});
|
86 |
+
$rsToggler.click(function()
|
87 |
+
{
|
88 |
+
if($rs.hasClass('open'))
|
89 |
+
$rsWrapper.hide(), $rs.removeClass('open');
|
90 |
+
else // Open the sidebar (right-side).
|
91 |
+
$rsWrapper.show(), $rs.addClass('open');
|
92 |
+
});
|
93 |
+
if($rsToggler.attr('default-state') === 'open') $rsToggler.click();
|
94 |
+
|
95 |
$('div.ws-menu-page-r-group-header').click (function()
|
96 |
{
|
97 |
+
var $this = $(this), $group = $this.next ();
|
98 |
|
99 |
+
if ($this.hasClass('open'))
|
100 |
+
$this.add($group).removeClass ('open');
|
101 |
+
else $this.add($group).addClass ('open');
|
102 |
|
|
|
|
|
|
|
|
|
|
|
103 |
return /* Return. */ false;
|
104 |
});
|
105 |
$('div.ws-menu-page-group-header:first, div.ws-menu-page-r-group-header:first').css ({'margin-top': '0'});
|
106 |
+
$('div.ws-menu-page-group-header:last, div.ws-menu-page-r-group-header:last, div.ws-menu-page-group:last').css ({'margin-bottom': '0'});
|
|
|
107 |
|
108 |
$('input.ws-menu-page-media-btn').filter ( /* Only those that have a rel attribute. */function()
|
109 |
{
|
includes/menu-pages/mms-ops.inc.php
CHANGED
@@ -31,8 +31,11 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_mms_ops"))
|
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">'."\n";
|
33 |
|
34 |
-
echo '<div
|
35 |
-
|
|
|
|
|
|
|
36 |
|
37 |
echo '<table class="ws-menu-page-table">'."\n";
|
38 |
echo '<tbody class="ws-menu-page-table-tbody">'."\n";
|
@@ -297,7 +300,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_mms_ops"))
|
|
297 |
|
298 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
299 |
|
300 |
-
echo '<p class="submit"><input type="submit"
|
301 |
|
302 |
echo '</form>'."\n";
|
303 |
}
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">'."\n";
|
33 |
|
34 |
+
echo '<div class="ws-menu-page-toolbox">'."\n";
|
35 |
+
c_ws_plugin__s2member_menu_pages_tb::display ();
|
36 |
+
echo '</div>'."\n";
|
37 |
+
|
38 |
+
echo '<h2>Multisite Config</h2>'."\n";
|
39 |
|
40 |
echo '<table class="ws-menu-page-table">'."\n";
|
41 |
echo '<tbody class="ws-menu-page-table-tbody">'."\n";
|
300 |
|
301 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
302 |
|
303 |
+
echo '<p class="submit"><input type="submit" value="Save All Changes" /></p>'."\n";
|
304 |
|
305 |
echo '</form>'."\n";
|
306 |
}
|
includes/menu-pages/paypal-buttons.inc.php
CHANGED
@@ -31,8 +31,11 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_paypal_buttons"))
|
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">' . "\n";
|
33 |
|
34 |
-
echo '<div
|
35 |
-
|
|
|
|
|
|
|
36 |
|
37 |
echo '<table class="ws-menu-page-table">' . "\n";
|
38 |
echo '<tbody class="ws-menu-page-table-tbody">' . "\n";
|
@@ -73,7 +76,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_paypal_buttons"))
|
|
73 |
echo '<form onsubmit="return false;">' . "\n";
|
74 |
echo '<p id="ws-plugin--s2member-level' . $n . '-trial-line">I\'ll offer the first <input type="text" autocomplete="off" id="ws-plugin--s2member-level' . $n . '-trial-period" value="0" size="6" /> <select id="ws-plugin--s2member-level' . $n . '-trial-term">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-membership-trial-terms.php"))) . '</select> @ $<input type="text" autocomplete="off" id="ws-plugin--s2member-level' . $n . '-trial-amount" value="0.00" size="4" /></p>' . "\n";
|
75 |
echo '<p><span id="ws-plugin--s2member-level' . $n . '-trial-then">Then, </span>I want to charge: $<input type="text" autocomplete="off" id="ws-plugin--s2member-level' . $n . '-amount" value="0.01" size="4" /> / <select id="ws-plugin--s2member-level' . $n . '-term">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-membership-regular-terms.php"))) . '</select></p>' . "\n";
|
76 |
-
echo '<p>Checkout Page Style <a href="#" onclick="alert(\'Optional. This can be configured inside your PayPal account. PayPal allows you to create Custom Page Styles, and assign a unique name to them. You can add your own header image and color selection to the checkout form. Once you\\\'ve created a Custom Page Style at PayPal, you can enter that Page Style here.\\n\\nIn addition. The Shortcode below, provided by s2Member; supports an image attribute: image=\\\'\\\'default\\\'\\\'. This can be changed to a full URL, pointing to a custom image of your own; instead of the default PayPal Button image.\'); return false;" tabindex="-1">[?]</a>: <input type="text" autocomplete="off" id="ws-plugin--s2member-level' . $n . '-page-style" value="paypal" size="18" /> <select id="ws-plugin--s2member-level' . $n . '-currency">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-currencies.php"))) . '</select> <input type="button" value="Generate Button Code" onclick="ws_plugin__s2member_paypalButtonGenerate(\'level' . $n . '\');"
|
77 |
echo '<p>Description: <input type="text" autocomplete="off" id="ws-plugin--s2member-level' . $n . '-desc" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_label"]) . ' / description and pricing details here." size="73" /></p>' . "\n";
|
78 |
echo '<p' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? ' style="display:none;"' : '') . '>Custom Capabilities (comma-delimited) <a href="#" onclick="alert(\'Optional. This is VERY advanced.\\nSee: s2Member -› API Scripting -› Custom Capabilities.\\n\\n*ADVANCED TIP: You can specifiy a list of Custom Capabilities that will be (Added) with this purchase. Or, you could tell s2Member to (Remove All) Custom Capabilities that may or may not already exist for a particular Member, and (Add) only the new ones that you specify. To do this, just start your list of Custom Capabilities with `-all`.\\n\\nSo instead of just (Adding) Custom Capabilities:\\nmusic,videos,archives,gifts\\n\\nYou could (Remove All) that may already exist, and then (Add) new ones:\\n-all,calendar,forums,tools\\n\\nOr to just (Remove All) and (Add) nothing:\\n-all\'); return false;" tabindex="-1">[?]</a> <input type="text" maxlength="125" autocomplete="off" id="ws-plugin--s2member-level' . $n . '-ccaps" size="40" /></p>' . "\n";
|
79 |
echo '</form>' . "\n";
|
@@ -93,11 +96,11 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_paypal_buttons"))
|
|
93 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%level%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr ($n)), $ws_plugin__s2member_temp_s);
|
94 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%level_label%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_label"])), $ws_plugin__s2member_temp_s);
|
95 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%custom%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr ($_SERVER["HTTP_HOST"])), $ws_plugin__s2member_temp_s);
|
96 |
-
echo '<input type="text" autocomplete="off" id="ws-plugin--s2member-level' . $n . '-shortcode" value="' . format_to_edit ($ws_plugin__s2member_temp_s) . '" onclick="this.select ();"
|
97 |
|
98 |
echo '<div' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? ' style="display:none;"' : '') . '><br />' . "\n";
|
99 |
echo '<strong>Resulting PayPal Button Code:</strong> (ultimately, your Shortcode will produce this snippet)<br />' . "\n";
|
100 |
-
echo '<textarea id="ws-plugin--s2member-level' . $n . '-button" rows="8" wrap="off" onclick="this.select ();"
|
101 |
$ws_plugin__s2member_temp_s = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/buttons/paypal-checkout-button.php")));
|
102 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%endpoint%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_sandbox"]) ? "www.sandbox.paypal.com" : "www.paypal.com")), $ws_plugin__s2member_temp_s);
|
103 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%paypal_business%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_business"])), $ws_plugin__s2member_temp_s);
|
@@ -176,7 +179,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_paypal_buttons"))
|
|
176 |
|
177 |
echo '<p id="ws-plugin--s2member-modification-trial-line">I\'ll offer the first <input type="text" autocomplete="off" id="ws-plugin--s2member-modification-trial-period" value="0" size="6" /> <select id="ws-plugin--s2member-modification-trial-term">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-membership-trial-terms.php"))) . '</select> @ $<input type="text" autocomplete="off" id="ws-plugin--s2member-modification-trial-amount" value="0.00" size="4" /></p>' . "\n";
|
178 |
echo '<p><span id="ws-plugin--s2member-modification-trial-then">Then, </span>I want to charge: $<input type="text" autocomplete="off" id="ws-plugin--s2member-modification-amount" value="0.01" size="4" /> / <select id="ws-plugin--s2member-modification-term">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-membership-regular-terms.php"))) . '</select></p>' . "\n";
|
179 |
-
echo '<p>Checkout Page Style <a href="#" onclick="alert(\'Optional. This can be configured inside your PayPal account. PayPal allows you to create Custom Page Styles, and assign a unique name to them. You can add your own header image and color selection to the checkout form. Once you\\\'ve created a Custom Page Style at PayPal, you can enter that Page Style here.\\n\\nIn addition. The Shortcode below, provided by s2Member; supports an image attribute: image=\\\'\\\'default\\\'\\\'. This can be changed to a full URL, pointing to a custom image of your own; instead of the default PayPal Button image.\'); return false;" tabindex="-1">[?]</a>: <input type="text" autocomplete="off" id="ws-plugin--s2member-modification-page-style" value="paypal" size="18" /> <select id="ws-plugin--s2member-modification-currency">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-currencies.php"))) . '</select> <input type="button" value="Generate Button Code" onclick="ws_plugin__s2member_paypalButtonGenerate(\'modification\');"
|
180 |
echo '<p>Description: <input type="text" autocomplete="off" id="ws-plugin--s2member-modification-desc" value="Description and pricing details here." size="73" /></p>' . "\n";
|
181 |
echo '<p' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? ' style="display:none;"' : '') . '>Custom Capabilities (comma-delimited) <a href="#" onclick="alert(\'Optional. This is VERY advanced.\\nSee: s2Member -› API Scripting -› Custom Capabilities.\\n\\n*ADVANCED TIP: You can specifiy a list of Custom Capabilities that will be (Added) with this purchase. Or, you could tell s2Member to (Remove All) Custom Capabilities that may or may not already exist for a particular Member, and (Add) only the new ones that you specify. To do this, just start your list of Custom Capabilities with `-all`.\\n\\nSo instead of just (Adding) Custom Capabilities:\\nmusic,videos,archives,gifts\\n\\nYou could (Remove All) that may already exist, and then (Add) new ones:\\n-all,calendar,forums,tools\\n\\nOr to just (Remove All) and (Add) nothing:\\n-all\'); return false;" tabindex="-1">[?]</a> <input type="text" maxlength="125" autocomplete="off" id="ws-plugin--s2member-modification-ccaps" size="40" /></p>' . "\n";
|
182 |
echo '</form>' . "\n";
|
@@ -194,11 +197,11 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_paypal_buttons"))
|
|
194 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%level_label%% /", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level1_label"])), $ws_plugin__s2member_temp_s);
|
195 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%custom%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr ($_SERVER["HTTP_HOST"])), $ws_plugin__s2member_temp_s);
|
196 |
$ws_plugin__s2member_temp_s = preg_replace ("/\/]$/", 'modify="1" /]', $ws_plugin__s2member_temp_s); // Adds modify="1" to the end of the Shortcode.
|
197 |
-
echo '<input type="text" autocomplete="off" id="ws-plugin--s2member-modification-shortcode" value="' . format_to_edit ($ws_plugin__s2member_temp_s) . '" onclick="this.select ();"
|
198 |
|
199 |
echo '<div' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? ' style="display:none;"' : '') . '><br />' . "\n";
|
200 |
echo '<strong>Resulting PayPal Button Code:</strong> (ultimately, your Shortcode will produce this snippet)<br />' . "\n";
|
201 |
-
echo '<textarea id="ws-plugin--s2member-modification-button" rows="8" wrap="off" onclick="this.select ();"
|
202 |
$ws_plugin__s2member_temp_s = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/buttons/paypal-checkout-button.php")));
|
203 |
$ws_plugin__s2member_temp_s = preg_replace ('/name\="modify" value\="(.*?)"/', 'name="modify" value="1"', $ws_plugin__s2member_temp_s);
|
204 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%endpoint%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_sandbox"]) ? "www.sandbox.paypal.com" : "www.paypal.com")), $ws_plugin__s2member_temp_s);
|
@@ -259,7 +262,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_paypal_buttons"))
|
|
259 |
echo '<td>' . "\n";
|
260 |
echo '<form onsubmit="return false;">' . "\n";
|
261 |
echo '<p>I want to charge: $<input type="text" autocomplete="off" id="ws-plugin--s2member-ccap-amount" value="0.01" size="4" /> / <select id="ws-plugin--s2member-ccap-term">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-membership-ccap-terms.php"))) . '</select></p>' . "\n";
|
262 |
-
echo '<p>Checkout Page Style <a href="#" onclick="alert(\'Optional. This can be configured inside your PayPal account. PayPal allows you to create Custom Page Styles, and assign a unique name to them. You can add your own header image and color selection to the checkout form. Once you\\\'ve created a Custom Page Style at PayPal, you can enter that Page Style here.\\n\\nIn addition. The Shortcode below, provided by s2Member; supports an image attribute: image=\\\'\\\'default\\\'\\\'. This can be changed to a full URL, pointing to a custom image of your own; instead of the default PayPal Button image.\'); return false;" tabindex="-1">[?]</a>: <input type="text" autocomplete="off" id="ws-plugin--s2member-ccap-page-style" value="paypal" size="18" /> <select id="ws-plugin--s2member-ccap-currency">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-currencies.php"))) . '</select> <input type="button" value="Generate Button Code" onclick="ws_plugin__s2member_paypalCcapButtonGenerate();"
|
263 |
echo '<p>Description: <input type="text" autocomplete="off" id="ws-plugin--s2member-ccap-desc" value="Description and pricing details here." size="73" /></p>' . "\n";
|
264 |
echo '<p>Custom Capabilities (comma-delimited) <a href="#" onclick="alert(\'Optional. This is VERY advanced.\\nSee: s2Member -› API Scripting -› Custom Capabilities.\\n\\n*ADVANCED TIP: You can specifiy a list of Custom Capabilities that will be (Added) with this purchase. Or, you could tell s2Member to (Remove All) Custom Capabilities that may or may not already exist for a particular Member, and (Add) only the new ones that you specify. To do this, just start your list of Custom Capabilities with `-all`.\\n\\nSo instead of just (Adding) Custom Capabilities:\\nmusic,videos,archives,gifts\\n\\nYou could (Remove All) that may already exist, and then (Add) new ones:\\n-all,calendar,forums,tools\'); return false;" tabindex="-1">[?]</a> <input type="text" maxlength="125" autocomplete="off" id="ws-plugin--s2member-ccap-ccaps" size="40" /></p>' . "\n";
|
265 |
echo '</form>' . "\n";
|
@@ -274,11 +277,11 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_paypal_buttons"))
|
|
274 |
echo '<strong>WordPress Shortcode:</strong> (recommended for both the WordPress Visual & HTML Editors)<br />' . "\n";
|
275 |
$ws_plugin__s2member_temp_s = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/shortcodes/paypal-ccaps-checkout-button-shortcode.php")));
|
276 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%custom%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr ($_SERVER["HTTP_HOST"])), $ws_plugin__s2member_temp_s);
|
277 |
-
echo '<input type="text" autocomplete="off" id="ws-plugin--s2member-ccap-shortcode" value="' . format_to_edit ($ws_plugin__s2member_temp_s) . '" onclick="this.select ();"
|
278 |
|
279 |
echo '<div' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? ' style="display:none;"' : '') . '><br />' . "\n";
|
280 |
echo '<strong>Resulting PayPal Button Code:</strong> (ultimately, your Shortcode will produce this snippet)<br />' . "\n";
|
281 |
-
echo '<textarea id="ws-plugin--s2member-ccap-button" rows="8" wrap="off" onclick="this.select ();"
|
282 |
$ws_plugin__s2member_temp_s = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/buttons/paypal-ccaps-checkout-button.php")));
|
283 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%endpoint%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_sandbox"]) ? "www.sandbox.paypal.com" : "www.paypal.com")), $ws_plugin__s2member_temp_s);
|
284 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%paypal_business%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_business"])), $ws_plugin__s2member_temp_s);
|
@@ -353,11 +356,11 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_paypal_buttons"))
|
|
353 |
do_action ("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_during_cancellation_buttons_before_shortcode", get_defined_vars ());
|
354 |
echo '<strong>WordPress Shortcode:</strong> (recommended for both the WordPress Visual & HTML Editors)<br />' . "\n";
|
355 |
$ws_plugin__s2member_temp_s = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/shortcodes/paypal-cancellation-button-shortcode.php")));
|
356 |
-
echo '<input type="text" autocomplete="off" id="ws-plugin--s2member-cancellation-shortcode" value="' . format_to_edit ($ws_plugin__s2member_temp_s) . '" onclick="this.select ();"
|
357 |
|
358 |
echo '<div' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? ' style="display:none;"' : '') . '><br />' . "\n";
|
359 |
echo '<strong>Resulting PayPal Button Code:</strong> (ultimately, your Shortcode will produce this snippet)<br />' . "\n";
|
360 |
-
echo '<textarea id="ws-plugin--s2member-cancellation-button" rows="8" wrap="off" onclick="this.select ();"
|
361 |
$ws_plugin__s2member_temp_s = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/buttons/paypal-cancellation-button.php")));
|
362 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%endpoint%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_sandbox"]) ? "www.sandbox.paypal.com" : "www.paypal.com")), $ws_plugin__s2member_temp_s);
|
363 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%paypal_business%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_business"])), $ws_plugin__s2member_temp_s);
|
@@ -403,10 +406,10 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_paypal_buttons"))
|
|
403 |
echo '<option value="' . $n . '">s2Member Level #' . $n . '</option>' . "\n";
|
404 |
echo '</select></p>' . "\n";
|
405 |
echo '<p>Paid Subscr. ID: <input type="text" autocomplete="off" id="ws-plugin--s2member-reg-link-subscr-id" value="" size="50" /> <a href="#" onclick="alert(\'The Customer\\\'s Paid Subscr. ID (aka: Recurring Profile ID, Transaction ID) must be unique. This value can be obtained from inside your PayPal account under the History tab. Each paying Customer MUST be associated with a unique Paid Subscr. ID. If the Customer is NOT associated with a Paid Subscr. ID, you will need to generate a unique value for this field on your own. But keep in mind, s2Member will be unable to maintain future communication with the PayPal IPN (i.e. Notification) service if this value does not reflect a real Paid Subscr. ID that exists in your PayPal History log.\'); return false;" tabindex="-1">[?]</a></p>' . "\n";
|
406 |
-
echo '<p>Custom String Value: <input type="text" autocomplete="off" id="ws-plugin--s2member-reg-link-custom" value="' . esc_attr ($_SERVER["HTTP_HOST"]) . '" size="30" /> <a href="#" onclick="alert(\'A Paid Subscription is always associated with a Custom String that is passed through the custom=\\\'\\\'' . c_ws_plugin__s2member_utils_strings::esc_js_sq (esc_attr ($_SERVER["HTTP_HOST"]), 3) . '\\\'\\\' attribute of your Shortcode. This Custom Value, MUST always start with your domain name. However, you can also pipe delimit additional values after your domain, if you need to.\\n\\nFor example:\n' . c_ws_plugin__s2member_utils_strings::esc_js_sq (esc_attr ($_SERVER["HTTP_HOST"]), 3) . '|cv1|cv2|cv3\'); return false;" tabindex="-1">[?]</a> <input type="button" value="Generate Access Link" onclick="ws_plugin__s2member_paypalRegLinkGenerate();"
|
407 |
echo '<p' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? ' style="display:none;"' : '') . '>Custom Capabilities (comma-delimited) <a href="#" onclick="alert(\'Optional. This is VERY advanced.\\nSee: s2Member -› API Scripting -› Custom Capabilities.\'); return false;" tabindex="-1">[?]</a> <input type="text" maxlength="125" autocomplete="off" id="ws-plugin--s2member-reg-link-ccaps" size="40" onkeyup="if(this.value.match(/[^a-z_0-9,]/)) this.value = jQuery.trim (jQuery.trim (this.value).replace (/[ \-]/g, \'_\').replace (/[^a-z_0-9,]/gi, \'\').toLowerCase ());" /></p>' . "\n";
|
408 |
echo '<p>Fixed Term Length (for Buy Now transactions): <input type="text" autocomplete="off" id="ws-plugin--s2member-reg-link-fixed-term" value="" size="10" /> <a href="#" onclick="alert(\'If the Customer purchased Membership through a Buy Now transaction (i.e. there is no Initial/Trial Period and no recurring charges for ongoing access), you may configure a Fixed Term Length in this field. This way the Customer\\\'s Membership Access is automatically revoked by s2Member at the appropriate time. This will be a numeric value, followed by a space, then a single letter.\\n\\nHere are some examples:\\n\\n1 D (this means 1 Day)\\n1 W (this means 1 Week)\\n1 M (this means 1 Month)\\n1 Y (this means 1 Year)\\n1 L (this means 1 Lifetime)\'); return false;">[?]</a></p>' . "\n";
|
409 |
-
echo '<p id="ws-plugin--s2member-reg-link"
|
410 |
echo '</form>' . "\n";
|
411 |
echo '</td>' . "\n";
|
412 |
|
@@ -469,7 +472,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_paypal_buttons"))
|
|
469 |
|
470 |
echo '<p>I want to charge: $<input type="text" autocomplete="off" id="ws-plugin--s2member-sp-amount" value="0.01" size="4" /> / <select id="ws-plugin--s2member-sp-hours">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-sp-hours.php"))) . '</select></p>' . "\n";
|
471 |
echo '<p>Description: <input type="text" autocomplete="off" id="ws-plugin--s2member-sp-desc" value="Description and pricing details here." size="68" /></p>' . "\n";
|
472 |
-
echo '<p>Checkout Page Style <a href="#" onclick="alert(\'Optional. This can be configured inside your PayPal account. PayPal allows you to create Custom Page Styles, and assign a unique name to them. You can add your own header image and color selection to the checkout form. Once you\\\'ve created a Custom Page Style at PayPal, you can enter that Page Style here.\\n\\nIn addition. The Shortcode below, provided by s2Member; supports an image attribute: image=\\\'\\\'default\\\'\\\'. This can be changed to a full URL, pointing to a custom image of your own; instead of the default PayPal Button image.\'); return false;" tabindex="-1">[?]</a>: <input type="text" autocomplete="off" id="ws-plugin--s2member-sp-page-style" value="paypal" size="18" /> <select id="ws-plugin--s2member-sp-currency">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-currencies.php"))) . '</select> <input type="button" value="Generate Button Code" onclick="ws_plugin__s2member_paypalSpButtonGenerate();"
|
473 |
echo '</form>' . "\n";
|
474 |
echo '</td>' . "\n";
|
475 |
|
@@ -482,11 +485,11 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_paypal_buttons"))
|
|
482 |
echo '<strong>WordPress Shortcode:</strong> (recommended for both the WordPress Visual & HTML Editors)<br />' . "\n";
|
483 |
$ws_plugin__s2member_temp_s = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/shortcodes/paypal-sp-checkout-button-shortcode.php")));
|
484 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%custom%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr ($_SERVER["HTTP_HOST"])), $ws_plugin__s2member_temp_s);
|
485 |
-
echo '<input type="text" autocomplete="off" id="ws-plugin--s2member-sp-shortcode" value="' . format_to_edit ($ws_plugin__s2member_temp_s) . '" onclick="this.select ();"
|
486 |
|
487 |
echo '<div' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? ' style="display:none;"' : '') . '><br />' . "\n";
|
488 |
echo '<strong>Resulting PayPal Button Code:</strong> (ultimately, your Shortcode will produce this snippet)<br />' . "\n";
|
489 |
-
echo '<textarea id="ws-plugin--s2member-sp-button" rows="8" wrap="off" onclick="this.select ();"
|
490 |
$ws_plugin__s2member_temp_s = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/buttons/paypal-sp-checkout-button.php")));
|
491 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%endpoint%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_sandbox"]) ? "www.sandbox.paypal.com" : "www.paypal.com")), $ws_plugin__s2member_temp_s);
|
492 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%paypal_business%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_business"])), $ws_plugin__s2member_temp_s);
|
@@ -550,8 +553,8 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_paypal_buttons"))
|
|
550 |
|
551 |
echo '</optgroup></select> <a href="#" onclick="alert(\'Hold down your `Ctrl` key to select multiples.\\n\\nOptional. If you include Additional Posts/Pages, Customers will still land on your Leading Post/Page; BUT, they\\\'ll ALSO have access to some Additional Posts/Pages that you\\\'ve protected. This gives you the ability to create Post/Page Packages.\\n\\nIn other words, a Customer is sold a Specific Post/Page (they\\\'ll land on your Leading Post/Page after checkout), which might contain links to some other Posts/Pages that you\\\'ve packaged together under one transaction.\\n\\nBundling Additional Posts/Pages into one Package, authenticates the Customer for access to the Additional Posts/Pages automatically (e.g. only one Access Link is needed, and s2Member generates this automatically). However, you will STILL need to design your Leading Post/Page (which is what a Customer will actually land on), with links pointing to the other Posts/Pages. This way your Customers will have clickable links to everything they\\\'ve paid for.\\n\\n*Quick Summary* s2Member sends Customers to your Leading Post/Page, and also authenticates them for access to any Additional Posts/Pages automatically. You handle it from there.\\n\\n*Tip* If there are no Posts/Pages in this menu, it\\\'s because you\\\'ve not configured s2Member for Specific Post/Page Access yet. See: s2Member -› Restriction Options -› Specific Post/Page Access.\'); return false;" tabindex="-1">[?]</a></p>' . "\n";
|
552 |
|
553 |
-
echo '<p><select id="ws-plugin--s2member-sp-link-hours">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-sp-hours.php"))) . '</select> <input type="button" value="Generate Access Link" onclick="ws_plugin__s2member_paypalSpLinkGenerate();"
|
554 |
-
echo '<p id="ws-plugin--s2member-sp-link"
|
555 |
echo '</form>' . "\n";
|
556 |
echo '</td>' . "\n";
|
557 |
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">' . "\n";
|
33 |
|
34 |
+
echo '<div class="ws-menu-page-toolbox">'."\n";
|
35 |
+
c_ws_plugin__s2member_menu_pages_tb::display ();
|
36 |
+
echo '</div>'."\n";
|
37 |
+
|
38 |
+
echo '<h2>PayPal Buttons</h2>' . "\n";
|
39 |
|
40 |
echo '<table class="ws-menu-page-table">' . "\n";
|
41 |
echo '<tbody class="ws-menu-page-table-tbody">' . "\n";
|
76 |
echo '<form onsubmit="return false;">' . "\n";
|
77 |
echo '<p id="ws-plugin--s2member-level' . $n . '-trial-line">I\'ll offer the first <input type="text" autocomplete="off" id="ws-plugin--s2member-level' . $n . '-trial-period" value="0" size="6" /> <select id="ws-plugin--s2member-level' . $n . '-trial-term">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-membership-trial-terms.php"))) . '</select> @ $<input type="text" autocomplete="off" id="ws-plugin--s2member-level' . $n . '-trial-amount" value="0.00" size="4" /></p>' . "\n";
|
78 |
echo '<p><span id="ws-plugin--s2member-level' . $n . '-trial-then">Then, </span>I want to charge: $<input type="text" autocomplete="off" id="ws-plugin--s2member-level' . $n . '-amount" value="0.01" size="4" /> / <select id="ws-plugin--s2member-level' . $n . '-term">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-membership-regular-terms.php"))) . '</select></p>' . "\n";
|
79 |
+
echo '<p>Checkout Page Style <a href="#" onclick="alert(\'Optional. This can be configured inside your PayPal account. PayPal allows you to create Custom Page Styles, and assign a unique name to them. You can add your own header image and color selection to the checkout form. Once you\\\'ve created a Custom Page Style at PayPal, you can enter that Page Style here.\\n\\nIn addition. The Shortcode below, provided by s2Member; supports an image attribute: image=\\\'\\\'default\\\'\\\'. This can be changed to a full URL, pointing to a custom image of your own; instead of the default PayPal Button image.\'); return false;" tabindex="-1">[?]</a>: <input type="text" autocomplete="off" id="ws-plugin--s2member-level' . $n . '-page-style" value="paypal" size="18" /> <select id="ws-plugin--s2member-level' . $n . '-currency">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-currencies.php"))) . '</select> <input type="button" value="Generate Button Code" onclick="ws_plugin__s2member_paypalButtonGenerate(\'level' . $n . '\');" /></p>' . "\n";
|
80 |
echo '<p>Description: <input type="text" autocomplete="off" id="ws-plugin--s2member-level' . $n . '-desc" value="' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_label"]) . ' / description and pricing details here." size="73" /></p>' . "\n";
|
81 |
echo '<p' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? ' style="display:none;"' : '') . '>Custom Capabilities (comma-delimited) <a href="#" onclick="alert(\'Optional. This is VERY advanced.\\nSee: s2Member -› API Scripting -› Custom Capabilities.\\n\\n*ADVANCED TIP: You can specifiy a list of Custom Capabilities that will be (Added) with this purchase. Or, you could tell s2Member to (Remove All) Custom Capabilities that may or may not already exist for a particular Member, and (Add) only the new ones that you specify. To do this, just start your list of Custom Capabilities with `-all`.\\n\\nSo instead of just (Adding) Custom Capabilities:\\nmusic,videos,archives,gifts\\n\\nYou could (Remove All) that may already exist, and then (Add) new ones:\\n-all,calendar,forums,tools\\n\\nOr to just (Remove All) and (Add) nothing:\\n-all\'); return false;" tabindex="-1">[?]</a> <input type="text" maxlength="125" autocomplete="off" id="ws-plugin--s2member-level' . $n . '-ccaps" size="40" /></p>' . "\n";
|
82 |
echo '</form>' . "\n";
|
96 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%level%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr ($n)), $ws_plugin__s2member_temp_s);
|
97 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%level_label%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_label"])), $ws_plugin__s2member_temp_s);
|
98 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%custom%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr ($_SERVER["HTTP_HOST"])), $ws_plugin__s2member_temp_s);
|
99 |
+
echo '<input type="text" autocomplete="off" id="ws-plugin--s2member-level' . $n . '-shortcode" value="' . format_to_edit ($ws_plugin__s2member_temp_s) . '" onclick="this.select ();" class="monospace" />' . "\n";
|
100 |
|
101 |
echo '<div' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? ' style="display:none;"' : '') . '><br />' . "\n";
|
102 |
echo '<strong>Resulting PayPal Button Code:</strong> (ultimately, your Shortcode will produce this snippet)<br />' . "\n";
|
103 |
+
echo '<textarea id="ws-plugin--s2member-level' . $n . '-button" rows="8" wrap="off" onclick="this.select ();" class="monospace">';
|
104 |
$ws_plugin__s2member_temp_s = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/buttons/paypal-checkout-button.php")));
|
105 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%endpoint%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_sandbox"]) ? "www.sandbox.paypal.com" : "www.paypal.com")), $ws_plugin__s2member_temp_s);
|
106 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%paypal_business%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_business"])), $ws_plugin__s2member_temp_s);
|
179 |
|
180 |
echo '<p id="ws-plugin--s2member-modification-trial-line">I\'ll offer the first <input type="text" autocomplete="off" id="ws-plugin--s2member-modification-trial-period" value="0" size="6" /> <select id="ws-plugin--s2member-modification-trial-term">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-membership-trial-terms.php"))) . '</select> @ $<input type="text" autocomplete="off" id="ws-plugin--s2member-modification-trial-amount" value="0.00" size="4" /></p>' . "\n";
|
181 |
echo '<p><span id="ws-plugin--s2member-modification-trial-then">Then, </span>I want to charge: $<input type="text" autocomplete="off" id="ws-plugin--s2member-modification-amount" value="0.01" size="4" /> / <select id="ws-plugin--s2member-modification-term">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-membership-regular-terms.php"))) . '</select></p>' . "\n";
|
182 |
+
echo '<p>Checkout Page Style <a href="#" onclick="alert(\'Optional. This can be configured inside your PayPal account. PayPal allows you to create Custom Page Styles, and assign a unique name to them. You can add your own header image and color selection to the checkout form. Once you\\\'ve created a Custom Page Style at PayPal, you can enter that Page Style here.\\n\\nIn addition. The Shortcode below, provided by s2Member; supports an image attribute: image=\\\'\\\'default\\\'\\\'. This can be changed to a full URL, pointing to a custom image of your own; instead of the default PayPal Button image.\'); return false;" tabindex="-1">[?]</a>: <input type="text" autocomplete="off" id="ws-plugin--s2member-modification-page-style" value="paypal" size="18" /> <select id="ws-plugin--s2member-modification-currency">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-currencies.php"))) . '</select> <input type="button" value="Generate Button Code" onclick="ws_plugin__s2member_paypalButtonGenerate(\'modification\');" /></p>' . "\n";
|
183 |
echo '<p>Description: <input type="text" autocomplete="off" id="ws-plugin--s2member-modification-desc" value="Description and pricing details here." size="73" /></p>' . "\n";
|
184 |
echo '<p' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? ' style="display:none;"' : '') . '>Custom Capabilities (comma-delimited) <a href="#" onclick="alert(\'Optional. This is VERY advanced.\\nSee: s2Member -› API Scripting -› Custom Capabilities.\\n\\n*ADVANCED TIP: You can specifiy a list of Custom Capabilities that will be (Added) with this purchase. Or, you could tell s2Member to (Remove All) Custom Capabilities that may or may not already exist for a particular Member, and (Add) only the new ones that you specify. To do this, just start your list of Custom Capabilities with `-all`.\\n\\nSo instead of just (Adding) Custom Capabilities:\\nmusic,videos,archives,gifts\\n\\nYou could (Remove All) that may already exist, and then (Add) new ones:\\n-all,calendar,forums,tools\\n\\nOr to just (Remove All) and (Add) nothing:\\n-all\'); return false;" tabindex="-1">[?]</a> <input type="text" maxlength="125" autocomplete="off" id="ws-plugin--s2member-modification-ccaps" size="40" /></p>' . "\n";
|
185 |
echo '</form>' . "\n";
|
197 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%level_label%% /", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level1_label"])), $ws_plugin__s2member_temp_s);
|
198 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%custom%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr ($_SERVER["HTTP_HOST"])), $ws_plugin__s2member_temp_s);
|
199 |
$ws_plugin__s2member_temp_s = preg_replace ("/\/]$/", 'modify="1" /]', $ws_plugin__s2member_temp_s); // Adds modify="1" to the end of the Shortcode.
|
200 |
+
echo '<input type="text" autocomplete="off" id="ws-plugin--s2member-modification-shortcode" value="' . format_to_edit ($ws_plugin__s2member_temp_s) . '" onclick="this.select ();" class="monospace" />' . "\n";
|
201 |
|
202 |
echo '<div' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? ' style="display:none;"' : '') . '><br />' . "\n";
|
203 |
echo '<strong>Resulting PayPal Button Code:</strong> (ultimately, your Shortcode will produce this snippet)<br />' . "\n";
|
204 |
+
echo '<textarea id="ws-plugin--s2member-modification-button" rows="8" wrap="off" onclick="this.select ();" class="monospace">';
|
205 |
$ws_plugin__s2member_temp_s = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/buttons/paypal-checkout-button.php")));
|
206 |
$ws_plugin__s2member_temp_s = preg_replace ('/name\="modify" value\="(.*?)"/', 'name="modify" value="1"', $ws_plugin__s2member_temp_s);
|
207 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%endpoint%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_sandbox"]) ? "www.sandbox.paypal.com" : "www.paypal.com")), $ws_plugin__s2member_temp_s);
|
262 |
echo '<td>' . "\n";
|
263 |
echo '<form onsubmit="return false;">' . "\n";
|
264 |
echo '<p>I want to charge: $<input type="text" autocomplete="off" id="ws-plugin--s2member-ccap-amount" value="0.01" size="4" /> / <select id="ws-plugin--s2member-ccap-term">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-membership-ccap-terms.php"))) . '</select></p>' . "\n";
|
265 |
+
echo '<p>Checkout Page Style <a href="#" onclick="alert(\'Optional. This can be configured inside your PayPal account. PayPal allows you to create Custom Page Styles, and assign a unique name to them. You can add your own header image and color selection to the checkout form. Once you\\\'ve created a Custom Page Style at PayPal, you can enter that Page Style here.\\n\\nIn addition. The Shortcode below, provided by s2Member; supports an image attribute: image=\\\'\\\'default\\\'\\\'. This can be changed to a full URL, pointing to a custom image of your own; instead of the default PayPal Button image.\'); return false;" tabindex="-1">[?]</a>: <input type="text" autocomplete="off" id="ws-plugin--s2member-ccap-page-style" value="paypal" size="18" /> <select id="ws-plugin--s2member-ccap-currency">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-currencies.php"))) . '</select> <input type="button" value="Generate Button Code" onclick="ws_plugin__s2member_paypalCcapButtonGenerate();" /></p>' . "\n";
|
266 |
echo '<p>Description: <input type="text" autocomplete="off" id="ws-plugin--s2member-ccap-desc" value="Description and pricing details here." size="73" /></p>' . "\n";
|
267 |
echo '<p>Custom Capabilities (comma-delimited) <a href="#" onclick="alert(\'Optional. This is VERY advanced.\\nSee: s2Member -› API Scripting -› Custom Capabilities.\\n\\n*ADVANCED TIP: You can specifiy a list of Custom Capabilities that will be (Added) with this purchase. Or, you could tell s2Member to (Remove All) Custom Capabilities that may or may not already exist for a particular Member, and (Add) only the new ones that you specify. To do this, just start your list of Custom Capabilities with `-all`.\\n\\nSo instead of just (Adding) Custom Capabilities:\\nmusic,videos,archives,gifts\\n\\nYou could (Remove All) that may already exist, and then (Add) new ones:\\n-all,calendar,forums,tools\'); return false;" tabindex="-1">[?]</a> <input type="text" maxlength="125" autocomplete="off" id="ws-plugin--s2member-ccap-ccaps" size="40" /></p>' . "\n";
|
268 |
echo '</form>' . "\n";
|
277 |
echo '<strong>WordPress Shortcode:</strong> (recommended for both the WordPress Visual & HTML Editors)<br />' . "\n";
|
278 |
$ws_plugin__s2member_temp_s = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/shortcodes/paypal-ccaps-checkout-button-shortcode.php")));
|
279 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%custom%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr ($_SERVER["HTTP_HOST"])), $ws_plugin__s2member_temp_s);
|
280 |
+
echo '<input type="text" autocomplete="off" id="ws-plugin--s2member-ccap-shortcode" value="' . format_to_edit ($ws_plugin__s2member_temp_s) . '" onclick="this.select ();" class="monospace" />' . "\n";
|
281 |
|
282 |
echo '<div' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? ' style="display:none;"' : '') . '><br />' . "\n";
|
283 |
echo '<strong>Resulting PayPal Button Code:</strong> (ultimately, your Shortcode will produce this snippet)<br />' . "\n";
|
284 |
+
echo '<textarea id="ws-plugin--s2member-ccap-button" rows="8" wrap="off" onclick="this.select ();" class="monospace">';
|
285 |
$ws_plugin__s2member_temp_s = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/buttons/paypal-ccaps-checkout-button.php")));
|
286 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%endpoint%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_sandbox"]) ? "www.sandbox.paypal.com" : "www.paypal.com")), $ws_plugin__s2member_temp_s);
|
287 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%paypal_business%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_business"])), $ws_plugin__s2member_temp_s);
|
356 |
do_action ("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_during_cancellation_buttons_before_shortcode", get_defined_vars ());
|
357 |
echo '<strong>WordPress Shortcode:</strong> (recommended for both the WordPress Visual & HTML Editors)<br />' . "\n";
|
358 |
$ws_plugin__s2member_temp_s = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/shortcodes/paypal-cancellation-button-shortcode.php")));
|
359 |
+
echo '<input type="text" autocomplete="off" id="ws-plugin--s2member-cancellation-shortcode" value="' . format_to_edit ($ws_plugin__s2member_temp_s) . '" onclick="this.select ();" class="monospace" />' . "\n";
|
360 |
|
361 |
echo '<div' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? ' style="display:none;"' : '') . '><br />' . "\n";
|
362 |
echo '<strong>Resulting PayPal Button Code:</strong> (ultimately, your Shortcode will produce this snippet)<br />' . "\n";
|
363 |
+
echo '<textarea id="ws-plugin--s2member-cancellation-button" rows="8" wrap="off" onclick="this.select ();" class="monospace">';
|
364 |
$ws_plugin__s2member_temp_s = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/buttons/paypal-cancellation-button.php")));
|
365 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%endpoint%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_sandbox"]) ? "www.sandbox.paypal.com" : "www.paypal.com")), $ws_plugin__s2member_temp_s);
|
366 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%paypal_business%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_business"])), $ws_plugin__s2member_temp_s);
|
406 |
echo '<option value="' . $n . '">s2Member Level #' . $n . '</option>' . "\n";
|
407 |
echo '</select></p>' . "\n";
|
408 |
echo '<p>Paid Subscr. ID: <input type="text" autocomplete="off" id="ws-plugin--s2member-reg-link-subscr-id" value="" size="50" /> <a href="#" onclick="alert(\'The Customer\\\'s Paid Subscr. ID (aka: Recurring Profile ID, Transaction ID) must be unique. This value can be obtained from inside your PayPal account under the History tab. Each paying Customer MUST be associated with a unique Paid Subscr. ID. If the Customer is NOT associated with a Paid Subscr. ID, you will need to generate a unique value for this field on your own. But keep in mind, s2Member will be unable to maintain future communication with the PayPal IPN (i.e. Notification) service if this value does not reflect a real Paid Subscr. ID that exists in your PayPal History log.\'); return false;" tabindex="-1">[?]</a></p>' . "\n";
|
409 |
+
echo '<p>Custom String Value: <input type="text" autocomplete="off" id="ws-plugin--s2member-reg-link-custom" value="' . esc_attr ($_SERVER["HTTP_HOST"]) . '" size="30" /> <a href="#" onclick="alert(\'A Paid Subscription is always associated with a Custom String that is passed through the custom=\\\'\\\'' . c_ws_plugin__s2member_utils_strings::esc_js_sq (esc_attr ($_SERVER["HTTP_HOST"]), 3) . '\\\'\\\' attribute of your Shortcode. This Custom Value, MUST always start with your domain name. However, you can also pipe delimit additional values after your domain, if you need to.\\n\\nFor example:\n' . c_ws_plugin__s2member_utils_strings::esc_js_sq (esc_attr ($_SERVER["HTTP_HOST"]), 3) . '|cv1|cv2|cv3\'); return false;" tabindex="-1">[?]</a> <input type="button" value="Generate Access Link" onclick="ws_plugin__s2member_paypalRegLinkGenerate();" /> <img id="ws-plugin--s2member-reg-link-loading" src="' . esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]) . '/images/ajax-loader.gif" alt="" style="display:none;" /></p>' . "\n";
|
410 |
echo '<p' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? ' style="display:none;"' : '') . '>Custom Capabilities (comma-delimited) <a href="#" onclick="alert(\'Optional. This is VERY advanced.\\nSee: s2Member -› API Scripting -› Custom Capabilities.\'); return false;" tabindex="-1">[?]</a> <input type="text" maxlength="125" autocomplete="off" id="ws-plugin--s2member-reg-link-ccaps" size="40" onkeyup="if(this.value.match(/[^a-z_0-9,]/)) this.value = jQuery.trim (jQuery.trim (this.value).replace (/[ \-]/g, \'_\').replace (/[^a-z_0-9,]/gi, \'\').toLowerCase ());" /></p>' . "\n";
|
411 |
echo '<p>Fixed Term Length (for Buy Now transactions): <input type="text" autocomplete="off" id="ws-plugin--s2member-reg-link-fixed-term" value="" size="10" /> <a href="#" onclick="alert(\'If the Customer purchased Membership through a Buy Now transaction (i.e. there is no Initial/Trial Period and no recurring charges for ongoing access), you may configure a Fixed Term Length in this field. This way the Customer\\\'s Membership Access is automatically revoked by s2Member at the appropriate time. This will be a numeric value, followed by a space, then a single letter.\\n\\nHere are some examples:\\n\\n1 D (this means 1 Day)\\n1 W (this means 1 Week)\\n1 M (this means 1 Month)\\n1 Y (this means 1 Year)\\n1 L (this means 1 Lifetime)\'); return false;">[?]</a></p>' . "\n";
|
412 |
+
echo '<p id="ws-plugin--s2member-reg-link" class="monospace" style="display:none;"></p>' . "\n";
|
413 |
echo '</form>' . "\n";
|
414 |
echo '</td>' . "\n";
|
415 |
|
472 |
|
473 |
echo '<p>I want to charge: $<input type="text" autocomplete="off" id="ws-plugin--s2member-sp-amount" value="0.01" size="4" /> / <select id="ws-plugin--s2member-sp-hours">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-sp-hours.php"))) . '</select></p>' . "\n";
|
474 |
echo '<p>Description: <input type="text" autocomplete="off" id="ws-plugin--s2member-sp-desc" value="Description and pricing details here." size="68" /></p>' . "\n";
|
475 |
+
echo '<p>Checkout Page Style <a href="#" onclick="alert(\'Optional. This can be configured inside your PayPal account. PayPal allows you to create Custom Page Styles, and assign a unique name to them. You can add your own header image and color selection to the checkout form. Once you\\\'ve created a Custom Page Style at PayPal, you can enter that Page Style here.\\n\\nIn addition. The Shortcode below, provided by s2Member; supports an image attribute: image=\\\'\\\'default\\\'\\\'. This can be changed to a full URL, pointing to a custom image of your own; instead of the default PayPal Button image.\'); return false;" tabindex="-1">[?]</a>: <input type="text" autocomplete="off" id="ws-plugin--s2member-sp-page-style" value="paypal" size="18" /> <select id="ws-plugin--s2member-sp-currency">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-currencies.php"))) . '</select> <input type="button" value="Generate Button Code" onclick="ws_plugin__s2member_paypalSpButtonGenerate();" /></p>' . "\n";
|
476 |
echo '</form>' . "\n";
|
477 |
echo '</td>' . "\n";
|
478 |
|
485 |
echo '<strong>WordPress Shortcode:</strong> (recommended for both the WordPress Visual & HTML Editors)<br />' . "\n";
|
486 |
$ws_plugin__s2member_temp_s = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/shortcodes/paypal-sp-checkout-button-shortcode.php")));
|
487 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%custom%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr ($_SERVER["HTTP_HOST"])), $ws_plugin__s2member_temp_s);
|
488 |
+
echo '<input type="text" autocomplete="off" id="ws-plugin--s2member-sp-shortcode" value="' . format_to_edit ($ws_plugin__s2member_temp_s) . '" onclick="this.select ();" class="monospace" />' . "\n";
|
489 |
|
490 |
echo '<div' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? ' style="display:none;"' : '') . '><br />' . "\n";
|
491 |
echo '<strong>Resulting PayPal Button Code:</strong> (ultimately, your Shortcode will produce this snippet)<br />' . "\n";
|
492 |
+
echo '<textarea id="ws-plugin--s2member-sp-button" rows="8" wrap="off" onclick="this.select ();" class="monospace">';
|
493 |
$ws_plugin__s2member_temp_s = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/buttons/paypal-sp-checkout-button.php")));
|
494 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%endpoint%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_sandbox"]) ? "www.sandbox.paypal.com" : "www.paypal.com")), $ws_plugin__s2member_temp_s);
|
495 |
$ws_plugin__s2member_temp_s = preg_replace ("/%%paypal_business%%/", c_ws_plugin__s2member_utils_strings::esc_ds (esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_business"])), $ws_plugin__s2member_temp_s);
|
553 |
|
554 |
echo '</optgroup></select> <a href="#" onclick="alert(\'Hold down your `Ctrl` key to select multiples.\\n\\nOptional. If you include Additional Posts/Pages, Customers will still land on your Leading Post/Page; BUT, they\\\'ll ALSO have access to some Additional Posts/Pages that you\\\'ve protected. This gives you the ability to create Post/Page Packages.\\n\\nIn other words, a Customer is sold a Specific Post/Page (they\\\'ll land on your Leading Post/Page after checkout), which might contain links to some other Posts/Pages that you\\\'ve packaged together under one transaction.\\n\\nBundling Additional Posts/Pages into one Package, authenticates the Customer for access to the Additional Posts/Pages automatically (e.g. only one Access Link is needed, and s2Member generates this automatically). However, you will STILL need to design your Leading Post/Page (which is what a Customer will actually land on), with links pointing to the other Posts/Pages. This way your Customers will have clickable links to everything they\\\'ve paid for.\\n\\n*Quick Summary* s2Member sends Customers to your Leading Post/Page, and also authenticates them for access to any Additional Posts/Pages automatically. You handle it from there.\\n\\n*Tip* If there are no Posts/Pages in this menu, it\\\'s because you\\\'ve not configured s2Member for Specific Post/Page Access yet. See: s2Member -› Restriction Options -› Specific Post/Page Access.\'); return false;" tabindex="-1">[?]</a></p>' . "\n";
|
555 |
|
556 |
+
echo '<p><select id="ws-plugin--s2member-sp-link-hours">' . trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/options/paypal-sp-hours.php"))) . '</select> <input type="button" value="Generate Access Link" onclick="ws_plugin__s2member_paypalSpLinkGenerate();" /> <img id="ws-plugin--s2member-sp-link-loading" src="' . esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]) . '/images/ajax-loader.gif" alt="" style="display:none;" /></p>' . "\n";
|
557 |
+
echo '<p id="ws-plugin--s2member-sp-link" class="monospace" style="display:none;"></p>' . "\n";
|
558 |
echo '</form>' . "\n";
|
559 |
echo '</td>' . "\n";
|
560 |
|
includes/menu-pages/paypal-ops.inc.php
CHANGED
@@ -31,8 +31,11 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_paypal_ops"))
|
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">'."\n";
|
33 |
|
34 |
-
echo '<div
|
35 |
-
|
|
|
|
|
|
|
36 |
|
37 |
echo '<table class="ws-menu-page-table">'."\n";
|
38 |
echo '<tbody class="ws-menu-page-table-tbody">'."\n";
|
@@ -194,7 +197,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_paypal_ops"))
|
|
194 |
echo '<tr>'."\n";
|
195 |
|
196 |
echo '<td>'."\n";
|
197 |
-
echo '<div class="
|
198 |
echo '<p style="font-size:110%; margin-top:0;"><span>We HIGHLY recommend that you enable logging during your initial testing phase. Logs produce lots of useful details that can help in debugging. Logs can help you find issues in your configuration and/or problems during payment processing. See: <a href="'.esc_attr(admin_url("/admin.php?page=ws-plugin--s2member-logs")).'">Log Files (Debug)</a>.</span></p>'."\n";
|
199 |
echo '<p style="font-size:110%; margin-bottom:0;"><span class="ws-menu-page-error">However, it is VERY IMPORTANT to disable logging once you go live. Log files may contain personally identifiable information, credit card numbers, secret API credentials, passwords and/or other sensitive information. We STRONGLY suggest that logging be disabled on a live site (for security reasons).</span></p>'."\n";
|
200 |
echo '</div>'."\n";
|
@@ -325,7 +328,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_paypal_ops"))
|
|
325 |
echo '<p>You\'ll need your IPN URL, which is:<br /><code>'.esc_html(site_url("/?s2member_paypal_notify=1")).'</code></p>'."\n";
|
326 |
do_action("ws_plugin__s2member_during_paypal_ops_page_during_left_sections_during_paypal_ipn", get_defined_vars());
|
327 |
|
328 |
-
echo '<h3>More Information (<a href="#" onclick="jQuery(\'div#ws-plugin--s2member-paypal-ipn-details\').toggle(); return false;" class="ws-dotted-link">click here</a>)</h3>'."\n";
|
329 |
echo '<div id="ws-plugin--s2member-paypal-ipn-details" style="display:none;">'."\n";
|
330 |
echo '<p><em><strong>*Quick Tip*</strong> In addition to the <a href="http://www.s2member.com/paypal-ipn-setup" target="_blank" rel="external">default IPN settings inside your PayPal account</a>, the IPN URL is also set on a per-transaction basis by the special PayPal Button Code that s2Member provides you with. In other words, if you have multiple sites operating on one PayPal account, that\'s OK. s2Member dynamically sets the IPN URL for each transaction. The result is that the IPN URL configured from within your PayPal account, becomes the default, which is then overwritten on a per-transaction basis. In fact, PayPal recently updated their system to support IPN URL preservation. One PayPal account can handle multiple sites, all using different IPN URLs.</em></p>'."\n";
|
331 |
do_action("ws_plugin__s2member_during_paypal_ops_page_during_left_sections_during_paypal_ipn_after_quick_tip", get_defined_vars());
|
@@ -334,7 +337,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_paypal_ops"))
|
|
334 |
|
335 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
336 |
|
337 |
-
echo '<h3>IPN w/ Proxy Key (<a href="#" onclick="jQuery(\'div#ws-plugin--s2member-paypal-ipn-proxy-details\').toggle(); return false;" class="ws-dotted-link">optional, for 3rd-party integrations</a>)</h3>'."\n";
|
338 |
echo '<div id="ws-plugin--s2member-paypal-ipn-proxy-details" style="display:none;">'."\n";
|
339 |
echo '<p>If you\'re using a 3rd-party application that needs to POST simulated IPN transactions to your s2Member installation, you can use this alternate IPN URL, which includes a Proxy Key. This encrypted Proxy Key verifies incoming data being received by s2Member\'s IPN processor. You can change <em>[proxy-gateway]</em> to whatever you like. The <em>[proxy-gateway]</em> value is required. It will be stored by s2Member as the Customer\'s Paid Subscr. Gateway. Your [proxy-gateway] value will also be reflected in s2Member\'s IPN log.</p>'."\n";
|
340 |
echo '<input type="text" autocomplete="off" value="'.format_to_edit(site_url("/?s2member_paypal_notify=1&s2member_paypal_proxy=[proxy-gateway]&s2member_paypal_proxy_verification=".urlencode(c_ws_plugin__s2member_paypal_utilities::paypal_proxy_key_gen()))).'" style="width:99%;" />'."\n";
|
@@ -386,7 +389,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_paypal_ops"))
|
|
386 |
|
387 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
388 |
|
389 |
-
echo '<h3>More Information (<a href="#" onclick="jQuery(\'div#ws-plugin--s2member-paypal-pdt-details\').toggle(); return false;" class="ws-dotted-link">click here</a>)</h3>'."\n";
|
390 |
echo '<div id="ws-plugin--s2member-paypal-pdt-details" style="display:none;">'."\n";
|
391 |
echo '<p><em><strong>*Quick Tip*</strong> In addition to the <a href="http://www.s2member.com/paypal-pdt-setup" target="_blank" rel="external">default Auto-Return/PDT configuration inside your PayPal account</a>, the Auto-Return URL is also set on a per-transaction basis from within the special PayPal Button Code that s2Member provides you with. In other words, if you have multiple sites operating on one PayPal account, that\'s OK. s2Member dynamically sets the Auto-Return URL for each transaction. The result is that the Auto-Return URL configured from within your PayPal account, becomes the default, which is then overwritten on a per-transaction basis.</em></p>'."\n";
|
392 |
do_action("ws_plugin__s2member_during_paypal_ops_page_during_left_sections_during_paypal_pdt_after_quick_tip", get_defined_vars());
|
@@ -763,7 +766,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_page_paypal_ops"))
|
|
763 |
|
764 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
765 |
|
766 |
-
echo '<p class="submit"><input type="submit"
|
767 |
|
768 |
echo '</form>'."\n";
|
769 |
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">'."\n";
|
33 |
|
34 |
+
echo '<div class="ws-menu-page-toolbox">'."\n";
|
35 |
+
c_ws_plugin__s2member_menu_pages_tb::display ();
|
36 |
+
echo '</div>'."\n";
|
37 |
+
|
38 |
+
echo '<h2>PayPal Options</h2>'."\n";
|
39 |
|
40 |
echo '<table class="ws-menu-page-table">'."\n";
|
41 |
echo '<tbody class="ws-menu-page-table-tbody">'."\n";
|
197 |
echo '<tr>'."\n";
|
198 |
|
199 |
echo '<td>'."\n";
|
200 |
+
echo '<div class="info" style="margin-bottom:0;">'."\n";
|
201 |
echo '<p style="font-size:110%; margin-top:0;"><span>We HIGHLY recommend that you enable logging during your initial testing phase. Logs produce lots of useful details that can help in debugging. Logs can help you find issues in your configuration and/or problems during payment processing. See: <a href="'.esc_attr(admin_url("/admin.php?page=ws-plugin--s2member-logs")).'">Log Files (Debug)</a>.</span></p>'."\n";
|
202 |
echo '<p style="font-size:110%; margin-bottom:0;"><span class="ws-menu-page-error">However, it is VERY IMPORTANT to disable logging once you go live. Log files may contain personally identifiable information, credit card numbers, secret API credentials, passwords and/or other sensitive information. We STRONGLY suggest that logging be disabled on a live site (for security reasons).</span></p>'."\n";
|
203 |
echo '</div>'."\n";
|
328 |
echo '<p>You\'ll need your IPN URL, which is:<br /><code>'.esc_html(site_url("/?s2member_paypal_notify=1")).'</code></p>'."\n";
|
329 |
do_action("ws_plugin__s2member_during_paypal_ops_page_during_left_sections_during_paypal_ipn", get_defined_vars());
|
330 |
|
331 |
+
echo '<h3 style="margin:0;">More Information (<a href="#" onclick="jQuery(\'div#ws-plugin--s2member-paypal-ipn-details\').toggle(); return false;" class="ws-dotted-link">click here</a>)</h3>'."\n";
|
332 |
echo '<div id="ws-plugin--s2member-paypal-ipn-details" style="display:none;">'."\n";
|
333 |
echo '<p><em><strong>*Quick Tip*</strong> In addition to the <a href="http://www.s2member.com/paypal-ipn-setup" target="_blank" rel="external">default IPN settings inside your PayPal account</a>, the IPN URL is also set on a per-transaction basis by the special PayPal Button Code that s2Member provides you with. In other words, if you have multiple sites operating on one PayPal account, that\'s OK. s2Member dynamically sets the IPN URL for each transaction. The result is that the IPN URL configured from within your PayPal account, becomes the default, which is then overwritten on a per-transaction basis. In fact, PayPal recently updated their system to support IPN URL preservation. One PayPal account can handle multiple sites, all using different IPN URLs.</em></p>'."\n";
|
334 |
do_action("ws_plugin__s2member_during_paypal_ops_page_during_left_sections_during_paypal_ipn_after_quick_tip", get_defined_vars());
|
337 |
|
338 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
339 |
|
340 |
+
echo '<h3 style="margin:0;">IPN w/ Proxy Key (<a href="#" onclick="jQuery(\'div#ws-plugin--s2member-paypal-ipn-proxy-details\').toggle(); return false;" class="ws-dotted-link">optional, for 3rd-party integrations</a>)</h3>'."\n";
|
341 |
echo '<div id="ws-plugin--s2member-paypal-ipn-proxy-details" style="display:none;">'."\n";
|
342 |
echo '<p>If you\'re using a 3rd-party application that needs to POST simulated IPN transactions to your s2Member installation, you can use this alternate IPN URL, which includes a Proxy Key. This encrypted Proxy Key verifies incoming data being received by s2Member\'s IPN processor. You can change <em>[proxy-gateway]</em> to whatever you like. The <em>[proxy-gateway]</em> value is required. It will be stored by s2Member as the Customer\'s Paid Subscr. Gateway. Your [proxy-gateway] value will also be reflected in s2Member\'s IPN log.</p>'."\n";
|
343 |
echo '<input type="text" autocomplete="off" value="'.format_to_edit(site_url("/?s2member_paypal_notify=1&s2member_paypal_proxy=[proxy-gateway]&s2member_paypal_proxy_verification=".urlencode(c_ws_plugin__s2member_paypal_utilities::paypal_proxy_key_gen()))).'" style="width:99%;" />'."\n";
|
389 |
|
390 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
391 |
|
392 |
+
echo '<h3 style="margin:0;">More Information (<a href="#" onclick="jQuery(\'div#ws-plugin--s2member-paypal-pdt-details\').toggle(); return false;" class="ws-dotted-link">click here</a>)</h3>'."\n";
|
393 |
echo '<div id="ws-plugin--s2member-paypal-pdt-details" style="display:none;">'."\n";
|
394 |
echo '<p><em><strong>*Quick Tip*</strong> In addition to the <a href="http://www.s2member.com/paypal-pdt-setup" target="_blank" rel="external">default Auto-Return/PDT configuration inside your PayPal account</a>, the Auto-Return URL is also set on a per-transaction basis from within the special PayPal Button Code that s2Member provides you with. In other words, if you have multiple sites operating on one PayPal account, that\'s OK. s2Member dynamically sets the Auto-Return URL for each transaction. The result is that the Auto-Return URL configured from within your PayPal account, becomes the default, which is then overwritten on a per-transaction basis.</em></p>'."\n";
|
395 |
do_action("ws_plugin__s2member_during_paypal_ops_page_during_left_sections_during_paypal_pdt_after_quick_tip", get_defined_vars());
|
766 |
|
767 |
echo '<div class="ws-menu-page-hr"></div>'."\n";
|
768 |
|
769 |
+
echo '<p class="submit"><input type="submit" value="Save All Changes" /></p>'."\n";
|
770 |
|
771 |
echo '</form>'."\n";
|
772 |
|
includes/menu-pages/res-ops.inc.php
CHANGED
@@ -31,8 +31,11 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_res_ops"))
|
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">' . "\n";
|
33 |
|
34 |
-
echo '<div
|
35 |
-
|
|
|
|
|
|
|
36 |
|
37 |
echo '<table class="ws-menu-page-table">' . "\n";
|
38 |
echo '<tbody class="ws-menu-page-table-tbody">' . "\n";
|
@@ -56,7 +59,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_res_ops"))
|
|
56 |
echo '<p>Here you can specify Posts that are restricted to certain Membership Access Levels. s2Member also supports Custom <a href="http://codex.wordpress.org/Post_Types" target="_blank" rel="external">Post Types</a> here. If you have a theme or plugin installed, which has enabled Custom Post Types <em>(i.e. Music/Videos or something else)</em>, you can put the IDs for those Posts here.</p>' . "\n";
|
57 |
echo '<p><em><strong>*Note*</strong> Protecting individual Posts, ONLY protects the Permalinks for those Posts. It is still possible for excerpts of protected content to be seen in search results generated by WordPress, feeds, and Archive views; such as your Home Page, inside a Category listing, or through other queries formulated by your theme. This is the intended functionality. Excerpts are a great way to "tease" public visitors. In other words, public visitors may have access to excerpts introduced by your theme, but any attempt to view the full Post (i.e. the Permalink) will result in an automatic redirect to your Membership Options Page; requiring registration.</em></p>' . "\n";
|
58 |
echo '<p><em><strong>*Note*</strong> If you would like to protect many Posts at once (including Archive views), you can use Category Level Restrictions, Tag Level Restrictions, or have a look down below at s2Member\'s options for "Alternative View Protection", which deals with search results, as well as feeds.</em></p>' . "\n";
|
59 |
-
echo ((!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()) &&
|
60 |
do_action ("ws_plugin__s2member_during_res_ops_page_during_left_sections_during_post_level_access", get_defined_vars ());
|
61 |
|
62 |
echo '<table class="form-table">' . "\n";
|
@@ -103,7 +106,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_res_ops"))
|
|
103 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-page-level-access-section">' . "\n";
|
104 |
echo '<h3>Page Level Access Restrictions (optional)</h3>' . "\n";
|
105 |
echo '<p>Here you can specify Pages that are restricted to certain Membership Access Levels.</p>' . "\n";
|
106 |
-
echo ((!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()) &&
|
107 |
do_action ("ws_plugin__s2member_during_res_ops_page_during_left_sections_during_page_level_access", get_defined_vars ());
|
108 |
|
109 |
echo '<table class="form-table">' . "\n";
|
@@ -193,7 +196,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_res_ops"))
|
|
193 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-category-level-access-section">' . "\n";
|
194 |
echo '<h3>Category Level Access Restrictions (optional)</h3>' . "\n";
|
195 |
echo '<p>Here you can specify Categories that are restricted to certain Membership Access Levels. Category restrictions are a bit more complex. When you restrict access to a Category, it also restricts access to any child Categories it may have <em>(aka: sub-Categories)</em>. In other words, restricting a Category, protects a Category Archive, all of its child Category Archives, and any Posts contained within the Category, or its child Categories. This is a VERY powerful form of protection, so please be careful. It\'s very easy to protect too much content by accident.</p>' . "\n";
|
196 |
-
echo ((!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()) &&
|
197 |
do_action ("ws_plugin__s2member_during_res_ops_page_during_left_sections_during_category_level_access", get_defined_vars ());
|
198 |
|
199 |
echo '<table class="form-table">' . "\n";
|
@@ -355,7 +358,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_res_ops"))
|
|
355 |
echo '<p>In other words, Customers will NOT need to login, just to receive access to the Specific Post/Page they purchased access to. s2Member will immediately redirect the Customer to the Specific Post/Page after checkout is completed successfully. An email is also sent to the Customer with a link (see: <code>s2Member -› PayPal Options -› Specific Post/Page Email</code>). Authentication is handled automatically through self-expiring links, good for 72 hours by default.</p>' . "\n";
|
356 |
echo '<p>Specific Post/Page Access, is sort of like selling a product. Only, instead of shipping anything to the Customer, you just give them access to a specific Post/Page on your site; one that you created in WordPress. A Specific Post/Page that is protected by s2Member, might contain a download link for your eBook, access to file & music downloads, access to additional support services, and the list goes on and on. The possibilities with this are endless; as long as your digital product can be delivered through access to a WordPress Post/Page that you\'ve created.</p>' . "\n";
|
357 |
echo '<p>Very simple. All you do is protect the Specific Post/Page IDs that are being sold on your site. Then, you can go to <code>s2Member -› PayPal Buttons -› Specific Post/Page</code> to generate "Buy Now" Buttons that you can insert into your WordPress Editor, and make available on your site. The Button Generator for s2Member, will even let you Package Additional Posts/Pages together into one transaction.</p>' . "\n";
|
358 |
-
echo ((!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()) &&
|
359 |
do_action ("ws_plugin__s2member_during_res_ops_page_during_left_sections_during_sp_access", get_defined_vars ());
|
360 |
|
361 |
echo '<table class="form-table">' . "\n";
|
@@ -603,7 +606,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_res_ops"))
|
|
603 |
|
604 |
echo '<div class="ws-menu-page-hr"></div>' . "\n";
|
605 |
|
606 |
-
echo '<p class="submit"><input type="submit"
|
607 |
|
608 |
echo '</form>' . "\n";
|
609 |
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">' . "\n";
|
33 |
|
34 |
+
echo '<div class="ws-menu-page-toolbox">'."\n";
|
35 |
+
c_ws_plugin__s2member_menu_pages_tb::display ();
|
36 |
+
echo '</div>'."\n";
|
37 |
+
|
38 |
+
echo '<h2>Restriction Options</h2>' . "\n";
|
39 |
|
40 |
echo '<table class="ws-menu-page-table">' . "\n";
|
41 |
echo '<tbody class="ws-menu-page-table-tbody">' . "\n";
|
59 |
echo '<p>Here you can specify Posts that are restricted to certain Membership Access Levels. s2Member also supports Custom <a href="http://codex.wordpress.org/Post_Types" target="_blank" rel="external">Post Types</a> here. If you have a theme or plugin installed, which has enabled Custom Post Types <em>(i.e. Music/Videos or something else)</em>, you can put the IDs for those Posts here.</p>' . "\n";
|
60 |
echo '<p><em><strong>*Note*</strong> Protecting individual Posts, ONLY protects the Permalinks for those Posts. It is still possible for excerpts of protected content to be seen in search results generated by WordPress, feeds, and Archive views; such as your Home Page, inside a Category listing, or through other queries formulated by your theme. This is the intended functionality. Excerpts are a great way to "tease" public visitors. In other words, public visitors may have access to excerpts introduced by your theme, but any attempt to view the full Post (i.e. the Permalink) will result in an automatic redirect to your Membership Options Page; requiring registration.</em></p>' . "\n";
|
61 |
echo '<p><em><strong>*Note*</strong> If you would like to protect many Posts at once (including Archive views), you can use Category Level Restrictions, Tag Level Restrictions, or have a look down below at s2Member\'s options for "Alternative View Protection", which deals with search results, as well as feeds.</em></p>' . "\n";
|
62 |
+
echo ((!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()) && empty($GLOBALS["WS_PLUGIN__"]["wp_show_ids"])) ? '<p><em><strong>*Tip*</strong> Can\'t find your Post IDs? Get <a href="http://wordpress.org/extend/plugins/wp-show-ids/" target="_blank" rel="external">WP Show IDs</a>.</em></p>' . "\n" : '';
|
63 |
do_action ("ws_plugin__s2member_during_res_ops_page_during_left_sections_during_post_level_access", get_defined_vars ());
|
64 |
|
65 |
echo '<table class="form-table">' . "\n";
|
106 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-page-level-access-section">' . "\n";
|
107 |
echo '<h3>Page Level Access Restrictions (optional)</h3>' . "\n";
|
108 |
echo '<p>Here you can specify Pages that are restricted to certain Membership Access Levels.</p>' . "\n";
|
109 |
+
echo ((!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()) && empty($GLOBALS["WS_PLUGIN__"]["wp_show_ids"])) ? '<p><em><strong>*Tip*</strong> Can\'t find your Page IDs? Get <a href="http://wordpress.org/extend/plugins/wp-show-ids/" target="_blank" rel="external">WP Show IDs</a>.</em></p>' . "\n" : '';
|
110 |
do_action ("ws_plugin__s2member_during_res_ops_page_during_left_sections_during_page_level_access", get_defined_vars ());
|
111 |
|
112 |
echo '<table class="form-table">' . "\n";
|
196 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-category-level-access-section">' . "\n";
|
197 |
echo '<h3>Category Level Access Restrictions (optional)</h3>' . "\n";
|
198 |
echo '<p>Here you can specify Categories that are restricted to certain Membership Access Levels. Category restrictions are a bit more complex. When you restrict access to a Category, it also restricts access to any child Categories it may have <em>(aka: sub-Categories)</em>. In other words, restricting a Category, protects a Category Archive, all of its child Category Archives, and any Posts contained within the Category, or its child Categories. This is a VERY powerful form of protection, so please be careful. It\'s very easy to protect too much content by accident.</p>' . "\n";
|
199 |
+
echo ((!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()) && empty($GLOBALS["WS_PLUGIN__"]["wp_show_ids"])) ? '<p><em><strong>*Tip*</strong> Can\'t find your Category IDs? Get <a href="http://wordpress.org/extend/plugins/wp-show-ids/" target="_blank" rel="external">WP Show IDs</a>.</em></p>' . "\n" : '';
|
200 |
do_action ("ws_plugin__s2member_during_res_ops_page_during_left_sections_during_category_level_access", get_defined_vars ());
|
201 |
|
202 |
echo '<table class="form-table">' . "\n";
|
358 |
echo '<p>In other words, Customers will NOT need to login, just to receive access to the Specific Post/Page they purchased access to. s2Member will immediately redirect the Customer to the Specific Post/Page after checkout is completed successfully. An email is also sent to the Customer with a link (see: <code>s2Member -› PayPal Options -› Specific Post/Page Email</code>). Authentication is handled automatically through self-expiring links, good for 72 hours by default.</p>' . "\n";
|
359 |
echo '<p>Specific Post/Page Access, is sort of like selling a product. Only, instead of shipping anything to the Customer, you just give them access to a specific Post/Page on your site; one that you created in WordPress. A Specific Post/Page that is protected by s2Member, might contain a download link for your eBook, access to file & music downloads, access to additional support services, and the list goes on and on. The possibilities with this are endless; as long as your digital product can be delivered through access to a WordPress Post/Page that you\'ve created.</p>' . "\n";
|
360 |
echo '<p>Very simple. All you do is protect the Specific Post/Page IDs that are being sold on your site. Then, you can go to <code>s2Member -› PayPal Buttons -› Specific Post/Page</code> to generate "Buy Now" Buttons that you can insert into your WordPress Editor, and make available on your site. The Button Generator for s2Member, will even let you Package Additional Posts/Pages together into one transaction.</p>' . "\n";
|
361 |
+
echo ((!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()) && empty($GLOBALS["WS_PLUGIN__"]["wp_show_ids"])) ? '<p><em><strong>*Tip*</strong> Can\'t find your Post/Page IDs? Get <a href="http://wordpress.org/extend/plugins/wp-show-ids/" target="_blank" rel="external">WP Show IDs</a>.</em></p>' . "\n" : '';
|
362 |
do_action ("ws_plugin__s2member_during_res_ops_page_during_left_sections_during_sp_access", get_defined_vars ());
|
363 |
|
364 |
echo '<table class="form-table">' . "\n";
|
606 |
|
607 |
echo '<div class="ws-menu-page-hr"></div>' . "\n";
|
608 |
|
609 |
+
echo '<p class="submit"><input type="submit" value="Save All Changes" /></p>' . "\n";
|
610 |
|
611 |
echo '</form>' . "\n";
|
612 |
|
includes/menu-pages/scripting.inc.php
CHANGED
@@ -31,8 +31,11 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_scripting"))
|
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">' . "\n";
|
33 |
|
34 |
-
echo '<div
|
35 |
-
|
|
|
|
|
|
|
36 |
|
37 |
echo '<table class="ws-menu-page-table">' . "\n";
|
38 |
echo '<tbody class="ws-menu-page-table-tbody">' . "\n";
|
@@ -460,16 +463,16 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_scripting"))
|
|
460 |
echo '<div class="ws-menu-page-hr"></div>' . "\n";
|
461 |
|
462 |
echo '<p><strong>Shortcode:</strong> for an Inline Profile Modification Form:<br />' . "\n";
|
463 |
-
echo '<p><input type="text" autocomplete="off" value="' . format_to_edit ('[s2Member-Profile /]') . '"
|
464 |
|
465 |
echo '<p style="margin-top:20px;"><strong>Stand-Alone / Code Sample</strong> (standard link tag):</p>' . "\n";
|
466 |
-
echo '<p><input type="text" autocomplete="off" 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-1-ops.x-php"))) . '"
|
467 |
|
468 |
echo '<p style="margin-top:20px;"><strong>Stand-Alone / Code Sample</strong> (open the link in a popup window):</p>' . "\n";
|
469 |
-
echo '<p><input type="text" autocomplete="off" 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.x-php"))) . '"
|
470 |
|
471 |
echo '<p style="margin-top:20px;"><strong>Stand-Alone / Code Sample</strong> (embed the Form with an IFRAME tag):</p>' . "\n";
|
472 |
-
echo '<p><input type="text" autocomplete="off" 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-3-ops.x-php"))) . '"
|
473 |
echo '</div>' . "\n";
|
474 |
|
475 |
echo '</div>' . "\n";
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">' . "\n";
|
33 |
|
34 |
+
echo '<div class="ws-menu-page-toolbox">'."\n";
|
35 |
+
c_ws_plugin__s2member_menu_pages_tb::display ();
|
36 |
+
echo '</div>'."\n";
|
37 |
+
|
38 |
+
echo '<h2>API / Scripting</h2>' . "\n";
|
39 |
|
40 |
echo '<table class="ws-menu-page-table">' . "\n";
|
41 |
echo '<tbody class="ws-menu-page-table-tbody">' . "\n";
|
463 |
echo '<div class="ws-menu-page-hr"></div>' . "\n";
|
464 |
|
465 |
echo '<p><strong>Shortcode:</strong> for an Inline Profile Modification Form:<br />' . "\n";
|
466 |
+
echo '<p><input type="text" autocomplete="off" value="' . format_to_edit ('[s2Member-Profile /]') . '" class="monospace" onclick="this.select ();" /></p>' . "\n";
|
467 |
|
468 |
echo '<p style="margin-top:20px;"><strong>Stand-Alone / Code Sample</strong> (standard link tag):</p>' . "\n";
|
469 |
+
echo '<p><input type="text" autocomplete="off" 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-1-ops.x-php"))) . '" class="monospace" onclick="this.select ();" /></p>' . "\n";
|
470 |
|
471 |
echo '<p style="margin-top:20px;"><strong>Stand-Alone / Code Sample</strong> (open the link in a popup window):</p>' . "\n";
|
472 |
+
echo '<p><input type="text" autocomplete="off" 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.x-php"))) . '" class="monospace" onclick="this.select ();" /></p>' . "\n";
|
473 |
|
474 |
echo '<p style="margin-top:20px;"><strong>Stand-Alone / Code Sample</strong> (embed the Form with an IFRAME tag):</p>' . "\n";
|
475 |
+
echo '<p><input type="text" autocomplete="off" 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-3-ops.x-php"))) . '" class="monospace" onclick="this.select ();" /></p>' . "\n";
|
476 |
echo '</div>' . "\n";
|
477 |
|
478 |
echo '</div>' . "\n";
|
includes/menu-pages/start.inc.php
CHANGED
@@ -31,8 +31,11 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_start"))
|
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">' . "\n";
|
33 |
|
34 |
-
echo '<div
|
35 |
-
|
|
|
|
|
|
|
36 |
|
37 |
echo '<table class="ws-menu-page-table">' . "\n";
|
38 |
echo '<tbody class="ws-menu-page-table-tbody">' . "\n";
|
@@ -312,7 +315,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_start"))
|
|
312 |
|
313 |
echo '<h3>Search s2Member KB Articles, Forums, Codex and more<em>!</em></h3>'."\n";
|
314 |
echo '<form method="get" action="http://www.s2member.com/quick-s.php" target="_blank" onsubmit="if(this.q.value === \'enter search terms...\') this.q.value = \'\';">'."\n";
|
315 |
-
echo '<p><input type="text" name="q" value="enter search terms..." style="width:60%;" onfocus="if(this.value === \'enter search terms...\') this.value = \'\';" onblur="if(this.value === \'\') this.value = \'enter search terms...\';"
|
316 |
echo '</form>'."\n";
|
317 |
|
318 |
do_action ("ws_plugin__s2member_during_start_page_during_left_sections_during_help", get_defined_vars ());
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">' . "\n";
|
33 |
|
34 |
+
echo '<div class="ws-menu-page-toolbox">'."\n";
|
35 |
+
c_ws_plugin__s2member_menu_pages_tb::display ();
|
36 |
+
echo '</div>'."\n";
|
37 |
+
|
38 |
+
echo '<h2>Quick-Start Guide</h2>' . "\n";
|
39 |
|
40 |
echo '<table class="ws-menu-page-table">' . "\n";
|
41 |
echo '<tbody class="ws-menu-page-table-tbody">' . "\n";
|
315 |
|
316 |
echo '<h3>Search s2Member KB Articles, Forums, Codex and more<em>!</em></h3>'."\n";
|
317 |
echo '<form method="get" action="http://www.s2member.com/quick-s.php" target="_blank" onsubmit="if(this.q.value === \'enter search terms...\') this.q.value = \'\';">'."\n";
|
318 |
+
echo '<p><input type="text" name="q" value="enter search terms..." style="width:60%;" onfocus="if(this.value === \'enter search terms...\') this.value = \'\';" onblur="if(this.value === \'\') this.value = \'enter search terms...\';" /> <input type="submit" value="Search" style="font-size:120%; font-weight:normal;" /></p>'."\n";
|
319 |
echo '</form>'."\n";
|
320 |
|
321 |
do_action ("ws_plugin__s2member_during_start_page_during_left_sections_during_help", get_defined_vars ());
|
includes/menu-pages/trk-ops.inc.php
CHANGED
@@ -31,8 +31,11 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_trk_ops"))
|
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">' . "\n";
|
33 |
|
34 |
-
echo '<div
|
35 |
-
|
|
|
|
|
|
|
36 |
|
37 |
echo '<table class="ws-menu-page-table">' . "\n";
|
38 |
echo '<tbody class="ws-menu-page-table-tbody">' . "\n";
|
@@ -75,7 +78,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_trk_ops"))
|
|
75 |
echo '<tr>' . "\n";
|
76 |
|
77 |
echo '<td>' . "\n";
|
78 |
-
echo '<textarea name="ws_plugin__s2member_signup_tracking_codes" id="ws-plugin--s2member-signup-tracking-codes" rows="8" wrap="off" spellcheck="false"
|
79 |
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. Just try not to put anything here that would actually be visible to the Customer. Things like 1x1 pixel images that load up silently and/or JavaScript tracking routines will be fine. Google Analytics code works just fine, AdSense performance tracking, as well as Yahoo tracking and other affiliate network codes are all OK here.<br /><br />' . "\n";
|
80 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
81 |
echo '<ul>' . "\n";
|
@@ -158,7 +161,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_trk_ops"))
|
|
158 |
echo '<tr>' . "\n";
|
159 |
|
160 |
echo '<td>' . "\n";
|
161 |
-
echo '<textarea name="ws_plugin__s2member_modification_tracking_codes" id="ws-plugin--s2member-modification-tracking-codes" rows="8" wrap="off" spellcheck="false"
|
162 |
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. Just try not to put anything here that would actually be visible to the Customer. Things like 1x1 pixel images that load up silently and/or JavaScript tracking routines will be fine. Google Analytics code works just fine, AdSense performance tracking, as well as Yahoo tracking and other affiliate network codes are all OK here.<br /><br />' . "\n";
|
163 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
164 |
echo '<ul>' . "\n";
|
@@ -252,7 +255,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_trk_ops"))
|
|
252 |
echo '<tr>' . "\n";
|
253 |
|
254 |
echo '<td>' . "\n";
|
255 |
-
echo '<textarea name="ws_plugin__s2member_ccap_tracking_codes" id="ws-plugin--s2member-ccap-tracking-codes" rows="8" wrap="off" spellcheck="false"
|
256 |
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. Just try not to put anything here that would actually be visible to the Customer. Things like 1x1 pixel images that load up silently and/or JavaScript tracking routines will be fine. Google Analytics code works just fine, AdSense performance tracking, as well as Yahoo tracking and other affiliate network codes are all OK here.<br /><br />' . "\n";
|
257 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
258 |
echo '<ul>' . "\n";
|
@@ -341,7 +344,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_trk_ops"))
|
|
341 |
echo '<tr>' . "\n";
|
342 |
|
343 |
echo '<td>' . "\n";
|
344 |
-
echo '<textarea name="ws_plugin__s2member_sp_tracking_codes" id="ws-plugin--s2member-sp-tracking-codes" rows="8" wrap="off" spellcheck="false"
|
345 |
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. Just try not to put anything here that would actually be visible to the Customer. Things like 1x1 pixel images that load up silently and/or JavaScript tracking routines will be fine. Google Analytics code works just fine, AdSense performance tracking, as well as Yahoo tracking and other affiliate network codes are all OK here.<br /><br />' . "\n";
|
346 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
347 |
echo '<ul>' . "\n";
|
@@ -390,15 +393,11 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_trk_ops"))
|
|
390 |
do_action ("ws_plugin__s2member_during_trk_ops_page_during_left_sections_after_sp_tracking", get_defined_vars ());
|
391 |
}
|
392 |
|
393 |
-
if (apply_filters ("
|
394 |
{
|
395 |
-
do_action ("
|
396 |
-
|
397 |
-
|
398 |
-
echo '<div id="icon-tools" class="icon32" style="margin-top:0; margin-bottom:0; padding-top:0; padding-bottom:0;"><br /></div>' . "\n";
|
399 |
-
echo '<h2 style="margin-top:0; margin-bottom:0; padding-top:0; padding-bottom:0;">API / Tracking Integrations</h2>' . "\n";
|
400 |
-
|
401 |
-
do_action ("ws_plugin__s2member_during_trk_ops_page_during_left_sections_after_integrations_header", get_defined_vars ());
|
402 |
}
|
403 |
|
404 |
if (apply_filters ("ws_plugin__s2member_during_trk_ops_page_during_left_sections_display_idev", true, get_defined_vars ()))
|
@@ -409,7 +408,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_trk_ops"))
|
|
409 |
|
410 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-idev-section">' . "\n";
|
411 |
echo '<h3>Integrating iDevAffiliate (affiliate program management)</h3>' . "\n";
|
412 |
-
echo '<a href="http://www.s2member.com/idev-affiliate" target="_blank"><img src="' . esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]) . '/images/idev-logo.gif" class="ws-menu-page-right" style="width:125px; height:125px; border:0;" alt="." /></a>' . "\n";
|
413 |
echo '<p>Adding affiliate tracking software to your site is one of the most effective ways to achieve more sales, more traffic, and more search engine ranking. <a href="http://www.s2member.com/idev-affiliate" target="_blank" rel="external">iDevAffiliate</a> (an affiliate management portal), installs in just minutes, and can be integrated seamlessly with s2Member. We recommend <a href="http://www.s2member.com/idev-affiliate" target="_blank" rel="external">iDevAffiliate Standard</a> ( $99 ) because of its proven track record, and its ability to integrate with s2Member using a variety of techniques. The most popular being a Hidden Image Tag.</p>' . "\n";
|
414 |
echo '<p>If you choose to <a href="http://www.s2member.com/idev-affiliate" target="_blank" rel="external">install iDevAffiliate</a>, you will need to configure your <code>iDevAffiliate -› Shopping Cart Integration</code>. Please choose <code>Generic Tracking Pixel</code>. Then, grab your Hidden Image Tag, and pop the code provided by iDevAffiliate into one of the fields for Tracking Codes <em>(at the top of this page)</em>. You MUST also add Replacement Codes to your Hidden Image Tag. To save you some trouble, we\'ve provided some examples below, one for each of s2Member\'s Tracking Code integrations.</p>' . "\n";
|
415 |
do_action ("ws_plugin__s2member_during_trk_ops_page_during_left_sections_during_idev", get_defined_vars ());
|
@@ -458,7 +457,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_trk_ops"))
|
|
458 |
|
459 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-shareasale-section">' . "\n";
|
460 |
echo '<h3>Integrating ShareASale (affiliate program management)</h3>' . "\n";
|
461 |
-
echo '<a href="http://www.s2member.com/shareasale" target="_blank"><img src="' . esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]) . '/images/sas-logo.png" class="ws-menu-page-right" style="width:125px; height:125px; border:0;" alt="." /></a>' . "\n";
|
462 |
echo '<p>Established in 2000, <a href="http://www.s2member.com/shareasale" target="_blank" rel="external">ShareASale</a> provides award winning technology and service; which will enable you to connect with a network of established affiliates, as well as recruit new ones. Joining ShareASale, maximizes your ability to reach the greatest number of affiliates, with the least amount of work. At ShareASale, you\'ll have access to an existing affiliate-base. You place your site on the market, and let their existing affiliates promote your products/services.</p>' . "\n";
|
463 |
echo '<p>If you <a href="http://www.s2member.com/shareasale" target="_blank" rel="external">become a Merchant at ShareASale</a>, you will need to configure your <code>ShareASale -› Sale Tracking</code>. Grab your Hidden Image Tag, and pop the code provided by ShareASale into one of the fields for Tracking Codes <em>(at the top of this page)</em>. You MUST also add Replacement Codes to your Hidden Image Tag. To save you some trouble, we\'ve provided some examples below, one for each of s2Member\'s Tracking Code integrations.</p>' . "\n";
|
464 |
do_action ("ws_plugin__s2member_during_trk_ops_page_during_left_sections_during_shareasale", get_defined_vars ());
|
@@ -523,7 +522,7 @@ if (!class_exists ("c_ws_plugin__s2member_menu_page_trk_ops"))
|
|
523 |
|
524 |
echo '<div class="ws-menu-page-hr"></div>' . "\n";
|
525 |
|
526 |
-
echo '<p class="submit"><input type="submit"
|
527 |
|
528 |
echo '</form>' . "\n";
|
529 |
|
31 |
{
|
32 |
echo '<div class="wrap ws-menu-page">' . "\n";
|
33 |
|
34 |
+
echo '<div class="ws-menu-page-toolbox">'."\n";
|
35 |
+
c_ws_plugin__s2member_menu_pages_tb::display ();
|
36 |
+
echo '</div>'."\n";
|
37 |
+
|
38 |
+
echo '<h2>API / Tracking</h2>' . "\n";
|
39 |
|
40 |
echo '<table class="ws-menu-page-table">' . "\n";
|
41 |
echo '<tbody class="ws-menu-page-table-tbody">' . "\n";
|
78 |
echo '<tr>' . "\n";
|
79 |
|
80 |
echo '<td>' . "\n";
|
81 |
+
echo '<textarea name="ws_plugin__s2member_signup_tracking_codes" id="ws-plugin--s2member-signup-tracking-codes" rows="8" wrap="off" spellcheck="false" class="monospace">' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["signup_tracking_codes"]) . '</textarea><br />' . "\n";
|
82 |
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. Just try not to put anything here that would actually be visible to the Customer. Things like 1x1 pixel images that load up silently and/or JavaScript tracking routines will be fine. Google Analytics code works just fine, AdSense performance tracking, as well as Yahoo tracking and other affiliate network codes are all OK here.<br /><br />' . "\n";
|
83 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
84 |
echo '<ul>' . "\n";
|
161 |
echo '<tr>' . "\n";
|
162 |
|
163 |
echo '<td>' . "\n";
|
164 |
+
echo '<textarea name="ws_plugin__s2member_modification_tracking_codes" id="ws-plugin--s2member-modification-tracking-codes" rows="8" wrap="off" spellcheck="false" class="monospace">' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["modification_tracking_codes"]) . '</textarea><br />' . "\n";
|
165 |
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. Just try not to put anything here that would actually be visible to the Customer. Things like 1x1 pixel images that load up silently and/or JavaScript tracking routines will be fine. Google Analytics code works just fine, AdSense performance tracking, as well as Yahoo tracking and other affiliate network codes are all OK here.<br /><br />' . "\n";
|
166 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
167 |
echo '<ul>' . "\n";
|
255 |
echo '<tr>' . "\n";
|
256 |
|
257 |
echo '<td>' . "\n";
|
258 |
+
echo '<textarea name="ws_plugin__s2member_ccap_tracking_codes" id="ws-plugin--s2member-ccap-tracking-codes" rows="8" wrap="off" spellcheck="false" class="monospace">' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["ccap_tracking_codes"]) . '</textarea><br />' . "\n";
|
259 |
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. Just try not to put anything here that would actually be visible to the Customer. Things like 1x1 pixel images that load up silently and/or JavaScript tracking routines will be fine. Google Analytics code works just fine, AdSense performance tracking, as well as Yahoo tracking and other affiliate network codes are all OK here.<br /><br />' . "\n";
|
260 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
261 |
echo '<ul>' . "\n";
|
344 |
echo '<tr>' . "\n";
|
345 |
|
346 |
echo '<td>' . "\n";
|
347 |
+
echo '<textarea name="ws_plugin__s2member_sp_tracking_codes" id="ws-plugin--s2member-sp-tracking-codes" rows="8" wrap="off" spellcheck="false" class="monospace">' . format_to_edit ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["sp_tracking_codes"]) . '</textarea><br />' . "\n";
|
348 |
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. Just try not to put anything here that would actually be visible to the Customer. Things like 1x1 pixel images that load up silently and/or JavaScript tracking routines will be fine. Google Analytics code works just fine, AdSense performance tracking, as well as Yahoo tracking and other affiliate network codes are all OK here.<br /><br />' . "\n";
|
349 |
echo '<strong>You can also use these special Replacement Codes if you need them:</strong>' . "\n";
|
350 |
echo '<ul>' . "\n";
|
393 |
do_action ("ws_plugin__s2member_during_trk_ops_page_during_left_sections_after_sp_tracking", get_defined_vars ());
|
394 |
}
|
395 |
|
396 |
+
if (apply_filters ("ws_plugin__s2member_during_trk_ops_page_during_left_sections_display_integrations_divider", true, get_defined_vars ()))
|
397 |
{
|
398 |
+
do_action ("ws_plugin__s2member_during_trk_ops_page_during_left_sections_before_integrations_divider", get_defined_vars ());
|
399 |
+
echo '<div style="border-bottom:1px solid #DFDFDF; margin:-20px 0 20px 0; padding:0;"> </div>' . "\n";
|
400 |
+
do_action ("ws_plugin__s2member_during_trk_ops_page_during_left_sections_after_integrations_divider", get_defined_vars ());
|
|
|
|
|
|
|
|
|
401 |
}
|
402 |
|
403 |
if (apply_filters ("ws_plugin__s2member_during_trk_ops_page_during_left_sections_display_idev", true, get_defined_vars ()))
|
408 |
|
409 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-idev-section">' . "\n";
|
410 |
echo '<h3>Integrating iDevAffiliate (affiliate program management)</h3>' . "\n";
|
411 |
+
echo '<a href="http://www.s2member.com/idev-affiliate" target="_blank"><img src="' . esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]) . '/images/idev-logo.gif" class="ws-menu-page-right screenshot" style="width:125px; height:125px; border:0;" alt="." /></a>' . "\n";
|
412 |
echo '<p>Adding affiliate tracking software to your site is one of the most effective ways to achieve more sales, more traffic, and more search engine ranking. <a href="http://www.s2member.com/idev-affiliate" target="_blank" rel="external">iDevAffiliate</a> (an affiliate management portal), installs in just minutes, and can be integrated seamlessly with s2Member. We recommend <a href="http://www.s2member.com/idev-affiliate" target="_blank" rel="external">iDevAffiliate Standard</a> ( $99 ) because of its proven track record, and its ability to integrate with s2Member using a variety of techniques. The most popular being a Hidden Image Tag.</p>' . "\n";
|
413 |
echo '<p>If you choose to <a href="http://www.s2member.com/idev-affiliate" target="_blank" rel="external">install iDevAffiliate</a>, you will need to configure your <code>iDevAffiliate -› Shopping Cart Integration</code>. Please choose <code>Generic Tracking Pixel</code>. Then, grab your Hidden Image Tag, and pop the code provided by iDevAffiliate into one of the fields for Tracking Codes <em>(at the top of this page)</em>. You MUST also add Replacement Codes to your Hidden Image Tag. To save you some trouble, we\'ve provided some examples below, one for each of s2Member\'s Tracking Code integrations.</p>' . "\n";
|
414 |
do_action ("ws_plugin__s2member_during_trk_ops_page_during_left_sections_during_idev", get_defined_vars ());
|
457 |
|
458 |
echo '<div class="ws-menu-page-section ws-plugin--s2member-shareasale-section">' . "\n";
|
459 |
echo '<h3>Integrating ShareASale (affiliate program management)</h3>' . "\n";
|
460 |
+
echo '<a href="http://www.s2member.com/shareasale" target="_blank"><img src="' . esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["dir_url"]) . '/images/sas-logo.png" class="ws-menu-page-right screenshot" style="width:125px; height:125px; border:0;" alt="." /></a>' . "\n";
|
461 |
echo '<p>Established in 2000, <a href="http://www.s2member.com/shareasale" target="_blank" rel="external">ShareASale</a> provides award winning technology and service; which will enable you to connect with a network of established affiliates, as well as recruit new ones. Joining ShareASale, maximizes your ability to reach the greatest number of affiliates, with the least amount of work. At ShareASale, you\'ll have access to an existing affiliate-base. You place your site on the market, and let their existing affiliates promote your products/services.</p>' . "\n";
|
462 |
echo '<p>If you <a href="http://www.s2member.com/shareasale" target="_blank" rel="external">become a Merchant at ShareASale</a>, you will need to configure your <code>ShareASale -› Sale Tracking</code>. Grab your Hidden Image Tag, and pop the code provided by ShareASale into one of the fields for Tracking Codes <em>(at the top of this page)</em>. You MUST also add Replacement Codes to your Hidden Image Tag. To save you some trouble, we\'ve provided some examples below, one for each of s2Member\'s Tracking Code integrations.</p>' . "\n";
|
463 |
do_action ("ws_plugin__s2member_during_trk_ops_page_during_left_sections_during_shareasale", get_defined_vars ());
|
522 |
|
523 |
echo '<div class="ws-menu-page-hr"></div>' . "\n";
|
524 |
|
525 |
+
echo '<p class="submit"><input type="submit" value="Save All Changes" /></p>' . "\n";
|
526 |
|
527 |
echo '</form>' . "\n";
|
528 |
|
includes/menu-pages/updates.inc.php
CHANGED
@@ -35,22 +35,24 @@ if(!class_exists("c_ws_plugin__s2member_menu_pages_updates"))
|
|
35 |
|
36 |
if(!is_ssl() && !c_ws_plugin__s2member_utils_conds::is_localhost())
|
37 |
{
|
38 |
-
echo '<div class="ws-menu-page-r-group-header">'."\n";
|
39 |
-
echo '<
|
40 |
echo '</div>'."\n";
|
41 |
|
42 |
-
echo '<div class="ws-menu-page-r-group
|
43 |
echo '<script type="text/javascript" src="http://feeds.feedburner.com/s2member-updates?format=sigpro&nItems=5&openLinks=new&displayTitle=false&displayFeedIcon=false&displayExcerpts=false&displayAuthor=false&displayDate=false&displayEnclosures=false&displayLinkToFeed=false"></script>'."\n";
|
44 |
echo '➘ <a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value("Knowledge Base")).'" target="_blank" rel="external">More updates...</a>'."\n";
|
45 |
echo '</div>'."\n";
|
46 |
}
|
47 |
|
48 |
echo '<div class="ws-menu-page-r-group-header">'."\n";
|
49 |
-
echo '<
|
50 |
echo '</div>'."\n";
|
51 |
|
52 |
echo '<div class="ws-menu-page-r-group">'."\n";
|
53 |
|
|
|
|
|
54 |
echo '<div id="ws-updates-div-fname">'."\n";
|
55 |
echo '<label for="ws-updates-fname">First Name: *</label><br />'."\n";
|
56 |
echo '<input type="text" aria-required="true" autocomplete="off" name="FNAME" id="ws-updates-fname" value="'.esc_attr($user->first_name).'" />'."\n";
|
@@ -74,7 +76,7 @@ if(!class_exists("c_ws_plugin__s2member_menu_pages_updates"))
|
|
74 |
}
|
75 |
|
76 |
echo '<div id="ws-updates-div-priv">'."\n";
|
77 |
-
echo '(<a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value("Privacy URI")).'" target="_blank">
|
78 |
echo '</div>'."\n";
|
79 |
|
80 |
echo '<div id="ws-updates-div-submit">'."\n";
|
35 |
|
36 |
if(!is_ssl() && !c_ws_plugin__s2member_utils_conds::is_localhost())
|
37 |
{
|
38 |
+
echo '<div class="ws-menu-page-r-group-header open">'."\n";
|
39 |
+
echo ' <i class="fa fa-rss"></i> s2 News'."\n";
|
40 |
echo '</div>'."\n";
|
41 |
|
42 |
+
echo '<div class="ws-menu-page-r-group open">'."\n";
|
43 |
echo '<script type="text/javascript" src="http://feeds.feedburner.com/s2member-updates?format=sigpro&nItems=5&openLinks=new&displayTitle=false&displayFeedIcon=false&displayExcerpts=false&displayAuthor=false&displayDate=false&displayEnclosures=false&displayLinkToFeed=false"></script>'."\n";
|
44 |
echo '➘ <a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value("Knowledge Base")).'" target="_blank" rel="external">More updates...</a>'."\n";
|
45 |
echo '</div>'."\n";
|
46 |
}
|
47 |
|
48 |
echo '<div class="ws-menu-page-r-group-header">'."\n";
|
49 |
+
echo ' <i class="fa fa-envelope"></i> s2 Updates'."\n";
|
50 |
echo '</div>'."\n";
|
51 |
|
52 |
echo '<div class="ws-menu-page-r-group">'."\n";
|
53 |
|
54 |
+
echo '<p style="text-align:center; font-size:90%;"><strong>Hi '.esc_html(wp_get_current_user()->first_name).' :-)</strong><br />Subscribe here! We\'ll keep you informed about all things related to s2Member.</p>'."\n";
|
55 |
+
|
56 |
echo '<div id="ws-updates-div-fname">'."\n";
|
57 |
echo '<label for="ws-updates-fname">First Name: *</label><br />'."\n";
|
58 |
echo '<input type="text" aria-required="true" autocomplete="off" name="FNAME" id="ws-updates-fname" value="'.esc_attr($user->first_name).'" />'."\n";
|
76 |
}
|
77 |
|
78 |
echo '<div id="ws-updates-div-priv">'."\n";
|
79 |
+
echo '(<a href="'.esc_attr(c_ws_plugin__s2member_readmes::parse_readme_value("Privacy URI")).'" target="_blank">privacy policy</a>)'."\n";
|
80 |
echo '</div>'."\n";
|
81 |
|
82 |
echo '<div id="ws-updates-div-submit">'."\n";
|
includes/s2member-min.js
CHANGED
@@ -1 +1 @@
|
|
1 |
-
jQuery(document).ready(function(d){var c='<?php echo c_ws_plugin__s2member_utils_conds::bp_is_installed ("query-active-plugins") ? "1" : ""; ?>';var a='<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (c_ws_plugin__s2member_utils_dirs::basename_dir_app_data ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])); ?>';var b=(typeof ws_plugin__s2member_skip_all_file_confirmations!=="undefined"&&ws_plugin__s2member_skip_all_file_confirmations)?true:false;var e=[];if(S2MEMBER_CURRENT_USER_IS_LOGGED_IN&&S2MEMBER_CURRENT_USER_DOWNLOADS_CURRENTLY<S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED&&!b){d('a[href*="s2member_file_download="], a[href*="/s2member-files/"], a[href^="s2member-files/"], a[href*="/'+a.replace(/([\:\.\[\]])/g,"\\$1")+'/"], a[href^="'+a.replace(/([\:\.\[\]])/g,"\\$1")+'/"]').click(function(){if(!this.href.match(/s2member[_\-]file[_\-]download[_\-]key[\=\-].+/i)){var f='<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("— Confirm File Download —", "s2member-front", "s2member")); ?>\n\n';f+=d.sprintf('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("You`ve downloaded %s protected %s in the last %s.", "s2member-front", "s2member")); ?>',S2MEMBER_CURRENT_USER_DOWNLOADS_CURRENTLY,((S2MEMBER_CURRENT_USER_DOWNLOADS_CURRENTLY===1)?'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("file", "s2member-front", "s2member")); ?>':'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("files", "s2member-front", "s2member")); ?>'),((S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED_DAYS===1)?'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("24 hours", "s2member-front", "s2member")); ?>':d.sprintf('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("%s days", "s2member-front", "s2member")); ?>',S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED_DAYS)))+"\n\n";f+=(S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED_IS_UNLIMITED)?'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("You`re entitled to UNLIMITED downloads though (so, no worries).", "s2member-front", "s2member")); ?>':d.sprintf('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("You`re entitled to %s unique %s %s.", "s2member-front", "s2member")); ?>',S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED,((S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED===1)?'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("download", "s2member-front", "s2member")); ?>':'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("downloads", "s2member-front", "s2member")); ?>'),((S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED_DAYS===1)?'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("each day", "s2member-front", "s2member")); ?>':d.sprintf('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("every %s-day period", "s2member-front", "s2member")); ?>',S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED_DAYS)));if((this.href.match(/s2member[_\-]skip[_\-]confirmation/i)&&!this.href.match(/s2member[_\-]skip[_\-]confirmation[\=\-](0|no|false)/i))||confirm(f)){if(d.inArray(this.href,e)===-1){S2MEMBER_CURRENT_USER_DOWNLOADS_CURRENTLY++,e.push(this.href)}return true}else{return false}}else{return true}})}if(!location.href.match(/\/wp-admin(\/|\?|$)/)){d("input#ws-plugin--s2member-profile-password1, input#ws-plugin--s2member-profile-password2").keyup(function(){ws_plugin__s2member_passwordStrength(d("input#ws-plugin--s2member-profile-login"),d("input#ws-plugin--s2member-profile-password1"),d("input#ws-plugin--s2member-profile-password2"),d("div#ws-plugin--s2member-profile-password-strength"))});d("form#ws-plugin--s2member-profile").submit(function(){var h=this,g="",f="",l="";var j=d("input#ws-plugin--s2member-profile-password1",h);var i=d("input#ws-plugin--s2member-profile-password2",h);var k=d("input#ws-plugin--s2member-profile-submit",h);d(":input",h).each(function(){var m=d.trim(d(this).attr("id")).replace(/---[0-9]+$/g,"");if(m&&(g=d.trim(d('label[for="'+m+'"]',h).first().children("strong").first().text().replace(/[\r\n\t]+/g," ")))){if(f=ws_plugin__s2member_validationErrors(g,this,h)){l+=f+"\n\n"}}});if(l=d.trim(l)){alert('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("— Oops, you missed something: —", "s2member-front", "s2member")); ?>\n\n'+l);return false}else{if(d.trim(j.val())&&d.trim(j.val())!==d.trim(i.val())){alert('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("— Oops, you missed something: —", "s2member-front", "s2member")); ?>\n\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Passwords do not match up. Please try again.", "s2member-front", "s2member")); ?>');return false}else{if(d.trim(j.val())&&d.trim(j.val()).length<6){alert('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("— Oops, you missed something: —", "s2member-front", "s2member")); ?>\n\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Password MUST be at least 6 characters. Please try again.", "s2member-front", "s2member")); ?>');return false}}}ws_plugin__s2member_animateProcessing(k);return true})}if(location.href.match(/\/wp-signup\.php/)){d("div#content > div.mu_register > form#setupform").submit(function(){var h=this,g="",f="",j="";d("input#user_email",h).attr("data-expected","email");var i=d('p.submit input[type="submit"]',h);d("input#user_name, input#user_email, input#blogname, input#blog_title, input#captcha_code",h).attr({"aria-required":"true"});d(":input",h).each(function(){var k=d.trim(d(this).attr("id")).replace(/---[0-9]+$/g,"");if(k&&(g=d.trim(d('label[for="'+k+'"]',h).first().text().replace(/[\r\n\t]+/g," ")))){if(f=ws_plugin__s2member_validationErrors(g,this,h)){j+=f+"\n\n"}}});if(j=d.trim(j)){alert('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("— Oops, you missed something: —", "s2member-front", "s2member")); ?>\n\n'+j);return false}ws_plugin__s2member_animateProcessing(i);return true})}if(location.href.match(/\/wp-login\.php/)){d("div#login > form#registerform input#user_login").attr("tabindex","10");d("div#login > form#registerform input#user_email").attr("tabindex","20");d("div#login > form#registerform input#wp-submit").attr("tabindex","1000");d("input#ws-plugin--s2member-custom-reg-field-user-pass1, input#ws-plugin--s2member-custom-reg-field-user-pass2").keyup(function(){ws_plugin__s2member_passwordStrength(d("input#user_login"),d("input#ws-plugin--s2member-custom-reg-field-user-pass1"),d("input#ws-plugin--s2member-custom-reg-field-user-pass2"),d("div#ws-plugin--s2member-custom-reg-field-user-pass-strength"))});d("div#login > form#registerform").submit(function(){var h=this,g="",f="",l="";d("input#user_email",h).attr("data-expected","email");var k=d('input#ws-plugin--s2member-custom-reg-field-user-pass1[aria-required="true"]',h);var i=d("input#ws-plugin--s2member-custom-reg-field-user-pass2",h);var j=d("input#wp-submit",h);d("input#user_login, input#user_email, input#captcha_code",h).attr({"aria-required":"true"});d(":input",h).each(function(){var m=d.trim(d(this).attr("id")).replace(/---[0-9]+$/g,"");if(d.inArray(m,["user_login","user_email","captcha_code"])!==-1){if((g=d.trim(d(this).parent("label").text().replace(/[\r\n\t]+/g," ")))){if(f=ws_plugin__s2member_validationErrors(g,this,h)){l+=f+"\n\n"}}}else{if(m&&(g=d.trim(d('label[for="'+m+'"]',h).first().children("span").first().text().replace(/[\r\n\t]+/g," ")))){if(f=ws_plugin__s2member_validationErrors(g,this,h)){l+=f+"\n\n"}}}});if(l=d.trim(l)){alert('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("— Oops, you missed something: —", "s2member-front", "s2member")); ?>\n\n'+l);return false}else{if(k.length&&d.trim(k.val())!==d.trim(i.val())){alert('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("— Oops, you missed something: —", "s2member-front", "s2member")); ?>\n\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Passwords do not match up. Please try again.", "s2member-front", "s2member")); ?>');return false}else{if(k.length&&d.trim(k.val()).length<6){alert('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("— Oops, you missed something: —", "s2member-front", "s2member")); ?>\n\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Password MUST be at least 6 characters. Please try again.", "s2member-front", "s2member")); ?>');return false}}}ws_plugin__s2member_animateProcessing(j);return true})}if(location.href.match(/\/wp-admin\/(user\/)?profile\.php/)){d("form#your-profile").submit(function(){var h=this,g="",f="",i="";d("input#email",h).attr("data-expected","email");d(':input[id^="ws-plugin--s2member-profile-"]',h).each(function(){var j=d.trim(d(this).attr("id")).replace(/---[0-9]+$/g,"");if(j&&(g=d.trim(d('label[for="'+j+'"]',h).first().text().replace(/[\r\n\t]+/g," ")))){if(f=ws_plugin__s2member_validationErrors(g,this,h)){i+=f+"\n\n"}}});if(i=d.trim(i)){alert('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("— Oops, you missed something: —", "s2member-front", "s2member")); ?>\n\n'+i);return false}return true})}if(c){d("body.registration form div#ws-plugin--s2member-custom-reg-fields-4bp-section").closest("form").submit(function(){var h=this,g="",f="",i="";d("input#signup_email",h).attr("data-expected","email");d("input#signup_username, input#signup_email, input#signup_password, input#field_1",h).attr({"aria-required":"true"});d(":input",h).each(function(){var j=d.trim(d(this).attr("id")).replace(/---[0-9]+$/g,"");if(j&&(g=d.trim(d('label[for="'+j+'"]',h).first().text().replace(/[\r\n\t]+/g," ")))){if(f=ws_plugin__s2member_validationErrors(g,this,h)){i+=f+"\n\n"}}});if(i=d.trim(i)){alert('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("— Oops, you missed something: —", "s2member-front", "s2member")); ?>\n\n'+i);return false}return true});d("body.logged-in.profile.profile-edit :input.ws-plugin--s2member-profile-field-4bp").closest("form").submit(function(){var h=this,g="",f="",i="";d("input#field_1",h).attr({"aria-required":"true"});d(":input",h).each(function(){var j=d.trim(d(this).attr("id")).replace(/---[0-9]+$/g,"");if(j&&(g=d.trim(d('label[for="'+j+'"]',h).first().text().replace(/[\r\n\t]+/g," ")))){if(f=ws_plugin__s2member_validationErrors(g,this,h)){i+=f+"\n\n"}}});if(i=d.trim(i)){alert('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("— Oops, you missed something: —", "s2member-front", "s2member")); ?>\n\n'+i);return false}return true})}ws_plugin__s2member_passwordStrength=function(g,i,h,f){if(g instanceof jQuery&&i instanceof jQuery&&h instanceof jQuery&&f instanceof jQuery&&typeof passwordStrength==="function"&&typeof pwsL10n==="object"){f.removeClass("ws-plugin--s2member-password-strength-short ws-plugin--s2member-password-strength-bad ws-plugin--s2member-password-strength-good ws-plugin--s2member-password-strength-strong ws-plugin--s2member-password-strength-mismatch");switch(passwordStrength(i.val(),g.val(),h.val())){case 1:f.addClass("ws-plugin--s2member-password-strength-short").html(pwsL10n["short"]);break;case 2:f.addClass("ws-plugin--s2member-password-strength-bad").html(pwsL10n.bad);break;case 3:f.addClass("ws-plugin--s2member-password-strength-good").html(pwsL10n.good);break;case 4:f.addClass("ws-plugin--s2member-password-strength-strong").html(pwsL10n.strong);break;case 5:f.addClass("ws-plugin--s2member-password-strength-mismatch").html(pwsL10n.mismatch);break;default:f.addClass("ws-plugin--s2member-password-strength-short").html(pwsL10n["short"])}}return};ws_plugin__s2member_validationErrors=function(r,q,g,m,l){if(typeof r==="string"&&r&&typeof q==="object"&&typeof g==="object"){if(typeof q.tagName==="string"&&q.tagName.match(/^(input|textarea|select)$/i)&&!q.disabled){var t=q.tagName.toLowerCase(),p=d(q),o=d.trim(p.attr("type")).toLowerCase(),f=d.trim(p.attr("name")),s=p.val();var m=(typeof m==="boolean")?m:(p.attr("aria-required")==="true"),l=(typeof l==="string")?l:d.trim(p.attr("data-expected"));var k=('<?php echo strlen($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_force_personal_emails"]); ?>'>0)?true:false;var i=new RegExp('^(<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (implode ("|", preg_split ("/[\r\n\t ;,]+/", preg_quote ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_force_personal_emails"], "/")))); ?>)@',"i");if(t==="input"&&o==="checkbox"&&f.match(/\[\]$/)){if(typeof q.id==="string"&&q.id.match(/-0$/)){if(m&&!d('input[name="'+f.replace(/([\[\]])/g,"$1")+'"]:checked',g).length){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Please check at least one of the boxes.", "s2member-front", "s2member")); ?>'}}}else{if(t==="input"&&o==="checkbox"){if(m&&!q.checked){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Required. This box must be checked.", "s2member-front", "s2member")); ?>'}}else{if(t==="input"&&o==="radio"){if(typeof q.id==="string"&&q.id.match(/-0$/)){if(m&&!d('input[name="'+f.replace(/([\[\]])/g,"$1")+'"]:checked',g).length){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Please select one of the options.", "s2member-front", "s2member")); ?>'}}}else{if(t==="select"&&p.attr("multiple")){if(m&&(!(s instanceof Array)||!s.length)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Please select at least one of the options.", "s2member-front", "s2member")); ?>'}}else{if(typeof s!=="string"||(m&&!(s=d.trim(s)).length)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("This is a required field, please try again.", "s2member-front", "s2member")); ?>'}else{if((s=d.trim(s)).length&&((t==="input"&&o.match(/^(text|password)$/i))||t==="textarea")&&typeof l==="string"&&l.length){if(l==="numeric-wp-commas"&&(!s.match(/^[0-9\.,]+$/)||isNaN(s.replace(/,/g,"")))){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be numeric (with or without decimals, commas allowed).", "s2member-front", "s2member")); ?>'}else{if(l==="numeric"&&(!s.match(/^[0-9\.]+$/)||isNaN(s))){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be numeric (with or without decimals, no commas).", "s2member-front", "s2member")); ?>'}else{if(l==="integer"&&(!s.match(/^[0-9]+$/)||isNaN(s))){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be an integer (a whole number, without any decimals).", "s2member-front", "s2member")); ?>'}else{if(l==="integer-gt-0"&&(!s.match(/^[0-9]+$/)||isNaN(s)||s<=0)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be an integer > 0 (whole number, no decimals, greater than 0).", "s2member-front", "s2member")); ?>'}else{if(l==="float"&&(!s.match(/^[0-9\.]+$/)||!s.match(/[0-9]/)||!s.match(/\./)||isNaN(s))){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a float (floating point number, decimals required).", "s2member-front", "s2member")); ?>'}else{if(l==="float-gt-0"&&(!s.match(/^[0-9\.]+$/)||!s.match(/[0-9]/)||!s.match(/\./)||isNaN(s)||s<=0)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a float > 0 (floating point number, decimals required, greater than 0).", "s2member-front", "s2member")); ?>'}else{if(l==="date"&&!s.match(/^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a date (required date format: dd/mm/yyyy).", "s2member-front", "s2member")); ?>'}else{if(l==="email"&&!s.match(/^([a-z_~0-9\+\-]+)(((\.?)([a-z_~0-9\+\-]+))*)(@)([a-z0-9]+)(((-*)([a-z0-9]+))*)(((\.)([a-z0-9]+)(((-*)([a-z0-9]+))*))*)(\.)([a-z]{2,6})$/i)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a valid email address.", "s2member-front", "s2member")); ?>'}else{if(l==="email"&&k&&s.match(i)){return r+"\n"+d.sprintf('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Please use a personal email address.\nAddresses like <%s@> are problematic.", "s2member-front", "s2member")); ?>',s.split("@")[0])}else{if(l==="url"&&!s.match(/^http(s?)\:\/\/(.{5,})$/i)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a full URL (starting with http or https).", "s2member-front", "s2member")); ?>'}else{if(l==="domain"&&!s.match(/^([a-z0-9]+)(((-*)([a-z0-9]+))*)(((\.)([a-z0-9]+)(((-*)([a-z0-9]+))*))*)(\.)([a-z]{2,6})$/i)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a domain name (domain name only, without http).", "s2member-front", "s2member")); ?>'}else{if(l==="phone"&&(!s.match(/^[0-9 \(\)\-]+$/)||s.replace(/[^0-9]/g,"").length!==10)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a phone # (10 digits w/possible hyphens,spaces,brackets).", "s2member-front", "s2member")); ?>'}else{if(l==="uszip"&&!s.match(/^[0-9]{5}(-[0-9]{4})?$/)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a US zipcode (5-9 digits w/possible hyphen).", "s2member-front", "s2member")); ?>'}else{if(l==="cazip"&&!s.match(/^[0-9A-Z]{3}( ?)[0-9A-Z]{3}$/i)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a Canadian zipcode (6 alpha-numerics w/possible space).", "s2member-front", "s2member")); ?>'}else{if(l==="uczip"&&!s.match(/^[0-9]{5}(-[0-9]{4})?$/)&&!s.match(/^[0-9A-Z]{3}( ?)[0-9A-Z]{3}$/i)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a zipcode (either a US or Canadian zipcode).", "s2member-front", "s2member")); ?>'}else{if(l.match(/^alphanumerics-spaces-punctuation-([0-9]+)(-e)?$/)&&!s.match(/^[a-z 0-9,\.\/\?\:;"'\{\}\[\]\|\\\+\=_\-\(\)\*&\^%\$#@\!`~]+$/i)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Please use alphanumerics, spaces & punctuation only.", "s2member-front", "s2member")); ?>'}else{if(l.match(/^alphanumerics-spaces-([0-9]+)(-e)?$/)&&!s.match(/^[a-z 0-9]+$/i)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Please use alphanumerics & spaces only.", "s2member-front", "s2member")); ?>'}else{if(l.match(/^alphanumerics-punctuation-([0-9]+)(-e)?$/)&&!s.match(/^[a-z0-9,\.\/\?\:;"'\{\}\[\]\|\\\+\=_\-\(\)\*&\^%\$#@\!`~]+$/i)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Please use alphanumerics & punctuation only (no spaces).", "s2member-front", "s2member")); ?>'}else{if(l.match(/^alphanumerics-([0-9]+)(-e)?$/)&&!s.match(/^[a-z0-9]+$/i)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Please use alphanumerics only (no spaces/punctuation).", "s2member-front", "s2member")); ?>'}else{if(l.match(/^alphabetics-([0-9]+)(-e)?$/)&&!s.match(/^[a-z]+$/i)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Please use alphabetics only (no digits/spaces/punctuation).", "s2member-front", "s2member")); ?>'}else{if(l.match(/^numerics-([0-9]+)(-e)?$/)&&!s.match(/^[0-9]+$/i)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Please use numeric digits only.", "s2member-front", "s2member")); ?>'}else{if(l.match(/^(any|alphanumerics-spaces-punctuation|alphanumerics-spaces|alphanumerics-punctuation|alphanumerics|alphabetics|numerics)-([0-9]+)(-e)?$/)){var n=l.split("-"),h=Number(n[1]),j=(n.length>2&&n[2]==="e")?true:false;if(j&&s.length!==h){return r+"\n"+d.sprintf('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be exactly %s %s.", "s2member-front", "s2member")); ?>',h,((n[0]==="numerics")?((h===1)?'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("digit", "s2member-front", "s2member")); ?>':'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("digits", "s2member-front", "s2member")); ?>'):((h===1)?'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("character", "s2member-front", "s2member")); ?>':'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("characters", "s2member-front", "s2member")); ?>')))}else{if(s.length<h){return r+"\n"+d.sprintf('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be at least %s %s.", "s2member-front", "s2member")); ?>',h,((n[0]==="numerics")?((h===1)?'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("digit", "s2member-front", "s2member")); ?>':'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("digits", "s2member-front", "s2member")); ?>'):((h===1)?'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("character", "s2member-front", "s2member")); ?>':'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("characters", "s2member-front", "s2member")); ?>')))}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}return""};ws_plugin__s2member_animateProcessingConfig={originalText:"",interval:null,speed:100},ws_plugin__s2member_animateProcessing=function(g,f){if(g instanceof jQuery){if(f){clearInterval(ws_plugin__s2member_animateProcessingConfig.interval);if(ws_plugin__s2member_animateProcessingConfig.originalText){g.val(ws_plugin__s2member_animateProcessingConfig.originalText)}return}g.first().each(function(){var k=d(this),j=0,h="r",l=[".","..","..."];ws_plugin__s2member_animateProcessingConfig.originalText=k.val();clearInterval(ws_plugin__s2member_animateProcessingConfig.interval);ws_plugin__s2member_animateProcessingConfig.interval=setInterval(function(){if(h==="r"){if(j+1<=l.length-1){j=j+1,h="r"}else{j=j-1,h="l"}}else{if(h==="l"){if(j-1>=0){j=j-1,h="l"}else{j=j+1,h="r"}}}for(var m=l[j],i=l[j].length;i<l.length;i++){m+=" "}k.val('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Processing", "s2member-front", "s2member")); ?>'+m)},ws_plugin__s2member_animateProcessingConfig.speed)})}}});
|
1 |
+
jQuery(document).ready(function(d){var c='<?php echo c_ws_plugin__s2member_utils_conds::bp_is_installed ("query-active-plugins") ? "1" : ""; ?>';var a='<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (c_ws_plugin__s2member_utils_dirs::basename_dir_app_data ($GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["files_dir"])); ?>';var b=(typeof ws_plugin__s2member_skip_all_file_confirmations!=="undefined"&&ws_plugin__s2member_skip_all_file_confirmations)?true:false;var e=[];if(S2MEMBER_CURRENT_USER_IS_LOGGED_IN&&S2MEMBER_CURRENT_USER_DOWNLOADS_CURRENTLY<S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED&&!b){d('a[href*="s2member_file_download="], a[href*="/s2member-files/"], a[href^="s2member-files/"], a[href*="/'+a.replace(/([\:\.\[\]])/g,"\\$1")+'/"], a[href^="'+a.replace(/([\:\.\[\]])/g,"\\$1")+'/"]').click(function(){if(!this.href.match(/s2member[_\-]file[_\-]download[_\-]key[\=\-].+/i)){var f='<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("— Confirm File Download —", "s2member-front", "s2member")); ?>\n\n';f+=d.sprintf('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("You`ve downloaded %s protected %s in the last %s.", "s2member-front", "s2member")); ?>',S2MEMBER_CURRENT_USER_DOWNLOADS_CURRENTLY,((S2MEMBER_CURRENT_USER_DOWNLOADS_CURRENTLY===1)?'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("file", "s2member-front", "s2member")); ?>':'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("files", "s2member-front", "s2member")); ?>'),((S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED_DAYS===1)?'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("24 hours", "s2member-front", "s2member")); ?>':d.sprintf('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("%s days", "s2member-front", "s2member")); ?>',S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED_DAYS)))+"\n\n";f+=(S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED_IS_UNLIMITED)?'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("You`re entitled to UNLIMITED downloads though (so, no worries).", "s2member-front", "s2member")); ?>':d.sprintf('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("You`re entitled to %s unique %s %s.", "s2member-front", "s2member")); ?>',S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED,((S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED===1)?'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("download", "s2member-front", "s2member")); ?>':'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("downloads", "s2member-front", "s2member")); ?>'),((S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED_DAYS===1)?'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("each day", "s2member-front", "s2member")); ?>':d.sprintf('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("every %s-day period", "s2member-front", "s2member")); ?>',S2MEMBER_CURRENT_USER_DOWNLOADS_ALLOWED_DAYS)));if((this.href.match(/s2member[_\-]skip[_\-]confirmation/i)&&!this.href.match(/s2member[_\-]skip[_\-]confirmation[\=\-](0|no|false)/i))||confirm(f)){if(d.inArray(this.href,e)===-1){S2MEMBER_CURRENT_USER_DOWNLOADS_CURRENTLY++,e.push(this.href)}return true}else{return false}}else{return true}})}if(!location.href.match(/\/wp-admin(\/|\?|$)/)){d("input#ws-plugin--s2member-profile-password1, input#ws-plugin--s2member-profile-password2").keyup(function(){ws_plugin__s2member_passwordStrength(d("input#ws-plugin--s2member-profile-login"),d("input#ws-plugin--s2member-profile-password1"),d("input#ws-plugin--s2member-profile-password2"),d("div#ws-plugin--s2member-profile-password-strength"))});d("form#ws-plugin--s2member-profile").submit(function(){var h=this,g="",f="",l="";var j=d("input#ws-plugin--s2member-profile-password1",h);var i=d("input#ws-plugin--s2member-profile-password2",h);var k=d("input#ws-plugin--s2member-profile-submit",h);d(":input",h).each(function(){var m=d.trim(d(this).attr("id")).replace(/---[0-9]+$/g,"");if(m&&(g=d.trim(d('label[for="'+m+'"]',h).first().children("strong").first().text().replace(/[\r\n\t]+/g," ")))){if(f=ws_plugin__s2member_validationErrors(g,this,h)){l+=f+"\n\n"}}});if(l=d.trim(l)){alert('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("— Oops, you missed something: —", "s2member-front", "s2member")); ?>\n\n'+l);return false}else{if(d.trim(j.val())&&d.trim(j.val())!==d.trim(i.val())){alert('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("— Oops, you missed something: —", "s2member-front", "s2member")); ?>\n\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Passwords do not match up. Please try again.", "s2member-front", "s2member")); ?>');return false}else{if(d.trim(j.val())&&d.trim(j.val()).length<6){alert('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("— Oops, you missed something: —", "s2member-front", "s2member")); ?>\n\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Password MUST be at least 6 characters. Please try again.", "s2member-front", "s2member")); ?>');return false}}}ws_plugin__s2member_animateProcessing(k);return true})}if(location.href.match(/\/wp-signup\.php/)){d("div#content > div.mu_register > form#setupform").submit(function(){var h=this,g="",f="",j="";d("input#user_email",h).attr("data-expected","email");var i=d('p.submit input[type="submit"]',h);d("input#user_name, input#user_email, input#blogname, input#blog_title, input#captcha_code",h).attr({"aria-required":"true"});d(":input",h).each(function(){var k=d.trim(d(this).attr("id")).replace(/---[0-9]+$/g,"");if(k&&(g=d.trim(d('label[for="'+k+'"]',h).first().text().replace(/[\r\n\t]+/g," ")))){if(f=ws_plugin__s2member_validationErrors(g,this,h)){j+=f+"\n\n"}}});if(j=d.trim(j)){alert('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("— Oops, you missed something: —", "s2member-front", "s2member")); ?>\n\n'+j);return false}ws_plugin__s2member_animateProcessing(i);return true})}if(location.href.match(/\/wp-login\.php/)){d("div#login > form#registerform input#user_login").attr("tabindex","10");d("div#login > form#registerform input#user_email").attr("tabindex","20");d("div#login > form#registerform input#wp-submit").attr("tabindex","1000");d("input#ws-plugin--s2member-custom-reg-field-user-pass1, input#ws-plugin--s2member-custom-reg-field-user-pass2").keyup(function(){ws_plugin__s2member_passwordStrength(d("input#user_login"),d("input#ws-plugin--s2member-custom-reg-field-user-pass1"),d("input#ws-plugin--s2member-custom-reg-field-user-pass2"),d("div#ws-plugin--s2member-custom-reg-field-user-pass-strength"))});d("div#login > form#registerform").submit(function(){var h=this,g="",f="",l="";d("input#user_email",h).attr("data-expected","email");var k=d('input#ws-plugin--s2member-custom-reg-field-user-pass1[aria-required="true"]',h);var i=d("input#ws-plugin--s2member-custom-reg-field-user-pass2",h);var j=d("input#wp-submit",h);d("input#user_login, input#user_email, input#captcha_code",h).attr({"aria-required":"true"});d(":input",h).each(function(){var m=d.trim(d(this).attr("id")).replace(/---[0-9]+$/g,"");if(d.inArray(m,["user_login","user_email","captcha_code"])!==-1){if((g=d.trim(d(this).parent("label").text().replace(/[\r\n\t]+/g," ")))){if(f=ws_plugin__s2member_validationErrors(g,this,h)){l+=f+"\n\n"}}}else{if(m&&(g=d.trim(d('label[for="'+m+'"]',h).first().children("span").first().text().replace(/[\r\n\t]+/g," ")))){if(f=ws_plugin__s2member_validationErrors(g,this,h)){l+=f+"\n\n"}}}});if(l=d.trim(l)){alert('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("— Oops, you missed something: —", "s2member-front", "s2member")); ?>\n\n'+l);return false}else{if(k.length&&d.trim(k.val())!==d.trim(i.val())){alert('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("— Oops, you missed something: —", "s2member-front", "s2member")); ?>\n\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Passwords do not match up. Please try again.", "s2member-front", "s2member")); ?>');return false}else{if(k.length&&d.trim(k.val()).length<6){alert('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("— Oops, you missed something: —", "s2member-front", "s2member")); ?>\n\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Password MUST be at least 6 characters. Please try again.", "s2member-front", "s2member")); ?>');return false}}}ws_plugin__s2member_animateProcessing(j);return true})}if(location.href.match(/\/wp-admin\/(user\/)?profile\.php/)){d("form#your-profile").submit(function(){var h=this,g="",f="",i="";d("input#email",h).attr("data-expected","email");d(':input[id^="ws-plugin--s2member-profile-"]',h).each(function(){var j=d.trim(d(this).attr("id")).replace(/---[0-9]+$/g,"");if(j&&(g=d.trim(d('label[for="'+j+'"]',h).first().text().replace(/[\r\n\t]+/g," ")))){if(f=ws_plugin__s2member_validationErrors(g,this,h)){i+=f+"\n\n"}}});if(i=d.trim(i)){alert('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("— Oops, you missed something: —", "s2member-front", "s2member")); ?>\n\n'+i);return false}return true})}if(c){d("body.registration form div#ws-plugin--s2member-custom-reg-fields-4bp-section").closest("form").submit(function(){var h=this,g="",f="",i="";d("input#signup_email",h).attr("data-expected","email");d("input#signup_username, input#signup_email, input#signup_password, input#field_1",h).attr({"aria-required":"true"});d(":input",h).each(function(){var j=d.trim(d(this).attr("id")).replace(/---[0-9]+$/g,"");if(j&&(g=d.trim(d('label[for="'+j+'"]',h).first().text().replace(/[\r\n\t]+/g," ")))){if(f=ws_plugin__s2member_validationErrors(g,this,h)){i+=f+"\n\n"}}});if(i=d.trim(i)){alert('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("— Oops, you missed something: —", "s2member-front", "s2member")); ?>\n\n'+i);return false}return true});d("body.logged-in.profile.profile-edit :input.ws-plugin--s2member-profile-field-4bp").closest("form").submit(function(){var h=this,g="",f="",i="";d("input#field_1",h).attr({"aria-required":"true"});d(":input",h).each(function(){var j=d.trim(d(this).attr("id")).replace(/---[0-9]+$/g,"");if(j&&(g=d.trim(d('label[for="'+j+'"]',h).first().text().replace(/[\r\n\t]+/g," ")))){if(f=ws_plugin__s2member_validationErrors(g,this,h)){i+=f+"\n\n"}}});if(i=d.trim(i)){alert('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("— Oops, you missed something: —", "s2member-front", "s2member")); ?>\n\n'+i);return false}return true})}ws_plugin__s2member_passwordStrengthMeter=function(h,f){var g=0;if((h!=f)&&f.length>0){return"mismatch"}else{if(h.length<1){return"empty"}else{if(h.length<6){return"short"}}}if(h.match(/[0-9]/)){g+=10}if(h.match(/[a-z]/)){g+=10}if(h.match(/[A-Z]/)){g+=10}if(h.match(/[^0-9a-zA-Z]/)){g=(g===30)?g+20:g+10}if(g<30){return"bad"}if(g<50){return"good"}return"strong"};ws_plugin__s2member_passwordStrength=function(h,k,i,g){if(h instanceof jQuery&&k instanceof jQuery&&i instanceof jQuery&&g instanceof jQuery){var j={empty:'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Strength indicator", "s2member-front", "s2member")); ?>',"short":'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Very weak", "s2member-front", "s2member")); ?>',bad:'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Weak", "s2member-front", "s2member")); ?>',good:'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Medium", "s2member-front", "s2member")); ?>',strong:'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Strong", "s2member-front", "s2member")); ?>',mismatch:'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Mismatch", "s2member-front", "s2member")); ?>'};g.removeClass("ws-plugin--s2member-password-strength-short");g.removeClass("ws-plugin--s2member-password-strength-bad");g.removeClass("ws-plugin--s2member-password-strength-good");g.removeClass("ws-plugin--s2member-password-strength-strong");g.removeClass("ws-plugin--s2member-password-strength-mismatch");g.removeClass("ws-plugin--s2member-password-strength-empty");var f=ws_plugin__s2member_passwordStrengthMeter(k.val(),i.val());g.addClass("ws-plugin--s2member-password-strength-"+f).html(j[f])}};ws_plugin__s2member_validationErrors=function(r,q,g,m,l){if(typeof r==="string"&&r&&typeof q==="object"&&typeof g==="object"){if(typeof q.tagName==="string"&&q.tagName.match(/^(input|textarea|select)$/i)&&!q.disabled){var t=q.tagName.toLowerCase(),p=d(q),o=d.trim(p.attr("type")).toLowerCase(),f=d.trim(p.attr("name")),s=p.val();var m=(typeof m==="boolean")?m:(p.attr("aria-required")==="true"),l=(typeof l==="string")?l:d.trim(p.attr("data-expected"));var k=('<?php echo strlen($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_force_personal_emails"]); ?>'>0)?true:false;var i=new RegExp('^(<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (implode ("|", preg_split ("/[\r\n\t ;,]+/", preg_quote ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["custom_reg_force_personal_emails"], "/")))); ?>)@',"i");if(t==="input"&&o==="checkbox"&&f.match(/\[\]$/)){if(typeof q.id==="string"&&q.id.match(/-0$/)){if(m&&!d('input[name="'+f.replace(/([\[\]])/g,"$1")+'"]:checked',g).length){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Please check at least one of the boxes.", "s2member-front", "s2member")); ?>'}}}else{if(t==="input"&&o==="checkbox"){if(m&&!q.checked){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Required. This box must be checked.", "s2member-front", "s2member")); ?>'}}else{if(t==="input"&&o==="radio"){if(typeof q.id==="string"&&q.id.match(/-0$/)){if(m&&!d('input[name="'+f.replace(/([\[\]])/g,"$1")+'"]:checked',g).length){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Please select one of the options.", "s2member-front", "s2member")); ?>'}}}else{if(t==="select"&&p.attr("multiple")){if(m&&(!(s instanceof Array)||!s.length)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Please select at least one of the options.", "s2member-front", "s2member")); ?>'}}else{if(typeof s!=="string"||(m&&!(s=d.trim(s)).length)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("This is a required field, please try again.", "s2member-front", "s2member")); ?>'}else{if((s=d.trim(s)).length&&((t==="input"&&o.match(/^(text|password)$/i))||t==="textarea")&&typeof l==="string"&&l.length){if(l==="numeric-wp-commas"&&(!s.match(/^[0-9\.,]+$/)||isNaN(s.replace(/,/g,"")))){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be numeric (with or without decimals, commas allowed).", "s2member-front", "s2member")); ?>'}else{if(l==="numeric"&&(!s.match(/^[0-9\.]+$/)||isNaN(s))){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be numeric (with or without decimals, no commas).", "s2member-front", "s2member")); ?>'}else{if(l==="integer"&&(!s.match(/^[0-9]+$/)||isNaN(s))){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be an integer (a whole number, without any decimals).", "s2member-front", "s2member")); ?>'}else{if(l==="integer-gt-0"&&(!s.match(/^[0-9]+$/)||isNaN(s)||s<=0)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be an integer > 0 (whole number, no decimals, greater than 0).", "s2member-front", "s2member")); ?>'}else{if(l==="float"&&(!s.match(/^[0-9\.]+$/)||!s.match(/[0-9]/)||!s.match(/\./)||isNaN(s))){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a float (floating point number, decimals required).", "s2member-front", "s2member")); ?>'}else{if(l==="float-gt-0"&&(!s.match(/^[0-9\.]+$/)||!s.match(/[0-9]/)||!s.match(/\./)||isNaN(s)||s<=0)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a float > 0 (floating point number, decimals required, greater than 0).", "s2member-front", "s2member")); ?>'}else{if(l==="date"&&!s.match(/^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a date (required date format: dd/mm/yyyy).", "s2member-front", "s2member")); ?>'}else{if(l==="email"&&!s.match(/^([a-z_~0-9\+\-]+)(((\.?)([a-z_~0-9\+\-]+))*)(@)([a-z0-9]+)(((-*)([a-z0-9]+))*)(((\.)([a-z0-9]+)(((-*)([a-z0-9]+))*))*)(\.)([a-z]{2,6})$/i)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a valid email address.", "s2member-front", "s2member")); ?>'}else{if(l==="email"&&k&&s.match(i)){return r+"\n"+d.sprintf('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Please use a personal email address.\nAddresses like <%s@> are problematic.", "s2member-front", "s2member")); ?>',s.split("@")[0])}else{if(l==="url"&&!s.match(/^http(s?)\:\/\/(.{5,})$/i)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a full URL (starting with http or https).", "s2member-front", "s2member")); ?>'}else{if(l==="domain"&&!s.match(/^([a-z0-9]+)(((-*)([a-z0-9]+))*)(((\.)([a-z0-9]+)(((-*)([a-z0-9]+))*))*)(\.)([a-z]{2,6})$/i)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a domain name (domain name only, without http).", "s2member-front", "s2member")); ?>'}else{if(l==="phone"&&(!s.match(/^[0-9 \(\)\-]+$/)||s.replace(/[^0-9]/g,"").length!==10)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a phone # (10 digits w/possible hyphens,spaces,brackets).", "s2member-front", "s2member")); ?>'}else{if(l==="uszip"&&!s.match(/^[0-9]{5}(-[0-9]{4})?$/)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a US zipcode (5-9 digits w/possible hyphen).", "s2member-front", "s2member")); ?>'}else{if(l==="cazip"&&!s.match(/^[0-9A-Z]{3}( ?)[0-9A-Z]{3}$/i)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a Canadian zipcode (6 alpha-numerics w/possible space).", "s2member-front", "s2member")); ?>'}else{if(l==="uczip"&&!s.match(/^[0-9]{5}(-[0-9]{4})?$/)&&!s.match(/^[0-9A-Z]{3}( ?)[0-9A-Z]{3}$/i)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be a zipcode (either a US or Canadian zipcode).", "s2member-front", "s2member")); ?>'}else{if(l.match(/^alphanumerics-spaces-punctuation-([0-9]+)(-e)?$/)&&!s.match(/^[a-z 0-9,\.\/\?\:;"'\{\}\[\]\|\\\+\=_\-\(\)\*&\^%\$#@\!`~]+$/i)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Please use alphanumerics, spaces & punctuation only.", "s2member-front", "s2member")); ?>'}else{if(l.match(/^alphanumerics-spaces-([0-9]+)(-e)?$/)&&!s.match(/^[a-z 0-9]+$/i)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Please use alphanumerics & spaces only.", "s2member-front", "s2member")); ?>'}else{if(l.match(/^alphanumerics-punctuation-([0-9]+)(-e)?$/)&&!s.match(/^[a-z0-9,\.\/\?\:;"'\{\}\[\]\|\\\+\=_\-\(\)\*&\^%\$#@\!`~]+$/i)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Please use alphanumerics & punctuation only (no spaces).", "s2member-front", "s2member")); ?>'}else{if(l.match(/^alphanumerics-([0-9]+)(-e)?$/)&&!s.match(/^[a-z0-9]+$/i)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Please use alphanumerics only (no spaces/punctuation).", "s2member-front", "s2member")); ?>'}else{if(l.match(/^alphabetics-([0-9]+)(-e)?$/)&&!s.match(/^[a-z]+$/i)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Please use alphabetics only (no digits/spaces/punctuation).", "s2member-front", "s2member")); ?>'}else{if(l.match(/^numerics-([0-9]+)(-e)?$/)&&!s.match(/^[0-9]+$/i)){return r+'\n<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Please use numeric digits only.", "s2member-front", "s2member")); ?>'}else{if(l.match(/^(any|alphanumerics-spaces-punctuation|alphanumerics-spaces|alphanumerics-punctuation|alphanumerics|alphabetics|numerics)-([0-9]+)(-e)?$/)){var n=l.split("-"),h=Number(n[1]),j=(n.length>2&&n[2]==="e")?true:false;if(j&&s.length!==h){return r+"\n"+d.sprintf('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be exactly %s %s.", "s2member-front", "s2member")); ?>',h,((n[0]==="numerics")?((h===1)?'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("digit", "s2member-front", "s2member")); ?>':'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("digits", "s2member-front", "s2member")); ?>'):((h===1)?'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("character", "s2member-front", "s2member")); ?>':'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("characters", "s2member-front", "s2member")); ?>')))}else{if(s.length<h){return r+"\n"+d.sprintf('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Must be at least %s %s.", "s2member-front", "s2member")); ?>',h,((n[0]==="numerics")?((h===1)?'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("digit", "s2member-front", "s2member")); ?>':'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("digits", "s2member-front", "s2member")); ?>'):((h===1)?'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("character", "s2member-front", "s2member")); ?>':'<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("characters", "s2member-front", "s2member")); ?>')))}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}return""};ws_plugin__s2member_animateProcessingConfig={originalText:"",interval:null,speed:100},ws_plugin__s2member_animateProcessing=function(g,f){if(g instanceof jQuery){if(f){clearInterval(ws_plugin__s2member_animateProcessingConfig.interval);if(ws_plugin__s2member_animateProcessingConfig.originalText){g.val(ws_plugin__s2member_animateProcessingConfig.originalText)}return}g.first().each(function(){var k=d(this),j=0,h="r",l=[".","..","..."];ws_plugin__s2member_animateProcessingConfig.originalText=k.val();clearInterval(ws_plugin__s2member_animateProcessingConfig.interval);ws_plugin__s2member_animateProcessingConfig.interval=setInterval(function(){if(h==="r"){if(j+1<=l.length-1){j=j+1,h="r"}else{j=j-1,h="l"}}else{if(h==="l"){if(j-1>=0){j=j-1,h="l"}else{j=j+1,h="r"}}}for(var m=l[j],i=l[j].length;i<l.length;i++){m+=" "}k.val('<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Processing", "s2member-front", "s2member")); ?>'+m)},ws_plugin__s2member_animateProcessingConfig.speed)})}}});
|
includes/s2member.js
CHANGED
@@ -296,35 +296,54 @@ jQuery(document).ready (function($)
|
|
296 |
});
|
297 |
}
|
298 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
299 |
ws_plugin__s2member_passwordStrength = function($username, $pass1, $pass2, $result)
|
300 |
{
|
301 |
-
if ($username instanceof jQuery && $pass1 instanceof jQuery && $pass2 instanceof jQuery && $result instanceof jQuery
|
302 |
{
|
303 |
-
|
304 |
-
|
305 |
-
|
306 |
-
|
307 |
-
|
308 |
-
|
309 |
-
|
310 |
-
|
311 |
-
|
312 |
-
|
313 |
-
|
314 |
-
|
315 |
-
|
316 |
-
|
317 |
-
|
318 |
-
|
319 |
-
|
320 |
-
$result.addClass ('ws-plugin--s2member-password-strength-mismatch').html (pwsL10n['mismatch']);
|
321 |
-
break;
|
322 |
-
default:
|
323 |
-
$result.addClass ('ws-plugin--s2member-password-strength-short').html (pwsL10n['short']);
|
324 |
-
}
|
325 |
}
|
326 |
-
|
327 |
-
return;
|
328 |
};
|
329 |
|
330 |
ws_plugin__s2member_validationErrors = function(label, field, context, required, expected)
|
296 |
});
|
297 |
}
|
298 |
|
299 |
+
ws_plugin__s2member_passwordStrengthMeter = function(password1, password2)
|
300 |
+
{
|
301 |
+
var score = 0; // Initialize score.
|
302 |
+
|
303 |
+
if((password1 != password2) && password2.length > 0)
|
304 |
+
return 'mismatch';
|
305 |
+
else if(password1.length < 1)
|
306 |
+
return 'empty';
|
307 |
+
else if(password1.length < 6)
|
308 |
+
return 'short';
|
309 |
+
|
310 |
+
if(password1.match(/[0-9]/))
|
311 |
+
score += 10;
|
312 |
+
if(password1.match(/[a-z]/))
|
313 |
+
score += 10;
|
314 |
+
if(password1.match(/[A-Z]/))
|
315 |
+
score += 10;
|
316 |
+
if(password1.match(/[^0-9a-zA-Z]/))
|
317 |
+
score = (score === 30) ? score + 20 : score + 10;
|
318 |
+
|
319 |
+
if(score < 30) return 'bad';
|
320 |
+
if(score < 50) return 'good';
|
321 |
+
|
322 |
+
return 'strong'; // Default return value.
|
323 |
+
};
|
324 |
+
|
325 |
ws_plugin__s2member_passwordStrength = function($username, $pass1, $pass2, $result)
|
326 |
{
|
327 |
+
if ($username instanceof jQuery && $pass1 instanceof jQuery && $pass2 instanceof jQuery && $result instanceof jQuery)
|
328 |
{
|
329 |
+
var pwsL10n = { // Password strength meter translations.
|
330 |
+
'empty': '<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Strength indicator", "s2member-front", "s2member")); ?>',
|
331 |
+
'short': '<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Very weak", "s2member-front", "s2member")); ?>',
|
332 |
+
'bad': '<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Weak", "s2member-front", "s2member")); ?>',
|
333 |
+
'good': '<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Medium", "s2member-front", "s2member")); ?>',
|
334 |
+
'strong': '<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Strong", "s2member-front", "s2member")); ?>',
|
335 |
+
'mismatch': '<?php echo c_ws_plugin__s2member_utils_strings::esc_js_sq (_x ("Mismatch", "s2member-front", "s2member")); ?>'};
|
336 |
+
|
337 |
+
$result.removeClass ('ws-plugin--s2member-password-strength-short');
|
338 |
+
$result.removeClass ('ws-plugin--s2member-password-strength-bad');
|
339 |
+
$result.removeClass ('ws-plugin--s2member-password-strength-good');
|
340 |
+
$result.removeClass ('ws-plugin--s2member-password-strength-strong');
|
341 |
+
$result.removeClass ('ws-plugin--s2member-password-strength-mismatch');
|
342 |
+
$result.removeClass ('ws-plugin--s2member-password-strength-empty');
|
343 |
+
|
344 |
+
var meterSays = ws_plugin__s2member_passwordStrengthMeter($pass1.val (), $pass2.val ());
|
345 |
+
$result.addClass ('ws-plugin--s2member-password-strength-'+meterSays).html (pwsL10n[meterSays]);
|
|
|
|
|
|
|
|
|
|
|
346 |
}
|
|
|
|
|
347 |
};
|
348 |
|
349 |
ws_plugin__s2member_validationErrors = function(label, field, context, required, expected)
|
includes/translations/s2member.pot
CHANGED
@@ -4,7 +4,7 @@ msgid ""
|
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: s2Member® Framework 130816\n"
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/s2member\n"
|
7 |
-
"POT-Creation-Date: 2013-
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
@@ -21,12 +21,12 @@ msgstr ""
|
|
21 |
#: s2member/includes/classes/custom-reg-fields.inc.php:464
|
22 |
#: s2member/includes/classes/profile-in.inc.php:120
|
23 |
#: s2member/includes/classes/sc-profile-in.inc.php:136
|
24 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
25 |
-
#: s2member-pro/includes/templates/forms/authnet-registration-form.php:
|
26 |
-
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:
|
27 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
28 |
-
#: s2member-pro/includes/templates/forms/paypal-registration-form.php:
|
29 |
-
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:
|
30 |
msgctxt "s2member-front"
|
31 |
msgid "First Name"
|
32 |
msgstr ""
|
@@ -35,12 +35,12 @@ msgstr ""
|
|
35 |
#: s2member/includes/classes/custom-reg-fields.inc.php:479
|
36 |
#: s2member/includes/classes/profile-in.inc.php:140
|
37 |
#: s2member/includes/classes/sc-profile-in.inc.php:156
|
38 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
39 |
-
#: s2member-pro/includes/templates/forms/authnet-registration-form.php:
|
40 |
-
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:
|
41 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
42 |
-
#: s2member-pro/includes/templates/forms/paypal-registration-form.php:
|
43 |
-
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:
|
44 |
msgctxt "s2member-front"
|
45 |
msgid "Last Name"
|
46 |
msgstr ""
|
@@ -63,10 +63,10 @@ msgstr ""
|
|
63 |
#: s2member/includes/classes/custom-reg-fields.inc.php:446
|
64 |
#: s2member/includes/classes/profile-in.inc.php:243
|
65 |
#: s2member/includes/classes/sc-profile-in.inc.php:259
|
66 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
67 |
-
#: s2member-pro/includes/templates/forms/authnet-registration-form.php:
|
68 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
69 |
-
#: s2member-pro/includes/templates/forms/paypal-registration-form.php:
|
70 |
msgctxt "s2member-front"
|
71 |
msgid "password strength indicator"
|
72 |
msgstr ""
|
@@ -728,12 +728,12 @@ msgstr ""
|
|
728 |
|
729 |
#: s2member/includes/classes/profile-in.inc.php:98
|
730 |
#: s2member/includes/classes/sc-profile-in.inc.php:114
|
731 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
732 |
-
#: s2member-pro/includes/templates/forms/authnet-registration-form.php:
|
733 |
-
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:
|
734 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
735 |
-
#: s2member-pro/includes/templates/forms/paypal-registration-form.php:
|
736 |
-
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:
|
737 |
msgctxt "s2member-front"
|
738 |
msgid "Email Address"
|
739 |
msgstr ""
|
@@ -818,7 +818,7 @@ msgstr ""
|
|
818 |
#: s2member/includes/templates/buttons/paypal-sp-checkout-button.php:34
|
819 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
820 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:270
|
821 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
822 |
msgctxt "s2member-front paypal-button-lang-code"
|
823 |
msgid "en_US"
|
824 |
msgstr ""
|
@@ -891,36 +891,6 @@ msgctxt "s2member-front"
|
|
891 |
msgid "(for this site)"
|
892 |
msgstr ""
|
893 |
|
894 |
-
#: s2member/includes/classes/utils-html.inc.php:59
|
895 |
-
msgctxt "s2member-front"
|
896 |
-
msgid "Strength indicator"
|
897 |
-
msgstr ""
|
898 |
-
|
899 |
-
#: s2member/includes/classes/utils-html.inc.php:59
|
900 |
-
msgctxt "s2member-front"
|
901 |
-
msgid "Very weak"
|
902 |
-
msgstr ""
|
903 |
-
|
904 |
-
#: s2member/includes/classes/utils-html.inc.php:59
|
905 |
-
msgctxt "s2member-front"
|
906 |
-
msgid "Weak"
|
907 |
-
msgstr ""
|
908 |
-
|
909 |
-
#: s2member/includes/classes/utils-html.inc.php:59
|
910 |
-
msgctxt "s2member-front"
|
911 |
-
msgid "Medium"
|
912 |
-
msgstr ""
|
913 |
-
|
914 |
-
#: s2member/includes/classes/utils-html.inc.php:59
|
915 |
-
msgctxt "s2member-front"
|
916 |
-
msgid "Strong"
|
917 |
-
msgstr ""
|
918 |
-
|
919 |
-
#: s2member/includes/classes/utils-html.inc.php:59
|
920 |
-
msgctxt "s2member-front"
|
921 |
-
msgid "Mismatch"
|
922 |
-
msgstr ""
|
923 |
-
|
924 |
#: s2member/includes/classes/utils-time.inc.php:53
|
925 |
msgctxt "s2member-front"
|
926 |
msgid "less than a minute"
|
@@ -1225,12 +1195,12 @@ msgstr ""
|
|
1225 |
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:239
|
1226 |
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:246
|
1227 |
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:253
|
1228 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1229 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1230 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1231 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1232 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1233 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1234 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
1235 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:66
|
1236 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:73
|
@@ -1240,12 +1210,12 @@ msgstr ""
|
|
1240 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:239
|
1241 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:246
|
1242 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:253
|
1243 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1244 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1245 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1246 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1247 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1248 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1249 |
msgctxt "s2member-front"
|
1250 |
msgid "— Oops, you missed something: —"
|
1251 |
msgstr ""
|
@@ -1254,10 +1224,10 @@ msgstr ""
|
|
1254 |
#: s2member/includes/s2member.js:192
|
1255 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
1256 |
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:239
|
1257 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1258 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
1259 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:239
|
1260 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1261 |
msgctxt "s2member-front"
|
1262 |
msgid "Passwords do not match up. Please try again."
|
1263 |
msgstr ""
|
@@ -1266,181 +1236,211 @@ msgstr ""
|
|
1266 |
#: s2member/includes/s2member.js:199
|
1267 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
1268 |
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:246
|
1269 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
1270 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
1271 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:246
|
1272 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
1273 |
msgctxt "s2member-front"
|
1274 |
msgid "Password MUST be at least 6 characters. Please try again."
|
1275 |
msgstr ""
|
1276 |
|
1277 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1278 |
msgctxt "s2member-front"
|
1279 |
msgid "Please check at least one of the boxes."
|
1280 |
msgstr ""
|
1281 |
|
1282 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1283 |
msgctxt "s2member-front"
|
1284 |
msgid "Required. This box must be checked."
|
1285 |
msgstr ""
|
1286 |
|
1287 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1288 |
msgctxt "s2member-front"
|
1289 |
msgid "Please select one of the options."
|
1290 |
msgstr ""
|
1291 |
|
1292 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1293 |
msgctxt "s2member-front"
|
1294 |
msgid "Please select at least one of the options."
|
1295 |
msgstr ""
|
1296 |
|
1297 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1298 |
msgctxt "s2member-front"
|
1299 |
msgid "This is a required field, please try again."
|
1300 |
msgstr ""
|
1301 |
|
1302 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1303 |
msgctxt "s2member-front"
|
1304 |
msgid "Must be numeric (with or without decimals, commas allowed)."
|
1305 |
msgstr ""
|
1306 |
|
1307 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1308 |
msgctxt "s2member-front"
|
1309 |
msgid "Must be numeric (with or without decimals, no commas)."
|
1310 |
msgstr ""
|
1311 |
|
1312 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1313 |
msgctxt "s2member-front"
|
1314 |
msgid "Must be an integer (a whole number, without any decimals)."
|
1315 |
msgstr ""
|
1316 |
|
1317 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1318 |
msgctxt "s2member-front"
|
1319 |
msgid "Must be an integer > 0 (whole number, no decimals, greater than 0)."
|
1320 |
msgstr ""
|
1321 |
|
1322 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1323 |
msgctxt "s2member-front"
|
1324 |
msgid "Must be a float (floating point number, decimals required)."
|
1325 |
msgstr ""
|
1326 |
|
1327 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1328 |
msgctxt "s2member-front"
|
1329 |
msgid "Must be a float > 0 (floating point number, decimals required, greater than 0)."
|
1330 |
msgstr ""
|
1331 |
|
1332 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1333 |
msgctxt "s2member-front"
|
1334 |
msgid "Must be a date (required date format: dd/mm/yyyy)."
|
1335 |
msgstr ""
|
1336 |
|
1337 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1338 |
msgctxt "s2member-front"
|
1339 |
msgid "Must be a valid email address."
|
1340 |
msgstr ""
|
1341 |
|
1342 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1343 |
msgctxt "s2member-front"
|
1344 |
msgid ""
|
1345 |
"Please use a personal email address.\n"
|
1346 |
"Addresses like <%s@> are problematic."
|
1347 |
msgstr ""
|
1348 |
|
1349 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1350 |
msgctxt "s2member-front"
|
1351 |
msgid "Must be a full URL (starting with http or https)."
|
1352 |
msgstr ""
|
1353 |
|
1354 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1355 |
msgctxt "s2member-front"
|
1356 |
msgid "Must be a domain name (domain name only, without http)."
|
1357 |
msgstr ""
|
1358 |
|
1359 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1360 |
msgctxt "s2member-front"
|
1361 |
msgid "Must be a phone # (10 digits w/possible hyphens,spaces,brackets)."
|
1362 |
msgstr ""
|
1363 |
|
1364 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1365 |
msgctxt "s2member-front"
|
1366 |
msgid "Must be a US zipcode (5-9 digits w/possible hyphen)."
|
1367 |
msgstr ""
|
1368 |
|
1369 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1370 |
msgctxt "s2member-front"
|
1371 |
msgid "Must be a Canadian zipcode (6 alpha-numerics w/possible space)."
|
1372 |
msgstr ""
|
1373 |
|
1374 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1375 |
msgctxt "s2member-front"
|
1376 |
msgid "Must be a zipcode (either a US or Canadian zipcode)."
|
1377 |
msgstr ""
|
1378 |
|
1379 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1380 |
msgctxt "s2member-front"
|
1381 |
msgid "Please use alphanumerics, spaces & punctuation only."
|
1382 |
msgstr ""
|
1383 |
|
1384 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1385 |
msgctxt "s2member-front"
|
1386 |
msgid "Please use alphanumerics & spaces only."
|
1387 |
msgstr ""
|
1388 |
|
1389 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1390 |
msgctxt "s2member-front"
|
1391 |
msgid "Please use alphanumerics & punctuation only (no spaces)."
|
1392 |
msgstr ""
|
1393 |
|
1394 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1395 |
msgctxt "s2member-front"
|
1396 |
msgid "Please use alphanumerics only (no spaces/punctuation)."
|
1397 |
msgstr ""
|
1398 |
|
1399 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1400 |
msgctxt "s2member-front"
|
1401 |
msgid "Please use alphabetics only (no digits/spaces/punctuation)."
|
1402 |
msgstr ""
|
1403 |
|
1404 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1405 |
msgctxt "s2member-front"
|
1406 |
msgid "Please use numeric digits only."
|
1407 |
msgstr ""
|
1408 |
|
1409 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1410 |
msgctxt "s2member-front"
|
1411 |
msgid "Must be exactly %s %s."
|
1412 |
msgstr ""
|
1413 |
|
1414 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1415 |
-
#: s2member/includes/s2member.js:
|
1416 |
msgctxt "s2member-front"
|
1417 |
msgid "digit"
|
1418 |
msgstr ""
|
1419 |
|
1420 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1421 |
-
#: s2member/includes/s2member.js:
|
1422 |
msgctxt "s2member-front"
|
1423 |
msgid "digits"
|
1424 |
msgstr ""
|
1425 |
|
1426 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1427 |
-
#: s2member/includes/s2member.js:
|
1428 |
msgctxt "s2member-front"
|
1429 |
msgid "character"
|
1430 |
msgstr ""
|
1431 |
|
1432 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1433 |
-
#: s2member/includes/s2member.js:
|
1434 |
msgctxt "s2member-front"
|
1435 |
msgid "characters"
|
1436 |
msgstr ""
|
1437 |
|
1438 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1439 |
msgctxt "s2member-front"
|
1440 |
msgid "Must be at least %s %s."
|
1441 |
msgstr ""
|
1442 |
|
1443 |
-
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:
|
1444 |
msgctxt "s2member-front"
|
1445 |
msgid "Processing"
|
1446 |
msgstr ""
|
@@ -3936,22 +3936,22 @@ msgstr ""
|
|
3936 |
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:73
|
3937 |
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:167
|
3938 |
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:253
|
3939 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3940 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3941 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3942 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:73
|
3943 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:167
|
3944 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:253
|
3945 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3946 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3947 |
msgctxt "s2member-front"
|
3948 |
msgid "Security Code missing. Please try again."
|
3949 |
msgstr ""
|
3950 |
|
3951 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3952 |
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:142
|
3953 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3954 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3955 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3956 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:142
|
3957 |
msgctxt "s2member-front"
|
@@ -3959,61 +3959,61 @@ msgid "Please choose a Billing Method."
|
|
3959 |
msgstr ""
|
3960 |
|
3961 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3962 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3963 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3964 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3965 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3966 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3967 |
msgctxt "s2member-front"
|
3968 |
msgid "Calculating Sales Tax..."
|
3969 |
msgstr ""
|
3970 |
|
3971 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3972 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3973 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3974 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3975 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3976 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3977 |
msgctxt "s2member-front"
|
3978 |
msgid "calculating sales tax..."
|
3979 |
msgstr ""
|
3980 |
|
3981 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3982 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3983 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3984 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3985 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3986 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3987 |
msgctxt "s2member-front"
|
3988 |
msgid "<strong>Sales Tax%s:</strong> %s<br /><strong>— Total%s:</strong> %s"
|
3989 |
msgstr ""
|
3990 |
|
3991 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3992 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3993 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
3994 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3995 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3996 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
3997 |
msgctxt "s2member-front"
|
3998 |
msgid "Today"
|
3999 |
msgstr ""
|
4000 |
|
4001 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
4002 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
4003 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
4004 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
4005 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
4006 |
-
#: s2member-pro/includes/templates/forms/authnet-registration-form.php:
|
4007 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
4008 |
-
#: s2member-pro/includes/templates/forms/paypal-registration-form.php:
|
4009 |
msgctxt "s2member-front"
|
4010 |
msgid "Create Profile"
|
4011 |
msgstr ""
|
4012 |
|
4013 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
4014 |
-
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:
|
4015 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
4016 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
4017 |
msgctxt "s2member-front"
|
4018 |
msgid "Your Profile"
|
4019 |
msgstr ""
|
@@ -4021,18 +4021,18 @@ msgstr ""
|
|
4021 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
4022 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:269
|
4023 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:270
|
4024 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
4025 |
-
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:
|
4026 |
-
#: s2member-pro/includes/templates/forms/authnet-cancellation-form.php:
|
4027 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
4028 |
-
#: s2member-pro/includes/templates/forms/authnet-registration-form.php:
|
4029 |
-
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:
|
4030 |
-
#: s2member-pro/includes/templates/forms/authnet-update-form.php:
|
4031 |
-
#: s2member-pro/includes/templates/forms/paypal-cancellation-form.php:
|
4032 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
4033 |
-
#: s2member-pro/includes/templates/forms/paypal-registration-form.php:
|
4034 |
-
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:
|
4035 |
-
#: s2member-pro/includes/templates/forms/paypal-update-form.php:
|
4036 |
msgctxt "s2member-front"
|
4037 |
msgid "Submit Form"
|
4038 |
msgstr ""
|
@@ -4074,206 +4074,206 @@ msgid ""
|
|
4074 |
"%s"
|
4075 |
msgstr ""
|
4076 |
|
4077 |
-
#: s2member-pro/includes/templates/forms/authnet-cancellation-form.php:
|
4078 |
-
#: s2member-pro/includes/templates/forms/paypal-cancellation-form.php:
|
4079 |
msgctxt "s2member-front"
|
4080 |
msgid "Confirm Cancellation"
|
4081 |
msgstr ""
|
4082 |
|
4083 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
4084 |
-
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:
|
4085 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
4086 |
-
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:
|
4087 |
msgctxt "s2member-front"
|
4088 |
msgid "Checkout Options"
|
4089 |
msgstr ""
|
4090 |
|
4091 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
4092 |
-
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:
|
4093 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
4094 |
-
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:
|
4095 |
msgctxt "s2member-front"
|
4096 |
msgid "Coupon Code"
|
4097 |
msgstr ""
|
4098 |
|
4099 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
4100 |
-
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:
|
4101 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
4102 |
-
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:
|
4103 |
msgctxt "s2member-front"
|
4104 |
msgid "Have a Coupon Code? (please enter it here)"
|
4105 |
msgstr ""
|
4106 |
|
4107 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
4108 |
-
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:
|
4109 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
4110 |
-
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:
|
4111 |
msgctxt "s2member-front"
|
4112 |
msgid "Apply Coupon"
|
4113 |
msgstr ""
|
4114 |
|
4115 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
4116 |
-
#: s2member-pro/includes/templates/forms/authnet-registration-form.php:
|
4117 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
4118 |
-
#: s2member-pro/includes/templates/forms/paypal-registration-form.php:
|
4119 |
msgctxt "s2member-front"
|
4120 |
msgid "Username (lowercase letters and/or numbers)"
|
4121 |
msgstr ""
|
4122 |
|
4123 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
4124 |
-
#: s2member-pro/includes/templates/forms/authnet-registration-form.php:
|
4125 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
4126 |
-
#: s2member-pro/includes/templates/forms/paypal-registration-form.php:
|
4127 |
msgctxt "s2member-front"
|
4128 |
msgid "Password (type this twice please)"
|
4129 |
msgstr ""
|
4130 |
|
4131 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
4132 |
-
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:
|
4133 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
4134 |
-
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:
|
4135 |
msgctxt "s2member-front"
|
4136 |
msgid "Billing Method"
|
4137 |
msgstr ""
|
4138 |
|
4139 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
4140 |
-
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:
|
4141 |
-
#: s2member-pro/includes/templates/forms/authnet-update-form.php:
|
4142 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
4143 |
-
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:
|
4144 |
-
#: s2member-pro/includes/templates/forms/paypal-update-form.php:
|
4145 |
msgctxt "s2member-front"
|
4146 |
msgid "Card Number (no dashes or spaces)"
|
4147 |
msgstr ""
|
4148 |
|
4149 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
4150 |
-
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:
|
4151 |
-
#: s2member-pro/includes/templates/forms/authnet-update-form.php:
|
4152 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
4153 |
-
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:
|
4154 |
-
#: s2member-pro/includes/templates/forms/paypal-update-form.php:
|
4155 |
msgctxt "s2member-front"
|
4156 |
msgid "Card Expiration Date (mm/yyyy)"
|
4157 |
msgstr ""
|
4158 |
|
4159 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
4160 |
-
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:
|
4161 |
-
#: s2member-pro/includes/templates/forms/authnet-update-form.php:
|
4162 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
4163 |
-
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:
|
4164 |
-
#: s2member-pro/includes/templates/forms/paypal-update-form.php:
|
4165 |
msgctxt "s2member-front"
|
4166 |
msgid "Card Verification Code (3-4 digits)"
|
4167 |
msgstr ""
|
4168 |
|
4169 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
4170 |
-
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:
|
4171 |
-
#: s2member-pro/includes/templates/forms/authnet-update-form.php:
|
4172 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
4173 |
-
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:
|
4174 |
-
#: s2member-pro/includes/templates/forms/paypal-update-form.php:
|
4175 |
msgctxt "s2member-front"
|
4176 |
msgid "need help?"
|
4177 |
msgstr ""
|
4178 |
|
4179 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
4180 |
-
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:
|
4181 |
-
#: s2member-pro/includes/templates/forms/authnet-update-form.php:
|
4182 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
4183 |
-
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:
|
4184 |
-
#: s2member-pro/includes/templates/forms/paypal-update-form.php:
|
4185 |
msgctxt "s2member-front"
|
4186 |
msgid "Card Start Date (mm/yyyy), or Issue Number"
|
4187 |
msgstr ""
|
4188 |
|
4189 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
4190 |
-
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:
|
4191 |
-
#: s2member-pro/includes/templates/forms/authnet-update-form.php:
|
4192 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
4193 |
-
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:
|
4194 |
-
#: s2member-pro/includes/templates/forms/paypal-update-form.php:
|
4195 |
msgctxt "s2member-front"
|
4196 |
msgid "Billing Address"
|
4197 |
msgstr ""
|
4198 |
|
4199 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
4200 |
-
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:
|
4201 |
-
#: s2member-pro/includes/templates/forms/authnet-update-form.php:
|
4202 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
4203 |
-
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:
|
4204 |
-
#: s2member-pro/includes/templates/forms/paypal-update-form.php:
|
4205 |
msgctxt "s2member-front"
|
4206 |
msgid "Street Address"
|
4207 |
msgstr ""
|
4208 |
|
4209 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
4210 |
-
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:
|
4211 |
-
#: s2member-pro/includes/templates/forms/authnet-update-form.php:
|
4212 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
4213 |
-
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:
|
4214 |
-
#: s2member-pro/includes/templates/forms/paypal-update-form.php:
|
4215 |
msgctxt "s2member-front"
|
4216 |
msgid "City / Town"
|
4217 |
msgstr ""
|
4218 |
|
4219 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
4220 |
-
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:
|
4221 |
-
#: s2member-pro/includes/templates/forms/authnet-update-form.php:
|
4222 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
4223 |
-
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:
|
4224 |
-
#: s2member-pro/includes/templates/forms/paypal-update-form.php:
|
4225 |
msgctxt "s2member-front"
|
4226 |
msgid "State / Province"
|
4227 |
msgstr ""
|
4228 |
|
4229 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
4230 |
-
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:
|
4231 |
-
#: s2member-pro/includes/templates/forms/authnet-update-form.php:
|
4232 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
4233 |
-
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:
|
4234 |
-
#: s2member-pro/includes/templates/forms/paypal-update-form.php:
|
4235 |
msgctxt "s2member-front"
|
4236 |
msgid "Country"
|
4237 |
msgstr ""
|
4238 |
|
4239 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
4240 |
-
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:
|
4241 |
-
#: s2member-pro/includes/templates/forms/authnet-update-form.php:
|
4242 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
4243 |
-
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:
|
4244 |
-
#: s2member-pro/includes/templates/forms/paypal-update-form.php:
|
4245 |
msgctxt "s2member-front"
|
4246 |
msgid "Postal / Zip Code"
|
4247 |
msgstr ""
|
4248 |
|
4249 |
-
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:
|
4250 |
-
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:
|
4251 |
-
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:
|
4252 |
-
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:
|
4253 |
msgctxt "s2member-front"
|
4254 |
msgid "Checkout Now"
|
4255 |
msgstr ""
|
4256 |
|
4257 |
-
#: s2member-pro/includes/templates/forms/authnet-registration-form.php:
|
4258 |
-
#: s2member-pro/includes/templates/forms/paypal-registration-form.php:
|
4259 |
msgctxt "s2member-front"
|
4260 |
msgid "Complete Registration"
|
4261 |
msgstr ""
|
4262 |
|
4263 |
-
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:
|
4264 |
-
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:
|
4265 |
msgctxt "s2member-front"
|
4266 |
msgid "Contact Info"
|
4267 |
msgstr ""
|
4268 |
|
4269 |
-
#: s2member-pro/includes/templates/forms/authnet-update-form.php:
|
4270 |
-
#: s2member-pro/includes/templates/forms/paypal-update-form.php:
|
4271 |
msgctxt "s2member-front"
|
4272 |
msgid "New Billing Method"
|
4273 |
msgstr ""
|
4274 |
|
4275 |
-
#: s2member-pro/includes/templates/forms/authnet-update-form.php:
|
4276 |
-
#: s2member-pro/includes/templates/forms/paypal-update-form.php:
|
4277 |
msgctxt "s2member-front"
|
4278 |
msgid "Update Billing Information"
|
4279 |
msgstr ""
|
4 |
msgstr ""
|
5 |
"Project-Id-Version: s2Member® Framework 130816\n"
|
6 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/s2member\n"
|
7 |
+
"POT-Creation-Date: 2013-11-09 09:23:22+00:00\n"
|
8 |
"MIME-Version: 1.0\n"
|
9 |
"Content-Type: text/plain; charset=UTF-8\n"
|
10 |
"Content-Transfer-Encoding: 8bit\n"
|
21 |
#: s2member/includes/classes/custom-reg-fields.inc.php:464
|
22 |
#: s2member/includes/classes/profile-in.inc.php:120
|
23 |
#: s2member/includes/classes/sc-profile-in.inc.php:136
|
24 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:66
|
25 |
+
#: s2member-pro/includes/templates/forms/authnet-registration-form.php:34
|
26 |
+
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:66
|
27 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:66
|
28 |
+
#: s2member-pro/includes/templates/forms/paypal-registration-form.php:34
|
29 |
+
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:66
|
30 |
msgctxt "s2member-front"
|
31 |
msgid "First Name"
|
32 |
msgstr ""
|
35 |
#: s2member/includes/classes/custom-reg-fields.inc.php:479
|
36 |
#: s2member/includes/classes/profile-in.inc.php:140
|
37 |
#: s2member/includes/classes/sc-profile-in.inc.php:156
|
38 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:72
|
39 |
+
#: s2member-pro/includes/templates/forms/authnet-registration-form.php:40
|
40 |
+
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:72
|
41 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:72
|
42 |
+
#: s2member-pro/includes/templates/forms/paypal-registration-form.php:40
|
43 |
+
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:72
|
44 |
msgctxt "s2member-front"
|
45 |
msgid "Last Name"
|
46 |
msgstr ""
|
63 |
#: s2member/includes/classes/custom-reg-fields.inc.php:446
|
64 |
#: s2member/includes/classes/profile-in.inc.php:243
|
65 |
#: s2member/includes/classes/sc-profile-in.inc.php:259
|
66 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:94
|
67 |
+
#: s2member-pro/includes/templates/forms/authnet-registration-form.php:62
|
68 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:94
|
69 |
+
#: s2member-pro/includes/templates/forms/paypal-registration-form.php:62
|
70 |
msgctxt "s2member-front"
|
71 |
msgid "password strength indicator"
|
72 |
msgstr ""
|
728 |
|
729 |
#: s2member/includes/classes/profile-in.inc.php:98
|
730 |
#: s2member/includes/classes/sc-profile-in.inc.php:114
|
731 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:78
|
732 |
+
#: s2member-pro/includes/templates/forms/authnet-registration-form.php:46
|
733 |
+
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:78
|
734 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:78
|
735 |
+
#: s2member-pro/includes/templates/forms/paypal-registration-form.php:46
|
736 |
+
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:78
|
737 |
msgctxt "s2member-front"
|
738 |
msgid "Email Address"
|
739 |
msgstr ""
|
818 |
#: s2member/includes/templates/buttons/paypal-sp-checkout-button.php:34
|
819 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
820 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:270
|
821 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:562
|
822 |
msgctxt "s2member-front paypal-button-lang-code"
|
823 |
msgid "en_US"
|
824 |
msgstr ""
|
891 |
msgid "(for this site)"
|
892 |
msgstr ""
|
893 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
894 |
#: s2member/includes/classes/utils-time.inc.php:53
|
895 |
msgctxt "s2member-front"
|
896 |
msgid "less than a minute"
|
1195 |
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:239
|
1196 |
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:246
|
1197 |
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:253
|
1198 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:497
|
1199 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:504
|
1200 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:769
|
1201 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:776
|
1202 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:783
|
1203 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:790
|
1204 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
1205 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:66
|
1206 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:73
|
1210 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:239
|
1211 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:246
|
1212 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:253
|
1213 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:537
|
1214 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:544
|
1215 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:857
|
1216 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:864
|
1217 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:871
|
1218 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:878
|
1219 |
msgctxt "s2member-front"
|
1220 |
msgid "— Oops, you missed something: —"
|
1221 |
msgstr ""
|
1224 |
#: s2member/includes/s2member.js:192
|
1225 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
1226 |
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:239
|
1227 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:776
|
1228 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
1229 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:239
|
1230 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:864
|
1231 |
msgctxt "s2member-front"
|
1232 |
msgid "Passwords do not match up. Please try again."
|
1233 |
msgstr ""
|
1236 |
#: s2member/includes/s2member.js:199
|
1237 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
1238 |
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:246
|
1239 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:783
|
1240 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
1241 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:246
|
1242 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:871
|
1243 |
msgctxt "s2member-front"
|
1244 |
msgid "Password MUST be at least 6 characters. Please try again."
|
1245 |
msgstr ""
|
1246 |
|
1247 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:330
|
1248 |
+
msgctxt "s2member-front"
|
1249 |
+
msgid "Strength indicator"
|
1250 |
+
msgstr ""
|
1251 |
+
|
1252 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:331
|
1253 |
+
msgctxt "s2member-front"
|
1254 |
+
msgid "Very weak"
|
1255 |
+
msgstr ""
|
1256 |
+
|
1257 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:332
|
1258 |
+
msgctxt "s2member-front"
|
1259 |
+
msgid "Weak"
|
1260 |
+
msgstr ""
|
1261 |
+
|
1262 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:333
|
1263 |
+
msgctxt "s2member-front"
|
1264 |
+
msgid "Medium"
|
1265 |
+
msgstr ""
|
1266 |
+
|
1267 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:334
|
1268 |
+
msgctxt "s2member-front"
|
1269 |
+
msgid "Strong"
|
1270 |
+
msgstr ""
|
1271 |
+
|
1272 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:335
|
1273 |
+
msgctxt "s2member-front"
|
1274 |
+
msgid "Mismatch"
|
1275 |
+
msgstr ""
|
1276 |
+
|
1277 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:364
|
1278 |
msgctxt "s2member-front"
|
1279 |
msgid "Please check at least one of the boxes."
|
1280 |
msgstr ""
|
1281 |
|
1282 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:369
|
1283 |
msgctxt "s2member-front"
|
1284 |
msgid "Required. This box must be checked."
|
1285 |
msgstr ""
|
1286 |
|
1287 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:375
|
1288 |
msgctxt "s2member-front"
|
1289 |
msgid "Please select one of the options."
|
1290 |
msgstr ""
|
1291 |
|
1292 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:380
|
1293 |
msgctxt "s2member-front"
|
1294 |
msgid "Please select at least one of the options."
|
1295 |
msgstr ""
|
1296 |
|
1297 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:384
|
1298 |
msgctxt "s2member-front"
|
1299 |
msgid "This is a required field, please try again."
|
1300 |
msgstr ""
|
1301 |
|
1302 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:390
|
1303 |
msgctxt "s2member-front"
|
1304 |
msgid "Must be numeric (with or without decimals, commas allowed)."
|
1305 |
msgstr ""
|
1306 |
|
1307 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:394
|
1308 |
msgctxt "s2member-front"
|
1309 |
msgid "Must be numeric (with or without decimals, no commas)."
|
1310 |
msgstr ""
|
1311 |
|
1312 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:398
|
1313 |
msgctxt "s2member-front"
|
1314 |
msgid "Must be an integer (a whole number, without any decimals)."
|
1315 |
msgstr ""
|
1316 |
|
1317 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:402
|
1318 |
msgctxt "s2member-front"
|
1319 |
msgid "Must be an integer > 0 (whole number, no decimals, greater than 0)."
|
1320 |
msgstr ""
|
1321 |
|
1322 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:406
|
1323 |
msgctxt "s2member-front"
|
1324 |
msgid "Must be a float (floating point number, decimals required)."
|
1325 |
msgstr ""
|
1326 |
|
1327 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:410
|
1328 |
msgctxt "s2member-front"
|
1329 |
msgid "Must be a float > 0 (floating point number, decimals required, greater than 0)."
|
1330 |
msgstr ""
|
1331 |
|
1332 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:414
|
1333 |
msgctxt "s2member-front"
|
1334 |
msgid "Must be a date (required date format: dd/mm/yyyy)."
|
1335 |
msgstr ""
|
1336 |
|
1337 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:418
|
1338 |
msgctxt "s2member-front"
|
1339 |
msgid "Must be a valid email address."
|
1340 |
msgstr ""
|
1341 |
|
1342 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:422
|
1343 |
msgctxt "s2member-front"
|
1344 |
msgid ""
|
1345 |
"Please use a personal email address.\n"
|
1346 |
"Addresses like <%s@> are problematic."
|
1347 |
msgstr ""
|
1348 |
|
1349 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:426
|
1350 |
msgctxt "s2member-front"
|
1351 |
msgid "Must be a full URL (starting with http or https)."
|
1352 |
msgstr ""
|
1353 |
|
1354 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:430
|
1355 |
msgctxt "s2member-front"
|
1356 |
msgid "Must be a domain name (domain name only, without http)."
|
1357 |
msgstr ""
|
1358 |
|
1359 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:434
|
1360 |
msgctxt "s2member-front"
|
1361 |
msgid "Must be a phone # (10 digits w/possible hyphens,spaces,brackets)."
|
1362 |
msgstr ""
|
1363 |
|
1364 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:438
|
1365 |
msgctxt "s2member-front"
|
1366 |
msgid "Must be a US zipcode (5-9 digits w/possible hyphen)."
|
1367 |
msgstr ""
|
1368 |
|
1369 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:442
|
1370 |
msgctxt "s2member-front"
|
1371 |
msgid "Must be a Canadian zipcode (6 alpha-numerics w/possible space)."
|
1372 |
msgstr ""
|
1373 |
|
1374 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:446
|
1375 |
msgctxt "s2member-front"
|
1376 |
msgid "Must be a zipcode (either a US or Canadian zipcode)."
|
1377 |
msgstr ""
|
1378 |
|
1379 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:450
|
1380 |
msgctxt "s2member-front"
|
1381 |
msgid "Please use alphanumerics, spaces & punctuation only."
|
1382 |
msgstr ""
|
1383 |
|
1384 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:454
|
1385 |
msgctxt "s2member-front"
|
1386 |
msgid "Please use alphanumerics & spaces only."
|
1387 |
msgstr ""
|
1388 |
|
1389 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:458
|
1390 |
msgctxt "s2member-front"
|
1391 |
msgid "Please use alphanumerics & punctuation only (no spaces)."
|
1392 |
msgstr ""
|
1393 |
|
1394 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:462
|
1395 |
msgctxt "s2member-front"
|
1396 |
msgid "Please use alphanumerics only (no spaces/punctuation)."
|
1397 |
msgstr ""
|
1398 |
|
1399 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:466
|
1400 |
msgctxt "s2member-front"
|
1401 |
msgid "Please use alphabetics only (no digits/spaces/punctuation)."
|
1402 |
msgstr ""
|
1403 |
|
1404 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:470
|
1405 |
msgctxt "s2member-front"
|
1406 |
msgid "Please use numeric digits only."
|
1407 |
msgstr ""
|
1408 |
|
1409 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:477
|
1410 |
msgctxt "s2member-front"
|
1411 |
msgid "Must be exactly %s %s."
|
1412 |
msgstr ""
|
1413 |
|
1414 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:477
|
1415 |
+
#: s2member/includes/s2member.js:480
|
1416 |
msgctxt "s2member-front"
|
1417 |
msgid "digit"
|
1418 |
msgstr ""
|
1419 |
|
1420 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:477
|
1421 |
+
#: s2member/includes/s2member.js:480
|
1422 |
msgctxt "s2member-front"
|
1423 |
msgid "digits"
|
1424 |
msgstr ""
|
1425 |
|
1426 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:477
|
1427 |
+
#: s2member/includes/s2member.js:480
|
1428 |
msgctxt "s2member-front"
|
1429 |
msgid "character"
|
1430 |
msgstr ""
|
1431 |
|
1432 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:477
|
1433 |
+
#: s2member/includes/s2member.js:480
|
1434 |
msgctxt "s2member-front"
|
1435 |
msgid "characters"
|
1436 |
msgstr ""
|
1437 |
|
1438 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:480
|
1439 |
msgctxt "s2member-front"
|
1440 |
msgid "Must be at least %s %s."
|
1441 |
msgstr ""
|
1442 |
|
1443 |
+
#: s2member/includes/s2member-min.js:1 s2member/includes/s2member.js:533
|
1444 |
msgctxt "s2member-front"
|
1445 |
msgid "Processing"
|
1446 |
msgstr ""
|
3936 |
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:73
|
3937 |
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:167
|
3938 |
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:253
|
3939 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:504
|
3940 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:790
|
3941 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3942 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:73
|
3943 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:167
|
3944 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:253
|
3945 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:544
|
3946 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:878
|
3947 |
msgctxt "s2member-front"
|
3948 |
msgid "Security Code missing. Please try again."
|
3949 |
msgstr ""
|
3950 |
|
3951 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3952 |
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:142
|
3953 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:479
|
3954 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:751
|
3955 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3956 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:142
|
3957 |
msgctxt "s2member-front"
|
3959 |
msgstr ""
|
3960 |
|
3961 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3962 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:323
|
3963 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:575
|
3964 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3965 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:327
|
3966 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:619
|
3967 |
msgctxt "s2member-front"
|
3968 |
msgid "Calculating Sales Tax..."
|
3969 |
msgstr ""
|
3970 |
|
3971 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3972 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:323
|
3973 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:575
|
3974 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3975 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:327
|
3976 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:619
|
3977 |
msgctxt "s2member-front"
|
3978 |
msgid "calculating sales tax..."
|
3979 |
msgstr ""
|
3980 |
|
3981 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3982 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:334
|
3983 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:586
|
3984 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3985 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:338
|
3986 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:630
|
3987 |
msgctxt "s2member-front"
|
3988 |
msgid "<strong>Sales Tax%s:</strong> %s<br /><strong>— Total%s:</strong> %s"
|
3989 |
msgstr ""
|
3990 |
|
3991 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
3992 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:334
|
3993 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:586
|
3994 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
3995 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:338
|
3996 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:630
|
3997 |
msgctxt "s2member-front"
|
3998 |
msgid "Today"
|
3999 |
msgstr ""
|
4000 |
|
4001 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
4002 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:648
|
4003 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
4004 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:692
|
4005 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:62
|
4006 |
+
#: s2member-pro/includes/templates/forms/authnet-registration-form.php:30
|
4007 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:62
|
4008 |
+
#: s2member-pro/includes/templates/forms/paypal-registration-form.php:30
|
4009 |
msgctxt "s2member-front"
|
4010 |
msgid "Create Profile"
|
4011 |
msgstr ""
|
4012 |
|
4013 |
#: s2member-pro/includes/separates/gateways/authnet/authnet-min.js:1
|
4014 |
+
#: s2member-pro/includes/separates/gateways/authnet/authnet.js:649
|
4015 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
4016 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:693
|
4017 |
msgctxt "s2member-front"
|
4018 |
msgid "Your Profile"
|
4019 |
msgstr ""
|
4021 |
#: s2member-pro/includes/separates/gateways/paypal/paypal-min.js:1
|
4022 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:269
|
4023 |
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:270
|
4024 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:561
|
4025 |
+
#: s2member-pro/includes/separates/gateways/paypal/paypal.js:562
|
4026 |
+
#: s2member-pro/includes/templates/forms/authnet-cancellation-form.php:36
|
4027 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:198
|
4028 |
+
#: s2member-pro/includes/templates/forms/authnet-registration-form.php:81
|
4029 |
+
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:179
|
4030 |
+
#: s2member-pro/includes/templates/forms/authnet-update-form.php:117
|
4031 |
+
#: s2member-pro/includes/templates/forms/paypal-cancellation-form.php:36
|
4032 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:198
|
4033 |
+
#: s2member-pro/includes/templates/forms/paypal-registration-form.php:81
|
4034 |
+
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:179
|
4035 |
+
#: s2member-pro/includes/templates/forms/paypal-update-form.php:117
|
4036 |
msgctxt "s2member-front"
|
4037 |
msgid "Submit Form"
|
4038 |
msgstr ""
|
4074 |
"%s"
|
4075 |
msgstr ""
|
4076 |
|
4077 |
+
#: s2member-pro/includes/templates/forms/authnet-cancellation-form.php:32
|
4078 |
+
#: s2member-pro/includes/templates/forms/paypal-cancellation-form.php:32
|
4079 |
msgctxt "s2member-front"
|
4080 |
msgid "Confirm Cancellation"
|
4081 |
msgstr ""
|
4082 |
|
4083 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:21
|
4084 |
+
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:21
|
4085 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:21
|
4086 |
+
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:21
|
4087 |
msgctxt "s2member-front"
|
4088 |
msgid "Checkout Options"
|
4089 |
msgstr ""
|
4090 |
|
4091 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:42
|
4092 |
+
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:42
|
4093 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:42
|
4094 |
+
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:42
|
4095 |
msgctxt "s2member-front"
|
4096 |
msgid "Coupon Code"
|
4097 |
msgstr ""
|
4098 |
|
4099 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:49
|
4100 |
+
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:49
|
4101 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:49
|
4102 |
+
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:49
|
4103 |
msgctxt "s2member-front"
|
4104 |
msgid "Have a Coupon Code? (please enter it here)"
|
4105 |
msgstr ""
|
4106 |
|
4107 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:52
|
4108 |
+
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:52
|
4109 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:52
|
4110 |
+
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:52
|
4111 |
msgctxt "s2member-front"
|
4112 |
msgid "Apply Coupon"
|
4113 |
msgstr ""
|
4114 |
|
4115 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:84
|
4116 |
+
#: s2member-pro/includes/templates/forms/authnet-registration-form.php:52
|
4117 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:84
|
4118 |
+
#: s2member-pro/includes/templates/forms/paypal-registration-form.php:52
|
4119 |
msgctxt "s2member-front"
|
4120 |
msgid "Username (lowercase letters and/or numbers)"
|
4121 |
msgstr ""
|
4122 |
|
4123 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:90
|
4124 |
+
#: s2member-pro/includes/templates/forms/authnet-registration-form.php:58
|
4125 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:90
|
4126 |
+
#: s2member-pro/includes/templates/forms/paypal-registration-form.php:58
|
4127 |
msgctxt "s2member-front"
|
4128 |
msgid "Password (type this twice please)"
|
4129 |
msgstr ""
|
4130 |
|
4131 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:106
|
4132 |
+
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:88
|
4133 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:106
|
4134 |
+
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:88
|
4135 |
msgctxt "s2member-front"
|
4136 |
msgid "Billing Method"
|
4137 |
msgstr ""
|
4138 |
|
4139 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:113
|
4140 |
+
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:95
|
4141 |
+
#: s2member-pro/includes/templates/forms/authnet-update-form.php:36
|
4142 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:113
|
4143 |
+
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:95
|
4144 |
+
#: s2member-pro/includes/templates/forms/paypal-update-form.php:36
|
4145 |
msgctxt "s2member-front"
|
4146 |
msgid "Card Number (no dashes or spaces)"
|
4147 |
msgstr ""
|
4148 |
|
4149 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:119
|
4150 |
+
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:101
|
4151 |
+
#: s2member-pro/includes/templates/forms/authnet-update-form.php:42
|
4152 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:119
|
4153 |
+
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:101
|
4154 |
+
#: s2member-pro/includes/templates/forms/paypal-update-form.php:42
|
4155 |
msgctxt "s2member-front"
|
4156 |
msgid "Card Expiration Date (mm/yyyy)"
|
4157 |
msgstr ""
|
4158 |
|
4159 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:130
|
4160 |
+
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:112
|
4161 |
+
#: s2member-pro/includes/templates/forms/authnet-update-form.php:53
|
4162 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:130
|
4163 |
+
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:112
|
4164 |
+
#: s2member-pro/includes/templates/forms/paypal-update-form.php:53
|
4165 |
msgctxt "s2member-front"
|
4166 |
msgid "Card Verification Code (3-4 digits)"
|
4167 |
msgstr ""
|
4168 |
|
4169 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:130
|
4170 |
+
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:112
|
4171 |
+
#: s2member-pro/includes/templates/forms/authnet-update-form.php:53
|
4172 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:130
|
4173 |
+
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:112
|
4174 |
+
#: s2member-pro/includes/templates/forms/paypal-update-form.php:53
|
4175 |
msgctxt "s2member-front"
|
4176 |
msgid "need help?"
|
4177 |
msgstr ""
|
4178 |
|
4179 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:137
|
4180 |
+
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:119
|
4181 |
+
#: s2member-pro/includes/templates/forms/authnet-update-form.php:60
|
4182 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:137
|
4183 |
+
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:119
|
4184 |
+
#: s2member-pro/includes/templates/forms/paypal-update-form.php:60
|
4185 |
msgctxt "s2member-front"
|
4186 |
msgid "Card Start Date (mm/yyyy), or Issue Number"
|
4187 |
msgstr ""
|
4188 |
|
4189 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:147
|
4190 |
+
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:129
|
4191 |
+
#: s2member-pro/includes/templates/forms/authnet-update-form.php:70
|
4192 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:147
|
4193 |
+
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:129
|
4194 |
+
#: s2member-pro/includes/templates/forms/paypal-update-form.php:70
|
4195 |
msgctxt "s2member-front"
|
4196 |
msgid "Billing Address"
|
4197 |
msgstr ""
|
4198 |
|
4199 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:151
|
4200 |
+
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:133
|
4201 |
+
#: s2member-pro/includes/templates/forms/authnet-update-form.php:74
|
4202 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:151
|
4203 |
+
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:133
|
4204 |
+
#: s2member-pro/includes/templates/forms/paypal-update-form.php:74
|
4205 |
msgctxt "s2member-front"
|
4206 |
msgid "Street Address"
|
4207 |
msgstr ""
|
4208 |
|
4209 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:157
|
4210 |
+
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:139
|
4211 |
+
#: s2member-pro/includes/templates/forms/authnet-update-form.php:80
|
4212 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:157
|
4213 |
+
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:139
|
4214 |
+
#: s2member-pro/includes/templates/forms/paypal-update-form.php:80
|
4215 |
msgctxt "s2member-front"
|
4216 |
msgid "City / Town"
|
4217 |
msgstr ""
|
4218 |
|
4219 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:163
|
4220 |
+
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:145
|
4221 |
+
#: s2member-pro/includes/templates/forms/authnet-update-form.php:86
|
4222 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:163
|
4223 |
+
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:145
|
4224 |
+
#: s2member-pro/includes/templates/forms/paypal-update-form.php:86
|
4225 |
msgctxt "s2member-front"
|
4226 |
msgid "State / Province"
|
4227 |
msgstr ""
|
4228 |
|
4229 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:169
|
4230 |
+
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:151
|
4231 |
+
#: s2member-pro/includes/templates/forms/authnet-update-form.php:92
|
4232 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:169
|
4233 |
+
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:151
|
4234 |
+
#: s2member-pro/includes/templates/forms/paypal-update-form.php:92
|
4235 |
msgctxt "s2member-front"
|
4236 |
msgid "Country"
|
4237 |
msgstr ""
|
4238 |
|
4239 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:177
|
4240 |
+
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:159
|
4241 |
+
#: s2member-pro/includes/templates/forms/authnet-update-form.php:100
|
4242 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:177
|
4243 |
+
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:159
|
4244 |
+
#: s2member-pro/includes/templates/forms/paypal-update-form.php:100
|
4245 |
msgctxt "s2member-front"
|
4246 |
msgid "Postal / Zip Code"
|
4247 |
msgstr ""
|
4248 |
|
4249 |
+
#: s2member-pro/includes/templates/forms/authnet-checkout-form.php:193
|
4250 |
+
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:175
|
4251 |
+
#: s2member-pro/includes/templates/forms/paypal-checkout-form.php:193
|
4252 |
+
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:175
|
4253 |
msgctxt "s2member-front"
|
4254 |
msgid "Checkout Now"
|
4255 |
msgstr ""
|
4256 |
|
4257 |
+
#: s2member-pro/includes/templates/forms/authnet-registration-form.php:76
|
4258 |
+
#: s2member-pro/includes/templates/forms/paypal-registration-form.php:76
|
4259 |
msgctxt "s2member-front"
|
4260 |
msgid "Complete Registration"
|
4261 |
msgstr ""
|
4262 |
|
4263 |
+
#: s2member-pro/includes/templates/forms/authnet-sp-checkout-form.php:62
|
4264 |
+
#: s2member-pro/includes/templates/forms/paypal-sp-checkout-form.php:62
|
4265 |
msgctxt "s2member-front"
|
4266 |
msgid "Contact Info"
|
4267 |
msgstr ""
|
4268 |
|
4269 |
+
#: s2member-pro/includes/templates/forms/authnet-update-form.php:29
|
4270 |
+
#: s2member-pro/includes/templates/forms/paypal-update-form.php:29
|
4271 |
msgctxt "s2member-front"
|
4272 |
msgid "New Billing Method"
|
4273 |
msgstr ""
|
4274 |
|
4275 |
+
#: s2member-pro/includes/templates/forms/authnet-update-form.php:113
|
4276 |
+
#: s2member-pro/includes/templates/forms/paypal-update-form.php:113
|
4277 |
msgctxt "s2member-front"
|
4278 |
msgid "Update Billing Information"
|
4279 |
msgstr ""
|
readme.txt
CHANGED
@@ -1,7 +1,7 @@
|
|
1 |
-
=== s2Member
|
2 |
|
3 |
-
Version:
|
4 |
-
Stable tag:
|
5 |
|
6 |
SSL Compatible: yes
|
7 |
bbPress® Compatible: yes
|
@@ -16,7 +16,7 @@ Authorize.Net® Compatible: yes w/s2Member® Pro
|
|
16 |
Google® Checkout Compatible: yes w/s2Member® Pro
|
17 |
ClickBank® Compatible: yes w/s2Member® Pro
|
18 |
|
19 |
-
Tested up to: 3.7
|
20 |
Requires at least: 3.3
|
21 |
|
22 |
Copyright: © 2009 WebSharks, Inc.
|
@@ -36,6 +36,7 @@ Plugin URI: http://www.s2member.com/framework/
|
|
36 |
Privacy URI: http://www.s2member.com/privacy/
|
37 |
Video Tutorials: http://www.s2member.com/videos/
|
38 |
Knowledge Base: http://www.s2member.com/kb/
|
|
|
39 |
Pro Module / Home Page: http://www.s2member.com/
|
40 |
Pro Module / Prices: http://www.s2member.com/prices/
|
41 |
Pro Module / Auto-Update URL: https://www.s2member.com/
|
@@ -72,6 +73,16 @@ s2Member allows you to protect Pages, Posts, Tags, Categories, URIs, URI word fr
|
|
72 |
|
73 |
You can learn more about s2Member® at [s2Member.com](http://www.s2member.com/).
|
74 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
75 |
== Frequently Asked Questions ==
|
76 |
|
77 |
= Please check the following s2Member® resources: =
|
@@ -86,11 +97,22 @@ Please see [this FAQ entry](http://www.s2member.com/faqs/#s2-faqs-translations)
|
|
86 |
|
87 |
== Upgrade Notice ==
|
88 |
|
89 |
-
=
|
90 |
(Maintenance Release) Upgrade immediately.
|
91 |
|
92 |
== Changelog ==
|
93 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
= v131026 =
|
95 |
* (s2Member) **WordPress v3.7 Compatibility** s2Member further updated to support subtle changes in the WordPress v3.7 `wp-login.php` file. This release corrects a minor issue w/ patches applied by s2Member when running in a Multisite Network environment. If you are running s2Member on a Multisite Network, please be sure to run the automatic patcher provided in your Dashboard against WordPress v3.7 after updating to this release of s2Member.
|
96 |
* (s2Member Pro) **PayPal Central IPN** Updating the example file: `s2m-pro-extras/paypal-central-ipn.php` to use one of the latest PayPal IP addresses listed [here](https://ppmts.custhelp.com/app/answers/detail/a_id/92).
|
@@ -397,4 +419,4 @@ Please see [this FAQ entry](http://www.s2member.com/faqs/#s2-faqs-translations)
|
|
397 |
|
398 |
= v120301 - 1.0 =
|
399 |
* ... trimmed away at v111220.
|
400 |
-
* Initial release: v1.0.
|
1 |
+
=== s2Member Framework (Member Roles, Capabilities, Membership, PayPal Members) ===
|
2 |
|
3 |
+
Version: 131109
|
4 |
+
Stable tag: 131109
|
5 |
|
6 |
SSL Compatible: yes
|
7 |
bbPress® Compatible: yes
|
16 |
Google® Checkout Compatible: yes w/s2Member® Pro
|
17 |
ClickBank® Compatible: yes w/s2Member® Pro
|
18 |
|
19 |
+
Tested up to: 3.7.1
|
20 |
Requires at least: 3.3
|
21 |
|
22 |
Copyright: © 2009 WebSharks, Inc.
|
36 |
Privacy URI: http://www.s2member.com/privacy/
|
37 |
Video Tutorials: http://www.s2member.com/videos/
|
38 |
Knowledge Base: http://www.s2member.com/kb/
|
39 |
+
Newsletter: http://www.s2member.com/r/subscribe/
|
40 |
Pro Module / Home Page: http://www.s2member.com/
|
41 |
Pro Module / Prices: http://www.s2member.com/prices/
|
42 |
Pro Module / Auto-Update URL: https://www.s2member.com/
|
73 |
|
74 |
You can learn more about s2Member® at [s2Member.com](http://www.s2member.com/).
|
75 |
|
76 |
+
== Screenshots ==
|
77 |
+
|
78 |
+
1. s2Member Screenshot #1
|
79 |
+
2. s2Member Screenshot #2
|
80 |
+
3. s2Member Screenshot #3
|
81 |
+
4. s2Member Screenshot #4
|
82 |
+
5. s2Member Screenshot #5
|
83 |
+
6. s2Member Screenshot #6
|
84 |
+
7. s2Member Screenshot #7
|
85 |
+
|
86 |
== Frequently Asked Questions ==
|
87 |
|
88 |
= Please check the following s2Member® resources: =
|
97 |
|
98 |
== Upgrade Notice ==
|
99 |
|
100 |
+
= v131109 =
|
101 |
(Maintenance Release) Upgrade immediately.
|
102 |
|
103 |
== Changelog ==
|
104 |
|
105 |
+
= v131109 =
|
106 |
+
* (s2Member/s2Member Pro) **UI Makeover** This release of s2Member upgrades all administrative UI panels.
|
107 |
+
* (s2Member/s2Member Pro) **Compatibility** Updating s2Member for compatibility with the coming release of both Quick Cache LITE and Quick Cache Pro for WordPress. These are not available publicly yet, but they are expected for release very soon. This release of s2Member is compatible with both the current and future releases of Quick Cache for WordPress.
|
108 |
+
* (s2Member/s2Member Pro) **Improvement (Speed)** Lazy load s2Member's JS file at all times. Done, this release will speed your site up for first-time visitors.
|
109 |
+
* (s2Member/s2Member Pro) **Improvement (Speed)** Lazy load s2Member's CSS file at all times. Done, this release will speed your site up for first-time visitors.
|
110 |
+
* (s2Member/s2Member Pro) **Improvement (Speed)** Load s2Member's JS library in the footer if at all possible (instead of the `<head>`). Done, this will improve the speed of your site for first-time visitors.
|
111 |
+
* (s2Member/s2Member Pro) **Debug Notices** Resolved all of the most obvious PHP notices when running s2Member in debug mode. This improvement impacts developers only.
|
112 |
+
* (s2Member/s2Member Pro) **Password Strength Meter** Removed dependence on `password-strength-meter` (a JavaScript library) from the WordPress core. This was causing some SSL issues for site owners. In the past it was necessary for s2Member to load an additional JS resource for registration/checkout and Pro Forms (`password-strength-meter`). Starting with this release, s2Member handles password strength meters all by itself, thereby avoiding the additional overhead; and also the issues associated with this core functionality over SSL pages. Fixed in this release.
|
113 |
+
* (s2Member/s2Member Pro) **Mobile Devices** The s2Stream shortcode (for protected audio/video files) was updated to better support mobile device playback. See also: <http://www.s2member.com/kb/jwplayer-s2stream-shortcodes/#s2stream-mobile-devices>.
|
114 |
+
* (s2Member Pro) **Checkout Options** Improving support for multiple Checkout Options. When a customer changes to a new Checkout Option by selecting an option from the drop-down menu in a Pro Form; this action will now result in a hash jump back to the location of the Pro Form on any given page; instead of to the top of the page, which could potentially result in a confusing experience on some sites (depending on the implementation). Aside: for developers, it's helpful to know that all s2Member Pro Forms now have a hashable ID `#s2p-form` that is cleaner than the longer (product-specific) IDs associated with Pro Forms; e.g. `s2member-pro-paypal-form...`, etc. If you need to hash a Pro Form, please use the more general `#s2p-form` on the end of a URL. This will take a customer directly to that Pro Form in the context of any given page.
|
115 |
+
|
116 |
= v131026 =
|
117 |
* (s2Member) **WordPress v3.7 Compatibility** s2Member further updated to support subtle changes in the WordPress v3.7 `wp-login.php` file. This release corrects a minor issue w/ patches applied by s2Member when running in a Multisite Network environment. If you are running s2Member on a Multisite Network, please be sure to run the automatic patcher provided in your Dashboard against WordPress v3.7 after updating to this release of s2Member.
|
118 |
* (s2Member Pro) **PayPal Central IPN** Updating the example file: `s2m-pro-extras/paypal-central-ipn.php` to use one of the latest PayPal IP addresses listed [here](https://ppmts.custhelp.com/app/answers/detail/a_id/92).
|
419 |
|
420 |
= v120301 - 1.0 =
|
421 |
* ... trimmed away at v111220.
|
422 |
+
* Initial release: v1.0.
|
s2member.php
CHANGED
@@ -19,8 +19,8 @@
|
|
19 |
*/
|
20 |
/* -- This section for WordPress parsing. ------------------------------------------------------------------------------
|
21 |
|
22 |
-
Version:
|
23 |
-
Stable tag:
|
24 |
|
25 |
SSL Compatible: yes
|
26 |
bbPress Compatible: yes
|
@@ -35,7 +35,7 @@ Authorize.Net Compatible: yes w/s2Member Pro
|
|
35 |
Google Checkout Compatible: yes w/s2Member Pro
|
36 |
ClickBank Compatible: yes w/s2Member Pro
|
37 |
|
38 |
-
Tested up to: 3.7
|
39 |
Requires at least: 3.3
|
40 |
|
41 |
Copyright: © 2009 WebSharks, Inc.
|
@@ -75,7 +75,7 @@ if(realpath(__FILE__) === realpath($_SERVER["SCRIPT_FILENAME"]))
|
|
75 |
* @var str
|
76 |
*/
|
77 |
if(!defined("WS_PLUGIN__S2MEMBER_VERSION"))
|
78 |
-
define("WS_PLUGIN__S2MEMBER_VERSION", "
|
79 |
/**
|
80 |
* Minimum PHP version required to run s2Member.
|
81 |
*
|
@@ -105,7 +105,7 @@ if(!defined("WS_PLUGIN__S2MEMBER_MIN_WP_VERSION"))
|
|
105 |
* @var str
|
106 |
*/
|
107 |
if(!defined("WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION"))
|
108 |
-
define("WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION", "
|
109 |
/*
|
110 |
Several compatibility checks.
|
111 |
If all pass, load the s2Member plugin.
|
19 |
*/
|
20 |
/* -- This section for WordPress parsing. ------------------------------------------------------------------------------
|
21 |
|
22 |
+
Version: 131109
|
23 |
+
Stable tag: 131109
|
24 |
|
25 |
SSL Compatible: yes
|
26 |
bbPress Compatible: yes
|
35 |
Google Checkout Compatible: yes w/s2Member Pro
|
36 |
ClickBank Compatible: yes w/s2Member Pro
|
37 |
|
38 |
+
Tested up to: 3.7.1
|
39 |
Requires at least: 3.3
|
40 |
|
41 |
Copyright: © 2009 WebSharks, Inc.
|
75 |
* @var str
|
76 |
*/
|
77 |
if(!defined("WS_PLUGIN__S2MEMBER_VERSION"))
|
78 |
+
define("WS_PLUGIN__S2MEMBER_VERSION", "131109" /* !#distro-version#! */);
|
79 |
/**
|
80 |
* Minimum PHP version required to run s2Member.
|
81 |
*
|
105 |
* @var str
|
106 |
*/
|
107 |
if(!defined("WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION"))
|
108 |
+
define("WS_PLUGIN__S2MEMBER_MIN_PRO_VERSION", "131109" /* !#distro-version#! */);
|
109 |
/*
|
110 |
Several compatibility checks.
|
111 |
If all pass, load the s2Member plugin.
|