Head, Footer and Post Injections - Version 3.2.0

Version Description

  • Restored controls of per post injection
  • Compatibility check with latest WP
  • Moved to PHP 5.6 syntax
Download this release

Release Info

Developer satollo
Plugin Icon wp plugin Head, Footer and Post Injections
Version 3.2.0
Comparing to
See all releases

Code changes from version 3.1.5 to 3.2.0

admin/admin.css CHANGED
@@ -1,5 +1,5 @@
1
 
2
- .wrap, .form-table, .form-table td, .form-table th, .form-table td p, .form-wrap label {
3
  font-size: 12px;
4
  }
5
 
@@ -81,19 +81,6 @@ h3 {
81
  }
82
  }
83
 
84
- .tab a {
85
- text-decoration: none;
86
- }
87
-
88
- .tab a.active {
89
- font-weight: normal;
90
- }
91
- .tab a:focus {
92
- outline: none;
93
- border: 0;
94
- box-shadow: none;
95
- }
96
-
97
  .rules {
98
  margin-top: 15px;
99
  }
@@ -132,4 +119,14 @@ h3 {
132
  font-size: 12px;
133
  text-transform: uppercase;
134
  display: block;
 
 
 
 
 
 
 
 
 
 
135
  }
1
 
2
+ .form-table, .form-table td, .form-table th, .form-table td p, .form-wrap label {
3
  font-size: 12px;
4
  }
5
 
81
  }
82
  }
83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  .rules {
85
  margin-top: 15px;
86
  }
119
  font-size: 12px;
120
  text-transform: uppercase;
121
  display: block;
122
+ }
123
+
124
+ a.readmore {
125
+ display: inline-block;
126
+ background-color: #007cba;
127
+ padding: 3px 10px;
128
+ color: #fff;
129
+ text-decoration: none;
130
+ border-radius: 5px;
131
+ line-height: normal;
132
  }
admin/admin.min.css ADDED
@@ -0,0 +1 @@
 
