Version Description
Pre-configure according to the WordPress theme
Download this release
Release Info
Developer | powerblogservice |
Plugin | Footer Putter |
Version | 1.3 |
Comparing to | |
See all releases |
Code changes from version 1.2 to 1.3
- admin.php → classes/admin.php +44 -21
- footer-credits-admin.php → classes/footer-credits-admin.php +40 -61
- footer-credits.php → classes/footer-credits.php +97 -109
- classes/footer-trademarks-admin.php +102 -0
- classes/footer-trademarks.php +77 -0
- images/add-link-category.jpg +0 -0
- images/add-link.jpg +0 -0
- menu-icon.png → images/icon-16.png +0 -0
- icon-32.png → images/icon-32.png +0 -0
- logo.png → images/logo.png +0 -0
- main.php +8 -5
- readme.txt +4 -3
- admin.css → styles/admin.css +4 -1
- style.css → styles/footer-credits.css +8 -3
admin.php → classes/admin.php
RENAMED
@@ -1,44 +1,67 @@
|
|
1 |
<?php
|
2 |
class FooterPutterAdmin {
|
3 |
-
const
|
4 |
-
|
5 |
-
|
6 |
-
|
7 |
-
|
8 |
-
|
9 |
-
|
10 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
}
|
12 |
|
13 |
-
function
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
if (!defined( 'WP_NETWORK_ADMIN' ) && !defined( 'WP_USER_ADMIN' )) {
|
15 |
-
if ($screen ==
|
16 |
-
$columns[
|
17 |
}
|
18 |
}
|
19 |
return $columns;
|
20 |
}
|
21 |
|
22 |
-
function plugin_action_links( $links, $file ) {
|
23 |
-
if ( is_array($links) && (
|
24 |
$settings_link = '<a href="' . admin_url( 'admin.php?page='.FOOTER_PUTTER_PLUGIN_NAME) . '">Settings</a>';
|
25 |
array_unshift( $links, $settings_link );
|
26 |
}
|
27 |
return $links;
|
28 |
}
|
29 |
|
30 |
-
function admin_menu() {
|
31 |
-
|
32 |
-
FOOTER_PUTTER_PLUGIN_NAME, array(
|
|
|
|
|
33 |
}
|
|
|
|
|
|
|
|
|
34 |
|
35 |
-
function
|
36 |
-
$footer_url =
|
37 |
$home_url = FOOTER_PUTTER_HOME_URL;
|
38 |
$version = FOOTER_PUTTER_VERSION;
|
39 |
$plugin = FOOTER_PUTTER_FRIENDLY_NAME;
|
40 |
-
$screenshot = plugins_url('screenshot-1.jpg',__FILE__);
|
41 |
-
$logo = plugins_url('logo.png',__FILE__);
|
42 |
print <<< ADMIN_PANEL
|
43 |
<div class="wrap">
|
44 |
<h2>{$plugin} {$version} Overview</h2>
|
@@ -95,5 +118,5 @@ or use a theme-specific hook such as <i>twentyten_credits</i>, <i>twentyeleven_c
|
|
95 |
ADMIN_PANEL;
|
96 |
}
|
97 |
}
|
98 |
-
|
99 |
?>
|
1 |
<?php
|
2 |
class FooterPutterAdmin {
|
3 |
+
const CLASSNAME = 'FooterPutterAdmin'; //this class
|
4 |
+
const CODE = 'footer-putter';
|
5 |
+
const DOMAIN = 'FooterPutter';
|
6 |
+
|
7 |
+
private static $plugin = FOOTER_PUTTER_PLUGIN_NAME;
|
8 |
+
private static $path = FOOTER_PUTTER_PATH;
|
9 |
+
private static $slug = FOOTER_PUTTER_PLUGIN_NAME;
|
10 |
+
private static $screen_id;
|
11 |
+
private static $initialized = false;
|
12 |
+
|
13 |
+
private static function get_slug(){
|
14 |
+
return self::$slug;
|
15 |
+
}
|
16 |
+
|
17 |
+
private static function get_screen_id(){
|
18 |
+
return self::$screen_id;
|
19 |
}
|
20 |
|
21 |
+
static function init() {
|
22 |
+
if (self::$initialized) return true;
|
23 |
+
self::$initialized = true;
|
24 |
+
add_filter('plugin_action_links',array(self::CLASSNAME, 'plugin_action_links'), 10, 2 );
|
25 |
+
add_filter('screen_layout_columns', array(self::CLASSNAME, 'screen_layout_columns'), 10, 2);
|
26 |
+
add_action('admin_menu',array(self::CLASSNAME, 'admin_menu'));
|
27 |
+
add_filter('pre_option_link_manager_enabled', '__return_true' );
|
28 |
+
}
|
29 |
+
|
30 |
+
static function screen_layout_columns($columns, $screen) {
|
31 |
if (!defined( 'WP_NETWORK_ADMIN' ) && !defined( 'WP_USER_ADMIN' )) {
|
32 |
+
if ($screen == self::get_screen_id()) {
|
33 |
+
$columns[self::get_screen_id()] = 2;
|
34 |
}
|
35 |
}
|
36 |
return $columns;
|
37 |
}
|
38 |
|
39 |
+
static function plugin_action_links( $links, $file ) {
|
40 |
+
if ( is_array($links) && (self::$path == $file )) {
|
41 |
$settings_link = '<a href="' . admin_url( 'admin.php?page='.FOOTER_PUTTER_PLUGIN_NAME) . '">Settings</a>';
|
42 |
array_unshift( $links, $settings_link );
|
43 |
}
|
44 |
return $links;
|
45 |
}
|
46 |
|
47 |
+
static function admin_menu() {
|
48 |
+
self::$screen_id = add_menu_page(FOOTER_PUTTER_FRIENDLY_NAME, FOOTER_PUTTER_FRIENDLY_NAME, 'manage_options',
|
49 |
+
FOOTER_PUTTER_PLUGIN_NAME, array(self::CLASSNAME,'settings_panel'),plugins_url('images/icon-16.png',dirname(__FILE__)) );
|
50 |
+
add_submenu_page(FOOTER_PUTTER_PLUGIN_NAME, FOOTER_PUTTER_FRIENDLY_NAME, 'Intro', 'manage_options', FOOTER_PUTTER_PLUGIN_NAME,array(self::CLASSNAME,'settings_panel') );
|
51 |
+
add_action ('admin_enqueue_scripts',array(self::CLASSNAME, 'enqueue_styles'));
|
52 |
}
|
53 |
+
|
54 |
+
static function enqueue_styles() {
|
55 |
+
wp_enqueue_style(self::CODE.'-admin', plugins_url('styles/admin.css', dirname(__FILE__)), array(),FOOTER_PUTTER_VERSION);
|
56 |
+
}
|
57 |
|
58 |
+
static function settings_panel() {
|
59 |
+
$footer_url = FooterCreditsAdmin::get_url();
|
60 |
$home_url = FOOTER_PUTTER_HOME_URL;
|
61 |
$version = FOOTER_PUTTER_VERSION;
|
62 |
$plugin = FOOTER_PUTTER_FRIENDLY_NAME;
|
63 |
+
$screenshot = plugins_url('screenshot-1.jpg',dirname(__FILE__));
|
64 |
+
$logo = plugins_url('images/logo.png', dirname(__FILE__));
|
65 |
print <<< ADMIN_PANEL
|
66 |
<div class="wrap">
|
67 |
<h2>{$plugin} {$version} Overview</h2>
|
118 |
ADMIN_PANEL;
|
119 |
}
|
120 |
}
|
121 |
+
FooterPutterAdmin::init();
|
122 |
?>
|
footer-credits-admin.php → classes/footer-credits-admin.php
RENAMED
@@ -12,7 +12,7 @@ class FooterCreditsAdmin {
|
|
12 |
private static $initialized = false;
|
13 |
private static $keys = array('owner', 'site', 'address', 'country', 'telephone',
|
14 |
'email', 'courts', 'updated', 'copyright_start_year', 'return_text', 'return_href', 'return_class',
|
15 |
-
'footer_class','footer_hook');
|
16 |
private static $tips = array(
|
17 |
'owner' => array('heading' => 'Owner or Business Name', 'tip' => 'Enter the name of the legal entity that owns and operates the site.'),
|
18 |
'address' => array('heading' => 'Full Address', 'tip' => 'Enter the full address that you want to appear in the footer and the privacy and terms pages.'),
|
@@ -26,14 +26,16 @@ class FooterCreditsAdmin {
|
|
26 |
'return_href' => array('heading' => 'Link Anchor' , 'tip' => 'The destination of the Return To Top link. This depends on our theme and also whether you want to go to the top of the page or the top of the content section. Typical values are #content, #header, #top, #page, #wrap or #container.'),
|
27 |
'return_class' => array('heading' => 'Return To Top Class' , 'tip' => 'Add any custom class you want to apply to the Return To Top link.'),
|
28 |
'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.'),
|
29 |
-
'footer_hook' => array('heading' => 'Footer 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.')
|
|
|
|
|
30 |
);
|
31 |
private static $tooltips;
|
32 |
|
33 |
-
public static function init($parent
|
34 |
if (self::$initialized) return true;
|
35 |
self::$initialized = true;
|
36 |
-
self::$version =
|
37 |
self::$parenthook = $parent;
|
38 |
self::$slug = self::$parenthook . '-' . self::SLUG;
|
39 |
add_filter('screen_layout_columns', array(self::CLASSNAME, 'screen_layout_columns'), 10, 2);
|
@@ -85,20 +87,23 @@ class FooterCreditsAdmin {
|
|
85 |
self::$screen_id = add_submenu_page(self::get_parenthook(), __('Footer Credits'), __('Footer Credits'), 'manage_options',
|
86 |
self::get_slug(), array(self::CLASSNAME,'settings_panel'));
|
87 |
add_action('load-'.self::get_screen_id(), array(self::CLASSNAME, 'load_page'));
|
88 |
-
add_action('admin_print_styles-'.self::get_screen_id(), array(self::CLASSNAME, '
|
89 |
-
add_action('admin_footer-'.self::get_screen_id(), array(self::CLASSNAME, 'toggle_postboxes'));
|
90 |
}
|
91 |
|
92 |
-
public static function
|
93 |
-
wp_enqueue_style(self::CODE, plugins_url('
|
94 |
-
wp_enqueue_style(self::CODE.'-admin', plugins_url('admin.css', __FILE__), array(),self::get_version());
|
95 |
}
|
96 |
|
97 |
-
public static function
|
98 |
-
$message = isset($_POST['options_update']) ? self::save() : '';
|
99 |
wp_enqueue_script('common');
|
100 |
wp_enqueue_script('wp-lists');
|
101 |
wp_enqueue_script('postbox');
|
|
|
|
|
|
|
|
|
|
|
102 |
$options = call_user_func(array(self::FOOTER, 'get_options'));
|
103 |
$callback_params = array ('options' => $options, 'message' => $message);
|
104 |
add_meta_box(self::CODE.'-intro', __('Introduction',self::DOMAIN), array(self::CLASSNAME, 'intro_panel'), self::get_screen_id(), 'normal', 'core', $callback_params);
|
@@ -106,15 +111,9 @@ class FooterCreditsAdmin {
|
|
106 |
add_meta_box(self::CODE.'-contact', __('Contact Details',self::DOMAIN), array(self::CLASSNAME, 'contact_panel'), self::get_screen_id(), 'normal', 'core', $callback_params);
|
107 |
add_meta_box(self::CODE.'-legal', __('Legal Details',self::DOMAIN), array(self::CLASSNAME, 'legal_panel'), self::get_screen_id(), 'normal', 'core', $callback_params);
|
108 |
add_meta_box(self::CODE.'-return', __('Return To Top',self::DOMAIN), array(self::CLASSNAME, 'return_panel'), self::get_screen_id(), 'normal', 'core', $callback_params);
|
109 |
-
add_meta_box(self::CODE.'-classes', __('Custom Classes (Optional)',self::DOMAIN), array(self::CLASSNAME, 'classes_panel'), self::get_screen_id(), 'normal', 'core', $callback_params);
|
110 |
add_meta_box(self::CODE.'-example', __('Preview Footer',self::DOMAIN), array(self::CLASSNAME, 'preview_panel'), self::get_screen_id(), 'normal', 'core', $callback_params);
|
111 |
-
add_meta_box(self::CODE.'-advanced', __('Advanced',self::DOMAIN), array(self::CLASSNAME, 'advanced_panel'), self::get_screen_id(), 'normal', 'core');
|
112 |
-
|
113 |
-
$current_screen = get_current_screen();
|
114 |
-
if (method_exists($current_screen,'add_help_tab')) {
|
115 |
-
$current_screen->add_help_tab(
|
116 |
-
array( 'id' => self::CODE.'-overview', 'title' => 'Overview', 'content' => self::help_panel()));
|
117 |
-
}
|
118 |
}
|
119 |
|
120 |
public static function save() {
|
@@ -124,14 +123,17 @@ class FooterCreditsAdmin {
|
|
124 |
$options = call_user_func(array(self::FOOTER, 'get_options'));
|
125 |
foreach ($page_options as $option) {
|
126 |
$val = array_key_exists($option, $_POST) ? trim(stripslashes($_POST[$option])) : '';
|
127 |
-
|
128 |
-
|
129 |
else switch($option) {
|
130 |
-
case 'return_href': $
|
131 |
-
|
|
|
|
|
|
|
132 |
}
|
133 |
} //end for
|
134 |
-
|
135 |
$saved = call_user_func(array(self::FOOTER, 'save'), $options) ;
|
136 |
if ($saved) {
|
137 |
$message = 'Footer Settings saved.';
|
@@ -159,31 +161,11 @@ class FooterCreditsAdmin {
|
|
159 |
</script>
|
160 |
SCRIPT;
|
161 |
}
|
162 |
-
|
163 |
-
public static function help_panel(){
|
164 |
-
$result = <<< HELP_PANEL
|
165 |
-
<p>This admin screen is used to set up the values that appear in the footer, and in the Terms and Conditions and Privacy pages.</p>
|
166 |
-
<p>This information supplied here is substituted automatically into the Privacy and Terms pages and footer in the appropriate places.</p>
|
167 |
-
<h4>Copyright Footer</h4>
|
168 |
-
<p>You can set up as many of the following items as you want to appear on a single line in a footer widget:</p>
|
169 |
-
<ul>
|
170 |
-
<li>- Link to About Us page</li>
|
171 |
-
<li>- Link to Contact Us page</li>
|
172 |
-
<li>- Link to Privacy page</li>
|
173 |
-
<li>- Link to Terms page</li>
|
174 |
-
<li>- Copyright sSatement</li>
|
175 |
-
<li>- Business Owner</li>
|
176 |
-
<li>- Telephone</li>
|
177 |
-
<li>- Address</li>
|
178 |
-
</ul>
|
179 |
-
HELP_PANEL;
|
180 |
-
return $result;
|
181 |
-
}
|
182 |
|
183 |
public static function intro_panel($post,$metabox){
|
184 |
$message = $metabox['args']['message'];
|
185 |
print <<< INTRO_PANEL
|
186 |
-
<p>The following information
|
187 |
{$message}
|
188 |
INTRO_PANEL;
|
189 |
}
|
@@ -232,32 +214,29 @@ LEGAL_PANEL;
|
|
232 |
RETURN_PANEL;
|
233 |
}
|
234 |
|
235 |
-
public static function classes_panel(){
|
236 |
-
$options = call_user_func(array(self::FOOTER, 'get_options'));
|
237 |
-
$tip1 = self::$tooltips->tip('footer_class');
|
238 |
-
$tip2 = self::$tooltips->tip('return_class');
|
239 |
-
print <<< CLASSES_PANEL
|
240 |
-
<label>{$tip1}</label><input type="text" name="footer_class" size="30" value="{$options['footer_class']}" /><br/>
|
241 |
-
<label>{$tip2}</label><input type="text" name="return_class" size="30" value="{$options['return_class']}" /><br/>
|
242 |
-
CLASSES_PANEL;
|
243 |
-
}
|
244 |
-
|
245 |
public static function preview_panel($post,$metabox){
|
246 |
$options = $metabox['args']['options'];
|
247 |
echo call_user_func(array(self::FOOTER, 'footer'),array('nav_menu' => 'Footer Menu'));
|
248 |
}
|
249 |
|
250 |
-
public static function advanced_panel(){
|
251 |
-
$options =
|
252 |
$tip1 = self::$tooltips->tip('footer_hook');
|
|
|
|
|
|
|
|
|
253 |
print <<< ADVANCED_PANEL
|
254 |
-
<p>You can place the Copyright and Trademark widgets in any existing Widget area
|
255 |
-
<p>However, if your theme does not have a suitably located Widget Area in the footer then you can create one by specifying the hook
|
256 |
where the Widget Area will be located.</p>
|
257 |
<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>,
|
258 |
-
<i>twentyeleven_credits</i> or <i>
|
259 |
-
<
|
260 |
<label>{$tip1}</label><input type="text" name="footer_hook" size="30" value="{$options['footer_hook']}" /><br/>
|
|
|
|
|
|
|
|
|
261 |
ADVANCED_PANEL;
|
262 |
}
|
263 |
|
12 |
private static $initialized = false;
|
13 |
private static $keys = array('owner', 'site', 'address', 'country', 'telephone',
|
14 |
'email', 'courts', 'updated', 'copyright_start_year', 'return_text', 'return_href', 'return_class',
|
15 |
+
'footer_class','footer_hook','footer_remove','footer_filter_hook');
|
16 |
private static $tips = array(
|
17 |
'owner' => array('heading' => 'Owner or Business Name', 'tip' => 'Enter the name of the legal entity that owns and operates the site.'),
|
18 |
'address' => array('heading' => 'Full Address', 'tip' => 'Enter the full address that you want to appear in the footer and the privacy and terms pages.'),
|
26 |
'return_href' => array('heading' => 'Link Anchor' , 'tip' => 'The destination of the Return To Top link. This depends on our theme and also whether you want to go to the top of the page or the top of the content section. Typical values are #content, #header, #top, #page, #wrap or #container.'),
|
27 |
'return_class' => array('heading' => 'Return To Top Class' , 'tip' => 'Add any custom class you want to apply to the Return To Top link.'),
|
28 |
'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.'),
|
29 |
+
'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.'),
|
30 |
+
'footer_remove' => array('heading' => 'Remove Existing 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.'),
|
31 |
+
'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.')
|
32 |
);
|
33 |
private static $tooltips;
|
34 |
|
35 |
+
public static function init($parent) {
|
36 |
if (self::$initialized) return true;
|
37 |
self::$initialized = true;
|
38 |
+
self::$version = FooterCredits::VERSION;
|
39 |
self::$parenthook = $parent;
|
40 |
self::$slug = self::$parenthook . '-' . self::SLUG;
|
41 |
add_filter('screen_layout_columns', array(self::CLASSNAME, 'screen_layout_columns'), 10, 2);
|
87 |
self::$screen_id = add_submenu_page(self::get_parenthook(), __('Footer Credits'), __('Footer Credits'), 'manage_options',
|
88 |
self::get_slug(), array(self::CLASSNAME,'settings_panel'));
|
89 |
add_action('load-'.self::get_screen_id(), array(self::CLASSNAME, 'load_page'));
|
90 |
+
add_action('admin_print_styles-'.self::get_screen_id(), array(self::CLASSNAME, 'enqueue_styles'));
|
|
|
91 |
}
|
92 |
|
93 |
+
public static function enqueue_styles() {
|
94 |
+
wp_enqueue_style(self::CODE, plugins_url('styles/footer-credits.css', dirname(__FILE__)), array(),self::get_version());
|
95 |
+
wp_enqueue_style(self::CODE.'-admin', plugins_url('styles/admin.css', dirname(__FILE__)), array(),self::get_version());
|
96 |
}
|
97 |
|
98 |
+
public static function enqueue_scripts() {
|
|
|
99 |
wp_enqueue_script('common');
|
100 |
wp_enqueue_script('wp-lists');
|
101 |
wp_enqueue_script('postbox');
|
102 |
+
add_action('admin_footer-'.self::get_screen_id(), array(self::CLASSNAME, 'toggle_postboxes'));
|
103 |
+
}
|
104 |
+
|
105 |
+
public static function load_page() {
|
106 |
+
$message = isset($_POST['options_update']) ? self::save() : '';
|
107 |
$options = call_user_func(array(self::FOOTER, 'get_options'));
|
108 |
$callback_params = array ('options' => $options, 'message' => $message);
|
109 |
add_meta_box(self::CODE.'-intro', __('Introduction',self::DOMAIN), array(self::CLASSNAME, 'intro_panel'), self::get_screen_id(), 'normal', 'core', $callback_params);
|
111 |
add_meta_box(self::CODE.'-contact', __('Contact Details',self::DOMAIN), array(self::CLASSNAME, 'contact_panel'), self::get_screen_id(), 'normal', 'core', $callback_params);
|
112 |
add_meta_box(self::CODE.'-legal', __('Legal Details',self::DOMAIN), array(self::CLASSNAME, 'legal_panel'), self::get_screen_id(), 'normal', 'core', $callback_params);
|
113 |
add_meta_box(self::CODE.'-return', __('Return To Top',self::DOMAIN), array(self::CLASSNAME, 'return_panel'), self::get_screen_id(), 'normal', 'core', $callback_params);
|
|
|
114 |
add_meta_box(self::CODE.'-example', __('Preview Footer',self::DOMAIN), array(self::CLASSNAME, 'preview_panel'), self::get_screen_id(), 'normal', 'core', $callback_params);
|
115 |
+
add_meta_box(self::CODE.'-advanced', __('Advanced',self::DOMAIN), array(self::CLASSNAME, 'advanced_panel'), self::get_screen_id(), 'normal', 'core', $callback_params);
|
116 |
+
add_action ('admin_enqueue_scripts',array(self::CLASSNAME, 'enqueue_scripts'));
|
|
|
|
|
|
|
|
|
|
|
117 |
}
|
118 |
|
119 |
public static function save() {
|
123 |
$options = call_user_func(array(self::FOOTER, 'get_options'));
|
124 |
foreach ($page_options as $option) {
|
125 |
$val = array_key_exists($option, $_POST) ? trim(stripslashes($_POST[$option])) : '';
|
126 |
+
if (call_user_func(array(self::FOOTER, 'is_terms_key'),$option))
|
127 |
+
$options['terms'][$option] = $val;
|
128 |
else switch($option) {
|
129 |
+
case 'return_href': $options[$option] = '#'.preg_replace('/\W/','',$val); break;
|
130 |
+
case 'footer_remove' : $options[$option] = !empty($val); break;
|
131 |
+
case 'footer_hook':
|
132 |
+
case 'footer_filter_hook': $options[$option] = preg_replace('/\W/','',$val); break;
|
133 |
+
default: $options[$option] = trim($val);
|
134 |
}
|
135 |
} //end for
|
136 |
+
$class='updated fade';
|
137 |
$saved = call_user_func(array(self::FOOTER, 'save'), $options) ;
|
138 |
if ($saved) {
|
139 |
$message = 'Footer Settings saved.';
|
161 |
</script>
|
162 |
SCRIPT;
|
163 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
164 |
|
165 |
public static function intro_panel($post,$metabox){
|
166 |
$message = $metabox['args']['message'];
|
167 |
print <<< INTRO_PANEL
|
168 |
+
<p>The following information is in the Footer Copyright Widget and if this is a <a target="_blank" href="http://www.wpwhoosh.com">whooshed site</a> on the Privacy Statement and Terms and Conditions pages.</p>
|
169 |
{$message}
|
170 |
INTRO_PANEL;
|
171 |
}
|
214 |
RETURN_PANEL;
|
215 |
}
|
216 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
217 |
public static function preview_panel($post,$metabox){
|
218 |
$options = $metabox['args']['options'];
|
219 |
echo call_user_func(array(self::FOOTER, 'footer'),array('nav_menu' => 'Footer Menu'));
|
220 |
}
|
221 |
|
222 |
+
public static function advanced_panel($post,$metabox){
|
223 |
+
$options = $metabox['args']['options'];
|
224 |
$tip1 = self::$tooltips->tip('footer_hook');
|
225 |
+
$tip2 = self::$tooltips->tip('footer_remove');
|
226 |
+
$tip3 = self::$tooltips->tip('footer_filter_hook');
|
227 |
+
$url = 'http://www.diywebmastery.com/footer-credits-compatible-themes-and-hooks';
|
228 |
+
$footer_remove = $options['footer_remove'] ? 'checked="checked" ' : '';
|
229 |
print <<< ADVANCED_PANEL
|
230 |
+
<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
|
|
|
231 |
where the Widget Area will be located.</p>
|
232 |
<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>,
|
233 |
+
<i>twentyeleven_credits</i> or <i>twentytwelve_credits</i>. If you using a Genesis child theme and the theme does not have a suitable widget area then use
|
234 |
+
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>
|
235 |
<label>{$tip1}</label><input type="text" name="footer_hook" size="30" value="{$options['footer_hook']}" /><br/>
|
236 |
+
<label>{$tip2}</label><input type="checkbox" name="footer_remove" {$footer_remove}value="1" /><br/>
|
237 |
+
<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,
|
238 |
+
then specify the hook below. For example, entering <i>genesis_footer_output</i> will suppress the standard Genesis child theme footer.</p>
|
239 |
+
<label>{$tip3}</label><input type="text" name="footer_filter_hook" size="30" value="{$options['footer_filter_hook']}" /><br/>
|
240 |
ADVANCED_PANEL;
|
241 |
}
|
242 |
|
footer-credits.php → classes/footer-credits.php
RENAMED
@@ -5,6 +5,7 @@ class FooterCredits {
|
|
5 |
const CODE = 'footer-credits'; //shortcode
|
6 |
const OPTIONS_NAME = 'footer_credits_options';
|
7 |
const SIDEBAR_ID = 'last-footer';
|
|
|
8 |
private static $version;
|
9 |
protected static $options = array();
|
10 |
protected static $defaults = array(
|
@@ -22,6 +23,7 @@ class FooterCredits {
|
|
22 |
'nav_menu' => 0,
|
23 |
'separator' => ' · ',
|
24 |
'center' => true,
|
|
|
25 |
'show_copyright' => true,
|
26 |
'show_telephone' => true,
|
27 |
'show_address' => true,
|
@@ -30,14 +32,18 @@ class FooterCredits {
|
|
30 |
'return_href' => '#header',
|
31 |
'return_class' => '',
|
32 |
'footer_class' => '',
|
33 |
-
'footer_hook' => ''
|
|
|
|
|
34 |
);
|
35 |
|
36 |
private static function get_version(){
|
37 |
return self::$version;
|
38 |
}
|
39 |
-
|
40 |
-
|
|
|
|
|
41 |
add_action('widgets_init',array(self::CLASSNAME,'register'),20);
|
42 |
add_filter( 'wp_nav_menu_items', array(self::CLASSNAME, 'fix_home_link'), 10, 2 );
|
43 |
if (!is_admin()) add_action('wp',array(self::CLASSNAME,'prepare'));
|
@@ -59,9 +65,16 @@ class FooterCredits {
|
|
59 |
add_action('wp_enqueue_scripts',array(self::CLASSNAME, 'add_styles' ));
|
60 |
|
61 |
//insert custom footer at specified hook
|
62 |
-
if ($footer_hook = self::get_option('footer_hook'))
|
|
|
|
|
|
|
63 |
|
64 |
-
|
|
|
|
|
|
|
|
|
65 |
add_filter('the_content', array(self::CLASSNAME, 'terms_filter') );
|
66 |
}
|
67 |
}
|
@@ -84,13 +97,16 @@ class FooterCredits {
|
|
84 |
|
85 |
|
86 |
static function add_styles() {
|
87 |
-
wp_enqueue_style(self::CLASSNAME, plugins_url('
|
88 |
}
|
89 |
|
90 |
static function fix_home_link( $content, $args) {
|
91 |
-
|
92 |
-
|
93 |
-
|
|
|
|
|
|
|
94 |
}
|
95 |
return $content;
|
96 |
}
|
@@ -98,7 +114,7 @@ class FooterCredits {
|
|
98 |
static function sanitize_terms($new_terms) {
|
99 |
$new_terms = wp_parse_args($new_terms, self::$defaults['terms']); //ensure terms are complete
|
100 |
$new_terms['site'] = self::get_default_site();
|
101 |
-
$new_terms['copyright'] = self::get_copyright($new_terms); //generate copyright
|
102 |
return $new_terms;
|
103 |
}
|
104 |
|
@@ -129,7 +145,7 @@ class FooterCredits {
|
|
129 |
if ($option_name && $options && array_key_exists($option_name,$options))
|
130 |
return $options[$option_name];
|
131 |
else
|
132 |
-
return false;
|
133 |
}
|
134 |
|
135 |
static function get_terms() {
|
@@ -165,7 +181,7 @@ class FooterCredits {
|
|
165 |
$domain = strtolower(parse_url(site_url(),PHP_URL_HOST));
|
166 |
$p = strpos($domain,'www.') ;
|
167 |
if (($p !== FALSE) && ($p == 0)) $domain = substr($domain,4);
|
168 |
-
return
|
169 |
}
|
170 |
|
171 |
static function get_copyright($startyear){
|
@@ -205,12 +221,14 @@ class FooterCredits {
|
|
205 |
static function footer($atts = array()) {
|
206 |
$params = shortcode_atts( self::get_options(), $atts ); //apply plugin defaults
|
207 |
if ($params['center']) {
|
208 |
-
$
|
|
|
209 |
$params['return_class'] .= ' return-center';
|
210 |
$params['footer_class'] .= ' footer-center';
|
211 |
$clear = '';
|
212 |
} else {
|
213 |
-
$
|
|
|
214 |
$params['return_class'] .= ' return-left';
|
215 |
$params['footer_class'] .= ' footer-right';
|
216 |
$clear = '<div class="clear"></div>';
|
@@ -224,9 +242,9 @@ class FooterCredits {
|
|
224 |
self::CODE,
|
225 |
$params['footer_class'],
|
226 |
(empty($params['nav_menu']) ? '' : self::footer_menu($params['nav_menu'])),
|
227 |
-
(empty($params['show_copyright']) ? '' : sprintf('%1$s%2$s', $
|
228 |
-
((empty($
|
229 |
-
((empty($
|
230 |
$clear
|
231 |
);
|
232 |
}
|
@@ -251,6 +269,8 @@ class FooterCredits {
|
|
251 |
echo '</div><!-- end .custom-footer -->';
|
252 |
}
|
253 |
}
|
|
|
|
|
254 |
|
255 |
static function add_footer_filter() {
|
256 |
add_filter('wp_list_bookmarks', array(self::CLASSNAME,'filter_links'),20); //nofollow links in custom footer widgets
|
@@ -268,6 +288,35 @@ class FooterCredits {
|
|
268 |
$atts = substr( $atts, 0, -1 );
|
269 |
return sprintf('<a rel="nofollow" %1$s>%2$s</a>', $atts, $matches[ 2 ]);
|
270 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
271 |
}
|
272 |
|
273 |
class Footer_Putter_Copyright_Widget extends WP_Widget {
|
@@ -283,7 +332,7 @@ class Footer_Putter_Copyright_Widget extends WP_Widget {
|
|
283 |
extract( $args );
|
284 |
$footer_args=array();
|
285 |
echo $before_widget;
|
286 |
-
echo
|
287 |
echo $after_widget;
|
288 |
}
|
289 |
|
@@ -293,26 +342,31 @@ class Footer_Putter_Copyright_Widget extends WP_Widget {
|
|
293 |
$instance['show_copyright'] = !empty($new_instance['show_copyright']) ? 1 : 0;
|
294 |
$instance['show_telephone'] = !empty($new_instance['show_telephone']) ? 1 : 0;
|
295 |
$instance['show_address'] = !empty($new_instance['show_address']) ? 1 : 0;
|
296 |
-
$instance['center'] = !empty($new_instance['center']) ? 1 : 0
|
|
|
297 |
$instance['show_return'] = !empty($new_instance['show_return']) ? 1 : 0;
|
|
|
|
|
298 |
return $instance;
|
299 |
}
|
300 |
|
301 |
function form( $instance ) {
|
302 |
-
$instance = wp_parse_args( (array) $instance,
|
303 |
-
array( 'show_return' => true,'nav_menu' => 0,'show_copyright' => true,'show_telephone' => true,'show_address' => true,'center' => true ) );
|
304 |
-
$nav_menu = isset( $instance['nav_menu'] ) ? (int) $instance['nav_menu'] : 0;
|
305 |
-
$show_return = isset( $instance['show_return'] ) ? (bool) $instance['show_return'] : false;
|
306 |
-
$show_copyright = isset( $instance['show_copyright'] ) ? (bool) $instance['show_copyright'] : false;
|
307 |
-
$show_telephone = isset( $instance['show_telephone'] ) ? (bool) $instance['show_telephone'] : false;
|
308 |
-
$show_address = isset( $instance['show_address'] ) ? (bool) $instance['show_address'] : false;
|
309 |
-
$center = isset( $instance['center'] ) ? (bool) $instance['center'] : false;
|
310 |
-
|
311 |
$menus = get_terms( 'nav_menu', array( 'hide_empty' => false ) );
|
312 |
if ( !$menus ) {
|
313 |
echo '<p>'. sprintf( __('No menus have been created yet. <a href="%s">Create some</a>.', self::DOMAIN ), admin_url('nav-menus.php') ) .'</p>';
|
314 |
return;
|
315 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
316 |
?>
|
317 |
<p>
|
318 |
<label for="<?php echo $this->get_field_id('nav_menu'); ?>"><?php _e('Select Footer Menu:', self::DOMAIN ); ?></label>
|
@@ -327,93 +381,27 @@ class Footer_Putter_Copyright_Widget extends WP_Widget {
|
|
327 |
?>
|
328 |
</select>
|
329 |
</p>
|
|
|
|
|
|
|
|
|
330 |
<input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('show_copyright', self::DOMAIN ); ?>" name="<?php echo $this->get_field_name('show_copyright'); ?>"<?php checked( $show_copyright ); ?> />
|
331 |
<label for="<?php echo $this->get_field_id('show_copyright'); ?>"><?php _e( 'Show Copyright' ); ?></label><br />
|
332 |
-
<input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('show_telephone', self::DOMAIN ); ?>" name="<?php echo $this->get_field_name('show_telephone'); ?>"<?php checked( $show_telephone ); ?> />
|
333 |
-
<label for="<?php echo $this->get_field_id('show_telephone'); ?>"><?php _e( 'Show Telephone number', self::DOMAIN ); ?></label><br />
|
334 |
<input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('show_address', self::DOMAIN ); ?>" name="<?php echo $this->get_field_name('show_address'); ?>"<?php checked( $show_address ); ?> />
|
335 |
<label for="<?php echo $this->get_field_id('show_address'); ?>"><?php _e( 'Show Address', self::DOMAIN ); ?></label><br />
|
336 |
-
<input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('
|
337 |
-
<label for="<?php echo $this->get_field_id('
|
338 |
<input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('show_return', self::DOMAIN ); ?>" name="<?php echo $this->get_field_name('show_return'); ?>"<?php checked( $show_return ); ?> />
|
339 |
<label for="<?php echo $this->get_field_id('show_return'); ?>"><?php _e( 'Show Return To Top Link' ); ?></label><br />
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
340 |
<?php
|
341 |
}
|
342 |
}
|
343 |
-
|
344 |
-
class Footer_Putter_TradeMark_Widget extends WP_Widget {
|
345 |
-
const DOMAIN = 'FooterCredits';
|
346 |
-
|
347 |
-
function __construct() {
|
348 |
-
$widget_ops = array('description' => __( "Trademarks, Service Marks and Kitemarks" ) );
|
349 |
-
parent::__construct('footer_trademarks', __('TradeMarks Widget'), $widget_ops);
|
350 |
-
}
|
351 |
-
|
352 |
-
function widget( $args, $instance ) {
|
353 |
-
extract($args, EXTR_SKIP);
|
354 |
-
|
355 |
-
$category = isset($instance['category']) ? $instance['category'] : false;
|
356 |
-
$orderby = isset( $instance['orderby'] ) ? $instance['orderby'] : 'name';
|
357 |
-
$order = $orderby == 'rating' ? 'DESC' : 'ASC';
|
358 |
-
$limit = isset( $instance['limit'] ) ? $instance['limit'] : -1;
|
359 |
-
|
360 |
-
$links = wp_list_bookmarks(apply_filters('widget_links_args', array(
|
361 |
-
'echo' => 0,
|
362 |
-
'title_before' => $before_title, 'title_after' => $after_title,
|
363 |
-
'title_li' => '', 'categorize' => false,
|
364 |
-
'before' => '', 'after' => '',
|
365 |
-
'category_before' => '', 'category_after' => '',
|
366 |
-
'show_images' => true, 'show_description' => false,
|
367 |
-
'show_name' => false, 'show_rating' => false,
|
368 |
-
'category' => $category, 'class' => 'trademark widget',
|
369 |
-
'orderby' => $orderby, 'order' => $order,
|
370 |
-
'limit' => $limit,
|
371 |
-
)));
|
372 |
-
echo $before_widget;
|
373 |
-
echo call_user_func(array(FOOTER_CREDITS,'filter_links'),$links);
|
374 |
-
echo $after_widget;
|
375 |
-
}
|
376 |
-
|
377 |
-
function update( $new_instance, $old_instance ) {
|
378 |
-
$new_instance = (array) $new_instance;
|
379 |
-
|
380 |
-
$instance['orderby'] = 'name';
|
381 |
-
if ( in_array( $new_instance['orderby'], array( 'name', 'rating', 'id', 'rand' ) ) )
|
382 |
-
$instance['orderby'] = $new_instance['orderby'];
|
383 |
-
|
384 |
-
$instance['category'] = intval( $new_instance['category'] );
|
385 |
-
$instance['limit'] = ! empty( $new_instance['limit'] ) ? intval( $new_instance['limit'] ) : -1;
|
386 |
-
|
387 |
-
return $instance;
|
388 |
-
}
|
389 |
-
|
390 |
-
function form( $instance ) {
|
391 |
-
$instance = wp_parse_args( (array) $instance, array( 'category' => false, 'orderby' => 'name', 'limit' => -1 ) );
|
392 |
-
$link_cats = get_terms( 'link_category' );
|
393 |
-
if ( ! $limit = intval( $instance['limit'] ) ) { $limit = -1; } ?>
|
394 |
-
<p>
|
395 |
-
<label for="<?php echo $this->get_field_id('category'); ?>"><?php _e( 'Select Link Category for Your Trademarks:', self::DOMAIN ); ?></label>
|
396 |
-
<select class="widefat" id="<?php echo $this->get_field_id('category'); ?>" name="<?php echo $this->get_field_name('category'); ?>">
|
397 |
-
<?php
|
398 |
-
foreach ( $link_cats as $link_cat ) {
|
399 |
-
echo '<option value="' . intval($link_cat->term_id) . '"'
|
400 |
-
. ( $link_cat->term_id == $instance['category'] ? ' selected="selected"' : '' )
|
401 |
-
. '>' . $link_cat->name . "</option>\n";
|
402 |
-
}
|
403 |
-
?>
|
404 |
-
</select>
|
405 |
-
<label for="<?php echo $this->get_field_id('orderby'); ?>"><?php _e( 'Sort by:', self::DOMAIN ); ?></label>
|
406 |
-
<select name="<?php echo $this->get_field_name('orderby'); ?>" id="<?php echo $this->get_field_id('orderby'); ?>" class="widefat">
|
407 |
-
<option value="name"<?php selected( $instance['orderby'], 'name' ); ?>><?php _e( 'Link title', self::DOMAIN); ?></option>
|
408 |
-
<option value="rating"<?php selected( $instance['orderby'], 'rating' ); ?>><?php _e( 'Link rating', self::DOMAIN ); ?></option>
|
409 |
-
<option value="id"<?php selected( $instance['orderby'], 'id' ); ?>><?php _e( 'Link ID', self::DOMAIN ); ?></option>
|
410 |
-
<option value="rand"<?php selected( $instance['orderby'], 'rand' ); ?>><?php _e( 'Random', self::DOMAIN ); ?></option>
|
411 |
-
</select>
|
412 |
-
</p>
|
413 |
-
<p>
|
414 |
-
<label for="<?php echo $this->get_field_id('limit'); ?>"><?php _e( 'Number of links to show:', self::DOMAIN ); ?></label>
|
415 |
-
<input id="<?php echo $this->get_field_id('limit'); ?>" name="<?php echo $this->get_field_name('limit'); ?>" type="text" value="<?php echo $limit == -1 ? '' : intval( $limit ); ?>" size="3" />
|
416 |
-
</p>
|
417 |
-
<?php
|
418 |
-
}
|
419 |
-
}
|
5 |
const CODE = 'footer-credits'; //shortcode
|
6 |
const OPTIONS_NAME = 'footer_credits_options';
|
7 |
const SIDEBAR_ID = 'last-footer';
|
8 |
+
const VERSION = '1.3';
|
9 |
private static $version;
|
10 |
protected static $options = array();
|
11 |
protected static $defaults = array(
|
23 |
'nav_menu' => 0,
|
24 |
'separator' => ' · ',
|
25 |
'center' => true,
|
26 |
+
'two_lines' => true,
|
27 |
'show_copyright' => true,
|
28 |
'show_telephone' => true,
|
29 |
'show_address' => true,
|
32 |
'return_href' => '#header',
|
33 |
'return_class' => '',
|
34 |
'footer_class' => '',
|
35 |
+
'footer_hook' => '',
|
36 |
+
'footer_remove' => true,
|
37 |
+
'footer_filter_hook' => ''
|
38 |
);
|
39 |
|
40 |
private static function get_version(){
|
41 |
return self::$version;
|
42 |
}
|
43 |
+
|
44 |
+
static function init() {
|
45 |
+
self::$version = self::VERSION;
|
46 |
+
self::theme_specific_defaults();
|
47 |
add_action('widgets_init',array(self::CLASSNAME,'register'),20);
|
48 |
add_filter( 'wp_nav_menu_items', array(self::CLASSNAME, 'fix_home_link'), 10, 2 );
|
49 |
if (!is_admin()) add_action('wp',array(self::CLASSNAME,'prepare'));
|
65 |
add_action('wp_enqueue_scripts',array(self::CLASSNAME, 'add_styles' ));
|
66 |
|
67 |
//insert custom footer at specified hook
|
68 |
+
if ($footer_hook = self::get_option('footer_hook')) {
|
69 |
+
if (self::get_option('footer_remove')) remove_all_actions( $footer_hook);
|
70 |
+
add_action( $footer_hook, array(self::CLASSNAME, 'custom_footer'));
|
71 |
+
}
|
72 |
|
73 |
+
//suppress footer output
|
74 |
+
if ($ffs = self::get_option('footer_filter_hook'))
|
75 |
+
add_filter($ffs, array(self::CLASSNAME, 'no_footer'),100);
|
76 |
+
|
77 |
+
if (is_page('terms') || is_page('privacy') || is_page('affiliates') || is_page('disclaimer'))
|
78 |
add_filter('the_content', array(self::CLASSNAME, 'terms_filter') );
|
79 |
}
|
80 |
}
|
97 |
|
98 |
|
99 |
static function add_styles() {
|
100 |
+
wp_enqueue_style(self::CLASSNAME, plugins_url('styles/footer-credits.css',dirname(__FILE__)), array(), self::get_version());
|
101 |
}
|
102 |
|
103 |
static function fix_home_link( $content, $args) {
|
104 |
+
$class = is_front_page()? ' class="current_page_item"' : '';
|
105 |
+
$home_linktexts = array('Home','<span>Home</span>');
|
106 |
+
foreach ($home_linktexts as $home_linktext) {
|
107 |
+
$home_link = sprintf('<a>%1$s</a>',$home_linktext);
|
108 |
+
if (strpos($content, $home_link) !== FALSE)
|
109 |
+
$content = str_replace ($home_link,sprintf('<a href="%1$s"%2$s>%3$s</a>',home_url(),$class,$home_linktext),$content);
|
110 |
}
|
111 |
return $content;
|
112 |
}
|
114 |
static function sanitize_terms($new_terms) {
|
115 |
$new_terms = wp_parse_args($new_terms, self::$defaults['terms']); //ensure terms are complete
|
116 |
$new_terms['site'] = self::get_default_site();
|
117 |
+
$new_terms['copyright'] = self::get_copyright($new_terms['copyright_start_year']); //generate copyright
|
118 |
return $new_terms;
|
119 |
}
|
120 |
|
145 |
if ($option_name && $options && array_key_exists($option_name,$options))
|
146 |
return $options[$option_name];
|
147 |
else
|
148 |
+
return false;
|
149 |
}
|
150 |
|
151 |
static function get_terms() {
|
181 |
$domain = strtolower(parse_url(site_url(),PHP_URL_HOST));
|
182 |
$p = strpos($domain,'www.') ;
|
183 |
if (($p !== FALSE) && ($p == 0)) $domain = substr($domain,4);
|
184 |
+
return $domain;
|
185 |
}
|
186 |
|
187 |
static function get_copyright($startyear){
|
221 |
static function footer($atts = array()) {
|
222 |
$params = shortcode_atts( self::get_options(), $atts ); //apply plugin defaults
|
223 |
if ($params['center']) {
|
224 |
+
$section_separator = ' ';
|
225 |
+
$item_separator = $params['two_lines'] ? '<br/>' : $params['separator'];
|
226 |
$params['return_class'] .= ' return-center';
|
227 |
$params['footer_class'] .= ' footer-center';
|
228 |
$clear = '';
|
229 |
} else {
|
230 |
+
$section_separator = $params['two_lines'] ? $params['separator'] : '<br/>' ;
|
231 |
+
$item_separator = '<br/>';
|
232 |
$params['return_class'] .= ' return-left';
|
233 |
$params['footer_class'] .= ' footer-right';
|
234 |
$clear = '<div class="clear"></div>';
|
242 |
self::CODE,
|
243 |
$params['footer_class'],
|
244 |
(empty($params['nav_menu']) ? '' : self::footer_menu($params['nav_menu'])),
|
245 |
+
(empty($params['show_copyright']) ? '' : sprintf('%1$s%2$s', $section_separator, $copyright)),
|
246 |
+
((empty($address) || empty($params['show_address'])) ? '' : sprintf('%1$s<span class="address">%2$s%3$s</span>', $item_separator, self::format_address($address, $params['separator']), self::get_term('country')) ),
|
247 |
+
((empty($telephone) || empty($params['show_telephone'])) ? '' : sprintf('%1$s<span class="telephone">%2$s</span>', $section_separator, $telephone) ),
|
248 |
$clear
|
249 |
);
|
250 |
}
|
269 |
echo '</div><!-- end .custom-footer -->';
|
270 |
}
|
271 |
}
|
272 |
+
|
273 |
+
static function no_footer($content) { return ''; }
|
274 |
|
275 |
static function add_footer_filter() {
|
276 |
add_filter('wp_list_bookmarks', array(self::CLASSNAME,'filter_links'),20); //nofollow links in custom footer widgets
|
288 |
$atts = substr( $atts, 0, -1 );
|
289 |
return sprintf('<a rel="nofollow" %1$s>%2$s</a>', $atts, $matches[ 2 ]);
|
290 |
}
|
291 |
+
|
292 |
+
static function is_terms_key($key) {
|
293 |
+
return array_key_exists($key, self::$defaults['terms']);
|
294 |
+
}
|
295 |
+
|
296 |
+
static function theme_specific_defaults() {
|
297 |
+
switch (basename( TEMPLATEPATH ) ) {
|
298 |
+
case 'twentyten':
|
299 |
+
self::$defaults['footer_hook'] = 'twentyten_credits'; break;
|
300 |
+
case 'twentyeleven':
|
301 |
+
self::$defaults['footer_hook'] = 'twentyeleven_credits'; break;
|
302 |
+
case 'twentytwelve':
|
303 |
+
self::$defaults['footer_hook'] = 'twentytwelve_credits'; break;
|
304 |
+
case 'delicate':
|
305 |
+
self::$defaults['footer_hook'] = 'get_footer'; break;
|
306 |
+
case 'genesis':
|
307 |
+
self::$defaults['footer_hook'] = 'genesis_footer';
|
308 |
+
self::$defaults['footer_filter_hook'] = 'genesis_footer_output';
|
309 |
+
break;
|
310 |
+
case 'graphene':
|
311 |
+
self::$defaults['footer_hook'] = 'graphene_footer'; break;
|
312 |
+
case 'pagelines':
|
313 |
+
self::$defaults['footer_hook'] = 'pagelines_leaf'; break;
|
314 |
+
default:
|
315 |
+
self::$defaults['footer_hook'] = 'wp_footer';
|
316 |
+
self::$defaults['footer_remove'] = false;
|
317 |
+
break;
|
318 |
+
}
|
319 |
+
}
|
320 |
}
|
321 |
|
322 |
class Footer_Putter_Copyright_Widget extends WP_Widget {
|
332 |
extract( $args );
|
333 |
$footer_args=array();
|
334 |
echo $before_widget;
|
335 |
+
echo FooterCredits::footer($instance);
|
336 |
echo $after_widget;
|
337 |
}
|
338 |
|
342 |
$instance['show_copyright'] = !empty($new_instance['show_copyright']) ? 1 : 0;
|
343 |
$instance['show_telephone'] = !empty($new_instance['show_telephone']) ? 1 : 0;
|
344 |
$instance['show_address'] = !empty($new_instance['show_address']) ? 1 : 0;
|
345 |
+
$instance['center'] = !empty($new_instance['center']) ? 1 : 0;
|
346 |
+
$instance['two_lines'] = !empty($new_instance['two_lines']) ? 1 : 0;
|
347 |
$instance['show_return'] = !empty($new_instance['show_return']) ? 1 : 0;
|
348 |
+
$instance['return_class'] = trim($new_instance['return_class']);
|
349 |
+
$instance['footer_class'] = trim($new_instance['footer_class']);
|
350 |
return $instance;
|
351 |
}
|
352 |
|
353 |
function form( $instance ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
354 |
$menus = get_terms( 'nav_menu', array( 'hide_empty' => false ) );
|
355 |
if ( !$menus ) {
|
356 |
echo '<p>'. sprintf( __('No menus have been created yet. <a href="%s">Create some</a>.', self::DOMAIN ), admin_url('nav-menus.php') ) .'</p>';
|
357 |
return;
|
358 |
}
|
359 |
+
$instance = wp_parse_args( (array) $instance,
|
360 |
+
array( 'nav_menu' => 0, 'center' => true, 'two_lines' => true, 'show_copyright' => true, 'show_address' => true, 'show_telephone' => true, 'show_return' => true ) );
|
361 |
+
$nav_menu = isset( $instance['nav_menu'] ) ? (int) $instance['nav_menu'] : 0;
|
362 |
+
$center = isset( $instance['center'] ) ? (bool) $instance['center'] : false;
|
363 |
+
$two_lines = isset( $instance['two_lines'] ) ? (bool) $instance['two_lines'] : false;
|
364 |
+
$show_copyright = isset( $instance['show_copyright'] ) ? (bool) $instance['show_copyright'] : false;
|
365 |
+
$show_address = isset( $instance['show_address'] ) ? (bool) $instance['show_address'] : false;
|
366 |
+
$show_telephone = isset( $instance['show_telephone'] ) ? (bool) $instance['show_telephone'] : false;
|
367 |
+
$show_return = isset( $instance['show_return'] ) ? (bool) $instance['show_return'] : false;
|
368 |
+
$return_class = isset( $instance['return_class'] ) ? $instance['return_class'] : '';
|
369 |
+
$footer_class = isset( $instance['footer_class'] ) ? $instance['footer_class'] : '';
|
370 |
?>
|
371 |
<p>
|
372 |
<label for="<?php echo $this->get_field_id('nav_menu'); ?>"><?php _e('Select Footer Menu:', self::DOMAIN ); ?></label>
|
381 |
?>
|
382 |
</select>
|
383 |
</p>
|
384 |
+
<input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('center', self::DOMAIN ); ?>" name="<?php echo $this->get_field_name('center'); ?>"<?php checked( $center ); ?> />
|
385 |
+
<label for="<?php echo $this->get_field_id('center'); ?>"><?php _e( 'Center Menu',self::DOMAIN ); ?></label><br/>
|
386 |
+
<input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('two_lines', self::DOMAIN ); ?>" name="<?php echo $this->get_field_name('two_lines'); ?>"<?php checked( $two_lines ); ?> />
|
387 |
+
<label for="<?php echo $this->get_field_id('two_lines'); ?>"><?php _e( 'Spread Over Two Lines',self::DOMAIN ); ?></label><br/>
|
388 |
<input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('show_copyright', self::DOMAIN ); ?>" name="<?php echo $this->get_field_name('show_copyright'); ?>"<?php checked( $show_copyright ); ?> />
|
389 |
<label for="<?php echo $this->get_field_id('show_copyright'); ?>"><?php _e( 'Show Copyright' ); ?></label><br />
|
|
|
|
|
390 |
<input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('show_address', self::DOMAIN ); ?>" name="<?php echo $this->get_field_name('show_address'); ?>"<?php checked( $show_address ); ?> />
|
391 |
<label for="<?php echo $this->get_field_id('show_address'); ?>"><?php _e( 'Show Address', self::DOMAIN ); ?></label><br />
|
392 |
+
<input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('show_telephone', self::DOMAIN ); ?>" name="<?php echo $this->get_field_name('show_telephone'); ?>"<?php checked( $show_telephone ); ?> />
|
393 |
+
<label for="<?php echo $this->get_field_id('show_telephone'); ?>"><?php _e( 'Show Telephone number', self::DOMAIN ); ?></label><br />
|
394 |
<input type="checkbox" class="checkbox" id="<?php echo $this->get_field_id('show_return', self::DOMAIN ); ?>" name="<?php echo $this->get_field_name('show_return'); ?>"<?php checked( $show_return ); ?> />
|
395 |
<label for="<?php echo $this->get_field_id('show_return'); ?>"><?php _e( 'Show Return To Top Link' ); ?></label><br />
|
396 |
+
<h4>Custom Classes (Optional)</h4>
|
397 |
+
<p>Add any custom CSS classes you want apply to the footer section content to change the font color and size.</p>
|
398 |
+
<p>For your convenience we have defined 3 classes <i>dark</i>, <i>light</i> and <i>white</i> but feel free
|
399 |
+
to define and use your own custom CSS classes.</p>
|
400 |
+
<label for="<?php echo $this->get_field_id('return_class'); ?>"><?php _e( 'Return To Top:', self::DOMAIN ); ?></label>
|
401 |
+
<input id="<?php echo $this->get_field_id('return_class'); ?>" name="<?php echo $this->get_field_name('return_class'); ?>" type="text" value="<?php echo $return_class; ?>" size="10" /><br/>
|
402 |
+
<label for="<?php echo $this->get_field_id('footer_class'); ?>"><?php _e( 'Footer Credits:', self::DOMAIN ); ?></label>
|
403 |
+
<input id="<?php echo $this->get_field_id('footer_class'); ?>" name="<?php echo $this->get_field_name('footer_class'); ?>" type="text" value="<?php echo $footer_class; ?>" size="10" />
|
404 |
<?php
|
405 |
}
|
406 |
}
|
407 |
+
FooterCredits::init();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
classes/footer-trademarks-admin.php
ADDED
@@ -0,0 +1,102 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class FooterTrademarksAdmin {
|
3 |
+
const CLASSNAME = 'FooterTrademarksAdmin'; //this class
|
4 |
+
const CODE = 'footer-putter'; //prefix ID of CSS elements
|
5 |
+
const DOMAIN = 'FooterPutter'; //text domain for translation
|
6 |
+
const SLUG = 'trademarks';
|
7 |
+
const FIELDNAME = 'not_on_404';
|
8 |
+
|
9 |
+
private static $initialized = false;
|
10 |
+
private static $parenthook;
|
11 |
+
private static $slug;
|
12 |
+
private static $screen_id;
|
13 |
+
|
14 |
+
public static function init($parent) {
|
15 |
+
if (self::$initialized) return true;
|
16 |
+
self::$initialized = true;
|
17 |
+
self::$parenthook = $parent;
|
18 |
+
self::$slug = self::$parenthook . '-' . self::SLUG;
|
19 |
+
self::$screen_id = self::$parenthook.'_page_' . self::$slug;
|
20 |
+
add_filter('screen_layout_columns', array(self::CLASSNAME, 'screen_layout_columns'), 10, 2);
|
21 |
+
add_action('admin_menu',array(self::CLASSNAME, 'admin_menu'));
|
22 |
+
}
|
23 |
+
|
24 |
+
private static function get_parenthook(){
|
25 |
+
return self::$parenthook;
|
26 |
+
}
|
27 |
+
|
28 |
+
public static function get_slug(){
|
29 |
+
return self::$slug;
|
30 |
+
}
|
31 |
+
|
32 |
+
private static function get_screen_id(){
|
33 |
+
return self::$screen_id;
|
34 |
+
}
|
35 |
+
|
36 |
+
public static function enable_screen($show_screen,$screen) {
|
37 |
+
if ($screen->id == self::get_screen_id())
|
38 |
+
return true;
|
39 |
+
else
|
40 |
+
return $show_screen;
|
41 |
+
}
|
42 |
+
|
43 |
+
public static function screen_layout_columns($columns, $screen) {
|
44 |
+
if (!defined( 'WP_NETWORK_ADMIN' ) && !defined( 'WP_USER_ADMIN' )) {
|
45 |
+
if ($screen == self::get_screen_id()) {
|
46 |
+
$columns[self::get_screen_id()] = 2;
|
47 |
+
}
|
48 |
+
}
|
49 |
+
return $columns;
|
50 |
+
}
|
51 |
+
|
52 |
+
public static function admin_menu() {
|
53 |
+
add_submenu_page(self::get_parenthook(), __('Trademarks'), __('Trademarks'), 'manage_options',
|
54 |
+
self::get_slug(), array(self::CLASSNAME,'settings_panel'));
|
55 |
+
add_action('load-'.self::get_screen_id(), array(self::CLASSNAME, 'load_page'));
|
56 |
+
}
|
57 |
+
|
58 |
+
public static function load_page() {
|
59 |
+
add_action ('admin_enqueue_scripts',array(self::CLASSNAME, 'enqueue_styles'));
|
60 |
+
}
|
61 |
+
|
62 |
+
public static function enqueue_styles() {
|
63 |
+
wp_enqueue_style(self::CODE.'-admin', plugins_url('styles/admin.css', dirname(__FILE__)), array(),GENESIS_CLUB_VERSION);
|
64 |
+
}
|
65 |
+
|
66 |
+
public static function settings_panel() {
|
67 |
+
$this_url = $_SERVER['REQUEST_URI'];
|
68 |
+
$title = sprintf('<h2>%1$s</h2>', __('Footer Trademarks', self::DOMAIN));
|
69 |
+
$screenshot2 = plugins_url('images/add-link-category.jpg',dirname(__FILE__));
|
70 |
+
$screenshot3 = plugins_url('images/add-link.jpg',dirname(__FILE__));
|
71 |
+
$linkcat = admin_url('edit-tags.php?taxonomy=link_category');
|
72 |
+
$linkcat = admin_url('link-add.php');
|
73 |
+
$widgets = admin_url('widgets.php');
|
74 |
+
?>
|
75 |
+
<div class="wrap">
|
76 |
+
<?php screen_icon(); echo $title; ?>
|
77 |
+
<div id="poststuff" class="metabox-holder"><div id="post-body"><div id="post-body-content">
|
78 |
+
<p class="notice">There are no settings on this page.</p>
|
79 |
+
<p class="notice">However, links are provided to where you set up trademarks or other symbols you want to appear in the footer.</p>
|
80 |
+
|
81 |
+
<p class="important">Firstly go to the <a href="<?php echo $linkcat;?>">Link Categories</a> and set up a link category called <i>Trademarks</i> or something similar.</p>
|
82 |
+
<p class="important">Next go to the <a href="<?php echo $addlink;?>">Add Link</a> and add a link for each trademark
|
83 |
+
specifying the Image URL, and optionally the link URL and of course adding each link to your chosen link category.</p>
|
84 |
+
<p class="important">Finally go to the <a href="<?php echo $widgets;?>">Appearance | Widgets</a> and drag a trademark widget into the custom footer widget
|
85 |
+
area and select <i>Trademarks</i> as the link category.</p>
|
86 |
+
|
87 |
+
<h2>Help On Trademarks</h2>
|
88 |
+
<p>Below are annotated screenshots of creating the link category and adding a link .
|
89 |
+
<p><img src="<?php echo $screenshot2;?>" alt="Screenshot of adding a trademark link category" /></p>
|
90 |
+
<p><img src="<?php echo $screenshot3;?>" alt="Screenshot of adding a trademark link " /></p>
|
91 |
+
<form id="misc_options" method="post" action="<?php echo $this_url; ?>">
|
92 |
+
<p>
|
93 |
+
<?php wp_nonce_field(self::CLASSNAME); ?>
|
94 |
+
<?php wp_nonce_field('closedpostboxes', 'closedpostboxesnonce', false ); ?>
|
95 |
+
<?php wp_nonce_field('meta-box-order', 'meta-box-order-nonce', false ); ?>
|
96 |
+
</p>
|
97 |
+
</form>
|
98 |
+
</div></div><br class="clear"/></div></div>
|
99 |
+
<?php
|
100 |
+
}
|
101 |
+
}
|
102 |
+
?>
|
classes/footer-trademarks.php
ADDED
@@ -0,0 +1,77 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
class Footer_Putter_TradeMark_Widget extends WP_Widget {
|
3 |
+
const DOMAIN = 'FooterPutter';
|
4 |
+
|
5 |
+
function __construct() {
|
6 |
+
$widget_ops = array('description' => __( 'Trademarks, Service Marks and Kitemarks', self::DOMAIN) );
|
7 |
+
parent::__construct('footer_trademarks', __('TradeMarks Widget', self::DOMAIN), $widget_ops);
|
8 |
+
}
|
9 |
+
|
10 |
+
function widget( $args, $instance ) {
|
11 |
+
extract($args, EXTR_SKIP);
|
12 |
+
|
13 |
+
$category = isset($instance['category']) ? $instance['category'] : false;
|
14 |
+
$orderby = isset( $instance['orderby'] ) ? $instance['orderby'] : 'name';
|
15 |
+
$order = $orderby == 'rating' ? 'DESC' : 'ASC';
|
16 |
+
$limit = isset( $instance['limit'] ) ? $instance['limit'] : -1;
|
17 |
+
|
18 |
+
$links = wp_list_bookmarks(apply_filters('widget_links_args', array(
|
19 |
+
'echo' => 0,
|
20 |
+
'title_before' => $before_title, 'title_after' => $after_title,
|
21 |
+
'title_li' => '', 'categorize' => false,
|
22 |
+
'before' => '', 'after' => '',
|
23 |
+
'category_before' => '', 'category_after' => '',
|
24 |
+
'show_images' => true, 'show_description' => false,
|
25 |
+
'show_name' => false, 'show_rating' => false,
|
26 |
+
'category' => $category, 'class' => 'trademark widget',
|
27 |
+
'orderby' => $orderby, 'order' => $order,
|
28 |
+
'limit' => $limit,
|
29 |
+
)));
|
30 |
+
echo $before_widget;
|
31 |
+
echo FooterCredits::filter_links($links);
|
32 |
+
echo $after_widget;
|
33 |
+
}
|
34 |
+
|
35 |
+
function update( $new_instance, $old_instance ) {
|
36 |
+
$new_instance = (array) $new_instance;
|
37 |
+
|
38 |
+
$instance['orderby'] = 'name';
|
39 |
+
if ( in_array( $new_instance['orderby'], array( 'name', 'rating', 'id', 'rand' ) ) )
|
40 |
+
$instance['orderby'] = $new_instance['orderby'];
|
41 |
+
|
42 |
+
$instance['category'] = intval( $new_instance['category'] );
|
43 |
+
$instance['limit'] = ! empty( $new_instance['limit'] ) ? intval( $new_instance['limit'] ) : -1;
|
44 |
+
|
45 |
+
return $instance;
|
46 |
+
}
|
47 |
+
|
48 |
+
function form( $instance ) {
|
49 |
+
$instance = wp_parse_args( (array) $instance, array( 'category' => false, 'orderby' => 'name', 'limit' => -1 ) );
|
50 |
+
$link_cats = get_terms( 'link_category' );
|
51 |
+
if ( ! $limit = intval( $instance['limit'] ) ) { $limit = -1; } ?>
|
52 |
+
<p>
|
53 |
+
<label for="<?php echo $this->get_field_id('category'); ?>"><?php _e( 'Select Link Category for Your Trademarks:', self::DOMAIN ); ?></label>
|
54 |
+
<select class="widefat" id="<?php echo $this->get_field_id('category'); ?>" name="<?php echo $this->get_field_name('category'); ?>">
|
55 |
+
<?php
|
56 |
+
foreach ( $link_cats as $link_cat ) {
|
57 |
+
echo '<option value="' . intval($link_cat->term_id) . '"'
|
58 |
+
. ( $link_cat->term_id == $instance['category'] ? ' selected="selected"' : '' )
|
59 |
+
. '>' . $link_cat->name . "</option>\n";
|
60 |
+
}
|
61 |
+
?>
|
62 |
+
</select>
|
63 |
+
<label for="<?php echo $this->get_field_id('orderby'); ?>"><?php _e( 'Sort by:', self::DOMAIN ); ?></label>
|
64 |
+
<select name="<?php echo $this->get_field_name('orderby'); ?>" id="<?php echo $this->get_field_id('orderby'); ?>" class="widefat">
|
65 |
+
<option value="name"<?php selected( $instance['orderby'], 'name' ); ?>><?php _e( 'Link title', self::DOMAIN); ?></option>
|
66 |
+
<option value="rating"<?php selected( $instance['orderby'], 'rating' ); ?>><?php _e( 'Link rating', self::DOMAIN ); ?></option>
|
67 |
+
<option value="id"<?php selected( $instance['orderby'], 'id' ); ?>><?php _e( 'Link ID', self::DOMAIN ); ?></option>
|
68 |
+
<option value="rand"<?php selected( $instance['orderby'], 'rand' ); ?>><?php _e( 'Random', self::DOMAIN ); ?></option>
|
69 |
+
</select>
|
70 |
+
</p>
|
71 |
+
<p>
|
72 |
+
<label for="<?php echo $this->get_field_id('limit'); ?>"><?php _e( 'Number of links to show:', self::DOMAIN ); ?></label>
|
73 |
+
<input id="<?php echo $this->get_field_id('limit'); ?>" name="<?php echo $this->get_field_name('limit'); ?>" type="text" value="<?php echo $limit == -1 ? '' : intval( $limit ); ?>" size="3" />
|
74 |
+
</p>
|
75 |
+
<?php
|
76 |
+
}
|
77 |
+
}
|
images/add-link-category.jpg
ADDED
Binary file
|
images/add-link.jpg
ADDED
Binary file
|
menu-icon.png → images/icon-16.png
RENAMED
File without changes
|
icon-32.png → images/icon-32.png
RENAMED
File without changes
|
logo.png → images/logo.png
RENAMED
File without changes
|
main.php
CHANGED
@@ -3,22 +3,25 @@
|
|
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_PLUGIN_NAME', 'footer-putter') ;
|
15 |
define('FOOTER_PUTTER_HOME_URL','http://www.diywebmastery.com/plugins/footer-putter/');
|
16 |
define('FOOTER_CREDITS','FooterCredits');
|
17 |
-
$dir = dirname(__FILE__) . '/';
|
18 |
require_once($dir . 'footer-credits.php');
|
19 |
-
|
20 |
if (is_admin()) {
|
21 |
-
require_once($dir . 'footer-credits-admin.php');
|
22 |
require_once($dir . 'admin.php');
|
|
|
|
|
|
|
|
|
23 |
}
|
24 |
?>
|
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.3
|
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.3');
|
13 |
define('FOOTER_PUTTER_FRIENDLY_NAME', 'Footer Putter') ;
|
14 |
define('FOOTER_PUTTER_PLUGIN_NAME', 'footer-putter') ;
|
15 |
define('FOOTER_PUTTER_HOME_URL','http://www.diywebmastery.com/plugins/footer-putter/');
|
16 |
define('FOOTER_CREDITS','FooterCredits');
|
17 |
+
$dir = dirname(__FILE__) . '/classes/';
|
18 |
require_once($dir . 'footer-credits.php');
|
19 |
+
require_once($dir . 'footer-trademarks.php');
|
20 |
if (is_admin()) {
|
|
|
21 |
require_once($dir . 'admin.php');
|
22 |
+
require_once($dir . 'footer-credits-admin.php');
|
23 |
+
require_once($dir . 'footer-trademarks-admin.php');
|
24 |
+
FooterCreditsAdmin::init(FOOTER_PUTTER_PLUGIN_NAME);
|
25 |
+
FooterTrademarksAdmin::init(FOOTER_PUTTER_PLUGIN_NAME);
|
26 |
}
|
27 |
?>
|
readme.txt
CHANGED
@@ -4,7 +4,7 @@ Donate link: http://www.diywebmastery.com/donate/
|
|
4 |
Tags: footer, copyright, rel=nofollow
|
5 |
Requires at least: 3.0
|
6 |
Tested up to: 3.5
|
7 |
-
Stable tag: 1.
|
8 |
License: GPLv2+
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
@@ -37,14 +37,15 @@ Put a footer on your site that boosts your credibility with both search engines
|
|
37 |
|
38 |
== Changelog ==
|
39 |
|
|
|
40 |
= 1.2 = Fix display of telephone number
|
41 |
= 1.1 = Fix link in admin.php from screenshot1.jpg to screenshot-1.jpg
|
42 |
= 1.0 = Initial release
|
43 |
|
44 |
== Upgrade Notice ==
|
45 |
|
46 |
-
= 1.
|
47 |
-
*
|
48 |
|
49 |
== Links ==
|
50 |
|
4 |
Tags: footer, copyright, rel=nofollow
|
5 |
Requires at least: 3.0
|
6 |
Tested up to: 3.5
|
7 |
+
Stable tag: 1.3
|
8 |
License: GPLv2+
|
9 |
License URI: http://www.gnu.org/licenses/gpl-2.0.html
|
10 |
|
37 |
|
38 |
== Changelog ==
|
39 |
|
40 |
+
= 1.3 = Pre-configure according to the WordPress theme
|
41 |
= 1.2 = Fix display of telephone number
|
42 |
= 1.1 = Fix link in admin.php from screenshot1.jpg to screenshot-1.jpg
|
43 |
= 1.0 = Initial release
|
44 |
|
45 |
== Upgrade Notice ==
|
46 |
|
47 |
+
= 1.3 =
|
48 |
+
* Optional - Pre-configure settings to make it work with more themes out of the box.
|
49 |
|
50 |
== Links ==
|
51 |
|
admin.css → styles/admin.css
RENAMED
@@ -1,10 +1,13 @@
|
|
1 |
-
div.icon32 { background-image : url(icon-32.png); background-repeat: no-repeat;}
|
2 |
#poststuff { margin-right: 20px; }
|
3 |
#poststuff input.error, #poststuff select.error { border: 1px solid red; background-color : #FEE; }
|
4 |
#poststuff div#message { margin-left: 10px; display: inline; padding: 10px; }
|
5 |
#poststuff div#message div.updated { margin-left: 30px; padding: 8px; display: inline; }
|
6 |
#poststuff label { display: inline-block; min-width: 200px; margin-right: 10px;}
|
7 |
|
|
|
|
|
|
|
8 |
/* tooltips */
|
9 |
.tooltip {position: relative; cursor: help; display: inline-block; text-decoration: none;
|
10 |
color: #222; outline: none; }
|
1 |
+
div.icon32 { background-image : url(../images/icon-32.png); background-repeat: no-repeat;}
|
2 |
#poststuff { margin-right: 20px; }
|
3 |
#poststuff input.error, #poststuff select.error { border: 1px solid red; background-color : #FEE; }
|
4 |
#poststuff div#message { margin-left: 10px; display: inline; padding: 10px; }
|
5 |
#poststuff div#message div.updated { margin-left: 30px; padding: 8px; display: inline; }
|
6 |
#poststuff label { display: inline-block; min-width: 200px; margin-right: 10px;}
|
7 |
|
8 |
+
.trademark { vertical-align: top; border: 1px dashed whitesmoke; }
|
9 |
+
.trademark:hover { cursor: move; }
|
10 |
+
|
11 |
/* tooltips */
|
12 |
.tooltip {position: relative; cursor: help; display: inline-block; text-decoration: none;
|
13 |
color: #222; outline: none; }
|
style.css → styles/footer-credits.css
RENAMED
@@ -14,6 +14,11 @@
|
|
14 |
#footer-credits span.copyright, #footer-credits span.telephone, #footer-credits span.address {
|
15 |
font-weight: normal; letter-spacing : normal; text-transform: none; margin: 0 10px; vertical-align: middle;
|
16 |
background: inherit; border : none; float: none; display: inline; }
|
17 |
-
|
18 |
-
.
|
19 |
-
.
|
|
|
|
|
|
|
|
|
|
14 |
#footer-credits span.copyright, #footer-credits span.telephone, #footer-credits span.address {
|
15 |
font-weight: normal; letter-spacing : normal; text-transform: none; margin: 0 10px; vertical-align: middle;
|
16 |
background: inherit; border : none; float: none; display: inline; }
|
17 |
+
#footer-credits.dark, #footer-credits.dark a, .dark a , .dark a:visited { color : #222222; }
|
18 |
+
#footer-credits.light, #footer-credits.light a, .light a, .light a:visited { color : #DDDDDD; }
|
19 |
+
#footer-credits.white, #footer-credits.white a, .white a, .white a:visited { color : white; }
|
20 |
+
|
21 |
+
.widget_footer_trademarks { text-align: center; margin: 10px 0;}
|
22 |
+
.widget_footer_trademarks a { margin: 10px; }
|
23 |
+
.widget_footer_trademarks img { border: 0 !important; }
|
24 |
+
|