Version Description
Download this release
Release Info
Developer | SEO Design Solutions |
Plugin | SEO Ultimate |
Version | 0.7 |
Comparing to | |
See all releases |
Code changes from version 0.6 to 0.7
- class.seo-ultimate.php +6 -6
- class.su-module.php +86 -1
- class.su-parentmodule.php +52 -0
- modules/404s.php +3 -3
- modules/modules.php +160 -0
- modules/sds-blog.php +2 -2
- modules/stats.php +0 -54
- readme.txt +6 -2
- seo-ultimate.css +79 -0
- seo-ultimate.php +5 -4
- seo-ultimate.pot +40 -10
class.seo-ultimate.php
CHANGED
@@ -2,11 +2,11 @@
|
|
2 |
/**
|
3 |
* The main class. Provides plugin-level functionality.
|
4 |
*
|
5 |
-
* @version 1.3.
|
6 |
* @since 0.1
|
7 |
*/
|
8 |
class SEO_Ultimate {
|
9 |
-
|
10 |
/********** VARIABLES **********/
|
11 |
|
12 |
/**
|
@@ -652,7 +652,7 @@ class SEO_Ultimate {
|
|
652 |
|
653 |
/**
|
654 |
* Converts a module key to a menu hook.
|
655 |
-
* (Makes the "
|
656 |
*
|
657 |
* @since 0.1
|
658 |
*
|
@@ -661,7 +661,7 @@ class SEO_Ultimate {
|
|
661 |
*/
|
662 |
function key_to_hook($key) {
|
663 |
switch ($key) {
|
664 |
-
case '
|
665 |
case 'settings': return 'seo-ultimate'; break;
|
666 |
default: return "su-$key"; break;
|
667 |
}
|
@@ -669,7 +669,7 @@ class SEO_Ultimate {
|
|
669 |
|
670 |
/**
|
671 |
* Converts a menu hook to a module key.
|
672 |
-
* (If the "SEO" parent item is clicked, then the
|
673 |
*
|
674 |
* @since 0.1
|
675 |
*
|
@@ -678,7 +678,7 @@ class SEO_Ultimate {
|
|
678 |
*/
|
679 |
function hook_to_key($hook) {
|
680 |
switch ($hook) {
|
681 |
-
case 'seo': return '
|
682 |
case 'seo-ultimate': return 'settings'; break;
|
683 |
default: return substr($hook, 3); break;
|
684 |
}
|
2 |
/**
|
3 |
* The main class. Provides plugin-level functionality.
|
4 |
*
|
5 |
+
* @version 1.3.2
|
6 |
* @since 0.1
|
7 |
*/
|
8 |
class SEO_Ultimate {
|
9 |
+
|
10 |
/********** VARIABLES **********/
|
11 |
|
12 |
/**
|
652 |
|
653 |
/**
|
654 |
* Converts a module key to a menu hook.
|
655 |
+
* (Makes the "Module Manager" module load when the "SEO" parent item is clicked.)
|
656 |
*
|
657 |
* @since 0.1
|
658 |
*
|
661 |
*/
|
662 |
function key_to_hook($key) {
|
663 |
switch ($key) {
|
664 |
+
case 'modules': return 'seo'; break;
|
665 |
case 'settings': return 'seo-ultimate'; break;
|
666 |
default: return "su-$key"; break;
|
667 |
}
|
669 |
|
670 |
/**
|
671 |
* Converts a menu hook to a module key.
|
672 |
+
* (If the "SEO" parent item is clicked, then the Module Manager is being shown.)
|
673 |
*
|
674 |
* @since 0.1
|
675 |
*
|
678 |
*/
|
679 |
function hook_to_key($hook) {
|
680 |
switch ($hook) {
|
681 |
+
case 'seo': return 'modules'; break;
|
682 |
case 'seo-ultimate': return 'settings'; break;
|
683 |
default: return substr($hook, 3); break;
|
684 |
}
|
class.su-module.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* The pseudo-abstract class upon which all modules are based.
|
4 |
*
|
5 |
* @abstract
|
6 |
-
* @version 1.
|
7 |
* @since 0.1
|
8 |
*/
|
9 |
class SU_Module {
|
@@ -239,6 +239,22 @@ class SU_Module {
|
|
239 |
return isset($seo_ultimate->modules[$key]);
|
240 |
}
|
241 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
242 |
|
243 |
/********** SETTINGS FUNCTIONS **********/
|
244 |
|
@@ -393,6 +409,75 @@ class SU_Module {
|
|
393 |
echo "\n</div>\n</div>\n";
|
394 |
}
|
395 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
396 |
/**
|
397 |
* Adds plugin/module information to the admin footer.
|
398 |
*
|
3 |
* The pseudo-abstract class upon which all modules are based.
|
4 |
*
|
5 |
* @abstract
|
6 |
+
* @version 1.4
|
7 |
* @since 0.1
|
8 |
*/
|
9 |
class SU_Module {
|
239 |
return isset($seo_ultimate->modules[$key]);
|
240 |
}
|
241 |
|
242 |
+
/**
|
243 |
+
* Returns the absolute URL of the module's admin page.
|
244 |
+
*
|
245 |
+
* @since 0.7
|
246 |
+
*/
|
247 |
+
function get_admin_url() {
|
248 |
+
if ($key = $this->get_parent_module()) {
|
249 |
+
$anchor = '#'.SEO_Ultimate::key_to_hook($this->get_module_key());
|
250 |
+
} else {
|
251 |
+
$key = $this->get_module_key();
|
252 |
+
$anchor = '';
|
253 |
+
}
|
254 |
+
|
255 |
+
return admin_url('admin.php?page='.SEO_Ultimate::key_to_hook($key).$anchor);
|
256 |
+
}
|
257 |
+
|
258 |
|
259 |
/********** SETTINGS FUNCTIONS **********/
|
260 |
|
409 |
echo "\n</div>\n</div>\n";
|
410 |
}
|
411 |
|
412 |
+
/**
|
413 |
+
* Outputs a tab control and loads the current tab.
|
414 |
+
*
|
415 |
+
* @since 0.7
|
416 |
+
* @uses get_admin_url()
|
417 |
+
*
|
418 |
+
* @param array $tabs The names of the functions that display the tab contents are the array keys, and the internationalized tab titles are the array values.
|
419 |
+
*/
|
420 |
+
function admin_page_tabs($tabs = array(), $tabset = 'su-tabset') {
|
421 |
+
|
422 |
+
echo "\n\n<div id='$tabset' class='su-tabs'>\n";
|
423 |
+
|
424 |
+
foreach ($tabs as $function => $title) {
|
425 |
+
echo "<fieldset id='$function'>\n<h3>$title</h3>\n";
|
426 |
+
if (is_callable($call = array($this, $function))) call_user_func($call);
|
427 |
+
echo "</fieldset>\n";
|
428 |
+
}
|
429 |
+
echo "</div>\n";
|
430 |
+
?>
|
431 |
+
|
432 |
+
<script type="text/javascript">
|
433 |
+
/* <![CDATA[ */
|
434 |
+
jQuery(function()
|
435 |
+
{
|
436 |
+
su_init_tabs();
|
437 |
+
});
|
438 |
+
|
439 |
+
function su_init_tabs()
|
440 |
+
{
|
441 |
+
/* if this is not the breadcrumb admin page, quit */
|
442 |
+
if (!jQuery("#<?php echo $tabset; ?>").length) return;
|
443 |
+
|
444 |
+
/* init markup for tabs */
|
445 |
+
jQuery('#<?php echo $tabset; ?>').prepend("<ul><\/ul>");
|
446 |
+
jQuery('#<?php echo $tabset; ?> > fieldset').each(function(i)
|
447 |
+
{
|
448 |
+
id = jQuery(this).attr('id');
|
449 |
+
caption = jQuery(this).find('h3').text();
|
450 |
+
jQuery('#<?php echo $tabset; ?> > ul').append('<li><a href="#'+id+'"><span>'+caption+"<\/span><\/a><\/li>");
|
451 |
+
jQuery(this).find('h3').hide();
|
452 |
+
});
|
453 |
+
|
454 |
+
/* init the tabs plugin */
|
455 |
+
var jquiver = undefined == jQuery.ui ? [0,0,0] : undefined == jQuery.ui.version ? [0,1,0] : jQuery.ui.version.split('.');
|
456 |
+
switch(true) {
|
457 |
+
// tabs plugin has been fixed to work on the parent element again.
|
458 |
+
case jquiver[0] >= 1 && jquiver[1] >= 7:
|
459 |
+
jQuery("#<?php echo $tabset; ?>").tabs();
|
460 |
+
break;
|
461 |
+
// tabs plugin has bug and needs to work on ul directly.
|
462 |
+
default:
|
463 |
+
jQuery("#<?php echo $tabset; ?> > ul").tabs();
|
464 |
+
}
|
465 |
+
|
466 |
+
/* handler for openeing the last tab after submit (compability version) */
|
467 |
+
jQuery('#<?php echo $tabset; ?> ul a').click(function(i){
|
468 |
+
var form = jQuery('#bcn_admin_options');
|
469 |
+
var action = form.attr("action").split('#', 1) + jQuery(this).attr('href');
|
470 |
+
// an older bug pops up with some jQuery version(s), which makes it
|
471 |
+
// necessary to set the form's action attribute by standard javascript
|
472 |
+
// node access:
|
473 |
+
form.get(0).setAttribute("action", action);
|
474 |
+
});
|
475 |
+
}
|
476 |
+
</script>
|
477 |
+
|
478 |
+
<?php
|
479 |
+
}
|
480 |
+
|
481 |
/**
|
482 |
* Adds plugin/module information to the admin footer.
|
483 |
*
|
class.su-parentmodule.php
ADDED
@@ -0,0 +1,52 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Parent Module
|
4 |
+
*
|
5 |
+
* @abstract
|
6 |
+
* @version 1.0
|
7 |
+
* @since 0.7
|
8 |
+
*/
|
9 |
+
|
10 |
+
if (class_exists('SU_Module')) {
|
11 |
+
|
12 |
+
class SU_ParentModule extends SU_Module {
|
13 |
+
|
14 |
+
var $modules = array();
|
15 |
+
|
16 |
+
function init() {
|
17 |
+
global $seo_ultimate;
|
18 |
+
foreach ($seo_ultimate->modules as $key => $module) {
|
19 |
+
if ($module->get_parent_module() == $this->get_module_key()) {
|
20 |
+
$this->modules[$key] = $module;
|
21 |
+
}
|
22 |
+
}
|
23 |
+
}
|
24 |
+
|
25 |
+
function admin_page_contents() {
|
26 |
+
$this->admin_form_start(false, false);
|
27 |
+
|
28 |
+
foreach ($this->modules as $key => $module) {
|
29 |
+
echo "\n<div id='".SEO_Ultimate::key_to_hook($key)."'>\n";
|
30 |
+
$this->admin_subheader($module->get_page_title());
|
31 |
+
$module->admin_page_contents();
|
32 |
+
echo "</div>\n\n";
|
33 |
+
}
|
34 |
+
|
35 |
+
$this->admin_form_end(false, false);
|
36 |
+
}
|
37 |
+
|
38 |
+
function admin_help() {
|
39 |
+
$help = '';
|
40 |
+
|
41 |
+
foreach ($this->modules as $key => $module) {
|
42 |
+
if ($childhelp = $module->admin_help())
|
43 |
+
$help .= "\n<h6>".$module->get_page_title()."</h6>\n$childhelp\n";
|
44 |
+
}
|
45 |
+
|
46 |
+
if (strlen($help)) return $help; else return false;
|
47 |
+
}
|
48 |
+
|
49 |
+
}
|
50 |
+
|
51 |
+
}
|
52 |
+
?>
|
modules/404s.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* 404 Monitor Module
|
4 |
*
|
5 |
-
* @version 1.0
|
6 |
* @since 0.4
|
7 |
*/
|
8 |
|
@@ -17,12 +17,12 @@ class SU_404s extends SU_Module {
|
|
17 |
}
|
18 |
|
19 |
function get_menu_title() { return __('404 Monitor', 'seo-ultimate'); }
|
20 |
-
|
|
|
21 |
global $wpdb;
|
22 |
$table = SEO_Ultimate::get_table_name('hits');
|
23 |
return $wpdb->query("SELECT id FROM $table WHERE status_code=404 AND is_new=1");
|
24 |
}
|
25 |
-
function get_menu_count_label() { return __('New 404 Errors', 'seo-ultimate'); }*/
|
26 |
|
27 |
function admin_page_contents() {
|
28 |
|
2 |
/**
|
3 |
* 404 Monitor Module
|
4 |
*
|
5 |
+
* @version 1.0.1
|
6 |
* @since 0.4
|
7 |
*/
|
8 |
|
17 |
}
|
18 |
|
19 |
function get_menu_title() { return __('404 Monitor', 'seo-ultimate'); }
|
20 |
+
|
21 |
+
function get_menu_count() {
|
22 |
global $wpdb;
|
23 |
$table = SEO_Ultimate::get_table_name('hits');
|
24 |
return $wpdb->query("SELECT id FROM $table WHERE status_code=404 AND is_new=1");
|
25 |
}
|
|
|
26 |
|
27 |
function admin_page_contents() {
|
28 |
|
modules/modules.php
ADDED
@@ -0,0 +1,160 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Module Manager Module
|
4 |
+
*
|
5 |
+
* @version 1.0
|
6 |
+
* @since 0.7
|
7 |
+
*/
|
8 |
+
|
9 |
+
if (class_exists('SU_Module')) {
|
10 |
+
|
11 |
+
class SU_Modules extends SU_Module {
|
12 |
+
|
13 |
+
function get_menu_title() { return __('Module Manager', 'seo-ultimate'); }
|
14 |
+
function get_menu_pos() { return 10; }
|
15 |
+
|
16 |
+
function init() {
|
17 |
+
global $seo_ultimate;
|
18 |
+
|
19 |
+
if ($_GET['page'] == SEO_Ultimate::key_to_hook($this->get_module_key()) && $this->is_action('update')) {
|
20 |
+
|
21 |
+
$module_statuses = maybe_unserialize(get_option('su_modules', false));
|
22 |
+
|
23 |
+
foreach ($_POST as $key => $value) {
|
24 |
+
if (substr($key, 0, 3) == 'su-') {
|
25 |
+
$key = str_replace(array('su-', '-module-status'), '', $key);
|
26 |
+
$module_statuses[$key] = intval($value);
|
27 |
+
}
|
28 |
+
}
|
29 |
+
|
30 |
+
$seo_ultimate->module_status = $module_statuses;
|
31 |
+
update_option('su_modules', serialize($module_statuses));
|
32 |
+
}
|
33 |
+
|
34 |
+
}
|
35 |
+
|
36 |
+
function admin_page_contents() {
|
37 |
+
global $seo_ultimate;
|
38 |
+
|
39 |
+
echo "<p>";
|
40 |
+
_e("Here you can disable or hide modules you don’t use. You can also silence modules from displaying bubble alerts on the menu.", 'seo-ultimate');
|
41 |
+
echo "</p>";
|
42 |
+
|
43 |
+
$this->admin_form_start(false, false);
|
44 |
+
|
45 |
+
$headers = array(
|
46 |
+
__("Status", 'seo-ultimate')
|
47 |
+
, __("Module", 'seo-ultimate')
|
48 |
+
);
|
49 |
+
echo <<<STR
|
50 |
+
<table class="widefat" cellspacing="0">
|
51 |
+
<thead><tr>
|
52 |
+
<th scope="col" class="module-status">{$headers[0]}</th>
|
53 |
+
<th scope="col" class="module-name">{$headers[1]}</th>
|
54 |
+
</tr></thead>
|
55 |
+
<tbody>
|
56 |
+
|
57 |
+
STR;
|
58 |
+
|
59 |
+
$statuses = array(
|
60 |
+
SU_MODULE_ENABLED => __('Enabled', 'seo-ultimate')
|
61 |
+
, SU_MODULE_SILENCED => __('Silenced', 'seo-ultimate')
|
62 |
+
, SU_MODULE_HIDDEN => __('Hidden', 'seo-ultimate')
|
63 |
+
, SU_MODULE_DISABLED => __('Disabled', 'seo-ultimate')
|
64 |
+
);
|
65 |
+
|
66 |
+
$modules = array();
|
67 |
+
|
68 |
+
foreach ($seo_ultimate->modules as $key => $module)
|
69 |
+
if (get_parent_class($module) == 'SU_Module' && !in_array($key, array('stats', 'modules')))
|
70 |
+
$modules[$key] = $module->get_page_title();
|
71 |
+
|
72 |
+
$modules = array_merge($modules, $seo_ultimate->disabled_modules);
|
73 |
+
asort($modules);
|
74 |
+
|
75 |
+
foreach ($modules as $key => $name) {
|
76 |
+
|
77 |
+
$currentstatus = $seo_ultimate->module_status[$key];
|
78 |
+
|
79 |
+
echo "\t\t<tr>\n\t\t\t<td class='module-status' id='$key-module-status'>\n";
|
80 |
+
echo "\t\t\t\t<input type='hidden' name='su-$key-module-status' id='su-$key-module-status' value='$currentstatus' />\n";
|
81 |
+
|
82 |
+
foreach ($statuses as $statuscode => $statuslabel) {
|
83 |
+
if ($currentstatus == $statuscode) $current = ' current'; else $current = '';
|
84 |
+
$codeclass = str_replace('-', 'n', strval($statuscode));
|
85 |
+
echo "\t\t\t\t\t<span class='status-$codeclass'>";
|
86 |
+
echo "<a href='javascript:void(0)' onclick=\"javascript:set_module_status('$key', $statuscode, this)\" class='$current'>$statuslabel</a></span>\n";
|
87 |
+
}
|
88 |
+
|
89 |
+
if ($seo_ultimate->module_status[$key] > SU_MODULE_DISABLED) {
|
90 |
+
$cellcontent = "<a href='".$seo_ultimate->modules[$key]->get_admin_url()."'>$name</a>";
|
91 |
+
} else
|
92 |
+
$cellcontent = $name;
|
93 |
+
|
94 |
+
echo <<<STR
|
95 |
+
</td>
|
96 |
+
<td class='module-name'>
|
97 |
+
$cellcontent
|
98 |
+
</td>
|
99 |
+
</tr>
|
100 |
+
|
101 |
+
STR;
|
102 |
+
}
|
103 |
+
|
104 |
+
echo "\t</tbody>\n</table>\n";
|
105 |
+
|
106 |
+
$this->admin_form_end(false, false);
|
107 |
+
}
|
108 |
+
}
|
109 |
+
|
110 |
+
} elseif ($_GET['css'] == 'admin') {
|
111 |
+
header('Content-type: text/css');
|
112 |
+
?>
|
113 |
+
|
114 |
+
#su-modules td.module-status {
|
115 |
+
padding-right: 2em;
|
116 |
+
}
|
117 |
+
|
118 |
+
#su-modules td.module-status input {
|
119 |
+
display: none;
|
120 |
+
}
|
121 |
+
|
122 |
+
#su-modules td.module-status a {
|
123 |
+
float: left;
|
124 |
+
display: block;
|
125 |
+
border: 1px solid white;
|
126 |
+
padding: 0.3em 0.5em;
|
127 |
+
color: #999;
|
128 |
+
margin-right: 0.2em;
|
129 |
+
}
|
130 |
+
|
131 |
+
#su-modules td.module-status a:hover {
|
132 |
+
border-color: #ccc #666 #666 #ccc;
|
133 |
+
}
|
134 |
+
|
135 |
+
#su-modules td.module-status a.current {
|
136 |
+
border-color: #666 #ccc #ccc #666;
|
137 |
+
}
|
138 |
+
|
139 |
+
#su-modules td.module-status .status-10 a.current { color: green; }
|
140 |
+
#su-modules td.module-status .status-5 a.current { color: black; }
|
141 |
+
#su-modules td.module-status .status-0 a.current { color: darkorange; }
|
142 |
+
#su-modules td.module-status .status-n10 a.current{ color: red; }
|
143 |
+
|
144 |
+
<?php
|
145 |
+
} elseif ($_GET['js'] == 'admin') {
|
146 |
+
header('Content-type: text/javascript');
|
147 |
+
?>
|
148 |
+
|
149 |
+
function set_module_status(key, input_value, a_obj) {
|
150 |
+
var td_id = key+"-module-status";
|
151 |
+
var input_id = "su-"+td_id;
|
152 |
+
|
153 |
+
jQuery("td#"+td_id+" a").removeClass("current");
|
154 |
+
document.getElementById(input_id).value = input_value;
|
155 |
+
a_obj.className += " current";
|
156 |
+
}
|
157 |
+
|
158 |
+
<?php
|
159 |
+
}
|
160 |
+
?>
|
modules/sds-blog.php
CHANGED
@@ -2,7 +2,7 @@
|
|
2 |
/**
|
3 |
* SEO Design Solutions Whitepapers Module
|
4 |
*
|
5 |
-
* @version 1.0.
|
6 |
* @since 0.1
|
7 |
*/
|
8 |
|
@@ -12,7 +12,7 @@ class SU_SdsBlog extends SU_Module {
|
|
12 |
|
13 |
function get_page_title() { return __('SEO Design Solutions Whitepapers', 'seo-ultimate'); }
|
14 |
function get_menu_title() { return __('Whitepapers', 'seo-ultimate'); }
|
15 |
-
function get_menu_count() { return
|
16 |
|
17 |
function __construct() {
|
18 |
add_filter('su_settings_export_array', array($this, 'filter_export_array'));
|
2 |
/**
|
3 |
* SEO Design Solutions Whitepapers Module
|
4 |
*
|
5 |
+
* @version 1.0.2
|
6 |
* @since 0.1
|
7 |
*/
|
8 |
|
12 |
|
13 |
function get_page_title() { return __('SEO Design Solutions Whitepapers', 'seo-ultimate'); }
|
14 |
function get_menu_title() { return __('Whitepapers', 'seo-ultimate'); }
|
15 |
+
function get_menu_count() { return $this->get_unread_count(); }
|
16 |
|
17 |
function __construct() {
|
18 |
add_filter('su_settings_export_array', array($this, 'filter_export_array'));
|
modules/stats.php
DELETED
@@ -1,54 +0,0 @@
|
|
1 |
-
<?php
|
2 |
-
/**
|
3 |
-
* Stats Central Module
|
4 |
-
*
|
5 |
-
* @version 0.1.2
|
6 |
-
* @since 0.1
|
7 |
-
*/
|
8 |
-
|
9 |
-
if (class_exists('SU_Module')) {
|
10 |
-
|
11 |
-
class SU_Stats extends SU_Module {
|
12 |
-
|
13 |
-
function get_page_title() { return __('Modules', 'seo-ultimate'); } //SEO Stats Central
|
14 |
-
function get_menu_title() { return __('Modules', 'seo-ultimate'); } //Stats Central
|
15 |
-
function get_menu_pos() { return 10; }
|
16 |
-
|
17 |
-
function admin_page_contents() {
|
18 |
-
echo "<ul>";
|
19 |
-
global $seo_ultimate;
|
20 |
-
foreach ($seo_ultimate->modules as $module) {
|
21 |
-
if ($module->get_menu_parent() == 'seo' && $module->get_parent_module() === false) {
|
22 |
-
$key = $module->get_module_key();
|
23 |
-
if ($key != $this->get_module_key()) {
|
24 |
-
$key = SEO_Ultimate::key_to_hook($key);
|
25 |
-
$title = $module->get_menu_title();
|
26 |
-
echo "<li><a href='admin.php?page=$key'>$title</a></li>\n";
|
27 |
-
}
|
28 |
-
}
|
29 |
-
}
|
30 |
-
echo "</ul>";
|
31 |
-
}
|
32 |
-
|
33 |
-
function admin_help() {
|
34 |
-
return __(<<<STR
|
35 |
-
<p>Click a module’s name to open its admin page.</p>
|
36 |
-
STR
|
37 |
-
, 'seo-ultimate');
|
38 |
-
}
|
39 |
-
|
40 |
-
}
|
41 |
-
|
42 |
-
} elseif ($_GET['css'] == 'admin') {
|
43 |
-
header('Content-type: text/css');
|
44 |
-
?>
|
45 |
-
|
46 |
-
#su-stats ul {
|
47 |
-
margin: 1em 0;
|
48 |
-
list-style-type: disc;
|
49 |
-
padding-left: 1em;
|
50 |
-
}
|
51 |
-
|
52 |
-
<?php
|
53 |
-
}
|
54 |
-
?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
readme.txt
CHANGED
@@ -1,9 +1,9 @@
|
|
1 |
=== SEO Ultimate ===
|
2 |
Contributors: SEO Design Solutions
|
3 |
-
Tags: seo, title, meta, noindex, canonical, 404, google, yahoo, bing, search engines, admin, post, page
|
4 |
Requires at least: 2.7
|
5 |
Tested up to: 2.8
|
6 |
-
Stable tag: 0.
|
7 |
|
8 |
This all-in-one SEO plugin can handle titles, noindex, meta data, canonical tags, 404 error tracking, and more (with many more features coming soon).
|
9 |
|
@@ -85,6 +85,10 @@ Because of the tremendous effort put into this plugin, we ask that you please le
|
|
85 |
|
86 |
== Changelog ==
|
87 |
|
|
|
|
|
|
|
|
|
88 |
= Version 0.6 (July 2, 2009) =
|
89 |
* Feature: Added the Linkbox Inserter module
|
90 |
* Bugfix: Fixed plugin notices bug
|
1 |
=== SEO Ultimate ===
|
2 |
Contributors: SEO Design Solutions
|
3 |
+
Tags: seo, title, meta, noindex, canonical, 404, google, yahoo, bing, search engines, admin, post, page, modules
|
4 |
Requires at least: 2.7
|
5 |
Tested up to: 2.8
|
6 |
+
Stable tag: 0.7
|
7 |
|
8 |
This all-in-one SEO plugin can handle titles, noindex, meta data, canonical tags, 404 error tracking, and more (with many more features coming soon).
|
9 |
|
85 |
|
86 |
== Changelog ==
|
87 |
|
88 |
+
= Version 0.7 (July 16, 2009) =
|
89 |
+
* Feature: Added the Module Manager
|
90 |
+
* Feature: Modules can optionally display numeric notices in the menu
|
91 |
+
|
92 |
= Version 0.6 (July 2, 2009) =
|
93 |
* Feature: Added the Linkbox Inserter module
|
94 |
* Bugfix: Fixed plugin notices bug
|
seo-ultimate.css
CHANGED
@@ -1,3 +1,5 @@
|
|
|
|
|
|
1 |
#adminmenu #toplevel_page_seo div.wp-menu-image {
|
2 |
background-image: url(images/icon.png);
|
3 |
background-position: -1px -33px;
|
@@ -8,6 +10,8 @@
|
|
8 |
background-position: -1px -1px;
|
9 |
}
|
10 |
|
|
|
|
|
11 |
div.su-module .su-success,
|
12 |
div.su-module .su-error,
|
13 |
div.su-module .su-warning,
|
@@ -66,6 +70,8 @@ div.su-module .su-message .su-info {
|
|
66 |
border-color: #8F93FF;
|
67 |
}
|
68 |
|
|
|
|
|
69 |
div.su-module h3.su-subheader {
|
70 |
margin-top: 3em;
|
71 |
padding-top: 1em;
|
@@ -94,6 +100,73 @@ div.su-module .form-table td div.field {
|
|
94 |
padding-bottom: 1em;
|
95 |
}
|
96 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
97 |
div.su-help div.metabox-prefs {
|
98 |
margin-bottom: 2em;
|
99 |
}
|
@@ -104,6 +177,8 @@ div.su-help ul {
|
|
104 |
margin-left: 1em;
|
105 |
}
|
106 |
|
|
|
|
|
107 |
#su-postmeta-box table tr {
|
108 |
vertical-align: middle;
|
109 |
}
|
@@ -139,10 +214,14 @@ div.su-help ul {
|
|
139 |
width: 100%;
|
140 |
}
|
141 |
|
|
|
|
|
142 |
#wpwrap .su-plugin-notice .update-message {
|
143 |
font-weight: normal;
|
144 |
}
|
145 |
|
|
|
|
|
146 |
.su-module table#import-status {
|
147 |
border: 0;
|
148 |
width: auto;
|
1 |
+
/* MENU */
|
2 |
+
|
3 |
#adminmenu #toplevel_page_seo div.wp-menu-image {
|
4 |
background-image: url(images/icon.png);
|
5 |
background-position: -1px -33px;
|
10 |
background-position: -1px -1px;
|
11 |
}
|
12 |
|
13 |
+
/* MESSAGES */
|
14 |
+
|
15 |
div.su-module .su-success,
|
16 |
div.su-module .su-error,
|
17 |
div.su-module .su-warning,
|
70 |
border-color: #8F93FF;
|
71 |
}
|
72 |
|
73 |
+
/* ADMIN PAGES */
|
74 |
+
|
75 |
div.su-module h3.su-subheader {
|
76 |
margin-top: 3em;
|
77 |
padding-top: 1em;
|
100 |
padding-bottom: 1em;
|
101 |
}
|
102 |
|
103 |
+
div.su-module table.report {
|
104 |
+
border-collapse: collapse;
|
105 |
+
border-top: 1px solid #ccc;
|
106 |
+
}
|
107 |
+
|
108 |
+
div.su-module table.report th {
|
109 |
+
font-weight: normal;
|
110 |
+
}
|
111 |
+
|
112 |
+
div.su-module table.report th, div.su-module table.report td {
|
113 |
+
padding: 1em 3em 1em 0;
|
114 |
+
border-bottom: 1px solid #ccc;
|
115 |
+
text-align: left;
|
116 |
+
}
|
117 |
+
|
118 |
+
/* TABS (Heavily based on CSS from the Breadcrumbs NavXT plugin) */
|
119 |
+
|
120 |
+
div.su-module .su-tabs ul.ui-tabs-nav {
|
121 |
+
border-bottom: 1px solid #dfdfdf;
|
122 |
+
font-size: 12px;
|
123 |
+
height: 29px;
|
124 |
+
list-style: none;
|
125 |
+
margin: 13px 0 0;
|
126 |
+
overflow: visible;
|
127 |
+
padding: 0 0 0 8px;
|
128 |
+
}
|
129 |
+
|
130 |
+
div.su-module .su-tabs ul.ui-tabs-nav li {
|
131 |
+
display: block;
|
132 |
+
float: left;
|
133 |
+
line-height: 200%;
|
134 |
+
list-style: none;
|
135 |
+
margin: 0;
|
136 |
+
padding: 0;
|
137 |
+
position: relative;
|
138 |
+
text-align: center;
|
139 |
+
white-space: nowrap;
|
140 |
+
width: auto;
|
141 |
+
}
|
142 |
+
|
143 |
+
|
144 |
+
div.su-module .su-tabs ul.ui-tabs-nav li a {
|
145 |
+
border-bottom: 1px solid #dfdfdf;
|
146 |
+
display: block;
|
147 |
+
float: left;
|
148 |
+
line-height: 28px;
|
149 |
+
padding: 1px 13px 0;
|
150 |
+
position: relative;
|
151 |
+
text-decoration: none;
|
152 |
+
}
|
153 |
+
|
154 |
+
div.su-module .su-tabs ul.ui-tabs-nav li.ui-tabs-selected a {
|
155 |
+
-moz-border-radius-topleft: 4px;
|
156 |
+
-moz-border-radius-topright: 4px;
|
157 |
+
-webkit-border-top-left-radius: 4px;
|
158 |
+
-webkit-border-top-right-radius: 4px;
|
159 |
+
border-top-left-radius: 4px;
|
160 |
+
border-top-right-radius: 4px;
|
161 |
+
border: 1px solid #dfdfdf;
|
162 |
+
border-bottom-color: #f9f9f9;
|
163 |
+
color: #333333;
|
164 |
+
font-weight: normal;
|
165 |
+
padding: 0 12px;
|
166 |
+
}
|
167 |
+
|
168 |
+
/* CONTEXTUAL HELP */
|
169 |
+
|
170 |
div.su-help div.metabox-prefs {
|
171 |
margin-bottom: 2em;
|
172 |
}
|
177 |
margin-left: 1em;
|
178 |
}
|
179 |
|
180 |
+
/* POSTMETA BOX */
|
181 |
+
|
182 |
#su-postmeta-box table tr {
|
183 |
vertical-align: middle;
|
184 |
}
|
214 |
width: 100%;
|
215 |
}
|
216 |
|
217 |
+
/* PLUGIN NOTICES */
|
218 |
+
|
219 |
#wpwrap .su-plugin-notice .update-message {
|
220 |
font-weight: normal;
|
221 |
}
|
222 |
|
223 |
+
/* IMPORT MODULES */
|
224 |
+
|
225 |
.su-module table#import-status {
|
226 |
border: 0;
|
227 |
width: auto;
|
seo-ultimate.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
Plugin Name: SEO Ultimate
|
4 |
Plugin URI: http://www.seodesignsolutions.com/wordpress-seo/
|
5 |
Description: This all-in-one SEO plugin can rewrite title tags, edit meta data, add noindex, insert canonical tags, and log 404 errors (with many more features coming soon).
|
6 |
-
Version: 0.
|
7 |
Author: SEO Design Solutions
|
8 |
Author URI: http://www.seodesignsolutions.com/
|
9 |
Text Domain: seo-ultimate
|
@@ -12,7 +12,7 @@ Text Domain: seo-ultimate
|
|
12 |
/**
|
13 |
* The main SEO Ultimate plugin file.
|
14 |
* @package SeoUltimate
|
15 |
-
* @version 0.
|
16 |
* @link http://www.seodesignsolutions.com/wordpress-seo/ SEO Ultimate Homepage
|
17 |
*/
|
18 |
|
@@ -38,10 +38,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
38 |
|
39 |
define("SU_PLUGIN_NAME", "SEO Ultimate");
|
40 |
define("SU_PLUGIN_URI", "http://www.seodesignsolutions.com/wordpress-seo/");
|
41 |
-
define("SU_VERSION", "0.
|
42 |
define("SU_AUTHOR", "SEO Design Solutions");
|
43 |
define("SU_AUTHOR_URI", "http://www.seodesignsolutions.com/");
|
44 |
-
define("SU_USER_AGENT", "SeoUltimate/0.
|
45 |
|
46 |
define('SU_MODULE_ENABLED', 10);
|
47 |
define('SU_MODULE_SILENCED', 5);
|
@@ -57,6 +57,7 @@ define('SU_RESULT_ERROR', -1);
|
|
57 |
require('class.seo-ultimate.php');
|
58 |
require('class.su-module.php');
|
59 |
require('class.su-importmodule.php');
|
|
|
60 |
require('class.su-widget.php');
|
61 |
require('class.su-hitset.php');
|
62 |
require('functions.php');
|
3 |
Plugin Name: SEO Ultimate
|
4 |
Plugin URI: http://www.seodesignsolutions.com/wordpress-seo/
|
5 |
Description: This all-in-one SEO plugin can rewrite title tags, edit meta data, add noindex, insert canonical tags, and log 404 errors (with many more features coming soon).
|
6 |
+
Version: 0.7
|
7 |
Author: SEO Design Solutions
|
8 |
Author URI: http://www.seodesignsolutions.com/
|
9 |
Text Domain: seo-ultimate
|
12 |
/**
|
13 |
* The main SEO Ultimate plugin file.
|
14 |
* @package SeoUltimate
|
15 |
+
* @version 0.7
|
16 |
* @link http://www.seodesignsolutions.com/wordpress-seo/ SEO Ultimate Homepage
|
17 |
*/
|
18 |
|
38 |
|
39 |
define("SU_PLUGIN_NAME", "SEO Ultimate");
|
40 |
define("SU_PLUGIN_URI", "http://www.seodesignsolutions.com/wordpress-seo/");
|
41 |
+
define("SU_VERSION", "0.7");
|
42 |
define("SU_AUTHOR", "SEO Design Solutions");
|
43 |
define("SU_AUTHOR_URI", "http://www.seodesignsolutions.com/");
|
44 |
+
define("SU_USER_AGENT", "SeoUltimate/0.7");
|
45 |
|
46 |
define('SU_MODULE_ENABLED', 10);
|
47 |
define('SU_MODULE_SILENCED', 5);
|
57 |
require('class.seo-ultimate.php');
|
58 |
require('class.su-module.php');
|
59 |
require('class.su-importmodule.php');
|
60 |
+
require('class.su-parentmodule.php');
|
61 |
require('class.su-widget.php');
|
62 |
require('class.su-hitset.php');
|
63 |
require('functions.php');
|
seo-ultimate.pot
CHANGED
@@ -8,7 +8,7 @@ msgid ""
|
|
8 |
msgstr ""
|
9 |
"Project-Id-Version: PACKAGE VERSION\n"
|
10 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/seo-ultimate\n"
|
11 |
-
"POT-Creation-Date: 2009-07-
|
12 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
13 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
@@ -95,26 +95,26 @@ msgstr ""
|
|
95 |
msgid "Return to SEO page"
|
96 |
msgstr ""
|
97 |
|
98 |
-
#: class.su-module.php:
|
99 |
#, php-format
|
100 |
msgid "%1$s | %2$s %3$s by %4$s"
|
101 |
msgstr ""
|
102 |
|
103 |
-
#: class.su-module.php:
|
104 |
msgid "Settings updated."
|
105 |
msgstr ""
|
106 |
|
107 |
-
#: class.su-module.php:
|
108 |
msgid "Save Changes"
|
109 |
msgstr ""
|
110 |
|
111 |
-
#: class.su-module.php:
|
112 |
msgid ""
|
113 |
"Are you sure you want to replace the textbox contents with this default "
|
114 |
"value?"
|
115 |
msgstr ""
|
116 |
|
117 |
-
#: class.su-module.php:
|
118 |
msgid "Reset"
|
119 |
msgstr ""
|
120 |
|
@@ -284,6 +284,40 @@ msgid ""
|
|
284 |
"about. "
|
285 |
msgstr ""
|
286 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
287 |
#: modules/noindex.php:13
|
288 |
msgid "Noindex Manager"
|
289 |
msgstr ""
|
@@ -454,10 +488,6 @@ msgstr ""
|
|
454 |
msgid "Restore Default Settings"
|
455 |
msgstr ""
|
456 |
|
457 |
-
#: modules/stats.php:13 modules/stats.php:14
|
458 |
-
msgid "Modules"
|
459 |
-
msgstr ""
|
460 |
-
|
461 |
#: modules/titles.php:13
|
462 |
msgid "Title Rewriter"
|
463 |
msgstr ""
|
8 |
msgstr ""
|
9 |
"Project-Id-Version: PACKAGE VERSION\n"
|
10 |
"Report-Msgid-Bugs-To: http://wordpress.org/tag/seo-ultimate\n"
|
11 |
+
"POT-Creation-Date: 2009-07-17 03:13+0000\n"
|
12 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
13 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
14 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
95 |
msgid "Return to SEO page"
|
96 |
msgstr ""
|
97 |
|
98 |
+
#: class.su-module.php:491
|
99 |
#, php-format
|
100 |
msgid "%1$s | %2$s %3$s by %4$s"
|
101 |
msgstr ""
|
102 |
|
103 |
+
#: class.su-module.php:526
|
104 |
msgid "Settings updated."
|
105 |
msgstr ""
|
106 |
|
107 |
+
#: class.su-module.php:546
|
108 |
msgid "Save Changes"
|
109 |
msgstr ""
|
110 |
|
111 |
+
#: class.su-module.php:642
|
112 |
msgid ""
|
113 |
"Are you sure you want to replace the textbox contents with this default "
|
114 |
"value?"
|
115 |
msgstr ""
|
116 |
|
117 |
+
#: class.su-module.php:655
|
118 |
msgid "Reset"
|
119 |
msgstr ""
|
120 |
|
284 |
"about. "
|
285 |
msgstr ""
|
286 |
|
287 |
+
#: modules/modules.php:13
|
288 |
+
msgid "Module Manager"
|
289 |
+
msgstr ""
|
290 |
+
|
291 |
+
#: modules/modules.php:40
|
292 |
+
msgid ""
|
293 |
+
"Here you can disable or hide modules you don’t use. You can also "
|
294 |
+
"silence modules from displaying bubble alerts on the menu."
|
295 |
+
msgstr ""
|
296 |
+
|
297 |
+
#: modules/modules.php:46
|
298 |
+
msgid "Status"
|
299 |
+
msgstr ""
|
300 |
+
|
301 |
+
#: modules/modules.php:47
|
302 |
+
msgid "Module"
|
303 |
+
msgstr ""
|
304 |
+
|
305 |
+
#: modules/modules.php:60
|
306 |
+
msgid "Enabled"
|
307 |
+
msgstr ""
|
308 |
+
|
309 |
+
#: modules/modules.php:61
|
310 |
+
msgid "Silenced"
|
311 |
+
msgstr ""
|
312 |
+
|
313 |
+
#: modules/modules.php:62
|
314 |
+
msgid "Hidden"
|
315 |
+
msgstr ""
|
316 |
+
|
317 |
+
#: modules/modules.php:63
|
318 |
+
msgid "Disabled"
|
319 |
+
msgstr ""
|
320 |
+
|
321 |
#: modules/noindex.php:13
|
322 |
msgid "Noindex Manager"
|
323 |
msgstr ""
|
488 |
msgid "Restore Default Settings"
|
489 |
msgstr ""
|
490 |
|
|
|
|
|
|
|
|
|
491 |
#: modules/titles.php:13
|
492 |
msgid "Title Rewriter"
|
493 |
msgstr ""
|