1
+ .form-table,.form-table td,.form-table th,.form-table td p,.form-wrap label{font-size:12px}.form-table th{font-weight:bold;font-size:12px;text-align:right;border-right:1px solid #ddd}.form-table td{font-size:12px}h3{font-weight:bold;margin-bottom:0;padding:0;text-transform:uppercase}.form-table textarea,.ui-widget textarea{font-family:Consolas,Monaco,monospace}.notice{position:relative}.hefo-dismiss{position:absolute;top:0;right:10px;text-decoration:none;font-size:20px}.CodeMirror{border:1px solid #eee;height:200px}.row{margin-left:-10px;margin-right:-10px;box-sizing:border-box}.col-1{width:100%;min-width:350px;float:left;padding:10px;box-sizing:border-box}.col-2{width:50%;min-width:350px;float:left;padding:10px;box-sizing:border-box}.clearfix{float:none;clear:both;display:table;content:""}.hefo-cm{width:100%;height:100px;box-sizing:border-box}@media all and (max-width:1200px){.col-2{width:100%;box-sizing:border-box}}.rules{margin-top:15px}.rules select{height:27px;display:block;margin-right:10px}.rules input{height:27px;display:block;margin-right:10px}.rules div{margin-right:10px;padding-top:5px}.hf-index-entry{display:block;background-color:#aaa;color:white;text-decoration:none;width:150px;box-sizing:border-box;border:2px solid #aaa}.hf-index-entry:hover{border-color:#ddd}.col-2 label{font-size:12px;text-transform:uppercase;display:block}a.readmore{display:inline-block;background-color:#007cba;padding:3px 10px;color:#fff;text-decoration:none;border-radius:5px;line-height:normal}
admin/admin.php CHANGED
@@ -1,17 +1,9 @@
1
  <?php
2
- defined('ABSPATH') || exit;
3
 
4
- add_action('admin_init', 'hefo_admin_init');
5
 
6
- function hefo_admin_init() {
7
  global $hefo_options;
8
- if (isset($_GET['page']) && strpos($_GET['page'], 'header-footer/') === 0) {
9
- header('X-XSS-Protection: 0');
10
- wp_enqueue_script('jquery-ui-tabs');
11
- wp_enqueue_style('header-footer', plugins_url('header-footer') . '/admin/admin.css', array(), time());
12
- wp_enqueue_style('header-footer-tabs', plugins_url('header-footer') . '/lib/easytabs/tabs.css', array(), time());
13
- wp_enqueue_script('header-footer-tabs', plugins_url('header-footer') . '/lib/easytabs/jquery.easytabs.min.js', array(), time());
14
- }
15
 
16
  if (isset($hefo_options['page_add_tags'])) {
17
  register_taxonomy_for_object_type('post_tag', 'page');
@@ -20,8 +12,69 @@ function hefo_admin_init() {
20
  if (isset($hefo_options['page_add_categories'])) {
21
  register_taxonomy_for_object_type('category', 'page');
22
  }
23
- }
 
 
24
 
25
  add_action('admin_menu', function() {
26
  add_options_page('Header and Footer', 'Header and Footer', 'manage_options', 'header-footer/admin/options.php');
27
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php
 
2
 
3
+ defined('ABSPATH') || exit;
4
 
5
+ add_action('admin_init', function () {
6
  global $hefo_options;
 
 
 
 
 
 
 
7
 
8
  if (isset($hefo_options['page_add_tags'])) {
9
  register_taxonomy_for_object_type('post_tag', 'page');
12
  if (isset($hefo_options['page_add_categories'])) {
13
  register_taxonomy_for_object_type('category', 'page');
14
  }
15
+ });
16
+
17
+
18
 
19
  add_action('admin_menu', function() {
20
  add_options_page('Header and Footer', 'Header and Footer', 'manage_options', 'header-footer/admin/options.php');
21
  });
22
+
23
+
24
+ if (isset($_GET['page']) && strpos($_GET['page'], 'header-footer/') === 0) {
25
+ header('X-XSS-Protection: 0');
26
+ add_action('admin_enqueue_scripts', function () {
27
+ wp_enqueue_script('jquery-ui-tabs');
28
+ wp_enqueue_style('hefo', plugins_url('header-footer') . '/admin/admin.css', [], time());
29
+ wp_enqueue_style('hefo-jquery-ui', plugins_url('header-footer') . '/vendor/jquery-ui/jquery-ui.min.css', [], time());
30
+ wp_enqueue_code_editor(['type' => 'php']);
31
+ wp_enqueue_script('jquery-ui-tabs');
32
+ });
33
+ }
34
+
35
+ add_action('add_meta_boxes', function () {
36
+ add_meta_box('hefo', __('Head and Footer', 'header-footer'), 'hefo_meta_boxes_callback', ['post', 'page']);
37
+ });
38
+
39
+ add_action('save_post', 'hefo_save_post');
40
+
41
+
42
+ function hefo_meta_boxes_callback($post) {
43
+
44
+ // Use nonce for verification
45
+ wp_nonce_field(plugin_basename(__FILE__), 'hefo');
46
+
47
+ // The actual fields for data entry
48
+ // Use get_post_meta to retrieve an existing value from the database and use the value for the form
49
+ $before = get_post_meta($post->ID, 'hefo_before', true);
50
+ $after = get_post_meta($post->ID, 'hefo_after', true);
51
+ echo '<label>';
52
+ echo '<input type="checkbox" id="hefo_before" name="hefo_before" ' . (empty($before) ? "" : "checked") . '> ';
53
+ _e("Disable top injection", 'header-footer');
54
+ echo '</label> ';
55
+ echo '<br>';
56
+ echo '<label>';
57
+ echo '<input type="checkbox" id="hefo_after" name="hefo_after]" ' . (empty($after) ? "" : "checked") . '> ';
58
+ _e("Disable bottom injection", 'header-footer');
59
+ echo '</label> ';
60
+ }
61
+
62
+
63
+ function hefo_save_post($post_id) {
64
+
65
+ // First we need to check if the current user is authorised to do this action.
66
+ if (isset($_POST['post_type']) && 'page' == $_POST['post_type']) {
67
+ if (!current_user_can('edit_page', $post_id))
68
+ return;
69
+ } else {
70
+ if (!current_user_can('edit_post', $post_id))
71
+ return;
72
+ }
73
+
74
+ // Secondly we need to check if the user intended to change this value.
75
+ if (!wp_verify_nonce($_POST['hefo'], plugin_basename(__FILE__)))
76
+ return;
77
+
78
+ update_post_meta($post_id, 'hefo_before', isset($_REQUEST['hefo_before']) ? 1 : 0);
79
+ update_post_meta($post_id, 'hefo_after', isset($_REQUEST['hefo_after']) ? 1 : 0);
80
+ }
admin/controls.php ADDED
@@ -0,0 +1,192 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ defined('ABSPATH') || exit;
3
+
4
+ function hefo_request($name, $default = null) {
5
+ if (!isset($_REQUEST[$name]))
6
+ return $default;
7
+ return stripslashes_deep($_REQUEST[$name]);
8
+ }
9
+
10
+ function hefo_field_checkbox($name, $label = '', $tips = '', $attrs = '') {
11
+ global $options;
12
+ echo '<th scope="row">';
13
+ echo '<label for="options[' . $name . ']">' . $label . '</label></th>';
14
+ echo '<td><input type="checkbox" ' . $attrs . ' name="options[' . $name . ']" value="1" ' .
15
+ (isset($options[$name]) ? 'checked' : '') . '/>';
16
+ echo ' ' . $tips;
17
+ echo '</td>';
18
+ }
19
+
20
+ function hefo_base_checkbox($name, $label = '') {
21
+ global $options;
22
+ echo '<label>';
23
+ echo '<input type="checkbox" name="options[' . $name . ']" value="1" ' .
24
+ (isset($options[$name]) ? 'checked' : '') . '>';
25
+ echo $label;
26
+ echo '</label>';
27
+ }
28
+
29
+ function hefo_field_checkbox_only($name, $tips = '', $attrs = '', $link = null) {
30
+ global $options;
31
+ echo '<td><input type="checkbox" ' . $attrs . ' name="options[' . $name . ']" value="1" ' .
32
+ (isset($options[$name]) ? 'checked' : '') . '/>';
33
+ echo ' ' . $tips;
34
+ if ($link) {
35
+ echo '<br><a href="' . $link . '" target="_blank">Read more</a>.';
36
+ }
37
+ echo '</td>';
38
+ }
39
+
40
+ function hefo_field_text($name, $label = '', $tips = '', $attrs = '') {
41
+ global $options;
42
+
43
+ if (!isset($options[$name]))
44
+ $options[$name] = '';
45
+
46
+ echo '<th scope="row">';
47
+ echo '<label for="options[' . $name . ']">' . $label . '</label></th>';
48
+ echo '<td><input type="text" name="options[' . $name . ']" value="' .
49
+ htmlspecialchars($options[$name]) . '" size="50"/>';
50
+ echo '<br /> ' . $tips;
51
+ echo '</td>';
52
+ }
53
+
54
+ function hefo_base_text($name) {
55
+ global $options;
56
+
57
+ if (!isset($options[$name])) {
58
+ $options[$name] = '';
59
+ }
60
+
61
+ echo '<input type="text" name="options[' . $name . ']" value="' .
62
+ esc_attr($options[$name]) . '" size="30">';
63
+ }
64
+
65
+ function hefo_field_textarea($name, $label = '', $tips = '', $attrs = '') {
66
+ global $options;
67
+
68
+ if (!isset($options[$name]))
69
+ $options[$name] = '';
70
+
71
+ if (is_array($options[$name]))
72
+ $options[$name] = implode("\n", $options[$name]);
73
+
74
+ if (strpos($attrs, 'cols') === false)
75
+ $attrs .= 'cols="70"';
76
+ if (strpos($attrs, 'rows') === false)
77
+ $attrs .= 'rows="5"';
78
+
79
+ echo '<th scope="row">';
80
+ echo '<label for="options[' . $name . ']">' . $label . '</label></th>';
81
+ echo '<td><textarea style="width: 100%; height: 100px" wrap="off" name="options[' . $name . ']">' .
82
+ htmlspecialchars($options[$name]) . '</textarea>';
83
+ echo '<p class="description">' . $tips . '</p>';
84
+ echo '</td>';
85
+ }
86
+
87
+ function hefo_field_textarea_cm($name, $label = '', $tips = '', $attrs = '') {
88
+ global $options;
89
+
90
+ if (!isset($options[$name]))
91
+ $options[$name] = '';
92
+
93
+ if (is_array($options[$name]))
94
+ $options[$name] = implode("\n", $options[$name]);
95
+
96
+ if (strpos($attrs, 'cols') === false)
97
+ $attrs .= 'cols="70"';
98
+ if (strpos($attrs, 'rows') === false)
99
+ $attrs .= 'rows="5"';
100
+
101
+ echo '<th scope="row">';
102
+ echo '<label for="options[' . $name . ']">' . $label . '</label></th>';
103
+ echo '<td><textarea style="width: 100%; height: 100px" wrap="off" name="options[' . $name . ']" onfocus="hefo_cm_on(this)" onblur="hefo_cm_off(this)">' .
104
+ htmlspecialchars($options[$name]) . '</textarea>';
105
+ echo '<p class="description">' . $tips . '</p>';
106
+ echo '</td>';
107
+ }
108
+
109
+ function hefo_base_textarea_cm($name, $type = '', $tips = '') {
110
+ global $options;
111
+
112
+ if (!empty($type))
113
+ $type = '-' . $type;
114
+ if (!isset($options[$name]))
115
+ $options[$name] = '';
116
+
117
+ if (is_array($options[$name]))
118
+ $options[$name] = implode("\n", $options[$name]);
119
+
120
+ echo '<textarea class="hefo-cm' . $type . '" name="options[' . $name . ']" onfocus="hefo_cm_on(this)">';
121
+ echo htmlspecialchars($options[$name]);
122
+ echo '</textarea>';
123
+ echo '<p class="description">' . $tips . '</p>';
124
+ }
125
+
126
+ function hefo_field_textarea_enable($name, $label = '', $tips = '', $attrs = '') {
127
+ global $options;
128
+
129
+ if (!isset($options[$name]))
130
+ $options[$name] = '';
131
+
132
+ if (is_array($options[$name]))
133
+ $options[$name] = implode("\n", $options[$name]);
134
+
135
+ if (strpos($attrs, 'cols') === false)
136
+ $attrs .= 'cols="70"';
137
+ if (strpos($attrs, 'rows') === false)
138
+ $attrs .= 'rows="5"';
139
+
140
+ echo '<th scope="row">';
141
+ echo '<label for="options[' . $name . ']">' . $label . '</label></th>';
142
+ echo '<td>';
143
+ echo '<input type="checkbox" ' . $attrs . ' name="options[' . $name . '_enabled]" value="1" ' .
144
+ (isset($options[$name . '_enabled']) ? 'checked' : '') . '> Enable<br>';
145
+ echo '<textarea style="width: 100%; height: 100px" wrap="off" name="options[' . $name . ']">' .
146
+ htmlspecialchars($options[$name]) . '</textarea>';
147
+ echo '<p class="description">' . $tips . '</p>';
148
+ echo '</td>';
149
+ }
150
+
151
+ function hefo_rule($number) {
152
+ global $options;
153
+ if (!isset($options['inner_pos_' . $number]))
154
+ $options['inner_pos_' . $number] = 'after';
155
+ if (!isset($options['inner_skip_' . $number]))
156
+ $options['inner_skip_' . $number] = 0;
157
+ if (!isset($options['inner_tag_' . $number]))
158
+ $options['inner_tag_' . $number] = '';
159
+
160
+ echo '<div class="rules">';
161
+ echo '<div style="float: left">Inject</div>';
162
+ echo '<select style="float: left" name="options[inner_pos_' . $number . ']">';
163
+ echo '<option value="after"';
164
+ echo $options['inner_pos_' . $number] == 'after' ? ' selected' : '';
165
+ echo '>after</option>';
166
+ echo '<option value="before"';
167
+ echo $options['inner_pos_' . $number] == 'before' ? ' selected' : '';
168
+ echo '>before</option>';
169
+ echo '</select>';
170
+ echo '<input style="float: left" type="text" placeholder="marker" name="options[inner_tag_' . $number . ']" value="';
171
+ echo esc_attr($options['inner_tag_' . $number]);
172
+ echo '">';
173
+ echo '<div style="float: left">skipping</div>';
174
+ echo '<input style="float: left" type="text" size="5" name="options[inner_skip_' . $number . ']" value="';
175
+ echo esc_attr($options['inner_skip_' . $number]);
176
+ echo '">';
177
+ echo '<div style="float: left">chars, on failure inject</div>';
178
+ echo '<select style="float: left" name="options[inner_alt_' . $number . ']">';
179
+ echo '<option value=""';
180
+ echo $options['inner_alt_' . $number] == 'after' ? ' selected' : '';
181
+ echo '>nowhere</option>';
182
+ echo '<option value="after"';
183
+ echo $options['inner_alt_' . $number] == 'after' ? ' selected' : '';
184
+ echo '>after the content</option>';
185
+ echo '<option value="before"';
186
+ echo $options['inner_alt_' . $number] == 'before' ? ' selected' : '';
187
+ echo '>before the content</option>';
188
+ echo '</select>';
189
+ echo '<div class="clearfix"></div></div>';
190
+ }
191
+
192
+
admin/metaboxes.php DELETED
@@ -1,59 +0,0 @@
1
- <?php
2
- defined('ABSPATH') || exit;
3
-
4
- //add_action('add_meta_boxes', 'hefo_add_meta_boxes');
5
-
6
- //add_action('save_post', 'hefo_save_post');
7
-
8
- /*
9
- function hefo_add_meta_boxes() {
10
- foreach (array('post', 'page') as $screen) {
11
- add_meta_box(
12
- 'hefo', __('Header and Footer', 'header-footer'), 'hefo_add_meta_boxes_callback', $screen
13
- );
14
- }
15
- }
16
- */
17
-
18
- /*
19
- function hefo_add_meta_boxes_callback($post) {
20
-
21
- // Use nonce for verification
22
- wp_nonce_field(plugin_basename(__FILE__), 'hefo');
23
-
24
- // The actual fields for data entry
25
- // Use get_post_meta to retrieve an existing value from the database and use the value for the form
26
- $before = get_post_meta($post->ID, 'hefo_before', true);
27
- $after = get_post_meta($post->ID, 'hefo_after', true);
28
- echo '<label>';
29
- echo '<input type="checkbox" id="hefo_before" name="hefo_before" ' . (empty($before) ? "" : "checked") . '> ';
30
- _e("Disable top injection", 'header-footer');
31
- echo '</label> ';
32
- echo '<br>';
33
- echo '<label>';
34
- echo '<input type="checkbox" id="hefo_after" name="hefo_after" ' . (empty($after) ? "" : "checked") . '> ';
35
- _e("Disable bottom injection", 'header-footer');
36
- echo '</label> ';
37
- }
38
- */
39
-
40
- /*
41
- function hefo_save_post($post_id) {
42
-
43
- // First we need to check if the current user is authorised to do this action.
44
- if (isset($_POST['post_type']) && 'page' == $_POST['post_type']) {
45
- if (!current_user_can('edit_page', $post_id))
46
- return;
47
- } else {
48
- if (!current_user_can('edit_post', $post_id))
49
- return;
50
- }
51
-
52
- // Secondly we need to check if the user intended to change this value.
53
- if (!isset($_POST['hefo']) || !wp_verify_nonce($_POST['hefo'], plugin_basename(__FILE__)))
54
- return;
55
-
56
- update_post_meta($post_id, 'hefo_before', isset($_REQUEST['hefo_before']) ? 1 : 0);
57
- update_post_meta($post_id, 'hefo_after', isset($_REQUEST['hefo_after']) ? 1 : 0);
58
- }
59
- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/options.php CHANGED
@@ -3,203 +3,17 @@ if (function_exists('load_plugin_textdomain')) {
3
  load_plugin_textdomain('header-footer', false, 'header-footer/languages');
4
  }
5
 
6
- $dismissed = get_option('hefo_dismissed', array());
7
 
8
- if (isset($_REQUEST['dismiss']) && check_admin_referer()) {
 
 
9
  $dismissed[$_REQUEST['dismiss']] = 1;
10
  update_option('hefo_dismissed', $dismissed);
11
  wp_redirect('?page=header-footer%2Foptions.php');
12
  exit();
13
  }
14
 
15
- function hefo_request($name, $default = null) {
16
- if (!isset($_REQUEST[$name]))
17
- return $default;
18
- return stripslashes_deep($_REQUEST[$name]);
19
- }
20
-
21
- function hefo_field_checkbox($name, $label = '', $tips = '', $attrs = '') {
22
- global $options;
23
- echo '<th scope="row">';
24
- echo '<label for="options[' . $name . ']">' . $label . '</label></th>';
25
- echo '<td><input type="checkbox" ' . $attrs . ' name="options[' . $name . ']" value="1" ' .
26
- (isset($options[$name]) ? 'checked' : '') . '/>';
27
- echo ' ' . $tips;
28
- echo '</td>';
29
- }
30
-
31
- function hefo_base_checkbox($name, $label = '') {
32
- global $options;
33
- echo '<label>';
34
- echo '<input type="checkbox" name="options[' . $name . ']" value="1" ' .
35
- (isset($options[$name]) ? 'checked' : '') . '>';
36
- echo $label;
37
- echo '</label>';
38
- }
39
-
40
- function hefo_field_checkbox_only($name, $tips = '', $attrs = '', $link = null) {
41
- global $options;
42
- echo '<td><input type="checkbox" ' . $attrs . ' name="options[' . $name . ']" value="1" ' .
43
- (isset($options[$name]) ? 'checked' : '') . '/>';
44
- echo ' ' . $tips;
45
- if ($link) {
46
- echo '<br><a href="' . $link . '" target="_blank">Read more</a>.';
47
- }
48
- echo '</td>';
49
- }
50
-
51
- function hefo_field_text($name, $label = '', $tips = '', $attrs = '') {
52
- global $options;
53
-
54
- if (!isset($options[$name]))
55
- $options[$name] = '';
56
-
57
- echo '<th scope="row">';
58
- echo '<label for="options[' . $name . ']">' . $label . '</label></th>';
59
- echo '<td><input type="text" name="options[' . $name . ']" value="' .
60
- htmlspecialchars($options[$name]) . '" size="50"/>';
61
- echo '<br /> ' . $tips;
62
- echo '</td>';
63
- }
64
-
65
- function hefo_base_text($name) {
66
- global $options;
67
-
68
- if (!isset($options[$name])) {
69
- $options[$name] = '';
70
- }
71
-
72
- echo '<input type="text" name="options[' . $name . ']" value="' .
73
- esc_attr($options[$name]) . '" size="30">';
74
- }
75
-
76
- function hefo_field_textarea($name, $label = '', $tips = '', $attrs = '') {
77
- global $options;
78
-
79
- if (!isset($options[$name]))
80
- $options[$name] = '';
81
-
82
- if (is_array($options[$name]))
83
- $options[$name] = implode("\n", $options[$name]);
84
-
85
- if (strpos($attrs, 'cols') === false)
86
- $attrs .= 'cols="70"';
87
- if (strpos($attrs, 'rows') === false)
88
- $attrs .= 'rows="5"';
89
-
90
- echo '<th scope="row">';
91
- echo '<label for="options[' . $name . ']">' . $label . '</label></th>';
92
- echo '<td><textarea style="width: 100%; height: 100px" wrap="off" name="options[' . $name . ']">' .
93
- htmlspecialchars($options[$name]) . '</textarea>';
94
- echo '<p class="description">' . $tips . '</p>';
95
- echo '</td>';
96
- }
97
-
98
- function hefo_field_textarea_cm($name, $label = '', $tips = '', $attrs = '') {
99
- global $options;
100
-
101
- if (!isset($options[$name]))
102
- $options[$name] = '';
103
-
104
- if (is_array($options[$name]))
105
- $options[$name] = implode("\n", $options[$name]);
106
-
107
- if (strpos($attrs, 'cols') === false)
108
- $attrs .= 'cols="70"';
109
- if (strpos($attrs, 'rows') === false)
110
- $attrs .= 'rows="5"';
111
-
112
- echo '<th scope="row">';
113
- echo '<label for="options[' . $name . ']">' . $label . '</label></th>';
114
- echo '<td><textarea style="width: 100%; height: 100px" wrap="off" name="options[' . $name . ']" onfocus="hefo_cm_on(this)" onblur="hefo_cm_off(this)">' .
115
- htmlspecialchars($options[$name]) . '</textarea>';
116
- echo '<p class="description">' . $tips . '</p>';
117
- echo '</td>';
118
- }
119
-
120
- function hefo_base_textarea_cm($name, $type = '', $tips = '') {
121
- global $options;
122
-
123
- if (!empty($type))
124
- $type = '-' . $type;
125
- if (!isset($options[$name]))
126
- $options[$name] = '';
127
-
128
- if (is_array($options[$name]))
129
- $options[$name] = implode("\n", $options[$name]);
130
-
131
- echo '<textarea class="hefo-cm' . $type . '" name="options[' . $name . ']" onfocus="hefo_cm_on(this)">';
132
- echo htmlspecialchars($options[$name]);
133
- echo '</textarea>';
134
- echo '<p class="description">' . $tips . '</p>';
135
- }
136
-
137
- function hefo_field_textarea_enable($name, $label = '', $tips = '', $attrs = '') {
138
- global $options;
139
-
140
- if (!isset($options[$name]))
141
- $options[$name] = '';
142
-
143
- if (is_array($options[$name]))
144
- $options[$name] = implode("\n", $options[$name]);
145
-
146
- if (strpos($attrs, 'cols') === false)
147
- $attrs .= 'cols="70"';
148
- if (strpos($attrs, 'rows') === false)
149
- $attrs .= 'rows="5"';
150
-
151
- echo '<th scope="row">';
152
- echo '<label for="options[' . $name . ']">' . $label . '</label></th>';
153
- echo '<td>';
154
- echo '<input type="checkbox" ' . $attrs . ' name="options[' . $name . '_enabled]" value="1" ' .
155
- (isset($options[$name . '_enabled']) ? 'checked' : '') . '> Enable<br>';
156
- echo '<textarea style="width: 100%; height: 100px" wrap="off" name="options[' . $name . ']">' .
157
- htmlspecialchars($options[$name]) . '</textarea>';
158
- echo '<p class="description">' . $tips . '</p>';
159
- echo '</td>';
160
- }
161
-
162
- function hefo_rule($number) {
163
- global $options;
164
- if (!isset($options['inner_pos_' . $number]))
165
- $options['inner_pos_' . $number] = 'after';
166
- if (!isset($options['inner_skip_' . $number]))
167
- $options['inner_skip_' . $number] = 0;
168
- if (!isset($options['inner_tag_' . $number]))
169
- $options['inner_tag_' . $number] = '';
170
-
171
- echo '<div class="rules">';
172
- echo '<div style="float: left">Inject</div>';
173
- echo '<select style="float: left" name="options[inner_pos_' . $number . ']">';
174
- echo '<option value="after"';
175
- echo $options['inner_pos_' . $number] == 'after' ? ' selected' : '';
176
- echo '>after</option>';
177
- echo '<option value="before"';
178
- echo $options['inner_pos_' . $number] == 'before' ? ' selected' : '';
179
- echo '>before</option>';
180
- echo '</select>';
181
- echo '<input style="float: left" type="text" placeholder="marker" name="options[inner_tag_' . $number . ']" value="';
182
- echo esc_attr($options['inner_tag_' . $number]);
183
- echo '">';
184
- echo '<div style="float: left">skipping</div>';
185
- echo '<input style="float: left" type="text" size="5" name="options[inner_skip_' . $number . ']" value="';
186
- echo esc_attr($options['inner_skip_' . $number]);
187
- echo '">';
188
- echo '<div style="float: left">chars, on failure inject</div>';
189
- echo '<select style="float: left" name="options[inner_alt_' . $number . ']">';
190
- echo '<option value=""';
191
- echo $options['inner_alt_' . $number] == 'after' ? ' selected' : '';
192
- echo '>nowhere</option>';
193
- echo '<option value="after"';
194
- echo $options['inner_alt_' . $number] == 'after' ? ' selected' : '';
195
- echo '>after the content</option>';
196
- echo '<option value="before"';
197
- echo $options['inner_alt_' . $number] == 'before' ? ' selected' : '';
198
- echo '>before the content</option>';
199
- echo '</select>';
200
- echo '<div class="clearfix"></div></div>';
201
- }
202
-
203
  if (isset($_POST['save'])) {
204
  if (!wp_verify_nonce($_POST['_wpnonce'], 'save'))
205
  die('Page expired');
@@ -218,33 +32,21 @@ if (isset($_POST['save'])) {
218
  $options['mobile_user_agents_parsed'] = implode('|', $agents2);
219
 
220
  update_option('hefo', $options);
221
- }
222
-
223
- else {
224
  $options = get_option('hefo');
225
  }
226
-
227
- wp_enqueue_code_editor(['type'=>'php']);
228
  ?>
229
 
230
  <script>
231
- var templateEditor;
232
- jQuery(document).ready(function () {
233
  jQuery("textarea.hefo-cm").each(function () {
234
  wp.codeEditor.initialize(this);
235
  });
236
-
237
- });
238
- </script>
239
-
240
- <script>
241
- var hefo_cm;
242
-
243
- var hefo_tabs;
244
- jQuery(document).ready(function () {
245
- jQuery("#tab-container").easytabs();
246
  });
247
  </script>
 
248
  <div class="wrap">
249
  <!--https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5PHGDGNHAYLJ8-->
250
 
@@ -254,7 +56,7 @@ wp_enqueue_code_editor(['type'=>'php']);
254
  <div class="notice notice-success"><p>
255
  I never asked before and I'm curious: <a href="http://wordpress.org/extend/plugins/header-footer/" target="_blank"><strong>would you rate this plugin</strong></a>?
256
  (takes only few seconds required - account on WordPress.org, every blog owner should have one...). <strong>Really appreciated, Stefano</strong>.
257
- <a class="hefo-dismiss" href="<?php echo wp_nonce_url($_SERVER['REQUEST_URI'] . '&dismiss=rate&noheader=1') ?>">&times;</a>
258
  </p>
259
  </div>
260
  <?php } ?>
@@ -268,12 +70,12 @@ wp_enqueue_code_editor(['type'=>'php']);
268
  <input type="email" name="ne" value="<?php echo esc_attr(get_option('admin_email')) ?>">
269
  <input type="submit" value="Subscribe">
270
  </form>
271
- <a class="hefo-dismiss" href="<?php echo wp_nonce_url($_SERVER['REQUEST_URI'] . '&dismiss=newsletter&noheader=1') ?>">&times;</a>
272
  </p>
273
  </div>
274
  <?php } ?>
275
 
276
- <div style="padding: 15px; background-color: #fff; border: 1px solid #eee; font-size: 16px; line-height: 22px">
277
  Did this plugin save you lot of time and troubles?
278
  <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5PHGDGNHAYLJ8" target="_blank"><img style="vertical-align: bottom" src="<?php echo plugins_url('header-footer') ?>/images/donate.png"></a>
279
  To help children. Even <b>2$</b> help. <a href="http://www.satollo.net/donations" target="_blank">Please read more</a>. Thank you.
@@ -282,372 +84,372 @@ wp_enqueue_code_editor(['type'=>'php']);
282
  <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5PHGDGNHAYLJ8" target="_blank">donation</a>. Thank you.
283
  </div>
284
 
285
- <p>
286
- Other useful plugins:
287
- <a href="http://www.satollo.net/plugins/hyper-cache?utm_source=header-footer&utm_medium=banner&utm_campaign=hyper-cache" target="_blank">Hyper Cache</a>,
288
- <a href="http://www.satollo.net/plugins/include-me?utm_source=header-footer&utm_medium=banner&utm_campaign=include-me" target="_blank">Include Me</a>,
289
- <a href="http://www.thenewsletterplugin.com/?utm_source=header-footer&utm_medium=banner&utm_campaign=newsletter" target="_blank">Newsletter</a>,
290
- <a href="http://www.satollo.net/plugins/php-text-widget?utm_source=header-footer&utm_medium=link&utm_campaign=php-text-widget" target="_blank">PHP Text Widget</a>,
291
- <a href="http://www.satollo.net/plugins/ads-bbpress?utm_source=header-footer&utm_medium=link&utm_campaign=ads-bbpress" target="_blank">Ads for bbPress</a>.
292
- </p>
293
-
294
- <p>
295
- <?php
296
- if (apply_filters('hefo_php_exec', true)) {
297
- _e('PHP is allowed in your code.');
298
- } else {
299
- _e('PHP is NOT allowed in your code (disabled by your theme or a plugin)');
300
- }
301
- ?>
302
- </p>
303
 
304
  <form method="post" action="">
305
  <?php wp_nonce_field('save') ?>
306
 
307
- <div id="tab-container" class="tab-container">
308
- <ul class="etabs">
309
- <li class='tab'><a href="#tabs-first"><?php _e('Head and footer', 'header-footer'); ?></a></li>
310
- <li class='tab'><a href="#tabs-post"><?php _e('Posts', 'header-footer'); ?></a></li>
311
- <li class='tab'><a href="#tabs-post-inner"><?php _e('Inside posts', 'header-footer'); ?></a></li>
312
- <li class='tab'><a href="#tabs-page"><?php _e('Pages', 'header-footer'); ?></a></li>
313
- <li class='tab'><a href="#tabs-excerpt"><?php _e('Excerpts', 'header-footer'); ?></a></li>
314
- <li class='tab'><a href="#tabs-5"><?php _e('Snippets', 'header-footer'); ?></a></li>
315
- <li class='tab'><a href="#tabs-amp"><?php _e('AMP', 'header-footer'); ?></a></li>
316
- <li class='tab'><a href="#tabs-generics"><?php _e('Generics', 'header-footer'); ?></a></li>
317
- <li class='tab'><a href="#tabs-8"><?php _e('Advanced', 'header-footer'); ?></a></li>
318
- <li class='tab'><a href="#tabs-7"><?php _e('Notes and...', 'header-footer'); ?></a></li>
 
 
 
 
319
  </ul>
320
 
321
- <div class="panel-container">
322
 
323
- <div id="tabs-first">
324
 
325
- <h3><?php esc_html_e('<HEAD> page section injection', 'header-footer')?></h3>
326
- <div class="row">
327
 
328
- <div class="col-2">
329
- <label><?php esc_html_e('On every page', 'header-footer')?></label>
330
- <?php hefo_base_textarea_cm('head'); ?>
331
- </div>
332
- <div class="col-2">
333
- <label><?php esc_html_e('Only on the home page', 'header-footer')?></label>
334
- <?php hefo_base_textarea_cm('head_home'); ?>
335
- </div>
336
  </div>
 
 
 
 
 
337
 
338
- <h3><?php esc_html_e('After the <BODY> tag', 'header-footer')?></h3>
339
- <div class="row">
340
-
341
- <div class="col-2">
342
- <label><?php _e('Desktop', 'header-footer') ?>*</label>
343
- <?php hefo_base_textarea_cm('body'); ?>
344
- </div>
345
- <div class="col-2">
346
- <?php hefo_base_checkbox('mobile_body_enabled', __('Mobile', 'header-footer')); ?>
347
- <?php hefo_base_textarea_cm('mobile_body'); ?>
348
- </div>
349
 
 
 
 
350
  </div>
351
- <h3><?php esc_html_e('Before the &lt;/BODY&gt; closing tag (footer)', 'header-footer')?></h3>
352
- <div class="row">
353
- <div class="col-2">
354
- <label><?php _e('Desktop', 'header-footer') ?>*</label>
355
- <?php hefo_base_textarea_cm('footer'); ?>
356
- </div>
357
- <div class="col-2">
358
- <?php hefo_base_checkbox('mobile_footer_enabled', __('Mobile', 'header-footer')); ?>
359
- <?php hefo_base_textarea_cm('mobile_footer'); ?>
360
- </div>
361
  </div>
362
 
363
- <div class="clearfix"></div>
364
-
365
  </div>
366
-
367
- <div id="tabs-generics">
368
-
369
- <?php for ($i = 1; $i <= 5; $i++) { ?>
370
- <h3>Generic injection <?php echo $i; ?></h3>
371
- <p>Inject before the <?php hefo_base_text('generic_tag_' . $i); ?> marker</p>
372
- <div class="row">
373
- <div class="col-2">
374
- <label><?php _e('Desktop', 'header-footer') ?>*</label>
375
- <?php hefo_base_textarea_cm('generic_' . $i); ?>
376
- </div>
377
- <div class="col-2">
378
- <?php hefo_base_checkbox('mobile_generic_enabled_' . $i, __('Mobile', 'header-footer')); ?>
379
- <?php hefo_base_textarea_cm('mobile_generic_' . $i); ?>
380
- </div>
381
- </div>
382
- <div class="clearfix"></div>
383
- <?php } ?>
384
- <div class="clearfix"></div>
385
  </div>
386
 
 
387
 
 
388
 
389
- <div id="tabs-post">
390
- <p>
391
- Please take the time to <a href="http://www.satollo.net/plugins/header-footer" target="_blank">read this page</a> to understand how the "mobile" configuration works.
392
- See the "advanced tab" to configure the mobile device detection.
393
- </p>
394
 
395
- <h3><?php esc_html_e('Before the post content', 'header-footer'); ?></h3>
 
 
396
  <div class="row">
397
-
398
  <div class="col-2">
399
  <label><?php _e('Desktop', 'header-footer') ?>*</label>
400
- <?php hefo_base_textarea_cm('before'); ?>
401
  </div>
402
  <div class="col-2">
403
- <?php hefo_base_checkbox('mobile_before_enabled', __('Mobile', 'header-footer')); ?>
404
- <?php hefo_base_textarea_cm('mobile_before'); ?>
405
  </div>
406
  </div>
407
-
408
  <div class="clearfix"></div>
 
 
 
409
 
410
- <h3><?php esc_html_e('After the post content', 'header-footer'); ?></h3>
411
- <div class="row">
412
 
413
- <div class="col-2">
414
- <label><?php _e('Desktop', 'header-footer') ?>*</label>
415
- <?php hefo_base_textarea_cm('after'); ?>
416
- </div>
417
- <div class="col-2">
418
- <?php hefo_base_checkbox('mobile_after_enabled', __('Mobile', 'header-footer')); ?>
419
- <?php hefo_base_textarea_cm('mobile_after'); ?>
420
- </div>
421
- </div>
422
 
423
- <!--<h3>Posts and pages</h3>-->
424
- <table class="form-table">
425
- <!--<tr valign="top"><?php hefo_field_checkbox('category', __('Enable injection on category pages', 'header-footer')); ?></tr>-->
426
- <tr valign="top"><?php //hefo_field_textarea('before', __('Code to be inserted before each post', 'header-footer'), '', 'rows="10"'); ?></tr>
427
- <tr valign="top"><?php //hefo_field_textarea('after', __('Code to be inserted after each post', 'header-footer'), '', 'rows="10"'); ?></tr>
428
- </table>
429
 
430
-
431
- <div class="clearfix"></div>
 
 
 
 
 
 
 
 
 
432
  </div>
433
 
 
434
 
435
- <div id="tabs-post-inner">
436
-
437
- <?php for ($i = 1; $i <= 5; $i++) { ?>
438
- <h3>Inner post injection <?php echo $i; ?></h3>
439
- <?php hefo_rule($i); ?>
440
- <div class="row">
441
- <div class="col-2">
442
- <label><?php _e('Desktop', 'header-footer') ?>*</label>
443
- <?php hefo_base_textarea_cm('inner_' . $i); ?>
444
- </div>
445
- <div class="col-2">
446
- <?php hefo_base_checkbox('mobile_inner_enabled_' . $i, __('Mobile', 'header-footer')); ?>
447
- <?php hefo_base_textarea_cm('mobile_inner_' . $i); ?>
448
- </div>
449
- </div>
450
- <div class="clearfix"></div>
451
- <?php } ?>
452
  </div>
453
 
 
 
 
 
 
 
454
 
455
- <div id="tabs-page">
456
 
457
- <?php hefo_base_checkbox('page_use_post', __('Use the post configurations', 'header-footer')); ?><br>
458
- <?php hefo_base_checkbox('page_add_tags', __('Let pages to have tags', 'header-footer')); ?><br>
459
- <?php hefo_base_checkbox('page_add_categories', __('Let pages to have categories', 'header-footer')); ?>
460
 
461
- <h3><?php _e('Before the page content', 'header-footer') ?></h3>
462
- <div class="row">
463
 
 
 
 
 
 
 
464
  <div class="col-2">
465
  <label><?php _e('Desktop', 'header-footer') ?>*</label>
466
- <?php hefo_base_textarea_cm('page_before'); ?>
467
  </div>
468
  <div class="col-2">
469
- <?php hefo_base_checkbox('mobile_page_before_enabled', __('Mobile', 'header-footer')); ?><br>
470
- <?php hefo_base_textarea_cm('mobile_page_before'); ?>
471
  </div>
472
  </div>
473
-
474
  <div class="clearfix"></div>
 
 
475
 
476
- <h3><?php _e('After the page content', 'header-footer') ?></h3>
477
- <div class="row">
478
 
479
- <div class="col-2">
480
- <label><?php _e('Desktop', 'header-footer') ?>*</label>
481
- <?php hefo_base_textarea_cm('page_after'); ?>
482
- </div>
483
- <div class="col-2">
484
- <?php hefo_base_checkbox('mobile_page_after_enabled', __('Mobile', 'header-footer')); ?><br>
485
- <?php hefo_base_textarea_cm('mobile_page_after'); ?>
486
- </div>
487
- </div>
488
 
489
- <div class="clearfix"></div>
 
 
 
 
 
490
 
 
 
 
 
 
 
 
 
491
  </div>
492
-
493
- <div id="tabs-excerpt">
494
-
495
- <p><?php _e('It works only on category and tag pages.', 'header-footer'); ?></p>
496
- <table class="form-table">
497
- <tr valign="top"><?php hefo_field_textarea('excerpt_before', __('Code to be inserted before each post excerpt', 'header-footer'), '', 'rows="10"'); ?></tr>
498
- <tr valign="top"><?php hefo_field_textarea('excerpt_after', __('Code to be inserted after each post excerpt', 'header-footer'), '', 'rows="10"'); ?></tr>
499
- </table>
 
 
 
 
 
 
500
  </div>
501
 
502
- <!-- AMP -->
503
 
504
- <div id="tabs-amp">
505
- <p>
506
- You need the <a href="https://it.wordpress.org/plugins/amp/" target="_blank">AMP</a> plugin. Other AMP plugins could be supported
507
- in the near future.
508
- </p>
509
 
510
- <h3><?php esc_html_e('<HEAD> page section', 'header-footer')?></h3>
511
- <div class="row">
512
- <div class="col-1">
513
- <?php hefo_base_textarea_cm('amp_head'); ?>
514
- </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
515
  </div>
 
516
 
517
- <div class="clearfix"></div>
518
 
519
- <h3><?php esc_html_e('Extra CSS', 'header-footer')?></h3>
520
- <div class="row">
521
- <div class="col-1">
522
- <?php hefo_base_textarea_cm('amp_css'); ?>
523
- </div>
524
  </div>
525
-
526
- <div class="clearfix"></div>
527
 
528
- <h3><?php esc_html_e('Just after the <BODY> tag', 'header-footer')?></h3>
529
- <div class="row">
530
- <div class="col-1">
531
- <?php hefo_base_textarea_cm('amp_body'); ?>
532
- </div>
 
533
  </div>
 
534
 
535
 
536
- <div class="clearfix"></div>
537
 
538
- <h3><?php esc_html_e('Before the post content', 'header-footer')?></h3>
539
- <div class="row">
540
- <div class="col-1">
541
 
542
- <?php hefo_base_textarea_cm('amp_post_before'); ?>
543
- </div>
544
  </div>
 
545
 
546
- <div class="clearfix"></div>
547
 
548
- <h3><?php esc_html_e('After the post content', 'header-footer')?></h3>
549
- <div class="row">
550
 
551
- <div class="col-1">
552
 
553
- <?php hefo_base_textarea_cm('amp_post_after'); ?>
554
 
555
- </div>
556
  </div>
557
- <div class="clearfix"></div>
 
558
 
559
- <h3><?php esc_html_e('Footer', 'header-footer')?></h3>
560
- <div class="row">
561
 
562
- <div class="col-1">
563
 
564
- <?php hefo_base_textarea_cm('amp_footer'); ?>
565
 
566
- </div>
567
  </div>
568
- <div class="clearfix"></div>
569
-
570
  </div>
 
571
 
 
572
 
573
- <div id="tabs-5">
574
- <p>
575
- <?php _e('Common snippets that can be used in any header or footer area referring them as [snippet_N] where N is the snippet number
576
- from 1 to 5. Snippets are inserted before PHP evaluation.', 'header-footer'); ?><br />
577
- <?php _e('Useful for social button to be placed before and after the post or in posts and pages.', 'header-footer'); ?>
578
- </p>
579
- <table class="form-table">
580
- <? for ($i=1; $i<=5; $i++) { ?>
581
- <tr valign="top"><?php hefo_field_textarea('snippet_' . $i, __('Snippet ' . $i, 'header-footer'), '', 'rows="10"'); ?></tr>
582
- <? } ?>
583
- </table>
584
- <div class="clearfix"></div>
585
- </div>
586
 
587
- <div id="tabs-8">
588
- <table class="form-table">
589
- <tr valign="top">
590
- <?php
591
- hefo_field_textarea('mobile_user_agents', __('Mobile user agent strings', 'header-footer'), 'For coders: a regular expression is built with those values and the resulting code will be<br>'
592
- . '<code>preg_match(\'/' . $options['mobile_user_agents_parsed'] . '/\', ...);</code><br>' .
593
- '<a href="http://www.satollo.net/plugins/header-footer" target="_blank">Read this page</a> for more.', 'rows="10"');
594
- ?>
595
-
596
- </tr>
597
- </table>
598
-
599
- <h3>Head meta links</h3>
600
- <p>
601
- WordPress automatically add some meta link on the head of the page, for example the RSS links, the previous and next
602
- post links and so on. Here you can disable those links if not of interest.
603
- </p>
604
- <table class="form-table">
605
- <tr valign="top">
606
- <th scope="row">Disable css link id</th>
607
- <?php hefo_field_checkbox_only('disable_css_id', __('Disable the id attribute on css links generated by WordPress', 'header-footer'), '', 'http://www.satollo.net/plugins/header-footer#disable_css_id'); ?>
608
- </tr>
609
- <tr valign="top">
610
- <th scope="row">Disable css media</th>
611
- <?php hefo_field_checkbox_only('disable_css_media', __('Disable the media attribute on css links generated by WordPress, id the option above is enabled.', 'header-footer'), '', 'http://www.satollo.net/plugins/header-footer#disable_css_media'); ?>
612
- </tr>
613
- <tr valign="top">
614
- <th scope="row">Extra feed links</th>
615
- <?php hefo_field_checkbox_only('disable_feed_links_extra', __('Disable extra feed links like category feeds or single post comments feeds', 'header-footer')); ?>
616
- </tr>
617
- <tr valign="top">
618
- <th scope="row">Short link</th>
619
- <?php hefo_field_checkbox_only('disable_wp_shortlink_wp_head', __('Disable the short link for posts', 'header-footer')); ?>
620
- </tr>
621
- <tr valign="top">
622
- <th scope="row">WLW Manifest</th>
623
- <?php hefo_field_checkbox_only('disable_wlwmanifest_link', __('Disable the Windows Live Writer manifest', 'header-footer')); ?>
624
- </tr>
625
- <tr valign="top">
626
- <th scope="row">RSD link</th>
627
- <?php hefo_field_checkbox_only('disable_rsd_link', __('Disable RSD link', 'header-footer')); ?>
628
- </tr>
629
- <tr valign="top">
630
- <th scope="row">Adjacent post links</th>
631
- <?php hefo_field_checkbox_only('disable_adjacent_posts_rel_link_wp_head', __('Disable adjacent post links', 'header-footer')); ?>
632
- </tr>
633
- </table>
634
- <div class="clearfix"></div>
635
- </div>
636
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
637
 
638
- <div id="tabs-7">
639
- <table class="form-table">
640
- <tr valign="top"><?php hefo_field_textarea('notes', __('Notes and parked codes', 'header-footer'), '', 'rows="10"'); ?></tr>
641
- </table>
642
- <div class="clearfix"></div>
643
- </div>
644
 
645
-
 
 
 
 
646
  </div>
647
 
 
 
 
648
  </div>
649
  <p>* if no mobile alternative is activated</p>
650
- <p class="submit"><input type="submit" class="button" name="save" value="<?php _e('save', 'header-footer'); ?>"></p>
651
 
652
  </form>
653
  </div>
3
  load_plugin_textdomain('header-footer', false, 'header-footer/languages');
4
  }
5
 
6
+ require_once __DIR__ . '/controls.php';
7
 
8
+ $dismissed = get_option('hefo_dismissed', []);
9
+
10
+ if (isset($_REQUEST['dismiss']) && check_admin_referer('dismiss')) {
11
  $dismissed[$_REQUEST['dismiss']] = 1;
12
  update_option('hefo_dismissed', $dismissed);
13
  wp_redirect('?page=header-footer%2Foptions.php');
14
  exit();
15
  }
16
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
  if (isset($_POST['save'])) {
18
  if (!wp_verify_nonce($_POST['_wpnonce'], 'save'))
19
  die('Page expired');
32
  $options['mobile_user_agents_parsed'] = implode('|', $agents2);
33
 
34
  update_option('hefo', $options);
35
+ } else {
 
 
36
  $options = get_option('hefo');
37
  }
 
 
38
  ?>
39
 
40
  <script>
41
+ jQuery(function () {
42
+
43
  jQuery("textarea.hefo-cm").each(function () {
44
  wp.codeEditor.initialize(this);
45
  });
46
+ jQuery("#hefo-tabs").tabs();
 
 
 
 
 
 
 
 
 
47
  });
48
  </script>
49
+
50
  <div class="wrap">
51
  <!--https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5PHGDGNHAYLJ8-->
52
 
56
  <div class="notice notice-success"><p>
57
  I never asked before and I'm curious: <a href="http://wordpress.org/extend/plugins/header-footer/" target="_blank"><strong>would you rate this plugin</strong></a>?
58
  (takes only few seconds required - account on WordPress.org, every blog owner should have one...). <strong>Really appreciated, Stefano</strong>.
59
+ <a class="hefo-dismiss" href="<?php echo wp_nonce_url($_SERVER['REQUEST_URI'] . '&dismiss=rate&noheader=1', 'dismiss') ?>">&times;</a>
60
  </p>
61
  </div>
62
  <?php } ?>
70
  <input type="email" name="ne" value="<?php echo esc_attr(get_option('admin_email')) ?>">
71
  <input type="submit" value="Subscribe">
72
  </form>
73
+ <a class="hefo-dismiss" href="<?php echo wp_nonce_url($_SERVER['REQUEST_URI'] . '&dismiss=newsletter&noheader=1', 'dismiss') ?>">&times;</a>
74
  </p>
75
  </div>
76
  <?php } ?>
77
 
78
+ <div style="padding: 15px; background-color: #fff; border: 1px solid #eee; font-size: 16px; line-height: 22px; margin-bottom: 10px;">
79
  Did this plugin save you lot of time and troubles?
80
  <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5PHGDGNHAYLJ8" target="_blank"><img style="vertical-align: bottom" src="<?php echo plugins_url('header-footer') ?>/images/donate.png"></a>
81
  To help children. Even <b>2$</b> help. <a href="http://www.satollo.net/donations" target="_blank">Please read more</a>. Thank you.
84
  <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5PHGDGNHAYLJ8" target="_blank">donation</a>. Thank you.
85
  </div>
86
 
87
+ <div style="padding: 15px; background-color: #fff; border: 1px solid #eee; font-size: 16px; line-height: 22px">
88
+ <?php
89
+ if (apply_filters('hefo_php_exec', true)) {
90
+ _e('PHP is allowed in your code.','header-footer');
91
+ } else {
92
+ _e('PHP is NOT allowed in your code (disabled by your theme or a plugin)', 'header-footer');
93
+ }
94
+ ?>
95
+ <br>
96
+
97
+ <?php _e('Mobile configuration is <strong>now deprecated</strong>', 'header-footer'); ?>.
98
+ <a href="https://www.satollo.net/plugins/header-footer" target="_blank" class="readmore"><?php _e('Read more', 'header-footer'); ?></a>
99
+
100
+ </div>
101
+
 
 
 
102
 
103
  <form method="post" action="">
104
  <?php wp_nonce_field('save') ?>
105
 
106
+ <p>
107
+ <input type="submit" class="button-primary" name="save" value="<?php _e('save', 'header-footer'); ?>">
108
+ </p>
109
+
110
+ <div id="hefo-tabs">
111
+ <ul>
112
+ <li><a href="#tabs-first"><?php _e('Head and footer', 'header-footer'); ?></a></li>
113
+ <li><a href="#tabs-post"><?php _e('Posts', 'header-footer'); ?></a></li>
114
+ <li><a href="#tabs-post-inner"><?php _e('Inside posts', 'header-footer'); ?></a></li>
115
+ <li><a href="#tabs-page"><?php _e('Pages', 'header-footer'); ?></a></li>
116
+ <li><a href="#tabs-excerpt"><?php _e('Excerpts', 'header-footer'); ?></a></li>
117
+ <li><a href="#tabs-5"><?php _e('Snippets', 'header-footer'); ?></a></li>
118
+ <li><a href="#tabs-amp"><?php _e('AMP', 'header-footer'); ?></a></li>
119
+ <li><a href="#tabs-generics"><?php _e('Generics', 'header-footer'); ?></a></li>
120
+ <li><a href="#tabs-8"><?php _e('Advanced', 'header-footer'); ?></a></li>
121
+ <li><a href="#tabs-7"><?php _e('Notes and...', 'header-footer'); ?></a></li>
122
  </ul>
123
 
 
124
 
125
+ <div id="tabs-first">
126
 
127
+ <h3><?php esc_html_e('<HEAD> page section injection', 'header-footer') ?></h3>
128
+ <div class="row">
129
 
130
+ <div class="col-2">
131
+ <label><?php esc_html_e('On every page', 'header-footer') ?></label>
132
+ <?php hefo_base_textarea_cm('head'); ?>
 
 
 
 
 
133
  </div>
134
+ <div class="col-2">
135
+ <label><?php esc_html_e('Only on the home page', 'header-footer') ?></label>
136
+ <?php hefo_base_textarea_cm('head_home'); ?>
137
+ </div>
138
+ </div>
139
 
140
+ <h3><?php esc_html_e('After the <BODY> tag', 'header-footer') ?></h3>
141
+ <div class="row">
 
 
 
 
 
 
 
 
 
142
 
143
+ <div class="col-2">
144
+ <label><?php _e('Desktop', 'header-footer') ?>*</label>
145
+ <?php hefo_base_textarea_cm('body'); ?>
146
  </div>
147
+ <div class="col-2">
148
+ <?php hefo_base_checkbox('mobile_body_enabled', __('Mobile', 'header-footer')); ?>
149
+ <?php hefo_base_textarea_cm('mobile_body'); ?>
 
 
 
 
 
 
 
150
  </div>
151
 
 
 
152
  </div>
153
+ <h3><?php esc_html_e('Before the &lt;/BODY&gt; closing tag (footer)', 'header-footer') ?></h3>
154
+ <div class="row">
155
+ <div class="col-2">
156
+ <label><?php _e('Desktop', 'header-footer') ?>*</label>
157
+ <?php hefo_base_textarea_cm('footer'); ?>
158
+ </div>
159
+ <div class="col-2">
160
+ <?php hefo_base_checkbox('mobile_footer_enabled', __('Mobile', 'header-footer')); ?>
161
+ <?php hefo_base_textarea_cm('mobile_footer'); ?>
162
+ </div>
 
 
 
 
 
 
 
 
 
163
  </div>
164
 
165
+ <div class="clearfix"></div>
166
 
167
+ </div>
168
 
169
+ <div id="tabs-generics">
 
 
 
 
170
 
171
+ <?php for ($i = 1; $i <= 5; $i++) { ?>
172
+ <h3>Generic injection <?php echo $i; ?></h3>
173
+ <p>Inject before the <?php hefo_base_text('generic_tag_' . $i); ?> marker</p>
174
  <div class="row">
 
175
  <div class="col-2">
176
  <label><?php _e('Desktop', 'header-footer') ?>*</label>
177
+ <?php hefo_base_textarea_cm('generic_' . $i); ?>
178
  </div>
179
  <div class="col-2">
180
+ <?php hefo_base_checkbox('mobile_generic_enabled_' . $i, __('Mobile', 'header-footer')); ?>
181
+ <?php hefo_base_textarea_cm('mobile_generic_' . $i); ?>
182
  </div>
183
  </div>
 
184
  <div class="clearfix"></div>
185
+ <?php } ?>
186
+ <div class="clearfix"></div>
187
+ </div>
188
 
 
 
189
 
 
 
 
 
 
 
 
 
 
190
 
191
+ <div id="tabs-post">
192
+ <p>
193
+ Please take the time to <a href="http://www.satollo.net/plugins/header-footer" target="_blank">read this page</a> to understand how the "mobile" configuration works.
194
+ See the "advanced tab" to configure the mobile device detection.
195
+ </p>
 
196
 
197
+ <h3><?php esc_html_e('Before the post content', 'header-footer'); ?></h3>
198
+ <div class="row">
199
+
200
+ <div class="col-2">
201
+ <label><?php _e('Desktop', 'header-footer') ?>*</label>
202
+ <?php hefo_base_textarea_cm('before'); ?>
203
+ </div>
204
+ <div class="col-2">
205
+ <?php hefo_base_checkbox('mobile_before_enabled', __('Mobile', 'header-footer')); ?>
206
+ <?php hefo_base_textarea_cm('mobile_before'); ?>
207
+ </div>
208
  </div>
209
 
210
+ <div class="clearfix"></div>
211
 
212
+ <h3><?php esc_html_e('After the post content', 'header-footer'); ?></h3>
213
+ <div class="row">
214
+
215
+ <div class="col-2">
216
+ <label><?php _e('Desktop', 'header-footer') ?>*</label>
217
+ <?php hefo_base_textarea_cm('after'); ?>
218
+ </div>
219
+ <div class="col-2">
220
+ <?php hefo_base_checkbox('mobile_after_enabled', __('Mobile', 'header-footer')); ?>
221
+ <?php hefo_base_textarea_cm('mobile_after'); ?>
222
+ </div>
 
 
 
 
 
 
223
  </div>
224
 
225
+ <!--<h3>Posts and pages</h3>-->
226
+ <table class="form-table">
227
+ <!--<tr valign="top"><?php hefo_field_checkbox('category', __('Enable injection on category pages', 'header-footer')); ?></tr>-->
228
+ <tr valign="top"><?php //hefo_field_textarea('before', __('Code to be inserted before each post', 'header-footer'), '', 'rows="10"'); ?></tr>
229
+ <tr valign="top"><?php //hefo_field_textarea('after', __('Code to be inserted after each post', 'header-footer'), '', 'rows="10"'); ?></tr>
230
+ </table>
231
 
 
232
 
233
+ <div class="clearfix"></div>
234
+ </div>
 
235
 
 
 
236
 
237
+ <div id="tabs-post-inner">
238
+
239
+ <?php for ($i = 1; $i <= 5; $i++) { ?>
240
+ <h3>Inner post injection <?php echo $i; ?></h3>
241
+ <?php hefo_rule($i); ?>
242
+ <div class="row">
243
  <div class="col-2">
244
  <label><?php _e('Desktop', 'header-footer') ?>*</label>
245
+ <?php hefo_base_textarea_cm('inner_' . $i); ?>
246
  </div>
247
  <div class="col-2">
248
+ <?php hefo_base_checkbox('mobile_inner_enabled_' . $i, __('Mobile', 'header-footer')); ?>
249
+ <?php hefo_base_textarea_cm('mobile_inner_' . $i); ?>
250
  </div>
251
  </div>
 
252
  <div class="clearfix"></div>
253
+ <?php } ?>
254
+ </div>
255
 
 
 
256
 
257
+ <div id="tabs-page">
 
 
 
 
 
 
 
 
258
 
259
+ <?php hefo_base_checkbox('page_use_post', __('Use the post configurations', 'header-footer')); ?><br>
260
+ <?php hefo_base_checkbox('page_add_tags', __('Let pages to have tags', 'header-footer')); ?><br>
261
+ <?php hefo_base_checkbox('page_add_categories', __('Let pages to have categories', 'header-footer')); ?>
262
+
263
+ <h3><?php _e('Before the page content', 'header-footer') ?></h3>
264
+ <div class="row">
265
 
266
+ <div class="col-2">
267
+ <label><?php _e('Desktop', 'header-footer') ?>*</label>
268
+ <?php hefo_base_textarea_cm('page_before'); ?>
269
+ </div>
270
+ <div class="col-2">
271
+ <?php hefo_base_checkbox('mobile_page_before_enabled', __('Mobile', 'header-footer')); ?><br>
272
+ <?php hefo_base_textarea_cm('mobile_page_before'); ?>
273
+ </div>
274
  </div>
275
+
276
+ <div class="clearfix"></div>
277
+
278
+ <h3><?php _e('After the page content', 'header-footer') ?></h3>
279
+ <div class="row">
280
+
281
+ <div class="col-2">
282
+ <label><?php _e('Desktop', 'header-footer') ?>*</label>
283
+ <?php hefo_base_textarea_cm('page_after'); ?>
284
+ </div>
285
+ <div class="col-2">
286
+ <?php hefo_base_checkbox('mobile_page_after_enabled', __('Mobile', 'header-footer')); ?><br>
287
+ <?php hefo_base_textarea_cm('mobile_page_after'); ?>
288
+ </div>
289
  </div>
290
 
291
+ <div class="clearfix"></div>
292
 
293
+ </div>
 
 
 
 
294
 
295
+ <div id="tabs-excerpt">
296
+
297
+ <p><?php _e('It works only on category and tag pages.', 'header-footer'); ?></p>
298
+ <table class="form-table">
299
+ <tr valign="top"><?php hefo_field_textarea('excerpt_before', __('Code to be inserted before each post excerpt', 'header-footer'), '', 'rows="10"'); ?></tr>
300
+ <tr valign="top"><?php hefo_field_textarea('excerpt_after', __('Code to be inserted after each post excerpt', 'header-footer'), '', 'rows="10"'); ?></tr>
301
+ </table>
302
+ </div>
303
+
304
+ <!-- AMP -->
305
+
306
+ <div id="tabs-amp">
307
+ <p>
308
+ You need the <a href="https://it.wordpress.org/plugins/amp/" target="_blank">AMP</a> plugin. Other AMP plugins could be supported
309
+ in the near future.
310
+ </p>
311
+
312
+ <h3><?php esc_html_e('<HEAD> page section', 'header-footer') ?></h3>
313
+ <div class="row">
314
+ <div class="col-1">
315
+ <?php hefo_base_textarea_cm('amp_head'); ?>
316
  </div>
317
+ </div>
318
 
319
+ <div class="clearfix"></div>
320
 
321
+ <h3><?php esc_html_e('Extra CSS', 'header-footer') ?></h3>
322
+ <div class="row">
323
+ <div class="col-1">
324
+ <?php hefo_base_textarea_cm('amp_css'); ?>
 
325
  </div>
326
+ </div>
 
327
 
328
+ <div class="clearfix"></div>
329
+
330
+ <h3><?php esc_html_e('Just after the <BODY> tag', 'header-footer') ?></h3>
331
+ <div class="row">
332
+ <div class="col-1">
333
+ <?php hefo_base_textarea_cm('amp_body'); ?>
334
  </div>
335
+ </div>
336
 
337
 
338
+ <div class="clearfix"></div>
339
 
340
+ <h3><?php esc_html_e('Before the post content', 'header-footer') ?></h3>
341
+ <div class="row">
342
+ <div class="col-1">
343
 
344
+ <?php hefo_base_textarea_cm('amp_post_before'); ?>
 
345
  </div>
346
+ </div>
347
 
348
+ <div class="clearfix"></div>
349
 
350
+ <h3><?php esc_html_e('After the post content', 'header-footer') ?></h3>
351
+ <div class="row">
352
 
353
+ <div class="col-1">
354
 
355
+ <?php hefo_base_textarea_cm('amp_post_after'); ?>
356
 
 
357
  </div>
358
+ </div>
359
+ <div class="clearfix"></div>
360
 
361
+ <h3><?php esc_html_e('Footer', 'header-footer') ?></h3>
362
+ <div class="row">
363
 
364
+ <div class="col-1">
365
 
366
+ <?php hefo_base_textarea_cm('amp_footer'); ?>
367
 
 
368
  </div>
 
 
369
  </div>
370
+ <div class="clearfix"></div>
371
 
372
+ </div>
373
 
 
 
 
 
 
 
 
 
 
 
 
 
 
374
 
375
+ <div id="tabs-5">
376
+ <p>
377
+ <?php _e('Common snippets that can be used in any header or footer area referring them as [snippet_N] where N is the snippet number
378
+ from 1 to 5. Snippets are inserted before PHP evaluation.', 'header-footer'); ?><br />
379
+ <?php _e('Useful for social button to be placed before and after the post or in posts and pages.', 'header-footer'); ?>
380
+ </p>
381
+ <table class="form-table">
382
+ <? for ($i=1; $i<=5; $i++) { ?>
383
+ <tr valign="top"><?php hefo_field_textarea('snippet_' . $i, __('Snippet ' . $i, 'header-footer'), '', 'rows="10"'); ?></tr>
384
+ <? } ?>
385
+ </table>
386
+ <div class="clearfix"></div>
387
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
388
 
389
+ <div id="tabs-8">
390
+ <table class="form-table">
391
+ <tr valign="top">
392
+ <?php
393
+ hefo_field_textarea('mobile_user_agents', __('Mobile user agent strings', 'header-footer'), 'For coders: a regular expression is built with those values and the resulting code will be<br>'
394
+ . '<code>preg_match(\'/' . $options['mobile_user_agents_parsed'] . '/\', ...);</code><br>' .
395
+ '<a href="http://www.satollo.net/plugins/header-footer" target="_blank">Read this page</a> for more.', 'rows="10"');
396
+ ?>
397
+
398
+ </tr>
399
+ </table>
400
+
401
+ <h3>Head meta links</h3>
402
+ <p>
403
+ WordPress automatically add some meta link on the head of the page, for example the RSS links, the previous and next
404
+ post links and so on. Here you can disable those links if not of interest.
405
+ </p>
406
+ <table class="form-table">
407
+ <tr valign="top">
408
+ <th scope="row">Disable css link id</th>
409
+ <?php hefo_field_checkbox_only('disable_css_id', __('Disable the id attribute on css links generated by WordPress', 'header-footer'), '', 'http://www.satollo.net/plugins/header-footer#disable_css_id'); ?>
410
+ </tr>
411
+ <tr valign="top">
412
+ <th scope="row">Disable css media</th>
413
+ <?php hefo_field_checkbox_only('disable_css_media', __('Disable the media attribute on css links generated by WordPress, id the option above is enabled.', 'header-footer'), '', 'http://www.satollo.net/plugins/header-footer#disable_css_media'); ?>
414
+ </tr>
415
+ <tr valign="top">
416
+ <th scope="row">Extra feed links</th>
417
+ <?php hefo_field_checkbox_only('disable_feed_links_extra', __('Disable extra feed links like category feeds or single post comments feeds', 'header-footer')); ?>
418
+ </tr>
419
+ <tr valign="top">
420
+ <th scope="row">Short link</th>
421
+ <?php hefo_field_checkbox_only('disable_wp_shortlink_wp_head', __('Disable the short link for posts', 'header-footer')); ?>
422
+ </tr>
423
+ <tr valign="top">
424
+ <th scope="row">WLW Manifest</th>
425
+ <?php hefo_field_checkbox_only('disable_wlwmanifest_link', __('Disable the Windows Live Writer manifest', 'header-footer')); ?>
426
+ </tr>
427
+ <tr valign="top">
428
+ <th scope="row">RSD link</th>
429
+ <?php hefo_field_checkbox_only('disable_rsd_link', __('Disable RSD link', 'header-footer')); ?>
430
+ </tr>
431
+ <tr valign="top">
432
+ <th scope="row">Adjacent post links</th>
433
+ <?php hefo_field_checkbox_only('disable_adjacent_posts_rel_link_wp_head', __('Disable adjacent post links', 'header-footer')); ?>
434
+ </tr>
435
+ </table>
436
+ <div class="clearfix"></div>
437
+ </div>
438
 
 
 
 
 
 
 
439
 
440
+ <div id="tabs-7">
441
+ <table class="form-table">
442
+ <tr valign="top"><?php hefo_field_textarea('notes', __('Notes and parked codes', 'header-footer'), '', 'rows="10"'); ?></tr>
443
+ </table>
444
+ <div class="clearfix"></div>
445
  </div>
446
 
447
+
448
+
449
+
450
  </div>
451
  <p>* if no mobile alternative is activated</p>
452
+ <p class="submit"><input type="submit" class="button-primary" name="save" value="<?php _e('save', 'header-footer'); ?>"></p>
453
 
454
  </form>
455
  </div>
images/social/round/facebook.png DELETED
Binary file
images/social/round/google.png DELETED
Binary file
images/social/round/linkedin.png DELETED
Binary file
images/social/round/twitter.png DELETED
Binary file
images/social/square/facebook.png DELETED
Binary file
images/social/square/google.png DELETED
Binary file
images/social/square/linkedin.png DELETED
Binary file
images/social/square/pinterest.png DELETED
Binary file
images/social/square/twitter.png DELETED
Binary file
lib/easytabs/jquery.easytabs.min.js DELETED
@@ -1,12 +0,0 @@
1
- /*
2
- * jQuery EasyTabs plugin 3.2.0
3
- *
4
- * Copyright (c) 2010-2011 Steve Schwartz (JangoSteve)
5
- *
6
- * Dual licensed under the MIT and GPL licenses:
7
- * http://www.opensource.org/licenses/mit-license.php
8
- * http://www.gnu.org/licenses/gpl.html
9
- *
10
- * Date: Thu May 09 17:30:00 2013 -0500
11
- */
12
- (function(a){a.easytabs=function(j,e){var f=this,q=a(j),i={animate:true,panelActiveClass:"active",tabActiveClass:"active",defaultTab:"li:first-child",animationSpeed:"normal",tabs:"> ul > li",updateHash:true,cycle:false,collapsible:false,collapsedClass:"collapsed",collapsedByDefault:true,uiTabs:false,transitionIn:"fadeIn",transitionOut:"fadeOut",transitionInEasing:"swing",transitionOutEasing:"swing",transitionCollapse:"slideUp",transitionUncollapse:"slideDown",transitionCollapseEasing:"swing",transitionUncollapseEasing:"swing",containerClass:"",tabsClass:"",tabClass:"",panelClass:"",cache:true,event:"click",panelContext:q},h,l,v,m,d,t={fast:200,normal:400,slow:600},r;f.init=function(){f.settings=r=a.extend({},i,e);r.bind_str=r.event+".easytabs";if(r.uiTabs){r.tabActiveClass="ui-tabs-selected";r.containerClass="ui-tabs ui-widget ui-widget-content ui-corner-all";r.tabsClass="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all";r.tabClass="ui-state-default ui-corner-top";r.panelClass="ui-tabs-panel ui-widget-content ui-corner-bottom"}if(r.collapsible&&e.defaultTab!==undefined&&e.collpasedByDefault===undefined){r.collapsedByDefault=false}if(typeof(r.animationSpeed)==="string"){r.animationSpeed=t[r.animationSpeed]}a("a.anchor").remove().prependTo("body");q.data("easytabs",{});f.setTransitions();f.getTabs();b();g();w();n();c();q.attr("data-easytabs",true)};f.setTransitions=function(){v=(r.animate)?{show:r.transitionIn,hide:r.transitionOut,speed:r.animationSpeed,collapse:r.transitionCollapse,uncollapse:r.transitionUncollapse,halfSpeed:r.animationSpeed/2}:{show:"show",hide:"hide",speed:0,collapse:"hide",uncollapse:"show",halfSpeed:0}};f.getTabs=function(){var x;f.tabs=q.find(r.tabs),f.panels=a(),f.tabs.each(function(){var A=a(this),z=A.children("a"),y=A.children("a").data("target");A.data("easytabs",{});if(y!==undefined&&y!==null){A.data("easytabs").ajax=z.attr("href")}else{y=z.attr("href")}y=y.match(/#([^\?]+)/)[1];x=r.panelContext.find("#"+y);if(x.length){x.data("easytabs",{position:x.css("position"),visibility:x.css("visibility")});x.not(r.panelActiveClass).hide();f.panels=f.panels.add(x);A.data("easytabs").panel=x}else{f.tabs=f.tabs.not(A);if("console" in window){console.warn("Warning: tab without matching panel for selector '#"+y+"' removed from set")}}})};f.selectTab=function(x,C){var y=window.location,B=y.hash.match(/^[^\?]*/)[0],z=x.parent().data("easytabs").panel,A=x.parent().data("easytabs").ajax;if(r.collapsible&&!d&&(x.hasClass(r.tabActiveClass)||x.hasClass(r.collapsedClass))){f.toggleTabCollapse(x,z,A,C)}else{if(!x.hasClass(r.tabActiveClass)||!z.hasClass(r.panelActiveClass)){o(x,z,A,C)}else{if(!r.cache){o(x,z,A,C)}}}};f.toggleTabCollapse=function(x,y,z,A){f.panels.stop(true,true);if(u(q,"easytabs:before",[x,y,r])){f.tabs.filter("."+r.tabActiveClass).removeClass(r.tabActiveClass).children().removeClass(r.tabActiveClass);if(x.hasClass(r.collapsedClass)){if(z&&(!r.cache||!x.parent().data("easytabs").cached)){q.trigger("easytabs:ajax:beforeSend",[x,y]);y.load(z,function(C,B,D){x.parent().data("easytabs").cached=true;q.trigger("easytabs:ajax:complete",[x,y,C,B,D])})}x.parent().removeClass(r.collapsedClass).addClass(r.tabActiveClass).children().removeClass(r.collapsedClass).addClass(r.tabActiveClass);y.addClass(r.panelActiveClass)[v.uncollapse](v.speed,r.transitionUncollapseEasing,function(){q.trigger("easytabs:midTransition",[x,y,r]);if(typeof A=="function"){A()}})}else{x.addClass(r.collapsedClass).parent().addClass(r.collapsedClass);y.removeClass(r.panelActiveClass)[v.collapse](v.speed,r.transitionCollapseEasing,function(){q.trigger("easytabs:midTransition",[x,y,r]);if(typeof A=="function"){A()}})}}};f.matchTab=function(x){return f.tabs.find("[href='"+x+"'],[data-target='"+x+"']").first()};f.matchInPanel=function(x){return(x&&f.validId(x)?f.panels.filter(":has("+x+")").first():[])};f.validId=function(x){return x.substr(1).match(/^[A-Za-z]+[A-Za-z0-9\-_:\.].$/)};f.selectTabFromHashChange=function(){var y=window.location.hash.match(/^[^\?]*/)[0],x=f.matchTab(y),z;if(r.updateHash){if(x.length){d=true;f.selectTab(x)}else{z=f.matchInPanel(y);if(z.length){y="#"+z.attr("id");x=f.matchTab(y);d=true;f.selectTab(x)}else{if(!h.hasClass(r.tabActiveClass)&&!r.cycle){if(y===""||f.matchTab(m).length||q.closest(y).length){d=true;f.selectTab(l)}}}}}};f.cycleTabs=function(x){if(r.cycle){x=x%f.tabs.length;$tab=a(f.tabs[x]).children("a").first();d=true;f.selectTab($tab,function(){setTimeout(function(){f.cycleTabs(x+1)},r.cycle)})}};f.publicMethods={select:function(x){var y;if((y=f.tabs.filter(x)).length===0){if((y=f.tabs.find("a[href='"+x+"']")).length===0){if((y=f.tabs.find("a"+x)).length===0){if((y=f.tabs.find("[data-target='"+x+"']")).length===0){if((y=f.tabs.find("a[href$='"+x+"']")).length===0){a.error("Tab '"+x+"' does not exist in tab set")}}}}}else{y=y.children("a").first()}f.selectTab(y)}};var u=function(A,x,z){var y=a.Event(x);A.trigger(y,z);return y.result!==false};var b=function(){q.addClass(r.containerClass);f.tabs.parent().addClass(r.tabsClass);f.tabs.addClass(r.tabClass);f.panels.addClass(r.panelClass)};var g=function(){var y=window.location.hash.match(/^[^\?]*/)[0],x=f.matchTab(y).parent(),z;if(x.length===1){h=x;r.cycle=false}else{z=f.matchInPanel(y);if(z.length){y="#"+z.attr("id");h=f.matchTab(y).parent()}else{h=f.tabs.parent().find(r.defaultTab);if(h.length===0){a.error("The specified default tab ('"+r.defaultTab+"') could not be found in the tab set ('"+r.tabs+"') out of "+f.tabs.length+" tabs.")}}}l=h.children("a").first();p(x)};var p=function(z){var y,x;if(r.collapsible&&z.length===0&&r.collapsedByDefault){h.addClass(r.collapsedClass).children().addClass(r.collapsedClass)}else{y=a(h.data("easytabs").panel);x=h.data("easytabs").ajax;if(x&&(!r.cache||!h.data("easytabs").cached)){q.trigger("easytabs:ajax:beforeSend",[l,y]);y.load(x,function(B,A,C){h.data("easytabs").cached=true;q.trigger("easytabs:ajax:complete",[l,y,B,A,C])})}h.data("easytabs").panel.show().addClass(r.panelActiveClass);h.addClass(r.tabActiveClass).children().addClass(r.tabActiveClass)}q.trigger("easytabs:initialised",[l,y])};var w=function(){f.tabs.children("a").bind(r.bind_str,function(x){r.cycle=false;d=false;f.selectTab(a(this));x.preventDefault?x.preventDefault():x.returnValue=false})};var o=function(z,D,E,H){f.panels.stop(true,true);if(u(q,"easytabs:before",[z,D,r])){var A=f.panels.filter(":visible"),y=D.parent(),F,x,C,G,B=window.location.hash.match(/^[^\?]*/)[0];if(r.animate){F=s(D);x=A.length?k(A):0;C=F-x}m=B;G=function(){q.trigger("easytabs:midTransition",[z,D,r]);if(r.animate&&r.transitionIn=="fadeIn"){if(C<0){y.animate({height:y.height()+C},v.halfSpeed).css({"min-height":""})}}if(r.updateHash&&!d){window.location.hash="#"+D.attr("id")}else{d=false}D[v.show](v.speed,r.transitionInEasing,function(){y.css({height:"","min-height":""});q.trigger("easytabs:after",[z,D,r]);if(typeof H=="function"){H()}})};if(E&&(!r.cache||!z.parent().data("easytabs").cached)){q.trigger("easytabs:ajax:beforeSend",[z,D]);D.load(E,function(J,I,K){z.parent().data("easytabs").cached=true;q.trigger("easytabs:ajax:complete",[z,D,J,I,K])})}if(r.animate&&r.transitionOut=="fadeOut"){if(C>0){y.animate({height:(y.height()+C)},v.halfSpeed)}else{y.css({"min-height":y.height()})}}f.tabs.filter("."+r.tabActiveClass).removeClass(r.tabActiveClass).children().removeClass(r.tabActiveClass);f.tabs.filter("."+r.collapsedClass).removeClass(r.collapsedClass).children().removeClass(r.collapsedClass);z.parent().addClass(r.tabActiveClass).children().addClass(r.tabActiveClass);f.panels.filter("."+r.panelActiveClass).removeClass(r.panelActiveClass);D.addClass(r.panelActiveClass);if(A.length){A[v.hide](v.speed,r.transitionOutEasing,G)}else{D[v.uncollapse](v.speed,r.transitionUncollapseEasing,G)}}};var s=function(z){if(z.data("easytabs")&&z.data("easytabs").lastHeight){return z.data("easytabs").lastHeight}var B=z.css("display"),y,x;try{y=a("<div></div>",{position:"absolute",visibility:"hidden",overflow:"hidden"})}catch(A){y=a("<div></div>",{visibility:"hidden",overflow:"hidden"})}x=z.wrap(y).css({position:"relative",visibility:"hidden",display:"block"}).outerHeight();z.unwrap();z.css({position:z.data("easytabs").position,visibility:z.data("easytabs").visibility,display:B});z.data("easytabs").lastHeight=x;return x};var k=function(y){var x=y.outerHeight();if(y.data("easytabs")){y.data("easytabs").lastHeight=x}else{y.data("easytabs",{lastHeight:x})}return x};var n=function(){if(typeof a(window).hashchange==="function"){a(window).hashchange(function(){f.selectTabFromHashChange()})}else{if(a.address&&typeof a.address.change==="function"){a.address.change(function(){f.selectTabFromHashChange()})}}};var c=function(){var x;if(r.cycle){x=f.tabs.index(h);setTimeout(function(){f.cycleTabs(x+1)},r.cycle)}};f.init()};a.fn.easytabs=function(c){var b=arguments;return this.each(function(){var e=a(this),d=e.data("easytabs");if(undefined===d){d=new a.easytabs(this,c);e.data("easytabs",d)}if(d.publicMethods[c]){return d.publicMethods[c](Array.prototype.slice.call(b,1))}})}})(jQuery);
 
 
 
 
 
 
 
 
 
 
 
 
lib/easytabs/tabs.css DELETED
@@ -1,71 +0,0 @@
1
- /* Example Styles for Demo */
2
- .etabs { margin: 0; padding: 0; }
3
- .tab { margin-bottom: 0; display: inline-block; zoom:1; *display:inline; background: #eee; border: solid 1px #999; border-bottom: none; -moz-border-radius: 4px 4px 0 0; -webkit-border-radius: 4px 4px 0 0; }
4
- .tab a { font-size: 14px; line-height: 2em; display: block; padding: 0 10px; outline: none; }
5
- .tab a:hover { text-decoration: underline; }
6
- .tab.active { background: #fff; padding-top: 6px; position: relative; top: 1px; border-color: #666; }
7
- .tab a.active { font-weight: bold; }
8
- .tab-container .panel-container { background-color: #fff; border: solid #666 1px; padding: 10px; -moz-border-radius: 0 4px 4px 4px; -webkit-border-radius: 0 4px 4px 4px; }
9
- .panel-container { margin-bottom: 10px; }
10
-
11
- /* Styles for alternate tabActiveClass */
12
- .tab.selected-tab { background: #fff; padding-top: 6px; position: relative; top: 1px; border-color: #666; }
13
- .tab a.selected-tab { font-weight: bold; }
14
-
15
- /* Styles for Tabs on Side */
16
- #tab-side-container { background: #fff; border: solid 1px; height: 300px; }
17
- #tab-side-container ul { height: 300px; list-style: none; margin: 0; padding: 0; background: #ccc; float: left; border-right: solid 1px; }
18
- #tab-side-container ul li { width: 100px; margin: 0; padding: 0; text-align: center; }
19
- #tab-side-container ul li a { display: block; padding: 15px 0; outline: none; }
20
- #tab-side-container ul li a:hover { text-decoration: underline; }
21
- #tab-side-container ul li.selected-tab { background: #fff; position: relative; left: 1px; border-style: solid; border-width: 1px 0; }
22
- #tab-side-container ul li:first-child.selected-tab { border-top: none; }
23
- #tab-side-container ul li a.selected-tab { font-weight: bold; text-decoration: none; }
24
- #tab-side-container .panel-container { background: #fff; padding-top: 5px; padding-left: 120px; }
25
-
26
- /* Styles for Tabs on Bottom */
27
- #tab-bottom-container { width: 100%; padding: 0; clear: both; }
28
- #tab-bottom-container ul { list-style: none; margin: 0; padding: 0; width: 100%; }
29
- #tab-bottom-container ul li { float: left; width: 33.33%; margin: 0; padding: 0; text-align: center; border-top: solid 1px; }
30
- #tab-bottom-container ul li a { display: block; padding: 15px 0; outline: none; }
31
- #tab-bottom-container ul li a:hover { text-decoration: underline; }
32
- #tab-bottom-container ul li.active { width: 33%; background: #fff; border: solid 1px; border-top: none; }
33
- #tab-bottom-container ul li a.active { font-weight: bold; text-decoration: none; }
34
- #tab-bottom-container .panel-container { background: #fff; border: solid 1px; border-bottom: none; padding: 10px; margin-bottom: 0; }
35
-
36
- /* Styles for Collapsible */
37
- #tab-collapsible-container { background: #fff; padding: 5px; border: solid 1px; }
38
- #tab-collapsible-container ul { margin: 0; padding: 5px 5px 0; background: #ccc; border: solid 1px; }
39
- #tab-collapsible-container ul li { display: inline-block; background: #ccc; border: solid 1px; border-bottom: none; margin: 0; }
40
- #tab-collapsible-container ul li a { display: block; padding: 5px; outline: none; }
41
- #tab-collapsible-container ul li a:hover { text-decoration: underline; }
42
- #tab-collapsible-container ul li.active { background: #fff; padding-top: 6px; position: relative; top: 1px; }
43
- #tab-collapsible-container ul li a.active { font-weight: bold; }
44
- #tab-collapsible-container .panel-container { background: #fff; border: none; padding: 0 10px; background: #fff; }
45
-
46
- /* Styles for Disconnected */
47
- #tab-disconnected-container ul { height: 52px; width: 100%; list-style: none; margin: 0; padding: 0; background: #ccc; }
48
- #tab-disconnected-container ul li { float: left; width: 33.3%; margin: 0; padding: 0; text-align: center; }
49
- #tab-disconnected-container ul li a { display: block; padding: 15px 0; line-height: 20px; outline: none; }
50
- #tab-disconnected-container ul li a:hover { text-decoration: underline; }
51
- #tab-disconnected-container ul li.active { background: #fff; position: relative; left: 1px; }
52
- #tab-disconnected-container ul li a.active { font-weight: bold; text-decoration: none; border: solid 1px; }
53
- #tab-disconnected-container .panel-container { background: #fff; padding: 10px; border: solid 1px; }
54
- #disconnected-tab3 { background: #fff; padding: 10px 15px; border: solid 1px #999; -moz-border-radius: 5px; -webkit-border-radius: 5px; margin: 15px 0; }
55
-
56
- /* Styles for Transition Options */
57
- #tab-transition-container .panel-container { padding: 5px; }
58
- #tab-transition-container .panel-container .active { padding: 0 5px; }
59
-
60
- /* Styles for Form Sections */
61
- .tab-container fieldset { background: #fff; }
62
- .tab-container .field-container { background: #fff; border: solid #666 1px; padding: 10px; -moz-border-radius: 0 4px 4px 4px; -webkit-border-radius: 0 4px 4px 4px; }
63
-
64
- /* Styles for Previous and Next buttons */
65
- .prev-tab, .next-tab { display: block; width: 100px; text-align: center; margin-top: 10px; }
66
- span.prev-tab, span.next-tab { background: #ccc; }
67
- .prev-tab { float: left; }
68
- .next-tab { float: right; }
69
-
70
- /* Styles for Twitter Boostrap */
71
- #twitter-bootstrap-container { background: #fff; padding: 10px; height: 75px; margin-bottom: 15px; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
plugin.php CHANGED
@@ -4,7 +4,7 @@
4
  Plugin Name: Head, Footer and Post Injections
5
  Plugin URI: http://www.satollo.net/plugins/header-footer
6
  Description: Header and Footer lets to add html/javascript code to the head and footer and posts of your blog. Some examples are provided on the <a href="http://www.satollo.net/plugins/header-footer">official page</a>.
7
- Version: 3.1.5
8
  Author: Stefano Lissa
9
  Author URI: http://www.satollo.net
10
  Disclaimer: Use at your own risk. No warranty expressed or implied is provided.
@@ -30,12 +30,10 @@
30
 
31
  defined('ABSPATH') || exit;
32
 
33
- $hefo_options = get_option('hefo', array());
34
 
35
  $hefo_is_mobile = false;
36
- if (defined('IS_PHONE') && IS_PHONE) {
37
- $hefo_is_mobile = true;
38
- } else if (isset($_SERVER['HTTP_USER_AGENT']) && isset($hefo_options['mobile_user_agents_parsed'])) {
39
  $hefo_is_mobile = preg_match('/' . $hefo_options['mobile_user_agents_parsed'] . '/', strtolower($_SERVER['HTTP_USER_AGENT']));
40
  }
41
 
@@ -62,9 +60,9 @@ if (isset($hefo_options['disable_css_id'])) {
62
  register_activation_hook(__FILE__, function () {
63
  $options = get_option('hefo');
64
  if (!is_array($options)) {
65
- $options = array();
66
  }
67
- $options = array_merge(array('after' => '', 'before' => '', 'head' => '', 'body' => '', 'head_home' => '', 'footer' => ''), $options);
68
  for ($i = 1; $i <= 5; $i++) {
69
  $options['snippet_' . $i] = '';
70
  $options['generic_' . $i] = '';
@@ -88,8 +86,9 @@ $hefo_generic_block = array();
88
 
89
  function hefo_template_redirect() {
90
  global $hefo_body_block, $hefo_generic_block, $hefo_options, $hefo_is_mobile;
91
-
92
- if (function_exists('is_amp_endpoint') && is_amp_endpoint()) return;
 
93
 
94
  if ($hefo_is_mobile && isset($hefo_options['mobile_body_enabled'])) {
95
  $hefo_body_block = hefo_execute_option('mobile_body');
@@ -216,22 +215,24 @@ function hefo_the_content($content) {
216
  $type = 'page_';
217
  }
218
 
219
- if ($hefo_is_mobile && isset($hefo_options['mobile_' . $type . 'before_enabled'])) {
220
- $before = hefo_execute_option('mobile_' . $type . 'before');
221
- } else {
222
- $before = hefo_execute_option($type . 'before');
 
 
223
  }
224
 
225
- if ($hefo_is_mobile && isset($hefo_options['mobile_' . $type . 'after_enabled'])) {
226
- $after = hefo_execute_option('mobile_' . $type . 'after');
227
- } else {
228
- $after = hefo_execute_option($type . 'after');
 
 
229
  }
230
 
231
  // Rules
232
 
233
-
234
-
235
  for ($i = 1; $i <= 5; $i++) {
236
  if (empty($hefo_options['inner_tag_' . $i])) {
237
  continue;
4
  Plugin Name: Head, Footer and Post Injections
5
  Plugin URI: http://www.satollo.net/plugins/header-footer
6
  Description: Header and Footer lets to add html/javascript code to the head and footer and posts of your blog. Some examples are provided on the <a href="http://www.satollo.net/plugins/header-footer">official page</a>.
7
+ Version: 3.2.0
8
  Author: Stefano Lissa
9
  Author URI: http://www.satollo.net
10
  Disclaimer: Use at your own risk. No warranty expressed or implied is provided.
30
 
31
  defined('ABSPATH') || exit;
32
 
33
+ $hefo_options = get_option('hefo', []);
34
 
35
  $hefo_is_mobile = false;
36
+ if (isset($_SERVER['HTTP_USER_AGENT']) && isset($hefo_options['mobile_user_agents_parsed'])) {
 
 
37
  $hefo_is_mobile = preg_match('/' . $hefo_options['mobile_user_agents_parsed'] . '/', strtolower($_SERVER['HTTP_USER_AGENT']));
38
  }
39
 
60
  register_activation_hook(__FILE__, function () {
61
  $options = get_option('hefo');
62
  if (!is_array($options)) {
63
+ $options = [];
64
  }
65
+ $options = array_merge(['after' => '', 'before' => '', 'head' => '', 'body' => '', 'head_home' => '', 'footer' => ''], $options);
66
  for ($i = 1; $i <= 5; $i++) {
67
  $options['snippet_' . $i] = '';
68
  $options['generic_' . $i] = '';
86
 
87
  function hefo_template_redirect() {
88
  global $hefo_body_block, $hefo_generic_block, $hefo_options, $hefo_is_mobile;
89
+
90
+ if (function_exists('is_amp_endpoint') && is_amp_endpoint())
91
+ return;
92
 
93
  if ($hefo_is_mobile && isset($hefo_options['mobile_body_enabled'])) {
94
  $hefo_body_block = hefo_execute_option('mobile_body');
215
  $type = 'page_';
216
  }
217
 
218
+ if (!get_post_meta($post->ID, 'hefo_before', true)) {
219
+ if ($hefo_is_mobile && isset($hefo_options['mobile_' . $type . 'before_enabled'])) {
220
+ $before = hefo_execute_option('mobile_' . $type . 'before');
221
+ } else {
222
+ $before = hefo_execute_option($type . 'before');
223
+ }
224
  }
225
 
226
+ if (!get_post_meta($post->ID, 'hefo_after', true)) {
227
+ if ($hefo_is_mobile && isset($hefo_options['mobile_' . $type . 'after_enabled'])) {
228
+ $after = hefo_execute_option('mobile_' . $type . 'after');
229
+ } else {
230
+ $after = hefo_execute_option($type . 'after');
231
+ }
232
  }
233
 
234
  // Rules
235
 
 
 
236
  for ($i = 1; $i <= 5; $i++) {
237
  if (empty($hefo_options['inner_tag_' . $i])) {
238
  continue;
readme.txt CHANGED
@@ -1,10 +1,11 @@
1
  === Head, Footer and Post Injections ===
2
  Tags: header, footer, blog, page, single, post, head, tracking, facebook, og meta tag, open graph, ads, adsense, injections, analytics, amp, pixel
3
- Requires at least: 3.0
4
- Tested up to: 5.3.2
5
- Stable tag: 3.1.5
6
  Donate link: http://www.satollo.net/donations
7
  Contributors: satollo
 
8
 
9
  Header and Footer plugin let you to add html code to the head and footer sections of your blog... and more!
10
 
@@ -62,14 +63,14 @@ The specific bbPress injections are going to be removed. Switch to my
62
 
63
  This plugin cannot change the menu or the footer layout, those features must be covered by your theme!
64
 
65
- Official page: [Header and Footer](http://www.satollo.net/plugins/header-footer).
66
 
67
  Other plugins by Stefano Lissa:
68
 
69
- * [Hyper Cache](http://www.satollo.net/plugins/hyper-cache)
70
- * [Newsletter](http://www.thenewsletterplugin.com)
71
- * [Include Me](http://www.satollo.net/plugins/include-me)
72
- * [Thumbnails](http://www.satollo.net/plugins/thumbnails)
73
  * [Ads for bbPress](https://wordpress.org/plugins/ads-bbpress/)
74
 
75
  = Translation =
@@ -86,14 +87,17 @@ You can contribute to translate this plugin in your language on [WordPress Trans
86
 
87
  FAQs are answered on [Header and Footer](http://www.satollo.net/plugins/header-footer) page.
88
 
89
- == Screenshots ==
90
 
91
- 1. Configuration panel for blog HEAD and footer sections
92
- 2. Configuration panel for post content
93
- 3. Configuration panel for Facebook "og" tags
94
- 4. Configurable snippets of code to be recalled on other configurations (to save time)
95
 
96
- == Changelog ==
 
 
 
 
 
 
97
 
98
  = 3.1.5 =
99
 
1
  === Head, Footer and Post Injections ===
2
  Tags: header, footer, blog, page, single, post, head, tracking, facebook, og meta tag, open graph, ads, adsense, injections, analytics, amp, pixel
3
+ Requires at least: 4.0
4
+ Tested up to: 5.4.2
5
+ Stable tag: 3.2.0
6
  Donate link: http://www.satollo.net/donations
7
  Contributors: satollo
8
+ Requires PHP: 5.6
9
 
10
  Header and Footer plugin let you to add html code to the head and footer sections of your blog... and more!
11
 
63
 
64
  This plugin cannot change the menu or the footer layout, those features must be covered by your theme!
65
 
66
+ Official page: [Header and Footer](https://www.satollo.net/plugins/header-footer).
67
 
68
  Other plugins by Stefano Lissa:
69
 
70
+ * [Hyper Cache](https://www.satollo.net/plugins/hyper-cache)
71
+ * [Newsletter](https://www.thenewsletterplugin.com)
72
+ * [Include Me](https://www.satollo.net/plugins/include-me)
73
+ * [Thumbnails](https://www.satollo.net/plugins/thumbnails)
74
  * [Ads for bbPress](https://wordpress.org/plugins/ads-bbpress/)
75
 
76
  = Translation =
87
 
88
  FAQs are answered on [Header and Footer](http://www.satollo.net/plugins/header-footer) page.
89
 
90
+ == Changelog ==
91
 
92
+ = 3.2.0 =
 
 
 
93
 
94
+ * Restored controls of per post injection
95
+ * Compatibility check with latest WP
96
+ * Moved to PHP 5.6 syntax
97
+
98
+ = 3.1.6 =
99
+
100
+ * Fixed check_admin_referrer action
101
 
102
  = 3.1.5 =
103
 
vendor/jquery-ui/images/ui-icons_444444_256x240.png ADDED
Binary file
vendor/jquery-ui/images/ui-icons_555555_256x240.png ADDED
Binary file
vendor/jquery-ui/images/ui-icons_777620_256x240.png ADDED
Binary file
vendor/jquery-ui/images/ui-icons_777777_256x240.png ADDED
Binary file
vendor/jquery-ui/images/ui-icons_cc0000_256x240.png ADDED
Binary file
vendor/jquery-ui/images/ui-icons_ffffff_256x240.png ADDED
Binary file
vendor/jquery-ui/jquery-ui.min.css ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ /*! jQuery UI - v1.12.1 - 2018-11-04
2
+ * http://jqueryui.com
3
+ * Includes: draggable.css, core.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css
4
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?scope=&folderName=base&cornerRadiusShadow=8px&offsetLeftShadow=0px&offsetTopShadow=0px&thicknessShadow=5px&opacityShadow=30&bgImgOpacityShadow=0&bgTextureShadow=flat&bgColorShadow=666666&opacityOverlay=30&bgImgOpacityOverlay=0&bgTextureOverlay=flat&bgColorOverlay=aaaaaa&iconColorError=cc0000&fcError=5f3f3f&borderColorError=f1a899&bgTextureError=flat&bgColorError=fddfdf&iconColorHighlight=777620&fcHighlight=777620&borderColorHighlight=dad55e&bgTextureHighlight=flat&bgColorHighlight=fffa90&iconColorActive=ffffff&fcActive=ffffff&borderColorActive=003eff&bgTextureActive=flat&bgColorActive=007fff&iconColorHover=555555&fcHover=2b2b2b&borderColorHover=cccccc&bgTextureHover=flat&bgColorHover=ededed&iconColorDefault=777777&fcDefault=454545&borderColorDefault=c5c5c5&bgTextureDefault=flat&bgColorDefault=f6f6f6&iconColorContent=444444&fcContent=333333&borderColorContent=dddddd&bgTextureContent=flat&bgColorContent=ffffff&iconColorHeader=444444&fcHeader=333333&borderColorHeader=dddddd&bgTextureHeader=flat&bgColorHeader=e9e9e9&cornerRadius=3px&fwDefault=normal&fsDefault=1em&ffDefault=Arial%2CHelvetica%2Csans-serif
5
+ * Copyright jQuery Foundation and other contributors; Licensed MIT */
6
+
7
+ .ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666}