SEO Ultimate - Version 7.3

Version Description

Download this release

Release Info

Developer JohnLamansky
Plugin Icon 128x128 SEO Ultimate
Version 7.3
Comparing to
See all releases

Code changes from version 7.2.9 to 7.3

includes/jlfunctions/arr.php CHANGED
@@ -103,23 +103,32 @@ class suarr {
103
  uasort($arr, create_function('$a,$b', 'return strlen($b["'.$valuekey.'"]) - strlen($a["'.$valuekey.'"]);'));
104
  }
105
 
106
- function flatten_values($arr, $value_keys) {
107
  foreach ((array)$value_keys as $key)
108
- $arr = suarr::_flatten_values($arr, $key);
109
  return $arr;
110
  }
111
 
112
- function _flatten_values($arr, $value_key = 0) {
113
  if (!is_array($arr) || !count($arr)) return array();
114
  $newarr = array();
115
  foreach ($arr as $key => $array_value) {
 
 
116
  if (is_array($array_value)) {
117
- if (isset($array_value[$value_key]))
118
  $newarr[$key] = $array_value[$value_key];
 
 
119
  } elseif (is_object($array_value)) {
120
- if (isset($array_value->$value_key))
121
  $newarr[$key] = $array_value->$value_key;
 
 
122
  }
 
 
 
123
  }
124
  return $newarr;
125
  }
@@ -164,9 +173,9 @@ class suarr {
164
  return $newarray;
165
  }
166
 
167
- function simplify($arr, $keyloc, $valloc) {
168
- $keys = suarr::flatten_values($arr, $keyloc);
169
- $values = suarr::flatten_values($arr, $valloc);
170
  return array_combine($keys, $values);
171
  }
172
 
@@ -203,6 +212,17 @@ class suarr {
203
  }
204
  return $n;
205
  }
 
 
 
 
 
 
 
 
 
 
 
206
  }
207
 
208
  ?>
103
  uasort($arr, create_function('$a,$b', 'return strlen($b["'.$valuekey.'"]) - strlen($a["'.$valuekey.'"]);'));
104
  }
105
 
106
+ function flatten_values($arr, $value_keys, $use_default_if_empty=false, $default='') {
107
  foreach ((array)$value_keys as $key)
108
+ $arr = suarr::_flatten_values($arr, $key, $use_default_if_empty, $default);
109
  return $arr;
110
  }
111
 
112
+ function _flatten_values($arr, $value_key = 0, $use_default_if_empty=false, $default='') {
113
  if (!is_array($arr) || !count($arr)) return array();
114
  $newarr = array();
115
  foreach ($arr as $key => $array_value) {
116
+ $success = false;
117
+
118
  if (is_array($array_value)) {
119
+ if (isset($array_value[$value_key])) {
120
  $newarr[$key] = $array_value[$value_key];
121
+ $success = true;
122
+ }
123
  } elseif (is_object($array_value)) {
124
+ if (isset($array_value->$value_key)) {
125
  $newarr[$key] = $array_value->$value_key;
126
+ $success = true;
127
+ }
128
  }
129
+
130
+ if (!$success && $use_default_if_empty)
131
+ $newarr[$key] = $default;
132
  }
133
  return $newarr;
134
  }
173
  return $newarray;
174
  }
175
 
176
+ function simplify($arr, $keyloc, $valloc, $use_default_if_empty=false, $default='') {
177
+ $keys = suarr::flatten_values($arr, $keyloc, $use_default_if_empty, $default);
178
+ $values = suarr::flatten_values($arr, $valloc, $use_default_if_empty, $default);
179
  return array_combine($keys, $values);
180
  }
181
 
212
  }
213
  return $n;
214
  }
215
+
216
+ function replace_empty_values_with_keys($array) {
217
+ $newarray = array();
218
+ foreach ($array as $key => $value) {
219
+ if (empty($value))
220
+ $newarray[$key] = $key;
221
+ else
222
+ $newarray[$key] = $value;
223
+ }
224
+ return $newarray;
225
+ }
226
  }
227
 
228
  ?>
includes/jlfunctions/str.php CHANGED
@@ -250,6 +250,13 @@ class sustr {
250
  $regex = str_replace(array('@^.*', '.*$@i'), array('@', '@i'), $regex);
251
  return $regex;
252
  }
 
 
 
 
 
 
 
253
  }
254
 
255
  ?>
250
  $regex = str_replace(array('@^.*', '.*$@i'), array('@', '@i'), $regex);
251
  return $regex;
252
  }
253
+
254
+ function tolower($str) {
255
+ if (function_exists('mb_strtolower'))
256
+ return mb_strtolower($str);
257
+
258
+ return strtolower($str);
259
+ }
260
  }
261
 
262
  ?>
