Version Description
- Checked for WordPress 4.3 compatibility
- Updated to use Admin Notices
- Added option to hide Powered By WordPress on the TwentySomething themes
- Re-enabled Admin Toolbar if all actions were removed on the wp_footer hook
Download this release
Release Info
Developer | powerblogservice |
Plugin | Footer Putter |
Version | 1.13 |
Comparing to | |
See all releases |
Code changes from version 1.12 to 1.13
- classes/class-admin.php +152 -102
- classes/class-credits-admin.php +80 -84
- classes/class-credits-options.php +2 -1
- classes/class-credits-widgets.php +7 -3
- classes/class-credits.php +11 -4
- classes/class-dashboard.php +21 -22
- classes/class-feed-widget.php +1 -1
- classes/class-trademarks-admin.php +18 -14
- classes/class-trademarks-widgets.php +6 -4
- classes/class-utils.php +27 -10
- main.php +3 -3
- readme.txt +13 -10
- scripts/jquery.tabs.js +27 -0
- styles/admin.css +1 -1
- styles/footer-credits.css +5 -1
- styles/images/icon-32.png +0 -0
- styles/tabs.css +44 -0
- styles/tooltip.css +16 -12
classes/class-admin.php
CHANGED
@@ -7,19 +7,25 @@ abstract class Footer_Putter_Admin {
|
|
7 |
protected $screen_id;
|
8 |
private $tooltips;
|
9 |
private $tips = array();
|
|
|
10 |
|
11 |
function __construct($version, $path, $parent_slug, $slug = '') {
|
12 |
$this->version = $version;
|
13 |
$this->path = $path;
|
14 |
$this->parent_slug = $parent_slug;
|
15 |
-
|
16 |
-
$this->slug = $this->parent_slug;
|
17 |
-
else
|
18 |
-
$this->slug = $this->parent_slug.'-'.$slug;
|
19 |
$this->tooltips = new Footer_Putter_Tooltip($this->tips);
|
20 |
$this->init();
|
21 |
}
|
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
function get_screen_id(){
|
24 |
return $this->screen_id;
|
25 |
}
|
@@ -57,6 +63,16 @@ abstract class Footer_Putter_Admin {
|
|
57 |
return $this->tooltips->tip($label);
|
58 |
}
|
59 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
60 |
function plugin_action_links ( $links, $file ) {
|
61 |
if ( is_array($links) && ($this->get_path() == $file )) {
|
62 |
$settings_link = '<a href="' .$this->get_url() . '">Settings</a>';
|
@@ -78,7 +94,11 @@ abstract class Footer_Putter_Admin {
|
|
78 |
}
|
79 |
|
80 |
function register_tooltip_styles() {
|
81 |
-
|
|
|
|
|
|
|
|
|
82 |
}
|
83 |
|
84 |
function register_admin_styles() {
|
@@ -89,11 +109,6 @@ abstract class Footer_Putter_Admin {
|
|
89 |
wp_enqueue_style($this->get_code('admin'));
|
90 |
}
|
91 |
|
92 |
-
function enqueue_tooltip_styles() {
|
93 |
-
wp_enqueue_style('diy-tooltip');
|
94 |
-
wp_enqueue_style('dashicons');
|
95 |
-
}
|
96 |
-
|
97 |
function enqueue_color_picker_styles() {
|
98 |
wp_enqueue_style('wp-color-picker');
|
99 |
}
|
@@ -103,16 +118,9 @@ abstract class Footer_Putter_Admin {
|
|
103 |
add_action('admin_print_footer_scripts', array($this, 'enable_color_picker'));
|
104 |
}
|
105 |
|
106 |
-
|
107 |
-
|
108 |
-
|
109 |
-
//<![CDATA[
|
110 |
-
jQuery(document).ready( function($) {
|
111 |
-
$('.color-picker').wpColorPicker();
|
112 |
-
});
|
113 |
-
//]]>
|
114 |
-
</script>
|
115 |
-
SCRIPT;
|
116 |
}
|
117 |
|
118 |
function enqueue_postbox_scripts() {
|
@@ -122,20 +130,6 @@ SCRIPT;
|
|
122 |
add_action('admin_footer-'.$this->get_screen_id(), array($this, 'toggle_postboxes'));
|
123 |
}
|
124 |
|
125 |
-
function toggle_postboxes() {
|
126 |
-
$hook = $this->get_screen_id();
|
127 |
-
print <<< SCRIPT
|
128 |
-
<script type="text/javascript">
|
129 |
-
//<![CDATA[
|
130 |
-
jQuery(document).ready( function($) {
|
131 |
-
$('.if-js-closed').removeClass('if-js-closed').addClass('closed');
|
132 |
-
postboxes.add_postbox_toggles('{$hook}');
|
133 |
-
});
|
134 |
-
//]]>
|
135 |
-
</script>
|
136 |
-
SCRIPT;
|
137 |
-
}
|
138 |
-
|
139 |
function add_meta_box($code, $title, $callback_func, $callback_params = null, $context = 'normal', $priority = 'core', $post_type = false ) {
|
140 |
if (empty($post_type)) $post_type = $this->get_screen_id();
|
141 |
add_meta_box($this->get_code($code), __($title), array($this, $callback_func), $post_type, $context, $priority, $callback_params);
|
@@ -144,66 +138,50 @@ SCRIPT;
|
|
144 |
function form_field($id, $name, $label, $value, $type, $options = array(), $args = array(), $wrap = false) {
|
145 |
if (!$label) $label = $id;
|
146 |
$label_args = (is_array($args) && array_key_exists('label_args', $args)) ? $args['label_args'] : false;
|
147 |
-
return
|
148 |
}
|
149 |
|
150 |
-
function
|
151 |
-
|
|
|
152 |
}
|
153 |
|
154 |
-
function
|
155 |
-
$this->
|
156 |
}
|
157 |
|
158 |
-
function
|
159 |
-
|
160 |
-
$icon = empty($icon_class) ? '' : sprintf('<i class="%1$s"></i>',
|
161 |
-
'dashicons-'==substr($icon_class,0,10) ? ('dashicons '.$icon_class) : $icon_class) ;
|
162 |
-
return sprintf('<h2 class="title">%2$s%1$s</h2>', $title, $icon);
|
163 |
}
|
164 |
|
165 |
-
function
|
166 |
-
|
167 |
-
<div class="wrap">
|
168 |
-
{$title}
|
169 |
-
<div id="poststuff" class="metabox-holder has-right-sidebar">
|
170 |
-
<div id="side-info-column" class="inner-sidebar">
|
171 |
-
ADMIN_START;
|
172 |
}
|
173 |
|
174 |
-
function
|
175 |
-
|
176 |
-
$enctype = $enctype ? 'enctype="multipart/form-data" ' : '';
|
177 |
-
print <<< ADMIN_MIDDLE
|
178 |
-
</div>
|
179 |
-
<div id="post-body" class="has-sidebar"><div id="post-body-content" class="has-sidebar-content diy-wrap">
|
180 |
-
<form id="diy_options" method="post" {$enctype}action="{$this_url}">
|
181 |
-
ADMIN_MIDDLE;
|
182 |
}
|
183 |
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
{
|
190 |
-
|
191 |
-
|
192 |
-
|
|
|
|
|
|
|
193 |
}
|
194 |
|
195 |
-
|
196 |
-
|
197 |
-
$page_options = $button = '';
|
198 |
-
if ($keys) {
|
199 |
-
$keys = is_array($keys) ? implode(',', $keys) : $keys;
|
200 |
-
$page_options = sprintf('<input type="hidden" name="page_options" value="%1$s" />', $keys);
|
201 |
-
$button = $this->submit_button($button_text);
|
202 |
}
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
ADMIN_END;
|
207 |
}
|
208 |
|
209 |
function get_nonces($referer) {
|
@@ -212,14 +190,13 @@ ADMIN_END;
|
|
212 |
wp_nonce_field('meta-box-order', 'meta-box-order-nonce', false, false);
|
213 |
}
|
214 |
|
215 |
-
function submit_button($button_text='Save Changes') {
|
216 |
-
return sprintf('<input type="submit" name="
|
217 |
}
|
218 |
|
219 |
function save_options($options_class, $settings_name, $trim_option_prefix = false) {
|
220 |
-
|
221 |
$page_options = explode(",", stripslashes($_POST['page_options']));
|
222 |
-
|
223 |
if (is_array($page_options)) {
|
224 |
$options = call_user_func( array($options_class, 'get_options'));
|
225 |
$updates = false;
|
@@ -230,30 +207,25 @@ ADMIN_END;
|
|
230 |
$options[$option] = $val;
|
231 |
} //end for
|
232 |
$saved = call_user_func( array($options_class, 'save_options'), $options) ;
|
233 |
-
|
234 |
-
$
|
235 |
-
|
|
|
236 |
} else {
|
237 |
-
|
238 |
-
$message = 'settings have not been changed.';
|
239 |
}
|
240 |
-
|
241 |
-
$class='error';
|
242 |
-
$message= 'settings not found!';
|
243 |
-
}
|
244 |
-
return sprintf('<div id="message" class="%1$s"><p>%2$s %3$s</p></div>',
|
245 |
-
$class, __($settings_name), __($message));
|
246 |
}
|
247 |
|
248 |
function fetch_message() {
|
249 |
-
$message = '' ;
|
250 |
if (isset($_REQUEST['message']) && ! empty($_REQUEST['message'])) {
|
251 |
$message = urldecode($_REQUEST['message']);
|
252 |
$_SERVER['REQUEST_URI'] = remove_query_arg(array('message'), $_SERVER['REQUEST_URI']);
|
253 |
-
$
|
254 |
-
$
|
|
|
255 |
}
|
256 |
-
return
|
257 |
}
|
258 |
|
259 |
function screen_layout_columns($columns, $screen) {
|
@@ -265,12 +237,90 @@ ADMIN_END;
|
|
265 |
return $columns;
|
266 |
}
|
267 |
|
268 |
-
|
|
|
|
|
|
|
|
|
|
|
269 |
|
270 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
271 |
|
272 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
273 |
|
274 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
275 |
|
276 |
}
|
7 |
protected $screen_id;
|
8 |
private $tooltips;
|
9 |
private $tips = array();
|
10 |
+
private $messages = array();
|
11 |
|
12 |
function __construct($version, $path, $parent_slug, $slug = '') {
|
13 |
$this->version = $version;
|
14 |
$this->path = $path;
|
15 |
$this->parent_slug = $parent_slug;
|
16 |
+
$this->slug = empty($slug) ? $this->parent_slug : ( $this->parent_slug.'-'.$slug );
|
|
|
|
|
|
|
17 |
$this->tooltips = new Footer_Putter_Tooltip($this->tips);
|
18 |
$this->init();
|
19 |
}
|
20 |
|
21 |
+
abstract function init() ;
|
22 |
+
|
23 |
+
abstract function admin_menu() ;
|
24 |
+
|
25 |
+
abstract function page_content();
|
26 |
+
|
27 |
+
abstract function load_page();
|
28 |
+
|
29 |
function get_screen_id(){
|
30 |
return $this->screen_id;
|
31 |
}
|
63 |
return $this->tooltips->tip($label);
|
64 |
}
|
65 |
|
66 |
+
function print_admin_notices() {
|
67 |
+
foreach ($this->messages as $message)
|
68 |
+
print $message;
|
69 |
+
}
|
70 |
+
|
71 |
+
function add_admin_notice($subject, $message, $is_error = false) {
|
72 |
+
$this->messages[] = sprintf('<div class="notice is-dismissible %1$s"><p>%2$s %3$s</p></div>', $is_error ? 'error' : 'updated', __($subject), __($message));
|
73 |
+
add_action( 'admin_notices', array($this, 'print_admin_notices') );
|
74 |
+
}
|
75 |
+
|
76 |
function plugin_action_links ( $links, $file ) {
|
77 |
if ( is_array($links) && ($this->get_path() == $file )) {
|
78 |
$settings_link = '<a href="' .$this->get_url() . '">Settings</a>';
|
94 |
}
|
95 |
|
96 |
function register_tooltip_styles() {
|
97 |
+
Footer_Putter_Utils::register_tooltip_styles();
|
98 |
+
}
|
99 |
+
|
100 |
+
function enqueue_tooltip_styles() {
|
101 |
+
Footer_Putter_Utils::enqueue_tooltip_styles();
|
102 |
}
|
103 |
|
104 |
function register_admin_styles() {
|
109 |
wp_enqueue_style($this->get_code('admin'));
|
110 |
}
|
111 |
|
|
|
|
|
|
|
|
|
|
|
112 |
function enqueue_color_picker_styles() {
|
113 |
wp_enqueue_style('wp-color-picker');
|
114 |
}
|
118 |
add_action('admin_print_footer_scripts', array($this, 'enable_color_picker'));
|
119 |
}
|
120 |
|
121 |
+
function enqueue_metabox_scripts() {
|
122 |
+
wp_enqueue_style($this->get_code('tabs'), plugins_url('styles/tabs.css',dirname(__FILE__)), array(),$this->get_version());
|
123 |
+
wp_enqueue_script($this->get_code('tabs'), plugins_url('scripts/jquery.tabs.js',dirname(__FILE__)), array(),$this->get_version());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
124 |
}
|
125 |
|
126 |
function enqueue_postbox_scripts() {
|
130 |
add_action('admin_footer-'.$this->get_screen_id(), array($this, 'toggle_postboxes'));
|
131 |
}
|
132 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
133 |
function add_meta_box($code, $title, $callback_func, $callback_params = null, $context = 'normal', $priority = 'core', $post_type = false ) {
|
134 |
if (empty($post_type)) $post_type = $this->get_screen_id();
|
135 |
add_meta_box($this->get_code($code), __($title), array($this, $callback_func), $post_type, $context, $priority, $callback_params);
|
138 |
function form_field($id, $name, $label, $value, $type, $options = array(), $args = array(), $wrap = false) {
|
139 |
if (!$label) $label = $id;
|
140 |
$label_args = (is_array($args) && array_key_exists('label_args', $args)) ? $args['label_args'] : false;
|
141 |
+
return Genesis_Club_Utils::form_field($id, $name, $this->tooltips->tip($label, $label_args), $value, $type, $options, $args, $wrap);
|
142 |
}
|
143 |
|
144 |
+
function meta_form_field($meta, $key, $type, $options=array(), $args=array()) {
|
145 |
+
return $this->form_field( $meta[$key]['id'], $meta[$key]['name'], false,
|
146 |
+
$meta[$key]['value'], $type, $options, $args);
|
147 |
}
|
148 |
|
149 |
+
function fetch_form_field($fld, $value, $type, $options = array(), $args = array(), $wrap = false) {
|
150 |
+
return $this->form_field($fld, $fld, false, $value, $type, $options, $args, $wrap);
|
151 |
}
|
152 |
|
153 |
+
function print_form_field($fld, $value, $type, $options = array(), $args = array(), $wrap = false) {
|
154 |
+
print $this->form_field($fld, $fld, false, $value, $type, $options, $args, $wrap);
|
|
|
|
|
|
|
155 |
}
|
156 |
|
157 |
+
function fetch_text_field($fld, $value, $args = array()) {
|
158 |
+
return $this->fetch_form_field($fld, $value, 'text', array(), $args);
|
|
|
|
|
|
|
|
|
|
|
159 |
}
|
160 |
|
161 |
+
function print_text_field($fld, $value, $args = array()) {
|
162 |
+
$this->print_form_field($fld, $value, 'text', array(), $args);
|
|
|
|
|
|
|
|
|
|
|
|
|
163 |
}
|
164 |
|
165 |
+
function get_meta_form_data($metakey, $prefix, $values ) {
|
166 |
+
$content = array();
|
167 |
+
if (($post_id = Footer_Putter_Utils::get_post_id())
|
168 |
+
&& ($meta = Footer_Putter_Utils::get_meta($post_id, $metakey)))
|
169 |
+
$values = Footer_Putter_Utils::validate_options($values, $meta);
|
170 |
+
foreach ($values as $key => $val) {
|
171 |
+
$content[$key] = array();
|
172 |
+
$content[$key]['value'] = $val;
|
173 |
+
$content[$key]['id'] = $prefix.$key;
|
174 |
+
$content[$key]['name'] = $metakey. '[' . $key . ']';
|
175 |
+
}
|
176 |
+
return $content;
|
177 |
}
|
178 |
|
179 |
+
function get_newsfeeds() {
|
180 |
+
return apply_filters('footer_putter_newsfeeds', array( FOOTER_PUTTER_NEWS));
|
|
|
|
|
|
|
|
|
|
|
181 |
}
|
182 |
+
|
183 |
+
function news_panel($post,$metabox){
|
184 |
+
Footer_Putter_Feed_Widget::display_feeds($this->get_newsfeeds());
|
|
|
185 |
}
|
186 |
|
187 |
function get_nonces($referer) {
|
190 |
wp_nonce_field('meta-box-order', 'meta-box-order-nonce', false, false);
|
191 |
}
|
192 |
|
193 |
+
function submit_button($button_text='Save Changes', $name = 'options_update') {
|
194 |
+
return sprintf('<p class="save"><input type="submit" name="%1$s" value="%2$s" class="button-primary" /></p>', $name, $button_text);
|
195 |
}
|
196 |
|
197 |
function save_options($options_class, $settings_name, $trim_option_prefix = false) {
|
198 |
+
$saved = false;
|
199 |
$page_options = explode(",", stripslashes($_POST['page_options']));
|
|
|
200 |
if (is_array($page_options)) {
|
201 |
$options = call_user_func( array($options_class, 'get_options'));
|
202 |
$updates = false;
|
207 |
$options[$option] = $val;
|
208 |
} //end for
|
209 |
$saved = call_user_func( array($options_class, 'save_options'), $options) ;
|
210 |
+
if ($saved)
|
211 |
+
$this->add_admin_notice($settings_name, 'settings saved successfully.');
|
212 |
+
else
|
213 |
+
$this->add_admin_notice($settings_name, 'settings have not been changed.', true);
|
214 |
} else {
|
215 |
+
$this->add_admin_notice($settings_name, 'settings not found', true);
|
|
|
216 |
}
|
217 |
+
return $saved;
|
|
|
|
|
|
|
|
|
|
|
218 |
}
|
219 |
|
220 |
function fetch_message() {
|
|
|
221 |
if (isset($_REQUEST['message']) && ! empty($_REQUEST['message'])) {
|
222 |
$message = urldecode($_REQUEST['message']);
|
223 |
$_SERVER['REQUEST_URI'] = remove_query_arg(array('message'), $_SERVER['REQUEST_URI']);
|
224 |
+
$is_error = (strpos($message,'error') !== FALSE) || (strpos($message,'fail') !== FALSE);
|
225 |
+
$this->add_admin_notice('', $message, $is_error);
|
226 |
+
return $message;
|
227 |
}
|
228 |
+
return false;
|
229 |
}
|
230 |
|
231 |
function screen_layout_columns($columns, $screen) {
|
237 |
return $columns;
|
238 |
}
|
239 |
|
240 |
+
function admin_heading($title = '', $icon_class = '') {
|
241 |
+
if (empty($title)) $title = sprintf('%1$s %2$s', ucwords(str_replace('-',' ',$this->slug)), $this->get_version());
|
242 |
+
if (empty($icon_class)) $icon_class = GENESIS_CLUB_ICON;
|
243 |
+
$icon = sprintf('<i class="%1$s"></i>', 'dashicons-'==substr($icon_class,0,10) ? ('dashicons '.$icon_class) : $icon_class) ;
|
244 |
+
return sprintf('<h2 class="title">%2$s%1$s</h2>', $title, $icon);
|
245 |
+
}
|
246 |
|
247 |
+
function print_admin_form_start($title, $referer = false, $keys = false, $enctype = false, $with_sidebar = false, $preamble = false) {
|
248 |
+
$this_url = $_SERVER['REQUEST_URI'];
|
249 |
+
$enctype = $enctype ? 'enctype="multipart/form-data" ' : '';
|
250 |
+
$nonces = $referer ? $this->get_nonces($referer) : '';
|
251 |
+
$page_options = '';
|
252 |
+
if ($keys) {
|
253 |
+
$keys = is_array($keys) ? implode(',', $keys) : $keys;
|
254 |
+
$page_options = sprintf('<input type="hidden" name="page_options" value="%1$s" />', $keys);
|
255 |
+
}
|
256 |
+
$class = $with_sidebar ? ' columns-2' : '';
|
257 |
+
printf('<div class="wrap">%1$s<form id="diy_options" method="post" %2$saction="%3$s"><p>%4$s%5$s</p><div id="poststuff"><div id="post-body" class="metabox-holder%6$s"><div id="post-body-content">%7$s',
|
258 |
+
$title, $enctype, $this_url, $page_options, $nonces, $class, $preamble ? $preamble : '');
|
259 |
+
}
|
260 |
|
261 |
+
function print_admin_form_with_sidebar_middle() {
|
262 |
+
print '</div><div id="postbox-container-1" class="postbox-container">';
|
263 |
+
}
|
264 |
+
|
265 |
+
function print_admin_form_end() {
|
266 |
+
print '</div></div><br class="clear"/></div></form></div>';
|
267 |
+
}
|
268 |
|
269 |
+
function print_admin_form_with_sidebar($title, $referer = false, $keys = false, $enctype = false, $preamble = false) {
|
270 |
+
$this->print_admin_form_start ($title, $referer, $keys, $enctype, true, $preamble);
|
271 |
+
do_meta_boxes($this->get_screen_id(), 'normal', null);
|
272 |
+
if ($keys) print $this->submit_button();
|
273 |
+
do_meta_boxes($this->get_screen_id(), 'advanced', null);
|
274 |
+
$this->print_admin_form_with_sidebar_middle();
|
275 |
+
do_meta_boxes($this->get_screen_id(), 'side', null);
|
276 |
+
$this->print_admin_form_end();
|
277 |
+
}
|
278 |
+
|
279 |
+
function print_admin_form ($title, $referer = false, $keys = false, $enctype = false, $preamble = false) {
|
280 |
+
$this->print_admin_form_start ($title, $referer, $keys, $enctype, false, $preamble);
|
281 |
+
do_meta_boxes($this->get_screen_id(), 'normal', null);
|
282 |
+
if ($keys) print $this->submit_button();
|
283 |
+
do_meta_boxes($this->get_screen_id(), 'advanced', null);
|
284 |
+
$this->print_admin_form_end();
|
285 |
+
}
|
286 |
+
|
287 |
+
|
288 |
+
function display_metabox($tabs) {
|
289 |
+
$labels = $contents = '';
|
290 |
+
$t=0;
|
291 |
+
$tab = isset($_REQUEST['tabselect']) ? $_REQUEST['tabselect'] : 'tab1';
|
292 |
+
foreach ($tabs as $label => $content) {
|
293 |
+
$t++;
|
294 |
+
$labels .= sprintf('<li class="tab tab%1$s"><a href="#">%2$s</a></li>', $t, $label);
|
295 |
+
$contents .= sprintf('<div class="tab%1$s"><div class="tab-content">%2$s</div></div>', $t, $content);
|
296 |
+
}
|
297 |
+
printf('<div class="footer-putter-metabox"><ul class="footer-putter-metabox-tabs">%1$s</ul><div class="metabox-content">%2$s</div><input type="hidden" id="tabselect" name="tabselect" value="%3$s" /></div>', $labels, $contents, $tab);
|
298 |
+
}
|
299 |
+
|
300 |
+
function toggle_postboxes() {
|
301 |
+
$hook = $this->get_screen_id();
|
302 |
+
print <<< SCRIPT
|
303 |
+
<script type="text/javascript">
|
304 |
+
//<![CDATA[
|
305 |
+
jQuery(document).ready( function($) {
|
306 |
+
$('.if-js-closed').removeClass('if-js-closed').addClass('closed');
|
307 |
+
postboxes.add_postbox_toggles('{$hook}');
|
308 |
+
});
|
309 |
+
//]]>
|
310 |
+
</script>
|
311 |
+
SCRIPT;
|
312 |
+
}
|
313 |
+
|
314 |
+
function enable_color_picker() {
|
315 |
+
print <<< SCRIPT
|
316 |
+
<script type="text/javascript">
|
317 |
+
//<![CDATA[
|
318 |
+
jQuery(document).ready( function($) {
|
319 |
+
$('.color-picker').wpColorPicker();
|
320 |
+
});
|
321 |
+
//]]>
|
322 |
+
</script>
|
323 |
+
SCRIPT;
|
324 |
+
}
|
325 |
|
326 |
}
|
classes/class-credits-admin.php
CHANGED
@@ -2,10 +2,10 @@
|
|
2 |
class Footer_Credits_Admin extends Footer_Putter_Admin{
|
3 |
|
4 |
private $tips = array(
|
5 |
-
'owner' => array('heading' => 'Owner
|
6 |
-
|
7 |
'address' => array('heading' => 'Full Address', 'tip' => 'Enter the full address that you want to appear in the footer and the privacy and terms pages.'),
|
8 |
-
|
9 |
'locality' => array('heading' => 'Locality (City)', 'tip' => 'Enter the town or city.'),
|
10 |
'region' => array('heading' => 'State (Region)', 'tip' => 'Enter the state, province, region or county.'),
|
11 |
'postal_code' => array('heading' => 'Postal Code', 'tip' => 'Enter the postal code.'),
|
@@ -23,10 +23,11 @@ class Footer_Credits_Admin extends Footer_Putter_Admin{
|
|
23 |
'return_class' => array('heading' => 'Return To Top Class' , 'tip' => 'Add any custom class you want to apply to the Return To Top link.'),
|
24 |
'footer_class' => array('heading' => 'Footer Class' , 'tip' => 'Add any custom class you want to apply to the footer. The plugin comes with a class <i>white</i> that marks the text in the footer white. This is useful where the footer background is a dark color.'),
|
25 |
'footer_hook' => array('heading' => 'Footer Action Hook' , 'tip' => 'The hook where the footer widget area is added to the page. This field is only required if the theme does not already provide a suitable widget area where the footer widgets can be added.'),
|
26 |
-
'footer_remove' => array('heading' => 'Remove
|
27 |
'footer_filter_hook' => array('heading' => 'Footer Filter Hook' , 'tip' => 'If you want to kill off the footer created by your theme, and your theme allows you to filter the content of the footer, then enter the hook where the theme filters the footer. This may stop you getting two footers; one created by your theme and another created by this plugin.'),
|
28 |
'privacy_contact' => array('heading' => 'Add Privacy Contact?', 'tip' => 'Add a section to the end of the Privacy page with contact information'),
|
29 |
'terms_contact' => array('heading' => 'Add Terms Contact?', 'tip' => 'Add a section to the end of the Terms page with contact and legal information'),
|
|
|
30 |
);
|
31 |
|
32 |
function init() {
|
@@ -41,29 +42,19 @@ class Footer_Credits_Admin extends Footer_Putter_Admin{
|
|
41 |
|
42 |
function page_content() {
|
43 |
$title = $this->admin_heading('Footer Credits',FOOTER_PUTTER_ICON);
|
44 |
-
$this->
|
45 |
-
do_meta_boxes($this->get_screen_id(), 'side', null);
|
46 |
-
$this->print_admin_form_with_sidebar_middle();
|
47 |
-
do_meta_boxes($this->get_screen_id(), 'normal', null);
|
48 |
-
$this->print_admin_form_end(__CLASS__, $this->get_keys());
|
49 |
}
|
50 |
|
51 |
function load_page() {
|
52 |
-
|
53 |
-
$
|
54 |
-
$
|
55 |
-
$this->add_meta_box('
|
56 |
-
$this->add_meta_box('
|
57 |
-
|
58 |
-
$this->add_meta_box('legal', 'Legal Details' , 'legal_panel', $callback_params);
|
59 |
-
$this->add_meta_box('return', 'Return To Top' , 'return_panel', $callback_params);
|
60 |
-
$this->add_meta_box('example', 'Preview Footer Content' , 'preview_panel', $callback_params);
|
61 |
-
$this->add_meta_box('advanced', 'Advanced' , 'advanced_panel', $callback_params);
|
62 |
-
$this->add_meta_box('news', 'DIY Webmastery News', 'news_panel',$callback_params, 'side');
|
63 |
-
|
64 |
-
$this->set_tooltips($this->tips);
|
65 |
add_action('admin_enqueue_scripts', array($this, 'enqueue_credits_styles'));
|
66 |
add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_styles'));
|
|
|
67 |
add_action('admin_enqueue_scripts',array($this, 'enqueue_postbox_scripts'));
|
68 |
}
|
69 |
|
@@ -71,81 +62,87 @@ class Footer_Credits_Admin extends Footer_Putter_Admin{
|
|
71 |
wp_enqueue_style($this->get_code(), plugins_url('styles/footer-credits.css', dirname(__FILE__)), array(),$this->get_version());
|
72 |
}
|
73 |
|
74 |
-
function
|
75 |
-
|
76 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
77 |
|
78 |
-
function intro_panel(
|
79 |
-
$
|
80 |
-
print <<< INTRO_PANEL
|
81 |
-
<p>The following information is used in the Footer Copyright Widget and optionally at the end of the Privacy Statement and Terms and Conditions pages.</p>
|
82 |
-
{$message}
|
83 |
-
INTRO_PANEL;
|
84 |
}
|
|
|
|
|
|
|
|
|
|
|
85 |
|
86 |
-
function owner_panel($
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
$this->print_text_field('address', $terms['address'], array('size' => 80));
|
91 |
if (Footer_Credits::is_html5()) {
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
|
|
|
|
|
|
103 |
}
|
104 |
}
|
105 |
|
106 |
-
function contact_panel($
|
107 |
-
|
108 |
-
$this->
|
109 |
-
$this->
|
110 |
-
$this->
|
111 |
-
$this->
|
112 |
}
|
113 |
|
114 |
-
function legal_panel($
|
115 |
-
|
116 |
-
$this->
|
117 |
-
$this->
|
118 |
-
$this->
|
119 |
-
$this->
|
120 |
}
|
121 |
|
122 |
-
function return_panel($
|
123 |
-
$
|
124 |
-
$this->print_text_field('return_text', $options['return_text'], array('size' => 20));
|
125 |
}
|
126 |
|
127 |
-
function
|
128 |
-
$options = $metabox['args']['options'];
|
129 |
-
echo Footer_Credits::footer(array('nav_menu' => 'Footer Menu'));
|
130 |
-
}
|
131 |
-
|
132 |
-
function advanced_panel($post,$metabox) {
|
133 |
-
$options = $metabox['args']['options'];
|
134 |
$url = 'http://www.diywebmastery.com/footer-credits-compatible-themes-and-hooks';
|
135 |
-
|
136 |
<p>You can place the Copyright and Trademark widgets in any existing widget area. However, if your theme does not have a suitably located widget area in the footer then you can create one by specifying the hook
|
137 |
where the Widget Area will be located.</p>
|
138 |
<p>You may use a standard WordPress hook like <i>get_footer</i> or <i>wp_footer</i> or choose a hook that is theme-specific such as <i>twentyten_credits</i>,
|
139 |
<i>twentyeleven_credits</i>, <i>twentytwelve_credits</i>,<i>twentythirteen_credits</i> or <i>twentyfourteen_credits</i>. If you using a Genesis child theme and the theme does not have a suitable widget area then use
|
140 |
the hook <i>genesis_footer</i> or maybe <i>genesis_after</i>. See what looks best. Click for <a href="{$url}">suggestions of which hook to use for common WordPress themes</a>.</p>
|
141 |
ADVANCED_PANEL;
|
142 |
-
$this->
|
143 |
-
|
144 |
-
|
145 |
<p>If your WordPress theme supplies a filter hook rather than an action hook where it generates the footer, and you want to suppress the theme footer,
|
146 |
then specify the hook below. For example, entering <i>genesis_footer_output</i> will suppress the standard Genesis child theme footer.</p>
|
147 |
REMOVE_PANEL;
|
148 |
-
$this->
|
|
|
|
|
|
|
149 |
}
|
150 |
|
151 |
function save_credits() {
|
@@ -163,18 +160,17 @@ REMOVE_PANEL;
|
|
163 |
case 'footer_filter_hook': $options[$option] = preg_replace('/\W/','',$val); break;
|
164 |
default: $options[$option] = trim($val);
|
165 |
}
|
166 |
-
} //end for
|
167 |
-
|
168 |
-
|
169 |
-
|
170 |
-
$message = 'Footer Settings saved.';
|
171 |
-
} else
|
172 |
-
$message = 'Footer Settings have not been changed.';
|
173 |
} else {
|
174 |
-
|
175 |
-
|
176 |
}
|
177 |
-
|
|
|
|
|
178 |
}
|
179 |
|
180 |
}
|
2 |
class Footer_Credits_Admin extends Footer_Putter_Admin{
|
3 |
|
4 |
private $tips = array(
|
5 |
+
'owner' => array('heading' => 'Owner/Business Name', 'tip' => 'Enter the name of the legal entity that owns and operates the site.'),
|
6 |
+
'microdata' => array('heading' => 'Use Microdata', 'tip' => 'Markup the organization details with HTML5 microdata.'),
|
7 |
'address' => array('heading' => 'Full Address', 'tip' => 'Enter the full address that you want to appear in the footer and the privacy and terms pages.'),
|
8 |
+
'street_address' => array('heading' => 'Street Address', 'tip' => 'Enter the firat line of the address that you want to appear in the footer and the privacy and terms pages.'),
|
9 |
'locality' => array('heading' => 'Locality (City)', 'tip' => 'Enter the town or city.'),
|
10 |
'region' => array('heading' => 'State (Region)', 'tip' => 'Enter the state, province, region or county.'),
|
11 |
'postal_code' => array('heading' => 'Postal Code', 'tip' => 'Enter the postal code.'),
|
23 |
'return_class' => array('heading' => 'Return To Top Class' , 'tip' => 'Add any custom class you want to apply to the Return To Top link.'),
|
24 |
'footer_class' => array('heading' => 'Footer Class' , 'tip' => 'Add any custom class you want to apply to the footer. The plugin comes with a class <i>white</i> that marks the text in the footer white. This is useful where the footer background is a dark color.'),
|
25 |
'footer_hook' => array('heading' => 'Footer Action Hook' , 'tip' => 'The hook where the footer widget area is added to the page. This field is only required if the theme does not already provide a suitable widget area where the footer widgets can be added.'),
|
26 |
+
'footer_remove' => array('heading' => 'Remove All Actions?' , 'tip' => 'Click the checkbox to remove any other actions at the above footer hook. This may stop you getting two footers; one created by your theme and another created by this plugin. For some themes you will check this option as you will typically want to replace the theme footer by the plugin footer.'),
|
27 |
'footer_filter_hook' => array('heading' => 'Footer Filter Hook' , 'tip' => 'If you want to kill off the footer created by your theme, and your theme allows you to filter the content of the footer, then enter the hook where the theme filters the footer. This may stop you getting two footers; one created by your theme and another created by this plugin.'),
|
28 |
'privacy_contact' => array('heading' => 'Add Privacy Contact?', 'tip' => 'Add a section to the end of the Privacy page with contact information'),
|
29 |
'terms_contact' => array('heading' => 'Add Terms Contact?', 'tip' => 'Add a section to the end of the Terms page with contact and legal information'),
|
30 |
+
'hide_wordpress' => array('heading' => 'Hide WordPress link?', 'tip' => 'Hide link to WordPress.org'),
|
31 |
);
|
32 |
|
33 |
function init() {
|
42 |
|
43 |
function page_content() {
|
44 |
$title = $this->admin_heading('Footer Credits',FOOTER_PUTTER_ICON);
|
45 |
+
$this->print_admin_form_with_sidebar($title, __CLASS__, $this->get_keys());
|
|
|
|
|
|
|
|
|
46 |
}
|
47 |
|
48 |
function load_page() {
|
49 |
+
if (isset($_POST['options_update'])) $this->save_credits();
|
50 |
+
$this->add_meta_box('introduction', 'Introduction' , 'intro_panel');
|
51 |
+
$this->add_meta_box('credits', 'Footer Settings' , 'credits_panel', array ('options' => Footer_Credits_Options::get_options()));
|
52 |
+
$this->add_meta_box('example', 'Footer Preview', 'preview_panel', null, 'advanced');
|
53 |
+
$this->add_meta_box('news', 'DIY Webmastery News', 'news_panel', null, 'side');
|
54 |
+
$this->set_tooltips($this->tips);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
55 |
add_action('admin_enqueue_scripts', array($this, 'enqueue_credits_styles'));
|
56 |
add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_styles'));
|
57 |
+
add_action('admin_enqueue_scripts',array($this, 'enqueue_metabox_scripts'));
|
58 |
add_action('admin_enqueue_scripts',array($this, 'enqueue_postbox_scripts'));
|
59 |
}
|
60 |
|
62 |
wp_enqueue_style($this->get_code(), plugins_url('styles/footer-credits.css', dirname(__FILE__)), array(),$this->get_version());
|
63 |
}
|
64 |
|
65 |
+
function credits_panel($post,$metabox) {
|
66 |
+
$options = $metabox['args']['options'];
|
67 |
+
$this->display_metabox( array(
|
68 |
+
'Owner' => $this->owner_panel($options['terms']),
|
69 |
+
'Contact' => $this->contact_panel($options['terms']),
|
70 |
+
'Legal' => $this->legal_panel($options['terms']),
|
71 |
+
'Return To Top' => $this->return_panel($options),
|
72 |
+
'Advanced' => $this->advanced_panel($options)
|
73 |
+
));
|
74 |
+
}
|
75 |
|
76 |
+
function intro_panel() {
|
77 |
+
printf('<p>%1$s</p>', __('The following information is used in the Footer Copyright Widget and optionally at the end of the Privacy Statement and Terms and Conditions pages.'));
|
|
|
|
|
|
|
|
|
78 |
}
|
79 |
+
|
80 |
+
function preview_panel() {
|
81 |
+
printf('<p><i>%1$s</i></p><hr/>%2$s', __('Note: Preview is purely illustrative. Actual footer layout on the site will vary based on footer widget settings.'), Footer_Credits::footer(array('nav_menu' => 'Footer Menu')));
|
82 |
+
}
|
83 |
+
|
84 |
|
85 |
+
function owner_panel($terms) {
|
86 |
+
$s = $this->fetch_text_field('owner', $terms['owner'], array('size' =>30)) .
|
87 |
+
$this->fetch_text_field('country', $terms['country'], array('size' => 30)) .
|
88 |
+
$this->fetch_form_field('address', $terms['address'], 'textarea', array(), array('cols' => 30, 'rows' => 5));
|
|
|
89 |
if (Footer_Credits::is_html5()) {
|
90 |
+
return $s .
|
91 |
+
'<p>Leave the above address field blank and fill in the various parts of the organization address below if you want to be able to use HTML5 microdata.</p>'.
|
92 |
+
'<h4>Organization Address</h4>'.
|
93 |
+
$this->fetch_text_field('street_address', $terms['street_address'], array('size' => 30)) .
|
94 |
+
$this->fetch_text_field('locality', $terms['locality'], array('size' => 30)) .
|
95 |
+
$this->fetch_text_field('region', $terms['region'], array('size' => 30)) .
|
96 |
+
$this->fetch_text_field('postal_code', $terms['postal_code'], array('size' => 12)) .
|
97 |
+
'<h4>Geographical Co-ordinates</h4>'.
|
98 |
+
'<p>The geographical co-ordinates are optional and are visible only to the search engines.</p>' .
|
99 |
+
$this->fetch_text_field('latitude', $terms['latitude'], array('size' => 12)) .
|
100 |
+
$this->fetch_text_field('longitude', $terms['longitude'], array('size' => 12)) .
|
101 |
+
$this->fetch_text_field('map', $terms['map'], array('size' =>30));
|
102 |
+
} else {
|
103 |
+
return $s;
|
104 |
}
|
105 |
}
|
106 |
|
107 |
+
function contact_panel($terms) {
|
108 |
+
return
|
109 |
+
$this->fetch_text_field('email', $terms['email'], array('size' => 30)) .
|
110 |
+
$this->fetch_text_field('telephone', $terms['telephone'], array('size' => 30)) .
|
111 |
+
$this->fetch_form_field('privacy_contact', $terms['privacy_contact'], 'checkbox') .
|
112 |
+
$this->fetch_form_field('terms_contact', $terms['terms_contact'], 'checkbox');
|
113 |
}
|
114 |
|
115 |
+
function legal_panel($terms) {
|
116 |
+
return
|
117 |
+
$this->fetch_text_field('courts', $terms['courts'], array('size' => 80)) .
|
118 |
+
$this->fetch_text_field('updated', $terms['updated'], array('size' => 30)) .
|
119 |
+
$this->fetch_text_field('copyright_preamble', $terms['copyright_preamble'], array('size' => 30)) .
|
120 |
+
$this->fetch_text_field('copyright_start_year', $terms['copyright_start_year'], array('size' => 5));
|
121 |
}
|
122 |
|
123 |
+
function return_panel($options) {
|
124 |
+
return $this->fetch_text_field('return_text', $options['return_text'], array('size' => 20));
|
|
|
125 |
}
|
126 |
|
127 |
+
function advanced_panel($options) {
|
|
|
|
|
|
|
|
|
|
|
|
|
128 |
$url = 'http://www.diywebmastery.com/footer-credits-compatible-themes-and-hooks';
|
129 |
+
$before = <<< ADVANCED_PANEL
|
130 |
<p>You can place the Copyright and Trademark widgets in any existing widget area. However, if your theme does not have a suitably located widget area in the footer then you can create one by specifying the hook
|
131 |
where the Widget Area will be located.</p>
|
132 |
<p>You may use a standard WordPress hook like <i>get_footer</i> or <i>wp_footer</i> or choose a hook that is theme-specific such as <i>twentyten_credits</i>,
|
133 |
<i>twentyeleven_credits</i>, <i>twentytwelve_credits</i>,<i>twentythirteen_credits</i> or <i>twentyfourteen_credits</i>. If you using a Genesis child theme and the theme does not have a suitable widget area then use
|
134 |
the hook <i>genesis_footer</i> or maybe <i>genesis_after</i>. See what looks best. Click for <a href="{$url}">suggestions of which hook to use for common WordPress themes</a>.</p>
|
135 |
ADVANCED_PANEL;
|
136 |
+
$f = $this->fetch_text_field('footer_hook', $options['footer_hook'], array('size' => 30)) .
|
137 |
+
$this->fetch_form_field('footer_remove', $options['footer_remove'], 'checkbox');
|
138 |
+
$after = <<< REMOVE_PANEL
|
139 |
<p>If your WordPress theme supplies a filter hook rather than an action hook where it generates the footer, and you want to suppress the theme footer,
|
140 |
then specify the hook below. For example, entering <i>genesis_footer_output</i> will suppress the standard Genesis child theme footer.</p>
|
141 |
REMOVE_PANEL;
|
142 |
+
$hook = $this->fetch_text_field('footer_filter_hook', $options['footer_filter_hook'], array('size' => 30));
|
143 |
+
if (($theme = wp_get_theme()) && (strpos(strtolower($theme->get('Name')), 'twenty') !== FALSE))
|
144 |
+
$hook .= $this->fetch_form_field('hide_wordpress', $options['hide_wordpress'], 'checkbox');
|
145 |
+
return $before . $f . $after . $hook;
|
146 |
}
|
147 |
|
148 |
function save_credits() {
|
160 |
case 'footer_filter_hook': $options[$option] = preg_replace('/\W/','',$val); break;
|
161 |
default: $options[$option] = trim($val);
|
162 |
}
|
163 |
+
} //end for ;
|
164 |
+
$saved = Footer_Credits_Options::save_options($options) ;
|
165 |
+
$message = $saved ? 'updated successfully' : 'have not been updated';
|
166 |
+
$is_error = false;
|
|
|
|
|
|
|
167 |
} else {
|
168 |
+
$message= 'not found!';
|
169 |
+
$is_error = true;
|
170 |
}
|
171 |
+
|
172 |
+
$this->add_admin_notice('Footer Settings ', $message, $is_error);
|
173 |
+
return $saved;
|
174 |
}
|
175 |
|
176 |
}
|
classes/class-credits-options.php
CHANGED
@@ -45,7 +45,8 @@ class Footer_Credits_Options {
|
|
45 |
'footer_remove' => true,
|
46 |
'footer_filter_hook' => '',
|
47 |
'visibility' => '' ,
|
48 |
-
'use_microdata' => false
|
|
|
49 |
);
|
50 |
|
51 |
public static function init() {
|
45 |
'footer_remove' => true,
|
46 |
'footer_filter_hook' => '',
|
47 |
'visibility' => '' ,
|
48 |
+
'use_microdata' => false,
|
49 |
+
'hide_wordpress' => false
|
50 |
);
|
51 |
|
52 |
public static function init() {
|
classes/class-credits-widgets.php
CHANGED
@@ -20,7 +20,7 @@ class Footer_Putter_Copyright_Widget extends WP_Widget {
|
|
20 |
'show_return' => array('heading' => 'Show Return To Top Links', 'tip' => 'Show link to return to the top of the page'),
|
21 |
'return_class' => array('heading' => 'Return To Top', 'tip' => 'Add custom classes to apply to the return to top links'),
|
22 |
'footer_class' => array('heading' => 'Footer Credits', 'tip' => 'Add custom classes to apply to the footer menu, copyright and contact information'),
|
23 |
-
'visibility' => array('heading' => '
|
24 |
);
|
25 |
|
26 |
function get_tips() {
|
@@ -74,8 +74,10 @@ class Footer_Putter_Copyright_Widget extends WP_Widget {
|
|
74 |
|
75 |
$this->instance = wp_parse_args( (array) $instance, $this->get_defaults() );
|
76 |
$this->tooltips = new Footer_Putter_Tooltip($this->get_tips());
|
77 |
-
|
78 |
$this->print_form_field('nav_menu', 'select', $menus);
|
|
|
|
|
79 |
$this->print_form_field('center', 'checkbox');
|
80 |
$this->print_form_field('two_lines', 'checkbox');
|
81 |
$this->print_form_field('show_copyright', 'checkbox');
|
@@ -86,7 +88,7 @@ class Footer_Putter_Copyright_Widget extends WP_Widget {
|
|
86 |
if (Footer_Putter_Utils::is_html5()) $this->print_form_field('use_microdata', 'checkbox');
|
87 |
|
88 |
print <<< CUSTOM_CLASSES
|
89 |
-
<h4>Custom Classes
|
90 |
<p>Add any custom CSS classes you want apply to the footer section content to change the font color and size.</p>
|
91 |
<p>For your convenience we have defined 3 color classes <i>dark</i>, <i>light</i> and <i>white</i>, and 2 size classes,
|
92 |
<i>small</i> and <i>tiny</i>. Feel free to use these alongside your own custom CSS classes.</p>
|
@@ -94,7 +96,9 @@ CUSTOM_CLASSES;
|
|
94 |
|
95 |
$this->print_form_field('return_class', 'text', array(), array('size' => 10));
|
96 |
$this->print_form_field('footer_class', 'text', array(), array('size' => 10));
|
|
|
97 |
$this->print_form_field('visibility', 'radio', Footer_Putter_Utils::get_visibility_options(), array('separator' => '<br />'));
|
|
|
98 |
}
|
99 |
|
100 |
function print_form_field($fld, $type, $options = array(), $args = array()) {
|
20 |
'show_return' => array('heading' => 'Show Return To Top Links', 'tip' => 'Show link to return to the top of the page'),
|
21 |
'return_class' => array('heading' => 'Return To Top', 'tip' => 'Add custom classes to apply to the return to top links'),
|
22 |
'footer_class' => array('heading' => 'Footer Credits', 'tip' => 'Add custom classes to apply to the footer menu, copyright and contact information'),
|
23 |
+
'visibility' => array('heading' => 'Show or Hide', 'tip' => 'Determine on which pages the footer widget is displayed'),
|
24 |
);
|
25 |
|
26 |
function get_tips() {
|
74 |
|
75 |
$this->instance = wp_parse_args( (array) $instance, $this->get_defaults() );
|
76 |
$this->tooltips = new Footer_Putter_Tooltip($this->get_tips());
|
77 |
+
print '<div class="diy-wrap">';
|
78 |
$this->print_form_field('nav_menu', 'select', $menus);
|
79 |
+
print ('<hr/><h4>Options</h4>');
|
80 |
+
|
81 |
$this->print_form_field('center', 'checkbox');
|
82 |
$this->print_form_field('two_lines', 'checkbox');
|
83 |
$this->print_form_field('show_copyright', 'checkbox');
|
88 |
if (Footer_Putter_Utils::is_html5()) $this->print_form_field('use_microdata', 'checkbox');
|
89 |
|
90 |
print <<< CUSTOM_CLASSES
|
91 |
+
<hr/><h4>Custom Classes</h4>
|
92 |
<p>Add any custom CSS classes you want apply to the footer section content to change the font color and size.</p>
|
93 |
<p>For your convenience we have defined 3 color classes <i>dark</i>, <i>light</i> and <i>white</i>, and 2 size classes,
|
94 |
<i>small</i> and <i>tiny</i>. Feel free to use these alongside your own custom CSS classes.</p>
|
96 |
|
97 |
$this->print_form_field('return_class', 'text', array(), array('size' => 10));
|
98 |
$this->print_form_field('footer_class', 'text', array(), array('size' => 10));
|
99 |
+
print ('<hr/><h4>Widget Presence</h4>');
|
100 |
$this->print_form_field('visibility', 'radio', Footer_Putter_Utils::get_visibility_options(), array('separator' => '<br />'));
|
101 |
+
print '</div>';
|
102 |
}
|
103 |
|
104 |
function print_form_field($fld, $type, $options = array(), $args = array()) {
|
classes/class-credits.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
|
3 |
class Footer_Credits {
|
4 |
|
5 |
-
|
6 |
const SIDEBAR_ID = 'last-footer';
|
7 |
|
8 |
public static function init() {
|
@@ -50,7 +50,13 @@ class Footer_Credits {
|
|
50 |
|
51 |
//insert custom footer at specified hook
|
52 |
if ($footer_hook = $options['footer_hook']) {
|
53 |
-
if ($options['footer_remove'])
|
|
|
|
|
|
|
|
|
|
|
|
|
54 |
add_action( $footer_hook, array(__CLASS__, 'custom_footer'));
|
55 |
}
|
56 |
|
@@ -252,12 +258,13 @@ class Footer_Credits {
|
|
252 |
|
253 |
public static function custom_footer() {
|
254 |
if ( is_active_sidebar( self::SIDEBAR_ID) ) {
|
|
|
255 |
if (self::is_html5()) {
|
256 |
-
|
257 |
dynamic_sidebar( self::SIDEBAR_ID );
|
258 |
echo '</footer><!-- end .custom-footer -->';
|
259 |
} else {
|
260 |
-
|
261 |
dynamic_sidebar( self::SIDEBAR_ID );
|
262 |
echo '</div><!-- end .custom-footer -->';
|
263 |
}
|
2 |
|
3 |
class Footer_Credits {
|
4 |
|
5 |
+
const CODE = 'footer-credits'; //shortcode prefix
|
6 |
const SIDEBAR_ID = 'last-footer';
|
7 |
|
8 |
public static function init() {
|
50 |
|
51 |
//insert custom footer at specified hook
|
52 |
if ($footer_hook = $options['footer_hook']) {
|
53 |
+
if ($options['footer_remove']) {
|
54 |
+
remove_all_actions( $footer_hook);
|
55 |
+
if ($footer_hook =='wp_footer') {
|
56 |
+
add_action( 'wp_footer', 'wp_print_footer_scripts', 20); //put back the footer scripts
|
57 |
+
add_action( 'wp_footer', 'wp_admin_bar_render', 1000 ); //put back the admin bar
|
58 |
+
}
|
59 |
+
}
|
60 |
add_action( $footer_hook, array(__CLASS__, 'custom_footer'));
|
61 |
}
|
62 |
|
258 |
|
259 |
public static function custom_footer() {
|
260 |
if ( is_active_sidebar( self::SIDEBAR_ID) ) {
|
261 |
+
$class = 'custom-footer'. (Footer_Credits_Options::get_option('hide_wordpress') ? ' hide-wordpress' :'');
|
262 |
if (self::is_html5()) {
|
263 |
+
printf('<footer class="%1$s" role="contentinfo" itemscope="itemscope" itemtype="http://schema.org/WPFooter">', $class);
|
264 |
dynamic_sidebar( self::SIDEBAR_ID );
|
265 |
echo '</footer><!-- end .custom-footer -->';
|
266 |
} else {
|
267 |
+
printf('<div class="%1$s">', $class);
|
268 |
dynamic_sidebar( self::SIDEBAR_ID );
|
269 |
echo '</div><!-- end .custom-footer -->';
|
270 |
}
|
classes/class-dashboard.php
CHANGED
@@ -18,26 +18,30 @@ class Footer_Putter_Dashboard extends Footer_Putter_Admin {
|
|
18 |
}
|
19 |
|
20 |
function page_content() {
|
21 |
-
$title = $this->admin_heading('Footer Putter', FOOTER_PUTTER_ICON);
|
22 |
-
$this->
|
23 |
-
do_meta_boxes($this->get_screen_id(), 'side', null);
|
24 |
-
$this->print_admin_form_with_sidebar_middle();
|
25 |
-
do_meta_boxes($this->get_screen_id(), 'normal', null);
|
26 |
-
$this->print_admin_form_end(__CLASS__);
|
27 |
}
|
28 |
|
29 |
function load_page() {
|
30 |
$this->add_tooltip_support();
|
31 |
add_action('admin_enqueue_scripts', array($this, 'register_admin_styles'));
|
32 |
add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_styles'));
|
|
|
33 |
add_action('admin_enqueue_scripts', array($this, 'enqueue_postbox_scripts'));
|
34 |
$this->add_meta_box('intro', 'Introduction', 'intro_panel');
|
35 |
-
$this->add_meta_box('
|
36 |
-
$this->add_meta_box('instructions', 'Instructions', 'instructions_panel');
|
37 |
-
$this->add_meta_box('hooks', 'Footer Hook', 'hooks_panel');
|
38 |
-
$this->add_meta_box('links', 'Useful Links', 'links_panel', null, 'side');
|
39 |
$this->add_meta_box('news', 'DIY Webmastery News', 'news_panel', null, 'side');
|
40 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
41 |
|
42 |
function intro_panel() {
|
43 |
$plugin = FOOTER_PUTTER_FRIENDLY_NAME;
|
@@ -57,13 +61,14 @@ INTRO_PANEL;
|
|
57 |
}
|
58 |
|
59 |
function widgets_panel() {
|
60 |
-
|
61 |
<p>The plugins define two widgets:
|
62 |
<ol>
|
63 |
<li>a <b>Footer Copyright Widget</b> that places a line at the foot of your site containing as many of the items listed above that you want to disclose.</li>
|
64 |
<li>a <b>Trademarks Widget</b> that displays a line of trademarks that you have previously set up as "Links".
|
65 |
</ol></p>
|
66 |
<p>Typically you will drag both widgets into the Custom Footer Widget Area.</p>
|
|
|
67 |
WIDGETS_PANEL;
|
68 |
}
|
69 |
|
@@ -72,7 +77,7 @@ WIDGETS_PANEL;
|
|
72 |
$widgets_url = admin_url('widgets.php');
|
73 |
$credits_url = Footer_Putter_Plugin::get_link_url('credits');
|
74 |
$trademarks_url = Footer_Putter_Plugin::get_link_url('trademarks');
|
75 |
-
|
76 |
<h4>Create Standard Pages And Footer Menu</h4>
|
77 |
<ol>
|
78 |
<li>Create a <i>Privacy Policy</i> page with the slug/permalink <em>privacy</em>, choose a page template with no sidebar.</li>
|
@@ -80,7 +85,7 @@ WIDGETS_PANEL;
|
|
80 |
<li>Create a <i>Contact</i> page with a contact form.</li>
|
81 |
<li>Create an <i>About</i> page, with information either about the site or about its owner.</li>
|
82 |
<li>If the site is selling an information product you may want to create a <i>Disclaimer</i> page, regarding any claims about the product performance.</li>
|
83 |
-
<li>Create a WordPress menu called <i>Footer Menu</i>
|
84 |
</ol>
|
85 |
<h4>Update Business Information</h4>
|
86 |
<ol>
|
@@ -110,19 +115,17 @@ INSTRUCTIONS_PANEL;
|
|
110 |
function hooks_panel() {
|
111 |
$home_url = FOOTER_PUTTER_HOME_URL;
|
112 |
$plugin = FOOTER_PUTTER_FRIENDLY_NAME;
|
113 |
-
|
114 |
-
|
115 |
<p>The footer hook is only required if your theme does not already have a footer widget area into which you can drag the two widgets.</p>
|
116 |
<p>For some themes, the footer hook is left blank, for others use a WordPress hook such as <i>get_footer</i> or <i>wp_footer</i>,
|
117 |
-
or use a theme-specific hook such as <i>
|
118 |
-
<i>twentythirteen_credits</i>, <i>twentyfourteen_credits</i>, <i>genesis_footer</i>, <i>pagelines_leaf</i>, etc.</p>
|
119 |
<p>Check out the <a href="{$home_url}">{$plugin} page</a> for more information about the plugin.</p>
|
120 |
HOOKS_PANEL;
|
121 |
}
|
122 |
|
123 |
function links_panel() {
|
124 |
$home = FOOTER_PUTTER_HOME_URL;
|
125 |
-
|
126 |
<ul>
|
127 |
<li><a rel="external" href="{$home}">Footer Putter Plugin Home</a></li>
|
128 |
<li><a rel="external" href="http://www.diywebmastery.com/footer-credits-compatible-themes-and-hooks/">Themes and Recommended Footer Hooks</a></li>
|
@@ -132,8 +135,4 @@ HOOKS_PANEL;
|
|
132 |
LINKS_PANEL;
|
133 |
}
|
134 |
|
135 |
-
function news_panel($post,$metabox){
|
136 |
-
Footer_Putter_Feed_Widget::display_feeds();
|
137 |
-
}
|
138 |
-
|
139 |
}
|
18 |
}
|
19 |
|
20 |
function page_content() {
|
21 |
+
$title = $this->admin_heading('Footer Putter v'. $this->get_version(), FOOTER_PUTTER_ICON);
|
22 |
+
$this->print_admin_form_with_sidebar($title, __CLASS__);
|
|
|
|
|
|
|
|
|
23 |
}
|
24 |
|
25 |
function load_page() {
|
26 |
$this->add_tooltip_support();
|
27 |
add_action('admin_enqueue_scripts', array($this, 'register_admin_styles'));
|
28 |
add_action('admin_enqueue_scripts', array($this, 'enqueue_admin_styles'));
|
29 |
+
add_action('admin_enqueue_scripts', array($this, 'enqueue_metabox_scripts'));
|
30 |
add_action('admin_enqueue_scripts', array($this, 'enqueue_postbox_scripts'));
|
31 |
$this->add_meta_box('intro', 'Introduction', 'intro_panel');
|
32 |
+
$this->add_meta_box('details','Details', 'footer_panel');
|
|
|
|
|
|
|
33 |
$this->add_meta_box('news', 'DIY Webmastery News', 'news_panel', null, 'side');
|
34 |
}
|
35 |
+
|
36 |
+
function footer_panel() {
|
37 |
+
$this->display_metabox( array(
|
38 |
+
'Widgets' => $this->widgets_panel(),
|
39 |
+
'Instructions' => $this->instructions_panel(),
|
40 |
+
'Footer Hook' => $this->hooks_panel(),
|
41 |
+
'Useful Links' => $this->links_panel()
|
42 |
+
));
|
43 |
+
}
|
44 |
+
|
45 |
|
46 |
function intro_panel() {
|
47 |
$plugin = FOOTER_PUTTER_FRIENDLY_NAME;
|
61 |
}
|
62 |
|
63 |
function widgets_panel() {
|
64 |
+
return <<< WIDGETS_PANEL
|
65 |
<p>The plugins define two widgets:
|
66 |
<ol>
|
67 |
<li>a <b>Footer Copyright Widget</b> that places a line at the foot of your site containing as many of the items listed above that you want to disclose.</li>
|
68 |
<li>a <b>Trademarks Widget</b> that displays a line of trademarks that you have previously set up as "Links".
|
69 |
</ol></p>
|
70 |
<p>Typically you will drag both widgets into the Custom Footer Widget Area.</p>
|
71 |
+
<p>The widgets have settings that allow you to control both the footer content and the layout, and also whether or not the widgets appear at all on landing pages.</p>
|
72 |
WIDGETS_PANEL;
|
73 |
}
|
74 |
|
77 |
$widgets_url = admin_url('widgets.php');
|
78 |
$credits_url = Footer_Putter_Plugin::get_link_url('credits');
|
79 |
$trademarks_url = Footer_Putter_Plugin::get_link_url('trademarks');
|
80 |
+
return <<< INSTRUCTIONS_PANEL
|
81 |
<h4>Create Standard Pages And Footer Menu</h4>
|
82 |
<ol>
|
83 |
<li>Create a <i>Privacy Policy</i> page with the slug/permalink <em>privacy</em>, choose a page template with no sidebar.</li>
|
85 |
<li>Create a <i>Contact</i> page with a contact form.</li>
|
86 |
<li>Create an <i>About</i> page, with information either about the site or about its owner.</li>
|
87 |
<li>If the site is selling an information product you may want to create a <i>Disclaimer</i> page, regarding any claims about the product performance.</li>
|
88 |
+
<li>Create a WordPress menu called <i>Footer Menu</i> and add the above pages to the footer menu.</li>
|
89 |
</ol>
|
90 |
<h4>Update Business Information</h4>
|
91 |
<ol>
|
115 |
function hooks_panel() {
|
116 |
$home_url = FOOTER_PUTTER_HOME_URL;
|
117 |
$plugin = FOOTER_PUTTER_FRIENDLY_NAME;
|
118 |
+
return <<< HOOKS_PANEL
|
|
|
119 |
<p>The footer hook is only required if your theme does not already have a footer widget area into which you can drag the two widgets.</p>
|
120 |
<p>For some themes, the footer hook is left blank, for others use a WordPress hook such as <i>get_footer</i> or <i>wp_footer</i>,
|
121 |
+
or use a theme-specific hook such as <i>twentytfourteen_credits</i>, <i>twentyfifteen_credits</i>, <i>genesis_footer</i>, <i>pagelines_leaf</i>, etc.</p>
|
|
|
122 |
<p>Check out the <a href="{$home_url}">{$plugin} page</a> for more information about the plugin.</p>
|
123 |
HOOKS_PANEL;
|
124 |
}
|
125 |
|
126 |
function links_panel() {
|
127 |
$home = FOOTER_PUTTER_HOME_URL;
|
128 |
+
return <<< LINKS_PANEL
|
129 |
<ul>
|
130 |
<li><a rel="external" href="{$home}">Footer Putter Plugin Home</a></li>
|
131 |
<li><a rel="external" href="http://www.diywebmastery.com/footer-credits-compatible-themes-and-hooks/">Themes and Recommended Footer Hooks</a></li>
|
135 |
LINKS_PANEL;
|
136 |
}
|
137 |
|
|
|
|
|
|
|
|
|
138 |
}
|
classes/class-feed-widget.php
CHANGED
@@ -5,7 +5,7 @@ if (!class_exists('Footer_Putter_Feed_Widget')) {
|
|
5 |
function __construct() {
|
6 |
$widget_ops = array( 'description' => __('Displays Featured image in place of title in any RSS or Atom feed.') );
|
7 |
$control_ops = array( 'width' => 400, 'height' => 200 );
|
8 |
-
parent::__construct( '
|
9 |
}
|
10 |
|
11 |
function widget($args, $instance) {
|
5 |
function __construct() {
|
6 |
$widget_ops = array( 'description' => __('Displays Featured image in place of title in any RSS or Atom feed.') );
|
7 |
$control_ops = array( 'width' => 400, 'height' => 200 );
|
8 |
+
parent::__construct( 'footer-putter-feed', __('Footer Putter Feed'), $widget_ops, $control_ops );
|
9 |
}
|
10 |
|
11 |
function widget($args, $instance) {
|
classes/class-trademarks-admin.php
CHANGED
@@ -14,23 +14,27 @@ class Footer_Trademarks_Admin extends Footer_Putter_Admin{
|
|
14 |
|
15 |
public function page_content() {
|
16 |
$title = $this->admin_heading('Footer Trademarks', FOOTER_PUTTER_ICON);
|
17 |
-
$this->
|
18 |
-
do_meta_boxes($this->get_screen_id(), 'side', null);
|
19 |
-
$this->print_admin_form_with_sidebar_middle();
|
20 |
-
do_meta_boxes($this->get_screen_id(), 'normal', null);
|
21 |
-
$this->print_admin_form_end(__CLASS__);
|
22 |
}
|
23 |
|
24 |
public function load_page() {
|
25 |
$this->add_tooltip_support();
|
26 |
add_action ('admin_enqueue_scripts',array($this, 'enqueue_admin_styles'));
|
|
|
27 |
add_action ('admin_enqueue_scripts',array($this, 'enqueue_postbox_scripts'));
|
28 |
$this->add_meta_box('intro', 'Instructions', 'intro_panel');
|
29 |
-
$this->add_meta_box('
|
30 |
-
$this->add_meta_box('screenshots','Screenshots', 'screenshots_panel');
|
31 |
$this->add_meta_box('news', 'DIY Webmastery News', 'news_panel',null, 'side');
|
32 |
}
|
33 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
public function intro_panel() {
|
35 |
$linkcat = admin_url('edit-tags.php?taxonomy=link_category');
|
36 |
$addlink = admin_url('link-add.php');
|
@@ -48,24 +52,24 @@ INTRO;
|
|
48 |
}
|
49 |
|
50 |
public function tips_panel() {
|
51 |
-
|
52 |
<h4>Image File Size</h4>
|
53 |
-
<p>The plugin uses
|
54 |
-
<p>For a consistent layout make sure all images are the same height. A typical height will be of the order of 50px to 100px depending on how
|
55 |
<h4>Image File Type</h4>
|
56 |
-
<p>If your
|
57 |
TIPS;
|
58 |
}
|
59 |
|
60 |
public function screenshots_panel() {
|
61 |
$img1 = plugins_url('images/add-link-category.jpg',dirname(__FILE__));
|
62 |
$img2 = plugins_url('images/add-link.jpg',dirname(__FILE__));
|
63 |
-
|
64 |
<p>Below are annotated screenshots of creating the link category and adding a link .
|
65 |
<h4>Add A Link Category</h4>
|
66 |
-
<p><img src="{$img1}" alt="Screenshot of adding a trademark link category" /></p>
|
67 |
<h4>Add A Link</h4>
|
68 |
-
<p><img src="{$img2}" alt="Screenshot of adding a trademark link " /></p>
|
69 |
SCREENSHOTS;
|
70 |
}
|
71 |
|
14 |
|
15 |
public function page_content() {
|
16 |
$title = $this->admin_heading('Footer Trademarks', FOOTER_PUTTER_ICON);
|
17 |
+
$this->print_admin_form_with_sidebar($title, __CLASS__);
|
|
|
|
|
|
|
|
|
18 |
}
|
19 |
|
20 |
public function load_page() {
|
21 |
$this->add_tooltip_support();
|
22 |
add_action ('admin_enqueue_scripts',array($this, 'enqueue_admin_styles'));
|
23 |
+
add_action ('admin_enqueue_scripts',array($this, 'enqueue_metabox_scripts'));
|
24 |
add_action ('admin_enqueue_scripts',array($this, 'enqueue_postbox_scripts'));
|
25 |
$this->add_meta_box('intro', 'Instructions', 'intro_panel');
|
26 |
+
$this->add_meta_box('trademarks', 'Trademarks', 'trademarks_panel');
|
|
|
27 |
$this->add_meta_box('news', 'DIY Webmastery News', 'news_panel',null, 'side');
|
28 |
}
|
29 |
|
30 |
+
function trademarks_panel() {
|
31 |
+
$this->display_metabox( array(
|
32 |
+
'Tips' => $this->tips_panel(),
|
33 |
+
'Screenshots' => $this->screenshots_panel()
|
34 |
+
));
|
35 |
+
}
|
36 |
+
|
37 |
+
|
38 |
public function intro_panel() {
|
39 |
$linkcat = admin_url('edit-tags.php?taxonomy=link_category');
|
40 |
$addlink = admin_url('link-add.php');
|
52 |
}
|
53 |
|
54 |
public function tips_panel() {
|
55 |
+
return <<< TIPS
|
56 |
<h4>Image File Size</h4>
|
57 |
+
<p>The plugin uses each trademark image "as is" so you need to provide trademark images that are suitably sized. </p>
|
58 |
+
<p>For a consistent layout make sure all images are the same height. A typical height will be of the order of 50px to 100px depending on how prominently you want them to feature.</p>
|
59 |
<h4>Image File Type</h4>
|
60 |
+
<p>If your trademark images are JPG files on a white background, and your footer has a white background then using JPGs will be fine. Otherwise your footer look better if you use PNG files that have a transparent background</p>
|
61 |
TIPS;
|
62 |
}
|
63 |
|
64 |
public function screenshots_panel() {
|
65 |
$img1 = plugins_url('images/add-link-category.jpg',dirname(__FILE__));
|
66 |
$img2 = plugins_url('images/add-link.jpg',dirname(__FILE__));
|
67 |
+
return <<< SCREENSHOTS
|
68 |
<p>Below are annotated screenshots of creating the link category and adding a link .
|
69 |
<h4>Add A Link Category</h4>
|
70 |
+
<p><img class="dashed-border" src="{$img1}" alt="Screenshot of adding a trademark link category" /></p>
|
71 |
<h4>Add A Link</h4>
|
72 |
+
<p><img class="dashed-border" src="{$img2}" alt="Screenshot of adding a trademark link " /></p>
|
73 |
SCREENSHOTS;
|
74 |
}
|
75 |
|
classes/class-trademarks-widgets.php
CHANGED
@@ -8,10 +8,10 @@ class Footer_Putter_Trademark_Widget extends WP_Widget {
|
|
8 |
private $tips = array(
|
9 |
'title' => array('heading' => 'Title', 'tip' => 'Widget Title'),
|
10 |
'category' => array('heading' => 'Category', 'tip' => 'Select Link Category for Your Trademarks'),
|
11 |
-
'limit' => array('heading' => '
|
12 |
'orderby' => array('heading' => 'Order By', 'tip' => 'Sort by name, rating, ID or random'),
|
13 |
'nofollow' => array('heading' => 'Make Links Nofollow', 'tip' => 'Mark the links with rel=nofollow'),
|
14 |
-
'visibility' => array('heading' => '
|
15 |
);
|
16 |
|
17 |
private $defaults = array( 'title' => '',
|
@@ -101,7 +101,7 @@ class Footer_Putter_Trademark_Widget extends WP_Widget {
|
|
101 |
function form( $instance ) {
|
102 |
$this->instance = wp_parse_args( (array) $instance, $this->get_defaults() );
|
103 |
$this->tooltips = new Footer_Putter_Tooltip($this->get_tips());
|
104 |
-
|
105 |
$links = array();
|
106 |
$link_cats = get_terms( 'link_category' );
|
107 |
foreach ( $link_cats as $link_cat ) {
|
@@ -118,8 +118,10 @@ class Footer_Putter_Trademark_Widget extends WP_Widget {
|
|
118 |
));
|
119 |
$this->print_form_field('limit', 'text', array(), array('size' => 3 ,'maxlength' => 3));
|
120 |
$this->print_form_field('nofollow', 'checkbox');
|
121 |
-
|
|
|
122 |
Footer_Putter_Utils::get_visibility_options(), array('separator' => '<br />'));
|
|
|
123 |
}
|
124 |
|
125 |
function print_form_field ($fld, $type, $options = array(), $args = array()) {
|
8 |
private $tips = array(
|
9 |
'title' => array('heading' => 'Title', 'tip' => 'Widget Title'),
|
10 |
'category' => array('heading' => 'Category', 'tip' => 'Select Link Category for Your Trademarks'),
|
11 |
+
'limit' => array('heading' => '# of links', 'tip' => 'Number of trademarks to show'),
|
12 |
'orderby' => array('heading' => 'Order By', 'tip' => 'Sort by name, rating, ID or random'),
|
13 |
'nofollow' => array('heading' => 'Make Links Nofollow', 'tip' => 'Mark the links with rel=nofollow'),
|
14 |
+
'visibility' => array('heading' => 'Show or Hide', 'tip' => 'Determine on which pages the footer widget is displayed'),
|
15 |
);
|
16 |
|
17 |
private $defaults = array( 'title' => '',
|
101 |
function form( $instance ) {
|
102 |
$this->instance = wp_parse_args( (array) $instance, $this->get_defaults() );
|
103 |
$this->tooltips = new Footer_Putter_Tooltip($this->get_tips());
|
104 |
+
print '<div class="diy-wrap">';
|
105 |
$links = array();
|
106 |
$link_cats = get_terms( 'link_category' );
|
107 |
foreach ( $link_cats as $link_cat ) {
|
118 |
));
|
119 |
$this->print_form_field('limit', 'text', array(), array('size' => 3 ,'maxlength' => 3));
|
120 |
$this->print_form_field('nofollow', 'checkbox');
|
121 |
+
print ('<hr/><h4>Widget Presence</h4>');
|
122 |
+
$this->print_form_field('visibility', 'radio',
|
123 |
Footer_Putter_Utils::get_visibility_options(), array('separator' => '<br />'));
|
124 |
+
print '</div>';
|
125 |
}
|
126 |
|
127 |
function print_form_field ($fld, $type, $options = array(), $args = array()) {
|
classes/class-utils.php
CHANGED
@@ -9,10 +9,6 @@ class Footer_Putter_Utils {
|
|
9 |
return self::$is_html5;
|
10 |
}
|
11 |
|
12 |
-
static function is_genesis2() {
|
13 |
-
return function_exists('genesis_html5') ;
|
14 |
-
}
|
15 |
-
|
16 |
static function get_post_id() {
|
17 |
global $post;
|
18 |
|
@@ -42,8 +38,8 @@ class Footer_Putter_Utils {
|
|
42 |
static function get_meta ($post_id, $key) {
|
43 |
if ($post_id && $key
|
44 |
&& ($meta = get_post_meta($post_id, $key, true))
|
45 |
-
&& ($options = @unserialize($meta))
|
46 |
-
&& is_array($options))
|
47 |
return $options;
|
48 |
else
|
49 |
return false;
|
@@ -90,7 +86,7 @@ class Footer_Putter_Utils {
|
|
90 |
'show_landing' => 'Show only on landing pages');
|
91 |
}
|
92 |
|
93 |
-
static function selector($fld_id, $fld_name, $value, $options) {
|
94 |
$input = '';
|
95 |
if (is_array($options)) {
|
96 |
foreach ($options as $optkey => $optlabel)
|
@@ -99,7 +95,7 @@ class Footer_Putter_Utils {
|
|
99 |
} else {
|
100 |
$input = $options;
|
101 |
}
|
102 |
-
return sprintf('<select id="%1$s" name="%2$s">%3$s</select>', $fld_id, $fld_name, $input);
|
103 |
}
|
104 |
|
105 |
static function form_field($fld_id, $fld_name, $label, $value, $type, $options = array(), $args = array(), $wrap = false) {
|
@@ -143,10 +139,22 @@ class Footer_Putter_Utils {
|
|
143 |
$fld_id, $fld_name, str_replace('\'','"',checked($optkey, $value, false)), $optkey, $optlabel, $separator);
|
144 |
$input = sprintf('<fieldset class="diy-fieldset">%1$s</fieldset>',$input);
|
145 |
} else {
|
146 |
-
$input .= sprintf('<input type="checkbox" class="checkbox" id="%1$s" name="%2$s" %3$svalue="1"/>',
|
147 |
$fld_id, $fld_name, checked($value, '1', false));
|
148 |
}
|
149 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
150 |
case 'radio':
|
151 |
if (is_array($options) && (count($options) > 0)) {
|
152 |
if (isset($legend))
|
@@ -159,7 +167,7 @@ class Footer_Putter_Utils {
|
|
159 |
}
|
160 |
break;
|
161 |
case 'select':
|
162 |
-
$input = self::selector($fld_id, $fld_name, $value, $options);
|
163 |
break;
|
164 |
case 'hidden': return sprintf('<input type="hidden" name="%1$s" value="%2$s" />', $fld_name, $value);
|
165 |
default: $input = $value;
|
@@ -173,5 +181,14 @@ class Footer_Putter_Utils {
|
|
173 |
}
|
174 |
return sprintf($format, $label, $input);
|
175 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
176 |
|
177 |
}
|
9 |
return self::$is_html5;
|
10 |
}
|
11 |
|
|
|
|
|
|
|
|
|
12 |
static function get_post_id() {
|
13 |
global $post;
|
14 |
|
38 |
static function get_meta ($post_id, $key) {
|
39 |
if ($post_id && $key
|
40 |
&& ($meta = get_post_meta($post_id, $key, true))
|
41 |
+
&& ($options = (is_serialized($meta) ? @unserialize($meta) : $meta))
|
42 |
+
&& (is_array($options) || is_string($options)))
|
43 |
return $options;
|
44 |
else
|
45 |
return false;
|
86 |
'show_landing' => 'Show only on landing pages');
|
87 |
}
|
88 |
|
89 |
+
static function selector($fld_id, $fld_name, $value, $options, $multiple = false) {
|
90 |
$input = '';
|
91 |
if (is_array($options)) {
|
92 |
foreach ($options as $optkey => $optlabel)
|
95 |
} else {
|
96 |
$input = $options;
|
97 |
}
|
98 |
+
return sprintf('<select id="%1$s" name="%2$s"%4$s>%3$s</select>', $fld_id, $fld_name, $input, $multiple ? ' multiple':'');
|
99 |
}
|
100 |
|
101 |
static function form_field($fld_id, $fld_name, $label, $value, $type, $options = array(), $args = array(), $wrap = false) {
|
139 |
$fld_id, $fld_name, str_replace('\'','"',checked($optkey, $value, false)), $optkey, $optlabel, $separator);
|
140 |
$input = sprintf('<fieldset class="diy-fieldset">%1$s</fieldset>',$input);
|
141 |
} else {
|
142 |
+
$input .= sprintf('<input type="checkbox" class="checkbox" id="%1$s" name="%2$s" %3$svalue="1" class="diy-checkbox" />',
|
143 |
$fld_id, $fld_name, checked($value, '1', false));
|
144 |
}
|
145 |
break;
|
146 |
+
|
147 |
+
case 'checkboxes':
|
148 |
+
$values = (array) $value;
|
149 |
+
$options = (array) $options;
|
150 |
+
if (isset($legend))
|
151 |
+
$input .= sprintf('<legend class="screen-reader-text"><span>%1$s</span></legend>', $legend);
|
152 |
+
foreach ($options as $optkey => $optlabel)
|
153 |
+
$input .= sprintf('<li><input type="checkbox" id="%1$s" name="%2$s[]" %3$s value="%4$s" /><label for="%1$s">%5$s</label></li>',
|
154 |
+
$fld_id, $fld_name, in_array($optkey, $values) ? 'checked="checked"' : '', $optkey, $optlabel);
|
155 |
+
$input = sprintf('<fieldset class="diy-fieldset%2$s"><ul>%1$s</ul></fieldset>',$input, isset($class) ? (' '.$class) : '');
|
156 |
+
|
157 |
+
break;
|
158 |
case 'radio':
|
159 |
if (is_array($options) && (count($options) > 0)) {
|
160 |
if (isset($legend))
|
167 |
}
|
168 |
break;
|
169 |
case 'select':
|
170 |
+
$input = self::selector($fld_id, $fld_name, $value, $options, isset($multiple));
|
171 |
break;
|
172 |
case 'hidden': return sprintf('<input type="hidden" name="%1$s" value="%2$s" />', $fld_name, $value);
|
173 |
default: $input = $value;
|
181 |
}
|
182 |
return sprintf($format, $label, $input);
|
183 |
}
|
184 |
+
|
185 |
+
static function register_tooltip_styles() {
|
186 |
+
wp_register_style('diy-tooltip', plugins_url('styles/tooltip.css',dirname(__FILE__)), array(), null);
|
187 |
+
}
|
188 |
+
|
189 |
+
static function enqueue_tooltip_styles() {
|
190 |
+
wp_enqueue_style('diy-tooltip');
|
191 |
+
wp_enqueue_style('dashicons');
|
192 |
+
}
|
193 |
|
194 |
}
|
main.php
CHANGED
@@ -3,20 +3,20 @@
|
|
3 |
* Plugin Name: Footer Putter
|
4 |
* Plugin URI: http://www.diywebmastery.com/plugins/footer-putter/
|
5 |
* Description: Put a footer on your site that boosts your credibility with both search engines and human visitors.
|
6 |
-
* Version: 1.
|
7 |
* Author: Russell Jamieson
|
8 |
* Author URI: http://www.diywebmastery.com/about/
|
9 |
* License: GPLv2+
|
10 |
* License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
*/
|
12 |
-
define('FOOTER_PUTTER_VERSION','1.
|
13 |
define('FOOTER_PUTTER_FRIENDLY_NAME', 'Footer Putter') ;
|
14 |
define('FOOTER_PUTTER_DOMAIN', 'FOOTER_PUTTER_DOMAIN') ;
|
15 |
define('FOOTER_PUTTER_PATH', plugin_basename(__FILE__)) ;
|
16 |
define('FOOTER_PUTTER_PLUGIN_NAME', plugin_basename(dirname(__FILE__))) ;
|
17 |
define('FOOTER_PUTTER_HOME_URL','http://www.diywebmastery.com/plugins/footer-putter/');
|
18 |
define('FOOTER_PUTTER_ICON','dashicons-arrow-down-alt');
|
19 |
-
define('FOOTER_PUTTER_NEWS', 'http://www.diywebmastery.com/tags/newsfeed/feed/?images
|
20 |
require_once(dirname(__FILE__) . '/classes/class-plugin.php');
|
21 |
add_action ('init', array('Footer_Putter_Plugin', 'init'), 0);
|
22 |
if (is_admin()) add_action ('init', array('Footer_Putter_Plugin', 'admin_init'), 0);
|
3 |
* Plugin Name: Footer Putter
|
4 |
* Plugin URI: http://www.diywebmastery.com/plugins/footer-putter/
|
5 |
* Description: Put a footer on your site that boosts your credibility with both search engines and human visitors.
|
6 |
+
* Version: 1.13
|
7 |
* Author: Russell Jamieson
|
8 |
* Author URI: http://www.diywebmastery.com/about/
|
9 |
* License: GPLv2+
|
10 |
* License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
11 |
*/
|
12 |
+
define('FOOTER_PUTTER_VERSION','1.13');
|
13 |
define('FOOTER_PUTTER_FRIENDLY_NAME', 'Footer Putter') ;
|
14 |
define('FOOTER_PUTTER_DOMAIN', 'FOOTER_PUTTER_DOMAIN') ;
|
15 |
define('FOOTER_PUTTER_PATH', plugin_basename(__FILE__)) ;
|
16 |
define('FOOTER_PUTTER_PLUGIN_NAME', plugin_basename(dirname(__FILE__))) ;
|
17 |
define('FOOTER_PUTTER_HOME_URL','http://www.diywebmastery.com/plugins/footer-putter/');
|
18 |
define('FOOTER_PUTTER_ICON','dashicons-arrow-down-alt');
|
19 |
+
define('FOOTER_PUTTER_NEWS', 'http://www.diywebmastery.com/tags/newsfeed/feed/?images=1&featured_only=1');
|
20 |
require_once(dirname(__FILE__) . '/classes/class-plugin.php');
|
21 |
add_action ('init', array('Footer_Putter_Plugin', 'init'), 0);
|
22 |
if (is_admin()) add_action ('init', array('Footer_Putter_Plugin', 'admin_init'), 0);
|
readme.txt
CHANGED
@@ -2,9 +2,9 @@
|
|
2 |
Contributors: powerblogservice, diywebmastery
|
3 |
Donate link: http://www.diywebmastery.com/donate/
|
4 |
Tags: footer, copyright, trademark
|
5 |
-
Requires at least: 3.
|
6 |
-
Tested up to: 4.
|
7 |
-
Stable tag: 1.
|
8 |
License: GPLv2+
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -27,6 +27,7 @@ Put a footer on your site that boosts your credibility with both search engines
|
|
27 |
* Automatic HTML5 support
|
28 |
* Option to use HTML5 microdata for Organization in accordance with Google recommendations
|
29 |
* Option to apply rel=nofollow automatically to footer trademark links
|
|
|
30 |
|
31 |
== Installation ==
|
32 |
|
@@ -36,7 +37,6 @@ Put a footer on your site that boosts your credibility with both search engines
|
|
36 |
|
37 |
* Why is a footer important? By creating an appropriate footer you can enhance the credibility of your site by informing visitors on how to contact you, asserting copyright over the site content, setting out the legal terms and conditions for using the site, and establishing the trade associations or other bodies that recognize the legitimacy of your business.
|
38 |
|
39 |
-
|
40 |
== Screenshots ==
|
41 |
1. Example of a footer with both a copyright widget and a trademark widget
|
42 |
1. Setting up Footer Credits copyright and address details
|
@@ -48,20 +48,23 @@ Put a footer on your site that boosts your credibility with both search engines
|
|
48 |
|
49 |
== Changelog ==
|
50 |
|
51 |
-
= 1.
|
52 |
|
53 |
-
|
|
|
|
|
|
|
54 |
|
55 |
-
= 1.
|
56 |
|
57 |
-
= 1.
|
58 |
|
59 |
For full version history please see http://www.diywebmastery.com/plugins/footer-putter/footer-putter-version-history/
|
60 |
|
61 |
== Upgrade Notice ==
|
62 |
|
63 |
-
= 1.
|
64 |
-
* Optional -
|
65 |
|
66 |
== Links ==
|
67 |
|
2 |
Contributors: powerblogservice, diywebmastery
|
3 |
Donate link: http://www.diywebmastery.com/donate/
|
4 |
Tags: footer, copyright, trademark
|
5 |
+
Requires at least: 3.1
|
6 |
+
Tested up to: 4.3
|
7 |
+
Stable tag: 1.13
|
8 |
License: GPLv2+
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
27 |
* Automatic HTML5 support
|
28 |
* Option to use HTML5 microdata for Organization in accordance with Google recommendations
|
29 |
* Option to apply rel=nofollow automatically to footer trademark links
|
30 |
+
* Option to hide Powered By WordPress on TwentySomething themes
|
31 |
|
32 |
== Installation ==
|
33 |
|
37 |
|
38 |
* Why is a footer important? By creating an appropriate footer you can enhance the credibility of your site by informing visitors on how to contact you, asserting copyright over the site content, setting out the legal terms and conditions for using the site, and establishing the trade associations or other bodies that recognize the legitimacy of your business.
|
39 |
|
|
|
40 |
== Screenshots ==
|
41 |
1. Example of a footer with both a copyright widget and a trademark widget
|
42 |
1. Setting up Footer Credits copyright and address details
|
48 |
|
49 |
== Changelog ==
|
50 |
|
51 |
+
= 1.13 =
|
52 |
|
53 |
+
* Checked for WordPress 4.3 compatibility
|
54 |
+
* Updated to use Admin Notices
|
55 |
+
* Added option to hide Powered By WordPress on the TwentySomething themes
|
56 |
+
* Re-enabled Admin Toolbar if all actions were removed on the wp_footer hook
|
57 |
|
58 |
+
= 1.12 = Updated for WordPress 4.1, bug fix to privacy page terms, and added useful links and DIYWebmastery news feed sections in the sidebar
|
59 |
|
60 |
+
= 1.11 = Add option to set Copyright Text
|
61 |
|
62 |
For full version history please see http://www.diywebmastery.com/plugins/footer-putter/footer-putter-version-history/
|
63 |
|
64 |
== Upgrade Notice ==
|
65 |
|
66 |
+
= 1.13 =
|
67 |
+
* Optional - Updated for WordPress 4.3
|
68 |
|
69 |
== Links ==
|
70 |
|
scripts/jquery.tabs.js
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
jQuery(document).ready ( function () {
|
2 |
+
if(jQuery('.footer-putter-metabox').length > 0) {
|
3 |
+
jQuery('.footer-putter-metabox li.tab a').each(function(i) {
|
4 |
+
var thisMetabox = jQuery(this).closest('.footer-putter-metabox');
|
5 |
+
var tabs = thisMetabox.find('.footer-putter-metabox-tabs');
|
6 |
+
var content = thisMetabox.find('.metabox-content');
|
7 |
+
var thisTab = jQuery(this).parent().attr('class').replace(/tab /, '');
|
8 |
+
var selectedTab = thisMetabox.find('#tabselect');
|
9 |
+
if ( thisTab == selectedTab.val() ) {
|
10 |
+
jQuery(this).addClass('active');
|
11 |
+
content.children('div.'+thisTab).addClass('active');
|
12 |
+
} else {
|
13 |
+
content.children('div.' + thisTab).hide();
|
14 |
+
}
|
15 |
+
jQuery(this).click(function(){
|
16 |
+
content.children('div').hide();
|
17 |
+
content.children('div.active').removeClass('active');
|
18 |
+
tabs.find('li a.active').removeClass('active');
|
19 |
+
selectedTab.val(thisTab);
|
20 |
+
tabs.find('li.'+thisTab+' a').addClass('active');
|
21 |
+
content.children('div.'+thisTab).addClass('active').show();
|
22 |
+
return false;
|
23 |
+
});
|
24 |
+
tabs.show();
|
25 |
+
});
|
26 |
+
}
|
27 |
+
});
|
styles/admin.css
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
h2.title i { padding-right: 0.25em; vertical-align: top; font-size: 1.2em;}
|
2 |
img.dashed-border { padding: 10px; border: 1px dashed silver; max-width: 100%; }
|
3 |
p.bigger { font-size: larger; font-weight: bold; }
|
4 |
-
#footer-putter-intro { padding-right: 180px; background: url(../images/logo.png) right 40px no-repeat;}
|
1 |
h2.title i { padding-right: 0.25em; vertical-align: top; font-size: 1.2em;}
|
2 |
img.dashed-border { padding: 10px; border: 1px dashed silver; max-width: 100%; }
|
3 |
p.bigger { font-size: larger; font-weight: bold; }
|
4 |
+
#footer-putter-intro { padding-right: 180px; background: url(../images/logo.png) right 40px no-repeat;}
|
styles/footer-credits.css
CHANGED
@@ -28,4 +28,8 @@
|
|
28 |
|
29 |
.widget_footer_copyright, .widget_footer_trademarks
|
30 |
{ margin: 0 !important; padding: 0 !important; width: 100% !important; float:none !important; }
|
31 |
-
.site-info .custom-footer { margin: 0 !important; border: 0 !important; padding : 0!important; width: 100% !important;}
|
|
|
|
|
|
|
|
28 |
|
29 |
.widget_footer_copyright, .widget_footer_trademarks
|
30 |
{ margin: 0 !important; padding: 0 !important; width: 100% !important; float:none !important; }
|
31 |
+
.site-info .custom-footer { margin: 0 !important; border: 0 !important; padding : 0!important; width: 100% !important;}
|
32 |
+
|
33 |
+
.custom-footer.hide-wordpress + a[href='https://wordpress.org/'], .custom-footer.hide-wordpress + a[href='http://wordpress.org/'] {
|
34 |
+
display: none;
|
35 |
+
}
|
styles/images/icon-32.png
ADDED
Binary file
|
styles/tabs.css
ADDED
@@ -0,0 +1,44 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*tabbed metabox */
|
2 |
+
|
3 |
+
ul.footer-putter-metabox-tabs { display: inline-block; margin:0 0 -4px; padding: 0; color: #000000;}
|
4 |
+
ul.footer-putter-metabox-tabs li {list-style: none; display: inline; font-size: 11px; }
|
5 |
+
ul.footer-putter-metabox-tabs li.tab a {
|
6 |
+
text-decoration: none;
|
7 |
+
border-top: 1px #AAAAAA solid;
|
8 |
+
border-left: 1px #AAAAAA solid;
|
9 |
+
border-right: 1px #AAAAAA solid;
|
10 |
+
}
|
11 |
+
ul.footer-putter-metabox-tabs li.tab a.active {
|
12 |
+
color: #000000;
|
13 |
+
background-color: #CCCCCC;
|
14 |
+
border-bottom: none;
|
15 |
+
}
|
16 |
+
ul.footer-putter-metabox-tabs li.link a:hover { text-decoration: underline; }
|
17 |
+
ul.footer-putter-metabox-tabs li.tab.hidden { display: none; background-color: gray}
|
18 |
+
ul.footer-putter-metabox-tabs li.tab a.has_error { background-color: red; color: white; }
|
19 |
+
ul.footer-putter-metabox-tabs li a:focus { outline: none; box-shadow:none; }
|
20 |
+
ul.footer-putter-metabox-tabs li.tab a { display: block; float: left; margin-right: 4px; padding: 5px 12px;
|
21 |
+
font-weight: bold; text-decoration: none; zoom: 1; outline: none;
|
22 |
+
border-radius: 2px 2px 0 0; -webkit-border-radius: 2px 2px 0 0; -moz-border-radius: 2px 2px 0 0;
|
23 |
+
background-color: #E8E8E8; color: #A8A8A8 ;
|
24 |
+
}
|
25 |
+
|
26 |
+
|
27 |
+
ul.footer-putter-metabox-tabs li.tab a:hover {
|
28 |
+
color: #000000;
|
29 |
+
}
|
30 |
+
.footer-putter-metabox .metabox-content {
|
31 |
+
background: url(images/icon-32.png) right bottom no-repeat, linear-gradient(to bottom, #CCCCCC,#EEEEEE);
|
32 |
+
min-height: 60px;
|
33 |
+
padding-bottom:50px;
|
34 |
+
border: 1px #AAAAAA solid;
|
35 |
+
}
|
36 |
+
|
37 |
+
.footer-putter-metabox div.tab-content {
|
38 |
+
padding: 10px 15px;
|
39 |
+
opacity: 90%;
|
40 |
+
}
|
41 |
+
|
42 |
+
.footer-putter-metabox .form-table th, .footer-putter-metabox .form-table td {
|
43 |
+
padding: 5px;
|
44 |
+
}
|
styles/tooltip.css
CHANGED
@@ -19,15 +19,19 @@ text-shadow: 0 1px 0 rgba(255,255,255,.4);
|
|
19 |
content: ""; position: absolute; z-index: 1000; bottom: -7px; left: 50%;margin-left: 8px;
|
20 |
border-top: 8px solid #ddd;border-left: 8px solid transparent;border-right: 8px solid transparent;border-bottom: 0; }
|
21 |
.diy-tooltip span.tip:before {border-top-color: #ccc;bottom: -8px;}
|
22 |
-
.diy-tooltip .dashicons-editor-help { font-weight: lighter; font-size: 16px;}
|
23 |
-
.diy-
|
24 |
-
.diy-
|
25 |
-
.
|
26 |
-
.
|
27 |
-
.
|
28 |
-
.
|
29 |
-
.widgets-holder-wrap
|
30 |
-
.widgets-holder-wrap
|
31 |
-
|
32 |
-
|
33 |
-
|
|
|
|
|
|
|
|
19 |
content: ""; position: absolute; z-index: 1000; bottom: -7px; left: 50%;margin-left: 8px;
|
20 |
border-top: 8px solid #ddd;border-left: 8px solid transparent;border-right: 8px solid transparent;border-bottom: 0; }
|
21 |
.diy-tooltip span.tip:before {border-top-color: #ccc;bottom: -8px;}
|
22 |
+
.diy-tooltip .dashicons-editor-help { font-weight: lighter; font-size: 16px; font-family: dashicons; }
|
23 |
+
.diy-fieldset {display: inline-block; margin: 5px; }
|
24 |
+
.diy-fieldset label { min-width: 70px; margin: 3px 15px 3px 5px; vertical-align:middle; }
|
25 |
+
.diy-fieldset input { margin: 3px 0; }
|
26 |
+
.diy-fieldset li { display: inline; }
|
27 |
+
.diy-checkbox { margin-left: 3px;}
|
28 |
+
.diy-label { min-width: 160px; margin-right: 10px; vertical-align: top; display: inline-block;}
|
29 |
+
.widgets-holder-wrap .diy-label { min-width: 150px; }
|
30 |
+
.widgets-holder-wrap .diy-wrap .diy-label { min-width: 100px; }
|
31 |
+
.widgets-holder-wrap .diy-fieldset label { min-width: 30px; }
|
32 |
+
.wrapfieldset label { padding-top: 10px; }
|
33 |
+
.diy-wrap { margin: 10px 0; }
|
34 |
+
.diy-wrap div label {padding-top:5px; }
|
35 |
+
.diy-wrap h4 { margin: 10px 0;}
|
36 |
+
.diy-wrap p { margin: 5px 0 0; }
|
37 |
+
tr.diy-row th, tr.diy-row td { margin: 0; padding: 5px;}
|