SEO Ultimate - Version 0.7

Version Description

Download this release

Release Info

Developer SEO Design Solutions
Plugin Icon 128x128 SEO Ultimate
Version 0.7
Comparing to
See all releases

Code changes from version 0.6 to 0.7

class.seo-ultimate.php CHANGED
@@ -2,11 +2,11 @@
2
  /**
3
  * The main class. Provides plugin-level functionality.
4
  *
5
- * @version 1.3.1
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 "Stats" module load when the "SEO" parent item is clicked.)
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 'stats': return 'seo'; break;
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 Stats module is being shown.)
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 'stats'; break;
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.3.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
- /*function get_menu_count() {
 
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&#8217;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.1
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 0; /*$this->get_unread_count();*/ }
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&#8217;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.6
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.6
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.6
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.6");
42
  define("SU_AUTHOR", "SEO Design Solutions");
43
  define("SU_AUTHOR_URI", "http://www.seodesignsolutions.com/");
44
- define("SU_USER_AGENT", "SeoUltimate/0.6");
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-02 22:42+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,26 +95,26 @@ msgstr ""
95
  msgid "Return to SEO page"
96
  msgstr ""
97
 
98
- #: class.su-module.php:406
99
  #, php-format
100
  msgid "%1$s | %2$s %3$s by %4$s"
101
  msgstr ""
102
 
103
- #: class.su-module.php:441
104
  msgid "Settings updated."
105
  msgstr ""
106
 
107
- #: class.su-module.php:461
108
  msgid "Save Changes"
109
  msgstr ""
110
 
111
- #: class.su-module.php:557
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:570
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&#8217;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 ""