includes/jlsuggest/jlsuggest.js CHANGED
@@ -1,5 +1,5 @@
1
  jQuery(document).ready( function($) {
2
- $('input.jlsuggest', '.su-module').each(function() {
3
  var params = $(this).attr('su:params') ? '&' + $(this).attr('su:params') : '';
4
  $(this).jlsuggest(ajaxurl + '?action=su-jlsuggest-autocomplete' + params,
5
  { delay: 500, minchars: 2, multiple: false, textDest: true, noUrls: true } );
1
  jQuery(document).ready( function($) {
2
+ $('input.jlsuggest', '.su-module,#su-postmeta-box').each(function() {
3
  var params = $(this).attr('su:params') ? '&' + $(this).attr('su:params') : '';
4
  $(this).jlsuggest(ajaxurl + '?action=su-jlsuggest-autocomplete' + params,
5
  { delay: 500, minchars: 2, multiple: false, textDest: true, noUrls: true } );
modules/autolinks/content-autolinks.php CHANGED
@@ -461,10 +461,10 @@ class SU_ContentAutolinks extends SU_Module {
461
  function postmeta_fields($fields) {
462
  $id = suwp::get_post_id();
463
 
464
- $fields['35|autolinks'] = $this->get_postmeta_textarea('autolinks', __('Incoming Autolink Anchors:<br /><em>(one per line)</em>', 'seo-ultimate'));
465
 
466
  if ($id && $this->get_setting('autolink_posttype_' . get_post_type($id)))
467
- $fields['38|disable_autolinks'] = $this->get_postmeta_checkbox('disable_autolinks', __('Don&#8217;t add autolinks to anchor texts found in this post.', 'seo-ultimate'), __('Autolink Exclusion:', 'seo-ultimate'));
468
 
469
  return $fields;
470
  }
461
  function postmeta_fields($fields) {
462
  $id = suwp::get_post_id();
463
 
464
+ $fields['links'][10]['autolinks'] = $this->get_postmeta_textarea('autolinks', __('Inbound Autolink Anchors:<br /><em>(one per line)</em>', 'seo-ultimate'));
465
 
466
  if ($id && $this->get_setting('autolink_posttype_' . get_post_type($id)))
467
+ $fields['links'][15]['disable_autolinks'] = $this->get_postmeta_checkbox('disable_autolinks', __('Don&#8217;t add autolinks to anchor texts found in this post.', 'seo-ultimate'), __('Autolink Exclusion:', 'seo-ultimate'));
468
 
469
  return $fields;
470
  }
modules/class.su-module.php CHANGED
@@ -953,63 +953,12 @@ class SU_Module {
953
  * Outputs a tab control and loads the current tab.
954
  *
955
  * @since 0.7
956
- * @uses get_admin_url()
957
- * @uses SEO_Ultimate::plugin_dir_url
958
  *
959
  * @param array $tabs Array (id => __, title => __, callback => __)
960
  * @param bool $table Whether or not the tab contents should be wrapped in a form table.
961
  */
962
- function admin_page_tabs($tabs = array(), $table=false) {
963
-
964
- if ($c = count($tabs)) {
965
-
966
- if ($c > 1)
967
- echo "\n\n<div id='su-tabset' class='su-tabs'>\n";
968
-
969
- foreach ($tabs as $tab) {
970
-
971
- if (isset($tab['title'])) $title = $tab['title']; else return;
972
- if (isset($tab['id'])) $id = $tab['id']; else return;
973
- if (isset($tab['callback']))$function = $tab['callback']; else return;
974
-
975
- if ($c > 1) {
976
- //$id = 'su-' . sustr::preg_filter('a-z0-9', strtolower($title));
977
- echo "<fieldset id='$id'>\n<h3>$title</h3>\n<div class='su-tab-contents'>\n";
978
- }
979
-
980
- if ($table) echo "<table class='form-table'>\n";
981
-
982
- $call = $args = array();
983
-
984
- if (is_array($function)) {
985
-
986
- if (is_array($function[0])) {
987
- $call = array_shift($function);
988
- $args = $function;
989
- } elseif (is_string($function[0])) {
990
- $call = array_shift($function);
991
- $call = array(&$this, $call);
992
- $args = $function;
993
- } else {
994
- $call = $function;
995
- }
996
- } else {
997
- $call = array(&$this, $function);
998
- }
999
- if (is_callable($call)) call_user_func_array($call, $args);
1000
-
1001
- if ($table) echo "</table>";
1002
-
1003
- if ($c > 1)
1004
- echo "</div>\n</fieldset>\n";
1005
- }
1006
-
1007
- if ($c > 1) {
1008
- echo "</div>\n";
1009
-
1010
- echo '<script type="text/javascript" src="'.$this->plugin->plugin_dir_url.'includes/tabs.js?v='.SU_VERSION.'"></script>';
1011
- }
1012
- }
1013
  }
1014
 
1015
  /**
@@ -1082,7 +1031,7 @@ class SU_Module {
1082
  //Turn the types array into a tabs array
1083
  $tabs = array();
1084
  foreach ($types as $type)
1085
- $tabs[] = array(
1086
  'title' => $type->labels->name
1087
  , 'id' => 'su-' . $type->name
1088
  , 'callback' => array('meta_edit_tab', 'post', 'su-' . $type->name, $type->name, $type->labels->singular_name, $fields)
@@ -1176,6 +1125,7 @@ class SU_Module {
1176
  wp(array(
1177
  'post_type' => $type
1178
  , 'posts_per_page' => $per_page
 
1179
  , 'paged' => $pagenum
1180
  , 'order' => 'ASC'
1181
  , 'orderby' => 'title'
@@ -1250,6 +1200,18 @@ class SU_Module {
1250
  $name = $object->post_title;
1251
  $view_url = get_permalink($id);
1252
  $edit_url = get_edit_post_link($id);
 
 
 
 
 
 
 
 
 
 
 
 
1253
  break;
1254
  case 'term':
1255
  $id = intval($object->term_id);
@@ -2000,6 +1962,7 @@ class SU_Module {
2000
 
2001
  $before = isset($textbox_args[$id]['before']) ? $textbox_args[$id]['before'] : '';
2002
  $after = isset($textbox_args[$id]['after']) ? $textbox_args[$id]['after'] : '';
 
2003
 
2004
  register_setting($this->get_module_key(), $id);
2005
  $value = su_esc_editable_html($this->get_setting($id));
@@ -2017,6 +1980,11 @@ class SU_Module {
2017
 
2018
  echo "<input name='$id' id='$id' type='text' value='$value' class='regular-text' ";
2019
 
 
 
 
 
 
2020
  if ($disabled)
2021
  echo "disabled='disabled' />";
2022
  elseif (isset($defaults[$id])) {
@@ -2062,9 +2030,9 @@ class SU_Module {
2062
  * @param string|false $default The default textbox value. Setting this will trigger a "Reset" link. Optional.
2063
  * @return string The HTML that would render the textbox.
2064
  */
2065
- function textbox($id, $title, $default=false, $grouptext=false, $args=array()) {
2066
  if ($default === false) $default = array(); else $default = array($id => $default);
2067
- $this->textboxes(array($id => $title), $default, $grouptext, $args);
2068
  }
2069
 
2070
  /**
953
  * Outputs a tab control and loads the current tab.
954
  *
955
  * @since 0.7
 
 
956
  *
957
  * @param array $tabs Array (id => __, title => __, callback => __)
958
  * @param bool $table Whether or not the tab contents should be wrapped in a form table.
959
  */
960
+ function admin_page_tabs($tabs=array(), $table=false) {
961
+ $this->plugin->tabs($tabs, $table, $this);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
962
  }
963
 
964
  /**
1031
  //Turn the types array into a tabs array
1032
  $tabs = array();
1033
  foreach ($types as $type)
1034
+ $tabs[$type->name] = array(
1035
  'title' => $type->labels->name
1036
  , 'id' => 'su-' . $type->name
1037
  , 'callback' => array('meta_edit_tab', 'post', 'su-' . $type->name, $type->name, $type->labels->singular_name, $fields)
1125
  wp(array(
1126
  'post_type' => $type
1127
  , 'posts_per_page' => $per_page
1128
+ , 'post_status' => 'any'
1129
  , 'paged' => $pagenum
1130
  , 'order' => 'ASC'
1131
  , 'orderby' => 'title'
1200
  $name = $object->post_title;
1201
  $view_url = get_permalink($id);
1202
  $edit_url = get_edit_post_link($id);
1203
+
1204
+ $status_obj = get_post_status_object($object->post_status);
1205
+ switch ($object->post_status) {
1206
+ case 'publish': $status = ''; break;
1207
+ case 'inherit': $status = ''; break;
1208
+ case 'auto-draft': continue; break;
1209
+ default: $status = $status_obj->label; break;
1210
+ }
1211
+
1212
+ if ($status)
1213
+ $name .= "<span class='su-meta-table-post-status'> &mdash; $status</span>";
1214
+
1215
  break;
1216
  case 'term':
1217
  $id = intval($object->term_id);
1962
 
1963
  $before = isset($textbox_args[$id]['before']) ? $textbox_args[$id]['before'] : '';
1964
  $after = isset($textbox_args[$id]['after']) ? $textbox_args[$id]['after'] : '';
1965
+ $placeholder = isset($textbox_args[$id]['placeholder']) ? $textbox_args[$id]['placeholder'] : '';
1966
 
1967
  register_setting($this->get_module_key(), $id);
1968
  $value = su_esc_editable_html($this->get_setting($id));
1980
 
1981
  echo "<input name='$id' id='$id' type='text' value='$value' class='regular-text' ";
1982
 
1983
+ if ($placeholder) {
1984
+ $a_placeholder = su_esc_attr($placeholder);
1985
+ echo "placeholder='$placeholder' ";
1986
+ }
1987
+
1988
  if ($disabled)
1989
  echo "disabled='disabled' />";
1990
  elseif (isset($defaults[$id])) {
2030
  * @param string|false $default The default textbox value. Setting this will trigger a "Reset" link. Optional.
2031
  * @return string The HTML that would render the textbox.
2032
  */
2033
+ function textbox($id, $title, $default=false, $grouptext=false, $args=array(), $textbox_args=array()) {
2034
  if ($default === false) $default = array(); else $default = array($id => $default);
2035
+ $this->textboxes(array($id => $title), $default, $grouptext, $args, array($id => $textbox_args));
2036
  }
2037
 
2038
  /**
modules/link-nofollow/link-nofollow.php CHANGED
@@ -52,19 +52,19 @@ class SU_LinkNofollow extends SU_Module {
52
  $this->admin_form_start();
53
  $this->admin_form_subheader(__('Add the nofollow attribute to...', 'seo-ultimate'));
54
  $this->checkboxes(array(
55
- 'nofollow_adjacent_post' => __("Adjacent post links", 'seo-ultimate')
56
- , 'nofollow_category_loop' => __("Category links (after posts)", 'seo-ultimate')
57
- , 'nofollow_category_list' => __("Category links (in lists)", 'seo-ultimate')
58
- , 'nofollow_comment_popup' => __("Comment anchor links", 'seo-ultimate')
59
- , 'nofollow_comment_feed' => __("Comment feed links", 'seo-ultimate')
60
- , 'nofollow_date_archive' => __("Date-based archive links", 'seo-ultimate')
61
- , 'nofollow_paged' => __("Pagination navigation links (all)", 'seo-ultimate')
62
- , 'nofollow_paged_home' => __("Pagination navigation links (on blog home only)", 'seo-ultimate')
63
- , 'nofollow_post_more' => __("&#8220;Read more&#8221; links", 'seo-ultimate')
64
- , 'nofollow_register' => __("Registration link", 'seo-ultimate')
65
- , 'nofollow_login' => __("Login link", 'seo-ultimate')
66
- , 'nofollow_tag_loop' => __("Tag links (after posts)", 'seo-ultimate')
67
- , 'nofollow_tag_list' => __("Tag links (in lists and clouds)", 'seo-ultimate')
68
  ));
69
 
70
  $this->admin_form_end();
52
  $this->admin_form_start();
53
  $this->admin_form_subheader(__('Add the nofollow attribute to...', 'seo-ultimate'));
54
  $this->checkboxes(array(
55
+ 'nofollow_adjacent_post' => __('Adjacent post links (next post / previous post)', 'seo-ultimate')
56
+ , 'nofollow_category_loop' => __('Category links (after posts)', 'seo-ultimate')
57
+ , 'nofollow_category_list' => __('Category links (in lists)', 'seo-ultimate')
58
+ , 'nofollow_comment_popup' => __('Comment anchor links', 'seo-ultimate')
59
+ , 'nofollow_comment_feed' => __('Comment feed links', 'seo-ultimate')
60
+ , 'nofollow_date_archive' => __('Date-based archive links', 'seo-ultimate')
61
+ , 'nofollow_paged' => __('Pagination navigation links (all)', 'seo-ultimate')
62
+ , 'nofollow_paged_home' => __('Pagination navigation links (on blog home only)', 'seo-ultimate')
63
+ , 'nofollow_post_more' => __('&#8220;Read more&#8221; links', 'seo-ultimate')
64
+ , 'nofollow_register' => __('Registration link', 'seo-ultimate')
65
+ , 'nofollow_login' => __('Login link', 'seo-ultimate')
66
+ , 'nofollow_tag_loop' => __('Tag links (after posts)', 'seo-ultimate')
67
+ , 'nofollow_tag_list' => __('Tag links (in lists and clouds)', 'seo-ultimate')
68
  ));
69
 
70
  $this->admin_form_end();
modules/meta/meta-descriptions.php CHANGED
@@ -74,6 +74,15 @@ class SU_MetaDescriptions extends SU_Module {
74
 
75
  function head_tag_output() {
76
 
 
 
 
 
 
 
 
 
 
77
  global $post;
78
 
79
  $desc = false;
@@ -118,12 +127,16 @@ class SU_MetaDescriptions extends SU_Module {
118
  }
119
  }
120
 
121
- //Do we have a description? If so, output it.
122
- if ($desc) {
 
123
  $desc = $this->get_desc_paged($desc);
124
- $desc = su_esc_attr(trim($desc));
125
- echo "\t<meta name=\"description\" content=\"$desc\" />\n";
126
- }
 
 
 
127
  }
128
 
129
  function get_desc_paged($desc) {
@@ -154,12 +167,12 @@ class SU_MetaDescriptions extends SU_Module {
154
  }
155
 
156
  function postmeta_fields($fields) {
157
- $id = "_su_description";
158
  $value = su_esc_attr($this->get_postmeta('description'));
159
 
160
- $fields['20|description'] =
161
- "<tr class='textarea' valign='top'>\n<th scope='row'><label for='$id'>".__('Meta Description:', 'seo-ultimate')."</label></th>\n"
162
- . "<td><textarea name='$id' id='$id' class='regular-text' cols='60' rows='3' tabindex='2'"
163
  . " onkeyup=\"javascript:document.getElementById('su_meta_description_charcount').innerHTML = document.getElementById('_su_description').value.length\">$value</textarea>"
164
  . "<br />".sprintf(__('You&#8217;ve entered %s characters. Most search engines use up to 140.', 'seo-ultimate'), "<strong id='su_meta_description_charcount'>".strlen($value)."</strong>")
165
  . "</td>\n</tr>\n"
74
 
75
  function head_tag_output() {
76
 
77
+ $desc = $this->get_meta_desc();
78
+
79
+ //Do we have a description? If so, output it.
80
+ if ($desc)
81
+ echo "\t<meta name=\"description\" content=\"$desc\" />\n";
82
+ }
83
+
84
+ function get_meta_desc() {
85
+
86
  global $post;
87
 
88
  $desc = false;
127
  }
128
  }
129
 
130
+ $desc = trim($desc);
131
+
132
+ if ($desc)
133
  $desc = $this->get_desc_paged($desc);
134
+
135
+ $desc = trim($desc);
136
+
137
+ $desc = su_esc_attr($desc);
138
+
139
+ return $desc;
140
  }
141
 
142
  function get_desc_paged($desc) {
167
  }
168
 
169
  function postmeta_fields($fields) {
170
+ $id = '_su_description';
171
  $value = su_esc_attr($this->get_postmeta('description'));
172
 
173
+ $fields['serp'][20]['description'] =
174
+ "<tr class='su textarea' valign='top'>\n<th scope='row' class='su'><label for='$id'>".__('Meta Description:', 'seo-ultimate')."</label></th>\n"
175
+ . "<td class='su'><textarea name='$id' id='$id' class='regular-text' cols='60' rows='3' tabindex='2'"
176
  . " onkeyup=\"javascript:document.getElementById('su_meta_description_charcount').innerHTML = document.getElementById('_su_description').value.length\">$value</textarea>"
177
  . "<br />".sprintf(__('You&#8217;ve entered %s characters. Most search engines use up to 140.', 'seo-ultimate'), "<strong id='su_meta_description_charcount'>".strlen($value)."</strong>")
178
  . "</td>\n</tr>\n"
modules/meta/meta-keywords.php CHANGED
@@ -36,7 +36,8 @@ class SU_MetaKeywords extends SU_Module {
36
  function get_admin_page_tabs() {
37
  return array_merge(
38
  array(
39
- array('title' => __('Default Values', 'seo-ultimate'), 'id' => 'su-default-values', 'callback' => 'defaults_tab')
 
40
  , array('title' => __('Blog Homepage', 'seo-ultimate'), 'id' => 'su-blog-homepage', 'callback' => 'home_tab')
41
  )
42
  , $this->get_meta_edit_tabs(array(
@@ -48,6 +49,12 @@ class SU_MetaKeywords extends SU_Module {
48
  );
49
  }
50
 
 
 
 
 
 
 
51
  function defaults_tab() {
52
  $this->admin_form_table_start();
53
 
@@ -72,8 +79,6 @@ class SU_MetaKeywords extends SU_Module {
72
  $this->checkboxes($checkboxes, $posttypelabel);
73
  }
74
 
75
- $this->textarea('global_keywords', __('Sitewide Keywords', 'seo-ultimate') . '<br /><small><em>' . __('(Separate with commas)', 'seo-ultimate') . '</em></small>');
76
-
77
  $this->admin_form_table_end();
78
  }
79
 
@@ -118,6 +123,8 @@ class SU_MetaKeywords extends SU_Module {
118
  $words = array_filter($words, array(&$this, 'filter_word_counts'));
119
  $words = array_keys($words);
120
  $stopwords = suarr::explode_lines($this->get_setting('words_to_remove', array(), 'slugs'));
 
 
121
  $words = array_diff($words, $stopwords);
122
  $words = array_slice($words, 0, $this->get_setting("auto_keywords_posttype_{$posttypename}_words_value"));
123
  $words = implode(',', $words);
36
  function get_admin_page_tabs() {
37
  return array_merge(
38
  array(
39
+ array('title' => __('Sitewide Values', 'seo-ultimate'), 'id' => 'su-sitewide-values', 'callback' => 'global_tab')
40
+ , array('title' => __('Default Values', 'seo-ultimate'), 'id' => 'su-default-values', 'callback' => 'defaults_tab')
41
  , array('title' => __('Blog Homepage', 'seo-ultimate'), 'id' => 'su-blog-homepage', 'callback' => 'home_tab')
42
  )
43
  , $this->get_meta_edit_tabs(array(
49
  );
50
  }
51
 
52
+ function global_tab() {
53
+ $this->admin_form_table_start();
54
+ $this->textarea('global_keywords', __('Sitewide Keywords', 'seo-ultimate') . '<br /><small><em>' . __('(Separate with commas)', 'seo-ultimate') . '</em></small>');
55
+ $this->admin_form_table_end();
56
+ }
57
+
58
  function defaults_tab() {
59
  $this->admin_form_table_start();
60
 
79
  $this->checkboxes($checkboxes, $posttypelabel);
80
  }
81
 
 
 
82
  $this->admin_form_table_end();
83
  }
84
 
123
  $words = array_filter($words, array(&$this, 'filter_word_counts'));
124
  $words = array_keys($words);
125
  $stopwords = suarr::explode_lines($this->get_setting('words_to_remove', array(), 'slugs'));
126
+ $stopwords = array_map(array('sustr', 'tolower'), $stopwords);
127
+ $words = array_map(array('sustr', 'tolower'), $words);
128
  $words = array_diff($words, $stopwords);
129
  $words = array_slice($words, 0, $this->get_setting("auto_keywords_posttype_{$posttypename}_words_value"));
130
  $words = implode(',', $words);
modules/meta/meta-robots.php CHANGED
@@ -19,18 +19,17 @@ class SU_MetaRobots extends SU_Module {
19
 
20
  function get_admin_page_tabs() {
21
  return array(
22
- array('title' => __('Global', 'seo-ultimate'), 'id' => 'su-global', 'callback' => 'global_tab')
23
  );
24
  }
25
 
26
  function global_tab() {
27
  $this->admin_form_table_start();
28
- $this->admin_form_subheader(__('Spider Instructions', 'seo-ultimate'));
29
  $this->checkboxes(array(
30
  'noodp' => __('Don&#8217t use this site&#8217s Open Directory description in search results.', 'seo-ultimate')
31
  , 'noydir' => __('Don&#8217t use this site&#8217s Yahoo! Directory description in search results.', 'seo-ultimate')
32
  , 'noarchive' => __('Don&#8217t cache or archive this site.', 'seo-ultimate')
33
- ));
34
  $this->admin_form_table_end();
35
  }
36
 
19
 
20
  function get_admin_page_tabs() {
21
  return array(
22
+ array('title' => __('Sitewide Values', 'seo-ultimate'), 'id' => 'su-sitewide-values', 'callback' => 'global_tab')
23
  );
24
  }
25
 
26
  function global_tab() {
27
  $this->admin_form_table_start();
 
28
  $this->checkboxes(array(
29
  'noodp' => __('Don&#8217t use this site&#8217s Open Directory description in search results.', 'seo-ultimate')
30
  , 'noydir' => __('Don&#8217t use this site&#8217s Yahoo! Directory description in search results.', 'seo-ultimate')
31
  , 'noarchive' => __('Don&#8217t cache or archive this site.', 'seo-ultimate')
32
+ ), __('Spider Instructions', 'seo-ultimate'));
33
  $this->admin_form_table_end();
34
  }
35
 
modules/modules.css CHANGED
@@ -126,63 +126,7 @@ div.su-module textarea[disabled] {
126
  background-color: #eee;
127
  }
128
 
129
- /* TABS (Heavily based on CSS from the Breadcrumbs NavXT plugin) */
130
-
131
- div.su-module .su-tabs ul.ui-tabs-nav {
132
- border-bottom: 1px solid #dfdfdf;
133
- font-size: 12px;
134
- height: 29px;
135
- list-style: none;
136
- margin: 13px 0 0;
137
- overflow: visible;
138
- padding: 0 0 0 8px;
139
- }
140
-
141
- div.su-module .su-tabs ul.ui-tabs-nav li {
142
- display: block;
143
- float: left;
144
- line-height: 200%;
145
- list-style: none;
146
- margin: 0;
147
- padding: 0;
148
- position: relative;
149
- text-align: center;
150
- white-space: nowrap;
151
- width: auto;
152
- }
153
-
154
-
155
- div.su-module .su-tabs ul.ui-tabs-nav li a {
156
- border-bottom: 1px solid #dfdfdf;
157
- display: block;
158
- float: left;
159
- line-height: 28px;
160
- padding: 1px 10px 0;
161
- position: relative;
162
- text-decoration: none;
163
- }
164
-
165
- div.su-module .su-tabs ul.ui-tabs-nav li.ui-tabs-selected a {
166
- -moz-border-radius-topleft: 4px;
167
- -moz-border-radius-topright: 4px;
168
- -webkit-border-top-left-radius: 4px;
169
- -webkit-border-top-right-radius: 4px;
170
- border-top-left-radius: 4px;
171
- border-top-right-radius: 4px;
172
- border: 1px solid #dfdfdf;
173
- border-bottom-color: #ffffff;
174
- color: #333333;
175
- font-weight: normal;
176
- padding: 0 9px;
177
- }
178
-
179
- div.su-module .su-tabs fieldset {
180
- clear: left;
181
- }
182
-
183
- div.su-module .su-tabs .su-tab-contents {
184
- margin-top: 1em;
185
- }
186
 
187
  div.su-module .su-meta-edit-table table.widefat,
188
  div.su-module .su-meta-edit-table table.widefat .regular-text { width: 100%; }
@@ -191,6 +135,11 @@ div.su-module .su-meta-edit-table table.widefat td.su-id { width: 2em; }
191
  div.su-module .su-meta-edit-table table.widefat td.su-name { width: 20em; }
192
  div.su-module .su-meta-edit-table table.widefat td { vertical-align: middle; }
193
 
 
 
 
 
 
194
  /* IMPORT MODULES */
195
 
196
  .su-module table#import-status {
126
  background-color: #eee;
127
  }
128
 
129
+ /* META EDIT TABLE */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
130
 
131
  div.su-module .su-meta-edit-table table.widefat,
132
  div.su-module .su-meta-edit-table table.widefat .regular-text { width: 100%; }
135
  div.su-module .su-meta-edit-table table.widefat td.su-name { width: 20em; }
136
  div.su-module .su-meta-edit-table table.widefat td { vertical-align: middle; }
137
 
138
+ div.su-module .su-meta-edit-table .su-meta-table-post-status {
139
+ font-style: italic;
140
+ color: #999;
141
+ }
142
+
143
  /* IMPORT MODULES */
144
 
145
  .su-module table#import-status {
modules/more-links/more-links.php CHANGED
@@ -48,7 +48,7 @@ class SU_MoreLinks extends SU_Module {
48
  function postmeta_fields($fields, $screen) {
49
 
50
  if (strcmp($screen, 'post') == 0)
51
- $fields['40|morelinktext'] = $this->get_postmeta_textbox('morelinktext', __('More Link Text:', 'seo-ultimate'));
52
 
53
  return $fields;
54
  }
48
  function postmeta_fields($fields, $screen) {
49
 
50
  if (strcmp($screen, 'post') == 0)
51
+ $fields['links'][20]['morelinktext'] = $this->get_postmeta_textbox('morelinktext', __('Anchor Text of &#8220;More&#8221; Link:', 'seo-ultimate'));
52
 
53
  return $fields;
54
  }
modules/opengraph/index.php ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ <?php
2
+ header('Status: 403 Forbidden');
3
+ header('HTTP/1.1 403 Forbidden');
4
+ ?>
modules/opengraph/opengraph.css ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
1
+
2
+ #su-opengraph .form-table tr th {
3
+ width: 150px;
4
+ }
5
+
6
+ #su-opengraph table.widefat .su-og_type {
7
+ width: 100px;
8
+ }
modules/opengraph/opengraph.php ADDED
@@ -0,0 +1,332 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Open Graph Integrator Module
4
+ *
5
+ * @since 7.3
6
+ */
7
+
8
+ if (class_exists('SU_Module')) {
9
+
10
+ class SU_OpenGraph extends SU_Module {
11
+
12
+ var $namespaces_declared = false;
13
+ var $jlsuggest_box_post_id = false;
14
+
15
+ function get_module_title() { return __('Open Graph Integrator', 'seo-ultimate'); }
16
+ function get_menu_title() { return __('Open Graph', 'seo-ultimate'); }
17
+
18
+ function get_default_settings() {
19
+ return array(
20
+ 'default_post_og_type' => 'article'
21
+ , 'default_page_og_type' => 'article'
22
+ );
23
+ }
24
+
25
+ function init() {
26
+ add_filter('language_attributes', array(&$this, 'html_tag_xmlns_attrs'), 1000);
27
+ add_action('su_head', array(&$this, 'head_tag_output'));
28
+ }
29
+
30
+ function html_tag_xmlns_attrs($attrs) {
31
+ $this->namespaces_declared = true;
32
+ return $attrs . ' ' . implode(' ', $this->get_xmlns_attrs());
33
+ }
34
+
35
+ function get_xmlns_attrs() {
36
+ return array(
37
+ 'og' => 'xmlns:og="http://ogp.me/ns#"'
38
+ , 'fb' => 'xmlns:fb="http://ogp.me/ns/fb#"'
39
+ );
40
+ }
41
+
42
+ function head_tag_output() {
43
+
44
+ $tags = array();
45
+
46
+ if (is_home()) {
47
+
48
+ //Type
49
+ $tags['og:type'] = 'blog';
50
+
51
+ //Title
52
+ if (!($tags['og:title'] = $this->get_setting('home_og_title')))
53
+ $tags['og:title'] = get_bloginfo('name');
54
+
55
+ //Description
56
+ if (!($tags['og:description'] = $this->get_setting('home_og_description')))
57
+ $tags['og:description'] = get_bloginfo('description');
58
+
59
+ //URL
60
+ $tags['og:url'] = get_bloginfo('url');
61
+
62
+ //Image
63
+ $tags['og:image'] = $this->get_setting('home_og_image');
64
+
65
+ } elseif (is_singular()) {
66
+
67
+ global $wp_query;
68
+ $post = $wp_query->get_queried_object();
69
+
70
+ //Type
71
+ if (!($tags['og:type'] = $this->get_postmeta('og_type')))
72
+ $tags['og:type'] = $this->get_setting("default_{$post->post_type}_og_type");
73
+
74
+ //Title
75
+ if (!($tags['og:title'] = $this->get_postmeta('og_title')))
76
+ $tags['og:title'] = strip_tags( apply_filters( 'single_post_title', $post->post_title ) );
77
+
78
+ //Description
79
+ if (!($tags['og:description'] = $this->get_postmeta('og_description')))
80
+ if ($this->plugin->call_module_func('meta-descriptions', 'get_meta_desc', $meta_desc) && $meta_desc)
81
+ $tags['og:description'] = $meta_desc;
82
+
83
+ //URL
84
+ $tags['og:url'] = get_permalink($post->ID);
85
+
86
+ //Image
87
+ $tags['og:image'] = $this->jlsuggest_value_to_url($this->get_postmeta('og_image'), true);
88
+ if (!$tags['og:image']) {
89
+ if ('attachment' == $post->post_type)
90
+ $tags['og:image'] = wp_get_attachment_url();
91
+ elseif ($thumbnail_id = get_post_thumbnail_id($post->ID))
92
+ $tags['og:image'] = wp_get_attachment_url($thumbnail_id);
93
+ }
94
+
95
+ //Additional fields
96
+ switch ($tags['og:type']) {
97
+ case 'article':
98
+
99
+ $tags['article:published_time'] = get_the_date('Y-m-d');
100
+ $tags['article:modified_time'] = get_the_modified_date('Y-m-d');
101
+
102
+ global $authordata;
103
+ $tags['article:author'] = get_author_posts_url($authordata->ID, $authordata->user_nicename);
104
+
105
+ $taxonomy_names = suwp::get_taxonomy_names();
106
+ foreach ($taxonomy_names as $taxonomy_name) {
107
+ if ($terms = get_the_terms(get_the_ID(), $taxonomy_name)) {
108
+
109
+ if ('category' == $taxonomy_name)
110
+ $meta_property = 'article:section';
111
+ else
112
+ $meta_property = 'article:tag';
113
+
114
+ foreach ($terms as $term) {
115
+ $tags[$meta_property][] = $term->name;
116
+ }
117
+ }
118
+ }
119
+
120
+ break;
121
+ }
122
+
123
+ } elseif (is_author()) {
124
+
125
+ global $wp_query;
126
+ $author = $wp_query->get_queried_object();
127
+
128
+ //Type
129
+ $tags['og:type'] = 'profile';
130
+
131
+ //Title
132
+ $tags['og:title'] = $author->display_name;
133
+
134
+ //Description
135
+ $tags['og:title'] = get_the_author_meta('description', $author->ID);
136
+
137
+ //Image
138
+ $tags['og:image'] = false;
139
+
140
+ //URL
141
+ $tags['og:url'] = get_author_posts_url($author->ID, $author->user_nicename);
142
+
143
+ //First Name
144
+ $tags['profile:first_name'] = get_the_author_meta('first_name', $author->ID);
145
+
146
+ //Last Name
147
+ $tags['profile:last_name'] = get_the_author_meta('last_name', $author->ID);
148
+
149
+ //Username
150
+ $tags['profile:username'] = $author->user_login;
151
+
152
+ } else
153
+ return;
154
+
155
+ if ($tags['og:type'] == 'none')
156
+ $tags['og:type'] = '';
157
+
158
+ if ((!isset($tags['og:image']) || !$tags['og:image']) && $tags['og:image'] !== false) {
159
+ $tags['og:image'] = $this->jlsuggest_value_to_url($this->get_setting('default_og_image'), true);
160
+ if (!$tags['og:image'])
161
+ $tags['og:image'] = 'http://open.thumbshots.org/image.aspx?url='.urlencode($url);
162
+ }
163
+
164
+ //Site Name
165
+ if (!($tags['og:site_name'] = $this->get_setting('og_site_name')))
166
+ $tags['og:site_name'] = get_bloginfo('name');
167
+
168
+ //FB App ID
169
+ $tags['fb:app_id'] = $this->get_setting('default_fb_app_id');
170
+
171
+ //Output meta tags
172
+ $xmlnses = $this->namespaces_declared ? array() : $this->get_xmlns_attrs();
173
+ foreach ($tags as $property => $values) {
174
+ foreach ((array)$values as $value) {
175
+ $property = su_esc_attr($property);
176
+ $value = su_esc_attr($value);
177
+ if (strlen(trim($property)) && strlen(trim($value))) {
178
+ $xmlns = $xmlnses[sustr::upto($property, ':')];
179
+ if ($xmlns) $xmlns .= ' ';
180
+ echo "\t<meta property=\"$property\" content=\"$value\" $xmlns/>\n";
181
+ }
182
+ }
183
+ }
184
+ }
185
+
186
+ function admin_page_init() {
187
+ $this->jlsuggest_init();
188
+ }
189
+
190
+ function editor_init() {
191
+ $this->jlsuggest_init();
192
+ }
193
+
194
+ function get_admin_page_tabs() {
195
+
196
+ $postmeta_edit_tabs = $this->get_postmeta_edit_tabs(array(
197
+ array(
198
+ 'type' => 'dropdown'
199
+ , 'options' => array_merge(array(__('Use default', 'seo-ultimate')), $this->get_type_options())
200
+ , 'name' => 'og_type'
201
+ , 'label' => __('Type', 'seo-ultimate')
202
+ )
203
+ , array(
204
+ 'type' => 'textbox'
205
+ , 'name' => 'og_title'
206
+ , 'label' => __('Title', 'seo-ultimate')
207
+ )
208
+ , array(
209
+ 'type' => 'textbox'
210
+ , 'name' => 'og_description'
211
+ , 'label' => __('Description', 'seo-ultimate')
212
+ )
213
+ , array(
214
+ 'type' => 'jlsuggest'
215
+ , 'name' => 'og_image'
216
+ , 'label' => __('Image', 'seo-ultimate')
217
+ , 'options' => array(
218
+ 'params' => 'types=posttype_attachment&post_mime_type=image/*'
219
+ ))
220
+ ));
221
+
222
+ //Remove the Image boxes from the Media tab
223
+ //(it's obvious what the og:image of an attachment should be...)
224
+ unset($postmeta_edit_tabs['attachment']['callback'][5][3]);
225
+
226
+ return array_merge(
227
+ array(
228
+ array('title' => __('Sitewide Values', 'seo-ultimate'), 'id' => 'su-sitewide-values', 'callback' => 'global_tab')
229
+ , array('title' => __('Default Values', 'seo-ultimate'), 'id' => 'su-default-values', 'callback' => 'defaults_tab')
230
+ , array('title' => __('Blog Homepage', 'seo-ultimate'), 'id' => 'su-homepage', 'callback' => 'home_tab')
231
+ )
232
+ , $postmeta_edit_tabs
233
+ );
234
+ }
235
+
236
+ function global_tab() {
237
+ $this->admin_form_table_start();
238
+ $this->textbox('og_site_name', __('Site Name', 'seo-ultimate'), false, false, array(), array('placeholder' => get_bloginfo('name')));
239
+ $this->textbox('default_fb_app_id', __('Facebook App ID', 'seo-ultimate'));
240
+ $this->admin_form_table_end();
241
+ }
242
+
243
+ function defaults_tab() {
244
+ $posttypes = suwp::get_post_type_objects();
245
+
246
+ $this->admin_subheader(__('Default Types', 'seo-ultimate'));
247
+ $this->admin_form_table_start();
248
+ foreach ($posttypes as $posttype)
249
+ $this->dropdown("default_{$posttype->name}_og_type", $this->get_type_options(), $posttype->labels->name);
250
+ $this->admin_form_table_end();
251
+
252
+ $this->admin_subheader(__('Default Image', 'seo-ultimate'));
253
+ $this->admin_form_table_start();
254
+
255
+ $this->textblock(__('In the box below, you can specify an image URL or an image from your media library to use as a default image in the event that there is no image otherwise specified for a given webpage on your site. If you do not specify a default image in the box below, then dynamically-generated thumbnails from Thumbshots.org will be used instead.', 'seo-ultimate'));
256
+
257
+ $this->jlsuggest_box('default_og_image', __('Default Image', 'seo-ultimate'), 'types=posttype_attachment&post_mime_type=image/*');
258
+
259
+ $this->admin_form_table_end();
260
+ }
261
+
262
+ function home_tab() {
263
+ $this->admin_form_table_start();
264
+ $this->textbox('home_og_title', __('Blog Homepage Title', 'seo-ultimate'), false, false, array(), array('placeholder' => get_bloginfo('name')));
265
+ $this->textbox('home_og_description', __('Blog Homepage Description', 'seo-ultimate'), false, false, array(), array('placeholder' => get_bloginfo('description')));
266
+ $this->jlsuggest_box('home_og_image', __('Blog Homepage Image', 'seo-ultimate'), 'types=posttype_attachment&post_mime_type=image/*');
267
+ $this->admin_form_table_end();
268
+ }
269
+
270
+ function postmeta_fields($fields) {
271
+
272
+ $fields['opengraph'][10]['og_type'] = $this->get_postmeta_dropdown('og_type', array_merge(array(__('Use default', 'seo-ultimate')), $this->get_type_options()), __('Type:', 'seo-ultimate'));
273
+ $fields['opengraph'][20]['og_title'] = $this->get_postmeta_textbox('og_title', __('Title:', 'seo-ultimate'));
274
+ $fields['opengraph'][30]['og_description'] = $this->get_postmeta_textarea('og_description', __('Description:', 'seo-ultimate'));
275
+ $fields['opengraph'][40]['og_image'] = $this->get_postmeta_jlsuggest_box('og_image', __('Image:', 'seo-ultimate'), 'types=posttype_attachment&post_mime_type=image/*');
276
+
277
+ return $fields;
278
+ }
279
+
280
+ function get_postmeta_jlsuggest_boxes($jls_boxes) {
281
+ $this->jlsuggest_box_post_id = suwp::get_post_id();
282
+ return parent::get_postmeta_jlsuggest_boxes($jls_boxes);
283
+ }
284
+
285
+ function get_input_element($type, $name, $value=null, $extra=false, $inputid=true) {
286
+
287
+ $name_parts = explode('_', $name);
288
+ if (isset($name_parts[1]) && is_numeric($post_id = $name_parts[1]))
289
+ $this->jlsuggest_box_post_id = $post_id;
290
+ else
291
+ $this->jlsuggest_box_post_id = false;
292
+
293
+ return parent::get_input_element($type, $name, $value, $extra, $inputid);
294
+ }
295
+
296
+ function get_jlsuggest_box($name, $value, $params='', $placeholder='') {
297
+
298
+ if (empty($value) && $this->jlsuggest_box_post_id && $thumbnail_id = get_post_thumbnail_id($this->jlsuggest_box_post_id)) {
299
+ $selected_post = get_post($thumbnail_id);
300
+ $placeholder = sprintf(__('Featured Image: %s', 'seo-ultimate'), $selected_post->post_title);
301
+ }
302
+
303
+ return parent::get_jlsuggest_box($name, $value, $params, $placeholder);
304
+ }
305
+
306
+ function get_type_options() {
307
+ return array(
308
+ 'none' => __('None', 'seo-ultimate')
309
+ , __('Internet', 'seo-ultimate') => array(
310
+ 'article' => __('Article', 'seo-ultimate')
311
+ , 'blog' => __('Blog', 'seo-ultimate')
312
+ , 'profile' => __('Profile', 'seo-ultimate')
313
+ , 'website' => __('Website', 'seo-ultimate')
314
+ ),__('Products', 'seo-ultimate') => array(
315
+ 'book' => __('Book', 'seo-ultimate')
316
+ ),__('Music', 'seo-ultimate') => array(
317
+ 'music.album' => __('Album', 'seo-ultimate')
318
+ , 'music.playlist' => __('Playlist', 'seo-ultimate')
319
+ , 'music.radio_station' => __('Radio Station', 'seo-ultimate')
320
+ , 'music.song' => __('Song', 'seo-ultimate')
321
+ ),__('Videos', 'seo-ultimate') => array(
322
+ 'video.movie' => __('Movie', 'seo-ultimate')
323
+ , 'video.episode' => __('TV Episode', 'seo-ultimate')
324
+ , 'video.tv_show' => __('TV Show', 'seo-ultimate')
325
+ , 'video.other' => __('Video', 'seo-ultimate')
326
+ )
327
+ );
328
+ }
329
+ }
330
+
331
+ }
332
+ ?>
modules/rich-snippets/rich-snippets.php CHANGED
@@ -224,12 +224,12 @@ class SU_RichSnippets extends SU_Module {
224
  }
225
 
226
  function postmeta_fields($fields) {
227
- $fields['40|rich_snippet_type'] = $this->get_postmeta_dropdown('rich_snippet_type', array(
228
  'none' => __('None', 'seo-ultimate')
229
  , 'review' => __('Review', 'seo-ultimate')
230
  ), __('Rich Snippet Type:', 'seo-ultimate'));
231
 
232
- $fields['45|rich_snippet_review_item|rich_snippet_review_rating'] = $this->get_postmeta_subsection('rich_snippet_type', 'review',
233
 
234
  $this->get_postmeta_textbox('rich_snippet_review_item', __('Name of Reviewed Item:', 'seo-ultimate'))
235
 
224
  }
225
 
226
  function postmeta_fields($fields) {
227
+ $fields['serp'][40]['rich_snippet_type'] = $this->get_postmeta_dropdown('rich_snippet_type', array(
228
  'none' => __('None', 'seo-ultimate')
229
  , 'review' => __('Review', 'seo-ultimate')
230
  ), __('Rich Snippet Type:', 'seo-ultimate'));
231
 
232
+ $fields['serp'][45]['rich_snippet_review_item|rich_snippet_review_rating'] = $this->get_postmeta_subsection('rich_snippet_type', 'review',
233
 
234
  $this->get_postmeta_textbox('rich_snippet_review_item', __('Name of Reviewed Item:', 'seo-ultimate'))
235
 
modules/settings/global-settings.php CHANGED
@@ -20,7 +20,6 @@ class SU_GlobalSettings extends SU_Module {
20
  function get_default_settings() {
21
  return array(
22
  'attribution_link' => false
23
- , 'plugin_notices' => true
24
  , 'mark_code' => true
25
  );
26
  }
@@ -40,7 +39,6 @@ class SU_GlobalSettings extends SU_Module {
40
  $this->checkboxes(array(
41
  'attribution_link' => __('Enable nofollow&#8217;d attribution link', 'seo-ultimate')
42
  , 'attribution_link_css' => __('Enable attribution link CSS styling', 'seo-ultimate')
43
- , 'plugin_notices' => __('Notify me about unnecessary active plugins', 'seo-ultimate')
44
  , 'mark_code' => __('Insert comments around HTML code insertions', 'seo-ultimate')
45
  ));
46
  $this->admin_form_end();
20
  function get_default_settings() {
21
  return array(
22
  'attribution_link' => false
 
23
  , 'mark_code' => true
24
  );
25
  }
39
  $this->checkboxes(array(
40
  'attribution_link' => __('Enable nofollow&#8217;d attribution link', 'seo-ultimate')
41
  , 'attribution_link_css' => __('Enable attribution link CSS styling', 'seo-ultimate')
 
42
  , 'mark_code' => __('Insert comments around HTML code insertions', 'seo-ultimate')
43
  ));
44
  $this->admin_form_end();
modules/slugs/slugs.php CHANGED
@@ -42,9 +42,8 @@ class SU_Slugs extends SU_Module {
42
  if (empty($slug)) $slug = $_POST['post_title'];
43
 
44
  //Prepare the title and the words for comparison
45
- $strtolower = function_exists('mb_strtolower') ? 'mb_strtolower' : 'strtolower';
46
- $slug = $strtolower(stripslashes($slug));
47
- $words = $strtolower(stripslashes($this->get_setting('words_to_remove')));
48
 
49
  //Remove the stopwords from the slug
50
  $newslug = implode("-", array_diff(explode(" ", $slug), suarr::explode_lines($words)));
42
  if (empty($slug)) $slug = $_POST['post_title'];
43
 
44
  //Prepare the title and the words for comparison
45
+ $slug = sustr::tolower(stripslashes($slug));
46
+ $words = sustr::tolower(stripslashes($this->get_setting('words_to_remove')));
 
47
 
48
  //Remove the stopwords from the slug
49
  $newslug = implode("-", array_diff(explode(" ", $slug), suarr::explode_lines($words)));
modules/titles/titles.php CHANGED
@@ -331,7 +331,17 @@ class SU_Titles extends SU_Module {
331
  }
332
 
333
  function postmeta_fields($fields) {
334
- $fields['10|title'] = $this->get_postmeta_textbox('title', __('Title Tag:', 'seo-ultimate'));
 
 
 
 
 
 
 
 
 
 
335
  return $fields;
336
  }
337
 
331
  }
332
 
333
  function postmeta_fields($fields) {
334
+ $id = "_su_title";
335
+ $value = su_esc_attr($this->get_postmeta('title'));
336
+
337
+ $fields['serp'][10]['title'] =
338
+ "<tr class='su textbox' valign='top'>\n<th scope='row' class='su'><label for='$id'>".__('Title Tag:', 'seo-ultimate')."</label></th>\n"
339
+ . "<td class='su'><input name='$id' id='$id' type='text' value='$value' class='regular-text' tabindex='2'"
340
+ . " onkeyup=\"javascript:document.getElementById('su_title_charcount').innerHTML = document.getElementById('_su_title').value.length\" />"
341
+ . "<br />".sprintf(__('You&#8217;ve entered %s characters. Most search engines use up to 70.', 'seo-ultimate'), "<strong id='su_title_charcount'>".strlen($value)."</strong>")
342
+ . "</td>\n</tr>\n"
343
+ ;
344
+
345
  return $fields;
346
  }
347
 
modules/user-code/user-code.php CHANGED
@@ -39,7 +39,7 @@ class SU_UserCode extends SU_Module {
39
 
40
  function init() {
41
  $hooks = array('su_head', 'the_content', 'wp_footer');
42
- foreach ($hooks as $hook) add_filter($hook, array(&$this, "{$hook}_code"));
43
  }
44
 
45
  function get_admin_page_tabs() {
39
 
40
  function init() {
41
  $hooks = array('su_head', 'the_content', 'wp_footer');
42
+ foreach ($hooks as $hook) add_filter($hook, array(&$this, "{$hook}_code"), 'su_head' == $hook ? 11 : 10);
43
  }
44
 
45
  function get_admin_page_tabs() {
plugin/class.seo-ultimate.php CHANGED
@@ -636,6 +636,11 @@ class SEO_Ultimate {
636
  $this->modules[$key]->upgrade();
637
  $this->modules[$key]->init();
638
  }
 
 
 
 
 
639
  }
640
 
641
  /**
@@ -1154,19 +1159,12 @@ class SEO_Ultimate {
1154
  */
1155
  function plugin_page_notices() {
1156
 
1157
- if (isset($this->modules['settings']) && !$this->modules['settings']->get_setting('plugin_notices'))
1158
- return;
1159
-
1160
  global $pagenow;
1161
 
1162
  if ($pagenow == 'plugins.php') {
1163
 
1164
  $r_plugins = array(
1165
- 'all-in-one-seo-pack/all_in_one_seo_pack.php' //Title Tag Rewriter, Meta Editor, Noindex Manager
1166
- , 'another-wordpress-meta-plugin/another_wordpress_meta_plugin.php' //Meta Editor
1167
- , 'canonical/canonical.php' //Canonicalizer
1168
- , 'noindex-login/noindex-login.php' //Noindex Manager
1169
- , 'search-engine-verify/search-engine-verify.php' //Meta Editor
1170
  );
1171
 
1172
  $i_plugins = get_plugins();
@@ -1179,19 +1177,14 @@ class SEO_Ultimate {
1179
  }
1180
 
1181
  /**
1182
- * Outputs a table row notifying the user that he/she is using a plugin whose functionality SEO Ultimate replaces.
1183
  *
1184
  * @since 0.1
1185
  */
1186
  function plugin_page_notice($file, $data, $context) {
1187
  if (is_plugin_active($file)) {
1188
-
1189
- //3 columns if 2.8+ but 5 columns if 2.7.x or prior
1190
- global $wp_version;
1191
- $columns = version_compare($wp_version, '2.8', '>=') ? 3 : 5;
1192
-
1193
- echo "<tr class='plugin-update-tr su-plugin-notice'><td colspan='$columns' class='plugin-update'><div class='update-message'>\n";
1194
- printf(__('SEO Ultimate includes the functionality of %1$s. You may want to deactivate %1$s to avoid plugin conflicts.', 'seo-ultimate'), $data['Name']);
1195
  echo "</div></td></tr>\n";
1196
  }
1197
  }
@@ -1491,29 +1484,15 @@ class SEO_Ultimate {
1491
  /********** ADMIN POST META BOX FUNCTIONS **********/
1492
 
1493
  /**
1494
- * Gets the post meta box fields from the modules, sorts them, and returns the HTML as a string.
1495
- *
1496
- * @since 0.1
1497
- * @uses $modules
1498
- * @uses get_postmeta_array();
1499
- *
1500
- * @param string $screen The admin screen currently being viewed (post, page). Defaults to post. Optional.
1501
- * @return string Concatenated <tr>(field)</tr> strings.
1502
  */
1503
- function get_postmeta_fields($screen='post') {
1504
-
1505
- $fields = $this->get_postmeta_array($screen);
1506
-
1507
- if (count($fields) > 0) {
1508
-
1509
- //Sort the fields array
1510
- ksort($fields, SORT_STRING);
1511
-
1512
- //Return a string
1513
- return implode("\n", $fields);
1514
- }
1515
-
1516
- return '';
1517
  }
1518
 
1519
  /**
@@ -1523,12 +1502,41 @@ class SEO_Ultimate {
1523
  * @uses SU_Module::postmeta_fields()
1524
  *
1525
  * @param string $screen The admin screen currently being viewed (post, page). Defaults to post. Optional.
1526
- * @return array An array of post meta HTML.
1527
  */
1528
  function get_postmeta_array($screen='post') {
1529
- $fields = array();
1530
- foreach ($this->modules as $key => $module)
1531
- $fields = $this->modules[$key]->postmeta_fields($fields, $screen);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1532
  return $fields;
1533
  }
1534
 
@@ -1536,7 +1544,7 @@ class SEO_Ultimate {
1536
  * If we have post meta fields to display, then register our meta box with WordPress.
1537
  *
1538
  * @since 0.1
1539
- * @uses get_postmeta_fields()
1540
  */
1541
  function add_postmeta_box() {
1542
 
@@ -1545,7 +1553,7 @@ class SEO_Ultimate {
1545
  foreach ($posttypes as $screen) {
1546
 
1547
  //Only show the meta box if there are fields to show.
1548
- if ($this->get_postmeta_fields($screen))
1549
  add_meta_box('su_postmeta', __('SEO Settings', 'seo-ultimate'), create_function('', 'global $seo_ultimate; $seo_ultimate->show_postmeta_box("'.$screen.'");'), $screen, 'normal', 'high');
1550
  }
1551
  }
@@ -1554,22 +1562,53 @@ class SEO_Ultimate {
1554
  * Displays the inner contents of the post meta box.
1555
  *
1556
  * @since 0.1
1557
- * @uses get_postmeta_fields()
1558
  *
1559
  * @param string $screen The admin screen currently being viewed (post, page).
1560
  */
1561
  function show_postmeta_box($screen) {
1562
-
1563
  //Begin box
1564
  echo "<div id='su-postmeta-box'>\n";
1565
  wp_nonce_field('su-update-postmeta', '_su_wpnonce');
1566
- echo "\n<table>\n";
1567
 
1568
- //Output postmeta fields
1569
- echo $this->get_postmeta_fields($screen);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1570
 
1571
  //End box
1572
- echo "\n</table>\n</div>\n";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1573
  }
1574
 
1575
  /**
@@ -1588,44 +1627,40 @@ class SEO_Ultimate {
1588
  //Run preliminary permissions checks
1589
  if ( !isset($_REQUEST['_su_wpnonce']) || !wp_verify_nonce($_REQUEST['_su_wpnonce'], 'su-update-postmeta') ) return;
1590
  $post_type = isset($_POST['post_type']) ? $_POST['post_type'] : 'post';
1591
- if (function_exists('get_post_type_object')) { //If WP3.0+...
1592
- $post_type_object = get_post_type_object($post_type);
1593
- if (!current_user_can($post_type_object->cap->edit_posts)) return;
1594
- } else { //WP2.9 or below
1595
- if ( 'page' == $_POST['post_type'] ) {
1596
- if ( !current_user_can( 'edit_page', $post_id )) return;
1597
- } elseif ( 'post' == $_POST['post_type'] ) {
1598
- if ( !current_user_can( 'edit_post', $post_id )) return;
1599
- } else return;
1600
- }
1601
 
1602
  //Get an array of the postmeta fields
1603
- $keys = array_keys($this->get_postmeta_array($post_type));
1604
- $fields = array();
1605
-
1606
- foreach ($keys as $key) {
1607
- $newfields = explode('|', $key);
1608
- array_shift($newfields);
1609
- $fields = array_merge($fields, $newfields);
1610
- }
1611
-
1612
- //Update postmeta values
1613
- foreach ($fields as $field) {
1614
-
1615
- $metakey = "_su_$field";
1616
-
1617
- $value = isset($_POST[$metakey]) ? stripslashes_deep($_POST[$metakey]) : '';
1618
- if (!apply_filters("su_custom_update_postmeta-$field", false, $value, $metakey, $post)) {
1619
- if (empty($value))
1620
- //Delete the old value
1621
- delete_post_meta($post_id, $metakey);
1622
- else
1623
- //Add the new value
1624
- update_post_meta($post_id, $metakey, $value);
1625
  }
1626
  }
1627
  }
1628
 
 
 
 
 
 
 
 
1629
 
1630
  /********** CRON FUNCTION **********/
1631
 
@@ -1857,5 +1892,63 @@ class SEO_Ultimate {
1857
  echo json_encode($items);
1858
  die();
1859
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1860
  }
1861
  ?>
636
  $this->modules[$key]->upgrade();
637
  $this->modules[$key]->init();
638
  }
639
+
640
+ global $pagenow;
641
+ if ('post.php' == $pagenow) {
642
+ add_action('admin_enqueue_scripts', array(&$this, 'postmeta_box_tabs_init'));
643
+ }
644
  }
645
 
646
  /**
1159
  */
1160
  function plugin_page_notices() {
1161
 
 
 
 
1162
  global $pagenow;
1163
 
1164
  if ($pagenow == 'plugins.php') {
1165
 
1166
  $r_plugins = array(
1167
+ 'wordpress-seo/wp-seo.php'
 
 
 
 
1168
  );
1169
 
1170
  $i_plugins = get_plugins();
1177
  }
1178
 
1179
  /**
1180
+ * Outputs a table row notifying the user that he/she is using a plugin which may conflict with SEO Ultimate.
1181
  *
1182
  * @since 0.1
1183
  */
1184
  function plugin_page_notice($file, $data, $context) {
1185
  if (is_plugin_active($file)) {
1186
+ echo "<tr class='plugin-update-tr su-plugin-notice'><td colspan='3' class='plugin-update colspanchange'><div class='update-message'>\n";
1187
+ printf(__('%1$s is known to cause conflicts with SEO Ultimate. Please deactivate %1$s if you wish to continue using SEO Ultimate.', 'seo-ultimate'), $data['Name']);
 
 
 
 
 
1188
  echo "</div></td></tr>\n";
1189
  }
1190
  }
1484
  /********** ADMIN POST META BOX FUNCTIONS **********/
1485
 
1486
  /**
1487
+ * @since 7.3
 
 
 
 
 
 
 
1488
  */
1489
+ function get_postmeta_tabs() {
1490
+ return array(
1491
+ 'serp' => __('Search Engine Listing', 'seo-ultimate')
1492
+ , 'opengraph' => __('Facebook Data', 'seo-ultimate')
1493
+ , 'links' => __('Links', 'seo-ultimate')
1494
+ , 'misc' => __('Miscellaneous', 'seo-ultimate')
1495
+ );
 
 
 
 
 
 
 
1496
  }
1497
 
1498
  /**
1502
  * @uses SU_Module::postmeta_fields()
1503
  *
1504
  * @param string $screen The admin screen currently being viewed (post, page). Defaults to post. Optional.
1505
+ * @return array An array structured like this: $data[tab ID][position #][field name] = HTML
1506
  */
1507
  function get_postmeta_array($screen='post') {
1508
+
1509
+ static $fields = array();
1510
+ if ($fields)
1511
+ return $fields;
1512
+
1513
+ $tabs = $this->get_postmeta_tabs();
1514
+
1515
+ $module_fields = array();
1516
+
1517
+ foreach ($this->modules as $key => $module) {
1518
+ $module_fields = $this->modules[$key]->postmeta_fields(array(), $screen);
1519
+
1520
+ foreach ($module_fields as $tab => $tab_fields) {
1521
+ if (isset($tabs[$tab])) {
1522
+ if (!isset($fields[$tab])) $fields[$tab] = array();
1523
+ $fields[$tab] += $tab_fields;
1524
+ } else { //Backcompat
1525
+ if (strpos($tab, '|') === false) {
1526
+ if (!isset($fields['misc'][$tab])) $fields['misc'][$tab] = array();
1527
+ $fields['misc'][$tab] += $tab_fields;
1528
+ } else {
1529
+ list($pos, $key) = explode('|', $tab);
1530
+ $fields['misc'][$pos][$key] = $tab_fields;
1531
+ }
1532
+ }
1533
+ }
1534
+ }
1535
+
1536
+ foreach ($fields as $tab => $tab_poses) {
1537
+ ksort($fields[$tab]);
1538
+ }
1539
+
1540
  return $fields;
1541
  }
1542
 
1544
  * If we have post meta fields to display, then register our meta box with WordPress.
1545
  *
1546
  * @since 0.1
1547
+ * @uses get_postmeta_array()
1548
  */
1549
  function add_postmeta_box() {
1550
 
1553
  foreach ($posttypes as $screen) {
1554
 
1555
  //Only show the meta box if there are fields to show.
1556
+ if ($this->get_postmeta_array($screen))
1557
  add_meta_box('su_postmeta', __('SEO Settings', 'seo-ultimate'), create_function('', 'global $seo_ultimate; $seo_ultimate->show_postmeta_box("'.$screen.'");'), $screen, 'normal', 'high');
1558
  }
1559
  }
1562
  * Displays the inner contents of the post meta box.
1563
  *
1564
  * @since 0.1
1565
+ * @uses get_postmeta_array()
1566
  *
1567
  * @param string $screen The admin screen currently being viewed (post, page).
1568
  */
1569
  function show_postmeta_box($screen) {
1570
+
1571
  //Begin box
1572
  echo "<div id='su-postmeta-box'>\n";
1573
  wp_nonce_field('su-update-postmeta', '_su_wpnonce');
 
1574
 
1575
+ //Output postmeta tabs
1576
+ $data = $this->get_postmeta_array();
1577
+ $_tabs = $this->get_postmeta_tabs();
1578
+ $tabs = array();
1579
+ foreach ($_tabs as $tab_id => $tab_title) {
1580
+ if (isset($data[$tab_id]))
1581
+ $tabs[] = array('title' => $tab_title, 'id' => $tab_id, 'callback' => array('postmeta_tab', $tab_id));
1582
+ }
1583
+ $this->tabs($tabs);
1584
+
1585
+ //Meta box footer
1586
+ echo '<p class="su-postmeta-box-footer">';
1587
+ printf(__('%1$s %2$s by %3$s', 'seo-ultimate'),
1588
+ '<a href="'.SU_PLUGIN_URI.'" target="_blank">'.__(SU_PLUGIN_NAME, 'seo-ultimate').'</a>',
1589
+ SU_VERSION,
1590
+ '<a href="'.SU_AUTHOR_URI.'" target="_blank">'.__(SU_AUTHOR, 'seo-ultimate').'</a>'
1591
+ );
1592
+ echo '</p>';
1593
 
1594
  //End box
1595
+ echo "</div>\n";
1596
+ }
1597
+
1598
+ /**
1599
+ * @since 7.3
1600
+ */
1601
+ function postmeta_tab($tab) {
1602
+ echo "\n<table>\n";
1603
+
1604
+ $data = $this->get_postmeta_array($screen);
1605
+ foreach ($data[$tab] as $tab_pos) {
1606
+ foreach ($tab_pos as $pos_field) {
1607
+ echo $pos_field;
1608
+ }
1609
+ }
1610
+
1611
+ echo "\n</table>\n";
1612
  }
1613
 
1614
  /**
1627
  //Run preliminary permissions checks
1628
  if ( !isset($_REQUEST['_su_wpnonce']) || !wp_verify_nonce($_REQUEST['_su_wpnonce'], 'su-update-postmeta') ) return;
1629
  $post_type = isset($_POST['post_type']) ? $_POST['post_type'] : 'post';
1630
+ $post_type_object = get_post_type_object($post_type);
1631
+ if (!current_user_can($post_type_object->cap->edit_posts)) return;
 
 
 
 
 
 
 
 
1632
 
1633
  //Get an array of the postmeta fields
1634
+ $data = $this->get_postmeta_array($post_type);
1635
+ foreach ($data as $tab => $tab_poses) {
1636
+ foreach ($tab_poses as $tab_pos) {
1637
+ foreach ($tab_pos as $fields => $html) {
1638
+ $fields = explode('|', $fields);
1639
+ foreach ($fields as $field) {
1640
+ $metakey = "_su_$field";
1641
+
1642
+ $value = isset($_POST[$metakey]) ? stripslashes_deep($_POST[$metakey]) : '';
1643
+ if (!apply_filters("su_custom_update_postmeta-$field", false, $value, $metakey, $post)) {
1644
+ if (empty($value))
1645
+ //Delete the old value
1646
+ delete_post_meta($post_id, $metakey);
1647
+ else
1648
+ //Add the new value
1649
+ update_post_meta($post_id, $metakey, $value);
1650
+ }
1651
+ }
1652
+ }
 
 
 
1653
  }
1654
  }
1655
  }
1656
 
1657
+ /**
1658
+ * @since 7.3
1659
+ */
1660
+ function postmeta_box_tabs_init() {
1661
+ wp_enqueue_script('jquery-ui-tabs');
1662
+ }
1663
+
1664
 
1665
  /********** CRON FUNCTION **********/
1666
 
1892
  echo json_encode($items);
1893
  die();
1894
  }
1895
+
1896
+ /********** TABS **********/
1897
+
1898
+ function tabs($tabs=array(), $table=false, &$callback=null) {
1899
+
1900
+ if ($callback == null)
1901
+ $callback = $this;
1902
+
1903
+ if ($c = count($tabs)) {
1904
+
1905
+ if ($c > 1)
1906
+ echo "\n\n<div id='su-tabset' class='su-tabs'>\n";
1907
+
1908
+ foreach ($tabs as $tab) {
1909
+
1910
+ if (isset($tab['title'])) $title = $tab['title']; else return;
1911
+ if (isset($tab['id'])) $id = $tab['id']; else return;
1912
+ if (isset($tab['callback']))$function = $tab['callback']; else return;
1913
+
1914
+ if ($c > 1) {
1915
+ //$id = 'su-' . sustr::preg_filter('a-z0-9', strtolower($title));
1916
+ echo "<fieldset id='$id'>\n<h3>$title</h3>\n<div class='su-tab-contents'>\n";
1917
+ }
1918
+
1919
+ if ($table) echo "<table class='form-table'>\n";
1920
+
1921
+ $call = $args = array();
1922
+
1923
+ if (is_array($function)) {
1924
+
1925
+ if (is_array($function[0])) {
1926
+ $call = array_shift($function);
1927
+ $args = $function;
1928
+ } elseif (is_string($function[0])) {
1929
+ $call = array_shift($function);
1930
+ $call = array($callback, $call);
1931
+ $args = $function;
1932
+ } else {
1933
+ $call = $function;
1934
+ }
1935
+ } else {
1936
+ $call = array($callback, $function);
1937
+ }
1938
+ if (is_callable($call)) call_user_func_array($call, $args);
1939
+
1940
+ if ($table) echo "</table>";
1941
+
1942
+ if ($c > 1)
1943
+ echo "</div>\n</fieldset>\n";
1944
+ }
1945
+
1946
+ if ($c > 1) {
1947
+ echo "</div>\n";
1948
+
1949
+ echo '<script type="text/javascript" src="'.$this->plugin_dir_url.'includes/tabs.js?v='.SU_VERSION.'"></script>';
1950
+ }
1951
+ }
1952
+ }
1953
  }
1954
  ?>
plugin/global.css CHANGED
@@ -61,6 +61,7 @@ These styles are sometimes or always referenced outside of SEO Ultimate's admin
61
  #wpcontent .su-message p {
62
  border-width: 1px;
63
  border-style: solid;
 
64
  }
65
 
66
  .su-message .su-success {
@@ -68,7 +69,7 @@ These styles are sometimes or always referenced outside of SEO Ultimate's admin
68
  border-color: #61DF6F;
69
  }
70
 
71
- .su-message .su-error {
72
  background-color: #FFBFBF;
73
  border-color: #FF0000;
74
  }
@@ -113,7 +114,7 @@ div.su-help h6 {
113
  text-align: right;
114
  font-weight: bold;
115
  padding-right: 0.5em;
116
- width: 12em;
117
  }
118
 
119
  #su-postmeta-box table tr.textarea th.su label {
@@ -125,6 +126,10 @@ div.su-help h6 {
125
  font-weight: normal;
126
  }
127
 
 
 
 
 
128
  #su-postmeta-box table,
129
  #su-postmeta-box table td input.regular-text,
130
  #su-postmeta-box table td textarea {
@@ -149,9 +154,113 @@ div.su-module select optgroup option {
149
  vertical-align: middle;
150
  }
151
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
152
 
153
  /* PLUGIN NOTICES */
154
 
155
  #wpwrap .su-plugin-notice .update-message, #wpwrap .su-plugin-update-info {
156
  font-weight: normal;
157
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
61
  #wpcontent .su-message p {
62
  border-width: 1px;
63
  border-style: solid;
64
+ border-radius: 4px;
65
  }
66
 
67
  .su-message .su-success {
69
  border-color: #61DF6F;
70
  }
71
 
72
+ .su-message .su-error, .plugin-update-tr.su-plugin-notice .update-message {
73
  background-color: #FFBFBF;
74
  border-color: #FF0000;
75
  }
114
  text-align: right;
115
  font-weight: bold;
116
  padding-right: 0.5em;
117
+ white-space: nowrap;
118
  }
119
 
120
  #su-postmeta-box table tr.textarea th.su label {
126
  font-weight: normal;
127
  }
128
 
129
+ #su-postmeta-box table td.su {
130
+ width: 100%;
131
+ }
132
+
133
  #su-postmeta-box table,
134
  #su-postmeta-box table td input.regular-text,
135
  #su-postmeta-box table td textarea {
154
  vertical-align: middle;
155
  }
156
 
157
+ #su-postmeta-box .su-postmeta-box-footer {
158
+ color: #999;
159
+ margin: 0;
160
+ padding: 0.5em 1em;
161
+ text-align: right;
162
+ }
163
+
164
+ #su-postmeta-box .su-postmeta-box-footer a {
165
+ color: #999;
166
+ text-decoration: none;
167
+ }
168
+
169
+ input.jlsuggest:-moz-placeholder {
170
+ background-color: #E0E7FF;
171
+ border-color: #C0CDFF;
172
+ color: black;
173
+ }
174
+
175
+ /* Requires IE10+ */
176
+ input.jlsuggest:-ms-input-placeholder {
177
+ background-color: #E0E7FF;
178
+ border-color: #C0CDFF;
179
+ color: black;
180
+ }
181
+
182
+ /*
183
+ A ::-webkit-input-placeholder block is not included because
184
+ the background-color rule doesn't apply correctly on Chrome
185
+ and it looks rather horrendous...
186
+ */
187
+
188
 
189
  /* PLUGIN NOTICES */
190
 
191
  #wpwrap .su-plugin-notice .update-message, #wpwrap .su-plugin-update-info {
192
  font-weight: normal;
193
  }
194
+
195
+ /* TABS (Heavily based on CSS from the Breadcrumbs NavXT plugin) */
196
+
197
+ .su-tabs ul.ui-tabs-nav {
198
+ border-bottom: 1px solid #dfdfdf;
199
+ font-size: 12px;
200
+ height: 29px;
201
+ list-style: none;
202
+ margin: 13px 0 0;
203
+ overflow: visible;
204
+ padding: 0 0 0 8px;
205
+ }
206
+
207
+ .su-tabs ul.ui-tabs-nav li {
208
+ display: block;
209
+ float: left;
210
+ line-height: 200%;
211
+ list-style: none;
212
+ margin: 0;
213
+ padding: 0;
214
+ position: relative;
215
+ text-align: center;
216
+ white-space: nowrap;
217
+ width: auto;
218
+ }
219
+
220
+
221
+ .su-tabs ul.ui-tabs-nav li a {
222
+ border-bottom: 1px solid #dfdfdf;
223
+ display: block;
224
+ float: left;
225
+ line-height: 28px;
226
+ padding: 1px 10px 0;
227
+ position: relative;
228
+ text-decoration: none;
229
+ }
230
+
231
+ .su-tabs ul.ui-tabs-nav li.ui-tabs-selected a {
232
+ -moz-border-radius-topleft: 4px;
233
+ -moz-border-radius-topright: 4px;
234
+ -webkit-border-top-left-radius: 4px;
235
+ -webkit-border-top-right-radius: 4px;
236
+ border-top-left-radius: 4px;
237
+ border-top-right-radius: 4px;
238
+ border: 1px solid #dfdfdf;
239
+ color: #333333;
240
+ font-weight: normal;
241
+ padding: 0 9px;
242
+ }
243
+
244
+ .su-tabs ul.ui-tabs-nav li.ui-tabs-selected a {
245
+ border-bottom-color: #fff;
246
+ }
247
+
248
+ #su-postmeta-box .su-tabs ul.ui-tabs-nav li.ui-tabs-selected a {
249
+ background-color: white;
250
+ }
251
+
252
+ .su-tabs fieldset {
253
+ clear: left;
254
+ }
255
+
256
+ div.su-module .su-tabs .su-tab-contents {
257
+ margin-top: 1em;
258
+ }
259
+
260
+ #su-postmeta-box .su-tabs .su-tab-contents {
261
+ padding: 1em;
262
+ background-color: white;
263
+ border: 1px solid #dfdfdf;
264
+ border-top: 0 none;
265
+ background-color: white;
266
+ }
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: SEO Design Solutions, JohnLamansky
3
  Tags: seo, SEO Ultimate, suite, google, yahoo, bing, search engines, admin, post, page, custom post types, categories, tags, terms, custom taxonomies, base, title, title tag, wp_title, meta, robots, noindex, nofollow, canonical, HTTP headers, 404, robots.txt, htaccess, slugs, url, anchor, more, link, excerpt, permalink, links, autolinks, code, footer, settings, redirect, 301, 302, 307, modules, uninstallable, reinstallable, downgradable, import, export, CSV, affiliate
4
  Requires at least: 3.3
5
  Tested up to: 3.4.1
6
- Stable tag: 7.2.9
7
 
8
  This all-in-one SEO plugin gives you control over title tags, noindex, meta tags, slugs, canonical, autolinks, 404 errors, rich snippets, and more.
9
 
@@ -11,11 +11,11 @@ This all-in-one SEO plugin gives you control over title tags, noindex, meta tags
11
 
12
  = Recent Releases =
13
 
 
14
  * Version 7.2 updates Permalink Tweaker
15
  * Version 7.1 adds new Link Mask Generator features
16
  * Version 7.0 adds meta description pagination and WP 3.3 compatibility
17
  * Version 6.9 adds the Settings Monitor module
18
- * Version 6.8 adds rewrite method selection for Title Tag Rewriter
19
 
20
  = Features =
21
 
@@ -130,9 +130,14 @@ SEO Ultimate is an all-in-one [SEO](http://www.seodesignsolutions.com/) plugin w
130
  * **Settings Monitor** -- NEW in Version 6.9
131
  * Keep tabs on the SEO-friendliness of your site's settings with a dashboard of green/yellow/red indicators
132
 
133
- * **Settings Manager**
 
 
 
 
 
134
  * Export your SEO Ultimate settings to a file and re-import later if desired.
135
- * Move SEO Ultimate settings between blogs using the export/import functionality.
136
  * Reset all settings back to "factory defaults" if something goes wrong.
137
 
138
  * **Additional features**
@@ -263,6 +268,19 @@ Frequently asked questions, settings help, and troubleshooting tips for SEO Ulti
263
 
264
  == Changelog ==
265
 
 
 
 
 
 
 
 
 
 
 
 
 
 
266
  = Version 7.2.9 (July 9, 2012) =
267
  * Bugfix: Code Inserter no longer calls the `wp_get_current_user` function prematurely during first-time plugin activation (bug introduced in 7.2.6)
268
 
3
  Tags: seo, SEO Ultimate, suite, google, yahoo, bing, search engines, admin, post, page, custom post types, categories, tags, terms, custom taxonomies, base, title, title tag, wp_title, meta, robots, noindex, nofollow, canonical, HTTP headers, 404, robots.txt, htaccess, slugs, url, anchor, more, link, excerpt, permalink, links, autolinks, code, footer, settings, redirect, 301, 302, 307, modules, uninstallable, reinstallable, downgradable, import, export, CSV, affiliate
4
  Requires at least: 3.3
5
  Tested up to: 3.4.1
6
+ Stable tag: 7.3
7
 
8
  This all-in-one SEO plugin gives you control over title tags, noindex, meta tags, slugs, canonical, autolinks, 404 errors, rich snippets, and more.
9
 
11
 
12
  = Recent Releases =
13
 
14
+ * Version 7.3 adds the Open Graph Integrator module
15
  * Version 7.2 updates Permalink Tweaker
16
  * Version 7.1 adds new Link Mask Generator features
17
  * Version 7.0 adds meta description pagination and WP 3.3 compatibility
18
  * Version 6.9 adds the Settings Monitor module
 
19
 
20
  = Features =
21
 
130
  * **Settings Monitor** -- NEW in Version 6.9
131
  * Keep tabs on the SEO-friendliness of your site's settings with a dashboard of green/yellow/red indicators
132
 
133
+ * **Open Graph Integrator** -- NEW in Version 7.3
134
+ * Out-of-the-box functionality autogenerates Open Graph data for your homepage and posts
135
+ * Fine-grained controls allow you to customize the Open Graph title, image, and content type for every single post, page, attachment, and custom post type object on your site
136
+ * Mass-editors let you specify Open Graph data for multiple posts and pages at a time
137
+
138
+ * **Settings Manager** (located under Settings > SEO Ultimate)
139
  * Export your SEO Ultimate settings to a file and re-import later if desired.
140
+ * Use the export/import functionality to move SEO Ultimate settings between WordPress sites.
141
  * Reset all settings back to "factory defaults" if something goes wrong.
142
 
143
  * **Additional features**
268
 
269
  == Changelog ==
270
 
271
+ = Version 7.3 (August 6, 2012) =
272
+ * New Module: Open Graph Integrator
273
+ * Automatically generates Open Graph elements for posts, pages, attachments, custom post type objects, user profile pages, and the blog homepage
274
+ * Includes a mass-editor that lets you bulk-edit data for posts, pages, attachments, and custom post types
275
+ * Adds Open Graph fields to the "SEO Settings" box
276
+ * Lets you specify sitewide and default Open Graph values
277
+ * Feature: The "Title Tag" field in the "SEO Settings" box now includes a character counter
278
+ * Improvement: The "SEO Settings" box has been broken up into 4 tabs in order to make the box smaller and in order to make settings easier to find
279
+ * Improvement: Removed some backcompatibility code for old versions of WordPress (2.9 and before)
280
+ * Improvement: Mass-editors now include posts/pages/etc. that are drafts/pending/scheduled/trashed
281
+ * Bugfix: Restored the ability to edit media items in module mass-editors
282
+ * Bugfix: Meta Keywords Editor now removes stopwords case-insensitively from lists of autogenerated meta keywords
283
+
284
  = Version 7.2.9 (July 9, 2012) =
285
  * Bugfix: Code Inserter no longer calls the `wp_get_current_user` function prematurely during first-time plugin activation (bug introduced in 7.2.6)
286
 
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 gives you control over title tags, noindex/nofollow, meta tags, rich snippets, slugs, canonical tags, autolinks, 404 errors, rich snippets, and more.
6
- Version: 7.2.9
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 7.2.9
16
  * @link http://www.seodesignsolutions.com/wordpress-seo/ SEO Ultimate Homepage
17
  */
18
 
@@ -47,10 +47,10 @@ define('SU_MINIMUM_WP_VER', '3.2');
47
  //Reading plugin info from constants is faster than trying to parse it from the header above.
48
  define('SU_PLUGIN_NAME', 'SEO Ultimate');
49
  define('SU_PLUGIN_URI', 'http://www.seodesignsolutions.com/wordpress-seo/');
50
- define('SU_VERSION', '7.2.9');
51
  define('SU_AUTHOR', 'SEO Design Solutions');
52
  define('SU_AUTHOR_URI', 'http://www.seodesignsolutions.com/');
53
- define('SU_USER_AGENT', 'SeoUltimate/7.2.9');
54
 
55
  /********** INCLUDES **********/
56
 
3
  Plugin Name: SEO Ultimate
4
  Plugin URI: http://www.seodesignsolutions.com/wordpress-seo/
5
  Description: This all-in-one SEO plugin gives you control over title tags, noindex/nofollow, meta tags, rich snippets, slugs, canonical tags, autolinks, 404 errors, rich snippets, and more.
6
+ Version: 7.3
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 7.3
16
  * @link http://www.seodesignsolutions.com/wordpress-seo/ SEO Ultimate Homepage
17
  */
18
 
47
  //Reading plugin info from constants is faster than trying to parse it from the header above.
48
  define('SU_PLUGIN_NAME', 'SEO Ultimate');
49
  define('SU_PLUGIN_URI', 'http://www.seodesignsolutions.com/wordpress-seo/');
50
+ define('SU_VERSION', '7.3');
51
  define('SU_AUTHOR', 'SEO Design Solutions');
52
  define('SU_AUTHOR_URI', 'http://www.seodesignsolutions.com/');
53
+ define('SU_USER_AGENT', 'SeoUltimate/7.3');
54
 
55
  /********** INCLUDES **********/
56
 
translations/seo-ultimate.pot CHANGED
@@ -2,9 +2,9 @@
2
  # This file is distributed under the same license as the SEO Ultimate package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: SEO Ultimate 7.2.8\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/seo-ultimate\n"
7
- "POT-Creation-Date: 2012-07-07 17:06:04+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -69,7 +69,7 @@ msgstr ""
69
  msgid "Log"
70
  msgstr ""
71
 
72
- #: modules/404s/fofs-log.php:113 modules/class.su-module.php:1231
73
  msgid "Actions"
74
  msgstr ""
75
 
@@ -207,14 +207,14 @@ msgstr ""
207
 
208
  #: modules/404s/fofs.php:19 modules/canonical/canonical.php:212
209
  #: modules/files/files.php:144 modules/link-nofollow/link-nofollow.php:130
210
- #: modules/linkbox/linkbox.php:91 modules/meta/meta-descriptions.php:180
211
- #: modules/meta/meta-keywords.php:172 modules/meta/meta-robots.php:53
212
  #: modules/meta/webmaster-verify.php:87 modules/more-links/more-links.php:104
213
  #: modules/more-links/more-links.php:111
214
  #: modules/rich-snippets/rich-snippets.php:258
215
  #: modules/settings/settings.php:63
216
- #: modules/sharing-buttons/sharing-buttons.php:72 modules/slugs/slugs.php:76
217
- #: modules/titles/titles.php:347 modules/user-code/user-code.php:97
218
  msgid "Overview"
219
  msgstr ""
220
 
@@ -264,9 +264,9 @@ msgid ""
264
  msgstr ""
265
 
266
  #: modules/404s/fofs.php:45 modules/linkbox/linkbox.php:102
267
- #: modules/meta/meta-descriptions.php:191 modules/meta/meta-keywords.php:179
268
- #: modules/meta/meta-robots.php:64 modules/rich-snippets/rich-snippets.php:269
269
- #: modules/titles/titles.php:421
270
  msgid "Settings Help"
271
  msgstr ""
272
 
@@ -316,10 +316,10 @@ msgid ""
316
  msgstr ""
317
 
318
  #: modules/404s/fofs.php:74 modules/files/files.php:165
319
- #: modules/meta/meta-descriptions.php:212 modules/meta/meta-keywords.php:202
320
- #: modules/meta/meta-robots.php:103
321
- #: modules/rich-snippets/rich-snippets.php:279 modules/slugs/slugs.php:107
322
- #: modules/titles/titles.php:459 modules/user-code/user-code.php:111
323
  msgid "Troubleshooting"
324
  msgstr ""
325
 
@@ -487,7 +487,7 @@ msgid "New window"
487
  msgstr ""
488
 
489
  #: modules/autolinks/content-autolinks.php:464
490
- msgid "Incoming Autolink Anchors:<br /><em>(one per line)</em>"
491
  msgstr ""
492
 
493
  #: modules/autolinks/content-autolinks.php:467
@@ -747,102 +747,103 @@ msgid ""
747
  "using the <a href=\"%s\">Module Manager</a>."
748
  msgstr ""
749
 
750
- #: modules/class.su-module.php:1045
751
  msgid "%1$s | %2$s %3$s by %4$s"
752
  msgstr ""
753
 
754
- #: modules/class.su-module.php:1124
755
  msgid "Your site currently doesn&#8217;t have any public items of this type."
756
  msgstr ""
757
 
758
- #: modules/class.su-module.php:1210
759
  msgid "&laquo;"
760
  msgstr ""
761
 
762
- #: modules/class.su-module.php:1211
763
  msgid "&raquo;"
764
  msgstr ""
765
 
766
- #: modules/class.su-module.php:1218
767
  msgid "Displaying %s&#8211;%s of %s"
768
  msgstr ""
769
 
770
- #: modules/class.su-module.php:1232
771
  msgid "ID"
772
  msgstr ""
773
 
774
- #: modules/class.su-module.php:1266
775
  msgid "View"
776
  msgstr ""
777
 
778
- #: modules/class.su-module.php:1268
779
  msgid "Edit"
780
  msgstr ""
781
 
782
- #: modules/class.su-module.php:1438
783
  msgid "Settings updated."
784
  msgstr ""
785
 
786
- #: modules/class.su-module.php:1459
787
  msgid "Save Changes"
788
  msgstr ""
789
 
790
- #: modules/class.su-module.php:2007
791
  msgid ""
792
  "Are you sure you want to replace the textbox contents with this default "
793
  "value?"
794
  msgstr ""
795
 
796
- #: modules/class.su-module.php:2028 modules/settings/settings-data.php:23
797
  msgid "Reset"
798
  msgstr ""
799
 
800
- #: modules/class.su-module.php:2750 modules/class.su-module.php:2762
801
  msgid "A Deleted %s"
802
  msgstr ""
803
 
804
- #: modules/class.su-module.php:2752
805
  msgid "A Deleted Post"
806
  msgstr ""
807
 
808
- #: modules/class.su-module.php:2767
809
  msgid "A Deleted Term"
810
  msgstr ""
811
 
812
- #: modules/class.su-module.php:2773 modules/meta/meta-descriptions.php:31
813
- #: modules/meta/meta-keywords.php:40 plugin/class.seo-ultimate.php:1740
 
814
  msgid "Blog Homepage"
815
  msgstr ""
816
 
817
- #: modules/class.su-module.php:2778 plugin/class.seo-ultimate.php:1818
818
  msgid "Author"
819
  msgstr ""
820
 
821
- #: modules/class.su-module.php:2780
822
  msgid "A Deleted User"
823
  msgstr ""
824
 
825
- #: modules/class.su-module.php:2795 plugin/class.seo-ultimate.php:1848
826
  msgid "Link Mask"
827
  msgstr ""
828
 
829
- #: modules/class.su-module.php:2797
830
  msgid "Link Mask (Disabled)"
831
  msgstr ""
832
 
833
- #: modules/class.su-module.php:2802
834
  msgid "A Deleted Link Mask"
835
  msgstr ""
836
 
837
- #: modules/class.su-module.php:2832
838
  msgid "Type a URL or start typing the name of an item on your site"
839
  msgstr ""
840
 
841
- #: modules/class.su-module.php:2845
842
  msgid "Remove this location from this textbox"
843
  msgstr ""
844
 
845
- #: modules/class.su-module.php:2845
846
  msgid "X"
847
  msgstr ""
848
 
@@ -919,11 +920,11 @@ msgid ""
919
  "</ul>\r\n"
920
  msgstr ""
921
 
922
- #: modules/files/files.php:155 modules/meta/meta-descriptions.php:203
923
- #: modules/meta/meta-keywords.php:189 modules/modules/modules.php:183
924
  #: modules/more-links/more-links.php:105 modules/more-links/more-links.php:116
925
- #: modules/settings/settings.php:82 modules/slugs/slugs.php:87
926
- #: modules/titles/titles.php:448
927
  msgid "FAQ"
928
  msgstr ""
929
 
@@ -1076,7 +1077,7 @@ msgid "Add the nofollow attribute to..."
1076
  msgstr ""
1077
 
1078
  #: modules/link-nofollow/link-nofollow.php:55
1079
- msgid "Adjacent post links"
1080
  msgstr ""
1081
 
1082
  #: modules/link-nofollow/link-nofollow.php:56
@@ -1275,15 +1276,15 @@ msgstr ""
1275
  msgid "Default Value"
1276
  msgstr ""
1277
 
1278
- #: modules/meta/meta-descriptions.php:161
1279
  msgid "Meta Description:"
1280
  msgstr ""
1281
 
1282
- #: modules/meta/meta-descriptions.php:164
1283
  msgid "You&#8217;ve entered %s characters. Most search engines use up to 140."
1284
  msgstr ""
1285
 
1286
- #: modules/meta/meta-descriptions.php:172
1287
  msgid ""
1288
  "<strong>Description</strong> &mdash; The value of the meta description tag. "
1289
  "The description will often appear underneath the title in search engine "
@@ -1291,7 +1292,7 @@ msgid ""
1291
  "is important to ensuring a good search results clickthrough rate."
1292
  msgstr ""
1293
 
1294
- #: modules/meta/meta-descriptions.php:181
1295
  msgid ""
1296
  "\r\n"
1297
  "<ul>\r\n"
@@ -1310,7 +1311,7 @@ msgid ""
1310
  "</ul>\r\n"
1311
  msgstr ""
1312
 
1313
- #: modules/meta/meta-descriptions.php:192
1314
  msgid ""
1315
  "\r\n"
1316
  "<p>Here&#8217;s information on the various settings:</p>\r\n"
@@ -1332,7 +1333,7 @@ msgid ""
1332
  "</ul>\r\n"
1333
  msgstr ""
1334
 
1335
- #: modules/meta/meta-descriptions.php:204
1336
  msgid ""
1337
  "\r\n"
1338
  "<ul>\r\n"
@@ -1346,8 +1347,8 @@ msgid ""
1346
  "</ul>\r\n"
1347
  msgstr ""
1348
 
1349
- #: modules/meta/meta-descriptions.php:213 modules/meta/meta-keywords.php:203
1350
- #: modules/meta/meta-robots.php:104
1351
  msgid ""
1352
  "\r\n"
1353
  "<ul>\r\n"
@@ -1372,35 +1373,41 @@ msgstr ""
1372
  msgid "Meta Keywords Editor"
1373
  msgstr ""
1374
 
1375
- #: modules/meta/meta-keywords.php:19 modules/meta/meta-keywords.php:46
1376
  msgid "Meta Keywords"
1377
  msgstr ""
1378
 
1379
- #: modules/meta/meta-keywords.php:39 modules/noindex/noindex.php:50
1380
- msgid "Default Values"
 
1381
  msgstr ""
1382
 
1383
- #: modules/meta/meta-keywords.php:62
1384
- msgid "The %d most commonly-used words"
 
1385
  msgstr ""
1386
 
1387
- #: modules/meta/meta-keywords.php:75
1388
  msgid "Sitewide Keywords"
1389
  msgstr ""
1390
 
1391
- #: modules/meta/meta-keywords.php:75
1392
  msgid "(Separate with commas)"
1393
  msgstr ""
1394
 
1395
- #: modules/meta/meta-keywords.php:82
 
 
 
 
1396
  msgid "Blog Homepage Meta Keywords"
1397
  msgstr ""
1398
 
1399
- #: modules/meta/meta-keywords.php:159
1400
  msgid "Meta Keywords:<br /><em>(separate with commas)</em>"
1401
  msgstr ""
1402
 
1403
- #: modules/meta/meta-keywords.php:164
1404
  msgid ""
1405
  "<strong>Keywords</strong> &mdash; The value of the meta keywords tag. The "
1406
  "keywords list gives search engines a hint as to what this post/page is "
@@ -1408,7 +1415,7 @@ msgid ""
1408
  "three</samp>."
1409
  msgstr ""
1410
 
1411
- #: modules/meta/meta-keywords.php:173
1412
  msgid ""
1413
  "\r\n"
1414
  "<p>Meta Keywords Editor lets you tell search engines what keywords are "
@@ -1419,7 +1426,7 @@ msgid ""
1419
  "p>\r\n"
1420
  msgstr ""
1421
 
1422
- #: modules/meta/meta-keywords.php:180
1423
  msgid ""
1424
  "\r\n"
1425
  "<ul>\r\n"
@@ -1436,7 +1443,7 @@ msgid ""
1436
  "</ul>\r\n"
1437
  msgstr ""
1438
 
1439
- #: modules/meta/meta-keywords.php:190
1440
  msgid ""
1441
  "\r\n"
1442
  "<ul>\r\n"
@@ -1464,30 +1471,26 @@ msgstr ""
1464
  msgid "Meta Robot Tags"
1465
  msgstr ""
1466
 
1467
- #: modules/meta/meta-robots.php:22
1468
- msgid "Global"
1469
- msgstr ""
1470
-
1471
- #: modules/meta/meta-robots.php:28
1472
- msgid "Spider Instructions"
1473
- msgstr ""
1474
-
1475
- #: modules/meta/meta-robots.php:30
1476
  msgid ""
1477
  "Don&#8217t use this site&#8217s Open Directory description in search results."
1478
  msgstr ""
1479
 
1480
- #: modules/meta/meta-robots.php:31
1481
  msgid ""
1482
  "Don&#8217t use this site&#8217s Yahoo! Directory description in search "
1483
  "results."
1484
  msgstr ""
1485
 
1486
- #: modules/meta/meta-robots.php:32
1487
  msgid "Don&#8217t cache or archive this site."
1488
  msgstr ""
1489
 
1490
- #: modules/meta/meta-robots.php:54
 
 
 
 
1491
  msgid ""
1492
  "\r\n"
1493
  "<ul>\r\n"
@@ -1514,7 +1517,7 @@ msgid ""
1514
  "</ul>\r\n"
1515
  msgstr ""
1516
 
1517
- #: modules/meta/meta-robots.php:65
1518
  msgid ""
1519
  "\r\n"
1520
  "<p>Here&#8217;s information on the various settings:</p>\r\n"
@@ -1633,7 +1636,7 @@ msgid ""
1633
  "</ul>\r\n"
1634
  msgstr ""
1635
 
1636
- #: modules/misc/misc.php:11
1637
  msgid "Miscellaneous"
1638
  msgstr ""
1639
 
@@ -1748,7 +1751,7 @@ msgid "Default More Link Text"
1748
  msgstr ""
1749
 
1750
  #: modules/more-links/more-links.php:51
1751
- msgid "More Link Text:"
1752
  msgstr ""
1753
 
1754
  #: modules/more-links/more-links.php:75
@@ -1818,6 +1821,7 @@ msgid "Noindex"
1818
  msgstr ""
1819
 
1820
  #: modules/noindex/noindex.php:69 modules/noindex/noindex.php:80
 
1821
  msgid "Use default"
1822
  msgstr ""
1823
 
@@ -1899,6 +1903,161 @@ msgstr ""
1899
  msgid "Meta Robots Tag:"
1900
  msgstr ""
1901
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1902
  #: modules/permalinks/permalinks.php:15
1903
  msgid "Permalink Tweaker"
1904
  msgstr ""
@@ -1991,11 +2150,6 @@ msgstr ""
1991
  msgid "Date Reviewed"
1992
  msgstr ""
1993
 
1994
- #: modules/rich-snippets/rich-snippets.php:228
1995
- #: modules/rich-snippets/rich-snippets.php:237
1996
- msgid "None"
1997
- msgstr ""
1998
-
1999
  #: modules/rich-snippets/rich-snippets.php:230
2000
  msgid "Rich Snippet Type:"
2001
  msgstr ""
@@ -2123,7 +2277,7 @@ msgstr ""
2123
  msgid "SEO Design Solutions Whitepapers"
2124
  msgstr ""
2125
 
2126
- #. #-#-#-#-# plugin.pot (SEO Ultimate 7.2.8) #-#-#-#-#
2127
  #. Author of the plugin/theme
2128
  #: modules/sds-blog/sds-blog.php:49
2129
  msgid "SEO Design Solutions"
@@ -2140,19 +2294,15 @@ msgstr ""
2140
  msgid "Global Settings"
2141
  msgstr ""
2142
 
2143
- #: modules/settings/global-settings.php:41
2144
  msgid "Enable nofollow&#8217;d attribution link"
2145
  msgstr ""
2146
 
2147
- #: modules/settings/global-settings.php:42
2148
  msgid "Enable attribution link CSS styling"
2149
  msgstr ""
2150
 
2151
- #: modules/settings/global-settings.php:43
2152
- msgid "Notify me about unnecessary active plugins"
2153
- msgstr ""
2154
-
2155
- #: modules/settings/global-settings.php:44
2156
  msgid "Insert comments around HTML code insertions"
2157
  msgstr ""
2158
 
@@ -2443,9 +2593,9 @@ msgstr ""
2443
  msgid "SEO Ultimate Plugin Settings"
2444
  msgstr ""
2445
 
2446
- #. #-#-#-#-# plugin.pot (SEO Ultimate 7.2.8) #-#-#-#-#
2447
  #. Plugin Name of the plugin/theme
2448
- #: modules/settings/settings.php:26 plugin/class.seo-ultimate.php:856
2449
  msgid "SEO Ultimate"
2450
  msgstr ""
2451
 
@@ -2500,7 +2650,7 @@ msgid "Uninstaller"
2500
  msgstr ""
2501
 
2502
  #: modules/settings/uninstall.php:18 modules/settings/uninstall.php:22
2503
- #: plugin/class.seo-ultimate.php:1339
2504
  msgid "Uninstall"
2505
  msgstr ""
2506
 
@@ -2593,7 +2743,7 @@ msgstr ""
2593
  msgid "Words to Remove"
2594
  msgstr ""
2595
 
2596
- #: modules/slugs/slugs.php:77
2597
  msgid ""
2598
  "\r\n"
2599
  "<ul>\r\n"
@@ -2613,7 +2763,7 @@ msgid ""
2613
  "</ul>\r\n"
2614
  msgstr ""
2615
 
2616
- #: modules/slugs/slugs.php:88
2617
  msgid ""
2618
  "\r\n"
2619
  "<ul>\r\n"
@@ -2649,7 +2799,7 @@ msgid ""
2649
  "</ul>\r\n"
2650
  msgstr ""
2651
 
2652
- #: modules/slugs/slugs.php:108
2653
  msgid ""
2654
  "\r\n"
2655
  "<ul>\r\n"
@@ -2741,10 +2891,6 @@ msgstr ""
2741
  msgid "{title} - Page {num}"
2742
  msgstr ""
2743
 
2744
- #: modules/titles/titles.php:91
2745
- msgid "Blog Homepage Title"
2746
- msgstr ""
2747
-
2748
  #: modules/titles/titles.php:92
2749
  msgid "Post Title Format"
2750
  msgstr ""
@@ -2789,11 +2935,15 @@ msgstr ""
2789
  msgid "Pagination Title Format"
2790
  msgstr ""
2791
 
2792
- #: modules/titles/titles.php:334
2793
  msgid "Title Tag:"
2794
  msgstr ""
2795
 
2796
- #: modules/titles/titles.php:339
 
 
 
 
2797
  msgid ""
2798
  "<strong>Title Tag</strong> &mdash; The exact contents of the &lt;title&gt; "
2799
  "tag. The title appears in visitors&#8217; title bars and in search engine "
@@ -2801,7 +2951,7 @@ msgid ""
2801
  "page=su-titles\" target=\"_blank\">default post/page titles</a> are used."
2802
  msgstr ""
2803
 
2804
- #: modules/titles/titles.php:348
2805
  msgid ""
2806
  "\r\n"
2807
  "<ul>\r\n"
@@ -2824,11 +2974,11 @@ msgid ""
2824
  "</ul>\r\n"
2825
  msgstr ""
2826
 
2827
- #: modules/titles/titles.php:358
2828
  msgid "Formats &amp; Variables"
2829
  msgstr ""
2830
 
2831
- #: modules/titles/titles.php:359
2832
  msgid ""
2833
  "\r\n"
2834
  "<p>Various variables, surrounded in {curly brackets}, are provided for use "
@@ -2931,7 +3081,7 @@ msgid ""
2931
  "</ul>\r\n"
2932
  msgstr ""
2933
 
2934
- #: modules/titles/titles.php:422
2935
  msgid ""
2936
  "\r\n"
2937
  "<p>Here&#8217;s documentation for the options on the &#8220;Settings&#8221; "
@@ -2986,7 +3136,7 @@ msgid ""
2986
  "</ul>\r\n"
2987
  msgstr ""
2988
 
2989
- #: modules/titles/titles.php:449
2990
  msgid ""
2991
  "\r\n"
2992
  "<ul>\r\n"
@@ -3009,7 +3159,7 @@ msgid ""
3009
  "</ul>\r\n"
3010
  msgstr ""
3011
 
3012
- #: modules/titles/titles.php:460
3013
  msgid ""
3014
  "\r\n"
3015
  "<ul>\r\n"
@@ -3131,10 +3281,6 @@ msgstr ""
3131
  msgid "Tags"
3132
  msgstr ""
3133
 
3134
- #: modules/widgets/widgets.php:136
3135
- msgid "Title:"
3136
- msgstr ""
3137
-
3138
  #: modules/widgets/widgets.php:140
3139
  msgid "Show post counts"
3140
  msgstr ""
@@ -3243,107 +3389,107 @@ msgstr ""
3243
  msgid "Go to setting &raquo;"
3244
  msgstr ""
3245
 
3246
- #: plugin/class.seo-ultimate.php:856
3247
  msgid "SEO"
3248
  msgstr ""
3249
 
3250
- #: plugin/class.seo-ultimate.php:1041
3251
  msgid ""
3252
  "It looks like you made changes to the settings of this SEO Ultimate module. "
3253
  "If you leave before saving, those changes will be lost."
3254
  msgstr ""
3255
 
3256
- #: plugin/class.seo-ultimate.php:1135
3257
  msgid "SEO Settings Help"
3258
  msgstr ""
3259
 
3260
- #: plugin/class.seo-ultimate.php:1137
3261
  msgid "The SEO Settings box lets you customize these settings:"
3262
  msgstr ""
3263
 
3264
- #: plugin/class.seo-ultimate.php:1139
3265
  msgid "(The SEO Settings box is part of the SEO Ultimate plugin.)"
3266
  msgstr ""
3267
 
3268
- #: plugin/class.seo-ultimate.php:1194
3269
  msgid ""
3270
- "SEO Ultimate includes the functionality of %1$s. You may want to deactivate "
3271
- "%1$s to avoid plugin conflicts."
3272
  msgstr ""
3273
 
3274
- #: plugin/class.seo-ultimate.php:1238
3275
  msgid "new module"
3276
  msgstr ""
3277
 
3278
- #: plugin/class.seo-ultimate.php:1238
3279
  msgid "new modules"
3280
  msgstr ""
3281
 
3282
- #: plugin/class.seo-ultimate.php:1239
3283
  msgid "new feature"
3284
  msgstr ""
3285
 
3286
- #: plugin/class.seo-ultimate.php:1239
3287
  msgid "new features"
3288
  msgstr ""
3289
 
3290
- #: plugin/class.seo-ultimate.php:1240
3291
  msgid "bugfix"
3292
  msgstr ""
3293
 
3294
- #: plugin/class.seo-ultimate.php:1240
3295
  msgid "bugfixes"
3296
  msgstr ""
3297
 
3298
- #: plugin/class.seo-ultimate.php:1241
3299
  msgid "improvement"
3300
  msgstr ""
3301
 
3302
- #: plugin/class.seo-ultimate.php:1241
3303
  msgid "improvements"
3304
  msgstr ""
3305
 
3306
- #: plugin/class.seo-ultimate.php:1242
3307
  msgid "security fix"
3308
  msgstr ""
3309
 
3310
- #: plugin/class.seo-ultimate.php:1242
3311
  msgid "security fixes"
3312
  msgstr ""
3313
 
3314
- #: plugin/class.seo-ultimate.php:1243
3315
  msgid "new language pack"
3316
  msgstr ""
3317
 
3318
- #: plugin/class.seo-ultimate.php:1243
3319
  msgid "new language packs"
3320
  msgstr ""
3321
 
3322
- #: plugin/class.seo-ultimate.php:1244
3323
  msgid "language pack update"
3324
  msgstr ""
3325
 
3326
- #: plugin/class.seo-ultimate.php:1244
3327
  msgid "language pack updates"
3328
  msgstr ""
3329
 
3330
- #: plugin/class.seo-ultimate.php:1275
3331
  msgid "%d %s"
3332
  msgstr ""
3333
 
3334
- #: plugin/class.seo-ultimate.php:1281
3335
  msgid "Upgrade now to get %s. %s."
3336
  msgstr ""
3337
 
3338
- #: plugin/class.seo-ultimate.php:1283
3339
  msgid "View changelog"
3340
  msgstr ""
3341
 
3342
- #: plugin/class.seo-ultimate.php:1360
3343
  msgid "Active Modules: "
3344
  msgstr ""
3345
 
3346
- #: plugin/class.seo-ultimate.php:1427
3347
  msgid ""
3348
  "<strong>SEO Ultimate Notice:</strong> Your blog is configured to block "
3349
  "search engine spiders. To resolve this, <a href=\"options-privacy.php\" "
@@ -3351,19 +3497,35 @@ msgid ""
3351
  "to everyone."
3352
  msgstr ""
3353
 
3354
- #: plugin/class.seo-ultimate.php:1549
 
 
 
 
 
 
 
 
 
 
 
 
3355
  msgid "SEO Settings"
3356
  msgstr ""
3357
 
3358
- #: plugin/class.seo-ultimate.php:1739
 
 
 
 
3359
  msgid "Home"
3360
  msgstr ""
3361
 
3362
- #: plugin/class.seo-ultimate.php:1812
3363
  msgid "Author Archives"
3364
  msgstr ""
3365
 
3366
- #: plugin/class.seo-ultimate.php:1841
3367
  msgid "Link Masks"
3368
  msgstr ""
3369
 
2
  # This file is distributed under the same license as the SEO Ultimate package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: SEO Ultimate 7.3\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/seo-ultimate\n"
7
+ "POT-Creation-Date: 2012-08-07 03:38:54+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
69
  msgid "Log"
70
  msgstr ""
71
 
72
+ #: modules/404s/fofs-log.php:113 modules/class.su-module.php:1181
73
  msgid "Actions"
74
  msgstr ""
75
 
207
 
208
  #: modules/404s/fofs.php:19 modules/canonical/canonical.php:212
209
  #: modules/files/files.php:144 modules/link-nofollow/link-nofollow.php:130
210
+ #: modules/linkbox/linkbox.php:91 modules/meta/meta-descriptions.php:193
211
+ #: modules/meta/meta-keywords.php:179 modules/meta/meta-robots.php:52
212
  #: modules/meta/webmaster-verify.php:87 modules/more-links/more-links.php:104
213
  #: modules/more-links/more-links.php:111
214
  #: modules/rich-snippets/rich-snippets.php:258
215
  #: modules/settings/settings.php:63
216
+ #: modules/sharing-buttons/sharing-buttons.php:72 modules/slugs/slugs.php:75
217
+ #: modules/titles/titles.php:357 modules/user-code/user-code.php:97
218
  msgid "Overview"
219
  msgstr ""
220
 
264
  msgstr ""
265
 
266
  #: modules/404s/fofs.php:45 modules/linkbox/linkbox.php:102
267
+ #: modules/meta/meta-descriptions.php:204 modules/meta/meta-keywords.php:186
268
+ #: modules/meta/meta-robots.php:63 modules/rich-snippets/rich-snippets.php:269
269
+ #: modules/titles/titles.php:431
270
  msgid "Settings Help"
271
  msgstr ""
272
 
316
  msgstr ""
317
 
318
  #: modules/404s/fofs.php:74 modules/files/files.php:165
319
+ #: modules/meta/meta-descriptions.php:225 modules/meta/meta-keywords.php:209
320
+ #: modules/meta/meta-robots.php:102
321
+ #: modules/rich-snippets/rich-snippets.php:279 modules/slugs/slugs.php:106
322
+ #: modules/titles/titles.php:469 modules/user-code/user-code.php:111
323
  msgid "Troubleshooting"
324
  msgstr ""
325
 
487
  msgstr ""
488
 
489
  #: modules/autolinks/content-autolinks.php:464
490
+ msgid "Inbound Autolink Anchors:<br /><em>(one per line)</em>"
491
  msgstr ""
492
 
493
  #: modules/autolinks/content-autolinks.php:467
747
  "using the <a href=\"%s\">Module Manager</a>."
748
  msgstr ""
749
 
750
+ #: modules/class.su-module.php:994
751
  msgid "%1$s | %2$s %3$s by %4$s"
752
  msgstr ""
753
 
754
+ #: modules/class.su-module.php:1073
755
  msgid "Your site currently doesn&#8217;t have any public items of this type."
756
  msgstr ""
757
 
758
+ #: modules/class.su-module.php:1160
759
  msgid "&laquo;"
760
  msgstr ""
761
 
762
+ #: modules/class.su-module.php:1161
763
  msgid "&raquo;"
764
  msgstr ""
765
 
766
+ #: modules/class.su-module.php:1168
767
  msgid "Displaying %s&#8211;%s of %s"
768
  msgstr ""
769
 
770
+ #: modules/class.su-module.php:1182
771
  msgid "ID"
772
  msgstr ""
773
 
774
+ #: modules/class.su-module.php:1228
775
  msgid "View"
776
  msgstr ""
777
 
778
+ #: modules/class.su-module.php:1230
779
  msgid "Edit"
780
  msgstr ""
781
 
782
+ #: modules/class.su-module.php:1400
783
  msgid "Settings updated."
784
  msgstr ""
785
 
786
+ #: modules/class.su-module.php:1421
787
  msgid "Save Changes"
788
  msgstr ""
789
 
790
+ #: modules/class.su-module.php:1970
791
  msgid ""
792
  "Are you sure you want to replace the textbox contents with this default "
793
  "value?"
794
  msgstr ""
795
 
796
+ #: modules/class.su-module.php:1996 modules/settings/settings-data.php:23
797
  msgid "Reset"
798
  msgstr ""
799
 
800
+ #: modules/class.su-module.php:2718 modules/class.su-module.php:2730
801
  msgid "A Deleted %s"
802
  msgstr ""
803
 
804
+ #: modules/class.su-module.php:2720
805
  msgid "A Deleted Post"
806
  msgstr ""
807
 
808
+ #: modules/class.su-module.php:2735
809
  msgid "A Deleted Term"
810
  msgstr ""
811
 
812
+ #: modules/class.su-module.php:2741 modules/meta/meta-descriptions.php:31
813
+ #: modules/meta/meta-keywords.php:41 modules/opengraph/opengraph.php:230
814
+ #: plugin/class.seo-ultimate.php:1775
815
  msgid "Blog Homepage"
816
  msgstr ""
817
 
818
+ #: modules/class.su-module.php:2746 plugin/class.seo-ultimate.php:1853
819
  msgid "Author"
820
  msgstr ""
821
 
822
+ #: modules/class.su-module.php:2748
823
  msgid "A Deleted User"
824
  msgstr ""
825
 
826
+ #: modules/class.su-module.php:2763 plugin/class.seo-ultimate.php:1883
827
  msgid "Link Mask"
828
  msgstr ""
829
 
830
+ #: modules/class.su-module.php:2765
831
  msgid "Link Mask (Disabled)"
832
  msgstr ""
833
 
834
+ #: modules/class.su-module.php:2770
835
  msgid "A Deleted Link Mask"
836
  msgstr ""
837
 
838
+ #: modules/class.su-module.php:2800
839
  msgid "Type a URL or start typing the name of an item on your site"
840
  msgstr ""
841
 
842
+ #: modules/class.su-module.php:2813
843
  msgid "Remove this location from this textbox"
844
  msgstr ""
845
 
846
+ #: modules/class.su-module.php:2813
847
  msgid "X"
848
  msgstr ""
849
 
920
  "</ul>\r\n"
921
  msgstr ""
922
 
923
+ #: modules/files/files.php:155 modules/meta/meta-descriptions.php:216
924
+ #: modules/meta/meta-keywords.php:196 modules/modules/modules.php:183
925
  #: modules/more-links/more-links.php:105 modules/more-links/more-links.php:116
926
+ #: modules/settings/settings.php:82 modules/slugs/slugs.php:86
927
+ #: modules/titles/titles.php:458
928
  msgid "FAQ"
929
  msgstr ""
930
 
1077
  msgstr ""
1078
 
1079
  #: modules/link-nofollow/link-nofollow.php:55
1080
+ msgid "Adjacent post links (next post / previous post)"
1081
  msgstr ""
1082
 
1083
  #: modules/link-nofollow/link-nofollow.php:56
1276
  msgid "Default Value"
1277
  msgstr ""
1278
 
1279
+ #: modules/meta/meta-descriptions.php:174
1280
  msgid "Meta Description:"
1281
  msgstr ""
1282
 
1283
+ #: modules/meta/meta-descriptions.php:177
1284
  msgid "You&#8217;ve entered %s characters. Most search engines use up to 140."
1285
  msgstr ""
1286
 
1287
+ #: modules/meta/meta-descriptions.php:185
1288
  msgid ""
1289
  "<strong>Description</strong> &mdash; The value of the meta description tag. "
1290
  "The description will often appear underneath the title in search engine "
1292
  "is important to ensuring a good search results clickthrough rate."
1293
  msgstr ""
1294
 
1295
+ #: modules/meta/meta-descriptions.php:194
1296
  msgid ""
1297
  "\r\n"
1298
  "<ul>\r\n"
1311
  "</ul>\r\n"
1312
  msgstr ""
1313
 
1314
+ #: modules/meta/meta-descriptions.php:205
1315
  msgid ""
1316
  "\r\n"
1317
  "<p>Here&#8217;s information on the various settings:</p>\r\n"
1333
  "</ul>\r\n"
1334
  msgstr ""
1335
 
1336
+ #: modules/meta/meta-descriptions.php:217
1337
  msgid ""
1338
  "\r\n"
1339
  "<ul>\r\n"
1347
  "</ul>\r\n"
1348
  msgstr ""
1349
 
1350
+ #: modules/meta/meta-descriptions.php:226 modules/meta/meta-keywords.php:210
1351
+ #: modules/meta/meta-robots.php:103
1352
  msgid ""
1353
  "\r\n"
1354
  "<ul>\r\n"
1373
  msgid "Meta Keywords Editor"
1374
  msgstr ""
1375
 
1376
+ #: modules/meta/meta-keywords.php:19 modules/meta/meta-keywords.php:47
1377
  msgid "Meta Keywords"
1378
  msgstr ""
1379
 
1380
+ #: modules/meta/meta-keywords.php:39 modules/meta/meta-robots.php:22
1381
+ #: modules/opengraph/opengraph.php:228
1382
+ msgid "Sitewide Values"
1383
  msgstr ""
1384
 
1385
+ #: modules/meta/meta-keywords.php:40 modules/noindex/noindex.php:50
1386
+ #: modules/opengraph/opengraph.php:229
1387
+ msgid "Default Values"
1388
  msgstr ""
1389
 
1390
+ #: modules/meta/meta-keywords.php:54
1391
  msgid "Sitewide Keywords"
1392
  msgstr ""
1393
 
1394
+ #: modules/meta/meta-keywords.php:54
1395
  msgid "(Separate with commas)"
1396
  msgstr ""
1397
 
1398
+ #: modules/meta/meta-keywords.php:69
1399
+ msgid "The %d most commonly-used words"
1400
+ msgstr ""
1401
+
1402
+ #: modules/meta/meta-keywords.php:87
1403
  msgid "Blog Homepage Meta Keywords"
1404
  msgstr ""
1405
 
1406
+ #: modules/meta/meta-keywords.php:166
1407
  msgid "Meta Keywords:<br /><em>(separate with commas)</em>"
1408
  msgstr ""
1409
 
1410
+ #: modules/meta/meta-keywords.php:171
1411
  msgid ""
1412
  "<strong>Keywords</strong> &mdash; The value of the meta keywords tag. The "
1413
  "keywords list gives search engines a hint as to what this post/page is "
1415
  "three</samp>."
1416
  msgstr ""
1417
 
1418
+ #: modules/meta/meta-keywords.php:180
1419
  msgid ""
1420
  "\r\n"
1421
  "<p>Meta Keywords Editor lets you tell search engines what keywords are "
1426
  "p>\r\n"
1427
  msgstr ""
1428
 
1429
+ #: modules/meta/meta-keywords.php:187
1430
  msgid ""
1431
  "\r\n"
1432
  "<ul>\r\n"
1443
  "</ul>\r\n"
1444
  msgstr ""
1445
 
1446
+ #: modules/meta/meta-keywords.php:197
1447
  msgid ""
1448
  "\r\n"
1449
  "<ul>\r\n"
1471
  msgid "Meta Robot Tags"
1472
  msgstr ""
1473
 
1474
+ #: modules/meta/meta-robots.php:29
 
 
 
 
 
 
 
 
1475
  msgid ""
1476
  "Don&#8217t use this site&#8217s Open Directory description in search results."
1477
  msgstr ""
1478
 
1479
+ #: modules/meta/meta-robots.php:30
1480
  msgid ""
1481
  "Don&#8217t use this site&#8217s Yahoo! Directory description in search "
1482
  "results."
1483
  msgstr ""
1484
 
1485
+ #: modules/meta/meta-robots.php:31
1486
  msgid "Don&#8217t cache or archive this site."
1487
  msgstr ""
1488
 
1489
+ #: modules/meta/meta-robots.php:32
1490
+ msgid "Spider Instructions"
1491
+ msgstr ""
1492
+
1493
+ #: modules/meta/meta-robots.php:53
1494
  msgid ""
1495
  "\r\n"
1496
  "<ul>\r\n"
1517
  "</ul>\r\n"
1518
  msgstr ""
1519
 
1520
+ #: modules/meta/meta-robots.php:64
1521
  msgid ""
1522
  "\r\n"
1523
  "<p>Here&#8217;s information on the various settings:</p>\r\n"
1636
  "</ul>\r\n"
1637
  msgstr ""
1638
 
1639
+ #: modules/misc/misc.php:11 plugin/class.seo-ultimate.php:1494
1640
  msgid "Miscellaneous"
1641
  msgstr ""
1642
 
1751
  msgstr ""
1752
 
1753
  #: modules/more-links/more-links.php:51
1754
+ msgid "Anchor Text of &#8220;More&#8221; Link:"
1755
  msgstr ""
1756
 
1757
  #: modules/more-links/more-links.php:75
1821
  msgstr ""
1822
 
1823
  #: modules/noindex/noindex.php:69 modules/noindex/noindex.php:80
1824
+ #: modules/opengraph/opengraph.php:199 modules/opengraph/opengraph.php:272
1825
  msgid "Use default"
1826
  msgstr ""
1827
 
1903
  msgid "Meta Robots Tag:"
1904
  msgstr ""
1905
 
1906
+ #: modules/opengraph/opengraph.php:15
1907
+ msgid "Open Graph Integrator"
1908
+ msgstr ""
1909
+
1910
+ #: modules/opengraph/opengraph.php:16
1911
+ msgid "Open Graph"
1912
+ msgstr ""
1913
+
1914
+ #: modules/opengraph/opengraph.php:201
1915
+ msgid "Type"
1916
+ msgstr ""
1917
+
1918
+ #: modules/opengraph/opengraph.php:206
1919
+ msgid "Title"
1920
+ msgstr ""
1921
+
1922
+ #: modules/opengraph/opengraph.php:211
1923
+ msgid "Description"
1924
+ msgstr ""
1925
+
1926
+ #: modules/opengraph/opengraph.php:216
1927
+ msgid "Image"
1928
+ msgstr ""
1929
+
1930
+ #: modules/opengraph/opengraph.php:238
1931
+ msgid "Site Name"
1932
+ msgstr ""
1933
+
1934
+ #: modules/opengraph/opengraph.php:239
1935
+ msgid "Facebook App ID"
1936
+ msgstr ""
1937
+
1938
+ #: modules/opengraph/opengraph.php:246
1939
+ msgid "Default Types"
1940
+ msgstr ""
1941
+
1942
+ #: modules/opengraph/opengraph.php:252 modules/opengraph/opengraph.php:257
1943
+ msgid "Default Image"
1944
+ msgstr ""
1945
+
1946
+ #: modules/opengraph/opengraph.php:255
1947
+ msgid ""
1948
+ "In the box below, you can specify an image URL or an image from your media "
1949
+ "library to use as a default image in the event that there is no image "
1950
+ "otherwise specified for a given webpage on your site. If you do not specify "
1951
+ "a default image in the box below, then dynamically-generated thumbnails from "
1952
+ "Thumbshots.org will be used instead."
1953
+ msgstr ""
1954
+
1955
+ #: modules/opengraph/opengraph.php:264 modules/titles/titles.php:91
1956
+ msgid "Blog Homepage Title"
1957
+ msgstr ""
1958
+
1959
+ #: modules/opengraph/opengraph.php:265
1960
+ msgid "Blog Homepage Description"
1961
+ msgstr ""
1962
+
1963
+ #: modules/opengraph/opengraph.php:266
1964
+ msgid "Blog Homepage Image"
1965
+ msgstr ""
1966
+
1967
+ #: modules/opengraph/opengraph.php:272
1968
+ msgid "Type:"
1969
+ msgstr ""
1970
+
1971
+ #: modules/opengraph/opengraph.php:273 modules/widgets/widgets.php:136
1972
+ msgid "Title:"
1973
+ msgstr ""
1974
+
1975
+ #: modules/opengraph/opengraph.php:274
1976
+ msgid "Description:"
1977
+ msgstr ""
1978
+
1979
+ #: modules/opengraph/opengraph.php:275
1980
+ msgid "Image:"
1981
+ msgstr ""
1982
+
1983
+ #: modules/opengraph/opengraph.php:300
1984
+ msgid "Featured Image: %s"
1985
+ msgstr ""
1986
+
1987
+ #: modules/opengraph/opengraph.php:308
1988
+ #: modules/rich-snippets/rich-snippets.php:228
1989
+ #: modules/rich-snippets/rich-snippets.php:237
1990
+ msgid "None"
1991
+ msgstr ""
1992
+
1993
+ #: modules/opengraph/opengraph.php:309
1994
+ msgid "Internet"
1995
+ msgstr ""
1996
+
1997
+ #: modules/opengraph/opengraph.php:310
1998
+ msgid "Article"
1999
+ msgstr ""
2000
+
2001
+ #: modules/opengraph/opengraph.php:311
2002
+ msgid "Blog"
2003
+ msgstr ""
2004
+
2005
+ #: modules/opengraph/opengraph.php:312
2006
+ msgid "Profile"
2007
+ msgstr ""
2008
+
2009
+ #: modules/opengraph/opengraph.php:313
2010
+ msgid "Website"
2011
+ msgstr ""
2012
+
2013
+ #: modules/opengraph/opengraph.php:314
2014
+ msgid "Products"
2015
+ msgstr ""
2016
+
2017
+ #: modules/opengraph/opengraph.php:315
2018
+ msgid "Book"
2019
+ msgstr ""
2020
+
2021
+ #: modules/opengraph/opengraph.php:316
2022
+ msgid "Music"
2023
+ msgstr ""
2024
+
2025
+ #: modules/opengraph/opengraph.php:317
2026
+ msgid "Album"
2027
+ msgstr ""
2028
+
2029
+ #: modules/opengraph/opengraph.php:318
2030
+ msgid "Playlist"
2031
+ msgstr ""
2032
+
2033
+ #: modules/opengraph/opengraph.php:319
2034
+ msgid "Radio Station"
2035
+ msgstr ""
2036
+
2037
+ #: modules/opengraph/opengraph.php:320
2038
+ msgid "Song"
2039
+ msgstr ""
2040
+
2041
+ #: modules/opengraph/opengraph.php:321
2042
+ msgid "Videos"
2043
+ msgstr ""
2044
+
2045
+ #: modules/opengraph/opengraph.php:322
2046
+ msgid "Movie"
2047
+ msgstr ""
2048
+
2049
+ #: modules/opengraph/opengraph.php:323
2050
+ msgid "TV Episode"
2051
+ msgstr ""
2052
+
2053
+ #: modules/opengraph/opengraph.php:324
2054
+ msgid "TV Show"
2055
+ msgstr ""
2056
+
2057
+ #: modules/opengraph/opengraph.php:325
2058
+ msgid "Video"
2059
+ msgstr ""
2060
+
2061
  #: modules/permalinks/permalinks.php:15
2062
  msgid "Permalink Tweaker"
2063
  msgstr ""
2150
  msgid "Date Reviewed"
2151
  msgstr ""
2152
 
 
 
 
 
 
2153
  #: modules/rich-snippets/rich-snippets.php:230
2154
  msgid "Rich Snippet Type:"
2155
  msgstr ""
2277
  msgid "SEO Design Solutions Whitepapers"
2278
  msgstr ""
2279
 
2280
+ #. #-#-#-#-# plugin.pot (SEO Ultimate 7.3) #-#-#-#-#
2281
  #. Author of the plugin/theme
2282
  #: modules/sds-blog/sds-blog.php:49
2283
  msgid "SEO Design Solutions"
2294
  msgid "Global Settings"
2295
  msgstr ""
2296
 
2297
+ #: modules/settings/global-settings.php:40
2298
  msgid "Enable nofollow&#8217;d attribution link"
2299
  msgstr ""
2300
 
2301
+ #: modules/settings/global-settings.php:41
2302
  msgid "Enable attribution link CSS styling"
2303
  msgstr ""
2304
 
2305
+ #: modules/settings/global-settings.php:42
 
 
 
 
2306
  msgid "Insert comments around HTML code insertions"
2307
  msgstr ""
2308
 
2593
  msgid "SEO Ultimate Plugin Settings"
2594
  msgstr ""
2595
 
2596
+ #. #-#-#-#-# plugin.pot (SEO Ultimate 7.3) #-#-#-#-#
2597
  #. Plugin Name of the plugin/theme
2598
+ #: modules/settings/settings.php:26 plugin/class.seo-ultimate.php:861
2599
  msgid "SEO Ultimate"
2600
  msgstr ""
2601
 
2650
  msgstr ""
2651
 
2652
  #: modules/settings/uninstall.php:18 modules/settings/uninstall.php:22
2653
+ #: plugin/class.seo-ultimate.php:1332
2654
  msgid "Uninstall"
2655
  msgstr ""
2656
 
2743
  msgid "Words to Remove"
2744
  msgstr ""
2745
 
2746
+ #: modules/slugs/slugs.php:76
2747
  msgid ""
2748
  "\r\n"
2749
  "<ul>\r\n"
2763
  "</ul>\r\n"
2764
  msgstr ""
2765
 
2766
+ #: modules/slugs/slugs.php:87
2767
  msgid ""
2768
  "\r\n"
2769
  "<ul>\r\n"
2799
  "</ul>\r\n"
2800
  msgstr ""
2801
 
2802
+ #: modules/slugs/slugs.php:107
2803
  msgid ""
2804
  "\r\n"
2805
  "<ul>\r\n"
2891
  msgid "{title} - Page {num}"
2892
  msgstr ""
2893
 
 
 
 
 
2894
  #: modules/titles/titles.php:92
2895
  msgid "Post Title Format"
2896
  msgstr ""
2935
  msgid "Pagination Title Format"
2936
  msgstr ""
2937
 
2938
+ #: modules/titles/titles.php:338
2939
  msgid "Title Tag:"
2940
  msgstr ""
2941
 
2942
+ #: modules/titles/titles.php:341
2943
+ msgid "You&#8217;ve entered %s characters. Most search engines use up to 70."
2944
+ msgstr ""
2945
+
2946
+ #: modules/titles/titles.php:349
2947
  msgid ""
2948
  "<strong>Title Tag</strong> &mdash; The exact contents of the &lt;title&gt; "
2949
  "tag. The title appears in visitors&#8217; title bars and in search engine "
2951
  "page=su-titles\" target=\"_blank\">default post/page titles</a> are used."
2952
  msgstr ""
2953
 
2954
+ #: modules/titles/titles.php:358
2955
  msgid ""
2956
  "\r\n"
2957
  "<ul>\r\n"
2974
  "</ul>\r\n"
2975
  msgstr ""
2976
 
2977
+ #: modules/titles/titles.php:368
2978
  msgid "Formats &amp; Variables"
2979
  msgstr ""
2980
 
2981
+ #: modules/titles/titles.php:369
2982
  msgid ""
2983
  "\r\n"
2984
  "<p>Various variables, surrounded in {curly brackets}, are provided for use "
3081
  "</ul>\r\n"
3082
  msgstr ""
3083
 
3084
+ #: modules/titles/titles.php:432
3085
  msgid ""
3086
  "\r\n"
3087
  "<p>Here&#8217;s documentation for the options on the &#8220;Settings&#8221; "
3136
  "</ul>\r\n"
3137
  msgstr ""
3138
 
3139
+ #: modules/titles/titles.php:459
3140
  msgid ""
3141
  "\r\n"
3142
  "<ul>\r\n"
3159
  "</ul>\r\n"
3160
  msgstr ""
3161
 
3162
+ #: modules/titles/titles.php:470
3163
  msgid ""
3164
  "\r\n"
3165
  "<ul>\r\n"
3281
  msgid "Tags"
3282
  msgstr ""
3283
 
 
 
 
 
3284
  #: modules/widgets/widgets.php:140
3285
  msgid "Show post counts"
3286
  msgstr ""
3389
  msgid "Go to setting &raquo;"
3390
  msgstr ""
3391
 
3392
+ #: plugin/class.seo-ultimate.php:861
3393
  msgid "SEO"
3394
  msgstr ""
3395
 
3396
+ #: plugin/class.seo-ultimate.php:1046
3397
  msgid ""
3398
  "It looks like you made changes to the settings of this SEO Ultimate module. "
3399
  "If you leave before saving, those changes will be lost."
3400
  msgstr ""
3401
 
3402
+ #: plugin/class.seo-ultimate.php:1140
3403
  msgid "SEO Settings Help"
3404
  msgstr ""
3405
 
3406
+ #: plugin/class.seo-ultimate.php:1142
3407
  msgid "The SEO Settings box lets you customize these settings:"
3408
  msgstr ""
3409
 
3410
+ #: plugin/class.seo-ultimate.php:1144
3411
  msgid "(The SEO Settings box is part of the SEO Ultimate plugin.)"
3412
  msgstr ""
3413
 
3414
+ #: plugin/class.seo-ultimate.php:1187
3415
  msgid ""
3416
+ "%1$s is known to cause conflicts with SEO Ultimate. Please deactivate %1$s "
3417
+ "if you wish to continue using SEO Ultimate."
3418
  msgstr ""
3419
 
3420
+ #: plugin/class.seo-ultimate.php:1231
3421
  msgid "new module"
3422
  msgstr ""
3423
 
3424
+ #: plugin/class.seo-ultimate.php:1231
3425
  msgid "new modules"
3426
  msgstr ""
3427
 
3428
+ #: plugin/class.seo-ultimate.php:1232
3429
  msgid "new feature"
3430
  msgstr ""
3431
 
3432
+ #: plugin/class.seo-ultimate.php:1232
3433
  msgid "new features"
3434
  msgstr ""
3435
 
3436
+ #: plugin/class.seo-ultimate.php:1233
3437
  msgid "bugfix"
3438
  msgstr ""
3439
 
3440
+ #: plugin/class.seo-ultimate.php:1233
3441
  msgid "bugfixes"
3442
  msgstr ""
3443
 
3444
+ #: plugin/class.seo-ultimate.php:1234
3445
  msgid "improvement"
3446
  msgstr ""
3447
 
3448
+ #: plugin/class.seo-ultimate.php:1234
3449
  msgid "improvements"
3450
  msgstr ""
3451
 
3452
+ #: plugin/class.seo-ultimate.php:1235
3453
  msgid "security fix"
3454
  msgstr ""
3455
 
3456
+ #: plugin/class.seo-ultimate.php:1235
3457
  msgid "security fixes"
3458
  msgstr ""
3459
 
3460
+ #: plugin/class.seo-ultimate.php:1236
3461
  msgid "new language pack"
3462
  msgstr ""
3463
 
3464
+ #: plugin/class.seo-ultimate.php:1236
3465
  msgid "new language packs"
3466
  msgstr ""
3467
 
3468
+ #: plugin/class.seo-ultimate.php:1237
3469
  msgid "language pack update"
3470
  msgstr ""
3471
 
3472
+ #: plugin/class.seo-ultimate.php:1237
3473
  msgid "language pack updates"
3474
  msgstr ""
3475
 
3476
+ #: plugin/class.seo-ultimate.php:1268
3477
  msgid "%d %s"
3478
  msgstr ""
3479
 
3480
+ #: plugin/class.seo-ultimate.php:1274
3481
  msgid "Upgrade now to get %s. %s."
3482
  msgstr ""
3483
 
3484
+ #: plugin/class.seo-ultimate.php:1276
3485
  msgid "View changelog"
3486
  msgstr ""
3487
 
3488
+ #: plugin/class.seo-ultimate.php:1353
3489
  msgid "Active Modules: "
3490
  msgstr ""
3491
 
3492
+ #: plugin/class.seo-ultimate.php:1420
3493
  msgid ""
3494
  "<strong>SEO Ultimate Notice:</strong> Your blog is configured to block "
3495
  "search engine spiders. To resolve this, <a href=\"options-privacy.php\" "
3497
  "to everyone."
3498
  msgstr ""
3499
 
3500
+ #: plugin/class.seo-ultimate.php:1491
3501
+ msgid "Search Engine Listing"
3502
+ msgstr ""
3503
+
3504
+ #: plugin/class.seo-ultimate.php:1492
3505
+ msgid "Facebook Data"
3506
+ msgstr ""
3507
+
3508
+ #: plugin/class.seo-ultimate.php:1493
3509
+ msgid "Links"
3510
+ msgstr ""
3511
+
3512
+ #: plugin/class.seo-ultimate.php:1557
3513
  msgid "SEO Settings"
3514
  msgstr ""
3515
 
3516
+ #: plugin/class.seo-ultimate.php:1587
3517
+ msgid "%1$s %2$s by %3$s"
3518
+ msgstr ""
3519
+
3520
+ #: plugin/class.seo-ultimate.php:1774
3521
  msgid "Home"
3522
  msgstr ""
3523
 
3524
+ #: plugin/class.seo-ultimate.php:1847
3525
  msgid "Author Archives"
3526
  msgstr ""
3527
 
3528
+ #: plugin/class.seo-ultimate.php:1876
3529
  msgid "Link Masks"
3530
  msgstr ""
3531