Version Description
- 2021-07-09
- completely new GUI
- link scanner / link analyzer SaaS beta
Download this release
Release Info
Developer | WebFactory |
Plugin | WP External Links (nofollow new tab seo) |
Version | 2.50 |
Comparing to | |
See all releases |
Code changes from version 2.48 to 2.50
- includes/admin/class-wpel-network-page.php +1 -1
- includes/admin/class-wpel-settings-page.php +121 -85
- includes/class-wpel-front.php +14 -0
- includes/class-wpel-linkhero.php +297 -0
- includes/class-wpel-plugin.php +9 -12
- includes/class-wpel-register-scripts.php +41 -23
- libs/fwp/class-fwp-debug.php +0 -2
- libs/fwp/class-fwp-html-fields.php +4 -4
- libs/fwp/component-bases/class-fwp-settings-section-base.php +2 -1
- public/css/jquery.dataTables.min.css +1 -0
- public/css/wpel-admin.css +651 -51
- public/images/logo.png +0 -0
- public/js/jquery.dataTables.min.js +184 -0
- public/js/wpel-admin.js +347 -100
- public/js/wpel-link-highlighter.js +38 -0
- readme.txt +18 -8
- templates/partials/nav-tabs.php +6 -1
- templates/partials/tab-contents/link-checking.php +137 -0
- templates/partials/tab-contents/support.php +0 -2
- templates/settings-page/main.php +29 -22
- templates/settings-page/tab-contents/exceptions.php +3 -1
- wf-flyout/config.php +1 -1
- wf-flyout/wf-flyout.php +14 -15
- wp-external-links.php +5 -2
includes/admin/class-wpel-network-page.php
CHANGED
@@ -126,7 +126,7 @@ final class WPEL_Network_Page extends WPRun_Base_1x0x0
|
|
126 |
protected function action_admin_enqueue_scripts()
|
127 |
{
|
128 |
$current_screen = get_current_screen();
|
129 |
-
|
130 |
if($current_screen->id == 'toplevel_page_wpel-network-settings-page-network' || $current_screen->id == 'settings_page_wpel-network-settings-page-network'){
|
131 |
wp_enqueue_style( 'font-awesome' );
|
132 |
wp_enqueue_style( 'wpel-admin-style' );
|
126 |
protected function action_admin_enqueue_scripts()
|
127 |
{
|
128 |
$current_screen = get_current_screen();
|
129 |
+
|
130 |
if($current_screen->id == 'toplevel_page_wpel-network-settings-page-network' || $current_screen->id == 'settings_page_wpel-network-settings-page-network'){
|
131 |
wp_enqueue_style( 'font-awesome' );
|
132 |
wp_enqueue_style( 'wpel-admin-style' );
|
includes/admin/class-wpel-settings-page.php
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
|
|
2 |
/**
|
3 |
* Class WPEL_Settings_Page
|
4 |
*
|
@@ -34,59 +35,83 @@ final class WPEL_Settings_Page extends WPRun_Base_1x0x0
|
|
34 |
/**
|
35 |
* Initialize
|
36 |
*/
|
37 |
-
protected function init(
|
38 |
{
|
39 |
$this->network_page = $network_page;
|
40 |
|
41 |
$this->tabs = array(
|
|
|
|
|
|
|
|
|
42 |
'external-links' => array(
|
43 |
-
'title' => __(
|
44 |
-
'icon' =>
|
45 |
-
'fields' => $fields_objects[
|
46 |
),
|
47 |
'internal-links' => array(
|
48 |
-
'title' => __(
|
49 |
-
'icon' =>
|
50 |
-
'fields' => $fields_objects[
|
51 |
),
|
52 |
'excluded-links' => array(
|
53 |
-
'title' => __(
|
54 |
-
'icon' =>
|
55 |
-
'fields' => $fields_objects[
|
56 |
),
|
57 |
'exceptions' => array(
|
58 |
-
'title' => __(
|
59 |
-
'icon' =>
|
60 |
-
'fields' => $fields_objects[
|
61 |
),
|
62 |
'admin' => array(
|
63 |
-
'title' => __(
|
64 |
-
'icon' =>
|
65 |
-
'fields' => $fields_objects[
|
66 |
),
|
67 |
'support' => array(
|
68 |
-
'title' => __(
|
69 |
-
'icon' =>
|
70 |
),
|
71 |
);
|
72 |
|
73 |
// check excluded links tab available
|
74 |
-
if (
|
75 |
-
unset(
|
76 |
}
|
77 |
|
78 |
// get current tab
|
79 |
-
$this->current_tab = filter_input(
|
80 |
|
81 |
// set default tab
|
82 |
-
if (
|
83 |
-
reset(
|
84 |
-
$this->current_tab = key(
|
85 |
}
|
86 |
|
87 |
add_filter('plugin_action_links_' . plugin_basename(TEST_WPEL_PLUGIN_FILE), array($this, 'plugin_action_links'));
|
|
|
88 |
}
|
89 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
90 |
/**
|
91 |
* Add "Configure Settings" action link to plugins table, left part
|
92 |
*
|
@@ -96,11 +121,11 @@ final class WPEL_Settings_Page extends WPRun_Base_1x0x0
|
|
96 |
*/
|
97 |
function plugin_action_links($links)
|
98 |
{
|
99 |
-
|
100 |
|
101 |
-
|
102 |
|
103 |
-
|
104 |
}
|
105 |
|
106 |
/**
|
@@ -110,28 +135,28 @@ final class WPEL_Settings_Page extends WPRun_Base_1x0x0
|
|
110 |
* @return string
|
111 |
* @triggers E_USER_NOTICE Option value cannot be found
|
112 |
*/
|
113 |
-
public function get_option_value(
|
114 |
{
|
115 |
-
if (
|
116 |
-
foreach (
|
117 |
-
if (
|
118 |
continue;
|
119 |
}
|
120 |
|
121 |
-
$option_values = $values[
|
122 |
|
123 |
-
if (
|
124 |
continue;
|
125 |
}
|
126 |
|
127 |
-
return $option_values[
|
128 |
}
|
129 |
-
} else if (
|
130 |
-
$option_values = $this->tabs[
|
131 |
-
return @$option_values[
|
132 |
}
|
133 |
|
134 |
-
trigger_error(
|
135 |
}
|
136 |
|
137 |
/**
|
@@ -139,50 +164,60 @@ final class WPEL_Settings_Page extends WPRun_Base_1x0x0
|
|
139 |
*/
|
140 |
protected function action_admin_menu()
|
141 |
{
|
142 |
-
$capability = $this->network_page->get_option_value(
|
143 |
|
144 |
-
$own_admin_menu = $this->get_option_value(
|
145 |
|
146 |
-
if (
|
147 |
$this->page_hook = add_menu_page(
|
148 |
-
__(
|
149 |
-
,
|
150 |
-
,
|
151 |
-
,
|
152 |
-
|
153 |
-
,
|
154 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
155 |
);
|
156 |
} else {
|
157 |
$this->page_hook = add_options_page(
|
158 |
-
__(
|
159 |
-
,
|
160 |
-
,
|
161 |
-
,
|
162 |
-
|
|
|
|
|
|
|
|
|
163 |
);
|
164 |
}
|
165 |
|
166 |
-
add_action(
|
167 |
}
|
168 |
|
169 |
/**
|
170 |
* Set default option values for new created sites
|
171 |
* @param integer $blog_id
|
172 |
*/
|
173 |
-
protected function action_wpmu_new_blog(
|
174 |
{
|
175 |
-
$default_site_id = $this->network_page->get_option_value(
|
176 |
|
177 |
-
foreach (
|
178 |
-
if (
|
179 |
continue;
|
180 |
}
|
181 |
|
182 |
-
$option_name = $values[
|
183 |
|
184 |
-
$default_option_values = get_blog_option(
|
185 |
-
update_blog_option(
|
186 |
}
|
187 |
}
|
188 |
|
@@ -192,13 +227,17 @@ final class WPEL_Settings_Page extends WPRun_Base_1x0x0
|
|
192 |
protected function action_admin_enqueue_scripts()
|
193 |
{
|
194 |
$current_screen = get_current_screen();
|
195 |
-
if($current_screen->id == 'toplevel_page_wpel-settings-page' || $current_screen->id == 'settings_page_wpel-settings-page'){
|
196 |
-
|
197 |
-
|
198 |
-
|
|
|
|
|
|
|
|
|
199 |
}
|
200 |
|
201 |
-
wp_enqueue_style(
|
202 |
}
|
203 |
|
204 |
/**
|
@@ -206,19 +245,19 @@ final class WPEL_Settings_Page extends WPRun_Base_1x0x0
|
|
206 |
*/
|
207 |
protected function show_admin_page()
|
208 |
{
|
209 |
-
$template_file = WPEL_Plugin::get_plugin_dir(
|
210 |
-
$page = $this->get_option_value(
|
211 |
-
$page_url = admin_url() . $page .'?page='. $this->menu_slug;
|
212 |
|
213 |
$template_vars = array(
|
214 |
'tabs' => $this->tabs,
|
215 |
'current_tab' => $this->current_tab,
|
216 |
'page_url' => $page_url,
|
217 |
'menu_slug' => $this->menu_slug,
|
218 |
-
'own_admin_menu' => $this->get_option_value(
|
219 |
);
|
220 |
|
221 |
-
$this->show_template(
|
222 |
}
|
223 |
|
224 |
/**
|
@@ -229,28 +268,25 @@ final class WPEL_Settings_Page extends WPRun_Base_1x0x0
|
|
229 |
$screen = get_current_screen();
|
230 |
return;
|
231 |
|
232 |
-
$screen->add_help_tab(
|
233 |
'id' => 'under-construction',
|
234 |
-
'title' => __(
|
235 |
-
'callback' => $this->get_callback(
|
236 |
-
)
|
237 |
-
$screen->add_help_tab(
|
238 |
'id' => 'data-attributes',
|
239 |
-
'title' => __(
|
240 |
-
'callback' => $this->get_callback(
|
241 |
-
)
|
242 |
}
|
243 |
|
244 |
/**
|
245 |
* @param WP_Screen $screen
|
246 |
* @param array $args
|
247 |
*/
|
248 |
-
protected function show_help_tab(
|
249 |
{
|
250 |
-
$template_file = WPEL_Plugin::get_plugin_dir(
|
251 |
-
$this->show_template(
|
252 |
}
|
253 |
-
|
254 |
}
|
255 |
-
|
256 |
-
/*?>*/
|
1 |
<?php
|
2 |
+
|
3 |
/**
|
4 |
* Class WPEL_Settings_Page
|
5 |
*
|
35 |
/**
|
36 |
* Initialize
|
37 |
*/
|
38 |
+
protected function init($network_page, array $fields_objects)
|
39 |
{
|
40 |
$this->network_page = $network_page;
|
41 |
|
42 |
$this->tabs = array(
|
43 |
+
'link-checking' => array(
|
44 |
+
'title' => '<span class="dashicons dashicons-star-filled"></span>'.__('Link Checker', 'wp-external-links'),
|
45 |
+
'icon' => false,
|
46 |
+
),
|
47 |
'external-links' => array(
|
48 |
+
'title' => __('External Links', 'wp-external-links'),
|
49 |
+
'icon' => false,
|
50 |
+
'fields' => $fields_objects['external-links'],
|
51 |
),
|
52 |
'internal-links' => array(
|
53 |
+
'title' => __('Internal Links', 'wp-external-links'),
|
54 |
+
'icon' => false,
|
55 |
+
'fields' => $fields_objects['internal-links'],
|
56 |
),
|
57 |
'excluded-links' => array(
|
58 |
+
'title' => __('Excluded Links', 'wp-external-links'),
|
59 |
+
'icon' => false,
|
60 |
+
'fields' => $fields_objects['excluded-links'],
|
61 |
),
|
62 |
'exceptions' => array(
|
63 |
+
'title' => __('Exceptions', 'wp-external-links'),
|
64 |
+
'icon' => false,
|
65 |
+
'fields' => $fields_objects['exceptions'],
|
66 |
),
|
67 |
'admin' => array(
|
68 |
+
'title' => __('Admin Settings', 'wp-external-links'),
|
69 |
+
'icon' => false,
|
70 |
+
'fields' => $fields_objects['admin'],
|
71 |
),
|
72 |
'support' => array(
|
73 |
+
'title' => __('Support', 'wp-external-links'),
|
74 |
+
'icon' => false,
|
75 |
),
|
76 |
);
|
77 |
|
78 |
// check excluded links tab available
|
79 |
+
if ($this->get_option_value('excludes_as_internal_links', 'exceptions')) {
|
80 |
+
unset($this->tabs['excluded-links']);
|
81 |
}
|
82 |
|
83 |
// get current tab
|
84 |
+
$this->current_tab = filter_input(INPUT_GET, 'tab', FILTER_SANITIZE_STRING);
|
85 |
|
86 |
// set default tab
|
87 |
+
if (!key_exists($this->current_tab, $this->tabs)) {
|
88 |
+
reset($this->tabs);
|
89 |
+
$this->current_tab = key($this->tabs);
|
90 |
}
|
91 |
|
92 |
add_filter('plugin_action_links_' . plugin_basename(TEST_WPEL_PLUGIN_FILE), array($this, 'plugin_action_links'));
|
93 |
+
add_filter('admin_footer_text', array($this, 'admin_footer_text'));
|
94 |
}
|
95 |
|
96 |
+
/**
|
97 |
+
* Add powered by text in admin footer
|
98 |
+
*
|
99 |
+
* @param string $text Default footer text.
|
100 |
+
*
|
101 |
+
* @return string
|
102 |
+
*/
|
103 |
+
function admin_footer_text($text)
|
104 |
+
{
|
105 |
+
$current_screen = get_current_screen();
|
106 |
+
if (!empty($current_screen) && $current_screen->id == 'toplevel_page_wpel-settings-page') {
|
107 |
+
$plugin_version = get_option('wpel-version');
|
108 |
+
$text = '<i>WP External Links v'.$plugin_version.' <a href="https://www.webfactoryltd.com?ref=wp-external-links" title="WebFactory Ltd" target="_blank">WebFactory Ltd</a>. Please <a target="_blank" href="https://wordpress.org/support/plugin/wp-external-links/reviews/#new-post" title="Rate the plugin">rate the plugin <span>★★★★★</span></a> to help us spread the word. Thank you 🙌 from the Webfactory team!</i>';
|
109 |
+
}
|
110 |
+
return $text;
|
111 |
+
} // admin_footer_text
|
112 |
+
|
113 |
+
|
114 |
+
|
115 |
/**
|
116 |
* Add "Configure Settings" action link to plugins table, left part
|
117 |
*
|
121 |
*/
|
122 |
function plugin_action_links($links)
|
123 |
{
|
124 |
+
$settings_link = '<a href="' . admin_url('admin.php?page=wpel-settings-page') . '" title="Open WP External Links Settings">Configure Settings</a>';
|
125 |
|
126 |
+
array_unshift($links, $settings_link);
|
127 |
|
128 |
+
return $links;
|
129 |
}
|
130 |
|
131 |
/**
|
135 |
* @return string
|
136 |
* @triggers E_USER_NOTICE Option value cannot be found
|
137 |
*/
|
138 |
+
public function get_option_value($key, $type = null)
|
139 |
{
|
140 |
+
if (null === $type) {
|
141 |
+
foreach ($this->tabs as $tab_key => $values) {
|
142 |
+
if (!isset($values['fields'])) {
|
143 |
continue;
|
144 |
}
|
145 |
|
146 |
+
$option_values = $values['fields']->get_option_values();
|
147 |
|
148 |
+
if (!isset($option_values[$key])) {
|
149 |
continue;
|
150 |
}
|
151 |
|
152 |
+
return $option_values[$key];
|
153 |
}
|
154 |
+
} else if (isset($this->tabs[$type]['fields'])) {
|
155 |
+
$option_values = $this->tabs[$type]['fields']->get_option_values();
|
156 |
+
return @$option_values[$key];
|
157 |
}
|
158 |
|
159 |
+
trigger_error('Option value "' . $key . '" cannot be found.');
|
160 |
}
|
161 |
|
162 |
/**
|
164 |
*/
|
165 |
protected function action_admin_menu()
|
166 |
{
|
167 |
+
$capability = $this->network_page->get_option_value('capability');
|
168 |
|
169 |
+
$own_admin_menu = $this->get_option_value('own_admin_menu', 'admin');
|
170 |
|
171 |
+
if ('1' === $own_admin_menu) {
|
172 |
$this->page_hook = add_menu_page(
|
173 |
+
__('WP External Links', 'wp-external-links') // page title
|
174 |
+
,
|
175 |
+
__('External Links', 'wp-external-links') // menu title
|
176 |
+
,
|
177 |
+
$capability // capability
|
178 |
+
,
|
179 |
+
$this->menu_slug // id
|
180 |
+
,
|
181 |
+
$this->get_callback('show_admin_page') // callback
|
182 |
+
,
|
183 |
+
'none' // icon
|
184 |
+
,
|
185 |
+
null // position
|
186 |
);
|
187 |
} else {
|
188 |
$this->page_hook = add_options_page(
|
189 |
+
__('WP External Links', 'wp-external-links') // page title
|
190 |
+
,
|
191 |
+
__('External Links', 'wp-external-links') // menu title
|
192 |
+
,
|
193 |
+
$capability // capability
|
194 |
+
,
|
195 |
+
$this->menu_slug // id
|
196 |
+
,
|
197 |
+
$this->get_callback('show_admin_page') // callback
|
198 |
);
|
199 |
}
|
200 |
|
201 |
+
add_action('load-' . $this->page_hook, $this->get_callback('add_help_tabs'));
|
202 |
}
|
203 |
|
204 |
/**
|
205 |
* Set default option values for new created sites
|
206 |
* @param integer $blog_id
|
207 |
*/
|
208 |
+
protected function action_wpmu_new_blog($blog_id)
|
209 |
{
|
210 |
+
$default_site_id = $this->network_page->get_option_value('default_settings_site');
|
211 |
|
212 |
+
foreach ($this->tabs as $tab_key => $values) {
|
213 |
+
if (!isset($values['fields'])) {
|
214 |
continue;
|
215 |
}
|
216 |
|
217 |
+
$option_name = $values['fields']->get_setting('option_name');
|
218 |
|
219 |
+
$default_option_values = get_blog_option($default_site_id, $option_name, array());
|
220 |
+
update_blog_option($blog_id, $option_name, $default_option_values);
|
221 |
}
|
222 |
}
|
223 |
|
227 |
protected function action_admin_enqueue_scripts()
|
228 |
{
|
229 |
$current_screen = get_current_screen();
|
230 |
+
if ($current_screen->id == 'toplevel_page_wpel-settings-page' || $current_screen->id == 'settings_page_wpel-settings-page') {
|
231 |
+
wp_enqueue_script('jquery-ui-core');
|
232 |
+
wp_enqueue_script('jquery-ui-accordion');
|
233 |
+
wp_enqueue_style('font-awesome');
|
234 |
+
wp_enqueue_style('wpel-admin-style');
|
235 |
+
wp_enqueue_script('wpel-admin-script');
|
236 |
+
wp_enqueue_style('jquery-ui-smoothness', 'https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css', false, null);
|
237 |
+
wp_enqueue_style('wpel-admin-font', 'https://fonts.googleapis.com/css2?family=Poppins:ital,wght@0,200;0,300;0,400;0,500;0,600;1,200;1,300;1,400;1,500;1,600&display=swap');
|
238 |
}
|
239 |
|
240 |
+
wp_enqueue_style('wpel-admin-global-style');
|
241 |
}
|
242 |
|
243 |
/**
|
245 |
*/
|
246 |
protected function show_admin_page()
|
247 |
{
|
248 |
+
$template_file = WPEL_Plugin::get_plugin_dir('/templates/settings-page/main.php');
|
249 |
+
$page = $this->get_option_value('own_admin_menu') ? 'admin.php' : 'options-general.php';
|
250 |
+
$page_url = admin_url() . $page . '?page=' . $this->menu_slug;
|
251 |
|
252 |
$template_vars = array(
|
253 |
'tabs' => $this->tabs,
|
254 |
'current_tab' => $this->current_tab,
|
255 |
'page_url' => $page_url,
|
256 |
'menu_slug' => $this->menu_slug,
|
257 |
+
'own_admin_menu' => $this->get_option_value('own_admin_menu', 'admin'),
|
258 |
);
|
259 |
|
260 |
+
$this->show_template($template_file, $template_vars);
|
261 |
}
|
262 |
|
263 |
/**
|
268 |
$screen = get_current_screen();
|
269 |
return;
|
270 |
|
271 |
+
$screen->add_help_tab(array(
|
272 |
'id' => 'under-construction',
|
273 |
+
'title' => __('Under Construction', 'wp-external-links'),
|
274 |
+
'callback' => $this->get_callback('show_help_tab'),
|
275 |
+
));
|
276 |
+
$screen->add_help_tab(array(
|
277 |
'id' => 'data-attributes',
|
278 |
+
'title' => __('Data Attributes', 'wp-external-links'),
|
279 |
+
'callback' => $this->get_callback('show_help_tab'),
|
280 |
+
));
|
281 |
}
|
282 |
|
283 |
/**
|
284 |
* @param WP_Screen $screen
|
285 |
* @param array $args
|
286 |
*/
|
287 |
+
protected function show_help_tab($screen, array $args)
|
288 |
{
|
289 |
+
$template_file = WPEL_Plugin::get_plugin_dir('/templates/settings-page/help-tabs/' . $args['id'] . '.php');
|
290 |
+
$this->show_template($template_file);
|
291 |
}
|
|
|
292 |
}
|
|
|
|
includes/class-wpel-front.php
CHANGED
@@ -58,6 +58,8 @@ final class WPEL_Front extends WPRun_Base_1x0x0
|
|
58 |
add_filter( $hook, $this->get_callback( 'scan' ), 10000000000 );
|
59 |
}
|
60 |
}
|
|
|
|
|
61 |
}
|
62 |
|
63 |
|
@@ -102,6 +104,18 @@ final class WPEL_Front extends WPRun_Base_1x0x0
|
|
102 |
if ( $this->opt( 'icon_type', 'external-links' ) || $this->opt( 'icon_type', 'internal-links' ) ) {
|
103 |
wp_enqueue_style( 'wpel-style' );
|
104 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
105 |
}
|
106 |
|
107 |
/**
|
58 |
add_filter( $hook, $this->get_callback( 'scan' ), 10000000000 );
|
59 |
}
|
60 |
}
|
61 |
+
|
62 |
+
|
63 |
}
|
64 |
|
65 |
|
104 |
if ( $this->opt( 'icon_type', 'external-links' ) || $this->opt( 'icon_type', 'internal-links' ) ) {
|
105 |
wp_enqueue_style( 'wpel-style' );
|
106 |
}
|
107 |
+
|
108 |
+
wp_register_script(
|
109 |
+
'wpel-link-highlighter',
|
110 |
+
plugins_url('/public/js/wpel-link-highlighter.js', WPEL_Plugin::get_plugin_file()),
|
111 |
+
array('jquery'),
|
112 |
+
false,
|
113 |
+
true
|
114 |
+
);
|
115 |
+
|
116 |
+
if(isset($_GET['wpel-link-highlight'])){
|
117 |
+
wp_enqueue_script( 'wpel-link-highlighter' );
|
118 |
+
}
|
119 |
}
|
120 |
|
121 |
/**
|
includes/class-wpel-linkhero.php
ADDED
@@ -0,0 +1,297 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/**
|
4 |
+
* Class WPEL_LinkHero
|
5 |
+
*
|
6 |
+
* @package WPEL
|
7 |
+
* @category WordPress Plugin
|
8 |
+
* @version 2.3
|
9 |
+
* @link https://www.webfactoryltd.com/
|
10 |
+
* @license Dual licensed under the MIT and GPLv2+ licenses
|
11 |
+
*/
|
12 |
+
final class WPEL_LinkHero extends FWP_Plugin_Base_1x0x0
|
13 |
+
{
|
14 |
+
/**
|
15 |
+
* Initialize plugin
|
16 |
+
* @param string $plugin_file
|
17 |
+
* @param string $plugin_dir
|
18 |
+
*/
|
19 |
+
public $linkhero;
|
20 |
+
public $linkhero_api = 'http://api-beta.linkhero.com';
|
21 |
+
public static $lh_url = 'https://linkhero.com/wpel/subscribe.php';
|
22 |
+
|
23 |
+
protected function init($plugin_file, $plugin_dir)
|
24 |
+
{
|
25 |
+
parent::init($plugin_file, $plugin_dir);
|
26 |
+
add_action('wp_ajax_wpel_run_tool', array($this, 'ajax_tool'));
|
27 |
+
add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts'));
|
28 |
+
$this->linkhero = get_option('wpel-linkhero', array('checker' => array(), 'enabled' => false));
|
29 |
+
}
|
30 |
+
|
31 |
+
static function is_localhost()
|
32 |
+
{
|
33 |
+
$whitelist = array('127.0.0.1', '::1');
|
34 |
+
if (in_array($_SERVER['REMOTE_ADDR'], $whitelist)) {
|
35 |
+
return true;
|
36 |
+
}
|
37 |
+
return false;
|
38 |
+
}
|
39 |
+
|
40 |
+
function is_plugin_page()
|
41 |
+
{
|
42 |
+
$current_screen = get_current_screen();
|
43 |
+
|
44 |
+
if (!empty($current_screen) && $current_screen->id == 'toplevel_page_wpel-settings-page') {
|
45 |
+
return true;
|
46 |
+
} else {
|
47 |
+
return false;
|
48 |
+
}
|
49 |
+
} // is_plugin_page
|
50 |
+
|
51 |
+
function admin_enqueue_scripts()
|
52 |
+
{
|
53 |
+
if (!$this->is_plugin_page()) {
|
54 |
+
return;
|
55 |
+
}
|
56 |
+
|
57 |
+
$plugin_version = get_option('wpel-version');
|
58 |
+
|
59 |
+
wp_enqueue_style(
|
60 |
+
'wpel-datatables-style',
|
61 |
+
plugins_url('/public/css/jquery.dataTables.min.css', WPEL_Plugin::get_plugin_file()),
|
62 |
+
array(),
|
63 |
+
$plugin_version
|
64 |
+
);
|
65 |
+
|
66 |
+
wp_enqueue_script(
|
67 |
+
'wpel-datatables-script',
|
68 |
+
plugins_url('/public/js/jquery.dataTables.min.js', WPEL_Plugin::get_plugin_file()),
|
69 |
+
array('jquery'),
|
70 |
+
$plugin_version,
|
71 |
+
true
|
72 |
+
);
|
73 |
+
}
|
74 |
+
|
75 |
+
function get_sitemap_url()
|
76 |
+
{
|
77 |
+
return home_url('/sitemap.xml');
|
78 |
+
}
|
79 |
+
|
80 |
+
function lh_request_scan()
|
81 |
+
{
|
82 |
+
$sitemap_url = $this->get_sitemap_url();
|
83 |
+
|
84 |
+
if ($sitemap_url !== false) {
|
85 |
+
$request = array(
|
86 |
+
'sitemap' => $sitemap_url
|
87 |
+
);
|
88 |
+
|
89 |
+
$res = wp_remote_post(
|
90 |
+
$this->linkhero_api . '/wpel/add/check_urls',
|
91 |
+
array(
|
92 |
+
'sslverify' => false,
|
93 |
+
'headers' => array('Content-Type' => 'application/json; charset=utf-8'),
|
94 |
+
'data_format' => 'body',
|
95 |
+
'body' => json_encode($request),
|
96 |
+
'timeout' => 15
|
97 |
+
)
|
98 |
+
);
|
99 |
+
|
100 |
+
if (!is_wp_error($res)) {
|
101 |
+
$res = wp_remote_retrieve_body($res);
|
102 |
+
$res = json_decode($res);
|
103 |
+
|
104 |
+
//TODO: Returns as object
|
105 |
+
if (!empty($res->success) && $res->success == true && isset($res->result->job_id)) {
|
106 |
+
$this->linkhero['checker']['lastscan'] = time();
|
107 |
+
$this->linkhero['checker']['status'] = 'pending';
|
108 |
+
$this->linkhero['checker']['limit'] = 0;
|
109 |
+
$this->linkhero['checker']['total_pages'] = 0;
|
110 |
+
$this->linkhero['checker']['job_id'] = $res->result->job_id;
|
111 |
+
|
112 |
+
update_option('wpel-linkhero', $this->linkhero);
|
113 |
+
return true;
|
114 |
+
} else {
|
115 |
+
//TODO: Handle error
|
116 |
+
return new WP_Error(1, 'An error occured: ' . $res->result);
|
117 |
+
}
|
118 |
+
} else {
|
119 |
+
//TODO: Handle error
|
120 |
+
return $res;
|
121 |
+
}
|
122 |
+
} else {
|
123 |
+
return new WP_Error(1, 'No sitemap found for your website');
|
124 |
+
}
|
125 |
+
}
|
126 |
+
|
127 |
+
function lh_get_results()
|
128 |
+
{
|
129 |
+
$request['job_id'] = $this->linkhero['checker']['job_id'];
|
130 |
+
|
131 |
+
$res = wp_remote_post(
|
132 |
+
$this->linkhero_api . '/wpel/get/check_urls',
|
133 |
+
array(
|
134 |
+
'sslverify' => false,
|
135 |
+
'headers' => array('Content-Type' => 'application/json; charset=utf-8'),
|
136 |
+
'data_format' => 'body',
|
137 |
+
'body' => json_encode($request),
|
138 |
+
'timeout' => 15
|
139 |
+
)
|
140 |
+
);
|
141 |
+
|
142 |
+
if (!is_wp_error($res)) {
|
143 |
+
$res = wp_remote_retrieve_body($res);
|
144 |
+
$res = json_decode($res, true);
|
145 |
+
|
146 |
+
if (!empty($res['success']) && $res['success'] == true) {
|
147 |
+
$this->linkhero['checker']['results'] = $res['result'];
|
148 |
+
$this->linkhero['checker']['limit'] = array_key_exists('limit', $res) && (int)$res['limit'] > 0 ? (int)$res['limit'] : 0;
|
149 |
+
$this->linkhero['checker']['total_pages'] = array_key_exists('total_pages', $res) && (int)$res['total_pages'] > 0 ? (int)$res['total_pages'] : 0;
|
150 |
+
$pending_pages = false;
|
151 |
+
foreach ($this->linkhero['checker']['results'] as $page_url => $page) {
|
152 |
+
if (!is_array($page) || $page['status'] != 'finished') {
|
153 |
+
$pending_pages = true;
|
154 |
+
break;
|
155 |
+
}
|
156 |
+
|
157 |
+
foreach ($page['hrefs'] as $href_url => $href) {
|
158 |
+
if (!array_key_exists('scrape_status', $href) || ($href['scrape_status'] != 'finished' && $href['scrape_status'] != 'error')) {
|
159 |
+
$this->linkhero['checker']['results'][$page_url]['status'] = 'pending';
|
160 |
+
$pending_pages = true;
|
161 |
+
break;
|
162 |
+
}
|
163 |
+
}
|
164 |
+
}
|
165 |
+
|
166 |
+
if (array_key_exists('results', $this->linkhero['checker']) && count($this->linkhero['checker']['results']) > 0 && !$pending_pages) {
|
167 |
+
$this->linkhero['checker']['status'] = 'finished';
|
168 |
+
}
|
169 |
+
update_option('wpel-linkhero', $this->linkhero);
|
170 |
+
} else {
|
171 |
+
//TODO: Handle error
|
172 |
+
return new WP_Error(1, 'An error occured: ' . $res->result);
|
173 |
+
}
|
174 |
+
} else {
|
175 |
+
//TODO: Handle error
|
176 |
+
return $res;
|
177 |
+
}
|
178 |
+
}
|
179 |
+
|
180 |
+
function ajax_tool()
|
181 |
+
{
|
182 |
+
|
183 |
+
switch ($_REQUEST['tool']) {
|
184 |
+
case 'check_links':
|
185 |
+
$this->linkhero['enabled'] = true;
|
186 |
+
|
187 |
+
if (isset($_REQUEST['force']) && $_REQUEST['force'] == 'true') {
|
188 |
+
$this->linkhero = array('checker' => array(), 'enabled' => false);
|
189 |
+
delete_option('wpel-linkhero-subscribed');
|
190 |
+
update_option('wpel-linkhero', $this->linkhero);
|
191 |
+
wp_send_json_success();
|
192 |
+
}
|
193 |
+
|
194 |
+
if (empty($this->linkhero['checker']) || $this->linkhero['checker'] == false || $this->linkhero['checker']['lastscan'] < (time() - 60 * 60 * 24)) {
|
195 |
+
$res = $this->lh_request_scan();
|
196 |
+
if (is_wp_error($res)) {
|
197 |
+
wp_send_json_error($res->get_error_message());
|
198 |
+
} else {
|
199 |
+
wp_send_json_success(array('status' => 'pending'));
|
200 |
+
}
|
201 |
+
} else {
|
202 |
+
//Refresh
|
203 |
+
// TODO: Add some limit to how many times we check status
|
204 |
+
if (!isset($this->linkhero['checker']['job_id']) || empty($this->linkhero['checker']['job_id'])) {
|
205 |
+
wp_send_json_error('No job ID exists');
|
206 |
+
}
|
207 |
+
if ($this->linkhero['checker']['status'] == 'pending') {
|
208 |
+
$this->lh_get_results();
|
209 |
+
}
|
210 |
+
$results = [];
|
211 |
+
|
212 |
+
foreach ($this->linkhero['checker']['results'] as $page_url => $page) {
|
213 |
+
if(!is_array($page)){
|
214 |
+
$page = json_decode($page);
|
215 |
+
}
|
216 |
+
if(!is_array($page)){
|
217 |
+
$page = [];
|
218 |
+
}
|
219 |
+
|
220 |
+
$results[$page_url] = $page;
|
221 |
+
|
222 |
+
$results[$page_url]['links_total'] = 0;
|
223 |
+
$results[$page_url]['links_finished'] = 0;
|
224 |
+
$results[$page_url]['links_error'] = 0;
|
225 |
+
|
226 |
+
if (array_key_exists('hrefs', $page) && is_array($page['hrefs'])) {
|
227 |
+
$results[$page_url]['links_total'] = count($page['hrefs']);
|
228 |
+
$results[$page_url]['links_finished'] = 0;
|
229 |
+
$results[$page_url]['links_error'] = 0;
|
230 |
+
foreach ($page['hrefs'] as $link_url => $url_result) {
|
231 |
+
if (array_key_exists('scrape_status', $url_result) && $url_result['scrape_status'] == 'finished') {
|
232 |
+
$results[$page_url]['links_finished']++;
|
233 |
+
} else if (array_key_exists('scrape_status', $url_result) && $url_result['scrape_status'] == 'error') {
|
234 |
+
$results[$page_url]['links_error']++;
|
235 |
+
}
|
236 |
+
}
|
237 |
+
}
|
238 |
+
}
|
239 |
+
wp_send_json_success(
|
240 |
+
array(
|
241 |
+
'status' => $this->linkhero['checker']['status'],
|
242 |
+
'pages' => $results,
|
243 |
+
'limit' => $this->linkhero['checker']['limit'] > 0 ? $this->linkhero['checker']['limit'] : 0,
|
244 |
+
'total_pages' => $this->linkhero['checker']['total_pages'] > 0 ? $this->linkhero['checker']['total_pages'] : 0
|
245 |
+
)
|
246 |
+
);
|
247 |
+
}
|
248 |
+
break;
|
249 |
+
case 'link_details':
|
250 |
+
$page = $_REQUEST['link'];
|
251 |
+
$results = [];
|
252 |
+
if (array_key_exists($page, $this->linkhero['checker']['results'])) {
|
253 |
+
foreach ($this->linkhero['checker']['results'][$page]['hrefs'] as $href => $details) {
|
254 |
+
$redirects = '';
|
255 |
+
if (array_key_exists('redirects', $details) && count($details['redirects']) > 0) {
|
256 |
+
foreach ($details['redirects'] as $redirect) {
|
257 |
+
$redirects .= '<span class="lh-redirect"><span>' . $redirect['status'] . '</span>' . $redirect['url'] . '</span>';
|
258 |
+
}
|
259 |
+
} else {
|
260 |
+
$redirects = '<i>not redirected</i>';
|
261 |
+
}
|
262 |
+
|
263 |
+
if (array_key_exists('target', $details) && !empty($details['target'])) {
|
264 |
+
$target = $details['target'];
|
265 |
+
} else {
|
266 |
+
$target = '_self';
|
267 |
+
}
|
268 |
+
|
269 |
+
$results[] = [
|
270 |
+
($details['scrape_status'] == 'error' ? '<span title="' . $details['error'] . '" class="wpel_bad dashicons dashicons-editor-unlink"></span><span style="display:none">0</span>' : '<span class="wpel_good dashicons dashicons-admin-links"></span><span style="display:none">1</span>'),
|
271 |
+
'<div class="dt-lh-title">' .
|
272 |
+
$details['text'] . '<br />' .
|
273 |
+
'<a href="' . $details['href'] . '" target="_blank">' . $details['href'] . '</a>' .
|
274 |
+
'<a target="_blank" class="wpel-link-locator" href="' . $page . '?wpel-link-highlight=' . urlencode($details['href']) . '" title="Locate link on page"><span class="dashicons dashicons-pressthis"></span></a><br />' .
|
275 |
+
'</div>',
|
276 |
+
isset($details['title'])?$details['title']:'',
|
277 |
+
isset($details['type'])?$details['type']:'',
|
278 |
+
isset($details['rel']) && strlen($details['rel']) > 0 ? $details['rel'] : '<i>none</i>',
|
279 |
+
$target,
|
280 |
+
$redirects,
|
281 |
+
];
|
282 |
+
}
|
283 |
+
}
|
284 |
+
echo json_encode(['data' => $results]);
|
285 |
+
break;
|
286 |
+
case 'subscribed':
|
287 |
+
update_option('wpel-linkhero-subscribed', true);
|
288 |
+
break;
|
289 |
+
default:
|
290 |
+
wp_send_json_error('Unknown action');
|
291 |
+
break;
|
292 |
+
}
|
293 |
+
die();
|
294 |
+
}
|
295 |
+
}
|
296 |
+
|
297 |
+
/*?>*/
|
includes/class-wpel-plugin.php
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
|
|
2 |
/**
|
3 |
* Class WPEL_Plugin
|
4 |
*
|
@@ -16,10 +17,9 @@ final class WPEL_Plugin extends FWP_Plugin_Base_1x0x0
|
|
16 |
* @param string $plugin_file
|
17 |
* @param string $plugin_dir
|
18 |
*/
|
19 |
-
protected function init(
|
20 |
{
|
21 |
-
parent::init(
|
22 |
-
|
23 |
$this->create_components();
|
24 |
}
|
25 |
|
@@ -31,29 +31,26 @@ final class WPEL_Plugin extends FWP_Plugin_Base_1x0x0
|
|
31 |
WPEL_Register_Scripts::create();
|
32 |
|
33 |
// network admin page
|
34 |
-
$network_page = WPEL_Network_Page::create(
|
35 |
'network-settings' => WPEL_Network_Fields::create(),
|
36 |
'network-admin-settings' => WPEL_Network_Admin_Fields::create(),
|
37 |
-
)
|
38 |
|
39 |
// admin settings page
|
40 |
-
$settings_page = WPEL_Settings_Page::create(
|
41 |
'external-links' => WPEL_External_Link_Fields::create(),
|
42 |
'internal-links' => WPEL_Internal_Link_Fields::create(),
|
43 |
'excluded-links' => WPEL_Excluded_Link_Fields::create(),
|
44 |
'admin' => WPEL_Admin_Fields::create(),
|
45 |
'exceptions' => WPEL_Exceptions_Fields::create(),
|
46 |
-
)
|
47 |
|
48 |
// front site
|
49 |
-
if (
|
50 |
-
WPEL_Front::create(
|
51 |
}
|
52 |
|
53 |
// update procedures
|
54 |
WPEL_Update::create();
|
55 |
}
|
56 |
-
|
57 |
}
|
58 |
-
|
59 |
-
/*?>*/
|
1 |
<?php
|
2 |
+
|
3 |
/**
|
4 |
* Class WPEL_Plugin
|
5 |
*
|
17 |
* @param string $plugin_file
|
18 |
* @param string $plugin_dir
|
19 |
*/
|
20 |
+
protected function init($plugin_file, $plugin_dir)
|
21 |
{
|
22 |
+
parent::init($plugin_file, $plugin_dir);
|
|
|
23 |
$this->create_components();
|
24 |
}
|
25 |
|
31 |
WPEL_Register_Scripts::create();
|
32 |
|
33 |
// network admin page
|
34 |
+
$network_page = WPEL_Network_Page::create(array(
|
35 |
'network-settings' => WPEL_Network_Fields::create(),
|
36 |
'network-admin-settings' => WPEL_Network_Admin_Fields::create(),
|
37 |
+
));
|
38 |
|
39 |
// admin settings page
|
40 |
+
$settings_page = WPEL_Settings_Page::create($network_page, array(
|
41 |
'external-links' => WPEL_External_Link_Fields::create(),
|
42 |
'internal-links' => WPEL_Internal_Link_Fields::create(),
|
43 |
'excluded-links' => WPEL_Excluded_Link_Fields::create(),
|
44 |
'admin' => WPEL_Admin_Fields::create(),
|
45 |
'exceptions' => WPEL_Exceptions_Fields::create(),
|
46 |
+
));
|
47 |
|
48 |
// front site
|
49 |
+
if (!is_admin()) {
|
50 |
+
WPEL_Front::create($settings_page);
|
51 |
}
|
52 |
|
53 |
// update procedures
|
54 |
WPEL_Update::create();
|
55 |
}
|
|
|
56 |
}
|
|
|
|
includes/class-wpel-register-scripts.php
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
|
|
2 |
/**
|
3 |
* Class WPEL_Register_Scripts
|
4 |
*
|
@@ -32,50 +33,67 @@ final class WPEL_Register_Scripts extends WPRun_Base_1x0x0
|
|
32 |
*/
|
33 |
protected function register_scripts()
|
34 |
{
|
35 |
-
$plugin_version = get_option(
|
36 |
|
37 |
// set style font awesome icons
|
38 |
wp_register_style(
|
39 |
-
'font-awesome'
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
);
|
44 |
|
45 |
// front style
|
46 |
wp_register_style(
|
47 |
-
'wpel-style'
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
);
|
52 |
|
53 |
// set admin style
|
54 |
wp_register_style(
|
55 |
-
'wpel-admin-style'
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
);
|
60 |
|
61 |
// set admin global style
|
62 |
wp_register_style(
|
63 |
-
'wpel-admin-global-style'
|
64 |
-
|
65 |
-
|
66 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
);
|
68 |
|
|
|
|
|
|
|
|
|
|
|
|
|
69 |
// set wpel admin script
|
70 |
wp_register_script(
|
71 |
-
'wpel-admin-script'
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
);
|
77 |
-
}
|
78 |
|
|
|
|
|
79 |
}
|
80 |
|
81 |
/*?>*/
|
1 |
<?php
|
2 |
+
|
3 |
/**
|
4 |
* Class WPEL_Register_Scripts
|
5 |
*
|
33 |
*/
|
34 |
protected function register_scripts()
|
35 |
{
|
36 |
+
$plugin_version = get_option('wpel-version');
|
37 |
|
38 |
// set style font awesome icons
|
39 |
wp_register_style(
|
40 |
+
'font-awesome',
|
41 |
+
'https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css',
|
42 |
+
array(),
|
43 |
+
$plugin_version
|
44 |
);
|
45 |
|
46 |
// front style
|
47 |
wp_register_style(
|
48 |
+
'wpel-style',
|
49 |
+
plugins_url('/public/css/wpel.css', WPEL_Plugin::get_plugin_file()),
|
50 |
+
array(),
|
51 |
+
$plugin_version
|
52 |
);
|
53 |
|
54 |
// set admin style
|
55 |
wp_register_style(
|
56 |
+
'wpel-admin-style',
|
57 |
+
plugins_url('/public/css/wpel-admin.css', WPEL_Plugin::get_plugin_file()),
|
58 |
+
array(),
|
59 |
+
$plugin_version
|
60 |
);
|
61 |
|
62 |
// set admin global style
|
63 |
wp_register_style(
|
64 |
+
'wpel-admin-global-style',
|
65 |
+
plugins_url('/public/css/wpel-admin-global.css', WPEL_Plugin::get_plugin_file()),
|
66 |
+
array(),
|
67 |
+
$plugin_version
|
68 |
+
);
|
69 |
+
|
70 |
+
$linkhero = get_option('wpel-linkhero', array('checker' => array(), 'enabled' => false));
|
71 |
+
if(!isset($linkhero['enabled'])){
|
72 |
+
$linkhero['enabled'] = false;
|
73 |
+
}
|
74 |
+
$wpel_js = array(
|
75 |
+
'nonce_ajax' => wp_create_nonce('wpel_run_tool'),
|
76 |
+
'loader' => admin_url('/images/spinner.gif'),
|
77 |
+
'link_checking_enabled' => false
|
78 |
);
|
79 |
|
80 |
+
$wpel_js['lh_url'] = WPEL_LinkHero::$lh_url;
|
81 |
+
|
82 |
+
if(!WPEL_LinkHero::is_localhost()){
|
83 |
+
$wpel_js['link_checking_enabled'] = $linkhero['enabled'];
|
84 |
+
}
|
85 |
+
|
86 |
// set wpel admin script
|
87 |
wp_register_script(
|
88 |
+
'wpel-admin-script',
|
89 |
+
plugins_url('/public/js/wpel-admin.js', WPEL_Plugin::get_plugin_file()),
|
90 |
+
array('jquery'),
|
91 |
+
$plugin_version,
|
92 |
+
true
|
93 |
);
|
|
|
94 |
|
95 |
+
wp_localize_script('wpel-admin-script', 'wpel', $wpel_js);
|
96 |
+
}
|
97 |
}
|
98 |
|
99 |
/*?>*/
|
libs/fwp/class-fwp-debug.php
CHANGED
@@ -65,8 +65,6 @@ class FWP_Debug_1x0x0 extends WPRun_Base_1x0x0
|
|
65 |
}
|
66 |
|
67 |
$content .= var_export( $entry, true );
|
68 |
-
|
69 |
-
error_log( $content );
|
70 |
}
|
71 |
|
72 |
/**
|
65 |
}
|
66 |
|
67 |
$content .= var_export( $entry, true );
|
|
|
|
|
68 |
}
|
69 |
|
70 |
/**
|
libs/fwp/class-fwp-html-fields.php
CHANGED
@@ -132,13 +132,13 @@ class FWP_HTML_Fields_1x0x0
|
|
132 |
>';
|
133 |
}
|
134 |
|
135 |
-
echo '<input type="checkbox"
|
136 |
id="' . $this->get_field_id( $key ) . '"
|
137 |
name="' . $this->get_field_name( $key ) . '"
|
138 |
value="' . esc_attr( $checked_value ) . '"
|
139 |
' . $this->get_checked_attr( $key, $checked_value ) . '
|
140 |
' . $this->get_html_atts( $atts ) . '
|
141 |
-
>';
|
142 |
}
|
143 |
|
144 |
/**
|
@@ -167,13 +167,13 @@ class FWP_HTML_Fields_1x0x0
|
|
167 |
{
|
168 |
$id = $this->get_field_id( $key ) . '-' . sanitize_key( $checked_value );
|
169 |
|
170 |
-
echo '<input type="radio"
|
171 |
id="' . $id . '"
|
172 |
name="' . $this->get_field_name( $key ) . '"
|
173 |
value="' . esc_attr( $checked_value ) . '"
|
174 |
' . $this->get_checked_attr( $key, $checked_value ) . '
|
175 |
' . $this->get_html_atts( $atts ) . '
|
176 |
-
>';
|
177 |
}
|
178 |
|
179 |
/**
|
132 |
>';
|
133 |
}
|
134 |
|
135 |
+
echo '<span class="checkbox-container"><input type="checkbox"
|
136 |
id="' . $this->get_field_id( $key ) . '"
|
137 |
name="' . $this->get_field_name( $key ) . '"
|
138 |
value="' . esc_attr( $checked_value ) . '"
|
139 |
' . $this->get_checked_attr( $key, $checked_value ) . '
|
140 |
' . $this->get_html_atts( $atts ) . '
|
141 |
+
><span class="checkmark"></span></span>';
|
142 |
}
|
143 |
|
144 |
/**
|
167 |
{
|
168 |
$id = $this->get_field_id( $key ) . '-' . sanitize_key( $checked_value );
|
169 |
|
170 |
+
echo '<span class="radio-container"><input type="radio"
|
171 |
id="' . $id . '"
|
172 |
name="' . $this->get_field_name( $key ) . '"
|
173 |
value="' . esc_attr( $checked_value ) . '"
|
174 |
' . $this->get_checked_attr( $key, $checked_value ) . '
|
175 |
' . $this->get_html_atts( $atts ) . '
|
176 |
+
><span class="radio"></span></span>';
|
177 |
}
|
178 |
|
179 |
/**
|
libs/fwp/component-bases/class-fwp-settings-section-base.php
CHANGED
@@ -232,6 +232,7 @@ abstract class FWP_Settings_Section_Base_1x0x0 extends WPRun_Base_1x0x0
|
|
232 |
$label = isset( $field_settings[ 'label' ] ) ? $field_settings[ 'label' ] : '';
|
233 |
$class = isset( $field_settings[ 'class' ] ) ? $field_settings[ 'class' ] : '';
|
234 |
|
|
|
235 |
add_settings_field(
|
236 |
$key
|
237 |
, $label
|
@@ -240,7 +241,7 @@ abstract class FWP_Settings_Section_Base_1x0x0 extends WPRun_Base_1x0x0
|
|
240 |
, $this->get_setting( 'section_id' )
|
241 |
, array(
|
242 |
'key' => $key,
|
243 |
-
'label_for' => $this->html_fields->get_field_id( $key ),
|
244 |
'class' => $class,
|
245 |
)
|
246 |
);
|
232 |
$label = isset( $field_settings[ 'label' ] ) ? $field_settings[ 'label' ] : '';
|
233 |
$class = isset( $field_settings[ 'class' ] ) ? $field_settings[ 'class' ] : '';
|
234 |
|
235 |
+
$label_for_exclude = array('wpel-external-link-settings-rel_noopener', 'wpel-internal-link-settings-rel_noopener', 'wpel-excluded-link-settings-rel_noopener');
|
236 |
add_settings_field(
|
237 |
$key
|
238 |
, $label
|
241 |
, $this->get_setting( 'section_id' )
|
242 |
, array(
|
243 |
'key' => $key,
|
244 |
+
'label_for' => !in_array($this->html_fields->get_field_id( $key ), $label_for_exclude)?$this->html_fields->get_field_id( $key ):'',
|
245 |
'class' => $class,
|
246 |
)
|
247 |
);
|
public/css/jquery.dataTables.min.css
ADDED
@@ -0,0 +1 @@
|
|
|
1 |
+
table.dataTable{width:100%;margin:0 auto;clear:both;border-collapse:separate;border-spacing:0}table.dataTable thead th,table.dataTable tfoot th{font-weight:bold}table.dataTable thead th,table.dataTable thead td{padding:10px 18px;border-bottom:1px solid #111}table.dataTable thead th:active,table.dataTable thead td:active{outline:none}table.dataTable tfoot th,table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc,table.dataTable thead .sorting_asc_disabled,table.dataTable thead .sorting_desc_disabled{cursor:pointer;*cursor:hand;background-repeat:no-repeat;background-position:center right}table.dataTable thead .sorting{background-image:url("../images/sort_both.png")}table.dataTable thead .sorting_asc{background-image:url("../images/sort_asc.png") !important}table.dataTable thead .sorting_desc{background-image:url("../images/sort_desc.png") !important}table.dataTable thead .sorting_asc_disabled{background-image:url("../images/sort_asc_disabled.png")}table.dataTable thead .sorting_desc_disabled{background-image:url("../images/sort_desc_disabled.png")}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#b0bed9}table.dataTable tbody th,table.dataTable tbody td{padding:8px 10px}table.dataTable.row-border tbody th,table.dataTable.row-border tbody td,table.dataTable.display tbody th,table.dataTable.display tbody td{border-top:1px solid #ddd}table.dataTable.row-border tbody tr:first-child th,table.dataTable.row-border tbody tr:first-child td,table.dataTable.display tbody tr:first-child th,table.dataTable.display tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th,table.dataTable.cell-border tbody td{border-top:1px solid #ddd;border-right:1px solid #ddd}table.dataTable.cell-border tbody tr th:first-child,table.dataTable.cell-border tbody tr td:first-child{border-left:1px solid #ddd}table.dataTable.cell-border tbody tr:first-child th,table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.stripe tbody tr.odd,table.dataTable.display tbody tr.odd{background-color:#f9f9f9}table.dataTable.stripe tbody tr.odd.selected,table.dataTable.display tbody tr.odd.selected{background-color:#acbad4}table.dataTable.hover tbody tr:hover,table.dataTable.display tbody tr:hover{background-color:#f6f6f6}table.dataTable.hover tbody tr:hover.selected,table.dataTable.display tbody tr:hover.selected{background-color:#aab7d1}table.dataTable.order-column tbody tr>.sorting_1,table.dataTable.order-column tbody tr>.sorting_2,table.dataTable.order-column tbody tr>.sorting_3,table.dataTable.display tbody tr>.sorting_1,table.dataTable.display tbody tr>.sorting_2,table.dataTable.display tbody tr>.sorting_3{background-color:#fafafa}table.dataTable.order-column tbody tr.selected>.sorting_1,table.dataTable.order-column tbody tr.selected>.sorting_2,table.dataTable.order-column tbody tr.selected>.sorting_3,table.dataTable.display tbody tr.selected>.sorting_1,table.dataTable.display tbody tr.selected>.sorting_2,table.dataTable.display tbody tr.selected>.sorting_3{background-color:#acbad5}table.dataTable.display tbody tr.odd>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.display tbody tr.odd>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.display tbody tr.odd>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:whitesmoke}table.dataTable.display tbody tr.odd.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b4cd}table.dataTable.display tbody tr.odd.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a8b5cf}table.dataTable.display tbody tr.odd.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b7d1}table.dataTable.display tbody tr.even>.sorting_1,table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#fafafa}table.dataTable.display tbody tr.even>.sorting_2,table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fcfcfc}table.dataTable.display tbody tr.even>.sorting_3,table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fefefe}table.dataTable.display tbody tr.even.selected>.sorting_1,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad5}table.dataTable.display tbody tr.even.selected>.sorting_2,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#aebcd6}table.dataTable.display tbody tr.even.selected>.sorting_3,table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.display tbody tr:hover>.sorting_1,table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.display tbody tr:hover>.sorting_2,table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ececec}table.dataTable.display tbody tr:hover>.sorting_3,table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#efefef}table.dataTable.display tbody tr:hover.selected>.sorting_1,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a2aec7}table.dataTable.display tbody tr:hover.selected>.sorting_2,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a3b0c9}table.dataTable.display tbody tr:hover.selected>.sorting_3,table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a5b2cb}table.dataTable.no-footer{border-bottom:1px solid #111}table.dataTable.nowrap th,table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th,table.dataTable.compact thead td{padding:4px 17px}table.dataTable.compact tfoot th,table.dataTable.compact tfoot td{padding:4px}table.dataTable.compact tbody th,table.dataTable.compact tbody td{padding:4px}table.dataTable th.dt-left,table.dataTable td.dt-left{text-align:left}table.dataTable th.dt-center,table.dataTable td.dt-center,table.dataTable td.dataTables_empty{text-align:center}table.dataTable th.dt-right,table.dataTable td.dt-right{text-align:right}table.dataTable th.dt-justify,table.dataTable td.dt-justify{text-align:justify}table.dataTable th.dt-nowrap,table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable thead th.dt-head-left,table.dataTable thead td.dt-head-left,table.dataTable tfoot th.dt-head-left,table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center,table.dataTable thead td.dt-head-center,table.dataTable tfoot th.dt-head-center,table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right,table.dataTable thead td.dt-head-right,table.dataTable tfoot th.dt-head-right,table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify,table.dataTable thead td.dt-head-justify,table.dataTable tfoot th.dt-head-justify,table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap,table.dataTable thead td.dt-head-nowrap,table.dataTable tfoot th.dt-head-nowrap,table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody th.dt-body-left,table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center,table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right,table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify,table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap,table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable,table.dataTable th,table.dataTable td{box-sizing:content-box}.dataTables_wrapper{position:relative;clear:both;*zoom:1;zoom:1}.dataTables_wrapper .dataTables_length{float:left}.dataTables_wrapper .dataTables_length select{border:1px solid #aaa;border-radius:3px;padding:5px;background-color:transparent;padding:4px}.dataTables_wrapper .dataTables_filter{float:right;text-align:right}.dataTables_wrapper .dataTables_filter input{border:1px solid #aaa;border-radius:3px;padding:5px;background-color:transparent;margin-left:3px}.dataTables_wrapper .dataTables_info{clear:both;float:left;padding-top:.755em}.dataTables_wrapper .dataTables_paginate{float:right;text-align:right;padding-top:.25em}.dataTables_wrapper .dataTables_paginate .paginate_button{box-sizing:border-box;display:inline-block;min-width:1.5em;padding:.5em 1em;margin-left:2px;text-align:center;text-decoration:none !important;cursor:pointer;*cursor:hand;color:#333 !important;border:1px solid transparent;border-radius:2px}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{color:#333 !important;border:1px solid #979797;background-color:white;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, white), color-stop(100%, #dcdcdc));background:-webkit-linear-gradient(top, white 0%, #dcdcdc 100%);background:-moz-linear-gradient(top, white 0%, #dcdcdc 100%);background:-ms-linear-gradient(top, white 0%, #dcdcdc 100%);background:-o-linear-gradient(top, white 0%, #dcdcdc 100%);background:linear-gradient(to bottom, white 0%, #dcdcdc 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active{cursor:default;color:#666 !important;border:1px solid transparent;background:transparent;box-shadow:none}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{color:white !important;border:1px solid #111;background-color:#585858;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #585858), color-stop(100%, #111));background:-webkit-linear-gradient(top, #585858 0%, #111 100%);background:-moz-linear-gradient(top, #585858 0%, #111 100%);background:-ms-linear-gradient(top, #585858 0%, #111 100%);background:-o-linear-gradient(top, #585858 0%, #111 100%);background:linear-gradient(to bottom, #585858 0%, #111 100%)}.dataTables_wrapper .dataTables_paginate .paginate_button:active{outline:none;background-color:#2b2b2b;background:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #2b2b2b), color-stop(100%, #0c0c0c));background:-webkit-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-moz-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-ms-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:-o-linear-gradient(top, #2b2b2b 0%, #0c0c0c 100%);background:linear-gradient(to bottom, #2b2b2b 0%, #0c0c0c 100%);box-shadow:inset 0 0 3px #111}.dataTables_wrapper .dataTables_paginate .ellipsis{padding:0 1em}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:white;background:-webkit-gradient(linear, left top, right top, color-stop(0%, rgba(255, 255, 255, 0)), color-stop(25%, rgba(255, 255, 255, 0.9)), color-stop(75%, rgba(255, 255, 255, 0.9)), color-stop(100%, rgba(255, 255, 255, 0)));background:-webkit-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);background:-moz-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);background:-ms-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);background:-o-linear-gradient(left, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%);background:linear-gradient(to right, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 0.9) 25%, rgba(255, 255, 255, 0.9) 75%, rgba(255, 255, 255, 0) 100%)}.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter,.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_processing,.dataTables_wrapper .dataTables_paginate{color:#333}.dataTables_wrapper .dataTables_scroll{clear:both}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody{*margin-top:-1px;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td{vertical-align:middle}.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>thead>tr>td>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>th>div.dataTables_sizing,.dataTables_wrapper .dataTables_scroll div.dataTables_scrollBody>table>tbody>tr>td>div.dataTables_sizing{height:0;overflow:hidden;margin:0 !important;padding:0 !important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:1px solid #111}.dataTables_wrapper.no-footer div.dataTables_scrollHead table.dataTable,.dataTables_wrapper.no-footer div.dataTables_scrollBody>table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:"";clear:both;height:0}@media screen and (max-width: 767px){.dataTables_wrapper .dataTables_info,.dataTables_wrapper .dataTables_paginate{float:none;text-align:center}.dataTables_wrapper .dataTables_paginate{margin-top:.5em}}@media screen and (max-width: 640px){.dataTables_wrapper .dataTables_length,.dataTables_wrapper .dataTables_filter{float:none;text-align:center}.dataTables_wrapper .dataTables_filter{margin-top:.5em}}
|
public/css/wpel-admin.css
CHANGED
@@ -2,68 +2,183 @@
|
|
2 |
* WP External Links Plugin
|
3 |
* Admin Style
|
4 |
*/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
6 |
.wpel-no-label,
|
7 |
.wpel-no-label th,
|
8 |
.wpel-no-label td {
|
9 |
-
|
10 |
}
|
11 |
.wpel-no-label th:after {
|
12 |
-
|
13 |
}
|
14 |
|
15 |
.wpel-hidden {
|
16 |
-
|
17 |
}
|
18 |
|
|
|
|
|
|
|
|
|
19 |
/**
|
20 |
-
* Tabs
|
21 |
*/
|
22 |
|
23 |
.wpel-settings-page .nav-tab i,
|
24 |
.wpel-network-page .nav-tab i {
|
25 |
-
|
26 |
}
|
27 |
|
28 |
.wpel-settings-page .nav-tab-support,
|
29 |
.wpel-network-page .nav-tab-support {
|
30 |
-
|
31 |
}
|
32 |
|
33 |
.wpel-settings-page form,
|
34 |
.wpel-network-page form {
|
35 |
-
|
36 |
}
|
37 |
|
38 |
.js-wpel-apply-child td {
|
39 |
-
|
40 |
}
|
41 |
|
42 |
.wpel-icon-type-image-column {
|
43 |
-
|
44 |
-
|
45 |
}
|
46 |
.wpel-icon-type-image-column:after {
|
47 |
-
|
48 |
}
|
49 |
|
50 |
::-webkit-input-placeholder {
|
51 |
-
|
52 |
-
|
53 |
}
|
54 |
-
:-moz-placeholder {
|
55 |
-
|
56 |
-
|
|
|
57 |
}
|
58 |
-
::-moz-placeholder {
|
59 |
-
|
60 |
-
|
|
|
61 |
}
|
62 |
:-ms-input-placeholder {
|
63 |
-
|
64 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
}
|
66 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
67 |
|
68 |
/**
|
69 |
* Background Icon
|
@@ -71,50 +186,535 @@
|
|
71 |
|
72 |
.wpel-settings-page form:before,
|
73 |
.wpel-network-page form:before {
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
|
|
|
|
|
|
|
|
82 |
}
|
83 |
|
84 |
-
|
85 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
}
|
87 |
-
|
88 |
-
|
|
|
89 |
}
|
90 |
-
|
91 |
-
|
|
|
92 |
}
|
93 |
-
|
94 |
-
|
|
|
|
|
|
|
95 |
}
|
96 |
-
|
97 |
-
|
|
|
|
|
98 |
}
|
99 |
-
|
100 |
-
|
|
|
101 |
}
|
102 |
|
103 |
-
.wpel-
|
104 |
-
|
105 |
}
|
106 |
-
|
107 |
-
|
|
|
108 |
}
|
109 |
-
|
110 |
-
|
|
|
111 |
}
|
112 |
|
113 |
-
.
|
114 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
}
|
116 |
|
117 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
118 |
display: inline-block;
|
119 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
120 |
}
|
2 |
* WP External Links Plugin
|
3 |
* Admin Style
|
4 |
*/
|
5 |
+
.toplevel_page_wpel-settings-page #wpcontent {
|
6 |
+
font-family: "Poppins", sans-serif;
|
7 |
+
font-weight: 400;
|
8 |
+
color: #1d2328;
|
9 |
+
margin-bottom: 30px;
|
10 |
+
}
|
11 |
+
|
12 |
+
.toplevel_page_wpel-settings-page .wrap {
|
13 |
+
margin: 0px;
|
14 |
+
padding: 0px;
|
15 |
+
}
|
16 |
+
|
17 |
+
.wpel-body-wrap {
|
18 |
+
background-color: #fff;
|
19 |
+
padding: 40px 60px;
|
20 |
+
max-width: 1200px;
|
21 |
+
width: 100%;
|
22 |
+
margin: 0 auto;
|
23 |
+
box-sizing: border-box;
|
24 |
+
}
|
25 |
+
|
26 |
+
.toplevel_page_wpel-settings-page #wpcontent {
|
27 |
+
margin-left: 140px;
|
28 |
+
}
|
29 |
+
|
30 |
+
.toplevel_page_wpel-settings-page #wpfooter {
|
31 |
+
background: #fff;
|
32 |
+
padding: 24px 20px;
|
33 |
+
line-height: 20px;
|
34 |
+
font-weight: 400;
|
35 |
+
}
|
36 |
+
|
37 |
+
.wpel-body-wrap form h2{
|
38 |
+
display: none;
|
39 |
+
}
|
40 |
+
|
41 |
+
#wpfooter a {
|
42 |
+
text-decoration: none;
|
43 |
+
}
|
44 |
+
|
45 |
+
#wpfooter span {
|
46 |
+
color: #ffb900;
|
47 |
+
}
|
48 |
+
|
49 |
+
.nav-tab .dashicons {
|
50 |
+
color: #31a3d9;
|
51 |
+
font-size: 18px;
|
52 |
+
margin-right: 4px;
|
53 |
+
line-height: 24px;
|
54 |
+
}
|
55 |
+
|
56 |
+
.toplevel_page_wpel-settings-page .wrap .wpel-logo-wrapper {
|
57 |
+
background: #fff;
|
58 |
+
padding: 18px 20px 14px;
|
59 |
+
line-height: 20px;
|
60 |
+
margin-bottom: 10px;
|
61 |
+
}
|
62 |
+
|
63 |
+
.toplevel_page_wpel-settings-page #footer-thankyou {
|
64 |
+
font-style: normal;
|
65 |
+
}
|
66 |
+
|
67 |
+
.toplevel_page_wpel-settings-page .wrap h1.wpel-logo {
|
68 |
+
width: 100%;
|
69 |
+
max-width: 1200px;
|
70 |
+
margin: 0 auto;
|
71 |
+
padding: 0;
|
72 |
+
line-height: 20px;
|
73 |
+
}
|
74 |
|
75 |
.wpel-no-label,
|
76 |
.wpel-no-label th,
|
77 |
.wpel-no-label td {
|
78 |
+
padding-top: 0;
|
79 |
}
|
80 |
.wpel-no-label th:after {
|
81 |
+
content: "\00a0";
|
82 |
}
|
83 |
|
84 |
.wpel-hidden {
|
85 |
+
display: none;
|
86 |
}
|
87 |
|
88 |
+
.toplevel_page_wpel-settings-page table.dataTable thead th,
|
89 |
+
.toplevel_page_wpel-settings-page table.dataTable thead td{
|
90 |
+
padding: 10px 8px;
|
91 |
+
}
|
92 |
/**
|
93 |
+
* Tabs
|
94 |
*/
|
95 |
|
96 |
.wpel-settings-page .nav-tab i,
|
97 |
.wpel-network-page .nav-tab i {
|
98 |
+
margin-right: 5px;
|
99 |
}
|
100 |
|
101 |
.wpel-settings-page .nav-tab-support,
|
102 |
.wpel-network-page .nav-tab-support {
|
103 |
+
float: right;
|
104 |
}
|
105 |
|
106 |
.wpel-settings-page form,
|
107 |
.wpel-network-page form {
|
108 |
+
position: relative;
|
109 |
}
|
110 |
|
111 |
.js-wpel-apply-child td {
|
112 |
+
padding-left: 30px;
|
113 |
}
|
114 |
|
115 |
.wpel-icon-type-image-column {
|
116 |
+
min-width: 10em;
|
117 |
+
float: left;
|
118 |
}
|
119 |
.wpel-icon-type-image-column:after {
|
120 |
+
clear: both;
|
121 |
}
|
122 |
|
123 |
::-webkit-input-placeholder {
|
124 |
+
color: #ccc;
|
125 |
+
font-style: italic;
|
126 |
}
|
127 |
+
:-moz-placeholder {
|
128 |
+
/* Firefox 18- */
|
129 |
+
color: #ccc;
|
130 |
+
font-style: italic;
|
131 |
}
|
132 |
+
::-moz-placeholder {
|
133 |
+
/* Firefox 19+ */
|
134 |
+
color: #ccc;
|
135 |
+
font-style: italic;
|
136 |
}
|
137 |
:-ms-input-placeholder {
|
138 |
+
color: #ccc;
|
139 |
+
font-style: italic;
|
140 |
+
}
|
141 |
+
|
142 |
+
.nav-tab,
|
143 |
+
.nav-tab:focus,
|
144 |
+
.nav-tab-active,
|
145 |
+
.nav-tab-active:focus,
|
146 |
+
.nav-tab-active:focus:active {
|
147 |
+
background: none;
|
148 |
+
border: none;
|
149 |
+
color: #1d2328;
|
150 |
+
margin-right: 0;
|
151 |
+
margin-left: 0;
|
152 |
+
margin-bottom: -3px;
|
153 |
+
border-bottom: 3px solid #eef3f5;
|
154 |
+
font-weight: 400;
|
155 |
+
padding: 10px 20px;
|
156 |
+
outline: none;
|
157 |
+
box-shadow: none;
|
158 |
+
font-weight: 500;
|
159 |
+
}
|
160 |
+
|
161 |
+
.nav-tab-active,
|
162 |
+
.nav-tab-active:hover,
|
163 |
+
.nav-tab:hover {
|
164 |
+
color: #31a3d9;
|
165 |
+
border-bottom: 3px solid #31a3d9;
|
166 |
+
background: none;
|
167 |
+
margin-right: 0;
|
168 |
+
margin-left: 0;
|
169 |
}
|
170 |
|
171 |
+
.nav-tab-wrapper,
|
172 |
+
.wrap h2.nav-tab-wrapper,
|
173 |
+
h1.nav-tab-wrapper {
|
174 |
+
border-bottom: 3px solid #eef3f5;
|
175 |
+
margin-bottom: 30px;
|
176 |
+
}
|
177 |
+
|
178 |
+
.wpel-body-wrap h2 {
|
179 |
+
font-size: 32px;
|
180 |
+
font-weight: 400;
|
181 |
+
}
|
182 |
|
183 |
/**
|
184 |
* Background Icon
|
186 |
|
187 |
.wpel-settings-page form:before,
|
188 |
.wpel-network-page form:before {
|
189 |
+
font-family: FontAwesome;
|
190 |
+
opacity: 0.2;
|
191 |
+
color: #aaa;
|
192 |
+
font-size: 200pt;
|
193 |
+
position: absolute;
|
194 |
+
top: 140px;
|
195 |
+
right: 40px;
|
196 |
+
z-index: -1;
|
197 |
+
}
|
198 |
+
|
199 |
+
.wrap h2.nav-tab-wrapper {
|
200 |
+
padding-top: 20px;
|
201 |
}
|
202 |
|
203 |
+
#rating-notice, .notice {
|
204 |
+
display: block;
|
205 |
+
width: 1200px;
|
206 |
+
margin: 10px auto !important;
|
207 |
+
box-sizing: border-box;
|
208 |
+
border-right: none;
|
209 |
+
border-top: none;
|
210 |
+
border-bottom: none;
|
211 |
}
|
212 |
+
|
213 |
+
#rating-notice{
|
214 |
+
padding: 15px;
|
215 |
}
|
216 |
+
|
217 |
+
.lh-table-loading {
|
218 |
+
color: #ccc;
|
219 |
}
|
220 |
+
|
221 |
+
.wpel-page-button {
|
222 |
+
background: #fff;
|
223 |
+
border: 1px solid #ccc;
|
224 |
+
padding: 10px;
|
225 |
}
|
226 |
+
|
227 |
+
.wpel-page-button:hover {
|
228 |
+
background: #ececec;
|
229 |
+
cursor: pointer;
|
230 |
}
|
231 |
+
|
232 |
+
.wpel-page-link {
|
233 |
+
color: #b2b2b2;
|
234 |
}
|
235 |
|
236 |
+
.wpel-page-button .wpel-page-button-toggle:before {
|
237 |
+
content: "\f345";
|
238 |
}
|
239 |
+
|
240 |
+
.wpel-page-button.open .wpel-page-button-toggle:before {
|
241 |
+
content: "\f347";
|
242 |
}
|
243 |
+
|
244 |
+
.wpel_good {
|
245 |
+
color: rgb(46, 207, 87);
|
246 |
}
|
247 |
|
248 |
+
.wpel_bad {
|
249 |
+
color: rgb(207, 46, 46);
|
250 |
+
}
|
251 |
+
|
252 |
+
.wpel-redirect-code {
|
253 |
+
color: rgb(213 95 235);
|
254 |
+
font-weight: bold;
|
255 |
+
}
|
256 |
+
|
257 |
+
#lh_results {
|
258 |
+
margin-top: 10px;
|
259 |
+
display: none;
|
260 |
+
border-spacing: 0 10px;
|
261 |
+
border-collapse: separate;
|
262 |
+
width: 100%;
|
263 |
+
}
|
264 |
+
|
265 |
+
#lh_results a {
|
266 |
+
text-decoration: none;
|
267 |
+
}
|
268 |
+
|
269 |
+
#lh_results tr td {
|
270 |
+
border-bottom: 1px solid #eef2f4;
|
271 |
+
border-top: 1px solid #eef2f4;
|
272 |
+
padding: 20px 10px;
|
273 |
+
}
|
274 |
+
|
275 |
+
#lh_results tr td:first-child {
|
276 |
+
border-left: 1px solid #eef2f4;
|
277 |
+
padding-left: 20px;
|
278 |
+
border-top-left-radius: 4px;
|
279 |
+
border-bottom-left-radius: 4px;
|
280 |
+
}
|
281 |
+
|
282 |
+
#lh_results tr td:last-child {
|
283 |
+
border-right: 1px solid #eef2f4;
|
284 |
+
padding-right: 20px;
|
285 |
+
border-top-right-radius: 4px;
|
286 |
+
border-bottom-right-radius: 4px;
|
287 |
+
}
|
288 |
+
|
289 |
+
#lh_results a .dashicons-external {
|
290 |
+
font-size: 16px;
|
291 |
+
line-height: 20px;
|
292 |
+
}
|
293 |
+
|
294 |
+
.wpel-page-details table {
|
295 |
+
margin-top: 6px;
|
296 |
+
}
|
297 |
+
|
298 |
+
.wpel-loader {
|
299 |
+
vertical-align: text-top;
|
300 |
+
margin-right: 4px;
|
301 |
+
opacity: 0.5;
|
302 |
+
}
|
303 |
+
|
304 |
+
.lh_results_loader {
|
305 |
+
width: 100%;
|
306 |
+
text-align: center;
|
307 |
+
}
|
308 |
+
|
309 |
+
#lh_details {
|
310 |
+
width: 100%;
|
311 |
+
height: 100%;
|
312 |
+
position: fixed;
|
313 |
+
display: none;
|
314 |
+
top: 0px;
|
315 |
+
left: 0px;
|
316 |
+
background: #fff;
|
317 |
+
z-index: 100051;
|
318 |
+
padding: 40px;
|
319 |
+
box-sizing: border-box;
|
320 |
+
}
|
321 |
+
|
322 |
+
#lh_pro{
|
323 |
+
display: none;
|
324 |
+
margin: 20px 0;
|
325 |
+
font-size: 20px;
|
326 |
+
text-align: center;
|
327 |
+
line-height: 28px;
|
328 |
+
}
|
329 |
+
|
330 |
+
#lh_pro_count{
|
331 |
+
color: #31a3d9;
|
332 |
+
}
|
333 |
+
|
334 |
+
#lh_details{
|
335 |
+
overflow:auto;
|
336 |
+
}
|
337 |
+
|
338 |
+
#lh_page_details tr td{
|
339 |
+
word-break: break-all;
|
340 |
+
}
|
341 |
+
|
342 |
+
.wpel-link-locator{
|
343 |
+
text-decoration: none;
|
344 |
+
}
|
345 |
+
|
346 |
+
.wpel-link-locator .dashicons{
|
347 |
+
vertical-align: bottom;
|
348 |
+
font-size: 18px;
|
349 |
+
}
|
350 |
+
|
351 |
+
.body_lh_details_open{
|
352 |
+
overflow: hidden;
|
353 |
+
}
|
354 |
+
|
355 |
+
.lh-close {
|
356 |
+
position: absolute;
|
357 |
+
right: 32px;
|
358 |
+
top: 32px;
|
359 |
+
width: 32px;
|
360 |
+
height: 32px;
|
361 |
+
opacity: 0.3;
|
362 |
+
}
|
363 |
+
.lh-close:hover {
|
364 |
+
opacity: 1;
|
365 |
+
}
|
366 |
+
.lh-close:before,
|
367 |
+
.lh-close:after {
|
368 |
+
position: absolute;
|
369 |
+
left: 15px;
|
370 |
+
content: " ";
|
371 |
+
height: 33px;
|
372 |
+
width: 2px;
|
373 |
+
background-color: #333;
|
374 |
+
}
|
375 |
+
.lh-close:before {
|
376 |
+
transform: rotate(45deg);
|
377 |
+
}
|
378 |
+
.lh-close:after {
|
379 |
+
transform: rotate(-45deg);
|
380 |
+
}
|
381 |
+
|
382 |
+
#lh_details_title {
|
383 |
+
font-size: 20px;
|
384 |
+
margin: 20px 0;
|
385 |
+
}
|
386 |
+
|
387 |
+
#lh_pro_subscribe{
|
388 |
+
margin-top: 10px;
|
389 |
+
}
|
390 |
+
|
391 |
+
#lh_page_details {
|
392 |
+
border: 1px solid #eef2f4;
|
393 |
}
|
394 |
|
395 |
+
#lh_page_details .odd {
|
396 |
+
background-color: #eef2f4;
|
397 |
+
}
|
398 |
+
|
399 |
+
#lh_page_details tbody th,
|
400 |
+
table.dataTable tbody td {
|
401 |
+
padding: 20px 10px !important;
|
402 |
+
}
|
403 |
+
|
404 |
+
#lh_page_details thead th,
|
405 |
+
table.dataTable thead td {
|
406 |
+
border: none !important;
|
407 |
+
}
|
408 |
+
|
409 |
+
#lh_subscribe_email{
|
410 |
+
padding: 6px 10px;
|
411 |
+
}
|
412 |
+
|
413 |
+
#lh_subscribe_message{
|
414 |
+
width: 400px;
|
415 |
+
margin: 0 auto;
|
416 |
+
display: none;
|
417 |
+
text-align: center;
|
418 |
+
font-size: 12px;
|
419 |
+
font-weight: 400;
|
420 |
+
padding: 10px;
|
421 |
+
border-radius: 4px;
|
422 |
+
margin-top: 8px;
|
423 |
+
}
|
424 |
+
|
425 |
+
#lh_subscribe_button_loader {
|
426 |
+
width: 20px;
|
427 |
+
padding-top: 8px;
|
428 |
+
display: inline-block;
|
429 |
+
vertical-align: middle;
|
430 |
+
}
|
431 |
+
|
432 |
+
.lh-subscribe-good{
|
433 |
+
border: 1px solid #0d853b;
|
434 |
+
background: #ecfff8;
|
435 |
+
}
|
436 |
+
|
437 |
+
.lh-subscribe-bad{
|
438 |
+
border: 1px solid #ff2222;
|
439 |
+
background: #ffecec;
|
440 |
+
}
|
441 |
+
|
442 |
+
.dataTables_length {
|
443 |
+
display: none;
|
444 |
+
}
|
445 |
+
|
446 |
+
.wpel-logo {
|
447 |
+
width: 100%;
|
448 |
+
}
|
449 |
+
|
450 |
+
|
451 |
+
|
452 |
+
.toplevel_page_wpel-settings-page .checkbox-container,
|
453 |
+
.toplevel_page_wpel-settings-page .radio-container {
|
454 |
display: inline-block;
|
455 |
+
position: relative;
|
456 |
+
padding-left: 15px;
|
457 |
+
margin-bottom: 12px;
|
458 |
+
cursor: pointer;
|
459 |
+
font-size: 22px;
|
460 |
+
-webkit-user-select: none;
|
461 |
+
-moz-user-select: none;
|
462 |
+
-ms-user-select: none;
|
463 |
+
user-select: none;
|
464 |
+
width: 20px;
|
465 |
+
height: 16px;
|
466 |
+
vertical-align: middle;
|
467 |
+
}
|
468 |
+
|
469 |
+
.toplevel_page_wpel-settings-page .checkbox-container input,
|
470 |
+
.toplevel_page_wpel-settings-page .radio-container input {
|
471 |
+
position: absolute;
|
472 |
+
opacity: 0;
|
473 |
+
cursor: pointer;
|
474 |
+
height: 0;
|
475 |
+
width: 0;
|
476 |
+
}
|
477 |
+
|
478 |
+
.toplevel_page_wpel-settings-page .checkmark {
|
479 |
+
position: absolute;
|
480 |
+
top: 0;
|
481 |
+
left: 0;
|
482 |
+
height: 25px;
|
483 |
+
width: 25px;
|
484 |
+
background-color: #eef3f5;
|
485 |
+
}
|
486 |
+
|
487 |
+
.toplevel_page_wpel-settings-page .checkbox-container:hover input ~ .checkmark,
|
488 |
+
.toplevel_page_wpel-settings-page .radio-container:hover input ~ .radio {
|
489 |
+
background-color: #ccc;
|
490 |
+
}
|
491 |
+
|
492 |
+
.toplevel_page_wpel-settings-page .checkbox-container input:checked ~ .checkmark,
|
493 |
+
.toplevel_page_wpel-settings-page .radio-container input:checked ~ .radio {
|
494 |
+
background-color: #31a3d9;
|
495 |
+
}
|
496 |
+
|
497 |
+
.toplevel_page_wpel-settings-page .checkmark:after,
|
498 |
+
.toplevel_page_wpel-settings-page .radio:after {
|
499 |
+
content: "";
|
500 |
+
position: absolute;
|
501 |
+
display: none;
|
502 |
+
}
|
503 |
+
|
504 |
+
.toplevel_page_wpel-settings-page .checkbox-container input:checked ~ .checkmark:after,
|
505 |
+
.toplevel_page_wpel-settings-page .radio-container input:checked ~ .radio:after {
|
506 |
+
display: block;
|
507 |
+
}
|
508 |
+
|
509 |
+
.toplevel_page_wpel-settings-page .checkbox-container .checkmark:after {
|
510 |
+
left: 9px;
|
511 |
+
top: 6px;
|
512 |
+
width: 4px;
|
513 |
+
height: 8px;
|
514 |
+
border: solid white;
|
515 |
+
border-width: 0 2px 2px 0;
|
516 |
+
-webkit-transform: rotate(45deg);
|
517 |
+
-ms-transform: rotate(45deg);
|
518 |
+
transform: rotate(45deg);
|
519 |
+
}
|
520 |
+
|
521 |
+
.toplevel_page_wpel-settings-page .radio {
|
522 |
+
position: absolute;
|
523 |
+
top: 0;
|
524 |
+
left: 0;
|
525 |
+
height: 25px;
|
526 |
+
width: 25px;
|
527 |
+
background-color: #eee;
|
528 |
+
border-radius: 50%;
|
529 |
+
}
|
530 |
+
|
531 |
+
.toplevel_page_wpel-settings-page .radio-container .radio:after {
|
532 |
+
top: 9px;
|
533 |
+
left: 9px;
|
534 |
+
width: 8px;
|
535 |
+
height: 8px;
|
536 |
+
border-radius: 50%;
|
537 |
+
background: white;
|
538 |
+
}
|
539 |
+
|
540 |
+
.toplevel_page_wpel-settings-page input[type="text"],
|
541 |
+
.toplevel_page_wpel-settings-page select {
|
542 |
+
background-color: #eef3f5;
|
543 |
+
padding: 10px;
|
544 |
+
border: none;
|
545 |
+
width: 100%;
|
546 |
+
max-width: 400px;
|
547 |
+
}
|
548 |
+
|
549 |
+
.toplevel_page_wpel-settings-page textarea {
|
550 |
+
background-color: #eef3f5;
|
551 |
+
padding: 10px;
|
552 |
+
border: none;
|
553 |
+
width: 100%;
|
554 |
+
}
|
555 |
+
|
556 |
+
.wp-core-ui .button-primary {
|
557 |
+
background: #31a3d9;
|
558 |
+
border-color: #31a3d9;
|
559 |
+
color: #fff;
|
560 |
+
text-decoration: none;
|
561 |
+
text-shadow: none;
|
562 |
+
padding: 6px 40px;
|
563 |
+
font-size: 12px;
|
564 |
+
font-weight: 300;
|
565 |
+
}
|
566 |
+
|
567 |
+
code,
|
568 |
+
kbd {
|
569 |
+
background-color: #eef3f5;
|
570 |
+
}
|
571 |
+
|
572 |
+
.lh-results-loader td{
|
573 |
+
text-align: center;
|
574 |
+
}
|
575 |
+
|
576 |
+
.lh-results-stats{
|
577 |
+
width:100px;
|
578 |
+
}
|
579 |
+
.lh-results-stats span{
|
580 |
+
display: block;
|
581 |
+
}
|
582 |
+
.lh-results-links-total{
|
583 |
+
color: #31a3d9;
|
584 |
+
}
|
585 |
+
.lh-results-links-finished{
|
586 |
+
color: #92c360;
|
587 |
+
}
|
588 |
+
.lh-results-links-error{
|
589 |
+
color: #ee0b0b;
|
590 |
+
}
|
591 |
+
|
592 |
+
.lh-search-wrapper{
|
593 |
+
position: relative;
|
594 |
+
display: none;
|
595 |
+
margin-top: 20px;
|
596 |
+
width: 400px;
|
597 |
+
}
|
598 |
+
|
599 |
+
#lh_page_details_filter input[type="search"]{
|
600 |
+
width: 400px;
|
601 |
+
background-color: #eef3f5;
|
602 |
+
border: none;
|
603 |
+
}
|
604 |
+
|
605 |
+
#lh_page_details_filter:after,
|
606 |
+
.lh-search-wrapper::after {
|
607 |
+
content: "\f179";
|
608 |
+
font-family: dashicons;
|
609 |
+
display: inline-block;
|
610 |
+
line-height: 1;
|
611 |
+
font-weight: 400;
|
612 |
+
font-style: normal;
|
613 |
+
text-decoration: inherit;
|
614 |
+
text-transform: none;
|
615 |
+
text-rendering: auto;
|
616 |
+
-webkit-font-smoothing: antialiased;
|
617 |
+
-moz-osx-font-smoothing: grayscale;
|
618 |
+
width: 20px;
|
619 |
+
height: 20px;
|
620 |
+
font-size: 28px;
|
621 |
+
vertical-align: top;
|
622 |
+
text-align: center;
|
623 |
+
transition: color .1s ease-in;
|
624 |
+
position: absolute;
|
625 |
+
top: 10px;
|
626 |
+
right: 15px;
|
627 |
+
color: #899aa7;
|
628 |
+
}
|
629 |
+
|
630 |
+
#lh_page_details_filter:after{
|
631 |
+
top:6px;
|
632 |
+
}
|
633 |
+
|
634 |
+
#lh_page_details_filter{
|
635 |
+
margin-bottom: 10px;
|
636 |
+
}
|
637 |
+
|
638 |
+
#lh_support p {
|
639 |
+
font-size: 14px;
|
640 |
+
margin-top: 20px;
|
641 |
+
}
|
642 |
+
|
643 |
+
.dataTables_wrapper .dataTables_paginate .paginate_button.current,
|
644 |
+
.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{
|
645 |
+
background: none !important;
|
646 |
+
border: none !important;
|
647 |
+
}
|
648 |
+
|
649 |
+
.toplevel_page_wpel-settings-page .dataTables_wrapper .dataTables_paginate .paginate_button:hover {
|
650 |
+
color: #368cd3 !important;
|
651 |
+
background: transparent;
|
652 |
+
border-color: transparent;
|
653 |
+
}
|
654 |
+
|
655 |
+
.lh-redirect {
|
656 |
+
display: block;
|
657 |
+
width: 230px;
|
658 |
+
padding: 4px 0;
|
659 |
+
}
|
660 |
+
|
661 |
+
.lh-redirect span {
|
662 |
+
color: #de9900;
|
663 |
+
padding-right: 4px;
|
664 |
+
}
|
665 |
+
|
666 |
+
#wpel-external-link-settings-icon_dashicon,
|
667 |
+
#wpel-external-link-settings-icon_fontawesome,
|
668 |
+
#wpel-internal-link-settings-icon_dashicon,
|
669 |
+
#wpel-internal-link-settings-icon_fontawesome{
|
670 |
+
font-size: 20px;
|
671 |
+
width: 80px;
|
672 |
+
padding: 4px 10px;
|
673 |
+
color: #1d2327;
|
674 |
+
}
|
675 |
+
|
676 |
+
.dt-lh-title{
|
677 |
+
max-width: 400px;
|
678 |
+
}
|
679 |
+
|
680 |
+
#lh-progress-bar-wrapper{
|
681 |
+
display: none;
|
682 |
+
width:100%;
|
683 |
+
margin-top: 20px;
|
684 |
+
background:#eef3f5;
|
685 |
+
border-radius: 4px;
|
686 |
+
}
|
687 |
+
|
688 |
+
#lh-progress-bar{
|
689 |
+
width:1%;
|
690 |
+
background-color: #31a3d9;
|
691 |
+
display: block;
|
692 |
+
height: 4px;
|
693 |
+
border-radius: 4px;
|
694 |
+
}
|
695 |
+
|
696 |
+
.notice-box-error {
|
697 |
+
max-width: 700px;
|
698 |
+
padding: 10px 10px 10px 20px;
|
699 |
+
border: thin solid red;
|
700 |
+
border-left-width: 5px;
|
701 |
+
margin-bottom: 30px;
|
702 |
+
font-size: 14px;
|
703 |
+
}
|
704 |
+
|
705 |
+
.notice-box-info {
|
706 |
+
max-width: 700px;
|
707 |
+
padding: 10px 10px 10px 20px;
|
708 |
+
border: thin solid #31a3d9;
|
709 |
+
border-left-width: 5px;
|
710 |
+
margin-bottom: 30px;
|
711 |
+
font-size: 14px;
|
712 |
+
}
|
713 |
+
|
714 |
+
.notice-box-error p, .notice-box-info p {
|
715 |
+
font-size: 14px;
|
716 |
+
}
|
717 |
+
|
718 |
+
#wpel-checker-consent p {
|
719 |
+
font-size: 14px;
|
720 |
}
|
public/images/logo.png
ADDED
Binary file
|
public/js/jquery.dataTables.min.js
ADDED
@@ -0,0 +1,184 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
Copyright 2008-2021 SpryMedia Ltd.
|
3 |
+
|
4 |
+
This source file is free software, available under the following license:
|
5 |
+
MIT license - http://datatables.net/license
|
6 |
+
|
7 |
+
This source file is distributed in the hope that it will be useful, but
|
8 |
+
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
9 |
+
or FITNESS FOR A PARTICULAR PURPOSE. See the license files for details.
|
10 |
+
|
11 |
+
For details please refer to: http://www.datatables.net
|
12 |
+
DataTables 1.10.25
|
13 |
+
©2008-2021 SpryMedia Ltd - datatables.net/license
|
14 |
+
*/
|
15 |
+
var $jscomp=$jscomp||{};$jscomp.scope={};$jscomp.findInternal=function(k,y,z){k instanceof String&&(k=String(k));for(var q=k.length,G=0;G<q;G++){var O=k[G];if(y.call(z,O,G,k))return{i:G,v:O}}return{i:-1,v:void 0}};$jscomp.ASSUME_ES5=!1;$jscomp.ASSUME_NO_NATIVE_MAP=!1;$jscomp.ASSUME_NO_NATIVE_SET=!1;$jscomp.SIMPLE_FROUND_POLYFILL=!1;$jscomp.ISOLATE_POLYFILLS=!1;
|
16 |
+
$jscomp.defineProperty=$jscomp.ASSUME_ES5||"function"==typeof Object.defineProperties?Object.defineProperty:function(k,y,z){if(k==Array.prototype||k==Object.prototype)return k;k[y]=z.value;return k};$jscomp.getGlobal=function(k){k=["object"==typeof globalThis&&globalThis,k,"object"==typeof window&&window,"object"==typeof self&&self,"object"==typeof global&&global];for(var y=0;y<k.length;++y){var z=k[y];if(z&&z.Math==Math)return z}throw Error("Cannot find global object");};$jscomp.global=$jscomp.getGlobal(this);
|
17 |
+
$jscomp.IS_SYMBOL_NATIVE="function"===typeof Symbol&&"symbol"===typeof Symbol("x");$jscomp.TRUST_ES6_POLYFILLS=!$jscomp.ISOLATE_POLYFILLS||$jscomp.IS_SYMBOL_NATIVE;$jscomp.polyfills={};$jscomp.propertyToPolyfillSymbol={};$jscomp.POLYFILL_PREFIX="$jscp$";var $jscomp$lookupPolyfilledValue=function(k,y){var z=$jscomp.propertyToPolyfillSymbol[y];if(null==z)return k[y];z=k[z];return void 0!==z?z:k[y]};
|
18 |
+
$jscomp.polyfill=function(k,y,z,q){y&&($jscomp.ISOLATE_POLYFILLS?$jscomp.polyfillIsolated(k,y,z,q):$jscomp.polyfillUnisolated(k,y,z,q))};$jscomp.polyfillUnisolated=function(k,y,z,q){z=$jscomp.global;k=k.split(".");for(q=0;q<k.length-1;q++){var G=k[q];if(!(G in z))return;z=z[G]}k=k[k.length-1];q=z[k];y=y(q);y!=q&&null!=y&&$jscomp.defineProperty(z,k,{configurable:!0,writable:!0,value:y})};
|
19 |
+
$jscomp.polyfillIsolated=function(k,y,z,q){var G=k.split(".");k=1===G.length;q=G[0];q=!k&&q in $jscomp.polyfills?$jscomp.polyfills:$jscomp.global;for(var O=0;O<G.length-1;O++){var ma=G[O];if(!(ma in q))return;q=q[ma]}G=G[G.length-1];z=$jscomp.IS_SYMBOL_NATIVE&&"es6"===z?q[G]:null;y=y(z);null!=y&&(k?$jscomp.defineProperty($jscomp.polyfills,G,{configurable:!0,writable:!0,value:y}):y!==z&&($jscomp.propertyToPolyfillSymbol[G]=$jscomp.IS_SYMBOL_NATIVE?$jscomp.global.Symbol(G):$jscomp.POLYFILL_PREFIX+G,
|
20 |
+
G=$jscomp.propertyToPolyfillSymbol[G],$jscomp.defineProperty(q,G,{configurable:!0,writable:!0,value:y})))};$jscomp.polyfill("Array.prototype.find",function(k){return k?k:function(y,z){return $jscomp.findInternal(this,y,z).v}},"es6","es3");
|
21 |
+
(function(k){"function"===typeof define&&define.amd?define(["jquery"],function(y){return k(y,window,document)}):"object"===typeof exports?module.exports=function(y,z){y||(y=window);z||(z="undefined"!==typeof window?require("jquery"):require("jquery")(y));return k(z,y,y.document)}:k(jQuery,window,document)})(function(k,y,z,q){function G(a){var b,c,d={};k.each(a,function(e,f){(b=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" ")&&(c=e.replace(b[0],b[2].toLowerCase()),
|
22 |
+
d[c]=e,"o"===b[1]&&G(a[e]))});a._hungarianMap=d}function O(a,b,c){a._hungarianMap||G(a);var d;k.each(b,function(e,f){d=a._hungarianMap[e];d===q||!c&&b[d]!==q||("o"===d.charAt(0)?(b[d]||(b[d]={}),k.extend(!0,b[d],b[e]),O(a[d],b[d],c)):b[d]=b[e])})}function ma(a){var b=u.defaults.oLanguage,c=b.sDecimal;c&&Wa(c);if(a){var d=a.sZeroRecords;!a.sEmptyTable&&d&&"No data available in table"===b.sEmptyTable&&V(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&d&&"Loading..."===b.sLoadingRecords&&V(a,a,
|
23 |
+
"sZeroRecords","sLoadingRecords");a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&c!==a&&Wa(a)}}function zb(a){R(a,"ordering","bSort");R(a,"orderMulti","bSortMulti");R(a,"orderClasses","bSortClasses");R(a,"orderCellsTop","bSortCellsTop");R(a,"order","aaSorting");R(a,"orderFixed","aaSortingFixed");R(a,"paging","bPaginate");R(a,"pagingType","sPaginationType");R(a,"pageLength","iDisplayLength");R(a,"searching","bFilter");"boolean"===typeof a.sScrollX&&(a.sScrollX=a.sScrollX?"100%":
|
24 |
+
"");"boolean"===typeof a.scrollX&&(a.scrollX=a.scrollX?"100%":"");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&O(u.models.oSearch,a[b])}function Ab(a){R(a,"orderable","bSortable");R(a,"orderData","aDataSort");R(a,"orderSequence","asSorting");R(a,"orderDataType","sortDataType");var b=a.aDataSort;"number"!==typeof b||Array.isArray(b)||(a.aDataSort=[b])}function Bb(a){if(!u.__browser){var b={};u.__browser=b;var c=k("<div/>").css({position:"fixed",top:0,left:-1*k(y).scrollLeft(),height:1,
|
25 |
+
width:1,overflow:"hidden"}).append(k("<div/>").css({position:"absolute",top:1,left:1,width:100,overflow:"scroll"}).append(k("<div/>").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}k.extend(a.oBrowser,u.__browser);a.oScroll.iBarWidth=u.__browser.barWidth}
|
26 |
+
function Cb(a,b,c,d,e,f){var g=!1;if(c!==q){var h=c;g=!0}for(;d!==e;)a.hasOwnProperty(d)&&(h=g?b(h,a[d],d,a):a[d],g=!0,d+=f);return h}function Xa(a,b){var c=u.defaults.column,d=a.aoColumns.length;c=k.extend({},u.models.oColumn,c,{nTh:b?b:z.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=k.extend({},u.models.oSearch,c[d]);Ea(a,d,k(b).data())}function Ea(a,b,c){b=a.aoColumns[b];
|
27 |
+
var d=a.oClasses,e=k(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=e.attr("width")||null;var f=(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==q&&null!==c&&(Ab(c),O(u.defaults.column,c,!0),c.mDataProp===q||c.mData||(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),c.sClass&&e.addClass(c.sClass),k.extend(b,c),V(b,c,"sWidth","sWidthOrig"),c.iDataSort!==q&&(b.aDataSort=[c.iDataSort]),V(b,c,"aDataSort"));var g=b.mData,h=ia(g),
|
28 |
+
l=b.mRender?ia(b.mRender):null;c=function(n){return"string"===typeof n&&-1!==n.indexOf("@")};b._bAttrSrc=k.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b._setter=null;b.fnGetData=function(n,m,p){var t=h(n,m,q,p);return l&&m?l(t,m,n,p):t};b.fnSetData=function(n,m,p){return da(g)(n,m,p)};"number"!==typeof g&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==k.inArray("asc",b.asSorting);c=-1!==k.inArray("desc",b.asSorting);b.bSortable&&(a||c)?a&&!c?
|
29 |
+
(b.sSortingClass=d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI):(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI="")}function ra(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ya(a);for(var c=0,d=b.length;c<d;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;""===b.sY&&""===b.sX||Fa(a);H(a,null,"column-sizing",[a])}function sa(a,b){a=Ga(a,"bVisible");
|
30 |
+
return"number"===typeof a[b]?a[b]:null}function ta(a,b){a=Ga(a,"bVisible");b=k.inArray(b,a);return-1!==b?b:null}function na(a){var b=0;k.each(a.aoColumns,function(c,d){d.bVisible&&"none"!==k(d.nTh).css("display")&&b++});return b}function Ga(a,b){var c=[];k.map(a.aoColumns,function(d,e){d[b]&&c.push(e)});return c}function Za(a){var b=a.aoColumns,c=a.aoData,d=u.ext.type.detect,e,f,g;var h=0;for(e=b.length;h<e;h++){var l=b[h];var n=[];if(!l.sType&&l._sManualType)l.sType=l._sManualType;else if(!l.sType){var m=
|
31 |
+
0;for(f=d.length;m<f;m++){var p=0;for(g=c.length;p<g;p++){n[p]===q&&(n[p]=S(a,p,h,"type"));var t=d[m](n[p],a);if(!t&&m!==d.length-1)break;if("html"===t&&!Z(n[p]))break}if(t){l.sType=t;break}}l.sType||(l.sType="string")}}}function Db(a,b,c,d){var e,f,g,h=a.aoColumns;if(b)for(e=b.length-1;0<=e;e--){var l=b[e];var n=l.targets!==q?l.targets:l.aTargets;Array.isArray(n)||(n=[n]);var m=0;for(f=n.length;m<f;m++)if("number"===typeof n[m]&&0<=n[m]){for(;h.length<=n[m];)Xa(a);d(n[m],l)}else if("number"===typeof n[m]&&
|
32 |
+
0>n[m])d(h.length+n[m],l);else if("string"===typeof n[m]){var p=0;for(g=h.length;p<g;p++)("_all"==n[m]||k(h[p].nTh).hasClass(n[m]))&&d(p,l)}}if(c)for(e=0,a=c.length;e<a;e++)d(e,c[e])}function ea(a,b,c,d){var e=a.aoData.length,f=k.extend(!0,{},u.models.oRow,{src:c?"dom":"data",idx:e});f._aData=b;a.aoData.push(f);for(var g=a.aoColumns,h=0,l=g.length;h<l;h++)g[h].sType=null;a.aiDisplayMaster.push(e);b=a.rowIdFn(b);b!==q&&(a.aIds[b]=f);!c&&a.oFeatures.bDeferRender||$a(a,e,c,d);return e}function Ha(a,
|
33 |
+
b){var c;b instanceof k||(b=k(b));return b.map(function(d,e){c=ab(a,e);return ea(a,c.data,e,c.cells)})}function S(a,b,c,d){var e=a.iDraw,f=a.aoColumns[c],g=a.aoData[b]._aData,h=f.sDefaultContent,l=f.fnGetData(g,d,{settings:a,row:b,col:c});if(l===q)return a.iDrawError!=e&&null===h&&(ca(a,0,"Requested unknown parameter "+("function"==typeof f.mData?"{function}":"'"+f.mData+"'")+" for row "+b+", column "+c,4),a.iDrawError=e),h;if((l===g||null===l)&&null!==h&&d!==q)l=h;else if("function"===typeof l)return l.call(g);
|
34 |
+
return null===l&&"display"==d?"":l}function Eb(a,b,c,d){a.aoColumns[c].fnSetData(a.aoData[b]._aData,d,{settings:a,row:b,col:c})}function bb(a){return k.map(a.match(/(\\.|[^\.])+/g)||[""],function(b){return b.replace(/\\\./g,".")})}function ia(a){if(k.isPlainObject(a)){var b={};k.each(a,function(d,e){e&&(b[d]=ia(e))});return function(d,e,f,g){var h=b[e]||b._;return h!==q?h(d,e,f,g):d}}if(null===a)return function(d){return d};if("function"===typeof a)return function(d,e,f,g){return a(d,e,f,g)};if("string"!==
|
35 |
+
typeof a||-1===a.indexOf(".")&&-1===a.indexOf("[")&&-1===a.indexOf("("))return function(d,e){return d[a]};var c=function(d,e,f){if(""!==f){var g=bb(f);for(var h=0,l=g.length;h<l;h++){f=g[h].match(ua);var n=g[h].match(oa);if(f){g[h]=g[h].replace(ua,"");""!==g[h]&&(d=d[g[h]]);n=[];g.splice(0,h+1);g=g.join(".");if(Array.isArray(d))for(h=0,l=d.length;h<l;h++)n.push(c(d[h],e,g));d=f[0].substring(1,f[0].length-1);d=""===d?n:n.join(d);break}else if(n){g[h]=g[h].replace(oa,"");d=d[g[h]]();continue}if(null===
|
36 |
+
d||d[g[h]]===q)return q;d=d[g[h]]}}return d};return function(d,e){return c(d,e,a)}}function da(a){if(k.isPlainObject(a))return da(a._);if(null===a)return function(){};if("function"===typeof a)return function(c,d,e){a(c,"set",d,e)};if("string"!==typeof a||-1===a.indexOf(".")&&-1===a.indexOf("[")&&-1===a.indexOf("("))return function(c,d){c[a]=d};var b=function(c,d,e){e=bb(e);var f=e[e.length-1];for(var g,h,l=0,n=e.length-1;l<n;l++){if("__proto__"===e[l]||"constructor"===e[l])throw Error("Cannot set prototype values");
|
37 |
+
g=e[l].match(ua);h=e[l].match(oa);if(g){e[l]=e[l].replace(ua,"");c[e[l]]=[];f=e.slice();f.splice(0,l+1);g=f.join(".");if(Array.isArray(d))for(h=0,n=d.length;h<n;h++)f={},b(f,d[h],g),c[e[l]].push(f);else c[e[l]]=d;return}h&&(e[l]=e[l].replace(oa,""),c=c[e[l]](d));if(null===c[e[l]]||c[e[l]]===q)c[e[l]]={};c=c[e[l]]}if(f.match(oa))c[f.replace(oa,"")](d);else c[f.replace(ua,"")]=d};return function(c,d){return b(c,d,a)}}function cb(a){return T(a.aoData,"_aData")}function Ia(a){a.aoData.length=0;a.aiDisplayMaster.length=
|
38 |
+
0;a.aiDisplay.length=0;a.aIds={}}function Ja(a,b,c){for(var d=-1,e=0,f=a.length;e<f;e++)a[e]==b?d=e:a[e]>b&&a[e]--; -1!=d&&c===q&&a.splice(d,1)}function va(a,b,c,d){var e=a.aoData[b],f,g=function(l,n){for(;l.childNodes.length;)l.removeChild(l.firstChild);l.innerHTML=S(a,b,n,"display")};if("dom"!==c&&(c&&"auto"!==c||"dom"!==e.src)){var h=e.anCells;if(h)if(d!==q)g(h[d],d);else for(c=0,f=h.length;c<f;c++)g(h[c],c)}else e._aData=ab(a,e,d,d===q?q:e._aData).data;e._aSortData=null;e._aFilterData=null;g=
|
39 |
+
a.aoColumns;if(d!==q)g[d].sType=null;else{c=0;for(f=g.length;c<f;c++)g[c].sType=null;db(a,e)}}function ab(a,b,c,d){var e=[],f=b.firstChild,g,h=0,l,n=a.aoColumns,m=a._rowReadObject;d=d!==q?d:m?{}:[];var p=function(x,r){if("string"===typeof x){var A=x.indexOf("@");-1!==A&&(A=x.substring(A+1),da(x)(d,r.getAttribute(A)))}},t=function(x){if(c===q||c===h)g=n[h],l=x.innerHTML.trim(),g&&g._bAttrSrc?(da(g.mData._)(d,l),p(g.mData.sort,x),p(g.mData.type,x),p(g.mData.filter,x)):m?(g._setter||(g._setter=da(g.mData)),
|
40 |
+
g._setter(d,l)):d[h]=l;h++};if(f)for(;f;){var v=f.nodeName.toUpperCase();if("TD"==v||"TH"==v)t(f),e.push(f);f=f.nextSibling}else for(e=b.anCells,f=0,v=e.length;f<v;f++)t(e[f]);(b=b.firstChild?b:b.nTr)&&(b=b.getAttribute("id"))&&da(a.rowId)(d,b);return{data:d,cells:e}}function $a(a,b,c,d){var e=a.aoData[b],f=e._aData,g=[],h,l;if(null===e.nTr){var n=c||z.createElement("tr");e.nTr=n;e.anCells=g;n._DT_RowIndex=b;db(a,e);var m=0;for(h=a.aoColumns.length;m<h;m++){var p=a.aoColumns[m];e=(l=c?!1:!0)?z.createElement(p.sCellType):
|
41 |
+
d[m];e._DT_CellIndex={row:b,column:m};g.push(e);if(l||!(!p.mRender&&p.mData===m||k.isPlainObject(p.mData)&&p.mData._===m+".display"))e.innerHTML=S(a,b,m,"display");p.sClass&&(e.className+=" "+p.sClass);p.bVisible&&!c?n.appendChild(e):!p.bVisible&&c&&e.parentNode.removeChild(e);p.fnCreatedCell&&p.fnCreatedCell.call(a.oInstance,e,S(a,b,m),f,b,m)}H(a,"aoRowCreatedCallback",null,[n,f,b,g])}}function db(a,b){var c=b.nTr,d=b._aData;if(c){if(a=a.rowIdFn(d))c.id=a;d.DT_RowClass&&(a=d.DT_RowClass.split(" "),
|
42 |
+
b.__rowc=b.__rowc?Ka(b.__rowc.concat(a)):a,k(c).removeClass(b.__rowc.join(" ")).addClass(d.DT_RowClass));d.DT_RowAttr&&k(c).attr(d.DT_RowAttr);d.DT_RowData&&k(c).data(d.DT_RowData)}}function Fb(a){var b,c,d=a.nTHead,e=a.nTFoot,f=0===k("th, td",d).length,g=a.oClasses,h=a.aoColumns;f&&(c=k("<tr/>").appendTo(d));var l=0;for(b=h.length;l<b;l++){var n=h[l];var m=k(n.nTh).addClass(n.sClass);f&&m.appendTo(c);a.oFeatures.bSort&&(m.addClass(n.sSortingClass),!1!==n.bSortable&&(m.attr("tabindex",a.iTabIndex).attr("aria-controls",
|
43 |
+
a.sTableId),eb(a,n.nTh,l)));n.sTitle!=m[0].innerHTML&&m.html(n.sTitle);fb(a,"header")(a,m,n,g)}f&&wa(a.aoHeader,d);k(d).children("tr").attr("role","row");k(d).children("tr").children("th, td").addClass(g.sHeaderTH);k(e).children("tr").children("th, td").addClass(g.sFooterTH);if(null!==e)for(a=a.aoFooter[0],l=0,b=a.length;l<b;l++)n=h[l],n.nTf=a[l].cell,n.sClass&&k(n.nTf).addClass(n.sClass)}function xa(a,b,c){var d,e,f=[],g=[],h=a.aoColumns.length;if(b){c===q&&(c=!1);var l=0;for(d=b.length;l<d;l++){f[l]=
|
44 |
+
b[l].slice();f[l].nTr=b[l].nTr;for(e=h-1;0<=e;e--)a.aoColumns[e].bVisible||c||f[l].splice(e,1);g.push([])}l=0;for(d=f.length;l<d;l++){if(a=f[l].nTr)for(;e=a.firstChild;)a.removeChild(e);e=0;for(b=f[l].length;e<b;e++){var n=h=1;if(g[l][e]===q){a.appendChild(f[l][e].cell);for(g[l][e]=1;f[l+h]!==q&&f[l][e].cell==f[l+h][e].cell;)g[l+h][e]=1,h++;for(;f[l][e+n]!==q&&f[l][e].cell==f[l][e+n].cell;){for(c=0;c<h;c++)g[l+c][e+n]=1;n++}k(f[l][e].cell).attr("rowspan",h).attr("colspan",n)}}}}}function fa(a,b){var c=
|
45 |
+
H(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==k.inArray(!1,c))U(a,!1);else{c=[];var d=0,e=a.asStripeClasses,f=e.length,g=a.oLanguage,h=a.iInitDisplayStart,l="ssp"==P(a),n=a.aiDisplay;a.bDrawing=!0;h!==q&&-1!==h&&(a._iDisplayStart=l?h:h>=a.fnRecordsDisplay()?0:h,a.iInitDisplayStart=-1);h=a._iDisplayStart;var m=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,U(a,!1);else if(!l)a.iDraw++;else if(!a.bDestroying&&!b){Gb(a);return}if(0!==n.length)for(b=l?a.aoData.length:m,g=l?0:h;g<b;g++){l=
|
46 |
+
n[g];var p=a.aoData[l];null===p.nTr&&$a(a,l);var t=p.nTr;if(0!==f){var v=e[d%f];p._sRowStripe!=v&&(k(t).removeClass(p._sRowStripe).addClass(v),p._sRowStripe=v)}H(a,"aoRowCallback",null,[t,p._aData,d,g,l]);c.push(t);d++}else d=g.sZeroRecords,1==a.iDraw&&"ajax"==P(a)?d=g.sLoadingRecords:g.sEmptyTable&&0===a.fnRecordsTotal()&&(d=g.sEmptyTable),c[0]=k("<tr/>",{"class":f?e[0]:""}).append(k("<td />",{valign:"top",colSpan:na(a),"class":a.oClasses.sRowEmpty}).html(d))[0];H(a,"aoHeaderCallback","header",[k(a.nTHead).children("tr")[0],
|
47 |
+
cb(a),h,m,n]);H(a,"aoFooterCallback","footer",[k(a.nTFoot).children("tr")[0],cb(a),h,m,n]);e=k(a.nTBody);e.children().detach();e.append(k(c));H(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function ja(a,b){var c=a.oFeatures,d=c.bFilter;c.bSort&&Hb(a);d?ya(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;fa(a);a._drawHold=!1}function Ib(a){var b=a.oClasses,c=k(a.nTable);c=k("<div/>").insertBefore(c);var d=a.oFeatures,
|
48 |
+
e=k("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,h,l,n,m,p,t=0;t<f.length;t++){g=null;h=f[t];if("<"==h){l=k("<div/>")[0];n=f[t+1];if("'"==n||'"'==n){m="";for(p=2;f[t+p]!=n;)m+=f[t+p],p++;"H"==m?m=b.sJUIHeader:"F"==m&&(m=b.sJUIFooter);-1!=m.indexOf(".")?(n=m.split("."),l.id=n[0].substr(1,n[0].length-1),l.className=n[1]):"#"==m.charAt(0)?l.id=m.substr(1,
|
49 |
+
m.length-1):l.className=m;t+=p}e.append(l);e=k(l)}else if(">"==h)e=e.parent();else if("l"==h&&d.bPaginate&&d.bLengthChange)g=Jb(a);else if("f"==h&&d.bFilter)g=Kb(a);else if("r"==h&&d.bProcessing)g=Lb(a);else if("t"==h)g=Mb(a);else if("i"==h&&d.bInfo)g=Nb(a);else if("p"==h&&d.bPaginate)g=Ob(a);else if(0!==u.ext.feature.length)for(l=u.ext.feature,p=0,n=l.length;p<n;p++)if(h==l[p].cFeature){g=l[p].fnInit(a);break}g&&(l=a.aanFeatures,l[h]||(l[h]=[]),l[h].push(g),e.append(g))}c.replaceWith(e);a.nHolding=
|
50 |
+
null}function wa(a,b){b=k(b).children("tr");var c,d,e;a.splice(0,a.length);var f=0;for(e=b.length;f<e;f++)a.push([]);f=0;for(e=b.length;f<e;f++){var g=b[f];for(c=g.firstChild;c;){if("TD"==c.nodeName.toUpperCase()||"TH"==c.nodeName.toUpperCase()){var h=1*c.getAttribute("colspan");var l=1*c.getAttribute("rowspan");h=h&&0!==h&&1!==h?h:1;l=l&&0!==l&&1!==l?l:1;var n=0;for(d=a[f];d[n];)n++;var m=n;var p=1===h?!0:!1;for(d=0;d<h;d++)for(n=0;n<l;n++)a[f+n][m+d]={cell:c,unique:p},a[f+n].nTr=g}c=c.nextSibling}}}
|
51 |
+
function La(a,b,c){var d=[];c||(c=a.aoHeader,b&&(c=[],wa(c,b)));b=0;for(var e=c.length;b<e;b++)for(var f=0,g=c[b].length;f<g;f++)!c[b][f].unique||d[f]&&a.bSortCellsTop||(d[f]=c[b][f].cell);return d}function Ma(a,b,c){H(a,"aoServerParams","serverParams",[b]);if(b&&Array.isArray(b)){var d={},e=/(.*?)\[\]$/;k.each(b,function(m,p){(m=p.name.match(e))?(m=m[0],d[m]||(d[m]=[]),d[m].push(p.value)):d[p.name]=p.value});b=d}var f=a.ajax,g=a.oInstance,h=function(m){H(a,null,"xhr",[a,m,a.jqXHR]);c(m)};if(k.isPlainObject(f)&&
|
52 |
+
f.data){var l=f.data;var n="function"===typeof l?l(b,a):l;b="function"===typeof l&&n?n:k.extend(!0,b,n);delete f.data}n={data:b,success:function(m){var p=m.error||m.sError;p&&ca(a,0,p);a.json=m;h(m)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(m,p,t){t=H(a,null,"xhr",[a,null,a.jqXHR]);-1===k.inArray(!0,t)&&("parsererror"==p?ca(a,0,"Invalid JSON response",1):4===m.readyState&&ca(a,0,"Ajax error",7));U(a,!1)}};a.oAjaxData=b;H(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(g,
|
53 |
+
a.sAjaxSource,k.map(b,function(m,p){return{name:p,value:m}}),h,a):a.sAjaxSource||"string"===typeof f?a.jqXHR=k.ajax(k.extend(n,{url:f||a.sAjaxSource})):"function"===typeof f?a.jqXHR=f.call(g,b,h,a):(a.jqXHR=k.ajax(k.extend(n,f)),f.data=l)}function Gb(a){a.iDraw++;U(a,!0);Ma(a,Pb(a),function(b){Qb(a,b)})}function Pb(a){var b=a.aoColumns,c=b.length,d=a.oFeatures,e=a.oPreviousSearch,f=a.aoPreSearchCols,g=[],h=pa(a);var l=a._iDisplayStart;var n=!1!==d.bPaginate?a._iDisplayLength:-1;var m=function(x,r){g.push({name:x,
|
54 |
+
value:r})};m("sEcho",a.iDraw);m("iColumns",c);m("sColumns",T(b,"sName").join(","));m("iDisplayStart",l);m("iDisplayLength",n);var p={draw:a.iDraw,columns:[],order:[],start:l,length:n,search:{value:e.sSearch,regex:e.bRegex}};for(l=0;l<c;l++){var t=b[l];var v=f[l];n="function"==typeof t.mData?"function":t.mData;p.columns.push({data:n,name:t.sName,searchable:t.bSearchable,orderable:t.bSortable,search:{value:v.sSearch,regex:v.bRegex}});m("mDataProp_"+l,n);d.bFilter&&(m("sSearch_"+l,v.sSearch),m("bRegex_"+
|
55 |
+
l,v.bRegex),m("bSearchable_"+l,t.bSearchable));d.bSort&&m("bSortable_"+l,t.bSortable)}d.bFilter&&(m("sSearch",e.sSearch),m("bRegex",e.bRegex));d.bSort&&(k.each(h,function(x,r){p.order.push({column:r.col,dir:r.dir});m("iSortCol_"+x,r.col);m("sSortDir_"+x,r.dir)}),m("iSortingCols",h.length));b=u.ext.legacy.ajax;return null===b?a.sAjaxSource?g:p:b?g:p}function Qb(a,b){var c=function(g,h){return b[g]!==q?b[g]:b[h]},d=Na(a,b),e=c("sEcho","draw"),f=c("iTotalRecords","recordsTotal");c=c("iTotalDisplayRecords",
|
56 |
+
"recordsFiltered");if(e!==q){if(1*e<a.iDraw)return;a.iDraw=1*e}Ia(a);a._iRecordsTotal=parseInt(f,10);a._iRecordsDisplay=parseInt(c,10);e=0;for(f=d.length;e<f;e++)ea(a,d[e]);a.aiDisplay=a.aiDisplayMaster.slice();fa(a,!0);a._bInitComplete||Oa(a,b);U(a,!1)}function Na(a,b){a=k.isPlainObject(a.ajax)&&a.ajax.dataSrc!==q?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===a?b.aaData||b[a]:""!==a?ia(a)(b):b}function Kb(a){var b=a.oClasses,c=a.sTableId,d=a.oLanguage,e=a.oPreviousSearch,f=a.aanFeatures,g='<input type="search" class="'+
|
57 |
+
b.sFilterInput+'"/>',h=d.sSearch;h=h.match(/_INPUT_/)?h.replace("_INPUT_",g):h+g;b=k("<div/>",{id:f.f?null:c+"_filter","class":b.sFilter}).append(k("<label/>").append(h));var l=function(){var m=this.value?this.value:"";m!=e.sSearch&&(ya(a,{sSearch:m,bRegex:e.bRegex,bSmart:e.bSmart,bCaseInsensitive:e.bCaseInsensitive}),a._iDisplayStart=0,fa(a))};f=null!==a.searchDelay?a.searchDelay:"ssp"===P(a)?400:0;var n=k("input",b).val(e.sSearch).attr("placeholder",d.sSearchPlaceholder).on("keyup.DT search.DT input.DT paste.DT cut.DT",
|
58 |
+
f?gb(l,f):l).on("mouseup",function(m){setTimeout(function(){l.call(n[0])},10)}).on("keypress.DT",function(m){if(13==m.keyCode)return!1}).attr("aria-controls",c);k(a.nTable).on("search.dt.DT",function(m,p){if(a===p)try{n[0]!==z.activeElement&&n.val(e.sSearch)}catch(t){}});return b[0]}function ya(a,b,c){var d=a.oPreviousSearch,e=a.aoPreSearchCols,f=function(h){d.sSearch=h.sSearch;d.bRegex=h.bRegex;d.bSmart=h.bSmart;d.bCaseInsensitive=h.bCaseInsensitive},g=function(h){return h.bEscapeRegex!==q?!h.bEscapeRegex:
|
59 |
+
h.bRegex};Za(a);if("ssp"!=P(a)){Rb(a,b.sSearch,c,g(b),b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<e.length;b++)Sb(a,e[b].sSearch,b,g(e[b]),e[b].bSmart,e[b].bCaseInsensitive);Tb(a)}else f(b);a.bFiltered=!0;H(a,null,"search",[a])}function Tb(a){for(var b=u.ext.search,c=a.aiDisplay,d,e,f=0,g=b.length;f<g;f++){for(var h=[],l=0,n=c.length;l<n;l++)e=c[l],d=a.aoData[e],b[f](a,d._aFilterData,e,d._aData,l)&&h.push(e);c.length=0;k.merge(c,h)}}function Sb(a,b,c,d,e,f){if(""!==b){var g=[],h=a.aiDisplay;d=hb(b,
|
60 |
+
d,e,f);for(e=0;e<h.length;e++)b=a.aoData[h[e]]._aFilterData[c],d.test(b)&&g.push(h[e]);a.aiDisplay=g}}function Rb(a,b,c,d,e,f){e=hb(b,d,e,f);var g=a.oPreviousSearch.sSearch,h=a.aiDisplayMaster;f=[];0!==u.ext.search.length&&(c=!0);var l=Ub(a);if(0>=b.length)a.aiDisplay=h.slice();else{if(l||c||d||g.length>b.length||0!==b.indexOf(g)||a.bSorted)a.aiDisplay=h.slice();b=a.aiDisplay;for(c=0;c<b.length;c++)e.test(a.aoData[b[c]]._sFilterRow)&&f.push(b[c]);a.aiDisplay=f}}function hb(a,b,c,d){a=b?a:ib(a);c&&
|
61 |
+
(a="^(?=.*?"+k.map(a.match(/"[^"]+"|[^ ]+/g)||[""],function(e){if('"'===e.charAt(0)){var f=e.match(/^"(.*)"$/);e=f?f[1]:e}return e.replace('"',"")}).join(")(?=.*?")+").*$");return new RegExp(a,d?"i":"")}function Ub(a){var b=a.aoColumns,c,d,e=u.ext.type.search;var f=!1;var g=0;for(c=a.aoData.length;g<c;g++){var h=a.aoData[g];if(!h._aFilterData){var l=[];var n=0;for(d=b.length;n<d;n++){f=b[n];if(f.bSearchable){var m=S(a,g,n,"filter");e[f.sType]&&(m=e[f.sType](m));null===m&&(m="");"string"!==typeof m&&
|
62 |
+
m.toString&&(m=m.toString())}else m="";m.indexOf&&-1!==m.indexOf("&")&&(Pa.innerHTML=m,m=rc?Pa.textContent:Pa.innerText);m.replace&&(m=m.replace(/[\r\n\u2028]/g,""));l.push(m)}h._aFilterData=l;h._sFilterRow=l.join(" ");f=!0}}return f}function Vb(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,caseInsensitive:a.bCaseInsensitive}}function Wb(a){return{sSearch:a.search,bSmart:a.smart,bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function Nb(a){var b=a.sTableId,c=a.aanFeatures.i,d=k("<div/>",
|
63 |
+
{"class":a.oClasses.sInfo,id:c?null:b+"_info"});c||(a.aoDrawCallback.push({fn:Xb,sName:"information"}),d.attr("role","status").attr("aria-live","polite"),k(a.nTable).attr("aria-describedby",b+"_info"));return d[0]}function Xb(a){var b=a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,d=a._iDisplayStart+1,e=a.fnDisplayEnd(),f=a.fnRecordsTotal(),g=a.fnRecordsDisplay(),h=g?c.sInfo:c.sInfoEmpty;g!==f&&(h+=" "+c.sInfoFiltered);h+=c.sInfoPostFix;h=Yb(a,h);c=c.fnInfoCallback;null!==c&&(h=c.call(a.oInstance,
|
64 |
+
a,d,e,f,g,h));k(b).html(h)}}function Yb(a,b){var c=a.fnFormatNumber,d=a._iDisplayStart+1,e=a._iDisplayLength,f=a.fnRecordsDisplay(),g=-1===e;return b.replace(/_START_/g,c.call(a,d)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,f)).replace(/_PAGE_/g,c.call(a,g?1:Math.ceil(d/e))).replace(/_PAGES_/g,c.call(a,g?1:Math.ceil(f/e)))}function za(a){var b=a.iInitDisplayStart,c=a.aoColumns;var d=a.oFeatures;var e=a.bDeferLoading;if(a.bInitialised){Ib(a);
|
65 |
+
Fb(a);xa(a,a.aoHeader);xa(a,a.aoFooter);U(a,!0);d.bAutoWidth&&Ya(a);var f=0;for(d=c.length;f<d;f++){var g=c[f];g.sWidth&&(g.nTh.style.width=K(g.sWidth))}H(a,null,"preInit",[a]);ja(a);c=P(a);if("ssp"!=c||e)"ajax"==c?Ma(a,[],function(h){var l=Na(a,h);for(f=0;f<l.length;f++)ea(a,l[f]);a.iInitDisplayStart=b;ja(a);U(a,!1);Oa(a,h)},a):(U(a,!1),Oa(a))}else setTimeout(function(){za(a)},200)}function Oa(a,b){a._bInitComplete=!0;(b||a.oInit.aaData)&&ra(a);H(a,null,"plugin-init",[a,b]);H(a,"aoInitComplete",
|
66 |
+
"init",[a,b])}function jb(a,b){b=parseInt(b,10);a._iDisplayLength=b;kb(a);H(a,null,"length",[a,b])}function Jb(a){var b=a.oClasses,c=a.sTableId,d=a.aLengthMenu,e=Array.isArray(d[0]),f=e?d[0]:d;d=e?d[1]:d;e=k("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect});for(var g=0,h=f.length;g<h;g++)e[0][g]=new Option("number"===typeof d[g]?a.fnFormatNumber(d[g]):d[g],f[g]);var l=k("<div><label/></div>").addClass(b.sLength);a.aanFeatures.l||(l[0].id=c+"_length");l.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",
|
67 |
+
e[0].outerHTML));k("select",l).val(a._iDisplayLength).on("change.DT",function(n){jb(a,k(this).val());fa(a)});k(a.nTable).on("length.dt.DT",function(n,m,p){a===m&&k("select",l).val(p)});return l[0]}function Ob(a){var b=a.sPaginationType,c=u.ext.pager[b],d="function"===typeof c,e=function(g){fa(g)};b=k("<div/>").addClass(a.oClasses.sPaging+b)[0];var f=a.aanFeatures;d||c.fnInit(a,b,e);f.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(g){if(d){var h=g._iDisplayStart,l=g._iDisplayLength,
|
68 |
+
n=g.fnRecordsDisplay(),m=-1===l;h=m?0:Math.ceil(h/l);l=m?1:Math.ceil(n/l);n=c(h,l);var p;m=0;for(p=f.p.length;m<p;m++)fb(g,"pageButton")(g,f.p[m],m,n,h,l)}else c.fnUpdate(g,e)},sName:"pagination"}));return b}function lb(a,b,c){var d=a._iDisplayStart,e=a._iDisplayLength,f=a.fnRecordsDisplay();0===f||-1===e?d=0:"number"===typeof b?(d=b*e,d>f&&(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==b?d+e<f&&(d+=e):"last"==b?d=Math.floor((f-1)/e)*e:ca(a,0,"Unknown paging action: "+b,5);
|
69 |
+
b=a._iDisplayStart!==d;a._iDisplayStart=d;b&&(H(a,null,"page",[a]),c&&fa(a));return b}function Lb(a){return k("<div/>",{id:a.aanFeatures.r?null:a.sTableId+"_processing","class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function U(a,b){a.oFeatures.bProcessing&&k(a.aanFeatures.r).css("display",b?"block":"none");H(a,null,"processing",[a,b])}function Mb(a){var b=k(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,
|
70 |
+
e=c.sY,f=a.oClasses,g=b.children("caption"),h=g.length?g[0]._captionSide:null,l=k(b[0].cloneNode(!1)),n=k(b[0].cloneNode(!1)),m=b.children("tfoot");m.length||(m=null);l=k("<div/>",{"class":f.sScrollWrapper}).append(k("<div/>",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?d?K(d):null:"100%"}).append(k("<div/>",{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(l.removeAttr("id").css("margin-left",0).append("top"===h?
|
71 |
+
g:null).append(b.children("thead"))))).append(k("<div/>",{"class":f.sScrollBody}).css({position:"relative",overflow:"auto",width:d?K(d):null}).append(b));m&&l.append(k("<div/>",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:d?d?K(d):null:"100%"}).append(k("<div/>",{"class":f.sScrollFootInner}).append(n.removeAttr("id").css("margin-left",0).append("bottom"===h?g:null).append(b.children("tfoot")))));b=l.children();var p=b[0];f=b[1];var t=m?b[2]:null;if(d)k(f).on("scroll.DT",function(v){v=
|
72 |
+
this.scrollLeft;p.scrollLeft=v;m&&(t.scrollLeft=v)});k(f).css("max-height",e);c.bCollapse||k(f).css("height",e);a.nScrollHead=p;a.nScrollBody=f;a.nScrollFoot=t;a.aoDrawCallback.push({fn:Fa,sName:"scrolling"});return l[0]}function Fa(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY;b=b.iBarWidth;var f=k(a.nScrollHead),g=f[0].style,h=f.children("div"),l=h[0].style,n=h.children("table");h=a.nScrollBody;var m=k(h),p=h.style,t=k(a.nScrollFoot).children("div"),v=t.children("table"),x=k(a.nTHead),r=k(a.nTable),
|
73 |
+
A=r[0],D=A.style,I=a.nTFoot?k(a.nTFoot):null,W=a.oBrowser,M=W.bScrollOversize,B=T(a.aoColumns,"nTh"),E=[],aa=[],X=[],Aa=[],mb,Ba=function(F){F=F.style;F.paddingTop="0";F.paddingBottom="0";F.borderTopWidth="0";F.borderBottomWidth="0";F.height=0};var ha=h.scrollHeight>h.clientHeight;if(a.scrollBarVis!==ha&&a.scrollBarVis!==q)a.scrollBarVis=ha,ra(a);else{a.scrollBarVis=ha;r.children("thead, tfoot").remove();if(I){var ka=I.clone().prependTo(r);var la=I.find("tr");ka=ka.find("tr")}var nb=x.clone().prependTo(r);
|
74 |
+
x=x.find("tr");ha=nb.find("tr");nb.find("th, td").removeAttr("tabindex");c||(p.width="100%",f[0].style.width="100%");k.each(La(a,nb),function(F,Y){mb=sa(a,F);Y.style.width=a.aoColumns[mb].sWidth});I&&ba(function(F){F.style.width=""},ka);f=r.outerWidth();""===c?(D.width="100%",M&&(r.find("tbody").height()>h.offsetHeight||"scroll"==m.css("overflow-y"))&&(D.width=K(r.outerWidth()-b)),f=r.outerWidth()):""!==d&&(D.width=K(d),f=r.outerWidth());ba(Ba,ha);ba(function(F){X.push(F.innerHTML);E.push(K(k(F).css("width")))},
|
75 |
+
ha);ba(function(F,Y){-1!==k.inArray(F,B)&&(F.style.width=E[Y])},x);k(ha).height(0);I&&(ba(Ba,ka),ba(function(F){Aa.push(F.innerHTML);aa.push(K(k(F).css("width")))},ka),ba(function(F,Y){F.style.width=aa[Y]},la),k(ka).height(0));ba(function(F,Y){F.innerHTML='<div class="dataTables_sizing">'+X[Y]+"</div>";F.childNodes[0].style.height="0";F.childNodes[0].style.overflow="hidden";F.style.width=E[Y]},ha);I&&ba(function(F,Y){F.innerHTML='<div class="dataTables_sizing">'+Aa[Y]+"</div>";F.childNodes[0].style.height=
|
76 |
+
"0";F.childNodes[0].style.overflow="hidden";F.style.width=aa[Y]},ka);r.outerWidth()<f?(la=h.scrollHeight>h.offsetHeight||"scroll"==m.css("overflow-y")?f+b:f,M&&(h.scrollHeight>h.offsetHeight||"scroll"==m.css("overflow-y"))&&(D.width=K(la-b)),""!==c&&""===d||ca(a,1,"Possible column misalignment",6)):la="100%";p.width=K(la);g.width=K(la);I&&(a.nScrollFoot.style.width=K(la));!e&&M&&(p.height=K(A.offsetHeight+b));c=r.outerWidth();n[0].style.width=K(c);l.width=K(c);d=r.height()>h.clientHeight||"scroll"==
|
77 |
+
m.css("overflow-y");e="padding"+(W.bScrollbarLeft?"Left":"Right");l[e]=d?b+"px":"0px";I&&(v[0].style.width=K(c),t[0].style.width=K(c),t[0].style[e]=d?b+"px":"0px");r.children("colgroup").insertBefore(r.children("thead"));m.trigger("scroll");!a.bSorted&&!a.bFiltered||a._drawHold||(h.scrollTop=0)}}function ba(a,b,c){for(var d=0,e=0,f=b.length,g,h;e<f;){g=b[e].firstChild;for(h=c?c[e].firstChild:null;g;)1===g.nodeType&&(c?a(g,h,d):a(g,d),d++),g=g.nextSibling,h=c?h.nextSibling:null;e++}}function Ya(a){var b=
|
78 |
+
a.nTable,c=a.aoColumns,d=a.oScroll,e=d.sY,f=d.sX,g=d.sXInner,h=c.length,l=Ga(a,"bVisible"),n=k("th",a.nTHead),m=b.getAttribute("width"),p=b.parentNode,t=!1,v,x=a.oBrowser;d=x.bScrollOversize;(v=b.style.width)&&-1!==v.indexOf("%")&&(m=v);for(v=0;v<l.length;v++){var r=c[l[v]];null!==r.sWidth&&(r.sWidth=Zb(r.sWidthOrig,p),t=!0)}if(d||!t&&!f&&!e&&h==na(a)&&h==n.length)for(v=0;v<h;v++)l=sa(a,v),null!==l&&(c[l].sWidth=K(n.eq(v).width()));else{h=k(b).clone().css("visibility","hidden").removeAttr("id");h.find("tbody tr").remove();
|
79 |
+
var A=k("<tr/>").appendTo(h.find("tbody"));h.find("thead, tfoot").remove();h.append(k(a.nTHead).clone()).append(k(a.nTFoot).clone());h.find("tfoot th, tfoot td").css("width","");n=La(a,h.find("thead")[0]);for(v=0;v<l.length;v++)r=c[l[v]],n[v].style.width=null!==r.sWidthOrig&&""!==r.sWidthOrig?K(r.sWidthOrig):"",r.sWidthOrig&&f&&k(n[v]).append(k("<div/>").css({width:r.sWidthOrig,margin:0,padding:0,border:0,height:1}));if(a.aoData.length)for(v=0;v<l.length;v++)t=l[v],r=c[t],k($b(a,t)).clone(!1).append(r.sContentPadding).appendTo(A);
|
80 |
+
k("[name]",h).removeAttr("name");r=k("<div/>").css(f||e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(h).appendTo(p);f&&g?h.width(g):f?(h.css("width","auto"),h.removeAttr("width"),h.width()<p.clientWidth&&m&&h.width(p.clientWidth)):e?h.width(p.clientWidth):m&&h.width(m);for(v=e=0;v<l.length;v++)p=k(n[v]),g=p.outerWidth()-p.width(),p=x.bBounding?Math.ceil(n[v].getBoundingClientRect().width):p.outerWidth(),e+=p,c[l[v]].sWidth=K(p-g);b.style.width=K(e);r.remove()}m&&
|
81 |
+
(b.style.width=K(m));!m&&!f||a._reszEvt||(b=function(){k(y).on("resize.DT-"+a.sInstance,gb(function(){ra(a)}))},d?setTimeout(b,1E3):b(),a._reszEvt=!0)}function Zb(a,b){if(!a)return 0;a=k("<div/>").css("width",K(a)).appendTo(b||z.body);b=a[0].offsetWidth;a.remove();return b}function $b(a,b){var c=ac(a,b);if(0>c)return null;var d=a.aoData[c];return d.nTr?d.anCells[b]:k("<td/>").html(S(a,c,b,"display"))[0]}function ac(a,b){for(var c,d=-1,e=-1,f=0,g=a.aoData.length;f<g;f++)c=S(a,f,b,"display")+"",c=c.replace(sc,
|
82 |
+
""),c=c.replace(/ /g," "),c.length>d&&(d=c.length,e=f);return e}function K(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function pa(a){var b=[],c=a.aoColumns;var d=a.aaSortingFixed;var e=k.isPlainObject(d);var f=[];var g=function(m){m.length&&!Array.isArray(m[0])?f.push(m):k.merge(f,m)};Array.isArray(d)&&g(d);e&&d.pre&&g(d.pre);g(a.aaSorting);e&&d.post&&g(d.post);for(a=0;a<f.length;a++){var h=f[a][0];g=c[h].aDataSort;d=0;for(e=g.length;d<e;d++){var l=g[d];
|
83 |
+
var n=c[l].sType||"string";f[a]._idx===q&&(f[a]._idx=k.inArray(f[a][1],c[l].asSorting));b.push({src:h,col:l,dir:f[a][1],index:f[a]._idx,type:n,formatter:u.ext.type.order[n+"-pre"]})}}return b}function Hb(a){var b,c=[],d=u.ext.type.order,e=a.aoData,f=0,g=a.aiDisplayMaster;Za(a);var h=pa(a);var l=0;for(b=h.length;l<b;l++){var n=h[l];n.formatter&&f++;bc(a,n.col)}if("ssp"!=P(a)&&0!==h.length){l=0;for(b=g.length;l<b;l++)c[g[l]]=l;f===h.length?g.sort(function(m,p){var t,v=h.length,x=e[m]._aSortData,r=e[p]._aSortData;
|
84 |
+
for(t=0;t<v;t++){var A=h[t];var D=x[A.col];var I=r[A.col];D=D<I?-1:D>I?1:0;if(0!==D)return"asc"===A.dir?D:-D}D=c[m];I=c[p];return D<I?-1:D>I?1:0}):g.sort(function(m,p){var t,v=h.length,x=e[m]._aSortData,r=e[p]._aSortData;for(t=0;t<v;t++){var A=h[t];var D=x[A.col];var I=r[A.col];A=d[A.type+"-"+A.dir]||d["string-"+A.dir];D=A(D,I);if(0!==D)return D}D=c[m];I=c[p];return D<I?-1:D>I?1:0})}a.bSorted=!0}function cc(a){var b=a.aoColumns,c=pa(a);a=a.oLanguage.oAria;for(var d=0,e=b.length;d<e;d++){var f=b[d];
|
85 |
+
var g=f.asSorting;var h=f.ariaTitle||f.sTitle.replace(/<.*?>/g,"");var l=f.nTh;l.removeAttribute("aria-sort");f.bSortable&&(0<c.length&&c[0].col==d?(l.setAttribute("aria-sort","asc"==c[0].dir?"ascending":"descending"),f=g[c[0].index+1]||g[0]):f=g[0],h+="asc"===f?a.sSortAscending:a.sSortDescending);l.setAttribute("aria-label",h)}}function ob(a,b,c,d){var e=a.aaSorting,f=a.aoColumns[b].asSorting,g=function(h,l){var n=h._idx;n===q&&(n=k.inArray(h[1],f));return n+1<f.length?n+1:l?null:0};"number"===typeof e[0]&&
|
86 |
+
(e=a.aaSorting=[e]);c&&a.oFeatures.bSortMulti?(c=k.inArray(b,T(e,"0")),-1!==c?(b=g(e[c],!0),null===b&&1===e.length&&(b=0),null===b?e.splice(c,1):(e[c][1]=f[b],e[c]._idx=b)):(e.push([b,f[0],0]),e[e.length-1]._idx=0)):e.length&&e[0][0]==b?(b=g(e[0]),e.length=1,e[0][1]=f[b],e[0]._idx=b):(e.length=0,e.push([b,f[0]]),e[0]._idx=0);ja(a);"function"==typeof d&&d(a)}function eb(a,b,c,d){var e=a.aoColumns[c];pb(b,{},function(f){!1!==e.bSortable&&(a.oFeatures.bProcessing?(U(a,!0),setTimeout(function(){ob(a,
|
87 |
+
c,f.shiftKey,d);"ssp"!==P(a)&&U(a,!1)},0)):ob(a,c,f.shiftKey,d))})}function Qa(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,d=pa(a),e=a.oFeatures,f;if(e.bSort&&e.bSortClasses){e=0;for(f=b.length;e<f;e++){var g=b[e].src;k(T(a.aoData,"anCells",g)).removeClass(c+(2>e?e+1:3))}e=0;for(f=d.length;e<f;e++)g=d[e].src,k(T(a.aoData,"anCells",g)).addClass(c+(2>e?e+1:3))}a.aLastSort=d}function bc(a,b){var c=a.aoColumns[b],d=u.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,ta(a,b)));for(var f,g=u.ext.type.order[c.sType+
|
88 |
+
"-pre"],h=0,l=a.aoData.length;h<l;h++)if(c=a.aoData[h],c._aSortData||(c._aSortData=[]),!c._aSortData[b]||d)f=d?e[h]:S(a,h,b,"sort"),c._aSortData[b]=g?g(f):f}function Ra(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:k.extend(!0,[],a.aaSorting),search:Vb(a.oPreviousSearch),columns:k.map(a.aoColumns,function(c,d){return{visible:c.bVisible,search:Vb(a.aoPreSearchCols[d])}})};H(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=
|
89 |
+
b;a.fnStateSaveCallback.call(a.oInstance,a,b)}}function dc(a,b,c){var d,e,f=a.aoColumns;b=function(h){if(h&&h.time){var l=H(a,"aoStateLoadParams","stateLoadParams",[a,h]);if(-1===k.inArray(!1,l)&&(l=a.iStateDuration,!(0<l&&h.time<+new Date-1E3*l||h.columns&&f.length!==h.columns.length))){a.oLoadedState=k.extend(!0,{},h);h.start!==q&&(a._iDisplayStart=h.start,a.iInitDisplayStart=h.start);h.length!==q&&(a._iDisplayLength=h.length);h.order!==q&&(a.aaSorting=[],k.each(h.order,function(n,m){a.aaSorting.push(m[0]>=
|
90 |
+
f.length?[0,m[1]]:m)}));h.search!==q&&k.extend(a.oPreviousSearch,Wb(h.search));if(h.columns)for(d=0,e=h.columns.length;d<e;d++)l=h.columns[d],l.visible!==q&&(f[d].bVisible=l.visible),l.search!==q&&k.extend(a.aoPreSearchCols[d],Wb(l.search));H(a,"aoStateLoaded","stateLoaded",[a,h])}}c()};if(a.oFeatures.bStateSave){var g=a.fnStateLoadCallback.call(a.oInstance,a,b);g!==q&&b(g)}else c()}function Sa(a){var b=u.settings;a=k.inArray(a,T(b,"nTable"));return-1!==a?b[a]:null}function ca(a,b,c,d){c="DataTables warning: "+
|
91 |
+
(a?"table id="+a.sTableId+" - ":"")+c;d&&(c+=". For more information about this error, please see http://datatables.net/tn/"+d);if(b)y.console&&console.log&&console.log(c);else if(b=u.ext,b=b.sErrMode||b.errMode,a&&H(a,null,"error",[a,d,c]),"alert"==b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&b(a,d,c)}}function V(a,b,c,d){Array.isArray(c)?k.each(c,function(e,f){Array.isArray(f)?V(a,b,f[0],f[1]):V(a,b,f)}):(d===q&&(d=c),b[c]!==q&&(a[d]=b[c]))}function qb(a,b,c){var d;for(d in b)if(b.hasOwnProperty(d)){var e=
|
92 |
+
b[d];k.isPlainObject(e)?(k.isPlainObject(a[d])||(a[d]={}),k.extend(!0,a[d],e)):c&&"data"!==d&&"aaData"!==d&&Array.isArray(e)?a[d]=e.slice():a[d]=e}return a}function pb(a,b,c){k(a).on("click.DT",b,function(d){k(a).trigger("blur");c(d)}).on("keypress.DT",b,function(d){13===d.which&&(d.preventDefault(),c(d))}).on("selectstart.DT",function(){return!1})}function Q(a,b,c,d){c&&a[b].push({fn:c,sName:d})}function H(a,b,c,d){var e=[];b&&(e=k.map(a[b].slice().reverse(),function(f,g){return f.fn.apply(a.oInstance,
|
93 |
+
d)}));null!==c&&(b=k.Event(c+".dt"),k(a.nTable).trigger(b,d),e.push(b.result));return e}function kb(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),d=a._iDisplayLength;b>=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function fb(a,b){a=a.renderer;var c=u.ext.renderer[b];return k.isPlainObject(a)&&a[b]?c[a[b]]||c._:"string"===typeof a?c[a]||c._:c._}function P(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function Ca(a,b){var c=ec.numbers_length,d=Math.floor(c/2);
|
94 |
+
b<=c?a=qa(0,b):a<=d?(a=qa(0,c-2),a.push("ellipsis"),a.push(b-1)):(a>=b-1-d?a=qa(b-(c-2),b):(a=qa(a-d+2,a+d-1),a.push("ellipsis"),a.push(b-1)),a.splice(0,0,"ellipsis"),a.splice(0,0,0));a.DT_el="span";return a}function Wa(a){k.each({num:function(b){return Ta(b,a)},"num-fmt":function(b){return Ta(b,a,rb)},"html-num":function(b){return Ta(b,a,Ua)},"html-num-fmt":function(b){return Ta(b,a,Ua,rb)}},function(b,c){L.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(L.type.search[b+a]=L.type.search.html)})}function fc(a){return function(){var b=
|
95 |
+
[Sa(this[u.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return u.ext.internal[a].apply(this,b)}}var u=function(a){this.$=function(f,g){return this.api(!0).$(f,g)};this._=function(f,g){return this.api(!0).rows(f,g).data()};this.api=function(f){return f?new C(Sa(this[L.iApiIndex])):new C(this)};this.fnAddData=function(f,g){var h=this.api(!0);f=Array.isArray(f)&&(Array.isArray(f[0])||k.isPlainObject(f[0]))?h.rows.add(f):h.row.add(f);(g===q||g)&&h.draw();return f.flatten().toArray()};
|
96 |
+
this.fnAdjustColumnSizing=function(f){var g=this.api(!0).columns.adjust(),h=g.settings()[0],l=h.oScroll;f===q||f?g.draw(!1):(""!==l.sX||""!==l.sY)&&Fa(h)};this.fnClearTable=function(f){var g=this.api(!0).clear();(f===q||f)&&g.draw()};this.fnClose=function(f){this.api(!0).row(f).child.hide()};this.fnDeleteRow=function(f,g,h){var l=this.api(!0);f=l.rows(f);var n=f.settings()[0],m=n.aoData[f[0][0]];f.remove();g&&g.call(this,n,m);(h===q||h)&&l.draw();return m};this.fnDestroy=function(f){this.api(!0).destroy(f)};
|
97 |
+
this.fnDraw=function(f){this.api(!0).draw(f)};this.fnFilter=function(f,g,h,l,n,m){n=this.api(!0);null===g||g===q?n.search(f,h,l,m):n.column(g).search(f,h,l,m);n.draw()};this.fnGetData=function(f,g){var h=this.api(!0);if(f!==q){var l=f.nodeName?f.nodeName.toLowerCase():"";return g!==q||"td"==l||"th"==l?h.cell(f,g).data():h.row(f).data()||null}return h.data().toArray()};this.fnGetNodes=function(f){var g=this.api(!0);return f!==q?g.row(f).node():g.rows().nodes().flatten().toArray()};this.fnGetPosition=
|
98 |
+
function(f){var g=this.api(!0),h=f.nodeName.toUpperCase();return"TR"==h?g.row(f).index():"TD"==h||"TH"==h?(f=g.cell(f).index(),[f.row,f.columnVisible,f.column]):null};this.fnIsOpen=function(f){return this.api(!0).row(f).child.isShown()};this.fnOpen=function(f,g,h){return this.api(!0).row(f).child(g,h).show().child()[0]};this.fnPageChange=function(f,g){f=this.api(!0).page(f);(g===q||g)&&f.draw(!1)};this.fnSetColumnVis=function(f,g,h){f=this.api(!0).column(f).visible(g);(h===q||h)&&f.columns.adjust().draw()};
|
99 |
+
this.fnSettings=function(){return Sa(this[L.iApiIndex])};this.fnSort=function(f){this.api(!0).order(f).draw()};this.fnSortListener=function(f,g,h){this.api(!0).order.listener(f,g,h)};this.fnUpdate=function(f,g,h,l,n){var m=this.api(!0);h===q||null===h?m.row(g).data(f):m.cell(g,h).data(f);(n===q||n)&&m.columns.adjust();(l===q||l)&&m.draw();return 0};this.fnVersionCheck=L.fnVersionCheck;var b=this,c=a===q,d=this.length;c&&(a={});this.oApi=this.internal=L.internal;for(var e in u.ext.internal)e&&(this[e]=
|
100 |
+
fc(e));this.each(function(){var f={},g=1<d?qb(f,a,!0):a,h=0,l;f=this.getAttribute("id");var n=!1,m=u.defaults,p=k(this);if("table"!=this.nodeName.toLowerCase())ca(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{zb(m);Ab(m.column);O(m,m,!0);O(m.column,m.column,!0);O(m,k.extend(g,p.data()),!0);var t=u.settings;h=0;for(l=t.length;h<l;h++){var v=t[h];if(v.nTable==this||v.nTHead&&v.nTHead.parentNode==this||v.nTFoot&&v.nTFoot.parentNode==this){var x=g.bRetrieve!==q?g.bRetrieve:m.bRetrieve;
|
101 |
+
if(c||x)return v.oInstance;if(g.bDestroy!==q?g.bDestroy:m.bDestroy){v.oInstance.fnDestroy();break}else{ca(v,0,"Cannot reinitialise DataTable",3);return}}if(v.sTableId==this.id){t.splice(h,1);break}}if(null===f||""===f)this.id=f="DataTables_Table_"+u.ext._unique++;var r=k.extend(!0,{},u.models.oSettings,{sDestroyWidth:p[0].style.width,sInstance:f,sTableId:f});r.nTable=this;r.oApi=b.internal;r.oInit=g;t.push(r);r.oInstance=1===b.length?b:p.dataTable();zb(g);ma(g.oLanguage);g.aLengthMenu&&!g.iDisplayLength&&
|
102 |
+
(g.iDisplayLength=Array.isArray(g.aLengthMenu[0])?g.aLengthMenu[0][0]:g.aLengthMenu[0]);g=qb(k.extend(!0,{},m),g);V(r.oFeatures,g,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));V(r,g,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback",
|
103 |
+
"fnStateSaveCallback","renderer","searchDelay","rowId",["iCookieDuration","iStateDuration"],["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"]]);V(r.oScroll,g,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);V(r.oLanguage,g,"fnInfoCallback");Q(r,"aoDrawCallback",g.fnDrawCallback,"user");Q(r,"aoServerParams",g.fnServerParams,"user");Q(r,"aoStateSaveParams",g.fnStateSaveParams,"user");Q(r,"aoStateLoadParams",
|
104 |
+
g.fnStateLoadParams,"user");Q(r,"aoStateLoaded",g.fnStateLoaded,"user");Q(r,"aoRowCallback",g.fnRowCallback,"user");Q(r,"aoRowCreatedCallback",g.fnCreatedRow,"user");Q(r,"aoHeaderCallback",g.fnHeaderCallback,"user");Q(r,"aoFooterCallback",g.fnFooterCallback,"user");Q(r,"aoInitComplete",g.fnInitComplete,"user");Q(r,"aoPreDrawCallback",g.fnPreDrawCallback,"user");r.rowIdFn=ia(g.rowId);Bb(r);var A=r.oClasses;k.extend(A,u.ext.classes,g.oClasses);p.addClass(A.sTable);r.iInitDisplayStart===q&&(r.iInitDisplayStart=
|
105 |
+
g.iDisplayStart,r._iDisplayStart=g.iDisplayStart);null!==g.iDeferLoading&&(r.bDeferLoading=!0,f=Array.isArray(g.iDeferLoading),r._iRecordsDisplay=f?g.iDeferLoading[0]:g.iDeferLoading,r._iRecordsTotal=f?g.iDeferLoading[1]:g.iDeferLoading);var D=r.oLanguage;k.extend(!0,D,g.oLanguage);D.sUrl?(k.ajax({dataType:"json",url:D.sUrl,success:function(B){ma(B);O(m.oLanguage,B);k.extend(!0,D,B);H(r,null,"i18n",[r]);za(r)},error:function(){za(r)}}),n=!0):H(r,null,"i18n",[r]);null===g.asStripeClasses&&(r.asStripeClasses=
|
106 |
+
[A.sStripeOdd,A.sStripeEven]);f=r.asStripeClasses;var I=p.children("tbody").find("tr").eq(0);-1!==k.inArray(!0,k.map(f,function(B,E){return I.hasClass(B)}))&&(k("tbody tr",this).removeClass(f.join(" ")),r.asDestroyStripes=f.slice());f=[];t=this.getElementsByTagName("thead");0!==t.length&&(wa(r.aoHeader,t[0]),f=La(r));if(null===g.aoColumns)for(t=[],h=0,l=f.length;h<l;h++)t.push(null);else t=g.aoColumns;h=0;for(l=t.length;h<l;h++)Xa(r,f?f[h]:null);Db(r,g.aoColumnDefs,t,function(B,E){Ea(r,B,E)});if(I.length){var W=
|
107 |
+
function(B,E){return null!==B.getAttribute("data-"+E)?E:null};k(I[0]).children("th, td").each(function(B,E){var aa=r.aoColumns[B];if(aa.mData===B){var X=W(E,"sort")||W(E,"order");E=W(E,"filter")||W(E,"search");if(null!==X||null!==E)aa.mData={_:B+".display",sort:null!==X?B+".@data-"+X:q,type:null!==X?B+".@data-"+X:q,filter:null!==E?B+".@data-"+E:q},Ea(r,B)}})}var M=r.oFeatures;f=function(){if(g.aaSorting===q){var B=r.aaSorting;h=0;for(l=B.length;h<l;h++)B[h][1]=r.aoColumns[h].asSorting[0]}Qa(r);M.bSort&&
|
108 |
+
Q(r,"aoDrawCallback",function(){if(r.bSorted){var X=pa(r),Aa={};k.each(X,function(mb,Ba){Aa[Ba.src]=Ba.dir});H(r,null,"order",[r,X,Aa]);cc(r)}});Q(r,"aoDrawCallback",function(){(r.bSorted||"ssp"===P(r)||M.bDeferRender)&&Qa(r)},"sc");B=p.children("caption").each(function(){this._captionSide=k(this).css("caption-side")});var E=p.children("thead");0===E.length&&(E=k("<thead/>").appendTo(p));r.nTHead=E[0];var aa=p.children("tbody");0===aa.length&&(aa=k("<tbody/>").insertAfter(E));r.nTBody=aa[0];E=p.children("tfoot");
|
109 |
+
0===E.length&&0<B.length&&(""!==r.oScroll.sX||""!==r.oScroll.sY)&&(E=k("<tfoot/>").appendTo(p));0===E.length||0===E.children().length?p.addClass(A.sNoFooter):0<E.length&&(r.nTFoot=E[0],wa(r.aoFooter,r.nTFoot));if(g.aaData)for(h=0;h<g.aaData.length;h++)ea(r,g.aaData[h]);else(r.bDeferLoading||"dom"==P(r))&&Ha(r,k(r.nTBody).children("tr"));r.aiDisplay=r.aiDisplayMaster.slice();r.bInitialised=!0;!1===n&&za(r)};g.bStateSave?(M.bStateSave=!0,Q(r,"aoDrawCallback",Ra,"state_save"),dc(r,g,f)):f()}});b=null;
|
110 |
+
return this},L,w,J,sb={},gc=/[\r\n\u2028]/g,Ua=/<.*?>/g,tc=/^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/,uc=/(\/|\.|\*|\+|\?|\||\(|\)|\[|\]|\{|\}|\\|\$|\^|\-)/g,rb=/['\u00A0,$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfkɃΞ]/gi,Z=function(a){return a&&!0!==a&&"-"!==a?!1:!0},hc=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},ic=function(a,b){sb[b]||(sb[b]=new RegExp(ib(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(sb[b],"."):
|
111 |
+
a},tb=function(a,b,c){var d="string"===typeof a;if(Z(a))return!0;b&&d&&(a=ic(a,b));c&&d&&(a=a.replace(rb,""));return!isNaN(parseFloat(a))&&isFinite(a)},jc=function(a,b,c){return Z(a)?!0:Z(a)||"string"===typeof a?tb(a.replace(Ua,""),b,c)?!0:null:null},T=function(a,b,c){var d=[],e=0,f=a.length;if(c!==q)for(;e<f;e++)a[e]&&a[e][b]&&d.push(a[e][b][c]);else for(;e<f;e++)a[e]&&d.push(a[e][b]);return d},Da=function(a,b,c,d){var e=[],f=0,g=b.length;if(d!==q)for(;f<g;f++)a[b[f]][c]&&e.push(a[b[f]][c][d]);else for(;f<
|
112 |
+
g;f++)e.push(a[b[f]][c]);return e},qa=function(a,b){var c=[];if(b===q){b=0;var d=a}else d=b,b=a;for(a=b;a<d;a++)c.push(a);return c},kc=function(a){for(var b=[],c=0,d=a.length;c<d;c++)a[c]&&b.push(a[c]);return b},Ka=function(a){a:{if(!(2>a.length)){var b=a.slice().sort();for(var c=b[0],d=1,e=b.length;d<e;d++){if(b[d]===c){b=!1;break a}c=b[d]}}b=!0}if(b)return a.slice();b=[];e=a.length;var f,g=0;d=0;a:for(;d<e;d++){c=a[d];for(f=0;f<g;f++)if(b[f]===c)continue a;b.push(c);g++}return b},lc=function(a,
|
113 |
+
b){if(Array.isArray(b))for(var c=0;c<b.length;c++)lc(a,b[c]);else a.push(b);return a};Array.isArray||(Array.isArray=function(a){return"[object Array]"===Object.prototype.toString.call(a)});String.prototype.trim||(String.prototype.trim=function(){return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")});u.util={throttle:function(a,b){var c=b!==q?b:200,d,e;return function(){var f=this,g=+new Date,h=arguments;d&&g<d+c?(clearTimeout(e),e=setTimeout(function(){d=q;a.apply(f,h)},c)):(d=g,a.apply(f,
|
114 |
+
h))}},escapeRegex:function(a){return a.replace(uc,"\\$1")}};var R=function(a,b,c){a[b]!==q&&(a[c]=a[b])},ua=/\[.*?\]$/,oa=/\(\)$/,ib=u.util.escapeRegex,Pa=k("<div>")[0],rc=Pa.textContent!==q,sc=/<.*?>/g,gb=u.util.throttle,mc=[],N=Array.prototype,vc=function(a){var b,c=u.settings,d=k.map(c,function(f,g){return f.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase()){var e=k.inArray(a,d);return-1!==e?[c[e]]:null}if(a&&"function"===typeof a.settings)return a.settings().toArray();
|
115 |
+
"string"===typeof a?b=k(a):a instanceof k&&(b=a)}else return[];if(b)return b.map(function(f){e=k.inArray(this,d);return-1!==e?c[e]:null}).toArray()};var C=function(a,b){if(!(this instanceof C))return new C(a,b);var c=[],d=function(g){(g=vc(g))&&c.push.apply(c,g)};if(Array.isArray(a))for(var e=0,f=a.length;e<f;e++)d(a[e]);else d(a);this.context=Ka(c);b&&k.merge(this,b);this.selector={rows:null,cols:null,opts:null};C.extend(this,this,mc)};u.Api=C;k.extend(C.prototype,{any:function(){return 0!==this.count()},
|
116 |
+
concat:N.concat,context:[],count:function(){return this.flatten().length},each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new C(b[a],this[a]):null},filter:function(a){var b=[];if(N.filter)b=N.filter.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new C(this.context,b)},flatten:function(){var a=[];return new C(this.context,a.concat.apply(a,this.toArray()))},
|
117 |
+
join:N.join,indexOf:N.indexOf||function(a,b){b=b||0;for(var c=this.length;b<c;b++)if(this[b]===a)return b;return-1},iterator:function(a,b,c,d){var e=[],f,g,h=this.context,l,n=this.selector;"string"===typeof a&&(d=c,c=b,b=a,a=!1);var m=0;for(f=h.length;m<f;m++){var p=new C(h[m]);if("table"===b){var t=c.call(p,h[m],m);t!==q&&e.push(t)}else if("columns"===b||"rows"===b)t=c.call(p,h[m],this[m],m),t!==q&&e.push(t);else if("column"===b||"column-rows"===b||"row"===b||"cell"===b){var v=this[m];"column-rows"===
|
118 |
+
b&&(l=Va(h[m],n.opts));var x=0;for(g=v.length;x<g;x++)t=v[x],t="cell"===b?c.call(p,h[m],t.row,t.column,m,x):c.call(p,h[m],t,m,x,l),t!==q&&e.push(t)}}return e.length||d?(a=new C(h,a?e.concat.apply([],e):e),b=a.selector,b.rows=n.rows,b.cols=n.cols,b.opts=n.opts,a):this},lastIndexOf:N.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(N.map)b=N.map.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)b.push(a.call(this,this[c],
|
119 |
+
c));return new C(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},pop:N.pop,push:N.push,reduce:N.reduce||function(a,b){return Cb(this,a,b,0,this.length,1)},reduceRight:N.reduceRight||function(a,b){return Cb(this,a,b,this.length-1,-1,-1)},reverse:N.reverse,selector:null,shift:N.shift,slice:function(){return new C(this.context,this)},sort:N.sort,splice:N.splice,toArray:function(){return N.slice.call(this)},to$:function(){return k(this)},toJQuery:function(){return k(this)},
|
120 |
+
unique:function(){return new C(this.context,Ka(this))},unshift:N.unshift});C.extend=function(a,b,c){if(c.length&&b&&(b instanceof C||b.__dt_wrapper)){var d,e=function(h,l,n){return function(){var m=l.apply(h,arguments);C.extend(m,m,n.methodExt);return m}};var f=0;for(d=c.length;f<d;f++){var g=c[f];b[g.name]="function"===g.type?e(a,g.val,g):"object"===g.type?{}:g.val;b[g.name].__dt_wrapper=!0;C.extend(a,b[g.name],g.propExt)}}};C.register=w=function(a,b){if(Array.isArray(a))for(var c=0,d=a.length;c<
|
121 |
+
d;c++)C.register(a[c],b);else{d=a.split(".");var e=mc,f;a=0;for(c=d.length;a<c;a++){var g=(f=-1!==d[a].indexOf("()"))?d[a].replace("()",""):d[a];a:{var h=0;for(var l=e.length;h<l;h++)if(e[h].name===g){h=e[h];break a}h=null}h||(h={name:g,val:{},methodExt:[],propExt:[],type:"object"},e.push(h));a===c-1?(h.val=b,h.type="function"===typeof b?"function":k.isPlainObject(b)?"object":"other"):e=f?h.methodExt:h.propExt}}};C.registerPlural=J=function(a,b,c){C.register(a,c);C.register(b,function(){var d=c.apply(this,
|
122 |
+
arguments);return d===this?this:d instanceof C?d.length?Array.isArray(d[0])?new C(d.context,d[0]):d[0]:q:d})};var nc=function(a,b){if(Array.isArray(a))return k.map(a,function(d){return nc(d,b)});if("number"===typeof a)return[b[a]];var c=k.map(b,function(d,e){return d.nTable});return k(c).filter(a).map(function(d){d=k.inArray(this,c);return b[d]}).toArray()};w("tables()",function(a){return a!==q&&null!==a?new C(nc(a,this.context)):this});w("table()",function(a){a=this.tables(a);var b=a.context;return b.length?
|
123 |
+
new C(b[0]):a});J("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});J("tables().body()","table().body()",function(){return this.iterator("table",function(a){return a.nTBody},1)});J("tables().header()","table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});J("tables().footer()","table().footer()",function(){return this.iterator("table",function(a){return a.nTFoot},1)});J("tables().containers()","table().container()",
|
124 |
+
function(){return this.iterator("table",function(a){return a.nTableWrapper},1)});w("draw()",function(a){return this.iterator("table",function(b){"page"===a?fa(b):("string"===typeof a&&(a="full-hold"===a?!1:!0),ja(b,!1===a))})});w("page()",function(a){return a===q?this.page.info().page:this.iterator("table",function(b){lb(b,a)})});w("page.info()",function(a){if(0===this.context.length)return q;a=this.context[0];var b=a._iDisplayStart,c=a.oFeatures.bPaginate?a._iDisplayLength:-1,d=a.fnRecordsDisplay(),
|
125 |
+
e=-1===c;return{page:e?0:Math.floor(b/c),pages:e?1:Math.ceil(d/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:d,serverSide:"ssp"===P(a)}});w("page.len()",function(a){return a===q?0!==this.context.length?this.context[0]._iDisplayLength:q:this.iterator("table",function(b){jb(b,a)})});var oc=function(a,b,c){if(c){var d=new C(a);d.one("draw",function(){c(d.ajax.json())})}if("ssp"==P(a))ja(a,b);else{U(a,!0);var e=a.jqXHR;e&&4!==e.readyState&&e.abort();Ma(a,[],function(f){Ia(a);
|
126 |
+
f=Na(a,f);for(var g=0,h=f.length;g<h;g++)ea(a,f[g]);ja(a,b);U(a,!1)})}};w("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});w("ajax.params()",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});w("ajax.reload()",function(a,b){return this.iterator("table",function(c){oc(c,!1===b,a)})});w("ajax.url()",function(a){var b=this.context;if(a===q){if(0===b.length)return q;b=b[0];return b.ajax?k.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",
|
127 |
+
function(c){k.isPlainObject(c.ajax)?c.ajax.url=a:c.ajax=a})});w("ajax.url().load()",function(a,b){return this.iterator("table",function(c){oc(c,!1===b,a)})});var ub=function(a,b,c,d,e){var f=[],g,h,l;var n=typeof b;b&&"string"!==n&&"function"!==n&&b.length!==q||(b=[b]);n=0;for(h=b.length;n<h;n++){var m=b[n]&&b[n].split&&!b[n].match(/[\[\(:]/)?b[n].split(","):[b[n]];var p=0;for(l=m.length;p<l;p++)(g=c("string"===typeof m[p]?m[p].trim():m[p]))&&g.length&&(f=f.concat(g))}a=L.selector[a];if(a.length)for(n=
|
128 |
+
0,h=a.length;n<h;n++)f=a[n](d,e,f);return Ka(f)},vb=function(a){a||(a={});a.filter&&a.search===q&&(a.search=a.filter);return k.extend({search:"none",order:"current",page:"all"},a)},wb=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=a[b],a[0].length=1,a.length=1,a.context=[a.context[b]],a;a.length=0;return a},Va=function(a,b){var c=[],d=a.aiDisplay;var e=a.aiDisplayMaster;var f=b.search;var g=b.order;b=b.page;if("ssp"==P(a))return"removed"===f?[]:qa(0,e.length);if("current"==
|
129 |
+
b)for(g=a._iDisplayStart,a=a.fnDisplayEnd();g<a;g++)c.push(d[g]);else if("current"==g||"applied"==g)if("none"==f)c=e.slice();else if("applied"==f)c=d.slice();else{if("removed"==f){var h={};g=0;for(a=d.length;g<a;g++)h[d[g]]=null;c=k.map(e,function(l){return h.hasOwnProperty(l)?null:l})}}else if("index"==g||"original"==g)for(g=0,a=a.aoData.length;g<a;g++)"none"==f?c.push(g):(e=k.inArray(g,d),(-1===e&&"removed"==f||0<=e&&"applied"==f)&&c.push(g));return c},wc=function(a,b,c){var d;return ub("row",b,
|
130 |
+
function(e){var f=hc(e),g=a.aoData;if(null!==f&&!c)return[f];d||(d=Va(a,c));if(null!==f&&-1!==k.inArray(f,d))return[f];if(null===e||e===q||""===e)return d;if("function"===typeof e)return k.map(d,function(l){var n=g[l];return e(l,n._aData,n.nTr)?l:null});if(e.nodeName){f=e._DT_RowIndex;var h=e._DT_CellIndex;if(f!==q)return g[f]&&g[f].nTr===e?[f]:[];if(h)return g[h.row]&&g[h.row].nTr===e.parentNode?[h.row]:[];f=k(e).closest("*[data-dt-row]");return f.length?[f.data("dt-row")]:[]}if("string"===typeof e&&
|
131 |
+
"#"===e.charAt(0)&&(f=a.aIds[e.replace(/^#/,"")],f!==q))return[f.idx];f=kc(Da(a.aoData,d,"nTr"));return k(f).filter(e).map(function(){return this._DT_RowIndex}).toArray()},a,c)};w("rows()",function(a,b){a===q?a="":k.isPlainObject(a)&&(b=a,a="");b=vb(b);var c=this.iterator("table",function(d){return wc(d,a,b)},1);c.selector.rows=a;c.selector.opts=b;return c});w("rows().nodes()",function(){return this.iterator("row",function(a,b){return a.aoData[b].nTr||q},1)});w("rows().data()",function(){return this.iterator(!0,
|
132 |
+
"rows",function(a,b){return Da(a.aoData,b,"_aData")},1)});J("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){b=b.aoData[c];return"search"===a?b._aFilterData:b._aSortData},1)});J("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",function(b,c){va(b,c,a)})});J("rows().indexes()","row().index()",function(){return this.iterator("row",function(a,b){return b},1)});J("rows().ids()","row().id()",function(a){for(var b=[],c=this.context,d=
|
133 |
+
0,e=c.length;d<e;d++)for(var f=0,g=this[d].length;f<g;f++){var h=c[d].rowIdFn(c[d].aoData[this[d][f]]._aData);b.push((!0===a?"#":"")+h)}return new C(c,b)});J("rows().remove()","row().remove()",function(){var a=this;this.iterator("row",function(b,c,d){var e=b.aoData,f=e[c],g,h;e.splice(c,1);var l=0;for(g=e.length;l<g;l++){var n=e[l];var m=n.anCells;null!==n.nTr&&(n.nTr._DT_RowIndex=l);if(null!==m)for(n=0,h=m.length;n<h;n++)m[n]._DT_CellIndex.row=l}Ja(b.aiDisplayMaster,c);Ja(b.aiDisplay,c);Ja(a[d],
|
134 |
+
c,!1);0<b._iRecordsDisplay&&b._iRecordsDisplay--;kb(b);c=b.rowIdFn(f._aData);c!==q&&delete b.aIds[c]});this.iterator("table",function(b){for(var c=0,d=b.aoData.length;c<d;c++)b.aoData[c].idx=c});return this});w("rows.add()",function(a){var b=this.iterator("table",function(d){var e,f=[];var g=0;for(e=a.length;g<e;g++){var h=a[g];h.nodeName&&"TR"===h.nodeName.toUpperCase()?f.push(Ha(d,h)[0]):f.push(ea(d,h))}return f},1),c=this.rows(-1);c.pop();k.merge(c,b);return c});w("row()",function(a,b){return wb(this.rows(a,
|
135 |
+
b))});w("row().data()",function(a){var b=this.context;if(a===q)return b.length&&this.length?b[0].aoData[this[0]]._aData:q;var c=b[0].aoData[this[0]];c._aData=a;Array.isArray(a)&&c.nTr&&c.nTr.id&&da(b[0].rowId)(a,c.nTr.id);va(b[0],this[0],"data");return this});w("row().node()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||null:null});w("row.add()",function(a){a instanceof k&&a.length&&(a=a[0]);var b=this.iterator("table",function(c){return a.nodeName&&"TR"===
|
136 |
+
a.nodeName.toUpperCase()?Ha(c,a)[0]:ea(c,a)});return this.row(b[0])});var xc=function(a,b,c,d){var e=[],f=function(g,h){if(Array.isArray(g)||g instanceof k)for(var l=0,n=g.length;l<n;l++)f(g[l],h);else g.nodeName&&"tr"===g.nodeName.toLowerCase()?e.push(g):(l=k("<tr><td></td></tr>").addClass(h),k("td",l).addClass(h).html(g)[0].colSpan=na(a),e.push(l[0]))};f(c,d);b._details&&b._details.detach();b._details=k(e);b._detailsShow&&b._details.insertAfter(b.nTr)},xb=function(a,b){var c=a.context;c.length&&
|
137 |
+
(a=c[0].aoData[b!==q?b:a[0]])&&a._details&&(a._details.remove(),a._detailsShow=q,a._details=q)},pc=function(a,b){var c=a.context;c.length&&a.length&&(a=c[0].aoData[a[0]],a._details&&((a._detailsShow=b)?a._details.insertAfter(a.nTr):a._details.detach(),yc(c[0])))},yc=function(a){var b=new C(a),c=a.aoData;b.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<T(c,"_details").length&&(b.on("draw.dt.DT_details",function(d,e){a===e&&b.rows({page:"current"}).eq(0).each(function(f){f=
|
138 |
+
c[f];f._detailsShow&&f._details.insertAfter(f.nTr)})}),b.on("column-visibility.dt.DT_details",function(d,e,f,g){if(a===e)for(e=na(e),f=0,g=c.length;f<g;f++)d=c[f],d._details&&d._details.children("td[colspan]").attr("colspan",e)}),b.on("destroy.dt.DT_details",function(d,e){if(a===e)for(d=0,e=c.length;d<e;d++)c[d]._details&&xb(b,d)}))};w("row().child()",function(a,b){var c=this.context;if(a===q)return c.length&&this.length?c[0].aoData[this[0]]._details:q;!0===a?this.child.show():!1===a?xb(this):c.length&&
|
139 |
+
this.length&&xc(c[0],c[0].aoData[this[0]],a,b);return this});w(["row().child.show()","row().child().show()"],function(a){pc(this,!0);return this});w(["row().child.hide()","row().child().hide()"],function(){pc(this,!1);return this});w(["row().child.remove()","row().child().remove()"],function(){xb(this);return this});w("row().child.isShown()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var zc=/^([^:]+):(name|visIdx|visible)$/,qc=function(a,
|
140 |
+
b,c,d,e){c=[];d=0;for(var f=e.length;d<f;d++)c.push(S(a,e[d],b));return c},Ac=function(a,b,c){var d=a.aoColumns,e=T(d,"sName"),f=T(d,"nTh");return ub("column",b,function(g){var h=hc(g);if(""===g)return qa(d.length);if(null!==h)return[0<=h?h:d.length+h];if("function"===typeof g){var l=Va(a,c);return k.map(d,function(p,t){return g(t,qc(a,t,0,0,l),f[t])?t:null})}var n="string"===typeof g?g.match(zc):"";if(n)switch(n[2]){case "visIdx":case "visible":h=parseInt(n[1],10);if(0>h){var m=k.map(d,function(p,
|
141 |
+
t){return p.bVisible?t:null});return[m[m.length+h]]}return[sa(a,h)];case "name":return k.map(e,function(p,t){return p===n[1]?t:null});default:return[]}if(g.nodeName&&g._DT_CellIndex)return[g._DT_CellIndex.column];h=k(f).filter(g).map(function(){return k.inArray(this,f)}).toArray();if(h.length||!g.nodeName)return h;h=k(g).closest("*[data-dt-column]");return h.length?[h.data("dt-column")]:[]},a,c)};w("columns()",function(a,b){a===q?a="":k.isPlainObject(a)&&(b=a,a="");b=vb(b);var c=this.iterator("table",
|
142 |
+
function(d){return Ac(d,a,b)},1);c.selector.cols=a;c.selector.opts=b;return c});J("columns().header()","column().header()",function(a,b){return this.iterator("column",function(c,d){return c.aoColumns[d].nTh},1)});J("columns().footer()","column().footer()",function(a,b){return this.iterator("column",function(c,d){return c.aoColumns[d].nTf},1)});J("columns().data()","column().data()",function(){return this.iterator("column-rows",qc,1)});J("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",
|
143 |
+
function(a,b){return a.aoColumns[b].mData},1)});J("columns().cache()","column().cache()",function(a){return this.iterator("column-rows",function(b,c,d,e,f){return Da(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});J("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,e){return Da(a.aoData,e,"anCells",b)},1)});J("columns().visible()","column().visible()",function(a,b){var c=this,d=this.iterator("column",function(e,f){if(a===q)return e.aoColumns[f].bVisible;
|
144 |
+
var g=e.aoColumns,h=g[f],l=e.aoData,n;if(a!==q&&h.bVisible!==a){if(a){var m=k.inArray(!0,T(g,"bVisible"),f+1);g=0;for(n=l.length;g<n;g++){var p=l[g].nTr;e=l[g].anCells;p&&p.insertBefore(e[f],e[m]||null)}}else k(T(e.aoData,"anCells",f)).detach();h.bVisible=a}});a!==q&&this.iterator("table",function(e){xa(e,e.aoHeader);xa(e,e.aoFooter);e.aiDisplay.length||k(e.nTBody).find("td[colspan]").attr("colspan",na(e));Ra(e);c.iterator("column",function(f,g){H(f,null,"column-visibility",[f,g,a,b])});(b===q||b)&&
|
145 |
+
c.columns.adjust()});return d});J("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?ta(b,c):c},1)});w("columns.adjust()",function(){return this.iterator("table",function(a){ra(a)},1)});w("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return sa(c,b);if("fromData"===a||"toVisible"===a)return ta(c,b)}});w("column()",function(a,b){return wb(this.columns(a,b))});var Bc=
|
146 |
+
function(a,b,c){var d=a.aoData,e=Va(a,c),f=kc(Da(d,e,"anCells")),g=k(lc([],f)),h,l=a.aoColumns.length,n,m,p,t,v,x;return ub("cell",b,function(r){var A="function"===typeof r;if(null===r||r===q||A){n=[];m=0;for(p=e.length;m<p;m++)for(h=e[m],t=0;t<l;t++)v={row:h,column:t},A?(x=d[h],r(v,S(a,h,t),x.anCells?x.anCells[t]:null)&&n.push(v)):n.push(v);return n}if(k.isPlainObject(r))return r.column!==q&&r.row!==q&&-1!==k.inArray(r.row,e)?[r]:[];A=g.filter(r).map(function(D,I){return{row:I._DT_CellIndex.row,
|
147 |
+
column:I._DT_CellIndex.column}}).toArray();if(A.length||!r.nodeName)return A;x=k(r).closest("*[data-dt-row]");return x.length?[{row:x.data("dt-row"),column:x.data("dt-column")}]:[]},a,c)};w("cells()",function(a,b,c){k.isPlainObject(a)&&(a.row===q?(c=a,a=null):(c=b,b=null));k.isPlainObject(b)&&(c=b,b=null);if(null===b||b===q)return this.iterator("table",function(m){return Bc(m,a,vb(c))});var d=c?{page:c.page,order:c.order,search:c.search}:{},e=this.columns(b,d),f=this.rows(a,d),g,h,l,n;d=this.iterator("table",
|
148 |
+
function(m,p){m=[];g=0;for(h=f[p].length;g<h;g++)for(l=0,n=e[p].length;l<n;l++)m.push({row:f[p][g],column:e[p][l]});return m},1);d=c&&c.selected?this.cells(d,c):d;k.extend(d.selector,{cols:b,rows:a,opts:c});return d});J("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(a,b,c){return(a=a.aoData[b])&&a.anCells?a.anCells[c]:q},1)});w("cells().data()",function(){return this.iterator("cell",function(a,b,c){return S(a,b,c)},1)});J("cells().cache()","cell().cache()",function(a){a=
|
149 |
+
"search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,d){return b.aoData[c][a][d]},1)});J("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,d){return S(b,c,d,a)},1)});J("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a,b,c){return{row:b,column:c,columnVisible:ta(a,c)}},1)});J("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(b,c,d){va(b,c,a,d)})});w("cell()",
|
150 |
+
function(a,b,c){return wb(this.cells(a,b,c))});w("cell().data()",function(a){var b=this.context,c=this[0];if(a===q)return b.length&&c.length?S(b[0],c[0].row,c[0].column):q;Eb(b[0],c[0].row,c[0].column,a);va(b[0],c[0].row,"data",c[0].column);return this});w("order()",function(a,b){var c=this.context;if(a===q)return 0!==c.length?c[0].aaSorting:q;"number"===typeof a?a=[[a,b]]:a.length&&!Array.isArray(a[0])&&(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(d){d.aaSorting=
|
151 |
+
a.slice()})});w("order.listener()",function(a,b,c){return this.iterator("table",function(d){eb(d,a,b,c)})});w("order.fixed()",function(a){if(!a){var b=this.context;b=b.length?b[0].aaSortingFixed:q;return Array.isArray(b)?{pre:b}:b}return this.iterator("table",function(c){c.aaSortingFixed=k.extend(!0,{},a)})});w(["columns().order()","column().order()"],function(a){var b=this;return this.iterator("table",function(c,d){var e=[];k.each(b[d],function(f,g){e.push([g,a])});c.aaSorting=e})});w("search()",
|
152 |
+
function(a,b,c,d){var e=this.context;return a===q?0!==e.length?e[0].oPreviousSearch.sSearch:q:this.iterator("table",function(f){f.oFeatures.bFilter&&ya(f,k.extend({},f.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),1)})});J("columns().search()","column().search()",function(a,b,c,d){return this.iterator("column",function(e,f){var g=e.aoPreSearchCols;if(a===q)return g[f].sSearch;e.oFeatures.bFilter&&(k.extend(g[f],{sSearch:a+"",bRegex:null===
|
153 |
+
b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),ya(e,e.oPreviousSearch,1))})});w("state()",function(){return this.context.length?this.context[0].oSavedState:null});w("state.clear()",function(){return this.iterator("table",function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});w("state.loaded()",function(){return this.context.length?this.context[0].oLoadedState:null});w("state.save()",function(){return this.iterator("table",function(a){Ra(a)})});u.versionCheck=u.fnVersionCheck=function(a){var b=
|
154 |
+
u.version.split(".");a=a.split(".");for(var c,d,e=0,f=a.length;e<f;e++)if(c=parseInt(b[e],10)||0,d=parseInt(a[e],10)||0,c!==d)return c>d;return!0};u.isDataTable=u.fnIsDataTable=function(a){var b=k(a).get(0),c=!1;if(a instanceof u.Api)return!0;k.each(u.settings,function(d,e){d=e.nScrollHead?k("table",e.nScrollHead)[0]:null;var f=e.nScrollFoot?k("table",e.nScrollFoot)[0]:null;if(e.nTable===b||d===b||f===b)c=!0});return c};u.tables=u.fnTables=function(a){var b=!1;k.isPlainObject(a)&&(b=a.api,a=a.visible);
|
155 |
+
var c=k.map(u.settings,function(d){if(!a||a&&k(d.nTable).is(":visible"))return d.nTable});return b?new C(c):c};u.camelToHungarian=O;w("$()",function(a,b){b=this.rows(b).nodes();b=k(b);return k([].concat(b.filter(a).toArray(),b.find(a).toArray()))});k.each(["on","one","off"],function(a,b){w(b+"()",function(){var c=Array.prototype.slice.call(arguments);c[0]=k.map(c[0].split(/\s/),function(e){return e.match(/\.dt\b/)?e:e+".dt"}).join(" ");var d=k(this.tables().nodes());d[b].apply(d,c);return this})});
|
156 |
+
w("clear()",function(){return this.iterator("table",function(a){Ia(a)})});w("settings()",function(){return new C(this.context,this.context)});w("init()",function(){var a=this.context;return a.length?a[0].oInit:null});w("data()",function(){return this.iterator("table",function(a){return T(a.aoData,"_aData")}).flatten()});w("destroy()",function(a){a=a||!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasses,e=b.nTable,f=b.nTBody,g=b.nTHead,h=b.nTFoot,l=k(e);f=k(f);
|
157 |
+
var n=k(b.nTableWrapper),m=k.map(b.aoData,function(t){return t.nTr}),p;b.bDestroying=!0;H(b,"aoDestroyCallback","destroy",[b]);a||(new C(b)).columns().visible(!0);n.off(".DT").find(":not(tbody *)").off(".DT");k(y).off(".DT-"+b.sInstance);e!=g.parentNode&&(l.children("thead").detach(),l.append(g));h&&e!=h.parentNode&&(l.children("tfoot").detach(),l.append(h));b.aaSorting=[];b.aaSortingFixed=[];Qa(b);k(m).removeClass(b.asStripeClasses.join(" "));k("th, td",g).removeClass(d.sSortable+" "+d.sSortableAsc+
|
158 |
+
" "+d.sSortableDesc+" "+d.sSortableNone);f.children().detach();f.append(m);g=a?"remove":"detach";l[g]();n[g]();!a&&c&&(c.insertBefore(e,b.nTableReinsertBefore),l.css("width",b.sDestroyWidth).removeClass(d.sTable),(p=b.asDestroyStripes.length)&&f.children().each(function(t){k(this).addClass(b.asDestroyStripes[t%p])}));c=k.inArray(b,u.settings);-1!==c&&u.settings.splice(c,1)})});k.each(["column","row","cell"],function(a,b){w(b+"s().every()",function(c){var d=this.selector.opts,e=this;return this.iterator(b,
|
159 |
+
function(f,g,h,l,n){c.call(e[b](g,"cell"===b?h:d,"cell"===b?d:q),g,h,l,n)})})});w("i18n()",function(a,b,c){var d=this.context[0];a=ia(a)(d.oLanguage);a===q&&(a=b);c!==q&&k.isPlainObject(a)&&(a=a[c]!==q?a[c]:a._);return a.replace("%d",c)});u.version="1.10.25";u.settings=[];u.models={};u.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};u.models.oRow={nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};u.models.oColumn=
|
160 |
+
{idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,sWidthOrig:null};u.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,
|
161 |
+
aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,
|
162 |
+
fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){return{}}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,
|
163 |
+
iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",
|
164 |
+
sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:k.extend({},u.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"};G(u.defaults);u.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc",
|
165 |
+
"desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};G(u.defaults.column);u.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,
|
166 |
+
sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],
|
167 |
+
aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,jqXHR:null,json:q,oAjaxData:q,fnServerData:null,aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,
|
168 |
+
iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==P(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==P(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=this.oFeatures,f=e.bPaginate;
|
169 |
+
return e.bServerSide?!1===f||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};u.ext=L={buttons:{},classes:{},builder:"-source-",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:u.fnVersionCheck,
|
170 |
+
iApiIndex:0,oJUIClasses:{},sVersion:u.version};k.extend(L,{afnFiltering:L.search,aTypes:L.type.detect,ofnSearch:L.type.search,oSort:L.type.order,afnSortData:L.order,aoFeatures:L.feature,oApi:L.internal,oStdClasses:L.classes,oPagination:L.pager});k.extend(u.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",
|
171 |
+
sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_desc_disabled",sSortableDesc:"sorting_asc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",
|
172 |
+
sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var ec=u.ext.pager;k.extend(ec,{simple:function(a,b){return["previous","next"]},full:function(a,b){return["first","previous","next","last"]},numbers:function(a,b){return[Ca(a,b)]},simple_numbers:function(a,b){return["previous",Ca(a,b),"next"]},
|
173 |
+
full_numbers:function(a,b){return["first","previous",Ca(a,b),"next","last"]},first_last_numbers:function(a,b){return["first",Ca(a,b),"last"]},_numbers:Ca,numbers_length:7});k.extend(!0,u.ext.renderer,{pageButton:{_:function(a,b,c,d,e,f){var g=a.oClasses,h=a.oLanguage.oPaginate,l=a.oLanguage.oAria.paginate||{},n,m,p=0,t=function(x,r){var A,D=g.sPageButtonDisabled,I=function(E){lb(a,E.data.action,!0)};var W=0;for(A=r.length;W<A;W++){var M=r[W];if(Array.isArray(M)){var B=k("<"+(M.DT_el||"div")+"/>").appendTo(x);
|
174 |
+
t(B,M)}else{n=null;m=M;B=a.iTabIndex;switch(M){case "ellipsis":x.append('<span class="ellipsis">…</span>');break;case "first":n=h.sFirst;0===e&&(B=-1,m+=" "+D);break;case "previous":n=h.sPrevious;0===e&&(B=-1,m+=" "+D);break;case "next":n=h.sNext;if(0===f||e===f-1)B=-1,m+=" "+D;break;case "last":n=h.sLast;if(0===f||e===f-1)B=-1,m+=" "+D;break;default:n=a.fnFormatNumber(M+1),m=e===M?g.sPageButtonActive:""}null!==n&&(B=k("<a>",{"class":g.sPageButton+" "+m,"aria-controls":a.sTableId,"aria-label":l[M],
|
175 |
+
"data-dt-idx":p,tabindex:B,id:0===c&&"string"===typeof M?a.sTableId+"_"+M:null}).html(n).appendTo(x),pb(B,{action:M},I),p++)}}};try{var v=k(b).find(z.activeElement).data("dt-idx")}catch(x){}t(k(b).empty(),d);v!==q&&k(b).find("[data-dt-idx="+v+"]").trigger("focus")}}});k.extend(u.ext.type.detect,[function(a,b){b=b.oLanguage.sDecimal;return tb(a,b)?"num"+b:null},function(a,b){if(a&&!(a instanceof Date)&&!tc.test(a))return null;b=Date.parse(a);return null!==b&&!isNaN(b)||Z(a)?"date":null},function(a,
|
176 |
+
b){b=b.oLanguage.sDecimal;return tb(a,b,!0)?"num-fmt"+b:null},function(a,b){b=b.oLanguage.sDecimal;return jc(a,b)?"html-num"+b:null},function(a,b){b=b.oLanguage.sDecimal;return jc(a,b,!0)?"html-num-fmt"+b:null},function(a,b){return Z(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);k.extend(u.ext.type.search,{html:function(a){return Z(a)?a:"string"===typeof a?a.replace(gc," ").replace(Ua,""):""},string:function(a){return Z(a)?a:"string"===typeof a?a.replace(gc," "):a}});var Ta=function(a,
|
177 |
+
b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=ic(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};k.extend(L.type.order,{"date-pre":function(a){a=Date.parse(a);return isNaN(a)?-Infinity:a},"html-pre":function(a){return Z(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return Z(a)?"":"string"===typeof a?a.toLowerCase():a.toString?a.toString():""},"string-asc":function(a,b){return a<b?-1:a>b?1:0},"string-desc":function(a,b){return a<
|
178 |
+
b?1:a>b?-1:0}});Wa("");k.extend(!0,u.ext.renderer,{header:{_:function(a,b,c,d){k(a.nTable).on("order.dt.DT",function(e,f,g,h){a===f&&(e=c.idx,b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass("asc"==h[e]?d.sSortAsc:"desc"==h[e]?d.sSortDesc:c.sSortingClass))})},jqueryui:function(a,b,c,d){k("<div/>").addClass(d.sSortJUIWrapper).append(b.contents()).append(k("<span/>").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);k(a.nTable).on("order.dt.DT",function(e,f,g,h){a===f&&(e=c.idx,b.removeClass(d.sSortAsc+
|
179 |
+
" "+d.sSortDesc).addClass("asc"==h[e]?d.sSortAsc:"desc"==h[e]?d.sSortDesc:c.sSortingClass),b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass("asc"==h[e]?d.sSortJUIAsc:"desc"==h[e]?d.sSortJUIDesc:c.sSortingClassJUI))})}}});var yb=function(a){return"string"===typeof a?a.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,"""):a};u.render={number:function(a,b,c,d,e){return{display:function(f){if("number"!==
|
180 |
+
typeof f&&"string"!==typeof f)return f;var g=0>f?"-":"",h=parseFloat(f);if(isNaN(h))return yb(f);h=h.toFixed(c);f=Math.abs(h);h=parseInt(f,10);f=c?b+(f-h).toFixed(c).substring(2):"";0===h&&0===parseFloat(f)&&(g="");return g+(d||"")+h.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+f+(e||"")}}},text:function(){return{display:yb,filter:yb}}};k.extend(u.ext.internal,{_fnExternApiFunc:fc,_fnBuildAjax:Ma,_fnAjaxUpdate:Gb,_fnAjaxParameters:Pb,_fnAjaxUpdateDraw:Qb,_fnAjaxDataSrc:Na,_fnAddColumn:Xa,_fnColumnOptions:Ea,
|
181 |
+
_fnAdjustColumnSizing:ra,_fnVisibleToColumnIndex:sa,_fnColumnIndexToVisible:ta,_fnVisbleColumns:na,_fnGetColumns:Ga,_fnColumnTypes:Za,_fnApplyColumnDefs:Db,_fnHungarianMap:G,_fnCamelToHungarian:O,_fnLanguageCompat:ma,_fnBrowserDetect:Bb,_fnAddData:ea,_fnAddTr:Ha,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==q?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return k.inArray(c,a.aoData[b].anCells)},_fnGetCellData:S,_fnSetCellData:Eb,_fnSplitObjNotation:bb,_fnGetObjectDataFn:ia,
|
182 |
+
_fnSetObjectDataFn:da,_fnGetDataMaster:cb,_fnClearTable:Ia,_fnDeleteIndex:Ja,_fnInvalidate:va,_fnGetRowElements:ab,_fnCreateTr:$a,_fnBuildHead:Fb,_fnDrawHead:xa,_fnDraw:fa,_fnReDraw:ja,_fnAddOptionsHtml:Ib,_fnDetectHeader:wa,_fnGetUniqueThs:La,_fnFeatureHtmlFilter:Kb,_fnFilterComplete:ya,_fnFilterCustom:Tb,_fnFilterColumn:Sb,_fnFilter:Rb,_fnFilterCreateSearch:hb,_fnEscapeRegex:ib,_fnFilterData:Ub,_fnFeatureHtmlInfo:Nb,_fnUpdateInfo:Xb,_fnInfoMacros:Yb,_fnInitialise:za,_fnInitComplete:Oa,_fnLengthChange:jb,
|
183 |
+
_fnFeatureHtmlLength:Jb,_fnFeatureHtmlPaginate:Ob,_fnPageChange:lb,_fnFeatureHtmlProcessing:Lb,_fnProcessingDisplay:U,_fnFeatureHtmlTable:Mb,_fnScrollDraw:Fa,_fnApplyToChildren:ba,_fnCalculateColumnWidths:Ya,_fnThrottle:gb,_fnConvertToWidth:Zb,_fnGetWidestNode:$b,_fnGetMaxLenString:ac,_fnStringToCss:K,_fnSortFlatten:pa,_fnSort:Hb,_fnSortAria:cc,_fnSortListener:ob,_fnSortAttachListener:eb,_fnSortingClasses:Qa,_fnSortData:bc,_fnSaveState:Ra,_fnLoadState:dc,_fnSettingsFromNode:Sa,_fnLog:ca,_fnMap:V,
|
184 |
+
_fnBindAction:pb,_fnCallbackReg:Q,_fnCallbackFire:H,_fnLengthOverflow:kb,_fnRenderer:fb,_fnDataSource:P,_fnRowAttributes:db,_fnExtend:qb,_fnCalculateEnd:function(){}});k.fn.dataTable=u;u.$=k;k.fn.dataTableSettings=u.settings;k.fn.dataTableExt=u.ext;k.fn.DataTable=function(a){return k(this).dataTable(a).api()};k.each(u,function(a,b){k.fn.DataTable[a]=b});return k.fn.dataTable});
|
public/js/wpel-admin.js
CHANGED
@@ -4,125 +4,372 @@
|
|
4 |
*/
|
5 |
/*global jQuery, window*/
|
6 |
jQuery(function ($) {
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
},
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
26 |
|
27 |
-
|
28 |
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
|
36 |
-
|
37 |
-
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
/**
|
47 |
-
* Link Settings
|
48 |
-
*/
|
49 |
-
$wrapper.on('change', '.js-icon-type select', function () {
|
50 |
-
var iconType = $(this).val();
|
51 |
-
var $itemsChild = $wrapper.find('.js-icon-type-child');
|
52 |
-
var $itemsDepend = $wrapper.find('.js-icon-type-depend');
|
53 |
-
|
54 |
-
$itemsChild.hide();
|
55 |
-
|
56 |
-
if (iconType === 'image') {
|
57 |
-
$itemsDepend.wpelShow();
|
58 |
-
$itemsChild.filter('.js-icon-type-image').wpelShow();
|
59 |
-
} else if (iconType === 'dashicon') {
|
60 |
-
$itemsDepend.wpelShow();
|
61 |
-
$itemsChild.filter('.js-icon-type-dashicon').wpelShow();
|
62 |
-
} else if (iconType === 'fontawesome') {
|
63 |
-
$itemsDepend.wpelShow();
|
64 |
-
$itemsChild.filter('.js-icon-type-fontawesome').wpelShow();
|
65 |
-
} else {
|
66 |
-
$itemsDepend.wpelHide();
|
67 |
-
}
|
68 |
-
});
|
69 |
|
70 |
-
|
71 |
-
|
|
|
|
|
|
|
|
|
|
|
72 |
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
|
81 |
-
|
82 |
-
|
83 |
|
|
|
|
|
|
|
|
|
84 |
|
85 |
-
|
86 |
-
* Support
|
87 |
-
* Copy to clipboard
|
88 |
-
*/
|
89 |
-
$wrapper.on('click', '.js-wpel-copy', function (e) {
|
90 |
-
e.preventDefault();
|
91 |
|
92 |
-
|
93 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94 |
|
95 |
-
|
96 |
-
|
97 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
98 |
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
|
|
|
|
|
|
|
|
103 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
104 |
});
|
105 |
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
|
110 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
111 |
|
112 |
-
|
113 |
-
|
114 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
115 |
} else {
|
116 |
-
|
117 |
-
$('.contextual-help-tabs li a').first().click();
|
118 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
119 |
|
120 |
-
|
121 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
122 |
|
123 |
-
|
124 |
-
|
125 |
-
// for network pages
|
126 |
-
$('.wpel-network-page').find('form').wpelShow();
|
127 |
-
|
128 |
});
|
4 |
*/
|
5 |
/*global jQuery, window*/
|
6 |
jQuery(function ($) {
|
7 |
+
// add custom jQuery show/hide function
|
8 |
+
$.extend($.fn, {
|
9 |
+
wpelShow: function () {
|
10 |
+
var self = this;
|
11 |
+
this.stop({ clearQueue: true, jumpToEnd: true });
|
12 |
+
this.fadeIn({
|
13 |
+
duration: 500,
|
14 |
+
queue: false,
|
15 |
+
complete: function () {
|
16 |
+
self.removeClass("wpel-hidden");
|
17 |
},
|
18 |
+
});
|
19 |
+
},
|
20 |
+
wpelHide: function () {
|
21 |
+
var self = this;
|
22 |
+
this.stop({ clearQueue: true, jumpToEnd: true });
|
23 |
+
this.fadeOut({
|
24 |
+
duration: 500,
|
25 |
+
queue: false,
|
26 |
+
complete: function () {
|
27 |
+
self.addClass("wpel-hidden");
|
28 |
+
},
|
29 |
+
});
|
30 |
+
},
|
31 |
+
});
|
32 |
|
33 |
+
var $wrapper = $(".wpel-settings-page");
|
34 |
|
35 |
+
/**
|
36 |
+
* Apply Sections Settings
|
37 |
+
*/
|
38 |
+
$wrapper.on("change", ".js-wpel-apply input", function () {
|
39 |
+
var applyAll = $(this).is(":checked");
|
40 |
+
var $items = $wrapper.find(".js-wpel-apply-child");
|
41 |
|
42 |
+
if (applyAll) {
|
43 |
+
$items.wpelHide();
|
44 |
+
} else {
|
45 |
+
$items.wpelShow();
|
46 |
+
}
|
47 |
+
});
|
48 |
|
49 |
+
// trigger immediatly
|
50 |
+
$wrapper.find('.js-wpel-apply input[type="checkbox"]').change();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
51 |
|
52 |
+
/**
|
53 |
+
* Link Settings
|
54 |
+
*/
|
55 |
+
$wrapper.on("change", ".js-icon-type select", function () {
|
56 |
+
var iconType = $(this).val();
|
57 |
+
var $itemsChild = $wrapper.find(".js-icon-type-child");
|
58 |
+
var $itemsDepend = $wrapper.find(".js-icon-type-depend");
|
59 |
|
60 |
+
$itemsChild.hide();
|
61 |
+
|
62 |
+
if (iconType === "image") {
|
63 |
+
$itemsDepend.wpelShow();
|
64 |
+
$itemsChild.filter(".js-icon-type-image").wpelShow();
|
65 |
+
} else if (iconType === "dashicon") {
|
66 |
+
$itemsDepend.wpelShow();
|
67 |
+
$itemsChild.filter(".js-icon-type-dashicon").wpelShow();
|
68 |
+
} else if (iconType === "fontawesome") {
|
69 |
+
$itemsDepend.wpelShow();
|
70 |
+
$itemsChild.filter(".js-icon-type-fontawesome").wpelShow();
|
71 |
+
} else {
|
72 |
+
$itemsDepend.wpelHide();
|
73 |
+
}
|
74 |
+
});
|
75 |
+
|
76 |
+
$wrapper.on("change", '.js-apply-settings input[type="checkbox"]', function () {
|
77 |
+
var $items = $wrapper.find(".form-table tr").not(".js-apply-settings");
|
78 |
+
|
79 |
+
if ($(this).prop("checked")) {
|
80 |
+
$items.wpelShow();
|
81 |
+
$wrapper.find(".js-icon-type select").change();
|
82 |
+
} else {
|
83 |
+
$items.wpelHide();
|
84 |
+
}
|
85 |
+
});
|
86 |
+
|
87 |
+
// trigger immediatly
|
88 |
+
$wrapper.find('.js-apply-settings input[type="checkbox"]').change();
|
89 |
+
|
90 |
+
/**
|
91 |
+
* Support
|
92 |
+
* Copy to clipboard
|
93 |
+
*/
|
94 |
+
$wrapper.on("click", ".js-wpel-copy", function (e) {
|
95 |
+
e.preventDefault();
|
96 |
+
|
97 |
+
var node = $wrapper.find(".js-wpel-copy-target").get(0);
|
98 |
+
node.select();
|
99 |
+
|
100 |
+
var range = document.createRange();
|
101 |
+
range.selectNode(node);
|
102 |
+
window.getSelection().addRange(range);
|
103 |
+
|
104 |
+
try {
|
105 |
+
document.execCommand("copy");
|
106 |
+
} catch (err) {
|
107 |
+
}
|
108 |
+
});
|
109 |
+
|
110 |
+
/**
|
111 |
+
* Help documentation links/buttons
|
112 |
+
*/
|
113 |
+
$wrapper.on("click", "[data-wpel-help]", function () {
|
114 |
+
var helpKey = $(this).data("wpel-help");
|
115 |
+
|
116 |
+
if (helpKey) {
|
117 |
+
// activate given tab
|
118 |
+
$("#tab-link-" + helpKey + " a").click();
|
119 |
+
} else {
|
120 |
+
// activate first tab
|
121 |
+
$(".contextual-help-tabs li a").first().click();
|
122 |
+
}
|
123 |
|
124 |
+
$('#contextual-help-link[aria-expanded="false"]').click();
|
125 |
+
});
|
126 |
|
127 |
+
// show current tab
|
128 |
+
$wrapper.find("form").wpelShow();
|
129 |
+
// for network pages
|
130 |
+
$(".wpel-network-page").find("form").wpelShow();
|
131 |
|
132 |
+
let check_links_timeout;
|
|
|
|
|
|
|
|
|
|
|
133 |
|
134 |
+
$wrapper.on("click", ".check-links", function (e) {
|
135 |
+
e.preventDefault();
|
136 |
+
|
137 |
+
check_links($(this).data("force"));
|
138 |
+
if (!$(this).data("force")) {
|
139 |
+
$("#lh_results").html('<tr class="lh-results-loader"><td><img src=' + wpel.loader + " /><br />Generating list of pages</td></tr>");
|
140 |
+
}
|
141 |
+
});
|
142 |
+
|
143 |
+
const urlParams = new URLSearchParams(window.location.search);
|
144 |
+
const current_tab = decodeURI(urlParams.get("tab"));
|
145 |
+
|
146 |
+
if ((current_tab == 'null' || current_tab == null || current_tab == "link-checking") && wpel.link_checking_enabled) {
|
147 |
+
check_links();
|
148 |
+
}
|
149 |
+
|
150 |
+
function check_links(force) {
|
151 |
+
$("#lh_results").show();
|
152 |
+
let loader_html = '<img class="wpel-loader" src=' + wpel.loader + " />";
|
153 |
+
if (force) {
|
154 |
+
clearTimeout(check_links_timeout);
|
155 |
+
}
|
156 |
+
$.ajax({
|
157 |
+
url: ajaxurl,
|
158 |
+
method: "POST",
|
159 |
+
crossDomain: true,
|
160 |
+
dataType: "json",
|
161 |
+
timeout: 30000,
|
162 |
+
data: {
|
163 |
+
_ajax_nonce: wpel.nonce_ajax,
|
164 |
+
action: "wpel_run_tool",
|
165 |
+
force: force,
|
166 |
+
tool: "check_links",
|
167 |
+
},
|
168 |
+
})
|
169 |
+
.done(function (response) {
|
170 |
+
if (response.success == true) {
|
171 |
+
if (force == true) {
|
172 |
+
location.reload();
|
173 |
+
return;
|
174 |
+
}
|
175 |
+
|
176 |
+
if (response.data.status == "scan_pending" || response.data.status == "pending" || response.data.status == "finished") {
|
177 |
+
var total_pages = 0;
|
178 |
+
var total_pages_links = 0;
|
179 |
+
var total_links = 0;
|
180 |
+
var total_finished = 0;
|
181 |
+
|
182 |
+
for (page in response.data.pages) {
|
183 |
+
total_pages++;
|
184 |
+
var page_id = page.replace(/\/|\:|\./g, "");
|
185 |
+
var html = "";
|
186 |
+
|
187 |
+
html += '<td class="lh-page-href">';
|
188 |
+
if (response.data.pages[page].title && response.data.pages[page].title.length > 0) {
|
189 |
+
html += response.data.pages[page].title + " - ";
|
190 |
+
}
|
191 |
+
html += '<a href="' + page + '" target="_blank">' + page + '<span class="dashicons dashicons-external"></span></a>';
|
192 |
+
html += "</td>";
|
193 |
+
|
194 |
+
html += '<td class="lh-results-stats">';
|
195 |
+
html += '<span class="lh-results-links-total">' + response.data.pages[page].links_total + " links</span>";
|
196 |
+
html += '<span class="lh-results-links-finished">' + response.data.pages[page].links_finished + " scanned</span>";
|
197 |
+
if(response.data.pages[page].links_error > 0){
|
198 |
+
html += '<span class="lh-results-links-error">' + response.data.pages[page].links_error + " errors</span>";
|
199 |
+
}
|
200 |
+
html += "</td>";
|
201 |
+
|
202 |
+
html += "<td>";
|
203 |
+
//Show loader
|
204 |
+
total_links+=response.data.pages[page].links_total;
|
205 |
+
total_finished+=response.data.pages[page].links_error + response.data.pages[page].links_finished;
|
206 |
+
if(response.data.pages[page].links_total > 0){
|
207 |
+
total_pages_links++;
|
208 |
+
}
|
209 |
+
if (response.data.pages[page].links_total == 0 || response.data.pages[page].links_total > response.data.pages[page].links_error + response.data.pages[page].links_finished) {
|
210 |
+
html += loader_html;
|
211 |
+
} else {
|
212 |
+
html += '<div class="button button-primary lh-open-analysis">Open Details</div>';
|
213 |
+
}
|
214 |
+
html += "</td>";
|
215 |
+
|
216 |
+
if ($("#lh_results #wpel-page-" + page_id).length > 0) {
|
217 |
+
if ($("#wpel-page-" + page_id).text() != $("<div>").append(html).text()) {
|
218 |
+
$("#wpel-page-" + page_id).html(html);
|
219 |
+
}
|
220 |
+
} else {
|
221 |
+
$("#lh_results").append('<tr class="lh-page" id="wpel-page-' + page_id + '" data-page="' + page + '">' + html + "</tr>");
|
222 |
+
}
|
223 |
+
}
|
224 |
+
|
225 |
+
if (total_pages > 0) {
|
226 |
+
$(".lh-results-loader").remove();
|
227 |
+
|
228 |
+
var page_progress = total_pages_links/total_pages * 25;
|
229 |
+
var link_progress = total_finished/total_links * 75;
|
230 |
+
|
231 |
+
if(total_finished < total_links){
|
232 |
+
$('#lh-progress-bar-wrapper').show();
|
233 |
+
var progress = page_progress + link_progress;
|
234 |
+
$('#lh-progress-bar').css('width',progress+'%');
|
235 |
+
} else {
|
236 |
+
$('#lh-progress-bar-wrapper').hide();
|
237 |
+
}
|
238 |
|
239 |
+
$(".lh-search-wrapper").show();
|
240 |
+
if (response.data.total_pages > total_pages) {
|
241 |
+
var unscanned_pages = response.data.total_pages - total_pages;
|
242 |
+
$("#lh_pro_count").html(unscanned_pages);
|
243 |
+
$("#lh_pro").show();
|
244 |
+
} else {
|
245 |
+
$("#lh_pro").hide();
|
246 |
+
}
|
247 |
+
} else {
|
248 |
+
$(".lh-search-wrapper").hide();
|
249 |
+
}
|
250 |
|
251 |
+
if (response.data.status == "pending") {
|
252 |
+
check_links_timeout = setTimeout(function () {
|
253 |
+
check_links();
|
254 |
+
}, 2000);
|
255 |
+
}
|
256 |
+
}
|
257 |
+
} else {
|
258 |
+
alert(response.data);
|
259 |
}
|
260 |
+
})
|
261 |
+
.fail(function (data) {
|
262 |
+
alert("An undocumented error occured checking the links");
|
263 |
+
});
|
264 |
+
} // check_links
|
265 |
+
|
266 |
+
var analysis_table = false;
|
267 |
+
$("#lh_results").on("click", ".lh-open-analysis", function () {
|
268 |
+
var page = $(this).parents(".lh-page").attr("data-page");
|
269 |
+
var title = $(this).parents(".lh-page").children(".lh-page-href").html();
|
270 |
+
|
271 |
+
$("#lh_details_title").html(title);
|
272 |
+
|
273 |
+
if (analysis_table != false) {
|
274 |
+
analysis_table.destroy();
|
275 |
+
analysis_table = false;
|
276 |
+
}
|
277 |
+
|
278 |
+
analysis_table = $("#lh_page_details").DataTable({
|
279 |
+
ajax: ajaxurl + "?action=wpel_run_tool&tool=link_details&link=" + page,
|
280 |
+
columnDefs: [
|
281 |
+
{
|
282 |
+
targets: [0],
|
283 |
+
className: "dt-body-center",
|
284 |
+
width: 100,
|
285 |
+
},
|
286 |
+
{
|
287 |
+
targets: [1, 2, 3],
|
288 |
+
className: "dt-body-left dt-head-center",
|
289 |
+
},
|
290 |
+
],
|
291 |
+
fixedColumns: true,
|
292 |
});
|
293 |
|
294 |
+
$("#lh_details").show();
|
295 |
+
$("body").addClass("body_lh_details_open");
|
296 |
+
});
|
297 |
+
|
298 |
+
$("#lh_details").on("click", ".lh-close", function () {
|
299 |
+
$("#lh_details").hide();
|
300 |
+
$("body").removeClass("body_lh_details_open");
|
301 |
+
});
|
302 |
+
|
303 |
+
$("#lh-search").on("change, keyup", function () {
|
304 |
+
var search_term = $(this).val();
|
305 |
+
var $rows = $("#lh_results tr");
|
306 |
+
$rows
|
307 |
+
.show()
|
308 |
+
.filter(function () {
|
309 |
+
var text = $(this).text().replace(/\s+/g, " ").toLowerCase();
|
310 |
+
return !~text.indexOf(search_term);
|
311 |
+
})
|
312 |
+
.hide();
|
313 |
+
});
|
314 |
|
315 |
+
$("#lh_subscribe_button").on("click", function () {
|
316 |
+
if($(this).hasClass('disabled')){
|
317 |
+
return false;
|
318 |
+
}
|
319 |
+
var email = $("#lh_subscribe_email").val();
|
320 |
+
$("#lh_subscribe_button_loader").html('<img class="lh-subscribe-loader" src=' + wpel.loader + ' />');
|
321 |
+
$('#lh_subscribe_button').addClass('disabled');
|
322 |
+
$.ajax({
|
323 |
+
url: wpel.lh_url,
|
324 |
+
method: "POST",
|
325 |
+
crossDomain: true,
|
326 |
+
dataType: "json",
|
327 |
+
timeout: 30000,
|
328 |
+
data: {
|
329 |
+
email: email,
|
330 |
+
},
|
331 |
+
})
|
332 |
+
.done(function (response) {
|
333 |
+
if (response.success == true) {
|
334 |
+
subscribe_message(true, "<b>Thank you!</b> We'll be in touch soon!");
|
335 |
+
$('#lh_subscribe_email').hide();
|
336 |
+
$('#lh_subscribe_button').hide();
|
337 |
+
$.ajax({
|
338 |
+
url: ajaxurl,
|
339 |
+
method: "POST",
|
340 |
+
crossDomain: true,
|
341 |
+
dataType: "json",
|
342 |
+
timeout: 30000,
|
343 |
+
data: {
|
344 |
+
_ajax_nonce: wpel.nonce_ajax,
|
345 |
+
action: "wpel_run_tool",
|
346 |
+
tool: "subscribed",
|
347 |
+
},
|
348 |
+
}).done(function (response) {
|
349 |
+
//
|
350 |
+
});
|
351 |
} else {
|
352 |
+
subscribe_message(false, response.data);
|
|
|
353 |
}
|
354 |
+
})
|
355 |
+
.fail(function (data) {
|
356 |
+
subscribe_message(false, "An undocumented error occured.");
|
357 |
+
})
|
358 |
+
.always(function (data) {
|
359 |
+
$(".lh-subscribe-loader").remove();
|
360 |
+
$('#lh_subscribe_button').removeClass('disabled');
|
361 |
+
});
|
362 |
+
});
|
363 |
|
364 |
+
function subscribe_message(success, message) {
|
365 |
+
if (success) {
|
366 |
+
$("#lh_subscribe_message").removeClass("lh-subscribe-bad");
|
367 |
+
$("#lh_subscribe_message").addClass("lh-subscribe-good");
|
368 |
+
} else {
|
369 |
+
$("#lh_subscribe_message").removeClass("lh-subscribe-good");
|
370 |
+
$("#lh_subscribe_message").addClass("lh-subscribe-bad");
|
371 |
+
}
|
372 |
|
373 |
+
$("#lh_subscribe_message").html(message).show();
|
374 |
+
}
|
|
|
|
|
|
|
375 |
});
|
public/js/wpel-link-highlighter.js
ADDED
@@ -0,0 +1,38 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/**
|
2 |
+
* WP External Links Plugin
|
3 |
+
* Admin
|
4 |
+
*/
|
5 |
+
/*global jQuery, window*/
|
6 |
+
jQuery(function ($) {
|
7 |
+
const urlParams = new URLSearchParams(window.location.search);
|
8 |
+
let link_to_find = decodeURI(urlParams.get('wpel-link-highlight'));
|
9 |
+
|
10 |
+
if($('a[href="' + link_to_find + '"]').length == 0){
|
11 |
+
if(link_to_find.substr(-1) == '/'){
|
12 |
+
link_to_find = link_to_find.slice(0, - 1);
|
13 |
+
} else {
|
14 |
+
link_to_find = link_to_find + '/';
|
15 |
+
}
|
16 |
+
}
|
17 |
+
|
18 |
+
if($('a[href="' + link_to_find + '"]').length == 0){
|
19 |
+
link_to_find = link_to_find.replace(window.location.origin,'');
|
20 |
+
}
|
21 |
+
|
22 |
+
if($('a[href="' + link_to_find + '"]').length == 0){
|
23 |
+
if(link_to_find.substr(-1) == '/'){
|
24 |
+
link_to_find = link_to_find.slice(0, - 1);
|
25 |
+
} else {
|
26 |
+
link_to_find = link_to_find + '/';
|
27 |
+
}
|
28 |
+
}
|
29 |
+
|
30 |
+
if($('a[href="' + link_to_find + '"]').length == 0){
|
31 |
+
alert('Link not found ' + link_to_find);
|
32 |
+
} else {
|
33 |
+
$('a[href="' + link_to_find + '"]').css('border', '3px dashed #00a1ff').css('box-shadow','1px 1px 18px 4px #00a1ff').css('padding', '10px');
|
34 |
+
$([document.documentElement, document.body]).animate({
|
35 |
+
scrollTop: $('a[href="' + link_to_find + '"]').offset().top - 100
|
36 |
+
}, 100);
|
37 |
+
}
|
38 |
+
});
|
readme.txt
CHANGED
@@ -1,14 +1,14 @@
|
|
1 |
=== External Links - nofollow, noopener & new window ===
|
2 |
Contributors: WebFactory
|
3 |
-
Tags: new window, new tab, external links, nofollow, noopener, ugc, sponsored, follow, dofollow, seo, noreferrer, internal links, target, links, link, internal link, external link
|
4 |
Requires at least: 4.2
|
5 |
-
Tested up to: 5.
|
6 |
-
Requires PHP:
|
7 |
-
Stable tag: 2.
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
11 |
-
|
12 |
|
13 |
== Description ==
|
14 |
|
@@ -16,6 +16,9 @@ Manage internal & external links: open in new window or tab, control nofollow, u
|
|
16 |
|
17 |
WP External Links plugin was completely rebuilt in v2 and has lots of new features, like noopener, ugc and sponsored values for rel; font icons, internal links options and full WPMU support.
|
18 |
|
|
|
|
|
|
|
19 |
= Features =
|
20 |
* Manage external and internal links
|
21 |
* Open links in new window or tab
|
@@ -42,6 +45,8 @@ When deactivating the plugin, all contents will be the same as it was before.
|
|
42 |
|
43 |
**Like the plugin?** [Rate it](http://wordpress.org/support/view/plugin-reviews/wp-external-links) to support the development.
|
44 |
|
|
|
|
|
45 |
== Installation ==
|
46 |
|
47 |
1. Go to **Plugins** in the Admin menu
|
@@ -172,9 +177,9 @@ Here are some suggestions on solving the problem:
|
|
172 |
|
173 |
== Screenshots ==
|
174 |
|
175 |
-
1.
|
176 |
-
2.
|
177 |
-
3.
|
178 |
|
179 |
|
180 |
== Documentation ==
|
@@ -242,6 +247,11 @@ See [FAQ](https://wordpress.org/plugins/wp-external-links/faq/) for more info.
|
|
242 |
|
243 |
== Changelog ==
|
244 |
|
|
|
|
|
|
|
|
|
|
|
245 |
= 2.48 =
|
246 |
* 2021-01-30
|
247 |
* added flyout menu
|
1 |
=== External Links - nofollow, noopener & new window ===
|
2 |
Contributors: WebFactory
|
3 |
+
Tags: new window, new tab, external links, nofollow, noopener, ugc, sponsored, follow, dofollow, seo, noreferrer, internal links, target, links, link, internal link, external link, link scanner, link checker
|
4 |
Requires at least: 4.2
|
5 |
+
Tested up to: 5.9
|
6 |
+
Requires PHP: 7.2
|
7 |
+
Stable tag: 2.50
|
8 |
License: GPLv2 or later
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
11 |
+
Link scanner + internal & external links manager: open in new window or tab, control nofollow, ugc, sponsored & noopener. SEO friendly.
|
12 |
|
13 |
== Description ==
|
14 |
|
16 |
|
17 |
WP External Links plugin was completely rebuilt in v2 and has lots of new features, like noopener, ugc and sponsored values for rel; font icons, internal links options and full WPMU support.
|
18 |
|
19 |
+
= Link Scanner / Link Checker =
|
20 |
+
Check every single link on your site! See if it's broken or not, if it's redirected, what's the target and rel attribute and what page exactly it's linking to. This SaaS is currently in beta so bugs are possible :) If you run into any please contact support.
|
21 |
+
|
22 |
= Features =
|
23 |
* Manage external and internal links
|
24 |
* Open links in new window or tab
|
45 |
|
46 |
**Like the plugin?** [Rate it](http://wordpress.org/support/view/plugin-reviews/wp-external-links) to support the development.
|
47 |
|
48 |
+
If you're having **problems with SSL or HTTPS** try our free <a href="https://wordpress.org/plugins/wp-force-ssl/">WP Force SSL</a> plugin. It's a great way to enable SSL and fix SSL problems.
|
49 |
+
|
50 |
== Installation ==
|
51 |
|
52 |
1. Go to **Plugins** in the Admin menu
|
177 |
|
178 |
== Screenshots ==
|
179 |
|
180 |
+
1. Admin Settings Page
|
181 |
+
2. Link Checker / Link Tester
|
182 |
+
3. Link Icons
|
183 |
|
184 |
|
185 |
== Documentation ==
|
247 |
|
248 |
== Changelog ==
|
249 |
|
250 |
+
= 2.50 =
|
251 |
+
* 2021-07-09
|
252 |
+
* completely new GUI
|
253 |
+
* link scanner / link analyzer SaaS beta
|
254 |
+
|
255 |
= 2.48 =
|
256 |
* 2021-01-30
|
257 |
* added flyout menu
|
templates/partials/nav-tabs.php
CHANGED
@@ -30,7 +30,12 @@ if (false == get_option( 'wpel-notice-dismissed-rate', false ) && current_time(
|
|
30 |
}
|
31 |
?>
|
32 |
<h2 class="nav-tab-wrapper">
|
33 |
-
<?php foreach ( $vars[ 'tabs' ] as $tab_key => $tab_values ):
|
|
|
|
|
|
|
|
|
|
|
34 |
<a class="nav-tab<?php $set_tab_active_class( $tab_key ); ?> nav-tab-<?php echo $tab_key; ?>" href="<?php echo $vars[ 'page_url' ]; ?>&tab=<?php echo $tab_key; ?>">
|
35 |
<?php echo $tab_values[ 'icon' ]; ?> <?php echo $tab_values[ 'title' ]; ?>
|
36 |
</a>
|
30 |
}
|
31 |
?>
|
32 |
<h2 class="nav-tab-wrapper">
|
33 |
+
<?php foreach ( $vars[ 'tabs' ] as $tab_key => $tab_values ):
|
34 |
+
if($tab_key == 'admin'){
|
35 |
+
continue;
|
36 |
+
}
|
37 |
+
|
38 |
+
?>
|
39 |
<a class="nav-tab<?php $set_tab_active_class( $tab_key ); ?> nav-tab-<?php echo $tab_key; ?>" href="<?php echo $vars[ 'page_url' ]; ?>&tab=<?php echo $tab_key; ?>">
|
40 |
<?php echo $tab_values[ 'icon' ]; ?> <?php echo $tab_values[ 'title' ]; ?>
|
41 |
</a>
|
templates/partials/tab-contents/link-checking.php
ADDED
@@ -0,0 +1,137 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Tab Support
|
4 |
+
*
|
5 |
+
* @package WPEL
|
6 |
+
* @category WordPress Plugin
|
7 |
+
* @version 2.3
|
8 |
+
* @link https://www.webfactoryltd.com/
|
9 |
+
* @license Dual licensed under the MIT and GPLv2+ licenses
|
10 |
+
*
|
11 |
+
* @var array $vars
|
12 |
+
* @option array "tabs"
|
13 |
+
*/
|
14 |
+
?>
|
15 |
+
|
16 |
+
<?php
|
17 |
+
if(WPEL_LinkHero::is_localhost()){
|
18 |
+
?>
|
19 |
+
<div id="wpel-checker-consent">
|
20 |
+
<div class="notice-box-error">
|
21 |
+
The <b>Link Checking & Analysis</b> is not available for websites running on localhost or on non-publicly accessible hosts.<br>This service is a SaaS and needs to be able to access your site in order to analyze links on it.
|
22 |
+
</div>
|
23 |
+
|
24 |
+
<p><b>We're in beta 🔥</b><br>
|
25 |
+
Before you continue reading, please note that this <b>service is in beta</b>. So all kind of problems are possible.<br>
|
26 |
+
But fear not! If anything is not working here's our <a href="mailto:support+wpel@webfactoryltd.com?subject=<?php echo rawurlencode(htmlspecialchars_decode('WPEL problems on ' . home_url())); ?>">direct support email</a> - ping us, please, so we can fix things.<br>
|
27 |
+
The service doesn't cost anything but the number of pages you can scan is limited while it's in beta.</p>
|
28 |
+
|
29 |
+
<p><b>What data am I sharing with you?</b><br>
|
30 |
+
Absolutely no data is taken directly from WP and shared with our service! No emails, no post lists, no post content, no links - nothing! We'll access your site just like any other visitor does and check links on every post. We'll only have access to thinks that are publically available - nothing else. Obviously, if you don't agree with this please don't use the service.</p>
|
31 |
+
|
32 |
+
<p><b>What are the benefits of using the Link Scanner?</b><br>
|
33 |
+
You can look at it as a broken link checker, but it's a lot more.<br>
|
34 |
+
After grabbing your sitemap the service will visit every page, post, product, and oder content listed on the sitemap and then check each link in that content. For each link it checks if it's alive, if it's redirect, what are its target and rel attributes. That way you can quickly check all the links on all of your pages in a matter of minutes and modify them.<br>
|
35 |
+
This is also a great way to check if the settings you applied in the plugin are working and properly applied on all links.</p>
|
36 |
+
|
37 |
+
<p><b>Will the Scanner slow down my site?</b><br>
|
38 |
+
It's designed not to. We carefully pace out all requests so that we don't create too much traffic/load on your site in a short period of time. While the scanner is not running it's not using any resources at all.</p>
|
39 |
+
|
40 |
+
<p><b>How long does a scan take?</b><br>
|
41 |
+
For a site with an average number of links - about two minutes. However that depends on the speed of your site, the speed of the sites you link to, and the total number of links on your site we need to check.</p>
|
42 |
+
|
43 |
+
</div>
|
44 |
+
<?php
|
45 |
+
} else {
|
46 |
+
$linkhero = get_option('wpel-linkhero', array('checker' => array(), 'enabled' => false));
|
47 |
+
if(!isset($linkhero['enabled']) || $linkhero['enabled'] != true){ ?>
|
48 |
+
<div id="wpel-checker-consent">
|
49 |
+
<div class="notice-box-info">
|
50 |
+
<p>The Link Checker service uses a 3rd party SaaS owned and operated by <a href="https://www.webfactoryltd.com/" target="_blank">WebFactory Ltd</a> to scan/crawl your website's pages and check/analyze all links. <b>Absolutely no private information from the website is shared or transferred to WebFactory.</b> Only publicly accessible content will be checked. Posts, pages and other content that's not published will not be analyzed.<br><br>
|
51 |
+
More details are available below. If you're not sure if you should anaylze links with this service or anything's not clear please contact us.</p>
|
52 |
+
</div>
|
53 |
+
</div>
|
54 |
+
<?php } ?>
|
55 |
+
|
56 |
+
<a href="#" class="button button-primary check-links">Check & Analyze all site's Links</a>
|
57 |
+
<a href="#" class="button button-primary check-links" style="background: #F00; border: 1px solid #e30f0f; float:right;" data-force="true">Clear Results & Cache</a>
|
58 |
+
|
59 |
+
<div class="lh-search-wrapper">
|
60 |
+
<input placeholder="Filter pages" type="text" id="lh-search" value="" />
|
61 |
+
</div>
|
62 |
+
|
63 |
+
<div id="lh-progress-bar-wrapper">
|
64 |
+
<div id="lh-progress-bar"></div>
|
65 |
+
</div>
|
66 |
+
<table id="lh_results"></table>
|
67 |
+
|
68 |
+
|
69 |
+
<div id="lh_pro">
|
70 |
+
<div id="lh_pro_message">There are another <span id="lh_pro_count">0</span> pages that were not scanned because we're in beta.<br>
|
71 |
+
Want to scan your entire site and check out other features? Leave your email and we'll get in touch soon 🚀</div>
|
72 |
+
<div id="lh_pro_subscribe">
|
73 |
+
<?php
|
74 |
+
$subscribed = get_option('wpel-linkhero-subscribed');
|
75 |
+
if($subscribed){
|
76 |
+
?>
|
77 |
+
<div id="lh_subscribe_message" class="lh-subscribe-good" style="display:block;"><b>Thank you!</b> We'll be in touch soon!</div>
|
78 |
+
<?php
|
79 |
+
} else {
|
80 |
+
?>
|
81 |
+
<input type="text" id="lh_subscribe_email" placeholder="Your very best email address" value="" />
|
82 |
+
<div id="lh_subscribe_button" class="button button-primary">Subscribe</div>
|
83 |
+
<div id="lh_subscribe_button_loader"></div>
|
84 |
+
<div id="lh_subscribe_message" class="lh-subscribe-good"></div>
|
85 |
+
<?php
|
86 |
+
}
|
87 |
+
?>
|
88 |
+
</div>
|
89 |
+
|
90 |
+
</div>
|
91 |
+
|
92 |
+
<div id="lh_details">
|
93 |
+
<div class="lh-close"></div>
|
94 |
+
<div id="lh_details_title"></div>
|
95 |
+
<div id="lh_page_details_wrapper">
|
96 |
+
<table id="lh_page_details" style="width:100%">
|
97 |
+
<thead>
|
98 |
+
<th><span class="dashicons dashicons-admin-links"></span></th>
|
99 |
+
<th>Anchor text/url</th>
|
100 |
+
<th>Page title</th>
|
101 |
+
<th>Link type</th>
|
102 |
+
<th>Rel Attributes</th>
|
103 |
+
<th>Target</th>
|
104 |
+
<th>Redirected</th>
|
105 |
+
</thead>
|
106 |
+
<tbody>
|
107 |
+
|
108 |
+
</tbody>
|
109 |
+
</table>
|
110 |
+
</div>
|
111 |
+
</div>
|
112 |
+
<hr>
|
113 |
+
<div id="lh_support">
|
114 |
+
<p>If you encounter any issues using the Link Checker please contact our <a href="mailto:support+wpel@webfactoryltd.com?subject=<?php echo rawurlencode(htmlspecialchars_decode('WPEL problems on ' . home_url())); ?>">Support team</a>.</p>
|
115 |
+
|
116 |
+
<p><b>We're in beta 🔥</b><br>
|
117 |
+
Before you continue reading, please note that this <b>service is in beta</b>. So all kind of problems are possible.<br>
|
118 |
+
But fear not! If anything is not working here's our <a href="mailto:support+wpel@webfactoryltd.com?subject=<?php echo rawurlencode(htmlspecialchars_decode('WPEL problems on ' . home_url())); ?>">direct support email</a> - ping us, please, so we can fix things.<br>
|
119 |
+
The service doesn't cost anything but the number of pages you can scan is limited while it's in beta.</p>
|
120 |
+
|
121 |
+
<p><b>What data am I sharing with you?</b><br>
|
122 |
+
Absolutely no data is taken directly from WP and shared with our service! No emails, no post lists, no post content, no links - nothing! We'll access your site just like any other visitor does and check links on every post. We'll only have access to thinks that are publically available - nothing else. Obviously, if you don't agree with this please don't use the service.</p>
|
123 |
+
|
124 |
+
<p><b>What are the benefits of using the Link Scanner?</b><br>
|
125 |
+
You can look at it as a broken link checker, but it's a lot more.<br>
|
126 |
+
After grabbing your sitemap the service will visit every page, post, product, and oder content listed on the sitemap and then check each link in that content. For each link it checks if it's alive, if it's redirect, what are its target and rel attributes. That way you can quickly check all the links on all of your pages in a matter of minutes and modify them.<br>
|
127 |
+
This is also a great way to check if the settings you applied in the plugin are working and properly applied on all links.</p>
|
128 |
+
|
129 |
+
<p><b>Will the Scanner slow down my site?</b><br>
|
130 |
+
It's designed not to. We carefully pace out all requests so that we don't create too much traffic/load on your site in a short period of time. While the scanner is not running it's not using any resources at all.</p>
|
131 |
+
|
132 |
+
<p><b>How long does a scan take?</b><br>
|
133 |
+
For a site with an average number of links - about two minutes. However that depends on the speed of your site, the speed of the sites you link to, and the total number of links on your site we need to check.</p>
|
134 |
+
</div>
|
135 |
+
<?php
|
136 |
+
}
|
137 |
+
?>
|
templates/partials/tab-contents/support.php
CHANGED
@@ -12,8 +12,6 @@
|
|
12 |
* @option array "tabs"
|
13 |
*/
|
14 |
?>
|
15 |
-
<h2><?php _e( 'Support', 'wp-external-links' ); ?></h2>
|
16 |
-
|
17 |
<h3><?php _e( 'Exclude or include by data-attribute', 'wp-external-links' ) ?></h3>
|
18 |
<p>
|
19 |
<?php _e( 'The <code>data-wpel-link</code> attribute can be set on links and forces the plugin to treat those links that way.', 'wp-external-links' ); ?>
|
12 |
* @option array "tabs"
|
13 |
*/
|
14 |
?>
|
|
|
|
|
15 |
<h3><?php _e( 'Exclude or include by data-attribute', 'wp-external-links' ) ?></h3>
|
16 |
<p>
|
17 |
<?php _e( 'The <code>data-wpel-link</code> attribute can be set on links and forces the plugin to treat those links that way.', 'wp-external-links' ); ?>
|
templates/settings-page/main.php
CHANGED
@@ -1,4 +1,5 @@
|
|
1 |
<?php
|
|
|
2 |
/**
|
3 |
* Admin Settings
|
4 |
*
|
@@ -16,34 +17,40 @@
|
|
16 |
* @option string "own_admin_menu"
|
17 |
*/
|
18 |
?>
|
19 |
-
<div class="wrap wpel-settings-page wpel-settings-page-<?php echo $vars[
|
20 |
-
<h1
|
21 |
-
|
22 |
-
|
|
|
|
|
|
|
|
|
23 |
settings_errors();
|
24 |
endif;
|
25 |
|
26 |
// nav tabs
|
27 |
-
$nav_tabs_template = WPEL_Plugin::get_plugin_dir(
|
28 |
-
WPEL_Plugin::show_template(
|
29 |
-
|
30 |
|
31 |
-
|
32 |
-
|
33 |
-
$content_tab_template = __DIR__ .'/tab-contents/'. $vars[
|
34 |
-
$default_tab_template = WPEL_Plugin::get_plugin_dir(
|
35 |
|
36 |
-
if (
|
37 |
-
WPEL_Plugin::show_template(
|
38 |
-
elseif (
|
39 |
-
WPEL_Plugin::show_template(
|
40 |
-
else:
|
41 |
-
$content_tab_template = WPEL_Plugin::get_plugin_dir(
|
42 |
|
43 |
-
if (
|
44 |
-
WPEL_Plugin::show_template(
|
45 |
endif;
|
46 |
endif;
|
47 |
-
|
48 |
-
|
49 |
-
|
|
|
|
1 |
<?php
|
2 |
+
|
3 |
/**
|
4 |
* Admin Settings
|
5 |
*
|
17 |
* @option string "own_admin_menu"
|
18 |
*/
|
19 |
?>
|
20 |
+
<div class="wrap wpel-settings-page wpel-settings-page-<?php echo $vars['current_tab']; ?>">
|
21 |
+
<h1 class="wpel-logo-wrapper">
|
22 |
+
<span class="wpel-logo"><img src="<?php echo plugins_url('/public/images/logo.png', WPEL_Plugin::get_plugin_file()); ?>" /></span>
|
23 |
+
</h1>
|
24 |
+
|
25 |
+
<div class="wpel-body-wrap">
|
26 |
+
<?php
|
27 |
+
if ($vars['own_admin_menu']) :
|
28 |
settings_errors();
|
29 |
endif;
|
30 |
|
31 |
// nav tabs
|
32 |
+
$nav_tabs_template = WPEL_Plugin::get_plugin_dir('/templates/partials/nav-tabs.php');
|
33 |
+
WPEL_Plugin::show_template($nav_tabs_template, $vars);
|
34 |
+
?>
|
35 |
|
36 |
+
<form method="post" action="options.php" class="wpel-hidden">
|
37 |
+
<?php
|
38 |
+
$content_tab_template = __DIR__ . '/tab-contents/' . $vars['current_tab'] . '.php';
|
39 |
+
$default_tab_template = WPEL_Plugin::get_plugin_dir('/templates/partials/tab-contents/' . $vars['current_tab'] . '.php');
|
40 |
|
41 |
+
if (is_readable($content_tab_template)) :
|
42 |
+
WPEL_Plugin::show_template($content_tab_template, $vars);
|
43 |
+
elseif (is_readable($default_tab_template)) :
|
44 |
+
WPEL_Plugin::show_template($default_tab_template, $vars);
|
45 |
+
else :
|
46 |
+
$content_tab_template = WPEL_Plugin::get_plugin_dir('/templates/partials/tab-contents/fields-default.php');
|
47 |
|
48 |
+
if (is_readable($content_tab_template)) :
|
49 |
+
WPEL_Plugin::show_template($content_tab_template, $vars);
|
50 |
endif;
|
51 |
endif;
|
52 |
+
?>
|
53 |
+
</form>
|
54 |
+
|
55 |
+
</div>
|
56 |
+
</div>
|
templates/settings-page/tab-contents/exceptions.php
CHANGED
@@ -17,6 +17,8 @@ $default_fields_file = WPEL_Plugin::get_plugin_dir( '/templates/partials/tab-con
|
|
17 |
WPEL_Plugin::show_template( $default_fields_file, $vars );
|
18 |
?>
|
19 |
|
20 |
-
<p class="description"><?php
|
|
|
|
|
21 |
|
22 |
<?php submit_button(); ?>
|
17 |
WPEL_Plugin::show_template( $default_fields_file, $vars );
|
18 |
?>
|
19 |
|
20 |
+
<p class="description"><?php
|
21 |
+
printf( __('The data-attribute <a href="%s"><code>data-wpel-link</code></a> can be set on individual links to treat them as internal, external or excluded, or to completely ignore links form being processed by this plugin.', 'wp-external-links' ), admin_url('options-general.php?page=wpel-settings-page&tab=support') );
|
22 |
+
?></p>
|
23 |
|
24 |
<?php submit_button(); ?>
|
wf-flyout/config.php
CHANGED
@@ -4,7 +4,7 @@ $config = array();
|
|
4 |
$config['plugin_screen'] = 'toplevel_page_wpel-settings-page';
|
5 |
$config['icon_border'] = 'none';
|
6 |
$config['icon_right'] = '35px';
|
7 |
-
$config['icon_bottom'] = '
|
8 |
$config['icon_image'] = 'wpel.png';
|
9 |
$config['icon_padding'] = '0';
|
10 |
$config['icon_size'] = '55px';
|
4 |
$config['plugin_screen'] = 'toplevel_page_wpel-settings-page';
|
5 |
$config['icon_border'] = 'none';
|
6 |
$config['icon_right'] = '35px';
|
7 |
+
$config['icon_bottom'] = '60px';
|
8 |
$config['icon_image'] = 'wpel.png';
|
9 |
$config['icon_padding'] = '0';
|
10 |
$config['icon_size'] = '55px';
|
wf-flyout/wf-flyout.php
CHANGED
@@ -1,5 +1,4 @@
|
|
1 |
<?php
|
2 |
-
|
3 |
/**
|
4 |
* Universal fly-out menu for WebFactory plugins
|
5 |
* (c) WebFactory Ltd, 2021
|
@@ -95,21 +94,21 @@ if (false == class_exists('wf_flyout')) {
|
|
95 |
|
96 |
$out = '<style type="text/css">';
|
97 |
$out .= '#wf-flyout {
|
98 |
-
right: ' .
|
99 |
-
bottom: ' .
|
100 |
}';
|
101 |
$out .= '#wf-flyout #wff-image-wrapper {
|
102 |
-
border: ' .
|
103 |
}';
|
104 |
$out .= '#wf-flyout #wff-button img {
|
105 |
-
padding: ' .
|
106 |
-
width: ' .
|
107 |
-
height: ' .
|
108 |
}';
|
109 |
$out .= '#wf-flyout .wff-menu-item.accent {
|
110 |
-
background: ' .
|
111 |
}';
|
112 |
-
$out .=
|
113 |
$out .= '</style>';
|
114 |
|
115 |
echo $out;
|
@@ -124,7 +123,7 @@ if (false == class_exists('wf_flyout')) {
|
|
124 |
|
125 |
$out = '';
|
126 |
$icons_url = plugin_dir_url($this->plugin_file) . 'wf-flyout/icons/';
|
127 |
-
$default_link_item = array('class' => '', 'href' => '#', 'target' => '_blank', 'label' => '', 'icon' => '');
|
128 |
|
129 |
$out .= '<div id="wff-overlay"></div>';
|
130 |
|
@@ -133,7 +132,7 @@ if (false == class_exists('wf_flyout')) {
|
|
133 |
$out .= '<a href="#" id="wff-button">';
|
134 |
$out .= '<span class="wff-label">Open Quick Links</span>';
|
135 |
$out .= '<span id="wff-image-wrapper">';
|
136 |
-
$out .= '<img src="' . $icons_url . $this->config['icon_image'] . '" alt="Open Quick Links" title="Open Quick Links">';
|
137 |
$out .= '</span>';
|
138 |
$out .= '</a>';
|
139 |
|
@@ -148,12 +147,12 @@ if (false == class_exists('wf_flyout')) {
|
|
148 |
$item['class'] = trim($item['class']);
|
149 |
}
|
150 |
|
151 |
-
$out .= '<a href="' . $item['href'] . '" class="wff-menu-item wff-menu-item-' . $i . ' ' . $item['class'] . '" target="_blank">';
|
152 |
-
$out .= '<span class="wff-label visible">' . $item['label'] . '</span>';
|
153 |
if (substr($item['icon'], 0, 9) == 'dashicons') {
|
154 |
-
$out .= '<span class="dashicons ' . $item['icon'] . '"></span>';
|
155 |
} elseif (!empty($item['icon'])) {
|
156 |
-
$out .= '<span class="wff-icon"><img src="' . $icons_url . $item['icon'] . '"></span>';
|
157 |
}
|
158 |
$out .= '</a>';
|
159 |
} // foreach
|
1 |
<?php
|
|
|
2 |
/**
|
3 |
* Universal fly-out menu for WebFactory plugins
|
4 |
* (c) WebFactory Ltd, 2021
|
94 |
|
95 |
$out = '<style type="text/css">';
|
96 |
$out .= '#wf-flyout {
|
97 |
+
right: ' . sanitize_text_field($this->config['icon_right']) . ';
|
98 |
+
bottom: ' . sanitize_text_field($this->config['icon_bottom']) . ';
|
99 |
}';
|
100 |
$out .= '#wf-flyout #wff-image-wrapper {
|
101 |
+
border: ' . sanitize_text_field($this->config['icon_border']) . ';
|
102 |
}';
|
103 |
$out .= '#wf-flyout #wff-button img {
|
104 |
+
padding: ' . sanitize_text_field($this->config['icon_padding']) . ';
|
105 |
+
width: ' . sanitize_text_field($this->config['icon_size']) . ';
|
106 |
+
height: ' . sanitize_text_field($this->config['icon_size']) . ';
|
107 |
}';
|
108 |
$out .= '#wf-flyout .wff-menu-item.accent {
|
109 |
+
background: ' . sanitize_text_field($this->config['menu_accent_color']) . ';
|
110 |
}';
|
111 |
+
$out .= sanitize_text_field($this->config['custom_css']);
|
112 |
$out .= '</style>';
|
113 |
|
114 |
echo $out;
|
123 |
|
124 |
$out = '';
|
125 |
$icons_url = plugin_dir_url($this->plugin_file) . 'wf-flyout/icons/';
|
126 |
+
$default_link_item = array('class' => '', 'href' => '#', 'target' => '_blank', 'label' => '', 'icon' => '', 'data' => '');
|
127 |
|
128 |
$out .= '<div id="wff-overlay"></div>';
|
129 |
|
132 |
$out .= '<a href="#" id="wff-button">';
|
133 |
$out .= '<span class="wff-label">Open Quick Links</span>';
|
134 |
$out .= '<span id="wff-image-wrapper">';
|
135 |
+
$out .= '<img src="' . esc_url($icons_url . $this->config['icon_image']) . '" alt="Open Quick Links" title="Open Quick Links">';
|
136 |
$out .= '</span>';
|
137 |
$out .= '</a>';
|
138 |
|
147 |
$item['class'] = trim($item['class']);
|
148 |
}
|
149 |
|
150 |
+
$out .= '<a href="' . esc_url($item['href']) . '" class="wff-menu-item wff-menu-item-' . $i . ' ' . esc_attr($item['class']) . '" target="_blank">';
|
151 |
+
$out .= '<span class="wff-label visible">' . esc_html($item['label']) . '</span>';
|
152 |
if (substr($item['icon'], 0, 9) == 'dashicons') {
|
153 |
+
$out .= '<span class="dashicons ' . sanitize_text_field($item['icon']) . '"></span>';
|
154 |
} elseif (!empty($item['icon'])) {
|
155 |
+
$out .= '<span class="wff-icon"><img src="' . esc_url($icons_url . $item['icon']) . '"></span>';
|
156 |
}
|
157 |
$out .= '</a>';
|
158 |
} // foreach
|
wp-external-links.php
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
<?php
|
2 |
/**
|
3 |
* Plugin Name: WP External Links
|
4 |
-
* Version: 2.
|
5 |
* Plugin URI: https://wordpress.org/plugins/wp-external-links/
|
6 |
-
* Description:
|
7 |
* Author: WebFactory Ltd
|
8 |
* Author URI: https://www.webfactoryltd.com/
|
9 |
* License: Dual licensed under the MIT and GPLv2+ licenses
|
@@ -55,6 +55,7 @@ if ( ! function_exists( 'wpel_init' ) ):
|
|
55 |
$autoloader->add_path( $plugin_dir . '/libs/', true );
|
56 |
$autoloader->add_path( $plugin_dir . '/includes/', true );
|
57 |
|
|
|
58 |
/**
|
59 |
* Load debugger
|
60 |
*/
|
@@ -76,6 +77,8 @@ if ( ! function_exists( 'wpel_init' ) ):
|
|
76 |
*/
|
77 |
WPEL_Plugin::create( $plugin_file, $plugin_dir );
|
78 |
|
|
|
|
|
79 |
}
|
80 |
|
81 |
wpel_init();
|
1 |
<?php
|
2 |
/**
|
3 |
* Plugin Name: WP External Links
|
4 |
+
* Version: 2.50
|
5 |
* Plugin URI: https://wordpress.org/plugins/wp-external-links/
|
6 |
+
* Description: Check & scan all links + open external links in a new tab or window, control "nofollow" and "noopener", set font icon; SEO friendly.
|
7 |
* Author: WebFactory Ltd
|
8 |
* Author URI: https://www.webfactoryltd.com/
|
9 |
* License: Dual licensed under the MIT and GPLv2+ licenses
|
55 |
$autoloader->add_path( $plugin_dir . '/libs/', true );
|
56 |
$autoloader->add_path( $plugin_dir . '/includes/', true );
|
57 |
|
58 |
+
|
59 |
/**
|
60 |
* Load debugger
|
61 |
*/
|
77 |
*/
|
78 |
WPEL_Plugin::create( $plugin_file, $plugin_dir );
|
79 |
|
80 |
+
WPEL_LinkHero::create( $plugin_file, $plugin_dir );
|
81 |
+
|
82 |
}
|
83 |
|
84 |
wpel_init();
|