Version Description
- Feature: Wildcard replace segments of links based on query string parameters
- Feature: Show the link category name on the link picker search box
- Improvement: Auto remove Yoast SEO meta box on link edit screen
- Bug Fix: 307 global redirect option doesn't seem to be working properly
- Bug Fix: On brand new installs the permalinks sometimes need flushing again
- Bug Fix: Link categories dropdown on Quick Add form not working
- Bug Fix: Description of imported images from amazon is not positioned properly
Download this release
Release Info
Developer | jkohlbach |
Plugin | ![]() |
Version | 2.7.0 |
Comparing to | |
See all releases |
Version 2.7.0
- .htaccess +2 -0
- ThirstyAddonPage.php +147 -0
- ThirstyAdminPage.php +558 -0
- ThirstyShortcode.php +111 -0
- css/thirstystyle.css +276 -0
- images/deleteImg.png +0 -0
- images/detailsbg.jpg +0 -0
- images/icon-aff.png +0 -0
- images/icon-images-disabled.png +0 -0
- images/icon-images.png +0 -0
- images/icon-link.png +0 -0
- images/icon-shortcode.png +0 -0
- images/license +18 -0
- images/lightgreytransparent.png +0 -0
- images/lightgreytransparentalt.png +0 -0
- images/linkpickerlogo.png +0 -0
- images/media-button.png +0 -0
- images/search-load-more.png +0 -0
- images/thirsty-loader.gif +0 -0
- images/thirstylogo.png +0 -0
- images/white-grad.png +0 -0
- js/ThirstyLinkPicker.js +168 -0
- js/ThirstyQuickAddLinkPicker.js +263 -0
- js/lib/chosen/chosen-sprite.png +0 -0
- js/lib/chosen/chosen-sprite@2x.png +0 -0
- js/lib/chosen/chosen.jquery.min.js +2 -0
- js/lib/chosen/chosen.min.css +3 -0
- js/thirstyPickerHelper.js +43 -0
- js/thirstyhelper.js +390 -0
- languages/thirstyaffiliates-de_DE.mo +0 -0
- languages/thirstyaffiliates-de_DE.po +587 -0
- languages/thirstyaffiliates-es_ES.mo +0 -0
- languages/thirstyaffiliates-es_ES.po +581 -0
- languages/thirstyaffiliates-id_ID.mo +0 -0
- languages/thirstyaffiliates-id_ID.po +547 -0
- languages/thirstyaffiliates-it_IT.mo +0 -0
- languages/thirstyaffiliates-it_IT.po +584 -0
- languages/thirstyaffiliates-pt_BR.mo +0 -0
- languages/thirstyaffiliates-pt_BR.po +584 -0
- languages/thirstyaffiliates-ru_RU.mo +0 -0
- languages/thirstyaffiliates-ru_RU.po +581 -0
- readme.txt +301 -0
- thirstyaffiliates.php +2441 -0
- thirstymce/editor_plugin.js +1 -0
- thirstymce/editor_plugin_src.js +64 -0
- thirstymce/img/aff-new.gif +0 -0
- thirstymce/img/aff.gif +0 -0
.htaccess
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
Options -Indexes
|
2 |
+
|
ThirstyAddonPage.php
ADDED
@@ -0,0 +1,147 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*******************************************************************************
|
4 |
+
** thirstySetupAddonsMenu()
|
5 |
+
** Setup the plugin options menu
|
6 |
+
** @since 2.0
|
7 |
+
*******************************************************************************/
|
8 |
+
function thirstySetupAddonsMenu() {
|
9 |
+
if (is_admin()) {
|
10 |
+
add_submenu_page('edit.php?post_type=thirstylink', __('Add-ons', 'thirstyaffiliates'), __('Add-ons', 'thirstyaffiliates'), 'manage_options', 'thirsty-addons', 'thirstyAddonsPage');
|
11 |
+
}
|
12 |
+
}
|
13 |
+
|
14 |
+
/*******************************************************************************
|
15 |
+
** thirstyAddonsPage()
|
16 |
+
** Create the add-ons page
|
17 |
+
** @since 2.0
|
18 |
+
*******************************************************************************/
|
19 |
+
function thirstyAddonsPage() {
|
20 |
+
|
21 |
+
if (!current_user_can('manage_options')) {
|
22 |
+
wp_die( __('You do not have suffifient permissions to access this page.', 'thirstyaffiliates') );
|
23 |
+
}
|
24 |
+
|
25 |
+
echo '<div class="wrap">';
|
26 |
+
echo '<img id="thirstylogo" src="' . plugins_url('thirstyaffiliates/images/thirstylogo.png') . '" alt="ThirstyAffiliates" />';
|
27 |
+
|
28 |
+
echo '<h2>'.__('Turbo Charge ThirstyAffiliates With These Add-ons', 'thirstyaffiliates').'</h2>';
|
29 |
+
|
30 |
+
// get the products list from the RSS feed on thirstyaffiliates.com and
|
31 |
+
// print them into the page nicely
|
32 |
+
$products = thirstyAddonsPageGetProducts();
|
33 |
+
|
34 |
+
if (!empty($products)) {
|
35 |
+
echo '<ul id="thirstyaddonscontainer" class="columns-2">';
|
36 |
+
|
37 |
+
foreach ($products as $product) {
|
38 |
+
$productUrl = str_replace('utm_source=rss' , 'utm_source=plugin', $product['url']);
|
39 |
+
$productUrl = str_replace('utm_medium=rss' , 'utm_medium=addonpage', $productUrl);
|
40 |
+
$productTitle = str_replace('ThirstyAffiliates ', '', $product['title']);
|
41 |
+
$productTitle = str_replace(' Add-on', '', $productTitle);
|
42 |
+
|
43 |
+
echo '<li class="thirstyaddon">';
|
44 |
+
echo '<h3>' . $productTitle . '</h3>';
|
45 |
+
echo '<div class="thirstyaddondescription">' . $product['description'] . '</div>';
|
46 |
+
echo '<a class="button-primary" href="' . $productUrl . '" target="_blank">'.__('Visit Add-on Page →', 'thirstyaffiliates').'</a>';
|
47 |
+
echo '</li>';
|
48 |
+
}
|
49 |
+
|
50 |
+
echo '</ul>';
|
51 |
+
|
52 |
+
echo '<script type="text/javascript">
|
53 |
+
jQuery(document).ready(function() {
|
54 |
+
var addonBoxHeight = 0;
|
55 |
+
jQuery(".thirstyaddon").each(function() {
|
56 |
+
if (jQuery(this).height() > addonBoxHeight) {
|
57 |
+
addonBoxHeight = jQuery(this).height();
|
58 |
+
}
|
59 |
+
});
|
60 |
+
jQuery(".thirstyaddon").height(addonBoxHeight);
|
61 |
+
});
|
62 |
+
</script>';
|
63 |
+
}
|
64 |
+
|
65 |
+
echo '</div>';
|
66 |
+
}
|
67 |
+
|
68 |
+
/*******************************************************************************
|
69 |
+
** thirstyAddonsPageGetProducts()
|
70 |
+
** Get the add-ons feed
|
71 |
+
** @since 2.0
|
72 |
+
*******************************************************************************/
|
73 |
+
function thirstyAddonsPageGetProducts($forceNew = false) {
|
74 |
+
$thirstyAddonsRSS = get_option('thirstyAddonsRSS');
|
75 |
+
$expired = false;
|
76 |
+
|
77 |
+
/* If the timestamp hasn't been set or if it is expired or if we're forcing
|
78 |
+
** make sure we fetch a new feed */
|
79 |
+
if (isset($thirstyAddonsRSS) && !empty($thirstyAddonsRSS) && !$forceNew) {
|
80 |
+
|
81 |
+
$oneDayAgo = current_time('timestamp', 0) - (24 * 60 * 60); // current time minus 1 day
|
82 |
+
|
83 |
+
if (!isset($thirstyAddonsRSS['timestamp']) ||
|
84 |
+
empty($thirstyAddonsRSS['timestamp']) ||
|
85 |
+
$oneDayAgo > $thirstyAddonsRSS['timestamp']) {
|
86 |
+
|
87 |
+
$expired = true;
|
88 |
+
}
|
89 |
+
|
90 |
+
} else {
|
91 |
+
$expired = true;
|
92 |
+
}
|
93 |
+
|
94 |
+
// Check if we need to get a new RSS feed
|
95 |
+
if (!isset($thirstyAddonsRSS['products']) || empty($thirstyAddonsRSS['products']) || $expired) {
|
96 |
+
|
97 |
+
$rssXMLString = '';
|
98 |
+
$rssUrl = 'http://thirstyaffiliates.com/feed?post_type=product';
|
99 |
+
|
100 |
+
if (function_exists('curl_init')) { // cURL is installed on the server so use this preferably
|
101 |
+
$ch = curl_init();
|
102 |
+
curl_setopt($ch, CURLOPT_HEADER, false);
|
103 |
+
curl_setopt($ch, CURLOPT_URL, $rssUrl);
|
104 |
+
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: text/xml")); // provide a http header to please some curl setups
|
105 |
+
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
106 |
+
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
|
107 |
+
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
|
108 |
+
$rssXMLString = curl_exec($ch);
|
109 |
+
curl_close($ch);
|
110 |
+
} else { // try using file_get_contents, though this causes some issues on some servers
|
111 |
+
$rssXMLString = file_get_contents($rssUrl, true);
|
112 |
+
}
|
113 |
+
|
114 |
+
// DEFAULT BEHAVIOUR: if we can't get the country XML file return false
|
115 |
+
if (empty($rssXMLString))
|
116 |
+
return false;
|
117 |
+
|
118 |
+
// Create XML object for transversing
|
119 |
+
$rssXML = new SimpleXMLElement($rssXMLString);
|
120 |
+
|
121 |
+
// Check against each bot we have on record
|
122 |
+
if (!empty($rssXML)) {
|
123 |
+
|
124 |
+
$products = array();
|
125 |
+
foreach ($rssXML->channel->item as $product) {
|
126 |
+
$title = (string)$product->title;
|
127 |
+
$description = (string)$product->description;
|
128 |
+
$url = (string)$product->link;
|
129 |
+
|
130 |
+
$products[] = array(
|
131 |
+
'title' => $title,
|
132 |
+
'description' => $description,
|
133 |
+
'url' => $url
|
134 |
+
);
|
135 |
+
}
|
136 |
+
|
137 |
+
$timestamp = current_time('timestamp', 0);
|
138 |
+
update_option('thirstyAddonsRSS', array('products' => $products, 'timestamp' => $timestamp));
|
139 |
+
}
|
140 |
+
|
141 |
+
}
|
142 |
+
|
143 |
+
// Return products array
|
144 |
+
return $thirstyAddonsRSS['products'];
|
145 |
+
}
|
146 |
+
|
147 |
+
add_action('admin_menu', 'thirstySetupAddonsMenu', 90);
|
ThirstyAdminPage.php
ADDED
@@ -0,0 +1,558 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/*******************************************************************************
|
4 |
+
** thirstySetupMenu()
|
5 |
+
** Setup the plugin options menu
|
6 |
+
** @since 1.0
|
7 |
+
*******************************************************************************/
|
8 |
+
function thirstySetupMenu() {
|
9 |
+
if (is_admin()) {
|
10 |
+
register_setting('thirstyOptions', 'thirstyOptions');
|
11 |
+
add_submenu_page('edit.php?post_type=thirstylink', __('Settings', 'thirstyaffiliates'), __('Settings', 'thirstyaffiliates'), 'manage_options', 'thirsty-settings', 'thirstyAdminOptions');
|
12 |
+
}
|
13 |
+
}
|
14 |
+
|
15 |
+
/*******************************************************************************
|
16 |
+
** thirstyAdminOptions
|
17 |
+
** Present the options page
|
18 |
+
** @since 1.0
|
19 |
+
*******************************************************************************/
|
20 |
+
function thirstyAdminOptions() {
|
21 |
+
if (!current_user_can('manage_options')) {
|
22 |
+
wp_die( __('You do not have suffifient permissions to access this page.', 'thirstyaffiliates') );
|
23 |
+
}
|
24 |
+
|
25 |
+
$thirstyOptions = get_option('thirstyOptions');
|
26 |
+
|
27 |
+
$linksRebuilt = false;
|
28 |
+
if (isset($thirstyOptions['rebuildlinks']) && $thirstyOptions['rebuildlinks'] == 'true') {
|
29 |
+
$thirstyOptions['rebuildlinks'] = 'false';
|
30 |
+
update_option('thirstyOptions', $thirstyOptions);
|
31 |
+
$thirstyOptions = get_option('thirstyOptions');
|
32 |
+
thirstyResaveAllLinks();
|
33 |
+
flush_rewrite_rules();
|
34 |
+
$linksRebuilt = true;
|
35 |
+
}
|
36 |
+
|
37 |
+
// Sanity check on link prefix
|
38 |
+
if (empty($thirstyOptions['linkprefix'])) {
|
39 |
+
$thirstyOptions['linkprefix'] = 'recommends';
|
40 |
+
update_option('thirstyOptions', $thirstyOptions);
|
41 |
+
}
|
42 |
+
|
43 |
+
$redirectTypes = thirstyGetRedirectTypes();
|
44 |
+
|
45 |
+
// Sanity check on link redirect type
|
46 |
+
if (empty($thirstyOptions['linkredirecttype'])) {
|
47 |
+
$thirstyOptions['linkredirecttype'] = '301';
|
48 |
+
update_option('thirstyOptions', $thirstyOptions);
|
49 |
+
}
|
50 |
+
|
51 |
+
$thirstyOptions['nofollow'] = isset($thirstyOptions['nofollow']) ? 'checked="checked"' : '';
|
52 |
+
$thirstyOptions['newwindow'] = isset($thirstyOptions['newwindow']) ? 'checked="checked"' : '';
|
53 |
+
$thirstyOptions['showcatinslug'] = isset($thirstyOptions['showcatinslug']) ? 'checked="checked"' : '';
|
54 |
+
$thirstyOptions['disablecatautoselect'] = isset($thirstyOptions['disablecatautoselect']) ? 'checked="checked"' : '';
|
55 |
+
$thirstyOptions['legacyuploader'] = isset($thirstyOptions['legacyuploader']) ? 'checked="checked"' : '';
|
56 |
+
$thirstyOptions['disabletitleattribute'] = isset($thirstyOptions['disabletitleattribute']) ? 'checked="checked"' : '';
|
57 |
+
$thirstyOptions['disablethirstylinkclass'] = isset($thirstyOptions['disablethirstylinkclass']) ? 'checked="checked"' : '';
|
58 |
+
$thirstyOptions['disableslugshortening'] = isset($thirstyOptions['disableslugshortening']) ? 'checked="checked"' : '';
|
59 |
+
$thirstyOptions['disablevisualeditorbuttons'] = isset($thirstyOptions['disablevisualeditorbuttons']) ? 'checked="checked"' : '';
|
60 |
+
$thirstyOptions['disabletexteditorbuttons'] = isset($thirstyOptions['disabletexteditorbuttons']) ? 'checked="checked"' : '';
|
61 |
+
|
62 |
+
echo '<script type="text/javascript">var thirstyPluginDir = "' .
|
63 |
+
plugins_url('thirstyaffiliates/') . '";
|
64 |
+
var thirstyJSEnable = true;
|
65 |
+
</script>';
|
66 |
+
|
67 |
+
echo '<div class="wrap">';
|
68 |
+
|
69 |
+
echo '<img id="thirstylogo" src="' . plugins_url('thirstyaffiliates/images/thirstylogo.png') . '" alt="ThirstyAffiliates" />';
|
70 |
+
|
71 |
+
echo '<form id="thirstySettingsForm" method="post" action="options.php">';
|
72 |
+
|
73 |
+
wp_nonce_field('update-options');
|
74 |
+
settings_fields('thirstyOptions');
|
75 |
+
|
76 |
+
if (!empty($_GET['settings-updated'])) {
|
77 |
+
echo '<div id="message" class="updated below-h2"><p>'.__('Settings updated.', 'thirstyaffiliates').'</p>' .
|
78 |
+
($linksRebuilt ? '<p>'.__('Links rebuilt.', 'thirstyaffiliates').'</p>' : '') . '</div>';
|
79 |
+
}
|
80 |
+
|
81 |
+
echo '
|
82 |
+
<table class="thirstyTable form-table" cellspacing="0" cellpadding="0">
|
83 |
+
|
84 |
+
<tr><td><h3 style="margin-top: 0;">'.__('General Settings', 'thirstyaffiliates').'</h3></td></tr>
|
85 |
+
|
86 |
+
<tr>
|
87 |
+
<th>
|
88 |
+
<label for="thirstyOptions[linkprefix]">'.__('Link Prefix:', 'thirstyaffiliates').'</label>
|
89 |
+
</th>
|
90 |
+
<td>
|
91 |
+
<select id="thirstyOptionsLinkPrefix" name="thirstyOptions[linkprefix]">
|
92 |
+
<option value="custom"' . (!empty($thirstyOptions['linkprefix']) && $thirstyOptions['linkprefix'] == 'custom' ? ' selected' : '') . '>-- ' . __('Custom', 'thirstyaffiliates') . ' --</option>';
|
93 |
+
|
94 |
+
thirstyGenerateSelectOptions(array("recommends", "link", "go", "review",
|
95 |
+
"product", "suggests", "follow", "endorses", "proceed", "fly", "goto",
|
96 |
+
"get", "find", "act", "click", "move", "offer", "run"), true);
|
97 |
+
|
98 |
+
echo '</select><br />
|
99 |
+
<input type="text" id="thirstyCustomLinkPrefix" value="' . (isset($thirstyOptions['linkprefixcustom']) ? $thirstyOptions['linkprefixcustom'] : '') . '" name="thirstyOptions[linkprefixcustom]" />';
|
100 |
+
|
101 |
+
if (isset($thirstyOptions['linkprefix']) && $thirstyOptions['linkprefix'] == 'custom') {
|
102 |
+
echo '<script type="text/javascript">
|
103 |
+
jQuery("#thirstyCustomLinkPrefix").css("display", "block");
|
104 |
+
jQuery("#thirstyCustomLinkPrefix").show();
|
105 |
+
</script>';
|
106 |
+
}
|
107 |
+
|
108 |
+
echo '</td>
|
109 |
+
<td>
|
110 |
+
<span class="description">'.__('The prefix that comes before your cloaked link\'s slug.<br />eg. ', 'thirstyaffiliates') .
|
111 |
+
trailingslashit(get_bloginfo('url')) . '<span style="font-weight: bold;">' . thirstyGetCurrentSlug() . '</span>/your-affiliate-link-name</span>
|
112 |
+
<br /><span class="description"><b>'.__('Warning:', 'thirstyaffiliates').'</b> '.__('Changing this setting after you\'ve used links in a post could break those links. Be careful!', 'thirstyaffiliates').'</span>
|
113 |
+
</td>
|
114 |
+
</tr>
|
115 |
+
|
116 |
+
<tr>
|
117 |
+
<th>
|
118 |
+
<label for="thirstyOptions[showcatinslug]">'.__('Show Link Category in URL?', 'thirstyaffiliates').'</label>
|
119 |
+
<td>
|
120 |
+
<input type="checkbox" name="thirstyOptions[showcatinslug]" id="thirstyOptionsShowCatInSlug" ' .
|
121 |
+
$thirstyOptions['showcatinslug'] . ' />
|
122 |
+
</td>
|
123 |
+
<td>
|
124 |
+
<span class="description">'.__('Show the selected category in the url. eg. ', 'thirstyaffiliates') .
|
125 |
+
trailingslashit(get_bloginfo('url')) . '' . thirstyGetCurrentSlug() . '/<span style="font-weight: bold;">link-category</span>/your-affiliate-link-name</span></span>
|
126 |
+
<br /><span class="description"><b>'.__('Warning:', 'thirstyaffiliates').'</b> '.__('Changing this setting after you\'ve used links in a post could break those links. Be careful!', 'thirstyaffiliates').'</span>
|
127 |
+
</td>
|
128 |
+
</tr>
|
129 |
+
|
130 |
+
<tr>
|
131 |
+
<th>
|
132 |
+
<label for="thirstyOptions[disablecatautoselect]">'.__('Disable "uncategorized" category on save?', 'thirstyaffiliates').'</label>
|
133 |
+
<td>
|
134 |
+
<input type="checkbox" name="thirstyOptions[disablecatautoselect]" id="thirstyOptionsDisableCatAutoSelect" ' .
|
135 |
+
$thirstyOptions['disablecatautoselect'] . ' />
|
136 |
+
</td>
|
137 |
+
<td>
|
138 |
+
<span class="description">'.__('If the "Show the selected category in the url" option above is selected, by default ThirstyAffiliates will add an "uncategorized" category to apply to non-categorised links during save. If you disable this, it allows you to have some links with categories in the URL and some without.', 'thirstyaffiliates').'</span>
|
139 |
+
</td>
|
140 |
+
</tr>
|
141 |
+
|
142 |
+
<tr>
|
143 |
+
<th>
|
144 |
+
<label for="thirstyOptions[linkredirecttype]">'.__('Link Redirect Type:', 'thirstyaffiliates').'</label>
|
145 |
+
<td>';
|
146 |
+
|
147 |
+
foreach ($redirectTypes as $redirectTypeCode => $redirectTypeDesc) {
|
148 |
+
|
149 |
+
$linkTypeSelected = false;
|
150 |
+
if (strcasecmp($thirstyOptions['linkredirecttype'], $redirectTypeCode) == 0)
|
151 |
+
$linkTypeSelected = true;
|
152 |
+
|
153 |
+
echo '<input type="radio" name="thirstyOptions[linkredirecttype]" id="thirstyOptionsLinkRedirectType' . $redirectTypeCode .'" ' .
|
154 |
+
($linkTypeSelected ? 'checked="checked" ' : '') . 'value="' . $redirectTypeCode . '" /> <label for="thirstyOptionsLinkRedirectType' . $redirectTypeCode .'">' . $redirectTypeDesc . '</label><br />';
|
155 |
+
|
156 |
+
}
|
157 |
+
|
158 |
+
$additionalreltags = isset($thirstyOptions['additionalreltags']) ? $thirstyOptions['additionalreltags'] : "";
|
159 |
+
|
160 |
+
echo '
|
161 |
+
</td>
|
162 |
+
<td>
|
163 |
+
<span class="description">'.__('This is the type of redirect ThirstyAffiliates will use to redirect the user to your affiliate link.', 'thirstyaffiliates').'</span>
|
164 |
+
</td>
|
165 |
+
</tr>
|
166 |
+
|
167 |
+
<tr>
|
168 |
+
<th>
|
169 |
+
<label for="thirstyOptions[nofollow]">'.__('Use no follow on links?', 'thirstyaffiliates').'</label>
|
170 |
+
<td>
|
171 |
+
<input type="checkbox" name="thirstyOptions[nofollow]" id="thirstyOptionsNofollow" ' .
|
172 |
+
$thirstyOptions['nofollow'] . ' />
|
173 |
+
</td>
|
174 |
+
<td>
|
175 |
+
<span class="description">'.__('Add the nofollow attribute to links so search engines don\'t index them', 'thirstyaffiliates').'</span>
|
176 |
+
</td>
|
177 |
+
</tr>
|
178 |
+
|
179 |
+
<tr>
|
180 |
+
<th>
|
181 |
+
<label for="thirstyOptions[newwindow]">'.__('Open links in new window?', 'thirstyaffiliates').'</label>
|
182 |
+
<td>
|
183 |
+
<input type="checkbox" name="thirstyOptions[newwindow]" id="thirstyOptionsNewwindow" ' .
|
184 |
+
$thirstyOptions['newwindow'] . ' />
|
185 |
+
</td>
|
186 |
+
<td>
|
187 |
+
<span class="description">'.__('Force the user to open links in a new window or tab', 'thirstyaffiliates').'</span>
|
188 |
+
</td>
|
189 |
+
</tr>
|
190 |
+
|
191 |
+
<tr>
|
192 |
+
<th>
|
193 |
+
<label for="thirstyOptions[legacyuploader]">'.__('Revert to legacy image uploader?', 'thirstyaffiliates').'</label>
|
194 |
+
<td>
|
195 |
+
<input type="checkbox" name="thirstyOptions[legacyuploader]" id="thirstyOptionsLegacyUploader" ' .
|
196 |
+
$thirstyOptions['legacyuploader'] . ' />
|
197 |
+
</td>
|
198 |
+
<td>
|
199 |
+
<span class="description">'.__('Disable the new media uploader in favour of the old style uploader', 'thirstyaffiliates').'</span>
|
200 |
+
</td>
|
201 |
+
</tr>
|
202 |
+
|
203 |
+
<tr>
|
204 |
+
<th>
|
205 |
+
<label for="thirstyOptions[disabletitleattribute]">'.__('Disable title attribute output on link insertion?', 'thirstyaffiliates').'</label>
|
206 |
+
<td>
|
207 |
+
<input type="checkbox" name="thirstyOptions[disabletitleattribute]" id="thirstyOptionsDisableTitleAttribute" ' .
|
208 |
+
$thirstyOptions['disabletitleattribute'] . ' />
|
209 |
+
</td>
|
210 |
+
<td>
|
211 |
+
<span class="description">'.__('Links are automatically output with a title html attribute (by default this shows the text
|
212 |
+
that you have linked), this option lets you disable the output of the title attribute on your links.', 'thirstyaffiliates').'</span>
|
213 |
+
</td>
|
214 |
+
</tr>
|
215 |
+
|
216 |
+
<tr>
|
217 |
+
<th>
|
218 |
+
<label for="thirstyOptions[disablethirstylinkclass]">'.__('Disable automatic output of ThirstyAffiliates CSS classes?', 'thirstyaffiliates').'</label>
|
219 |
+
<td>
|
220 |
+
<input type="checkbox" name="thirstyOptions[disablethirstylinkclass]" id="thirstyOptionsDisableThirstylinkClass" ' .
|
221 |
+
$thirstyOptions['disablethirstylinkclass'] . ' />
|
222 |
+
</td>
|
223 |
+
<td>
|
224 |
+
<span class="description">'.__('To help with styling your affiliate links a CSS class called "thirstylink" is added
|
225 |
+
to the link and a CSS class called "thirstylinkimg" is added to images (when inserting image affiliate links),
|
226 |
+
this option disables the addition of both of these CSS classes.', 'thirstyaffiliates').'</span>
|
227 |
+
</td>
|
228 |
+
</tr>
|
229 |
+
|
230 |
+
<tr>
|
231 |
+
<th>
|
232 |
+
<label for="thirstyOptions[disableslugshortening]">'.__('Disable slug shortening?', 'thirstyaffiliates').'</label>
|
233 |
+
<td>
|
234 |
+
<input type="checkbox" name="thirstyOptions[disableslugshortening]" id="thirstyOptionsDisableSlugShortening" ' .
|
235 |
+
$thirstyOptions['disableslugshortening'] . ' />
|
236 |
+
</td>
|
237 |
+
<td>
|
238 |
+
<span class="description">'.__('By default, ThirstyAffiliates removes superfluous words from your cloaked link URLs, this option turns that feature off.', 'thirstyaffiliates').'</span>
|
239 |
+
</td>
|
240 |
+
</tr>
|
241 |
+
|
242 |
+
<tr>
|
243 |
+
<th>
|
244 |
+
<label for="thirstyOptions[disablevisualeditorbuttons]">'.__('Disable buttons on the Visual editor?', 'thirstyaffiliates').'</label>
|
245 |
+
<td>
|
246 |
+
<input type="checkbox" name="thirstyOptions[disablevisualeditorbuttons]" id="thirstyOptionsDisableVisualEditorButtons" ' .
|
247 |
+
$thirstyOptions['disablevisualeditorbuttons'] . ' />
|
248 |
+
</td>
|
249 |
+
<td>
|
250 |
+
<span class="description">'.__('Hide the ThirstyAffiliates buttons on the Visual editor.', 'thirstyaffiliates').'</span>
|
251 |
+
</td>
|
252 |
+
</tr>
|
253 |
+
|
254 |
+
<tr>
|
255 |
+
<th>
|
256 |
+
<label for="thirstyOptions[disabletexteditorbuttons]">'.__('Disable buttons on the Text/Quicktags editor?', 'thirstyaffiliates').'</label>
|
257 |
+
<td>
|
258 |
+
<input type="checkbox" name="thirstyOptions[disabletexteditorbuttons]" id="thirstyOptionsDisableTextEditorButtons" ' .
|
259 |
+
$thirstyOptions['disabletexteditorbuttons'] . ' />
|
260 |
+
</td>
|
261 |
+
<td>
|
262 |
+
<span class="description">'.__('Hide the ThirstyAffiliates buttons on the Text editor.', 'thirstyaffiliates').'</span>
|
263 |
+
</td>
|
264 |
+
</tr>
|
265 |
+
|
266 |
+
<tr>
|
267 |
+
<th>
|
268 |
+
<label for="thirstyOptions[additionalreltags]">'.__('Additional rel attribute tags to add during link insertion: ', 'thirstyaffiliates').'</label>
|
269 |
+
<td>
|
270 |
+
<input type="text" name="thirstyOptions[additionalreltags]" id="thirstyOptionsAdditionalRelTags" value="' .
|
271 |
+
$additionalreltags . '" />
|
272 |
+
</td>
|
273 |
+
<td>
|
274 |
+
<span class="description">'.__('Allows you to add extra tags into the rel= attribute when links are inserted.', 'thirstyaffiliates').'</span>
|
275 |
+
</td>
|
276 |
+
</tr>';
|
277 |
+
|
278 |
+
do_action('thirstyAffiliatesAfterMainSettings');
|
279 |
+
|
280 |
+
echo '
|
281 |
+
</table>
|
282 |
+
|
283 |
+
<input type="hidden" name="thirstyOptions[rebuildlinks]" id="thirstyHiddenRebuildFlag" value="false" />
|
284 |
+
|
285 |
+
<input type="hidden" name="page_options" value="thirstyOptions" />
|
286 |
+
|
287 |
+
<p class="submit">
|
288 |
+
<input type="submit" class="button-primary" value="'.__('Save All Changes', 'thirstyaffiliates').'" />
|
289 |
+
<input type="submit" id="thirstyForceLinkRebuild" class="button-secondary" value="'.__('Save & Force Link Rebuild').'" />
|
290 |
+
</p>
|
291 |
+
|
292 |
+
</form>
|
293 |
+
|
294 |
+
<div class="thirstyWhiteBox">
|
295 |
+
|
296 |
+
<h3>'.__('Plugin Information', 'thirstyaffiliates').'</h3>'.
|
297 |
+
|
298 |
+
'ThirstyAffiliates Version: '. THIRSTY_VERSION .'<br />';
|
299 |
+
|
300 |
+
do_action('thirstyAffiliatesPluginInformation');
|
301 |
+
|
302 |
+
echo '</div><!-- /.thirstyWhiteBox -->';
|
303 |
+
|
304 |
+
do_action('thirstyAffiliatesAfterPluginInformation');
|
305 |
+
|
306 |
+
echo '
|
307 |
+
<div class="thirstyWhiteBox">
|
308 |
+
<h3>Join The Community</h3>
|
309 |
+
<ul id="thirstyCommunityLinks"><li><a href="http://thirstyaffiliates.com">'.__('Visit Our Website', 'thirstyaffiliates').'</a></li>
|
310 |
+
<li><a href="' . admin_url('edit.php?post_type=thirstylink&page=thirsty-addons') . '">'.__('Browse ThirstyAffiliates Add-ons', 'thirstyaffiliates').'</a></li>
|
311 |
+
<li><a href="http://thirstyaffiliates.com/affiliates">'.__('Join Our Affiliate Program', 'thirstyaffiliates').'</a> '.__('(up to 50% commissions)' ,'thirstyaffiliates').'</li>
|
312 |
+
<li><a href="http://facebook.com/thirstyaffiliates" style="margin-right: 10px;">'.__('Like us on Facebook', 'thirstyaffiliates').'</a><iframe src="//www.facebook.com/plugins/like.php?href=https%3A%2F%2Fwww.facebook.com%2Fthirstyaffiliates&send=false&layout=button_count&width=450&show_faces=false&font=arial&colorscheme=light&action=like&height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:21px; vertical-align: bottom;" allowTransparency="true"></iframe></li>
|
313 |
+
<li><a href="http://twitter.com/thirstyaff" style="margin-right: 10px;">'.__('Follow us on Twitter', 'thirstyaffiliates').'</a> <a href="https://twitter.com/thirstyaff" class="twitter-follow-button" data-show-count="true" style="vertical-align: bottom;">Follow @thirstyaff</a><script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?"http":"https";if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+"://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document, "script", "twitter-wjs");</script></li>
|
314 |
+
</ul>
|
315 |
+
</div><!-- /.thirstyWhiteBox -->
|
316 |
+
|
317 |
+
</div><!-- /.wrap -->';
|
318 |
+
|
319 |
+
// Provide debug output for diagnostics and support use
|
320 |
+
if(isset($_GET['debug'])){
|
321 |
+
if ($_GET['debug'] == 'true') {
|
322 |
+
$thirstyOptions = get_option('thirstyOptions'); // re-retrieve options in case any of the filters/actions messed with it
|
323 |
+
echo '<pre>'.__('DEBUG: ','thirstyaffiliates') . print_r($thirstyOptions, true) . '</pre>';
|
324 |
+
}
|
325 |
+
}
|
326 |
+
}
|
327 |
+
|
328 |
+
/*******************************************************************************
|
329 |
+
** thirstyResaveAllLinks
|
330 |
+
** Resave all ThirstyAffiliates links in the system. Allows us to regenerate the
|
331 |
+
** slug and permalink after big settings changes.
|
332 |
+
** @since 2.1
|
333 |
+
*******************************************************************************/
|
334 |
+
function thirstyResaveAllLinks() {
|
335 |
+
|
336 |
+
$thirstyLinkQuery = new WP_Query(array(
|
337 |
+
'post_type' => 'thirstylink',
|
338 |
+
'post_status' => 'publish',
|
339 |
+
'posts_per_page' => -1,
|
340 |
+
'ignore_sticky_posts'=> 1
|
341 |
+
));
|
342 |
+
|
343 |
+
if($thirstyLinkQuery->have_posts()) {
|
344 |
+
while ($thirstyLinkQuery->have_posts()) {
|
345 |
+
$thirstyLinkQuery->the_post();
|
346 |
+
|
347 |
+
$thirstyLink['ID'] = get_the_ID();
|
348 |
+
wp_update_post($thirstyLink);
|
349 |
+
}
|
350 |
+
}
|
351 |
+
}
|
352 |
+
|
353 |
+
/*******************************************************************************
|
354 |
+
** thirstyGenerateSelectOptions
|
355 |
+
** Helper function to generate selection boxes for admin page
|
356 |
+
** @since 1.0
|
357 |
+
*******************************************************************************/
|
358 |
+
function thirstyGenerateSelectOptions($selectNames, $echo = false) {
|
359 |
+
$thirstyOptions = get_option('thirstyOptions');
|
360 |
+
$html = '';
|
361 |
+
|
362 |
+
foreach ($selectNames as $selectName) {
|
363 |
+
$html .= '<option value="' . $selectName . '"' . ($thirstyOptions['linkprefix'] == $selectName ? ' selected' : '') . '>' . $selectName . '</option>';
|
364 |
+
}
|
365 |
+
|
366 |
+
if ($echo)
|
367 |
+
echo $html;
|
368 |
+
else
|
369 |
+
return $html;
|
370 |
+
}
|
371 |
+
|
372 |
+
add_action('admin_menu', 'thirstySetupMenu', 99);
|
373 |
+
|
374 |
+
/*******************************************************************************
|
375 |
+
** thirstyGlobalAdminNotices
|
376 |
+
** This should only be added to for really critical configuration problems that
|
377 |
+
** the admin should know about. In most cases this shows a notice to the admin
|
378 |
+
** explaining about the config problem and what they have to do to fix it.
|
379 |
+
** @since 2.4.6
|
380 |
+
*******************************************************************************/
|
381 |
+
function thirstyGlobalAdminNotices() {
|
382 |
+
// Check for pretty permalinks
|
383 |
+
global $wp_rewrite;
|
384 |
+
if (empty($wp_rewrite->permalink_structure)) {
|
385 |
+
echo '<div class="error">
|
386 |
+
<p>'.__('ThirstyAffiliates requires pretty permalinks, please change
|
387 |
+
your', 'thirstyaffiliates').' <a href="' . admin_url('options-permalink.php') . '">'.__('Permalink settings', 'thirstyaffiliates').'</a> '.__('to something other than default.', 'thirstyaffiliates').'<a href="#" style="float: right;" id="thirstyDismissPermalinksMessage">'.__('Dismiss', 'thirstyaffiliates').'</a></p>
|
388 |
+
</div>';
|
389 |
+
}
|
390 |
+
}
|
391 |
+
|
392 |
+
add_action('admin_notices', 'thirstyGlobalAdminNotices');
|
393 |
+
|
394 |
+
/**
|
395 |
+
* Render export/import controls.
|
396 |
+
*
|
397 |
+
* @contributor J++
|
398 |
+
* @since 2.5
|
399 |
+
*/
|
400 |
+
function renderExportImportControls(){
|
401 |
+
?>
|
402 |
+
<style>
|
403 |
+
.export_import_settings_instruction {
|
404 |
+
margin-bottom: 30px;
|
405 |
+
}
|
406 |
+
.export_import_settings_instruction dt {
|
407 |
+
font-weight: bold;
|
408 |
+
margin-bottom: 10px;
|
409 |
+
}
|
410 |
+
.export_import_settings_instruction dd {
|
411 |
+
margin-bottom: 20px;
|
412 |
+
}
|
413 |
+
.export_import_settings_instruction dd ul {
|
414 |
+
list-style-type: disc;
|
415 |
+
}
|
416 |
+
</style>
|
417 |
+
<div id="export_import_controls_container" class="thirstyWhiteBox">
|
418 |
+
<h3><?php _e('Export/Import Global Settings', 'thirstyaffiliates'); ?></h3>
|
419 |
+
|
420 |
+
<dl class="export_import_settings_instruction">
|
421 |
+
<dt><?php _e('Exporting Settings', 'thirstyaffiliates'); ?></dt>
|
422 |
+
<dd>
|
423 |
+
<ul>
|
424 |
+
<li><?php _e('Click export settings button', 'thirstyaffiliates'); ?></li>
|
425 |
+
<li><?php _e('Copy the settings text code', 'thirstyaffiliates'); ?></li>
|
426 |
+
<li><?php _e('Paste in the settings code to the destination site', 'thirstyaffiliates'); ?></li>
|
427 |
+
</ul>
|
428 |
+
</dd>
|
429 |
+
|
430 |
+
<dt><?php _e('Importing Settings', 'thirstyaffiliates'); ?></dt>
|
431 |
+
<dd>
|
432 |
+
<ul>
|
433 |
+
<li><?php _e('Click import settings button', 'thirstyaffiliates'); ?></li>
|
434 |
+
<li><?php _e('Paste the settings text code ( From other site )', 'thirstyaffiliates'); ?></li>
|
435 |
+
<li><?php _e('Click import global settings button', 'thirstyaffiliates'); ?></li>
|
436 |
+
</ul>
|
437 |
+
</dd>
|
438 |
+
</dl>
|
439 |
+
|
440 |
+
<input type="button" class="button button-primary" id="export_global_settings" value="<?php _e('Export Settings', 'thirstyaffiliates'); ?>" />
|
441 |
+
<input type="button" class="button button-primary" id="import_global_settings" value="<?php _e('Import Settings', 'thirstyaffiliates'); ?>" />
|
442 |
+
|
443 |
+
<div id="textarea_container">
|
444 |
+
<textarea id="global_settings_string" cols="40" rows="10"></textarea>
|
445 |
+
</div>
|
446 |
+
<input type="button" class="button button-primary" id="import_global_settings_action" value="<?php _e('Import Global Settings', 'thirstyaffiliates'); ?>"/>
|
447 |
+
</div>
|
448 |
+
<?php
|
449 |
+
}
|
450 |
+
|
451 |
+
add_action( 'thirstyAffiliatesAfterPluginInformation' , 'renderExportImportControls' );
|
452 |
+
|
453 |
+
/**
|
454 |
+
* Export global settings.
|
455 |
+
*
|
456 |
+
* @param null $dummyArg
|
457 |
+
* @param bool $ajaxCall
|
458 |
+
*
|
459 |
+
* @contributor J++
|
460 |
+
* @return bool
|
461 |
+
* @since 2.5
|
462 |
+
*/
|
463 |
+
function thirstyExportGlobalSettings( $dummyArg = null , $ajaxCall = true ){
|
464 |
+
if (!current_user_can(apply_filters('thirstyAjaxOptionsCapability', 'manage_options')))
|
465 |
+
die('Cheatin\', Huh?');
|
466 |
+
|
467 |
+
$thirstyOption = base64_encode( serialize( get_option('thirstyOptions') ) );
|
468 |
+
|
469 |
+
if($ajaxCall === true){
|
470 |
+
|
471 |
+
header('Content-Type: application/json'); // specify we return json
|
472 |
+
echo json_encode(array(
|
473 |
+
'status' => 'success',
|
474 |
+
'thirstyOption' => $thirstyOption
|
475 |
+
));
|
476 |
+
die();
|
477 |
+
|
478 |
+
}else{
|
479 |
+
|
480 |
+
return true;
|
481 |
+
|
482 |
+
}
|
483 |
+
|
484 |
+
}
|
485 |
+
|
486 |
+
add_action( "wp_ajax_thirstyExportGlobalSettings" , 'thirstyExportGlobalSettings' );
|
487 |
+
|
488 |
+
/**
|
489 |
+
* Import global settings.
|
490 |
+
*
|
491 |
+
* @param null $thirstyOptions
|
492 |
+
* @param bool $ajaxCall
|
493 |
+
*
|
494 |
+
* @contributor J++
|
495 |
+
* @return bool
|
496 |
+
* @since 2.5
|
497 |
+
*/
|
498 |
+
function thirstyImportGlobalSettings( $thirstyOptions = null , $ajaxCall = true ){
|
499 |
+
if (!current_user_can(apply_filters('thirstyAjaxOptionsCapability', 'manage_options')))
|
500 |
+
die('Cheatin\', Huh?');
|
501 |
+
|
502 |
+
// We do this coz unserialize issues E_NOTICE on failure.
|
503 |
+
error_reporting( E_ERROR | E_PARSE );
|
504 |
+
|
505 |
+
if ( $ajaxCall === true )
|
506 |
+
$thirstyOptions = $_POST[ 'thirstyOptions' ];
|
507 |
+
|
508 |
+
$err = null;
|
509 |
+
$thirstyOptions = base64_decode( $thirstyOptions );
|
510 |
+
|
511 |
+
if ( !$thirstyOptions )
|
512 |
+
$err = __("Failed to decode settings string", "thirstyaffiliates");
|
513 |
+
|
514 |
+
if ( is_null( $err ) ) {
|
515 |
+
|
516 |
+
$thirstyOptions = maybe_unserialize( $thirstyOptions );
|
517 |
+
|
518 |
+
if ( !$thirstyOptions )
|
519 |
+
$err = __("Failed to unserialize settings string", "thirstyaffiliates");
|
520 |
+
|
521 |
+
}
|
522 |
+
|
523 |
+
if ( is_null( $err ) )
|
524 |
+
update_option( 'thirstyOptions' , $thirstyOptions );
|
525 |
+
|
526 |
+
if($ajaxCall === true){
|
527 |
+
|
528 |
+
if ( is_null( $err ) ) {
|
529 |
+
|
530 |
+
header('Content-Type: application/json'); // specify we return json
|
531 |
+
echo json_encode(array(
|
532 |
+
'status' => 'success'
|
533 |
+
));
|
534 |
+
die();
|
535 |
+
|
536 |
+
} else {
|
537 |
+
|
538 |
+
header('Content-Type: application/json'); // specify we return json
|
539 |
+
echo json_encode(array(
|
540 |
+
'status' => 'fail',
|
541 |
+
'error_message' => $err
|
542 |
+
));
|
543 |
+
die();
|
544 |
+
|
545 |
+
}
|
546 |
+
|
547 |
+
}else{
|
548 |
+
|
549 |
+
if ( is_null( $err ) )
|
550 |
+
return true;
|
551 |
+
else
|
552 |
+
return false;
|
553 |
+
|
554 |
+
}
|
555 |
+
|
556 |
+
}
|
557 |
+
|
558 |
+
add_action( "wp_ajax_thirstyImportGlobalSettings" , 'thirstyImportGlobalSettings' );
|
ThirstyShortcode.php
ADDED
@@ -0,0 +1,111 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*******************************************************************************
|
3 |
+
** thirstyLinkByShortcode
|
4 |
+
** Allows user to specify a shortcode in the page/post to include a thirstylink
|
5 |
+
*******************************************************************************/
|
6 |
+
function thirstyLinkByShortcode($atts) {
|
7 |
+
extract($atts);
|
8 |
+
|
9 |
+
$output = '';
|
10 |
+
|
11 |
+
// Sanity check, if the linkid attribute is empty we can't retrieve the link
|
12 |
+
if (!empty($linkid)) {
|
13 |
+
// Remove linkid, linktext and linkclass to get final link attributes
|
14 |
+
$linkAttributes = array_diff_assoc(
|
15 |
+
$atts,
|
16 |
+
array(
|
17 |
+
'linkid' => (isset($linkid) ? $linkid : ''),
|
18 |
+
'linktext' => (isset($linktext) ? $linktext : ''),
|
19 |
+
'linkclass' => (isset($linkclass) ? $linkclass : '')
|
20 |
+
)
|
21 |
+
);
|
22 |
+
|
23 |
+
// Backwards compatibility for linkclass shortcode attribute, should add this to the "class" link attribute
|
24 |
+
if (isset($linkclass))
|
25 |
+
$linkAttributes['class'] = $linkAttributes['class'] . ' ' . (isset($linkclass) ? $linkclass : '');
|
26 |
+
|
27 |
+
// Retrieving via the link ID
|
28 |
+
if (is_numeric($linkid)) {
|
29 |
+
|
30 |
+
// Get the link and global options
|
31 |
+
$thirstyOptions = get_option('thirstyOptions');
|
32 |
+
$link = get_post($linkid);
|
33 |
+
// Check if the link is set
|
34 |
+
if (!isset($link))
|
35 |
+
return;
|
36 |
+
|
37 |
+
$linkData = unserialize(get_post_meta($link->ID, 'thirstyData', true));
|
38 |
+
|
39 |
+
// Check if the link data is set
|
40 |
+
if (!isset($linkData))
|
41 |
+
return;
|
42 |
+
|
43 |
+
// Get the link URL
|
44 |
+
$linkAttributes['href'] = get_post_permalink($linkid);
|
45 |
+
|
46 |
+
// If the link text is empty, use the link name instead
|
47 |
+
if (empty($linktext)) {
|
48 |
+
$linktext = $link->post_title;
|
49 |
+
}
|
50 |
+
|
51 |
+
// Check for no follow defaults if not specified in the shortcode attributes
|
52 |
+
if (empty($linkAttributes['rel'])) {
|
53 |
+
$linkAttributes['rel'] = (!empty($thirstyOptions['nofollow']) ? 'nofollow' : '');
|
54 |
+
|
55 |
+
// Set the link's nofollow if global setting is not set
|
56 |
+
if (empty($linkAttributes['rel']))
|
57 |
+
$linkAttributes['rel'] = (isset($linkData['nofollow']) && $linkData['nofollow'] == 'on' ? 'nofollow' : '');
|
58 |
+
}
|
59 |
+
|
60 |
+
// Check for no follow defaults if not specified in the shortcode attributes
|
61 |
+
if (empty($linkAttributes['target'])) {
|
62 |
+
$linkAttributes['target'] = (!empty($thirstyOptions['newwindow']) ? '_blank' : '');
|
63 |
+
|
64 |
+
// Set the link's target value if global setting is not set
|
65 |
+
if (empty($linkAttributes['target']))
|
66 |
+
$linkAttributes['target'] = (isset($linkData['newwindow']) && $linkData['newwindow'] == 'on' ? '_blank' : '');
|
67 |
+
}
|
68 |
+
|
69 |
+
// Provide a default value for link class when attribute is not given in shortcode
|
70 |
+
if (empty($linkAttributes['class'])) {
|
71 |
+
$linkAttributes['class'] = 'thirstylink';
|
72 |
+
}
|
73 |
+
|
74 |
+
// Disable class output if global option set
|
75 |
+
if (!empty($thirstyOptions['disablethirstylinkclass']))
|
76 |
+
unset($linkAttributes['class']);
|
77 |
+
|
78 |
+
// Provide a default value for the title attribute when attribute is not given in shortcode
|
79 |
+
if (empty($linkAttributes['title'])) {
|
80 |
+
$linkAttributes['title'] = $link->post_title;
|
81 |
+
}
|
82 |
+
|
83 |
+
// Disable title attribute if global option set
|
84 |
+
if (!empty($thirstyOptions['disabletitleattribute']))
|
85 |
+
unset($linkAttributes['title']);
|
86 |
+
|
87 |
+
// Build the link ready for output
|
88 |
+
$output .= '<a';
|
89 |
+
|
90 |
+
foreach ($linkAttributes as $name => $value) {
|
91 |
+
// Handle square bracket escaping (used for some addons, eg. Google Analytics click tracking)
|
92 |
+
$value = html_entity_decode($value);
|
93 |
+
$value = preg_replace('/[/', '[', $value);
|
94 |
+
$value = preg_replace('/]/', ']', $value);
|
95 |
+
$output .= (!empty($value) ? ' ' . $name . '="' . $value . '"' : '');
|
96 |
+
}
|
97 |
+
|
98 |
+
$output .= '>' . $linktext . '</a>';
|
99 |
+
|
100 |
+
} else {
|
101 |
+
$output .= '<span style="color: #0000ff;">'.__('SHORTCODE ERROR: ThirstyAffiliates did not detect a valid link id, please check your short code!').'</span>';
|
102 |
+
}
|
103 |
+
|
104 |
+
}
|
105 |
+
|
106 |
+
return $output;
|
107 |
+
}
|
108 |
+
|
109 |
+
// Add a shortcode for thirsty affiliate links
|
110 |
+
add_shortcode('thirstylink', 'thirstyLinkByShortcode', 1);
|
111 |
+
?>
|
css/thirstystyle.css
ADDED
@@ -0,0 +1,276 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*******************************************************************************
|
2 |
+
** File: thirstystyle.css
|
3 |
+
** Description: Admin styles for ThirstyAffiliates plugin
|
4 |
+
*******************************************************************************/
|
5 |
+
|
6 |
+
.infolabel {
|
7 |
+
padding-bottom: 5px;
|
8 |
+
}
|
9 |
+
|
10 |
+
#thirsty_linkname, #thirsty_linkurl, #thirsty_linkslug, .infotext, #thirsty_cloakedurl {
|
11 |
+
height: 31px;
|
12 |
+
font-size: 14px;
|
13 |
+
border: 1px solid #DFDFDF;
|
14 |
+
width: 100%;
|
15 |
+
margin: 0;
|
16 |
+
padding: 5px;
|
17 |
+
}
|
18 |
+
|
19 |
+
.infotext {
|
20 |
+
height: 16px;
|
21 |
+
}
|
22 |
+
|
23 |
+
#thirsty_linkslug, #thirstySaveSlug {
|
24 |
+
display: none;
|
25 |
+
}
|
26 |
+
|
27 |
+
|
28 |
+
#thirstyEditSlug, #thirstyVisitLink {
|
29 |
+
display: inline-block;
|
30 |
+
margin-top: 5px;
|
31 |
+
}
|
32 |
+
|
33 |
+
#thirstySaveSlug {
|
34 |
+
margin-top: 5px;
|
35 |
+
}
|
36 |
+
|
37 |
+
#thirstyEditSlug:hover, #thirstyVisitLink:hover {
|
38 |
+
border: 1px solid #666666;
|
39 |
+
}
|
40 |
+
|
41 |
+
.thirstySaveMe {
|
42 |
+
display: none;
|
43 |
+
color: #0000ff;
|
44 |
+
}
|
45 |
+
|
46 |
+
#thirstylink-main-meta div.inside {
|
47 |
+
background: #ffffff;
|
48 |
+
margin: 0;
|
49 |
+
padding: 0 0 30px 0;
|
50 |
+
}
|
51 |
+
|
52 |
+
#thirsty_upload_insert_img {
|
53 |
+
font-size: 12px;
|
54 |
+
font-family: Arial, sans serif;
|
55 |
+
}
|
56 |
+
|
57 |
+
.thirsty_description {
|
58 |
+
color: #909090;
|
59 |
+
padding-left: 2px;
|
60 |
+
font-style: italic;
|
61 |
+
font-size: 10px !important;
|
62 |
+
}
|
63 |
+
|
64 |
+
#thirsty_logo {
|
65 |
+
margin: 25px 0 15px 30px;
|
66 |
+
float: left;
|
67 |
+
width: 100%;
|
68 |
+
}
|
69 |
+
|
70 |
+
#thirsty_add_images {
|
71 |
+
cursor: pointer;
|
72 |
+
vertical-align: middle;
|
73 |
+
}
|
74 |
+
|
75 |
+
#thirsty_upload_insert_img {
|
76 |
+
margin-top: 15px;
|
77 |
+
}
|
78 |
+
|
79 |
+
#thirsty_image_holder {
|
80 |
+
background: white;
|
81 |
+
overflow: hidden;
|
82 |
+
padding: 0px 0px 20px 0px;
|
83 |
+
margin: 0;
|
84 |
+
border: 1px solid #DFDFDF;
|
85 |
+
text-align: center;
|
86 |
+
}
|
87 |
+
|
88 |
+
.thirstyImg img {
|
89 |
+
}
|
90 |
+
|
91 |
+
#thirsty_cloakedurl {
|
92 |
+
display: inline;
|
93 |
+
}
|
94 |
+
|
95 |
+
#publish {
|
96 |
+
margin-top: 8px;
|
97 |
+
margin-bottom: 5px;
|
98 |
+
}
|
99 |
+
|
100 |
+
.submitdelete {
|
101 |
+
color: #ff0000;
|
102 |
+
font-weight: normal;
|
103 |
+
text-decoration: underline;
|
104 |
+
}
|
105 |
+
|
106 |
+
.thirstyImgHolder {
|
107 |
+
border: 1px solid #eee;
|
108 |
+
border-radius: 5px;
|
109 |
+
-webkit-border-radius: 5px;
|
110 |
+
-moz-border-radius: 5px;
|
111 |
+
padding: 5px;
|
112 |
+
margin-left: 20px;
|
113 |
+
margin-top: 20px;
|
114 |
+
float: left;
|
115 |
+
}
|
116 |
+
|
117 |
+
.thirstyRemoveImg {
|
118 |
+
float: right;
|
119 |
+
background: transparent url('../images/deleteImg.png') no-repeat left top;
|
120 |
+
height: 17px;
|
121 |
+
width: 17px;
|
122 |
+
margin-top: -14px;
|
123 |
+
margin-right: -24px;
|
124 |
+
padding: 5px;
|
125 |
+
cursor: pointer;
|
126 |
+
}
|
127 |
+
|
128 |
+
#thirstyaddonscontainer {
|
129 |
+
margin-top: 20px;
|
130 |
+
}
|
131 |
+
|
132 |
+
.thirstyaddon {
|
133 |
+
display: inline-block;
|
134 |
+
margin: 0 1% 1% 0;
|
135 |
+
position: relative;
|
136 |
+
width: 28.5%;
|
137 |
+
padding: 0 20px 20px 20px;
|
138 |
+
vertical-align: top;
|
139 |
+
border: 1px solid #CCC;
|
140 |
+
border-radius: 5px;
|
141 |
+
-webkit-border-radius: 5px;
|
142 |
+
-moz-border-radius: 5px;
|
143 |
+
background: #ffffff;
|
144 |
+
}
|
145 |
+
|
146 |
+
.thirstyaddonlinkpage {
|
147 |
+
margin: 0 1% 1% 0;
|
148 |
+
position: relative;
|
149 |
+
width: auto;
|
150 |
+
padding: 0 10px 10px 10px;
|
151 |
+
vertical-align: top;
|
152 |
+
border: 1px solid #CCC;
|
153 |
+
border-radius: 5px;
|
154 |
+
-webkit-border-radius: 5px;
|
155 |
+
-moz-border-radius: 5px;
|
156 |
+
background: #ffffff;
|
157 |
+
}
|
158 |
+
|
159 |
+
.thirstyaddon:nth-child(3n) {
|
160 |
+
margin-right: 0;
|
161 |
+
}
|
162 |
+
|
163 |
+
.thirstyaddon h3, .thirstyaddonlinkpage h3 {
|
164 |
+
font-size: 12pt;
|
165 |
+
margin-top: 0px;
|
166 |
+
margin-left: -20px;
|
167 |
+
margin-right: -20px;
|
168 |
+
background: #EEE;
|
169 |
+
padding: 1em;
|
170 |
+
border-bottom: 1px solid #CCC;
|
171 |
+
border-top-left-radius: 5px;
|
172 |
+
border-top-right-radius: 5px;
|
173 |
+
}
|
174 |
+
|
175 |
+
.thirstyaddonlinkpage h3 {
|
176 |
+
margin-top: 0px !important;
|
177 |
+
margin-left: -10px !important;
|
178 |
+
margin-right: -10px !important;
|
179 |
+
margin-bottom: 10px !important;
|
180 |
+
}
|
181 |
+
|
182 |
+
.thirstyaddondescription {
|
183 |
+
margin-bottom: 15px;
|
184 |
+
}
|
185 |
+
|
186 |
+
#thirstyCustomLinkPrefix {
|
187 |
+
display: none;
|
188 |
+
width: 130px;
|
189 |
+
}
|
190 |
+
|
191 |
+
#thirstySettingsForm {
|
192 |
+
padding: 2%;
|
193 |
+
background: #ffffff;
|
194 |
+
margin-top: 1em;
|
195 |
+
margin-bottom: 1em;
|
196 |
+
}
|
197 |
+
|
198 |
+
#thirstySettingsForm .description {
|
199 |
+
color: #808080;
|
200 |
+
}
|
201 |
+
|
202 |
+
#thirstySettingsForm td {
|
203 |
+
vertical-align: top;
|
204 |
+
}
|
205 |
+
|
206 |
+
#thirstyCustomLinkPrefix, #thirstyOptionsLinkPrefix {
|
207 |
+
width: 120px;
|
208 |
+
}
|
209 |
+
|
210 |
+
#thirstyCommunityLinks li {
|
211 |
+
height: 28px;
|
212 |
+
}
|
213 |
+
|
214 |
+
.thirstyWhiteBox {
|
215 |
+
padding: 2%;
|
216 |
+
background: #ffffff;
|
217 |
+
margin-bottom: 1em;
|
218 |
+
}
|
219 |
+
|
220 |
+
@media handheld, only screen and (max-width: 959px) {
|
221 |
+
.thirstyaddon {
|
222 |
+
width: 45.5%;
|
223 |
+
}
|
224 |
+
|
225 |
+
.thirstyaddon:nth-child(3n) {
|
226 |
+
margin-right: 1%;
|
227 |
+
}
|
228 |
+
|
229 |
+
.thirstyaddon:nth-child(2n) {
|
230 |
+
margin-right: 0;
|
231 |
+
}
|
232 |
+
}
|
233 |
+
|
234 |
+
@media handheld, only screen and (max-width: 599px) {
|
235 |
+
.thirstyaddon {
|
236 |
+
width: 97%;
|
237 |
+
}
|
238 |
+
|
239 |
+
.thirstyaddon:nth-child(3n) {
|
240 |
+
margin-right: 1%;
|
241 |
+
}
|
242 |
+
|
243 |
+
.thirstyaddon:nth-child(2n) {
|
244 |
+
margin-right: 1%;
|
245 |
+
}
|
246 |
+
}
|
247 |
+
|
248 |
+
|
249 |
+
/*
|
250 |
+
Export/Import Settings Styling
|
251 |
+
*/
|
252 |
+
#export_import_controls_container textarea {
|
253 |
+
margin-top: 20px;
|
254 |
+
display: none;
|
255 |
+
}
|
256 |
+
|
257 |
+
#import_global_settings_action {
|
258 |
+
display: none;
|
259 |
+
margin-top: 20px;
|
260 |
+
}
|
261 |
+
|
262 |
+
/*
|
263 |
+
*/
|
264 |
+
}
|
265 |
+
float: none;
|
266 |
+
padding: 10px 15px;
|
267 |
+
word-break: break-word;
|
268 |
+
}
|
269 |
+
body.post-type-thirstylink #TB_secondLine {
|
270 |
+
display: block;
|
271 |
+
margin-top: 10px;
|
272 |
+
font-size: 12px;
|
273 |
+
}
|
274 |
+
body.post-type-thirstylink #TB_window img#TB_Image {
|
275 |
+
margin: 15px auto 0;
|
276 |
+
}
|
images/deleteImg.png
ADDED
Binary file
|
images/detailsbg.jpg
ADDED
Binary file
|
images/icon-aff.png
ADDED
Binary file
|
images/icon-images-disabled.png
ADDED
Binary file
|
images/icon-images.png
ADDED
Binary file
|
images/icon-link.png
ADDED
Binary file
|
images/icon-shortcode.png
ADDED
Binary file
|
images/license
ADDED
@@ -0,0 +1,18 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
icon-images.png, icon-shortcode.png and icon-link.png are all licensed under GPL,
|
2 |
+
they are free software: you can redistribute it and/or modify
|
3 |
+
it under the terms of the GNU General Public License as published by
|
4 |
+
the Free Software Foundation, either version 3 of the License, or
|
5 |
+
(at your option) any later version.
|
6 |
+
|
7 |
+
These images are distributed in the hope that it will be useful,
|
8 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
9 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
10 |
+
GNU General Public License for more details.
|
11 |
+
|
12 |
+
You should have received a copy of the GNU General Public License
|
13 |
+
along with Foobar. If not, see <http://www.gnu.org/licenses/>.
|
14 |
+
|
15 |
+
Images were obtained from the oxygen icon set and WooCons #1 icon set, both
|
16 |
+
licensed under GPL, see below links for more info:
|
17 |
+
http://www.oxygen-icons.org/
|
18 |
+
http://www.woothemes.com/2010/08/woocons1/
|
images/lightgreytransparent.png
ADDED
Binary file
|
images/lightgreytransparentalt.png
ADDED
Binary file
|
images/linkpickerlogo.png
ADDED
Binary file
|
images/media-button.png
ADDED
Binary file
|
images/search-load-more.png
ADDED
Binary file
|
images/thirsty-loader.gif
ADDED
Binary file
|
images/thirstylogo.png
ADDED
Binary file
|
images/white-grad.png
ADDED
Binary file
|
js/ThirstyLinkPicker.js
ADDED
@@ -0,0 +1,168 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var search_offset = 0;
|
2 |
+
|
3 |
+
function thirstyPerformSearch(searchQueryText) {
|
4 |
+
var catsQueryIDs = '';
|
5 |
+
|
6 |
+
if (searchQueryText && searchQueryText.length > 0) {
|
7 |
+
jQuery('#show_more').fadeOut(200);
|
8 |
+
} else {
|
9 |
+
jQuery('#show_more').delay(500).fadeIn(400);
|
10 |
+
search_offset = 0;
|
11 |
+
}
|
12 |
+
|
13 |
+
jQuery.post(
|
14 |
+
thirstyAjaxLink,
|
15 |
+
{
|
16 |
+
action: 'thirstyLinkPickerSearch',
|
17 |
+
search_query: searchQueryText
|
18 |
+
},
|
19 |
+
replaceSearchResults
|
20 |
+
);
|
21 |
+
}
|
22 |
+
|
23 |
+
function showImages() {
|
24 |
+
jQuery(this).next('.img_choices').slideDown();
|
25 |
+
jQuery(this).unbind();
|
26 |
+
jQuery(this).click(hideImages);
|
27 |
+
jQuery(this).html('Insert Image «');
|
28 |
+
}
|
29 |
+
|
30 |
+
function hideImages() {
|
31 |
+
jQuery(this).next('.img_choices').slideUp();
|
32 |
+
jQuery(this).unbind();
|
33 |
+
jQuery(this).click(showImages);
|
34 |
+
jQuery(this).html('Insert Image »');
|
35 |
+
}
|
36 |
+
|
37 |
+
thirstyPerformSearch();
|
38 |
+
|
39 |
+
jQuery('input#search_input').keyup(function() {
|
40 |
+
thirstyPerformSearch(jQuery(this).val());
|
41 |
+
});
|
42 |
+
|
43 |
+
jQuery(document).ready(function() {
|
44 |
+
jQuery('input#search_input').focus();
|
45 |
+
|
46 |
+
jQuery('#show_more').click(function() {
|
47 |
+
search_offset = search_offset + 10;
|
48 |
+
jQuery('#show_more_loader').show();
|
49 |
+
jQuery.post(
|
50 |
+
thirstyAjaxLink,
|
51 |
+
{
|
52 |
+
action: 'thirstyLinkPickerSearch',
|
53 |
+
search_offset: search_offset
|
54 |
+
},
|
55 |
+
appendSearchResults
|
56 |
+
);
|
57 |
+
});
|
58 |
+
});
|
59 |
+
|
60 |
+
function appendSearchResults(html) { jQuery('#show_more_loader').hide(); printSearchResults(html, false); }
|
61 |
+
function replaceSearchResults(html) { printSearchResults(html, true); }
|
62 |
+
|
63 |
+
function printSearchResults(html, replace) {
|
64 |
+
if (replace == true)
|
65 |
+
jQuery('#picker_content').html(html);
|
66 |
+
else
|
67 |
+
jQuery('#picker_content').append(html);
|
68 |
+
|
69 |
+
jQuery('.insert_shortcode_link').unbind();
|
70 |
+
jQuery('.insert_link').unbind();
|
71 |
+
|
72 |
+
jQuery('.insert_link').click(function() {
|
73 |
+
|
74 |
+
var linkID = jQuery(this).attr('linkID');
|
75 |
+
var copiedText = thirstyGetCopiedText();
|
76 |
+
|
77 |
+
// Check if there are anything selected on the editor
|
78 |
+
// If none, use the linkname
|
79 |
+
if((copiedText == "") || (jQuery.trim(copiedText) == "")){
|
80 |
+
|
81 |
+
// Select the image control with appropriate linkid
|
82 |
+
// Go up to the closest table row
|
83 |
+
// Go down to that particular row's span with a class of linkname
|
84 |
+
// Get the text
|
85 |
+
var linkname = jQuery("img[linkid='"+linkID+"']").closest("tr").find(".linkname").text();
|
86 |
+
copiedText = linkname;
|
87 |
+
}
|
88 |
+
|
89 |
+
// Make ajax call to get the link code
|
90 |
+
jQuery.post(
|
91 |
+
thirstyAjaxLink,
|
92 |
+
{
|
93 |
+
action: 'thirstyGetLinkCode',
|
94 |
+
linkType: 'link',
|
95 |
+
linkID: linkID,
|
96 |
+
copiedText: copiedText
|
97 |
+
},
|
98 |
+
function(linkCode) {
|
99 |
+
parent.thirstyInsertLink(linkCode);
|
100 |
+
parent.thirstyDismissLinkPicker();
|
101 |
+
}
|
102 |
+
);
|
103 |
+
|
104 |
+
});
|
105 |
+
|
106 |
+
jQuery('.insert_shortcode_link').click(function() {
|
107 |
+
var linkID = jQuery(this).attr('linkID');
|
108 |
+
var copiedText = thirstyGetCopiedText();
|
109 |
+
|
110 |
+
// Make ajax call to get the link code
|
111 |
+
jQuery.post(
|
112 |
+
thirstyAjaxLink,
|
113 |
+
{
|
114 |
+
action: 'thirstyGetLinkCode',
|
115 |
+
linkType: 'shortcode',
|
116 |
+
linkID: linkID,
|
117 |
+
copiedText: copiedText
|
118 |
+
},
|
119 |
+
function(linkCode) {
|
120 |
+
parent.thirstyInsertLink(linkCode);
|
121 |
+
parent.thirstyDismissLinkPicker();
|
122 |
+
}
|
123 |
+
);
|
124 |
+
});
|
125 |
+
|
126 |
+
jQuery('.thirstyImg').click(function() {
|
127 |
+
var linkID = jQuery(this).attr('linkID');
|
128 |
+
var imageID = jQuery(this).attr('imageID');
|
129 |
+
var copiedText = thirstyGetCopiedText();
|
130 |
+
|
131 |
+
// Make ajax call to get the link code
|
132 |
+
jQuery.post(
|
133 |
+
thirstyAjaxLink,
|
134 |
+
{
|
135 |
+
action: 'thirstyGetLinkCode',
|
136 |
+
linkType: 'image',
|
137 |
+
linkID: linkID,
|
138 |
+
copiedText: copiedText,
|
139 |
+
imageID: imageID
|
140 |
+
},
|
141 |
+
function(linkCode) {
|
142 |
+
parent.thirstyInsertLink(linkCode);
|
143 |
+
parent.thirstyDismissLinkPicker();
|
144 |
+
}
|
145 |
+
);
|
146 |
+
|
147 |
+
});
|
148 |
+
|
149 |
+
jQuery('.insert_img_link').click(showImages);
|
150 |
+
}
|
151 |
+
|
152 |
+
function thirstyGetCopiedText() {
|
153 |
+
var copiedText = '';
|
154 |
+
|
155 |
+
var richEditorActive = false;
|
156 |
+
if (parent.thirstyMCE != null && !parent.thirstyMCE.isHidden()) {
|
157 |
+
richEditorActive = true;
|
158 |
+
}
|
159 |
+
|
160 |
+
if (!richEditorActive) {
|
161 |
+
var selectedText = parent.thirstyGetHTMLEditorSelection();
|
162 |
+
copiedText = selectedText.text;
|
163 |
+
} else {
|
164 |
+
copiedText = parent.thirstyMCE.selection.getContent();
|
165 |
+
}
|
166 |
+
|
167 |
+
return copiedText;
|
168 |
+
}
|
js/ThirstyQuickAddLinkPicker.js
ADDED
@@ -0,0 +1,263 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready(function($) {
|
2 |
+
|
3 |
+
/*========================================
|
4 |
+
= Global Variables =
|
5 |
+
========================================*/
|
6 |
+
var quick_add_link_container = $("#quick-add-link-container"),
|
7 |
+
allClear = true,
|
8 |
+
errList = {};
|
9 |
+
|
10 |
+
|
11 |
+
/*=========================================
|
12 |
+
= Utility Functions =
|
13 |
+
=========================================*/
|
14 |
+
|
15 |
+
// Initialize form
|
16 |
+
function initializeForm(){
|
17 |
+
|
18 |
+
// Clear all error related stuff
|
19 |
+
quick_add_link_container
|
20 |
+
.find("input[type='text']")
|
21 |
+
.removeClass('err')
|
22 |
+
.siblings('.errmsg')
|
23 |
+
.css("display","none")
|
24 |
+
.text('')
|
25 |
+
.closest("#quick-add-link-container")
|
26 |
+
.find("#error-bulletin")
|
27 |
+
.css("display","none")
|
28 |
+
.text('');
|
29 |
+
|
30 |
+
// Re initialize checkpoint flag
|
31 |
+
allClear = true;
|
32 |
+
|
33 |
+
// Re initialize error list object
|
34 |
+
errList = {};
|
35 |
+
}
|
36 |
+
|
37 |
+
// Validate Link Name
|
38 |
+
function validateLinkName(linkname) {
|
39 |
+
if(linkname == ""){
|
40 |
+
allClear = false;
|
41 |
+
errList["#qal_link_name"] = "Required Field, Can't be empty";
|
42 |
+
}
|
43 |
+
}
|
44 |
+
|
45 |
+
// Validate Destination URL
|
46 |
+
function validateDestinationURL(linkurl){
|
47 |
+
if(linkurl == ""){
|
48 |
+
allClear = false;
|
49 |
+
errList["#qal_destination_url"] = "Required Field, Can't be empty";
|
50 |
+
}else{
|
51 |
+
var urlRegex = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
|
52 |
+
if(!urlRegex.test(linkurl)){
|
53 |
+
allClear = false;
|
54 |
+
errList["#qal_destination_url"] = "Invalid URL Supplied";
|
55 |
+
}
|
56 |
+
}
|
57 |
+
}
|
58 |
+
|
59 |
+
// Prompt Error Message
|
60 |
+
function promptErrorMessage(){
|
61 |
+
$.each(errList, function( id, errmsg ) {
|
62 |
+
quick_add_link_container
|
63 |
+
.find(id)
|
64 |
+
.addClass('err')
|
65 |
+
.siblings('.errmsg')
|
66 |
+
.css("display","block")
|
67 |
+
.text(errmsg);
|
68 |
+
});
|
69 |
+
}
|
70 |
+
|
71 |
+
|
72 |
+
/*=======================================================================
|
73 |
+
= Add New Affiliate Link and Insert to Post Editor =
|
74 |
+
=======================================================================*/
|
75 |
+
$('#quick-add-link').click(function() {
|
76 |
+
|
77 |
+
/*========== Init ==========*/
|
78 |
+
initializeForm();
|
79 |
+
|
80 |
+
/*========== Data Sanitation ==========*/
|
81 |
+
// Note: JS Validation should not be relied on
|
82 |
+
// Just for user convenience purposes
|
83 |
+
var linkname = $.trim(quick_add_link_container.find("#qal_link_name").val()),
|
84 |
+
nonce = quick_add_link_container.find("#quick_add_aff_link_nonce").val(),
|
85 |
+
linkurl = $.trim(quick_add_link_container.find("#qal_destination_url").val()),
|
86 |
+
nofollow = $.trim(quick_add_link_container.find("#qal_no_follow_link:checked").val()),
|
87 |
+
newwindow = $.trim(quick_add_link_container.find("#qal_new_window:checked").val()),
|
88 |
+
linkredirecttype = $.trim(quick_add_link_container.find("input[name='qal_redirect_type']:checked").val()),
|
89 |
+
linkCategory = $.trim(quick_add_link_container.find("#qal_link_categories").val());
|
90 |
+
|
91 |
+
// Link Name
|
92 |
+
validateLinkName(linkname);
|
93 |
+
|
94 |
+
// Link URL
|
95 |
+
validateDestinationURL(linkurl);
|
96 |
+
|
97 |
+
// Checkpoint
|
98 |
+
if(allClear){
|
99 |
+
|
100 |
+
/*========== Ajax Call ==========*/
|
101 |
+
// TODO: Refactor this ajax call to another function
|
102 |
+
$.post(
|
103 |
+
thirstyAjaxLink,
|
104 |
+
{
|
105 |
+
action : 'quickCreateAffiliateLink',
|
106 |
+
nonce : nonce,
|
107 |
+
linkname : linkname,
|
108 |
+
linkurl : linkurl,
|
109 |
+
nofollow : nofollow,
|
110 |
+
newwindow : newwindow,
|
111 |
+
linkredirecttype : linkredirecttype,
|
112 |
+
linkCategory : linkCategory
|
113 |
+
},
|
114 |
+
function(data){
|
115 |
+
|
116 |
+
if(!isNaN(data)){
|
117 |
+
|
118 |
+
// Success
|
119 |
+
var linkID = data;
|
120 |
+
var copiedText = thirstyGetCopiedText();
|
121 |
+
|
122 |
+
// Check if there are anything selected on the editor
|
123 |
+
// If none, use the linkname
|
124 |
+
if((copiedText == "") || ($.trim(copiedText) == "")){
|
125 |
+
copiedText = linkname;
|
126 |
+
}
|
127 |
+
|
128 |
+
// Make ajax call to get the link code
|
129 |
+
jQuery.post(
|
130 |
+
thirstyAjaxLink,
|
131 |
+
{
|
132 |
+
action: 'thirstyGetLinkCode',
|
133 |
+
linkType: 'link',
|
134 |
+
linkID: linkID,
|
135 |
+
copiedText: copiedText
|
136 |
+
},
|
137 |
+
function(linkCode) {
|
138 |
+
parent.thirstyInsertLink(linkCode);
|
139 |
+
parent.thirstyDismissLinkPicker();
|
140 |
+
}
|
141 |
+
);
|
142 |
+
|
143 |
+
}else{
|
144 |
+
|
145 |
+
// Failure
|
146 |
+
quick_add_link_container
|
147 |
+
.find("#error-bulletin")
|
148 |
+
.text(data)
|
149 |
+
.css("display","block");
|
150 |
+
|
151 |
+
}
|
152 |
+
|
153 |
+
}
|
154 |
+
);
|
155 |
+
|
156 |
+
}else{
|
157 |
+
|
158 |
+
// Prompt Message
|
159 |
+
promptErrorMessage();
|
160 |
+
|
161 |
+
}
|
162 |
+
|
163 |
+
// Prevent evernt bubbling
|
164 |
+
return false;
|
165 |
+
|
166 |
+
});//$('#quick-add-link').click
|
167 |
+
|
168 |
+
|
169 |
+
/*==============================================
|
170 |
+
= Add New Affiliate Link =
|
171 |
+
==============================================*/
|
172 |
+
$("#add-link").click(function(){
|
173 |
+
|
174 |
+
/*========== Init ==========*/
|
175 |
+
initializeForm();
|
176 |
+
|
177 |
+
/*========== Data Sanitation ==========*/
|
178 |
+
// Note: JS Validation should not be relied on
|
179 |
+
// Just for user convenience purposes
|
180 |
+
var linkname = $.trim(quick_add_link_container.find("#qal_link_name").val()),
|
181 |
+
nonce = quick_add_link_container.find("#quick_add_aff_link_nonce").val(),
|
182 |
+
linkurl = $.trim(quick_add_link_container.find("#qal_destination_url").val()),
|
183 |
+
nofollow = $.trim(quick_add_link_container.find("#qal_no_follow_link:checked").val()),
|
184 |
+
newwindow = $.trim(quick_add_link_container.find("#qal_new_window:checked").val()),
|
185 |
+
linkredirecttype = $.trim(quick_add_link_container.find("input[name='qal_redirect_type']:checked").val()),
|
186 |
+
linkCategory = $.trim(quick_add_link_container.find("#qal_link_categories").val());
|
187 |
+
|
188 |
+
// Link Name
|
189 |
+
validateLinkName(linkname);
|
190 |
+
|
191 |
+
// Link URL
|
192 |
+
validateDestinationURL(linkurl);
|
193 |
+
|
194 |
+
// Checkpoint
|
195 |
+
if(allClear){
|
196 |
+
|
197 |
+
/*========== Ajax Call ==========*/
|
198 |
+
// TODO: Refactor this ajax call to another function
|
199 |
+
$.post(
|
200 |
+
thirstyAjaxLink,
|
201 |
+
{
|
202 |
+
action : 'quickCreateAffiliateLink',
|
203 |
+
nonce : nonce,
|
204 |
+
linkname : linkname,
|
205 |
+
linkurl : linkurl,
|
206 |
+
nofollow : nofollow,
|
207 |
+
newwindow : newwindow,
|
208 |
+
linkredirecttype : linkredirecttype,
|
209 |
+
linkCategory : linkCategory
|
210 |
+
},
|
211 |
+
function(data){
|
212 |
+
|
213 |
+
if(!isNaN(data)){
|
214 |
+
|
215 |
+
// Success
|
216 |
+
parent.thirstyDismissLinkPicker();
|
217 |
+
|
218 |
+
}else{
|
219 |
+
|
220 |
+
// Failure
|
221 |
+
quick_add_link_container
|
222 |
+
.find("#error-bulletin")
|
223 |
+
.text(data)
|
224 |
+
.css("display","block");
|
225 |
+
|
226 |
+
}
|
227 |
+
|
228 |
+
}
|
229 |
+
);
|
230 |
+
|
231 |
+
}else{
|
232 |
+
|
233 |
+
// Prompt Message
|
234 |
+
promptErrorMessage();
|
235 |
+
|
236 |
+
}
|
237 |
+
|
238 |
+
// Prevent evernt bubbling
|
239 |
+
return false;
|
240 |
+
|
241 |
+
});//$('#quick-add-link').click
|
242 |
+
|
243 |
+
});//document ready
|
244 |
+
|
245 |
+
|
246 |
+
|
247 |
+
// TODO: Suggest to move this function from ThirstyLinkPicker.js To thistyPickerHelper.js
|
248 |
+
function thirstyGetCopiedText() {
|
249 |
+
var copiedText = '';
|
250 |
+
|
251 |
+
var richEditorActive = false;
|
252 |
+
if (parent.thirstyMCE != null && !parent.thirstyMCE.isHidden()) {
|
253 |
+
richEditorActive = true;
|
254 |
+
}
|
255 |
+
if (!richEditorActive) {
|
256 |
+
var selectedText = parent.thirstyGetHTMLEditorSelection();
|
257 |
+
copiedText = selectedText.text;
|
258 |
+
} else {
|
259 |
+
copiedText = parent.thirstyMCE.selection.getContent();
|
260 |
+
}
|
261 |
+
|
262 |
+
return copiedText;
|
263 |
+
}
|
js/lib/chosen/chosen-sprite.png
ADDED
Binary file
|
js/lib/chosen/chosen-sprite@2x.png
ADDED
Binary file
|
js/lib/chosen/chosen.jquery.min.js
ADDED
@@ -0,0 +1,2 @@
|
|
|
|
|
1 |
+
/* Chosen v1.3.0 | (c) 2011-2014 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */
|
2 |
+
!function(){var a,AbstractChosen,Chosen,SelectParser,b,c={}.hasOwnProperty,d=function(a,b){function d(){this.constructor=a}for(var e in b)c.call(b,e)&&(a[e]=b[e]);return d.prototype=b.prototype,a.prototype=new d,a.__super__=b.prototype,a};SelectParser=function(){function SelectParser(){this.options_index=0,this.parsed=[]}return SelectParser.prototype.add_node=function(a){return"OPTGROUP"===a.nodeName.toUpperCase()?this.add_group(a):this.add_option(a)},SelectParser.prototype.add_group=function(a){var b,c,d,e,f,g;for(b=this.parsed.length,this.parsed.push({array_index:b,group:!0,label:this.escapeExpression(a.label),children:0,disabled:a.disabled,classes:a.className}),f=a.childNodes,g=[],d=0,e=f.length;e>d;d++)c=f[d],g.push(this.add_option(c,b,a.disabled));return g},SelectParser.prototype.add_option=function(a,b,c){return"OPTION"===a.nodeName.toUpperCase()?(""!==a.text?(null!=b&&(this.parsed[b].children+=1),this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,value:a.value,text:a.text,html:a.innerHTML,selected:a.selected,disabled:c===!0?c:a.disabled,group_array_index:b,classes:a.className,style:a.style.cssText})):this.parsed.push({array_index:this.parsed.length,options_index:this.options_index,empty:!0}),this.options_index+=1):void 0},SelectParser.prototype.escapeExpression=function(a){var b,c;return null==a||a===!1?"":/[\&\<\>\"\'\`]/.test(a)?(b={"<":"<",">":">",'"':""","'":"'","`":"`"},c=/&(?!\w+;)|[\<\>\"\'\`]/g,a.replace(c,function(a){return b[a]||"&"})):a},SelectParser}(),SelectParser.select_to_array=function(a){var b,c,d,e,f;for(c=new SelectParser,f=a.childNodes,d=0,e=f.length;e>d;d++)b=f[d],c.add_node(b);return c.parsed},AbstractChosen=function(){function AbstractChosen(a,b){this.form_field=a,this.options=null!=b?b:{},AbstractChosen.browser_is_supported()&&(this.is_multiple=this.form_field.multiple,this.set_default_text(),this.set_default_values(),this.setup(),this.set_up_html(),this.register_observers(),this.on_ready())}return AbstractChosen.prototype.set_default_values=function(){var a=this;return this.click_test_action=function(b){return a.test_active_click(b)},this.activate_action=function(b){return a.activate_field(b)},this.active_field=!1,this.mouse_on_container=!1,this.results_showing=!1,this.result_highlighted=null,this.allow_single_deselect=null!=this.options.allow_single_deselect&&null!=this.form_field.options[0]&&""===this.form_field.options[0].text?this.options.allow_single_deselect:!1,this.disable_search_threshold=this.options.disable_search_threshold||0,this.disable_search=this.options.disable_search||!1,this.enable_split_word_search=null!=this.options.enable_split_word_search?this.options.enable_split_word_search:!0,this.group_search=null!=this.options.group_search?this.options.group_search:!0,this.search_contains=this.options.search_contains||!1,this.single_backstroke_delete=null!=this.options.single_backstroke_delete?this.options.single_backstroke_delete:!0,this.max_selected_options=this.options.max_selected_options||1/0,this.inherit_select_classes=this.options.inherit_select_classes||!1,this.display_selected_options=null!=this.options.display_selected_options?this.options.display_selected_options:!0,this.display_disabled_options=null!=this.options.display_disabled_options?this.options.display_disabled_options:!0},AbstractChosen.prototype.set_default_text=function(){return this.default_text=this.form_field.getAttribute("data-placeholder")?this.form_field.getAttribute("data-placeholder"):this.is_multiple?this.options.placeholder_text_multiple||this.options.placeholder_text||AbstractChosen.default_multiple_text:this.options.placeholder_text_single||this.options.placeholder_text||AbstractChosen.default_single_text,this.results_none_found=this.form_field.getAttribute("data-no_results_text")||this.options.no_results_text||AbstractChosen.default_no_result_text},AbstractChosen.prototype.mouse_enter=function(){return this.mouse_on_container=!0},AbstractChosen.prototype.mouse_leave=function(){return this.mouse_on_container=!1},AbstractChosen.prototype.input_focus=function(){var a=this;if(this.is_multiple){if(!this.active_field)return setTimeout(function(){return a.container_mousedown()},50)}else if(!this.active_field)return this.activate_field()},AbstractChosen.prototype.input_blur=function(){var a=this;return this.mouse_on_container?void 0:(this.active_field=!1,setTimeout(function(){return a.blur_test()},100))},AbstractChosen.prototype.results_option_build=function(a){var b,c,d,e,f;for(b="",f=this.results_data,d=0,e=f.length;e>d;d++)c=f[d],b+=c.group?this.result_add_group(c):this.result_add_option(c),(null!=a?a.first:void 0)&&(c.selected&&this.is_multiple?this.choice_build(c):c.selected&&!this.is_multiple&&this.single_set_selected_text(c.text));return b},AbstractChosen.prototype.result_add_option=function(a){var b,c;return a.search_match?this.include_option_in_results(a)?(b=[],a.disabled||a.selected&&this.is_multiple||b.push("active-result"),!a.disabled||a.selected&&this.is_multiple||b.push("disabled-result"),a.selected&&b.push("result-selected"),null!=a.group_array_index&&b.push("group-option"),""!==a.classes&&b.push(a.classes),c=document.createElement("li"),c.className=b.join(" "),c.style.cssText=a.style,c.setAttribute("data-option-array-index",a.array_index),c.innerHTML=a.search_text,this.outerHTML(c)):"":""},AbstractChosen.prototype.result_add_group=function(a){var b,c;return a.search_match||a.group_match?a.active_options>0?(b=[],b.push("group-result"),a.classes&&b.push(a.classes),c=document.createElement("li"),c.className=b.join(" "),c.innerHTML=a.search_text,this.outerHTML(c)):"":""},AbstractChosen.prototype.results_update_field=function(){return this.set_default_text(),this.is_multiple||this.results_reset_cleanup(),this.result_clear_highlight(),this.results_build(),this.results_showing?this.winnow_results():void 0},AbstractChosen.prototype.reset_single_select_options=function(){var a,b,c,d,e;for(d=this.results_data,e=[],b=0,c=d.length;c>b;b++)a=d[b],a.selected?e.push(a.selected=!1):e.push(void 0);return e},AbstractChosen.prototype.results_toggle=function(){return this.results_showing?this.results_hide():this.results_show()},AbstractChosen.prototype.results_search=function(){return this.results_showing?this.winnow_results():this.results_show()},AbstractChosen.prototype.winnow_results=function(){var a,b,c,d,e,f,g,h,i,j,k,l;for(this.no_results_clear(),d=0,f=this.get_search_text(),a=f.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\amp;"),i=new RegExp(a,"i"),c=this.get_search_regex(a),l=this.results_data,j=0,k=l.length;k>j;j++)b=l[j],b.search_match=!1,e=null,this.include_option_in_results(b)&&(b.group&&(b.group_match=!1,b.active_options=0),null!=b.group_array_index&&this.results_data[b.group_array_index]&&(e=this.results_data[b.group_array_index],0===e.active_options&&e.search_match&&(d+=1),e.active_options+=1),(!b.group||this.group_search)&&(b.search_text=b.group?b.label:b.text,b.search_match=this.search_string_match(b.search_text,c),b.search_match&&!b.group&&(d+=1),b.search_match?(f.length&&(g=b.search_text.search(i),h=b.search_text.substr(0,g+f.length)+"</em>"+b.search_text.substr(g+f.length),b.search_text=h.substr(0,g)+"<em>"+h.substr(g)),null!=e&&(e.group_match=!0)):null!=b.group_array_index&&this.results_data[b.group_array_index].search_match&&(b.search_match=!0)));return this.result_clear_highlight(),1>d&&f.length?(this.update_results_content(""),this.no_results(f)):(this.update_results_content(this.results_option_build()),this.winnow_results_set_highlight())},AbstractChosen.prototype.get_search_regex=function(a){var b;return b=this.search_contains?"":"^",new RegExp(b+a,"i")},AbstractChosen.prototype.search_string_match=function(a,b){var c,d,e,f;if(b.test(a))return!0;if(this.enable_split_word_search&&(a.indexOf(" ")>=0||0===a.indexOf("["))&&(d=a.replace(/\[|\]/g,"").split(" "),d.length))for(e=0,f=d.length;f>e;e++)if(c=d[e],b.test(c))return!0},AbstractChosen.prototype.choices_count=function(){var a,b,c,d;if(null!=this.selected_option_count)return this.selected_option_count;for(this.selected_option_count=0,d=this.form_field.options,b=0,c=d.length;c>b;b++)a=d[b],a.selected&&(this.selected_option_count+=1);return this.selected_option_count},AbstractChosen.prototype.choices_click=function(a){return a.preventDefault(),this.results_showing||this.is_disabled?void 0:this.results_show()},AbstractChosen.prototype.keyup_checker=function(a){var b,c;switch(b=null!=(c=a.which)?c:a.keyCode,this.search_field_scale(),b){case 8:if(this.is_multiple&&this.backstroke_length<1&&this.choices_count()>0)return this.keydown_backstroke();if(!this.pending_backstroke)return this.result_clear_highlight(),this.results_search();break;case 13:if(a.preventDefault(),this.results_showing)return this.result_select(a);break;case 27:return this.results_showing&&this.results_hide(),!0;case 9:case 38:case 40:case 16:case 91:case 17:break;default:return this.results_search()}},AbstractChosen.prototype.clipboard_event_checker=function(){var a=this;return setTimeout(function(){return a.results_search()},50)},AbstractChosen.prototype.container_width=function(){return null!=this.options.width?this.options.width:""+this.form_field.offsetWidth+"px"},AbstractChosen.prototype.include_option_in_results=function(a){return this.is_multiple&&!this.display_selected_options&&a.selected?!1:!this.display_disabled_options&&a.disabled?!1:a.empty?!1:!0},AbstractChosen.prototype.search_results_touchstart=function(a){return this.touch_started=!0,this.search_results_mouseover(a)},AbstractChosen.prototype.search_results_touchmove=function(a){return this.touch_started=!1,this.search_results_mouseout(a)},AbstractChosen.prototype.search_results_touchend=function(a){return this.touch_started?this.search_results_mouseup(a):void 0},AbstractChosen.prototype.outerHTML=function(a){var b;return a.outerHTML?a.outerHTML:(b=document.createElement("div"),b.appendChild(a),b.innerHTML)},AbstractChosen.browser_is_supported=function(){return"Microsoft Internet Explorer"===window.navigator.appName?document.documentMode>=8:/iP(od|hone)/i.test(window.navigator.userAgent)?!1:/Android/i.test(window.navigator.userAgent)&&/Mobile/i.test(window.navigator.userAgent)?!1:!0},AbstractChosen.default_multiple_text="Select Some Options",AbstractChosen.default_single_text="Select an Option",AbstractChosen.default_no_result_text="No results match",AbstractChosen}(),a=jQuery,a.fn.extend({chosen:function(b){return AbstractChosen.browser_is_supported()?this.each(function(){var c,d;c=a(this),d=c.data("chosen"),"destroy"===b&&d instanceof Chosen?d.destroy():d instanceof Chosen||c.data("chosen",new Chosen(this,b))}):this}}),Chosen=function(c){function Chosen(){return b=Chosen.__super__.constructor.apply(this,arguments)}return d(Chosen,c),Chosen.prototype.setup=function(){return this.form_field_jq=a(this.form_field),this.current_selectedIndex=this.form_field.selectedIndex,this.is_rtl=this.form_field_jq.hasClass("chosen-rtl")},Chosen.prototype.set_up_html=function(){var b,c;return b=["chosen-container"],b.push("chosen-container-"+(this.is_multiple?"multi":"single")),this.inherit_select_classes&&this.form_field.className&&b.push(this.form_field.className),this.is_rtl&&b.push("chosen-rtl"),c={"class":b.join(" "),style:"width: "+this.container_width()+";",title:this.form_field.title},this.form_field.id.length&&(c.id=this.form_field.id.replace(/[^\w]/g,"_")+"_chosen"),this.container=a("<div />",c),this.is_multiple?this.container.html('<ul class="chosen-choices"><li class="search-field"><input type="text" value="'+this.default_text+'" class="default" autocomplete="off" style="width:25px;" /></li></ul><div class="chosen-drop"><ul class="chosen-results"></ul></div>'):this.container.html('<a class="chosen-single chosen-default" tabindex="-1"><span>'+this.default_text+'</span><div><b></b></div></a><div class="chosen-drop"><div class="chosen-search"><input type="text" autocomplete="off" /></div><ul class="chosen-results"></ul></div>'),this.form_field_jq.hide().after(this.container),this.dropdown=this.container.find("div.chosen-drop").first(),this.search_field=this.container.find("input").first(),this.search_results=this.container.find("ul.chosen-results").first(),this.search_field_scale(),this.search_no_results=this.container.find("li.no-results").first(),this.is_multiple?(this.search_choices=this.container.find("ul.chosen-choices").first(),this.search_container=this.container.find("li.search-field").first()):(this.search_container=this.container.find("div.chosen-search").first(),this.selected_item=this.container.find(".chosen-single").first()),this.results_build(),this.set_tab_index(),this.set_label_behavior()},Chosen.prototype.on_ready=function(){return this.form_field_jq.trigger("chosen:ready",{chosen:this})},Chosen.prototype.register_observers=function(){var a=this;return this.container.bind("touchstart.chosen",function(b){a.container_mousedown(b)}),this.container.bind("touchend.chosen",function(b){a.container_mouseup(b)}),this.container.bind("mousedown.chosen",function(b){a.container_mousedown(b)}),this.container.bind("mouseup.chosen",function(b){a.container_mouseup(b)}),this.container.bind("mouseenter.chosen",function(b){a.mouse_enter(b)}),this.container.bind("mouseleave.chosen",function(b){a.mouse_leave(b)}),this.search_results.bind("mouseup.chosen",function(b){a.search_results_mouseup(b)}),this.search_results.bind("mouseover.chosen",function(b){a.search_results_mouseover(b)}),this.search_results.bind("mouseout.chosen",function(b){a.search_results_mouseout(b)}),this.search_results.bind("mousewheel.chosen DOMMouseScroll.chosen",function(b){a.search_results_mousewheel(b)}),this.search_results.bind("touchstart.chosen",function(b){a.search_results_touchstart(b)}),this.search_results.bind("touchmove.chosen",function(b){a.search_results_touchmove(b)}),this.search_results.bind("touchend.chosen",function(b){a.search_results_touchend(b)}),this.form_field_jq.bind("chosen:updated.chosen",function(b){a.results_update_field(b)}),this.form_field_jq.bind("chosen:activate.chosen",function(b){a.activate_field(b)}),this.form_field_jq.bind("chosen:open.chosen",function(b){a.container_mousedown(b)}),this.form_field_jq.bind("chosen:close.chosen",function(b){a.input_blur(b)}),this.search_field.bind("blur.chosen",function(b){a.input_blur(b)}),this.search_field.bind("keyup.chosen",function(b){a.keyup_checker(b)}),this.search_field.bind("keydown.chosen",function(b){a.keydown_checker(b)}),this.search_field.bind("focus.chosen",function(b){a.input_focus(b)}),this.search_field.bind("cut.chosen",function(b){a.clipboard_event_checker(b)}),this.search_field.bind("paste.chosen",function(b){a.clipboard_event_checker(b)}),this.is_multiple?this.search_choices.bind("click.chosen",function(b){a.choices_click(b)}):this.container.bind("click.chosen",function(a){a.preventDefault()})},Chosen.prototype.destroy=function(){return a(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action),this.search_field[0].tabIndex&&(this.form_field_jq[0].tabIndex=this.search_field[0].tabIndex),this.container.remove(),this.form_field_jq.removeData("chosen"),this.form_field_jq.show()},Chosen.prototype.search_field_disabled=function(){return this.is_disabled=this.form_field_jq[0].disabled,this.is_disabled?(this.container.addClass("chosen-disabled"),this.search_field[0].disabled=!0,this.is_multiple||this.selected_item.unbind("focus.chosen",this.activate_action),this.close_field()):(this.container.removeClass("chosen-disabled"),this.search_field[0].disabled=!1,this.is_multiple?void 0:this.selected_item.bind("focus.chosen",this.activate_action))},Chosen.prototype.container_mousedown=function(b){return this.is_disabled||(b&&"mousedown"===b.type&&!this.results_showing&&b.preventDefault(),null!=b&&a(b.target).hasClass("search-choice-close"))?void 0:(this.active_field?this.is_multiple||!b||a(b.target)[0]!==this.selected_item[0]&&!a(b.target).parents("a.chosen-single").length||(b.preventDefault(),this.results_toggle()):(this.is_multiple&&this.search_field.val(""),a(this.container[0].ownerDocument).bind("click.chosen",this.click_test_action),this.results_show()),this.activate_field())},Chosen.prototype.container_mouseup=function(a){return"ABBR"!==a.target.nodeName||this.is_disabled?void 0:this.results_reset(a)},Chosen.prototype.search_results_mousewheel=function(a){var b;return a.originalEvent&&(b=a.originalEvent.deltaY||-a.originalEvent.wheelDelta||a.originalEvent.detail),null!=b?(a.preventDefault(),"DOMMouseScroll"===a.type&&(b=40*b),this.search_results.scrollTop(b+this.search_results.scrollTop())):void 0},Chosen.prototype.blur_test=function(){return!this.active_field&&this.container.hasClass("chosen-container-active")?this.close_field():void 0},Chosen.prototype.close_field=function(){return a(this.container[0].ownerDocument).unbind("click.chosen",this.click_test_action),this.active_field=!1,this.results_hide(),this.container.removeClass("chosen-container-active"),this.clear_backstroke(),this.show_search_field_default(),this.search_field_scale()},Chosen.prototype.activate_field=function(){return this.container.addClass("chosen-container-active"),this.active_field=!0,this.search_field.val(this.search_field.val()),this.search_field.focus()},Chosen.prototype.test_active_click=function(b){var c;return c=a(b.target).closest(".chosen-container"),c.length&&this.container[0]===c[0]?this.active_field=!0:this.close_field()},Chosen.prototype.results_build=function(){return this.parsing=!0,this.selected_option_count=null,this.results_data=SelectParser.select_to_array(this.form_field),this.is_multiple?this.search_choices.find("li.search-choice").remove():this.is_multiple||(this.single_set_selected_text(),this.disable_search||this.form_field.options.length<=this.disable_search_threshold?(this.search_field[0].readOnly=!0,this.container.addClass("chosen-container-single-nosearch")):(this.search_field[0].readOnly=!1,this.container.removeClass("chosen-container-single-nosearch"))),this.update_results_content(this.results_option_build({first:!0})),this.search_field_disabled(),this.show_search_field_default(),this.search_field_scale(),this.parsing=!1},Chosen.prototype.result_do_highlight=function(a){var b,c,d,e,f;if(a.length){if(this.result_clear_highlight(),this.result_highlight=a,this.result_highlight.addClass("highlighted"),d=parseInt(this.search_results.css("maxHeight"),10),f=this.search_results.scrollTop(),e=d+f,c=this.result_highlight.position().top+this.search_results.scrollTop(),b=c+this.result_highlight.outerHeight(),b>=e)return this.search_results.scrollTop(b-d>0?b-d:0);if(f>c)return this.search_results.scrollTop(c)}},Chosen.prototype.result_clear_highlight=function(){return this.result_highlight&&this.result_highlight.removeClass("highlighted"),this.result_highlight=null},Chosen.prototype.results_show=function(){return this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.container.addClass("chosen-with-drop"),this.results_showing=!0,this.search_field.focus(),this.search_field.val(this.search_field.val()),this.winnow_results(),this.form_field_jq.trigger("chosen:showing_dropdown",{chosen:this}))},Chosen.prototype.update_results_content=function(a){return this.search_results.html(a)},Chosen.prototype.results_hide=function(){return this.results_showing&&(this.result_clear_highlight(),this.container.removeClass("chosen-with-drop"),this.form_field_jq.trigger("chosen:hiding_dropdown",{chosen:this})),this.results_showing=!1},Chosen.prototype.set_tab_index=function(){var a;return this.form_field.tabIndex?(a=this.form_field.tabIndex,this.form_field.tabIndex=-1,this.search_field[0].tabIndex=a):void 0},Chosen.prototype.set_label_behavior=function(){var b=this;return this.form_field_label=this.form_field_jq.parents("label"),!this.form_field_label.length&&this.form_field.id.length&&(this.form_field_label=a("label[for='"+this.form_field.id+"']")),this.form_field_label.length>0?this.form_field_label.bind("click.chosen",function(a){return b.is_multiple?b.container_mousedown(a):b.activate_field()}):void 0},Chosen.prototype.show_search_field_default=function(){return this.is_multiple&&this.choices_count()<1&&!this.active_field?(this.search_field.val(this.default_text),this.search_field.addClass("default")):(this.search_field.val(""),this.search_field.removeClass("default"))},Chosen.prototype.search_results_mouseup=function(b){var c;return c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first(),c.length?(this.result_highlight=c,this.result_select(b),this.search_field.focus()):void 0},Chosen.prototype.search_results_mouseover=function(b){var c;return c=a(b.target).hasClass("active-result")?a(b.target):a(b.target).parents(".active-result").first(),c?this.result_do_highlight(c):void 0},Chosen.prototype.search_results_mouseout=function(b){return a(b.target).hasClass("active-result")?this.result_clear_highlight():void 0},Chosen.prototype.choice_build=function(b){var c,d,e=this;return c=a("<li />",{"class":"search-choice"}).html("<span>"+b.html+"</span>"),b.disabled?c.addClass("search-choice-disabled"):(d=a("<a />",{"class":"search-choice-close","data-option-array-index":b.array_index}),d.bind("click.chosen",function(a){return e.choice_destroy_link_click(a)}),c.append(d)),this.search_container.before(c)},Chosen.prototype.choice_destroy_link_click=function(b){return b.preventDefault(),b.stopPropagation(),this.is_disabled?void 0:this.choice_destroy(a(b.target))},Chosen.prototype.choice_destroy=function(a){return this.result_deselect(a[0].getAttribute("data-option-array-index"))?(this.show_search_field_default(),this.is_multiple&&this.choices_count()>0&&this.search_field.val().length<1&&this.results_hide(),a.parents("li").first().remove(),this.search_field_scale()):void 0},Chosen.prototype.results_reset=function(){return this.reset_single_select_options(),this.form_field.options[0].selected=!0,this.single_set_selected_text(),this.show_search_field_default(),this.results_reset_cleanup(),this.form_field_jq.trigger("change"),this.active_field?this.results_hide():void 0},Chosen.prototype.results_reset_cleanup=function(){return this.current_selectedIndex=this.form_field.selectedIndex,this.selected_item.find("abbr").remove()},Chosen.prototype.result_select=function(a){var b,c;return this.result_highlight?(b=this.result_highlight,this.result_clear_highlight(),this.is_multiple&&this.max_selected_options<=this.choices_count()?(this.form_field_jq.trigger("chosen:maxselected",{chosen:this}),!1):(this.is_multiple?b.removeClass("active-result"):this.reset_single_select_options(),c=this.results_data[b[0].getAttribute("data-option-array-index")],c.selected=!0,this.form_field.options[c.options_index].selected=!0,this.selected_option_count=null,this.is_multiple?this.choice_build(c):this.single_set_selected_text(c.text),(a.metaKey||a.ctrlKey)&&this.is_multiple||this.results_hide(),this.search_field.val(""),(this.is_multiple||this.form_field.selectedIndex!==this.current_selectedIndex)&&this.form_field_jq.trigger("change",{selected:this.form_field.options[c.options_index].value}),this.current_selectedIndex=this.form_field.selectedIndex,this.search_field_scale())):void 0},Chosen.prototype.single_set_selected_text=function(a){return null==a&&(a=this.default_text),a===this.default_text?this.selected_item.addClass("chosen-default"):(this.single_deselect_control_build(),this.selected_item.removeClass("chosen-default")),this.selected_item.find("span").text(a)},Chosen.prototype.result_deselect=function(a){var b;return b=this.results_data[a],this.form_field.options[b.options_index].disabled?!1:(b.selected=!1,this.form_field.options[b.options_index].selected=!1,this.selected_option_count=null,this.result_clear_highlight(),this.results_showing&&this.winnow_results(),this.form_field_jq.trigger("change",{deselected:this.form_field.options[b.options_index].value}),this.search_field_scale(),!0)},Chosen.prototype.single_deselect_control_build=function(){return this.allow_single_deselect?(this.selected_item.find("abbr").length||this.selected_item.find("span").first().after('<abbr class="search-choice-close"></abbr>'),this.selected_item.addClass("chosen-single-with-deselect")):void 0},Chosen.prototype.get_search_text=function(){return this.search_field.val()===this.default_text?"":a("<div/>").text(a.trim(this.search_field.val())).html()},Chosen.prototype.winnow_results_set_highlight=function(){var a,b;return b=this.is_multiple?[]:this.search_results.find(".result-selected.active-result"),a=b.length?b.first():this.search_results.find(".active-result").first(),null!=a?this.result_do_highlight(a):void 0},Chosen.prototype.no_results=function(b){var c;return c=a('<li class="no-results">'+this.results_none_found+' "<span></span>"</li>'),c.find("span").first().html(b),this.search_results.append(c),this.form_field_jq.trigger("chosen:no_results",{chosen:this})},Chosen.prototype.no_results_clear=function(){return this.search_results.find(".no-results").remove()},Chosen.prototype.keydown_arrow=function(){var a;return this.results_showing&&this.result_highlight?(a=this.result_highlight.nextAll("li.active-result").first())?this.result_do_highlight(a):void 0:this.results_show()},Chosen.prototype.keyup_arrow=function(){var a;return this.results_showing||this.is_multiple?this.result_highlight?(a=this.result_highlight.prevAll("li.active-result"),a.length?this.result_do_highlight(a.first()):(this.choices_count()>0&&this.results_hide(),this.result_clear_highlight())):void 0:this.results_show()},Chosen.prototype.keydown_backstroke=function(){var a;return this.pending_backstroke?(this.choice_destroy(this.pending_backstroke.find("a").first()),this.clear_backstroke()):(a=this.search_container.siblings("li.search-choice").last(),a.length&&!a.hasClass("search-choice-disabled")?(this.pending_backstroke=a,this.single_backstroke_delete?this.keydown_backstroke():this.pending_backstroke.addClass("search-choice-focus")):void 0)},Chosen.prototype.clear_backstroke=function(){return this.pending_backstroke&&this.pending_backstroke.removeClass("search-choice-focus"),this.pending_backstroke=null},Chosen.prototype.keydown_checker=function(a){var b,c;switch(b=null!=(c=a.which)?c:a.keyCode,this.search_field_scale(),8!==b&&this.pending_backstroke&&this.clear_backstroke(),b){case 8:this.backstroke_length=this.search_field.val().length;break;case 9:this.results_showing&&!this.is_multiple&&this.result_select(a),this.mouse_on_container=!1;break;case 13:this.results_showing&&a.preventDefault();break;case 32:this.disable_search&&a.preventDefault();break;case 38:a.preventDefault(),this.keyup_arrow();break;case 40:a.preventDefault(),this.keydown_arrow()}},Chosen.prototype.search_field_scale=function(){var b,c,d,e,f,g,h,i,j;if(this.is_multiple){for(d=0,h=0,f="position:absolute; left: -1000px; top: -1000px; display:none;",g=["font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"],i=0,j=g.length;j>i;i++)e=g[i],f+=e+":"+this.search_field.css(e)+";";return b=a("<div />",{style:f}),b.text(this.search_field.val()),a("body").append(b),h=b.width()+25,b.remove(),c=this.container.outerWidth(),h>c-10&&(h=c-10),this.search_field.css({width:h+"px"})}},Chosen}(AbstractChosen)}.call(this);
|
js/lib/chosen/chosen.min.css
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
/* Chosen v1.3.0 | (c) 2011-2014 by Harvest | MIT License, https://github.com/harvesthq/chosen/blob/master/LICENSE.md */
|
2 |
+
|
3 |
+
.chosen-container{position:relative;display:inline-block;vertical-align:middle;font-size:13px;zoom:1;*display:inline;-webkit-user-select:none;-moz-user-select:none;user-select:none}.chosen-container *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.chosen-container .chosen-drop{position:absolute;top:100%;left:-9999px;z-index:1010;width:100%;border:1px solid #aaa;border-top:0;background:#fff;box-shadow:0 4px 5px rgba(0,0,0,.15)}.chosen-container.chosen-with-drop .chosen-drop{left:0}.chosen-container a{cursor:pointer}.chosen-container-single .chosen-single{position:relative;display:block;overflow:hidden;padding:0 0 0 8px;height:25px;border:1px solid #aaa;border-radius:5px;background-color:#fff;background:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#fff),color-stop(50%,#f6f6f6),color-stop(52%,#eee),color-stop(100%,#f4f4f4));background:-webkit-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-moz-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:-o-linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background:linear-gradient(top,#fff 20%,#f6f6f6 50%,#eee 52%,#f4f4f4 100%);background-clip:padding-box;box-shadow:0 0 3px #fff inset,0 1px 1px rgba(0,0,0,.1);color:#444;text-decoration:none;white-space:nowrap;line-height:24px}.chosen-container-single .chosen-default{color:#999}.chosen-container-single .chosen-single span{display:block;overflow:hidden;margin-right:26px;text-overflow:ellipsis;white-space:nowrap}.chosen-container-single .chosen-single-with-deselect span{margin-right:38px}.chosen-container-single .chosen-single abbr{position:absolute;top:6px;right:26px;display:block;width:12px;height:12px;background:url(chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-single .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single.chosen-disabled .chosen-single abbr:hover{background-position:-42px -10px}.chosen-container-single .chosen-single div{position:absolute;top:0;right:0;display:block;width:18px;height:100%}.chosen-container-single .chosen-single div b{display:block;width:100%;height:100%;background:url(chosen-sprite.png) no-repeat 0 2px}.chosen-container-single .chosen-search{position:relative;z-index:1010;margin:0;padding:3px 4px;white-space:nowrap}.chosen-container-single .chosen-search input[type=text]{margin:1px 0;padding:4px 20px 4px 5px;width:100%;height:auto;outline:0;border:1px solid #aaa;background:#fff url(chosen-sprite.png) no-repeat 100% -20px;background:url(chosen-sprite.png) no-repeat 100% -20px;font-size:1em;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-single .chosen-drop{margin-top:-1px;border-radius:0 0 4px 4px;background-clip:padding-box}.chosen-container-single.chosen-container-single-nosearch .chosen-search{position:absolute;left:-9999px}.chosen-container .chosen-results{color:#444;position:relative;overflow-x:hidden;overflow-y:auto;margin:0 4px 4px 0;padding:0 0 0 4px;max-height:240px;-webkit-overflow-scrolling:touch}.chosen-container .chosen-results li{display:none;margin:0;padding:5px 6px;list-style:none;line-height:15px;word-wrap:break-word;-webkit-touch-callout:none}.chosen-container .chosen-results li.active-result{display:list-item;cursor:pointer}.chosen-container .chosen-results li.disabled-result{display:list-item;color:#ccc;cursor:default}.chosen-container .chosen-results li.highlighted{background-color:#3875d7;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#3875d7),color-stop(90%,#2a62bc));background-image:-webkit-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-moz-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:-o-linear-gradient(#3875d7 20%,#2a62bc 90%);background-image:linear-gradient(#3875d7 20%,#2a62bc 90%);color:#fff}.chosen-container .chosen-results li.no-results{color:#777;display:list-item;background:#f4f4f4}.chosen-container .chosen-results li.group-result{display:list-item;font-weight:700;cursor:default}.chosen-container .chosen-results li.group-option{padding-left:15px}.chosen-container .chosen-results li em{font-style:normal;text-decoration:underline}.chosen-container-multi .chosen-choices{position:relative;overflow:hidden;margin:0;padding:0 5px;width:100%;height:auto!important;height:1%;border:1px solid #aaa;background-color:#fff;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(1%,#eee),color-stop(15%,#fff));background-image:-webkit-linear-gradient(#eee 1%,#fff 15%);background-image:-moz-linear-gradient(#eee 1%,#fff 15%);background-image:-o-linear-gradient(#eee 1%,#fff 15%);background-image:linear-gradient(#eee 1%,#fff 15%);cursor:text}.chosen-container-multi .chosen-choices li{float:left;list-style:none}.chosen-container-multi .chosen-choices li.search-field{margin:0;padding:0;white-space:nowrap}.chosen-container-multi .chosen-choices li.search-field input[type=text]{margin:1px 0;padding:0;height:25px;outline:0;border:0!important;background:transparent!important;box-shadow:none;color:#999;font-size:100%;font-family:sans-serif;line-height:normal;border-radius:0}.chosen-container-multi .chosen-choices li.search-choice{position:relative;margin:3px 5px 3px 0;padding:3px 20px 3px 5px;border:1px solid #aaa;max-width:100%;border-radius:3px;background-color:#eee;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-size:100% 19px;background-repeat:repeat-x;background-clip:padding-box;box-shadow:0 0 2px #fff inset,0 1px 0 rgba(0,0,0,.05);color:#333;line-height:13px;cursor:default}.chosen-container-multi .chosen-choices li.search-choice span{word-wrap:break-word}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close{position:absolute;top:4px;right:3px;display:block;width:12px;height:12px;background:url(chosen-sprite.png) -42px 1px no-repeat;font-size:1px}.chosen-container-multi .chosen-choices li.search-choice .search-choice-close:hover{background-position:-42px -10px}.chosen-container-multi .chosen-choices li.search-choice-disabled{padding-right:5px;border:1px solid #ccc;background-color:#e4e4e4;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#f4f4f4),color-stop(50%,#f0f0f0),color-stop(52%,#e8e8e8),color-stop(100%,#eee));background-image:-webkit-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-moz-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:-o-linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);background-image:linear-gradient(top,#f4f4f4 20%,#f0f0f0 50%,#e8e8e8 52%,#eee 100%);color:#666}.chosen-container-multi .chosen-choices li.search-choice-focus{background:#d4d4d4}.chosen-container-multi .chosen-choices li.search-choice-focus .search-choice-close{background-position:-42px -10px}.chosen-container-multi .chosen-results{margin:0;padding:0}.chosen-container-multi .chosen-drop .result-selected{display:list-item;color:#ccc;cursor:default}.chosen-container-active .chosen-single{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active.chosen-with-drop .chosen-single{border:1px solid #aaa;-moz-border-radius-bottomright:0;border-bottom-right-radius:0;-moz-border-radius-bottomleft:0;border-bottom-left-radius:0;background-image:-webkit-gradient(linear,50% 0,50% 100%,color-stop(20%,#eee),color-stop(80%,#fff));background-image:-webkit-linear-gradient(#eee 20%,#fff 80%);background-image:-moz-linear-gradient(#eee 20%,#fff 80%);background-image:-o-linear-gradient(#eee 20%,#fff 80%);background-image:linear-gradient(#eee 20%,#fff 80%);box-shadow:0 1px 0 #fff inset}.chosen-container-active.chosen-with-drop .chosen-single div{border-left:0;background:transparent}.chosen-container-active.chosen-with-drop .chosen-single div b{background-position:-18px 2px}.chosen-container-active .chosen-choices{border:1px solid #5897fb;box-shadow:0 0 5px rgba(0,0,0,.3)}.chosen-container-active .chosen-choices li.search-field input[type=text]{color:#222!important}.chosen-disabled{opacity:.5!important;cursor:default}.chosen-disabled .chosen-single{cursor:default}.chosen-disabled .chosen-choices .search-choice .search-choice-close{cursor:default}.chosen-rtl{text-align:right}.chosen-rtl .chosen-single{overflow:visible;padding:0 8px 0 0}.chosen-rtl .chosen-single span{margin-right:0;margin-left:26px;direction:rtl}.chosen-rtl .chosen-single-with-deselect span{margin-left:38px}.chosen-rtl .chosen-single div{right:auto;left:3px}.chosen-rtl .chosen-single abbr{right:auto;left:26px}.chosen-rtl .chosen-choices li{float:right}.chosen-rtl .chosen-choices li.search-field input[type=text]{direction:rtl}.chosen-rtl .chosen-choices li.search-choice{margin:3px 5px 3px 0;padding:3px 5px 3px 19px}.chosen-rtl .chosen-choices li.search-choice .search-choice-close{right:auto;left:4px}.chosen-rtl.chosen-container-single-nosearch .chosen-search,.chosen-rtl .chosen-drop{left:9999px}.chosen-rtl.chosen-container-single .chosen-results{margin:0 0 4px 4px;padding:0 4px 0 0}.chosen-rtl .chosen-results li.group-option{padding-right:15px;padding-left:0}.chosen-rtl.chosen-container-active.chosen-with-drop .chosen-single div{border-right:0}.chosen-rtl .chosen-search input[type=text]{padding:4px 5px 4px 20px;background:#fff url(chosen-sprite.png) no-repeat -30px -20px;background:url(chosen-sprite.png) no-repeat -30px -20px;direction:rtl}.chosen-rtl.chosen-container-single .chosen-single div b{background-position:6px 2px}.chosen-rtl.chosen-container-single.chosen-with-drop .chosen-single div b{background-position:-12px 2px}@media only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:144dpi){.chosen-rtl .chosen-search input[type=text],.chosen-container-single .chosen-single abbr,.chosen-container-single .chosen-single div b,.chosen-container-single .chosen-search input[type=text],.chosen-container-multi .chosen-choices .search-choice .search-choice-close,.chosen-container .chosen-results-scroll-down span,.chosen-container .chosen-results-scroll-up span{background-image:url(chosen-sprite@2x.png)!important;background-size:52px 37px!important;background-repeat:no-repeat!important}}
|
js/thirstyPickerHelper.js
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var thirstyMCE;
|
2 |
+
function thirstyOpenLinkPicker(ed) {
|
3 |
+
thirstyMCE = ed;
|
4 |
+
|
5 |
+
tb_show("Add an Affiliate Link", thirstyAjaxLink + '?action=thirstyGetThickboxContent&height=640&width=640&TB_iframe=true');
|
6 |
+
}
|
7 |
+
|
8 |
+
function thirstyOpenQuickAddLinkPicker(ed){
|
9 |
+
thirstyMCE = ed;
|
10 |
+
|
11 |
+
tb_show("Quick Add Affiliate Link", thirstyAjaxLink + '?action=thirstyGetQuickAddLinkThickboxContent&height=640&width=640&TB_iframe=true');
|
12 |
+
}
|
13 |
+
|
14 |
+
function thirstyInsertLink(linkcode) {
|
15 |
+
var richEditorActive = false;
|
16 |
+
if (typeof(parent.thirstyMCE) !== 'undefined' && parent.thirstyMCE != null && !parent.thirstyMCE.isHidden()) {
|
17 |
+
richEditorActive = true;
|
18 |
+
}
|
19 |
+
|
20 |
+
if (richEditorActive) { // Visual editor replacement
|
21 |
+
parent.thirstyMCE.focus();
|
22 |
+
parent.thirstyMCE.selection.setContent(linkcode);
|
23 |
+
parent.thirstyMCE.execCommand('mceRepaint');
|
24 |
+
} else { // HTML editor replacement
|
25 |
+
thirstyReplaceHTMLEditorSelectedText(linkcode);
|
26 |
+
}
|
27 |
+
}
|
28 |
+
|
29 |
+
function thirstyReplaceHTMLEditorSelectedText(text) {
|
30 |
+
var el;
|
31 |
+
el = parent.document.getElementById("replycontent");
|
32 |
+
if (typeof el == "undefined" || !jQuery(el).is(":visible")) // is not a comment reply
|
33 |
+
el = parent.document.getElementById("content");
|
34 |
+
|
35 |
+
var sel = parent.thirstyGetHTMLEditorSelection();
|
36 |
+
var val = el.value;
|
37 |
+
el.value = val.slice(0, sel.start) + text + val.slice(sel.end);
|
38 |
+
jQuery(el).trigger('change'); // some addons require notice that something has changed
|
39 |
+
}
|
40 |
+
|
41 |
+
function thirstyDismissLinkPicker() {
|
42 |
+
tb_remove();
|
43 |
+
}
|
js/thirstyhelper.js
ADDED
@@ -0,0 +1,390 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
var frame;
|
2 |
+
|
3 |
+
jQuery(document).ready(function($) {
|
4 |
+
if (thirstyJSEnable == true) {
|
5 |
+
jQuery('#thirstyOptionsLinkPrefix').change(function() {
|
6 |
+
|
7 |
+
thirstySetRebuildFlag();
|
8 |
+
|
9 |
+
if (jQuery(this).val() == 'custom') {
|
10 |
+
jQuery('#thirstyCustomLinkPrefix').val("");
|
11 |
+
jQuery('#thirstyCustomLinkPrefix').fadeIn(400);
|
12 |
+
} else {
|
13 |
+
jQuery('#thirstyCustomLinkPrefix').val("");
|
14 |
+
jQuery('#thirstyCustomLinkPrefix').fadeOut(400);
|
15 |
+
}
|
16 |
+
});
|
17 |
+
|
18 |
+
jQuery('.submit input[type=submit]').click(function() {
|
19 |
+
if (jQuery('#thirstyOptionsLinkPrefix').val() == 'custom' &&
|
20 |
+
jQuery('#thirstyCustomLinkPrefix').val() == '') {
|
21 |
+
jQuery('#thirstyOptionsLinkPrefix').val('recommends');
|
22 |
+
jQuery('#thirstyCustomLinkPrefix').fadeOut(400);
|
23 |
+
}
|
24 |
+
});
|
25 |
+
jQuery('#post_name').remove();
|
26 |
+
jQuery('#post-body-content').remove();
|
27 |
+
|
28 |
+
jQuery('#thirstyEditSlug').click(thirstyEditSlug);
|
29 |
+
|
30 |
+
jQuery('#thirsty_upload_insert_img').click(thirstyAddImagesClicked);
|
31 |
+
jQuery('#thirsty_upload_media_manager').click(thirstyMediaManagerAddImagesClicked);
|
32 |
+
jQuery('.thirstyRemoveImg').click(thirstyRemoveImageClicked);
|
33 |
+
|
34 |
+
jQuery('#thirstyOptionsShowCatInSlug').click(thirstySetRebuildFlag);
|
35 |
+
jQuery('#thirstyForceLinkRebuild').click(thirstySetRebuildFlag);
|
36 |
+
|
37 |
+
|
38 |
+
$("#export_global_settings").click(function(){
|
39 |
+
|
40 |
+
var $this = $(this),
|
41 |
+
settings_textarea = $("#global_settings_string"),
|
42 |
+
import_settings = $("#import_global_settings_action");
|
43 |
+
|
44 |
+
$this.attr('disabled','disabled');
|
45 |
+
|
46 |
+
settings_textarea.val("");
|
47 |
+
|
48 |
+
if ( !settings_textarea.is(":visible") )
|
49 |
+
settings_textarea.slideDown("fast");
|
50 |
+
|
51 |
+
if ( import_settings.is(":visible") )
|
52 |
+
import_settings.slideUp("fast");
|
53 |
+
|
54 |
+
jQuery
|
55 |
+
.ajax({
|
56 |
+
url : ajaxurl,
|
57 |
+
type : "POST",
|
58 |
+
data : { action : "thirstyExportGlobalSettings" },
|
59 |
+
dataType : "json"
|
60 |
+
})
|
61 |
+
.done( function( data , textStatus , jqXHR ) {
|
62 |
+
|
63 |
+
if(data.status == 'success'){
|
64 |
+
|
65 |
+
settings_textarea.val(data.thirstyOption);
|
66 |
+
|
67 |
+
}
|
68 |
+
|
69 |
+
})
|
70 |
+
.fail( function( jqXHR , textStatus , errorThrown ) {
|
71 |
+
|
72 |
+
alert( 'Failed to get global settings string' );
|
73 |
+
|
74 |
+
console.log( 'Failed to create lead pages' );
|
75 |
+
console.log( jqXHR );
|
76 |
+
console.log( '----------' );
|
77 |
+
|
78 |
+
})
|
79 |
+
.always( function(){
|
80 |
+
|
81 |
+
$this.removeAttr('disabled');
|
82 |
+
|
83 |
+
});
|
84 |
+
|
85 |
+
});
|
86 |
+
|
87 |
+
$("#import_global_settings").click(function(){
|
88 |
+
|
89 |
+
var $this = $(this),
|
90 |
+
settings_textarea = $("#global_settings_string"),
|
91 |
+
import_settings = $("#import_global_settings_action");
|
92 |
+
|
93 |
+
settings_textarea.val("");
|
94 |
+
|
95 |
+
if ( !settings_textarea.is(":visible") )
|
96 |
+
settings_textarea.slideDown("fast");
|
97 |
+
|
98 |
+
if ( !import_settings.is(":visible") )
|
99 |
+
import_settings.slideDown("fast");
|
100 |
+
|
101 |
+
});
|
102 |
+
|
103 |
+
$("#import_global_settings_action").click(function(){
|
104 |
+
|
105 |
+
var $this = $(this),
|
106 |
+
settings_textarea = $("#global_settings_string"),
|
107 |
+
thirstyOptions = $.trim(settings_textarea.val());
|
108 |
+
|
109 |
+
$this.attr( 'disabled' , 'disabled' );
|