SEO Ultimate - Version 7.5

Version Description

Download this release

Release Info

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

Code changes from version 7.4 to 7.5

includes/jlfunctions/str.php CHANGED
@@ -187,7 +187,7 @@ class sustr {
187
  }
188
 
189
  function htmlsafe_str_replace($search, $replace, $subject, $limit, &$count, $exclude_tags = false) {
190
- $search = sustr::preg_escape($search);
191
  return sustr::htmlsafe_preg_replace($search, $replace, $subject, $limit, $count, $exclude_tags);
192
  }
193
 
187
  }
188
 
189
  function htmlsafe_str_replace($search, $replace, $subject, $limit, &$count, $exclude_tags = false) {
190
+ $search = sustr::preg_escape($search, '');
191
  return sustr::htmlsafe_preg_replace($search, $replace, $subject, $limit, $count, $exclude_tags);
192
  }
193
 
includes/jlsuggest/jlsuggest.css CHANGED
@@ -15,7 +15,8 @@ input.jls_loading {
15
  border-radius: 3px;
16
  background-color: #E0E7FF;
17
  position: relative;
18
- padding: 2px 0 0;
 
19
  }
20
 
21
  .jlsuggest-disabled {
@@ -39,7 +40,7 @@ input.jls_loading {
39
  top: 0;
40
  right: 0;
41
  cursor: pointer;
42
- padding: 2px 10px;
43
  color: black;
44
  text-decoration: none;
45
  }
@@ -96,4 +97,24 @@ input.jls_loading {
96
 
97
  .jls_results li {
98
  color:#101010;
99
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  border-radius: 3px;
16
  background-color: #E0E7FF;
17
  position: relative;
18
+ margin: 1px -1px;
19
+ padding: 3px 0 1px;
20
  }
21
 
22
  .jlsuggest-disabled {
40
  top: 0;
41
  right: 0;
42
  cursor: pointer;
43
+ padding: 3px 10px 1px;
44
  color: black;
45
  text-decoration: none;
46
  }
97
 
98
  .jls_results li {
99
  color:#101010;
100
+ }
101
+
102
+
103
+ input.jlsuggest:-moz-placeholder {
104
+ background-color: #E0E7FF;
105
+ border-color: #C0CDFF;
106
+ color: black;
107
+ }
108
+
109
+ /* Requires IE10+ */
110
+ input.jlsuggest:-ms-input-placeholder {
111
+ background-color: #E0E7FF;
112
+ border-color: #C0CDFF;
113
+ color: black;
114
+ }
115
+
116
+ /*
117
+ A ::-webkit-input-placeholder block is not included because
118
+ the background-color rule doesn't apply correctly on Chrome
119
+ and it looks rather horrendous...
120
+ */
modules/404s/fofs-log.php CHANGED
@@ -196,7 +196,7 @@ class SU_FofsLog extends SU_Module {
196
 
197
  if (count($data['referers'])) {
198
 
199
- echo "<div id='su-404s-hit-$md5url-referers' style='display: none;'>\n";
200
  echo "\t\t\t<div><strong>".__('Referring URLs', 'seo-ultimate')."</strong> &mdash; ";
201
  echo "<a href='#' onclick=\"Effect.BlindUp('su-404s-hit-$md5url-referers'); return false;\">".__('Hide list', 'seo-ultimate')."</a>";
202
  echo "</div>\n";
@@ -217,7 +217,7 @@ class SU_FofsLog extends SU_Module {
217
  echo "\t<tr class='su-404s-hit-user-agents$new'>\n\t\t<td colspan='".count($headers)."'>";
218
 
219
  if (count($data['user_agents'])) {
220
- echo "<div id='su-404s-hit-$md5url-user-agents' style='display: none;'>\n";
221
  echo "\t\t\t<div><strong>".__('User Agents', 'seo-ultimate')."</strong> &mdash; ";
222
  echo "<a href='#' onclick=\"Effect.BlindUp('su-404s-hit-$md5url-user-agents'); return false;\">".__('Hide list', 'seo-ultimate')."</a>";
223
  echo "</div>\n";
196
 
197
  if (count($data['referers'])) {
198
 
199
+ echo "<div id='su-404s-hit-$md5url-referers' class='su-404s-hit-referers-list' style='display: none;'>\n";
200
  echo "\t\t\t<div><strong>".__('Referring URLs', 'seo-ultimate')."</strong> &mdash; ";
201
  echo "<a href='#' onclick=\"Effect.BlindUp('su-404s-hit-$md5url-referers'); return false;\">".__('Hide list', 'seo-ultimate')."</a>";
202
  echo "</div>\n";
217
  echo "\t<tr class='su-404s-hit-user-agents$new'>\n\t\t<td colspan='".count($headers)."'>";
218
 
219
  if (count($data['user_agents'])) {
220
+ echo "<div id='su-404s-hit-$md5url-user-agents' class='su-404s-hit-user-agents-list' style='display: none;'>\n";
221
  echo "\t\t\t<div><strong>".__('User Agents', 'seo-ultimate')."</strong> &mdash; ";
222
  echo "<a href='#' onclick=\"Effect.BlindUp('su-404s-hit-$md5url-user-agents'); return false;\">".__('Hide list', 'seo-ultimate')."</a>";
223
  echo "</div>\n";
modules/404s/fofs.css CHANGED
@@ -10,8 +10,13 @@
10
 
11
  #su-fofs table tr.su-404s-hit-referers td,
12
  #su-fofs table tr.su-404s-hit-user-agents td {
13
- padding-top: 0;
14
- padding-bottom: 0;
 
 
 
 
 
15
  }
16
 
17
  #su-fofs table tr.su-404s-new-hit td {
10
 
11
  #su-fofs table tr.su-404s-hit-referers td,
12
  #su-fofs table tr.su-404s-hit-user-agents td {
13
+ padding: 0 1em;
14
+ border-top: 0 none;
15
+ }
16
+
17
+ #su-fofs table .su-404s-hit-referers-list,
18
+ #su-fofs table .su-404s-hit-user-agents-list {
19
+ padding-top: 0.5em;
20
  }
21
 
22
  #su-fofs table tr.su-404s-new-hit td {
modules/autolinks/autolinks.css CHANGED
@@ -30,7 +30,7 @@
30
  }
31
 
32
  #su-autolinks table.widefat td.su-link-options {
33
- width: 8em;
34
  }
35
 
36
  #su-autolinks table.widefat td.su-link-delete,
@@ -39,6 +39,6 @@
39
  text-align: center;
40
  }
41
 
42
- #su-footer-autolinks table.widefat td {
43
  padding-right: 0.5em;
44
  }
30
  }
31
 
32
  #su-autolinks table.widefat td.su-link-options {
33
+ width: 9em;
34
  }
35
 
36
  #su-autolinks table.widefat td.su-link-delete,
39
  text-align: center;
40
  }
41
 
42
+ #su-autolinks table.widefat td {
43
  padding-right: 0.5em;
44
  }
modules/class.su-module.php CHANGED
@@ -1849,7 +1849,9 @@ class SU_Module {
1849
  * @param string|false $grouptext The text to display in a table cell to the left of the one containing the dropdown. Optional.
1850
  * @param string $text A printf-style format string in which "%s" is replaced with the dropdown. Use this to put text before or after the dropdown.
1851
  */
1852
- function dropdown($name, $values, $grouptext=false, $text='%s') {
 
 
1853
 
1854
  //Save dropdown setting after form submission
1855
  if ($this->is_action('update') && isset($_POST[$name]))
@@ -1857,7 +1859,7 @@ class SU_Module {
1857
 
1858
  if ($grouptext)
1859
  $this->admin_form_group_start($grouptext, false);
1860
- else
1861
  echo "<tr valign='top' class='su-admin-form-dropdown'>\n<td colspan='2'>\n";
1862
 
1863
  if (is_array($values)) {
@@ -1871,8 +1873,10 @@ class SU_Module {
1871
  printf($text, $dropdown);
1872
  }
1873
 
1874
- if ($grouptext) echo "</fieldset>";
1875
- echo "</td>\n</tr>\n";
 
 
1876
  }
1877
 
1878
  /**
@@ -2344,19 +2348,35 @@ class SU_Module {
2344
  * @param array $textboxes An array of textboxes. (Field/setting IDs are the keys, and descriptions are the values.)
2345
  * @return string The HTML that would render the textboxes.
2346
  */
2347
- function get_postmeta_textboxes($textboxes) {
2348
-
2349
  $html = '';
2350
 
 
 
 
 
 
2351
  foreach ($textboxes as $id => $title) {
2352
 
 
 
2353
  register_setting('seo-ultimate', $id);
2354
  $value = su_esc_editable_html($this->get_postmeta($id));
2355
  $id = "_su_".su_esc_attr($id);
2356
- //$title = str_replace(' ', '&nbsp;', $title);
2357
 
2358
- $html .= "<tr class='su textbox' valign='middle'>\n<th scope='row' class='su'><label for='$id'>$title</label></th>\n"
2359
- ."<td class='su'><input name='$id' id='$id' type='text' value='$value' class='regular-text' tabindex='2' /></td>\n</tr>\n";
 
 
 
 
 
 
 
 
 
 
2360
  }
2361
 
2362
  return $html;
@@ -2372,8 +2392,8 @@ class SU_Module {
2372
  * @param string $title The label of the HTML element.
2373
  * @return string The HTML that would render the textbox.
2374
  */
2375
- function get_postmeta_textbox($id, $title) {
2376
- return $this->get_postmeta_textboxes(array($id => $title));
2377
  }
2378
 
2379
  /**
1849
  * @param string|false $grouptext The text to display in a table cell to the left of the one containing the dropdown. Optional.
1850
  * @param string $text A printf-style format string in which "%s" is replaced with the dropdown. Use this to put text before or after the dropdown.
1851
  */
1852
+ function dropdown($name, $values, $grouptext=false, $text='%s', $args=array()) {
1853
+
1854
+ $in_table = isset($args['in_table']) ? $args['in_table'] : true;
1855
 
1856
  //Save dropdown setting after form submission
1857
  if ($this->is_action('update') && isset($_POST[$name]))
1859
 
1860
  if ($grouptext)
1861
  $this->admin_form_group_start($grouptext, false);
1862
+ elseif ($in_table)
1863
  echo "<tr valign='top' class='su-admin-form-dropdown'>\n<td colspan='2'>\n";
1864
 
1865
  if (is_array($values)) {
1873
  printf($text, $dropdown);
1874
  }
1875
 
1876
+ if ($grouptext)
1877
+ $this->admin_form_group_end();
1878
+ elseif ($in_table)
1879
+ echo "</td>\n</tr>\n";
1880
  }
1881
 
1882
  /**
2348
  * @param array $textboxes An array of textboxes. (Field/setting IDs are the keys, and descriptions are the values.)
2349
  * @return string The HTML that would render the textboxes.
2350
  */
2351
+ function get_postmeta_textboxes($textboxes, $textbox_args=array(), $grouptext=false) {
2352
+
2353
  $html = '';
2354
 
2355
+ if ($grouptext) {
2356
+ $h_grouptext = esc_html($grouptext);
2357
+ $html .= "<tr class='su textbox' valign='top'>\n<th scope='row' class='su'><label>$h_grouptext</label></th>\n<td class='su group'><table>";
2358
+ }
2359
+
2360
  foreach ($textboxes as $id => $title) {
2361
 
2362
+ $type = isset($textbox_args[$id]['type']) ? $textbox_args[$id]['type'] : 'text';
2363
+
2364
  register_setting('seo-ultimate', $id);
2365
  $value = su_esc_editable_html($this->get_postmeta($id));
2366
  $id = "_su_".su_esc_attr($id);
 
2367
 
2368
+ $e_title = su_esc_attr($title);
2369
+
2370
+ if ($grouptext)
2371
+ $html .= "<tr><th scope='row'>$title</th><td><input name='$id' id='$id' type='$type' value='$value' class='regular-text' tabindex='2' /></td></tr>";
2372
+ else
2373
+ $html .= "<tr class='su textbox' valign='middle'>\n<th scope='row' class='su'><label for='$id'>$title</label></th>\n"
2374
+ ."<td class='su'><input name='$id' id='$id' type='$type' value='$value' class='regular-text' tabindex='2' /></td>\n</tr>\n";
2375
+ }
2376
+
2377
+ if ($grouptext) {
2378
+ $h_grouptext = esc_html($grouptext);
2379
+ $html .= "</table></td>\n</tr>\n";
2380
  }
2381
 
2382
  return $html;
2392
  * @param string $title The label of the HTML element.
2393
  * @return string The HTML that would render the textbox.
2394
  */
2395
+ function get_postmeta_textbox($id, $title, $args=array()) {
2396
+ return $this->get_postmeta_textboxes(array($id => $title), array($id => $args));
2397
  }
2398
 
2399
  /**
modules/internal-link-aliases/internal-link-aliases.php CHANGED
@@ -205,7 +205,7 @@ class SU_InternalLinkAliases extends SU_Module {
205
 
206
  $html .= "</td>\n</tr>\n";
207
 
208
- $fields['70|aliases'] = $html;
209
  }
210
 
211
  return $fields;
205
 
206
  $html .= "</td>\n</tr>\n";
207
 
208
+ $fields['links'][30]['aliases'] = $html;
209
  }
210
 
211
  return $fields;
modules/link-nofollow/link-nofollow.php CHANGED
@@ -12,6 +12,9 @@ class SU_LinkNofollow extends SU_Module {
12
  function get_module_title() { return __('Nofollow Manager', 'seo-ultimate'); }
13
  function get_default_status() { return SU_MODULE_DISABLED; }
14
 
 
 
 
15
  function init() {
16
  $filterdata = array(
17
  'nofollow_links' => array(
@@ -49,8 +52,7 @@ class SU_LinkNofollow extends SU_Module {
49
  }
50
 
51
  function admin_page_contents() {
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')
@@ -65,9 +67,9 @@ class SU_LinkNofollow extends SU_Module {
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();
71
  }
72
 
73
  function postmeta_fields($fields, $screen) {
12
  function get_module_title() { return __('Nofollow Manager', 'seo-ultimate'); }
13
  function get_default_status() { return SU_MODULE_DISABLED; }
14
 
15
+ function get_parent_module() { return 'misc'; }
16
+ function get_settings_key() { return 'link-nofollow'; }
17
+
18
  function init() {
19
  $filterdata = array(
20
  'nofollow_links' => array(
52
  }
53
 
54
  function admin_page_contents() {
55
+ $this->child_admin_form_start();
 
56
  $this->checkboxes(array(
57
  'nofollow_adjacent_post' => __('Adjacent post links (next post / previous post)', 'seo-ultimate')
58
  , 'nofollow_category_loop' => __('Category links (after posts)', 'seo-ultimate')
67
  , 'nofollow_login' => __('Login link', 'seo-ultimate')
68
  , 'nofollow_tag_loop' => __('Tag links (after posts)', 'seo-ultimate')
69
  , 'nofollow_tag_list' => __('Tag links (in lists and clouds)', 'seo-ultimate')
70
+ ), __('Add the nofollow attribute to...', 'seo-ultimate'));
71
 
72
+ $this->child_admin_form_end();
73
  }
74
 
75
  function postmeta_fields($fields, $screen) {
modules/linkbox/linkbox.css ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+
2
+ #su-linkbox textarea {
3
+ width: 100%;
4
+ }
modules/linkbox/linkbox.php CHANGED
@@ -11,6 +11,9 @@ class SU_Linkbox extends SU_Module {
11
 
12
  function get_module_title() { return __('Linkbox Inserter', 'seo-ultimate'); }
13
 
 
 
 
14
  function get_default_settings() {
15
  //The default linkbox HTML
16
  return array(
@@ -41,13 +44,13 @@ class SU_Linkbox extends SU_Module {
41
  }
42
 
43
  function admin_page_contents() {
44
- $this->admin_form_start();
45
  $this->checkboxes(array('filter_posts' => __('At the end of posts', 'seo-ultimate')
46
  , 'filter_pages' => __('At the end of pages', 'seo-ultimate')
47
  , 'action_hook' => __('When called by the su_linkbox hook', 'seo-ultimate')
48
  ), __('Display linkboxes...', 'seo-ultimate'));
49
- $this->textarea('html', __('Linkbox HTML', 'seo-ultimate'), 10);
50
- $this->admin_form_end();
51
  }
52
 
53
  function should_linkbox() {
11
 
12
  function get_module_title() { return __('Linkbox Inserter', 'seo-ultimate'); }
13
 
14
+ function get_parent_module() { return 'misc'; }
15
+ function get_settings_key() { return 'linkbox'; }
16
+
17
  function get_default_settings() {
18
  //The default linkbox HTML
19
  return array(
44
  }
45
 
46
  function admin_page_contents() {
47
+ $this->child_admin_form_start();
48
  $this->checkboxes(array('filter_posts' => __('At the end of posts', 'seo-ultimate')
49
  , 'filter_pages' => __('At the end of pages', 'seo-ultimate')
50
  , 'action_hook' => __('When called by the su_linkbox hook', 'seo-ultimate')
51
  ), __('Display linkboxes...', 'seo-ultimate'));
52
+ $this->textarea('html', __('Linkbox HTML', 'seo-ultimate'));
53
+ $this->child_admin_form_end();
54
  }
55
 
56
  function should_linkbox() {
modules/modules/modules.php CHANGED
@@ -47,7 +47,7 @@ class SU_Modules extends SU_Module {
47
 
48
  function admin_page_contents() {
49
  echo "<p>";
50
- _e('SEO Ultimate&#8217;s features are located in groups called &#8220;modules.&#8221; By default, most of these modules are listed in the &#8220;SEO&#8221; menu on the left. Whenever you&#8217;re working with a module, you can view documentation by clicking the tabs in the upper-right-hand corner of your administration screen.', 'seo-ultimate');
51
  echo "</p><p>";
52
  _e('The Module Manager lets you disable or hide modules you don&#8217;t use. You can also silence modules from displaying bubble alerts on the menu.', 'seo-ultimate');
53
  echo "</p>";
@@ -114,6 +114,11 @@ STR;
114
  echo "\t\t<tr>\n\t\t\t<td class='module-status' id='module-status-$key'>\n";
115
  echo "\t\t\t\t<input type='hidden' name='su-$key-module-status' id='su-$key-module-status' value='$currentstatus' />\n";
116
 
 
 
 
 
 
117
  foreach ($statuses as $statuscode => $statuslabel) {
118
 
119
  $hmc = ($this->plugin->call_module_func($key, 'has_menu_count', $_hmc) && $_hmc);
@@ -122,14 +127,16 @@ STR;
122
  $style = '';
123
  switch ($statuscode) {
124
  case SU_MODULE_ENABLED:
125
- if ($currentstatus == SU_MODULE_SILENCED && !$hmc) $is_current = true;
 
 
126
  break;
127
  case SU_MODULE_SILENCED:
128
  if (!$any_hmc) continue 2; //break out of switch and foreach
129
  if (!$hmc) $style = " style='visibility: hidden;'";
130
  break;
131
  case SU_MODULE_HIDDEN:
132
- if ($this->plugin->call_module_func($key, 'get_menu_title', $module_menu_title) && $module_menu_title === false)
133
  $style = " style='visibility: hidden;'";
134
  break;
135
  }
47
 
48
  function admin_page_contents() {
49
  echo "<p>";
50
+ _e('SEO Ultimate&#8217;s features are located in groups called &#8220;modules.&#8221; By default, most of these modules are listed in the &#8220;SEO&#8221; menu on the left. Whenever you&#8217;re working with a module, you can view documentation by clicking the &#8220;Help&#8221; tab in the upper-right-hand corner of your administration screen.', 'seo-ultimate');
51
  echo "</p><p>";
52
  _e('The Module Manager lets you disable or hide modules you don&#8217;t use. You can also silence modules from displaying bubble alerts on the menu.', 'seo-ultimate');
53
  echo "</p>";
114
  echo "\t\t<tr>\n\t\t\t<td class='module-status' id='module-status-$key'>\n";
115
  echo "\t\t\t\t<input type='hidden' name='su-$key-module-status' id='su-$key-module-status' value='$currentstatus' />\n";
116
 
117
+ $hidden_is_hidden = ($this->plugin->call_module_func($key, 'get_menu_title', $module_menu_title) && $module_menu_title === false)
118
+ || ($this->plugin->call_module_func($key, 'is_independent_module', $is_independent_module) && $is_independent_module &&
119
+ $this->plugin->call_module_func($key, 'get_parent_module', $parent_module) && $parent_module &&
120
+ $this->plugin->module_exists($parent_module));
121
+
122
  foreach ($statuses as $statuscode => $statuslabel) {
123
 
124
  $hmc = ($this->plugin->call_module_func($key, 'has_menu_count', $_hmc) && $_hmc);
127
  $style = '';
128
  switch ($statuscode) {
129
  case SU_MODULE_ENABLED:
130
+ if (($currentstatus == SU_MODULE_SILENCED && !$hmc) ||
131
+ ($currentstatus == SU_MODULE_HIDDEN && $hidden_is_hidden))
132
+ $is_current = true;
133
  break;
134
  case SU_MODULE_SILENCED:
135
  if (!$any_hmc) continue 2; //break out of switch and foreach
136
  if (!$hmc) $style = " style='visibility: hidden;'";
137
  break;
138
  case SU_MODULE_HIDDEN:
139
+ if ($hidden_is_hidden)
140
  $style = " style='visibility: hidden;'";
141
  break;
142
  }
modules/opengraph/opengraph.css CHANGED
@@ -5,4 +5,9 @@
5
 
6
  #su-opengraph table.widefat .su-og_type {
7
  width: 100px;
 
 
 
 
 
8
  }
5
 
6
  #su-opengraph table.widefat .su-og_type {
7
  width: 100px;
8
+ }
9
+
10
+ #su-opengraph #su-default-values table.widefat td,
11
+ #su-opengraph #su-default-values table.widefat th {
12
+ padding-right: 3em;
13
  }
modules/opengraph/opengraph.php CHANGED
@@ -19,12 +19,17 @@ class SU_OpenGraph extends SU_Module {
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) {
@@ -41,13 +46,16 @@ class SU_OpenGraph extends SU_Module {
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');
@@ -67,86 +75,104 @@ class SU_OpenGraph extends SU_Module {
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, false) && $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
- $tags['article:author'] = get_author_posts_url($post->post_author);
102
-
103
- $taxonomy_names = suwp::get_taxonomy_names();
104
- foreach ($taxonomy_names as $taxonomy_name) {
105
- if ($terms = get_the_terms(get_the_ID(), $taxonomy_name)) {
106
-
107
- if ('category' == $taxonomy_name)
108
- $meta_property = 'article:section';
109
- else
110
- $meta_property = 'article:tag';
111
-
112
- foreach ($terms as $term) {
113
- $tags[$meta_property][] = $term->name;
 
 
 
 
 
 
 
 
114
  }
115
  }
116
- }
117
-
118
- break;
 
 
 
 
 
119
  }
120
-
121
  } elseif (is_author()) {
122
 
123
  global $wp_query;
124
  $author = $wp_query->get_queried_object();
125
 
126
- //Type
127
- $tags['og:type'] = 'profile';
128
-
129
- //Title
130
- $tags['og:title'] = $author->display_name;
131
-
132
- //Description
133
- $tags['og:title'] = get_the_author_meta('description', $author->ID);
134
-
135
- //Image
136
- $tags['og:image'] = false;
137
-
138
- //URL
139
- $tags['og:url'] = get_author_posts_url($author->ID, $author->user_nicename);
140
-
141
- //First Name
142
- $tags['profile:first_name'] = get_the_author_meta('first_name', $author->ID);
143
-
144
- //Last Name
145
- $tags['profile:last_name'] = get_the_author_meta('last_name', $author->ID);
146
-
147
- //Username
148
- $tags['profile:username'] = $author->user_login;
149
-
 
 
 
 
 
 
150
  } else
151
  return;
152
 
@@ -166,16 +192,28 @@ class SU_OpenGraph extends SU_Module {
166
  //FB App ID
167
  $tags['fb:app_id'] = $this->get_setting('default_fb_app_id');
168
 
 
 
 
169
  //Output meta tags
170
  $xmlnses = $this->namespaces_declared ? array() : $this->get_xmlns_attrs();
171
- foreach ($tags as $property => $values) {
172
- foreach ((array)$values as $value) {
173
- $property = su_esc_attr($property);
174
- $value = su_esc_attr($value);
175
- if (strlen(trim($property)) && strlen(trim($value))) {
176
- $xmlns = $xmlnses[sustr::upto($property, ':')];
177
- if ($xmlns) $xmlns .= ' ';
178
- echo "\t<meta property=\"$property\" content=\"$value\" $xmlns/>\n";
 
 
 
 
 
 
 
 
 
179
  }
180
  }
181
  }
@@ -194,7 +232,7 @@ class SU_OpenGraph extends SU_Module {
194
  $postmeta_edit_tabs = $this->get_postmeta_edit_tabs(array(
195
  array(
196
  'type' => 'dropdown'
197
- , 'options' => array_merge(array(__('Use default', 'seo-ultimate')), $this->get_type_options())
198
  , 'name' => 'og_type'
199
  , 'label' => __('Type', 'seo-ultimate')
200
  )
@@ -235,6 +273,7 @@ class SU_OpenGraph extends SU_Module {
235
  $this->admin_form_table_start();
236
  $this->textbox('og_site_name', __('Site Name', 'seo-ultimate'), false, false, array(), array('placeholder' => get_bloginfo('name')));
237
  $this->textbox('default_fb_app_id', __('Facebook App ID', 'seo-ultimate'));
 
238
  $this->admin_form_table_end();
239
  }
240
 
@@ -242,10 +281,23 @@ class SU_OpenGraph extends SU_Module {
242
  $posttypes = suwp::get_post_type_objects();
243
 
244
  $this->admin_subheader(__('Default Types', 'seo-ultimate'));
245
- $this->admin_form_table_start();
246
- foreach ($posttypes as $posttype)
247
- $this->dropdown("default_{$posttype->name}_og_type", $this->get_type_options(), $posttype->labels->name);
248
- $this->admin_form_table_end();
 
 
 
 
 
 
 
 
 
 
 
 
 
249
 
250
  $this->admin_subheader(__('Default Image', 'seo-ultimate'));
251
  $this->admin_form_table_start();
@@ -270,7 +322,8 @@ class SU_OpenGraph extends SU_Module {
270
  $fields['opengraph'][10]['og_title'] = $this->get_postmeta_textbox('og_title', __('Title:', 'seo-ultimate'));
271
  $fields['opengraph'][20]['og_description'] = $this->get_postmeta_textarea('og_description', __('Description:', 'seo-ultimate'));
272
  $fields['opengraph'][30]['og_image'] = $this->get_postmeta_jlsuggest_box('og_image', __('Image:', 'seo-ultimate'), 'types=posttype_attachment&post_mime_type=image/*');
273
- $fields['opengraph'][40]['og_type'] = $this->get_postmeta_dropdown('og_type', array_merge(array(__('Use default', 'seo-ultimate')), $this->get_type_options()), __('Type:', 'seo-ultimate'));
 
274
 
275
  return $fields;
276
  }
@@ -324,6 +377,35 @@ class SU_OpenGraph extends SU_Module {
324
  )
325
  );
326
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
327
  }
328
 
329
  }
19
  return array(
20
  'default_post_og_type' => 'article'
21
  , 'default_page_og_type' => 'article'
22
+ , 'default_post_twitter_card' => 'summary'
23
+ , 'default_page_twitter_card' => 'summary'
24
+ , 'default_attachment_twitter_card' => 'photo'
25
  );
26
  }
27
 
28
  function init() {
29
  add_filter('language_attributes', array(&$this, 'html_tag_xmlns_attrs'), 1000);
30
  add_action('su_head', array(&$this, 'head_tag_output'));
31
+ add_filter('su_get_setting-opengraph-twitter_site_handle', array(&$this, 'sanitize_twitter_handle'));
32
+ add_filter('user_contactmethods', array(&$this, 'add_twitter_field'));
33
  }
34
 
35
  function html_tag_xmlns_attrs($attrs) {
46
 
47
  function head_tag_output() {
48
 
49
+ $tags = $twitter_tags = array();
50
 
51
  if (is_home()) {
52
 
53
  //Type
54
  $tags['og:type'] = 'blog';
55
 
56
+ //Twitter Type
57
+ $twitter_tags['twitter:card'] = 'summary';
58
+
59
  //Title
60
  if (!($tags['og:title'] = $this->get_setting('home_og_title')))
61
  $tags['og:title'] = get_bloginfo('name');
75
  global $wp_query;
76
  $post = $wp_query->get_queried_object();
77
 
78
+ if (is_object($post)) {
79
+ //Type
80
+ if (!($tags['og:type'] = $this->get_postmeta('og_type')))
81
+ $tags['og:type'] = $this->get_setting("default_{$post->post_type}_og_type");
82
+
83
+ //Twitter Type
84
+ if (!($twitter_tags['twitter:card'] = $this->get_postmeta('twitter_card')))
85
+ $twitter_tags['twitter:card'] = $this->get_setting("default_{$post->post_type}_twitter_card");
86
+
87
+ //Title
88
+ if (!($tags['og:title'] = $this->get_postmeta('og_title')))
89
+ $tags['og:title'] = strip_tags( apply_filters( 'single_post_title', $post->post_title ) );
90
+
91
+ //Description
92
+ if (!($tags['og:description'] = $this->get_postmeta('og_description')))
93
+ if ($this->plugin->call_module_func('meta-descriptions', 'get_meta_desc', $meta_desc, false) && $meta_desc)
94
+ $tags['og:description'] = $meta_desc;
95
+
96
+ //URL
97
+ $tags['og:url'] = get_permalink($post->ID);
98
+
99
+ //Image
100
+ $tags['og:image'] = $this->jlsuggest_value_to_url($this->get_postmeta('og_image'), true);
101
+ if (!$tags['og:image']) {
102
+ if ('attachment' == $post->post_type)
103
+ $tags['og:image'] = wp_get_attachment_url();
104
+ elseif ($thumbnail_id = get_post_thumbnail_id($post->ID))
105
+ $tags['og:image'] = wp_get_attachment_url($thumbnail_id);
106
+ }
107
+
108
+ //Additional fields
109
+ switch ($tags['og:type']) {
110
+ case 'article':
111
+
112
+ $tags['article:published_time'] = get_the_date('Y-m-d');
113
+ $tags['article:modified_time'] = get_the_modified_date('Y-m-d');
114
+ $tags['article:author'] = get_author_posts_url($post->post_author);
115
+
116
+ $single_category = (count(get_the_category()) == 1);
117
+
118
+ $taxonomy_names = suwp::get_taxonomy_names();
119
+ foreach ($taxonomy_names as $taxonomy_name) {
120
+ if ($terms = get_the_terms(get_the_ID(), $taxonomy_name)) {
121
+
122
+ if ($single_category && 'category' == $taxonomy_name)
123
+ $meta_property = 'article:section';
124
+ else
125
+ $meta_property = 'article:tag';
126
+
127
+ foreach ($terms as $term) {
128
+ $tags[$meta_property][] = $term->name;
129
+ }
130
  }
131
  }
132
+
133
+ break;
134
+ }
135
+
136
+ //Author's Twitter Handle
137
+ $handle = get_user_meta($post->post_author, 'twitter', true);
138
+ $handle = $this->sanitize_twitter_handle($handle);
139
+ $twitter_tags['twitter:creator'] = $handle;
140
  }
 
141
  } elseif (is_author()) {
142
 
143
  global $wp_query;
144
  $author = $wp_query->get_queried_object();
145
 
146
+ if (is_object($author)) {
147
+ //Type
148
+ $tags['og:type'] = 'profile';
149
+
150
+ //Title
151
+ $tags['og:title'] = $author->display_name;
152
+
153
+ //Description
154
+ $tags['og:title'] = get_the_author_meta('description', $author->ID);
155
+
156
+ //Image
157
+ $tags['og:image'] = false;
158
+
159
+ //URL
160
+ $tags['og:url'] = get_author_posts_url($author->ID, $author->user_nicename);
161
+
162
+ //First Name
163
+ $tags['profile:first_name'] = get_the_author_meta('first_name', $author->ID);
164
+
165
+ //Last Name
166
+ $tags['profile:last_name'] = get_the_author_meta('last_name', $author->ID);
167
+
168
+ //Username
169
+ $tags['profile:username'] = $author->user_login;
170
+
171
+ //Twitter Handle
172
+ $handle = get_user_meta($author->ID, 'twitter', true);
173
+ $handle = $this->sanitize_twitter_handle($handle);
174
+ $twitter_tags['twitter:creator'] = $handle;
175
+ }
176
  } else
177
  return;
178
 
192
  //FB App ID
193
  $tags['fb:app_id'] = $this->get_setting('default_fb_app_id');
194
 
195
+ //Twitter Site Handle
196
+ $twitter_tags['twitter:site'] = $this->get_setting('twitter_site_handle');
197
+
198
  //Output meta tags
199
  $xmlnses = $this->namespaces_declared ? array() : $this->get_xmlns_attrs();
200
+
201
+ $output_formats = array(
202
+ '<meta property="%1$s" content="%2$s" %3$s/>' => $tags
203
+ , '<meta name="%1$s" content="%2$s" />' => $twitter_tags
204
+ );
205
+ foreach ($output_formats as $html_format => $format_tags) {
206
+ foreach ($format_tags as $property => $values) {
207
+ foreach ((array)$values as $value) {
208
+ $property = su_esc_attr($property);
209
+ $value = su_esc_attr($value);
210
+ if (strlen(trim($property)) && strlen(trim($value))) {
211
+ $xmlns = $xmlnses[sustr::upto($property, ':')];
212
+ if ($xmlns) $xmlns .= ' ';
213
+ echo "\t";
214
+ printf($html_format, $property, $value, $xmlns);
215
+ echo "\n";
216
+ }
217
  }
218
  }
219
  }
232
  $postmeta_edit_tabs = $this->get_postmeta_edit_tabs(array(
233
  array(
234
  'type' => 'dropdown'
235
+ , 'options' => array_merge(array('' => __('Use default', 'seo-ultimate')), $this->get_type_options())
236
  , 'name' => 'og_type'
237
  , 'label' => __('Type', 'seo-ultimate')
238
  )
273
  $this->admin_form_table_start();
274
  $this->textbox('og_site_name', __('Site Name', 'seo-ultimate'), false, false, array(), array('placeholder' => get_bloginfo('name')));
275
  $this->textbox('default_fb_app_id', __('Facebook App ID', 'seo-ultimate'));
276
+ $this->textbox('twitter_site_handle', __('This Site&#8217;s Twitter Handle', 'seo-ultimate'));
277
  $this->admin_form_table_end();
278
  }
279
 
281
  $posttypes = suwp::get_post_type_objects();
282
 
283
  $this->admin_subheader(__('Default Types', 'seo-ultimate'));
284
+ $this->admin_wftable_start(array(
285
+ 'posttype' => __('Post Type', 'seo-ultimate')
286
+ , 'og' => __('Open Graph Type', 'seo-ultimate')
287
+ , 'twitter' => __('Twitter Type', 'seo-ultimate')
288
+ ));
289
+ foreach ($posttypes as $posttype) {
290
+ echo "<tr valign='middle'>\n";
291
+ echo "\t<th class='su-opengraph-posttype' scope='row'>" . esc_html($posttype->labels->name) . "</th>\n";
292
+ echo "\t<td class='su-opengraph-og'>";
293
+ $this->dropdown("default_{$posttype->name}_og_type", $this->get_type_options(), false, '%s', array('in_table' => false));
294
+ echo "</td>\n";
295
+ echo "\t<td class='su-opengraph-twitter'>";
296
+ $this->dropdown("default_{$posttype->name}_twitter_card", $this->get_twitter_type_options(), false, '%s', array('in_table' => false));
297
+ echo "</td>\n";
298
+ echo "</tr>\n";
299
+ }
300
+ $this->admin_wftable_end();
301
 
302
  $this->admin_subheader(__('Default Image', 'seo-ultimate'));
303
  $this->admin_form_table_start();
322
  $fields['opengraph'][10]['og_title'] = $this->get_postmeta_textbox('og_title', __('Title:', 'seo-ultimate'));
323
  $fields['opengraph'][20]['og_description'] = $this->get_postmeta_textarea('og_description', __('Description:', 'seo-ultimate'));
324
  $fields['opengraph'][30]['og_image'] = $this->get_postmeta_jlsuggest_box('og_image', __('Image:', 'seo-ultimate'), 'types=posttype_attachment&post_mime_type=image/*');
325
+ $fields['opengraph'][40]['og_type'] = $this->get_postmeta_dropdown('og_type', array_merge(array('' => __('Use default', 'seo-ultimate')), $this->get_type_options()), __('Open Graph Type:', 'seo-ultimate'));
326
+ $fields['opengraph'][50]['twitter_card'] = $this->get_postmeta_dropdown('twitter_card', array_merge(array('' => __('Use default', 'seo-ultimate')), $this->get_twitter_type_options()), __('Twitter Type:', 'seo-ultimate'));
327
 
328
  return $fields;
329
  }
377
  )
378
  );
379
  }
380
+
381
+ function get_twitter_type_options() {
382
+ return array(
383
+ 'summary' => __('Regular', 'seo-ultimate')
384
+ , 'photo' => __('Photo', 'seo-ultimate')
385
+ );
386
+ }
387
+
388
+ function sanitize_twitter_handle($value) {
389
+ if (strpos($value, '/') === false) {
390
+ $handle = ltrim($value, '@');
391
+ } else {
392
+ $url_parts = explode('/', $value);
393
+ $handle = array_pop($url_parts);
394
+ }
395
+
396
+ $handle = sustr::preg_filter('a-zA-Z0-9_', $handle);
397
+ $handle = trim($handle);
398
+
399
+ if ($handle)
400
+ $handle = "@$handle";
401
+
402
+ return $handle;
403
+ }
404
+
405
+ function add_twitter_field( $contactmethods ) {
406
+ $contactmethods['twitter'] = __('Twitter Handle', 'seo-ultimate');
407
+ return $contactmethods;
408
+ }
409
  }
410
 
411
  }
modules/rich-snippets/rich-snippets.php CHANGED
@@ -9,47 +9,29 @@ if (class_exists('SU_Module')) {
9
 
10
  class SU_RichSnippets extends SU_Module {
11
 
 
 
12
  function get_module_title() { return __('Rich Snippet Creator', 'seo-ultimate'); }
13
 
14
- function get_default_settings() {
15
- return array(
16
- 'format' => 'mf'
17
- , 'review_terms' => __("Reviews\nReview", 'seo-ultimate')
18
- );
19
  }
20
 
21
  function init() {
22
  add_filter('the_content', array(&$this, 'apply_markup'));
23
- add_filter('su_get_postmeta-rich_snippet_type', array(&$this, 'autodetect_type'));
24
- }
25
-
26
- function admin_page_contents() {
27
- $this->admin_form_start();
28
- $this->radiobuttons('format', suarr::flatten_values($this->get_supported_snippet_formats(), 'label'), __('Data Format', 'seo-ultimate'));
29
- $this->textarea('review_terms', __('Categories/Tags That Indicate Reviews', 'seo-ultimate'));
30
- $this->admin_form_end();
31
  }
32
 
33
  function get_supported_snippet_formats() {
34
 
35
  return array(
36
- 'mf' => array(
37
- 'label' => __('Microformats (recommended)', 'seo-ultimate')
38
- , 'item_tags_template' => '<div class="%1$s">%2$s</div>'
39
- , 'property_tags_template' => '<span class="%1$s">%2$s</span>'
40
- , 'hidden_property_tags_template' => '<span class="%1$s"><span class="value-title" title="%2$s"></span></span>'
41
- )
42
- , 'md' => array(
43
- 'label' => __('HTML5 Microdata', 'seo-ultimate')
44
- , 'item_tags_template' => '<div itemscope itemtype="http://data-vocabulary.org/%1$s">%2$s</div>'
45
  , 'property_tags_template' => '<span itemprop="%1$s">%2$s</span>'
46
- , 'hidden_property_tags_template' => '<span itemprop="%1$s" content="%2$s"></span>'
47
- )
48
- , 'rdfa' => array(
49
- 'label' => __('RDFa', 'seo-ultimate')
50
- , 'item_tags_template' => '<div xmlns:v="http://rdf.data-vocabulary.org/#" typeof="v:%1$s">%2$s</div>'
51
- , 'property_tags_template' => '<span property="v:%1$s">%2$s</span>'
52
- , 'hidden_property_tags_template' => '<span property="v:%1$s" content="%2$s"></span>'
53
  )
54
  );
55
  }
@@ -60,69 +42,92 @@ class SU_RichSnippets extends SU_Module {
60
  //REVIEW
61
  'review' => array(
62
  'label' => __('Review', 'seo-ultimate')
63
- , 'tags' => array(
64
- 'mf' => 'hreview'
65
- , 'md' => 'Review'
66
- , 'rdfa' => 'Review'
67
- )
68
  , 'properties' => array(
69
  'item' => array(
70
  'label' => __('Item Reviewed', 'seo-ultimate')
71
- , 'tags' => array(
72
- 'mf' => array('item', 'fn')
73
- , 'md' => 'itemreviewed'
74
- , 'rdfa' => 'itemreviewed'
75
- ),'hidden_tags' => array(
76
- 'mf' => '<span class="item"><span class="fn"><span class="value-title" title="%s"></span></span></span>'
77
- , 'md' => 'itemreviewed'
78
- , 'rdfa' => 'itemreviewed'
79
- )
80
- )
81
- , 'rating' => array(
82
  'label' => __('Star Rating', 'seo-ultimate')
83
  , 'value_format' => array('%s star', '%s stars', '%s-star', '%s-stars')
84
- , 'tags' => 'rating'
85
- )
86
- , 'reviewer' => array(
 
 
 
 
 
 
 
 
87
  'label' => __('Review Author', 'seo-ultimate')
88
  , 'editable' => false
89
  , 'value_function' => 'get_the_author'
90
- , 'tags' => 'reviewer'
91
- )
92
- , 'date_reviewed' => array(
93
  'label' => __('Date Reviewed', 'seo-ultimate')
94
  , 'editable' => false
95
  , 'value_function' => array('get_the_time', 'Y-m-d')
96
- , 'tags' => 'dtreviewed'
97
- , 'hidden_tags' => array(
98
- 'mf' => 'dtreviewed'
99
- , 'md' => '<time itemprop="dtreviewed" datetime="%s"></time>'
100
- , 'rdfa' => 'dtreviewed'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
102
  )
103
  )
104
  )
105
  );
106
  }
107
 
108
- function autodetect_type($current_type) {
109
- if (!strlen($current_type) && $terms = suwp::get_all_the_terms()) {
110
-
111
- $types = $this->get_supported_snippet_types();
112
- foreach ($types as $type => $type_data) {
113
-
114
- if (suarr::any_in_array(
115
- suarr::explode_lines($this->get_setting("{$type}_terms", ''))
116
- , suarr::flatten_values($terms, 'name')
117
- , false
118
- ))
119
- return $type;
120
- }
121
- }
122
-
123
- return $current_type;
124
- }
125
-
126
  function add_tags($content, $tags, $template, $escape=true) {
127
  if ($escape) $content = su_esc_attr($content);
128
  $tags = array_reverse((array)$tags);
@@ -145,7 +150,7 @@ class SU_RichSnippets extends SU_Module {
145
  if (!strlen($type) || $type == 'none') return $content;
146
 
147
  //Get the current format
148
- $format = $this->get_setting('format', 'mf');
149
 
150
  //Get tag templates for the current format
151
  $formats = $this->get_supported_snippet_formats();
@@ -154,99 +159,226 @@ class SU_RichSnippets extends SU_Module {
154
  $types = $this->get_supported_snippet_types();
155
  $type_data = $types[$type];
156
 
 
 
 
 
157
  //Cycle through the current type's properties
158
  $append = '';
159
  $num_properties = 0;
 
160
  foreach ($type_data['properties'] as $property => $property_data) {
161
 
162
- //Get the current value for this property
163
- $value = strval($this->get_postmeta("rich_snippet_{$type}_{$property}"));
164
-
165
- //If a value is not set, look for a value-generating function
166
- if (!strlen($value)) {
167
- if (isset($property_data['value_function'])) {
168
- $valfunc = (array)$property_data['value_function'];
169
- if (is_callable($valfunc[0])) {
170
- $valfunc_args = isset($valfunc[1]) ? (array)$valfunc[1] : array();
171
- $value = call_user_func_array($valfunc[0], $valfunc_args);
172
- }
173
- }
174
- }
175
-
176
- //If still no value, skip this property
177
- if (!strlen($value)) continue;
178
-
179
  //Get the property tags
180
  $tag = is_array($property_data['tags']) ?
181
- $property_data['tags'][$format] :
182
- $property_data['tags'];
183
 
184
  if (isset($property_data['hidden_tags'])) {
185
  $hidden_tag = is_array($property_data['hidden_tags']) ?
186
- $property_data['hidden_tags'][$format] :
187
- $property_data['hidden_tags'];
188
  } else
189
  $hidden_tag = $tag;
190
 
191
- //Add property tags to the value
192
- $markedup_value = $this->add_tags($value, $tag, $formats[$format]['property_tags_template']);
193
- $hidden_markedup_value = $this->add_tags($value, $hidden_tag, $formats[$format]['hidden_property_tags_template']);
194
 
195
- //Apply a value format to visible values if provided
196
- if (isset($property_data['value_format'])) {
197
- $values = array_values(sustr::batch_replace('%s', $value, $property_data['value_format']));
198
- $markedup_values = array_values(sustr::batch_replace('%s', $markedup_value, $property_data['value_format']));
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
199
  } else {
200
- $values = array($value);
201
- $markedup_values = array($markedup_value);
202
- }
203
-
204
- //Is the value in the content, and are we allowed to search/replace the content for this value?
205
- $count = 0;
206
- if (empty($property_data['always_hidden'])) {
207
- for ($i=0; $i<count($values); $i++) {
208
- $content = sustr::htmlsafe_str_replace($values[$i], $markedup_values[$i], $content, 1, $count);
209
- if ($count > 0) break;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
210
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
211
  }
 
 
 
 
 
 
212
 
213
- if ($count == 0)
214
- $append .= $hidden_markedup_value;
215
-
216
- $num_properties++;
217
  }
218
 
219
- if ($num_properties)
220
- $content = $this->add_tags("$content<div>$append</div>", $type_data['tags'][$format], $formats[$format]['item_tags_template'], false);
 
 
 
 
 
 
 
221
 
222
  //Return filtered content
223
  return $content;
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
-
236
- . $this->get_postmeta_dropdown('rich_snippet_review_rating', array(
237
- '0' => __('None', 'seo-ultimate')
238
- , '0.5' => __('0.5 stars', 'seo-ultimate')
239
- , '1' => __('1 star', 'seo-ultimate')
240
- , '1.5' => __('1.5 stars', 'seo-ultimate')
241
- , '2' => __('2 stars', 'seo-ultimate')
242
- , '2.5' => __('2.5 stars', 'seo-ultimate')
243
- , '3' => __('3 stars', 'seo-ultimate')
244
- , '3.5' => __('3.5 stars', 'seo-ultimate')
245
- , '4' => __('4 stars', 'seo-ultimate')
246
- , '4.5' => __('4.5 stars', 'seo-ultimate')
247
- , '5' => __('5 stars', 'seo-ultimate')
248
- ), __('Star Rating for Reviewed Item:', 'seo-ultimate'))
249
- );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
250
 
251
  return $fields;
252
  }
@@ -269,7 +401,6 @@ class SU_RichSnippets extends SU_Module {
269
  , 'title' => __('Settings Help', 'seo-ultimate')
270
  , 'content' => __("
271
  <ul>
272
- <li><strong>Data Format</strong> &mdash; This lets you select the &#8220;language&#8221; that Rich Snippet Creator uses to communicate the rich snippet data to Google. Google supports all three options. We recommend &#8220;Microformats&#8221; because it&#8217;s compatible with the greatest number of HTML/XHTML variants. This option will likely be of interest only to advanced users.</li>
273
  <li><strong>Categories/Tags That Indicate Reviews</strong> &mdash; If you haven&#8217;t set the &#8220;Rich Snippet Type&#8221; setting for an old post or page, then Rich Snippet Creator will automatically set its default type to &#8220;Review&#8221; (instead of &#8220;None&#8221;) if it has a category or tag whose name is in this list (the default list is &#8220;Reviews&#8221; and &#8220;Review&#8221;). Put one category/tag name per line.</li>
274
  </ul>
275
  ", 'seo-ultimate')));
9
 
10
  class SU_RichSnippets extends SU_Module {
11
 
12
+ var $apply_subproperty_markup_args = array();
13
+
14
  function get_module_title() { return __('Rich Snippet Creator', 'seo-ultimate'); }
15
 
16
+ function get_admin_url($key = false) {
17
+ if ($key)
18
+ return parent::get_admin_url($key);
19
+
20
+ return false;
21
  }
22
 
23
  function init() {
24
  add_filter('the_content', array(&$this, 'apply_markup'));
 
 
 
 
 
 
 
 
25
  }
26
 
27
  function get_supported_snippet_formats() {
28
 
29
  return array(
30
+ 'so' => array(
31
+ 'label' => __('Schema.org Microdata', 'seo-ultimate')
32
+ , 'item_tags_template' => '<div itemscope itemtype="http://schema.org/%1$s">%2$s</div>'
 
 
 
 
 
 
33
  , 'property_tags_template' => '<span itemprop="%1$s">%2$s</span>'
34
+ , 'hidden_property_tags_template' => '<meta itemprop="%1$s" content="%2$s" />'
 
 
 
 
 
 
35
  )
36
  );
37
  }
42
  //REVIEW
43
  'review' => array(
44
  'label' => __('Review', 'seo-ultimate')
45
+ , 'tags' => 'Review'
46
+ , 'content_tags' => '<div itemprop="reviewBody">%s</div>'
 
 
 
47
  , 'properties' => array(
48
  'item' => array(
49
  'label' => __('Item Reviewed', 'seo-ultimate')
50
+ , 'tags' => 'itemReviewed'
51
+ ),'rating' => array(
 
 
 
 
 
 
 
 
 
52
  'label' => __('Star Rating', 'seo-ultimate')
53
  , 'value_format' => array('%s star', '%s stars', '%s-star', '%s-stars')
54
+ , 'tags' => '<span itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">'
55
+ . '<meta itemprop="worstRating" content="0" />'
56
+ . '<span itemprop="ratingValue">%s</span>'
57
+ . '<meta itemprop="bestRating" content="5" />'
58
+ . '</span>'
59
+ , 'hidden_tags'=> '<span itemprop="reviewRating" itemscope itemtype="http://schema.org/Rating">'
60
+ . '<meta itemprop="worstRating" content="0" />'
61
+ . '<meta itemprop="ratingValue" content="%s" />'
62
+ . '<meta itemprop="bestRating" content="5" />'
63
+ . '</span>'
64
+ ),'reviewer' => array(
65
  'label' => __('Review Author', 'seo-ultimate')
66
  , 'editable' => false
67
  , 'value_function' => 'get_the_author'
68
+ , 'tags' => 'author'
69
+ ),'date_reviewed' => array(
 
70
  'label' => __('Date Reviewed', 'seo-ultimate')
71
  , 'editable' => false
72
  , 'value_function' => array('get_the_time', 'Y-m-d')
73
+ , 'tags' => '<time itemprop="datePublished">%s</time>'
74
+ , 'hidden_tags' => '<time itemprop="datePublished" datetime="%s" />'
75
+ )
76
+ )
77
+ ),'place' => array(
78
+ 'label' => __('Place', 'seo-ultimate')
79
+ , 'tags' => 'Place'
80
+ , 'properties' => array(
81
+ 'address' => array(
82
+ 'label' => __('Address', 'seo-ultimate')
83
+ , 'tags' => '<span itemprop="address" itemscope itemtype="http://schema.org/PostalAddress">%s</span>'
84
+ , 'properties' => array(
85
+ 'street' => array(
86
+ 'label' => __('Street Address', 'seo-ultimate')
87
+ , 'tags' => 'streetAddress'
88
+ ),'po_box' => array(
89
+ 'label' => __('PO Box', 'seo-ultimate')
90
+ , 'tags' => 'postOfficeBoxNumber'
91
+ ),'city' => array(
92
+ 'label' => __('City', 'seo-ultimate')
93
+ , 'tags' => 'addressLocality'
94
+ ),'state' => array(
95
+ 'label' => __('City', 'seo-ultimate')
96
+ , 'tags' => 'addressRegion'
97
+ ),'country' => array(
98
+ 'label' => __('Country', 'seo-ultimate')
99
+ , 'tags' => 'addressCountry'
100
+ ),'postal_code' => array(
101
+ 'label' => __('Postal Code', 'seo-ultimate')
102
+ , 'tags' => 'postalCode'
103
+ )
104
  )
105
+ ),'fax_number' => array(
106
+ 'label' => __('Fax Number', 'seo-ultimate')
107
+ , 'tags' => 'faxNumber'
108
+ ),'map_url' => array(
109
+ 'label' => __('Map URL', 'seo-ultimate')
110
+ , 'tags' => '<a itemprop="map" href="%1$s">%1$s</a>'
111
+ , 'hidden_tags' => '<link itemprop="map" href="%s" />'
112
+ , 'jlsuggest' => true
113
+ ),'photo' => array(
114
+ 'label' => __('Photo', 'seo-ultimate')
115
+ , 'tags'=>'<span itemprop="photo" itemscope itemtype="http://schema.org/Photograph">'
116
+ . '<a itemprop="url" href="%1$s">%1$s</a>'
117
+ . '</span>'
118
+ , 'hidden_tags'=> '<span itemprop="photo" itemscope itemtype="http://schema.org/Photograph">'
119
+ . '<link itemprop="url" href="%s" />'
120
+ . '</span>'
121
+ , 'jlsuggest' => true
122
+ ),'tel_number' => array(
123
+ 'label' => __('Phone Number', 'seo-ultimate')
124
+ , 'tags' => 'telephone'
125
  )
126
  )
127
  )
128
  );
129
  }
130
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
131
  function add_tags($content, $tags, $template, $escape=true) {
132
  if ($escape) $content = su_esc_attr($content);
133
  $tags = array_reverse((array)$tags);
150
  if (!strlen($type) || $type == 'none') return $content;
151
 
152
  //Get the current format
153
+ $format = 'so';
154
 
155
  //Get tag templates for the current format
156
  $formats = $this->get_supported_snippet_formats();
159
  $types = $this->get_supported_snippet_types();
160
  $type_data = $types[$type];
161
 
162
+ $tag = is_array($property_data['tags']) ?
163
+ $property_data['tags'][$format] :
164
+ $property_data['tags'];
165
+
166
  //Cycle through the current type's properties
167
  $append = '';
168
  $num_properties = 0;
169
+ $supervalue_regex = '';
170
  foreach ($type_data['properties'] as $property => $property_data) {
171
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
172
  //Get the property tags
173
  $tag = is_array($property_data['tags']) ?
174
+ $property_data['tags'][$format] :
175
+ $property_data['tags'];
176
 
177
  if (isset($property_data['hidden_tags'])) {
178
  $hidden_tag = is_array($property_data['hidden_tags']) ?
179
+ $property_data['hidden_tags'][$format] :
180
+ $property_data['hidden_tags'];
181
  } else
182
  $hidden_tag = $tag;
183
 
 
 
 
184
 
185
+ if (isset($property_data['properties']) && is_array($property_data['properties']) && count($property_data['properties'])) {
186
+
187
+ $subproperty_regex_pieces = array();
188
+ $subproperty_hidden_markedup_values = array();
189
+ foreach ($property_data['properties'] as $subproperty => $subproperty_data) {
190
+
191
+ //Get the subproperty tags
192
+ $subproperty_tag = is_array($subproperty_data['tags']) ?
193
+ $subproperty_data['tags'][$format] :
194
+ $subproperty_data['tags'];
195
+
196
+ if (isset($subproperty_data['hidden_tags'])) {
197
+ $subproperty_hidden_tag = is_array($subproperty_data['hidden_tags']) ?
198
+ $subproperty_data['hidden_tags'][$format] :
199
+ $subproperty_data['hidden_tags'];
200
+ } else
201
+ $subproperty_hidden_tag = $subproperty_tag;
202
+
203
+ $subproperty_value = strval($this->get_postmeta("rich_snippet_{$type}_{$property}_{$subproperty}"));
204
+ if ($subproperty_value) {
205
+ $subproperty_hidden_markedup_values[] = $this->add_tags($subproperty_value, $subproperty_hidden_tag, $formats[$format]['hidden_property_tags_template']);
206
+ $subproperty_regex_pieces[] = sustr::preg_escape($subproperty_value);
207
+ }
208
+ }
209
+ /*$supervalue_regex = implode('(<br ?/?>|\s|,)*?', $subproperty_regex_pieces);*/
210
+ $supervalue_regex = implode('|', $subproperty_regex_pieces);
211
+ $supervalue_regex = "($supervalue_regex)";
212
+ $supervalue_regex = array_fill(0, count($subproperty_regex_pieces), $supervalue_regex);
213
+ $supervalue_regex = implode('(<br ?/?>|\s|.){0,20}', $supervalue_regex);
214
+
215
+ $this->apply_subproperty_markup_args = array(
216
+ 'format' => $format
217
+ , 'type' => $type
218
+ , 'property' => $property
219
+ , 'property_tag' => $tag
220
+ , 'property_tag_template' => $formats[$format]['property_tags_template']
221
+ , 'subproperties' => $property_data['properties']
222
+ );
223
+ $count = 0;
224
+ $content = preg_replace_callback("%({$supervalue_regex})%", array(&$this, 'apply_subproperty_markup'), $content, 1, $count);
225
+
226
+ if ($count == 0) {
227
+ if (count($subproperty_hidden_markedup_values)) {
228
+ $append .= $this->add_tags(implode($subproperty_hidden_markedup_values), $tag, $formats[$format]['property_tags_template'], false);
229
+ $num_properties++;
230
+ }
231
+ } else {
232
+ $num_properties++;
233
+ }
234
+
235
  } else {
236
+
237
+ //Get the current value for this property
238
+ $value = strval($this->get_postmeta("rich_snippet_{$type}_{$property}"));
239
+
240
+ if (strlen($value)) {
241
+
242
+ if (sustr::startswith($value, 'obj_') && isset($property_data['jlsuggest']) && $property_data['jlsuggest'])
243
+ $value = $this->jlsuggest_value_to_url($value, true);
244
+
245
+ } else {
246
+
247
+ //If a value is not set, look for a value-generating function
248
+ if (isset($property_data['value_function'])) {
249
+ $valfunc = (array)$property_data['value_function'];
250
+ if (is_callable($valfunc[0])) {
251
+ $valfunc_args = isset($valfunc[1]) ? (array)$valfunc[1] : array();
252
+ $value = call_user_func_array($valfunc[0], $valfunc_args);
253
+ }
254
+ }
255
+ }
256
+
257
+ //If still no value, skip this property
258
+ if (!strlen($value)) continue;
259
+
260
+ //Add property tags to the value
261
+ $markedup_value = $this->add_tags($value, $tag, $formats[$format]['property_tags_template']);
262
+ $hidden_markedup_value = $this->add_tags($value, $hidden_tag, $formats[$format]['hidden_property_tags_template']);
263
+
264
+ //Apply a value format to visible values if provided
265
+ if (isset($property_data['value_format'])) {
266
+ $values = array_values(sustr::batch_replace('%s', $value, $property_data['value_format']));
267
+ $markedup_values = array_values(sustr::batch_replace('%s', $markedup_value, $property_data['value_format']));
268
+ } else {
269
+ $values = array($value);
270
+ $markedup_values = array($markedup_value);
271
  }
272
+
273
+ //Is the value in the content, and are we allowed to search/replace the content for this value?
274
+ $count = 0;
275
+ if (empty($property_data['always_hidden'])) {
276
+ for ($i=0; $i<count($values); $i++) {
277
+ $content = sustr::htmlsafe_str_replace($values[$i], $markedup_values[$i], $content, 1, $count);
278
+ if ($count > 0) break;
279
+ }
280
+ }
281
+
282
+ if ($count == 0)
283
+ $append .= $hidden_markedup_value;
284
+
285
+ $num_properties++;
286
  }
287
+ }
288
+
289
+ if (isset($type_data['content_tags'])) {
290
+ $content_tag = is_array($type_data['content_tags']) ?
291
+ $type_data['content_tags'][$format] :
292
+ $type_data['content_tags'];
293
 
294
+ $content = $this->add_tags($content, $content_tag, $formats[$format]['property_tags_template'], false);
 
 
 
295
  }
296
 
297
+ if ($num_properties) {
298
+ $type_tag = is_array($type_data['tags']) ?
299
+ $type_data['tags'][$format] :
300
+ $type_data['tags'];
301
+ $content = $this->add_tags("$content<div>$append</div>", $type_tag, $formats[$format]['item_tags_template'], false);
302
+
303
+ if ($this->get_setting('mark_code', true, 'settings'))
304
+ $content .= "\n\n<!-- " . sprintf(__('Schema.org markup generated by %1$s (%2$s)', 'seo-ultimate'), SU_PLUGIN_NAME, SU_PLUGIN_URI) . " -->\n\n";
305
+ }
306
 
307
  //Return filtered content
308
  return $content;
309
  }
310
 
311
+ function apply_subproperty_markup($matches) {
312
+
313
+ if (empty($matches[1]))
314
+ return '';
315
+
316
+ $content = $matches[1];
317
+
318
+ extract($this->apply_subproperty_markup_args, EXTR_SKIP);
319
+
320
+ foreach ($subproperties as $subproperty => $subproperty_data) {
321
+
322
+ //Get the subproperty tags
323
+ $subproperty_tag = is_array($subproperty_data['tags']) ?
324
+ $subproperty_data['tags'][$format] :
325
+ $subproperty_data['tags'];
326
+
327
+ $subproperty_value = strval($this->get_postmeta("rich_snippet_{$type}_{$property}_{$subproperty}"));
328
+
329
+ if ($subproperty_value) {
330
+ $subproperty_markedup_value = $this->add_tags($subproperty_value, $subproperty_tag, $property_tag_template);
331
+ $content = sustr::htmlsafe_str_replace($subproperty_value, $subproperty_markedup_value, $content, 1, $count);
332
+ }
333
+ }
334
+
335
+ $content = $this->add_tags($content, $property_tag, $property_tag_format, false);
336
+
337
+ return $content;
338
+ }
339
+
340
  function postmeta_fields($fields) {
341
  $fields['serp'][40]['rich_snippet_type'] = $this->get_postmeta_dropdown('rich_snippet_type', array(
342
+ 'none' => __('Standard', 'seo-ultimate')
343
  , 'review' => __('Review', 'seo-ultimate')
344
+ , 'place' => __('Place', 'seo-ultimate')
345
+ ), __('Search Result Type:', 'seo-ultimate'));
346
 
347
+ $fields['serp'][45]['rich_snippet_review_item|rich_snippet_review_rating'] =
348
+ $this->get_postmeta_subsection('rich_snippet_type', 'review',
349
+
350
+ $this->get_postmeta_textbox('rich_snippet_review_item', __('Name of Reviewed Item:', 'seo-ultimate'))
351
+
352
+ . $this->get_postmeta_dropdown('rich_snippet_review_rating', array(
353
+ '0' => __('None', 'seo-ultimate')
354
+ , '0.5' => __('0.5 stars', 'seo-ultimate')
355
+ , '1' => __('1 star', 'seo-ultimate')
356
+ , '1.5' => __('1.5 stars', 'seo-ultimate')
357
+ , '2' => __('2 stars', 'seo-ultimate')
358
+ , '2.5' => __('2.5 stars', 'seo-ultimate')
359
+ , '3' => __('3 stars', 'seo-ultimate')
360
+ , '3.5' => __('3.5 stars', 'seo-ultimate')
361
+ , '4' => __('4 stars', 'seo-ultimate')
362
+ , '4.5' => __('4.5 stars', 'seo-ultimate')
363
+ , '5' => __('5 stars', 'seo-ultimate')
364
+ ), __('Star Rating for Reviewed Item:', 'seo-ultimate'))
365
+ );
366
+
367
+ $fields['serp'][46]['rich_snippet_place_address_street|rich_snippet_place_address_po_box|rich_snippet_place_address_city|rich_snippet_place_address_state|rich_snippet_place_address_country|rich_snippet_place_address_postal_code|rich_snippet_place_map_url|rich_snippet_place_tel_number|rich_snippet_place_fax_number|rich_snippet_place_photo'] =
368
+ $this->get_postmeta_subsection('rich_snippet_type', 'place',
369
+ $this->get_postmeta_textboxes(array(
370
+ 'rich_snippet_place_address_street' => __('Street Address:', 'seo-ultimate')
371
+ , 'rich_snippet_place_address_po_box' => __('Post Office Box Number:', 'seo-ultimate')
372
+ , 'rich_snippet_place_address_city' => __('City:', 'seo-ultimate')
373
+ , 'rich_snippet_place_address_state' => __('State or Region:', 'seo-ultimate')
374
+ , 'rich_snippet_place_address_country' => __('Country:', 'seo-ultimate')
375
+ , 'rich_snippet_place_address_postal_code' => __('Postal Code:', 'seo-ultimate')
376
+ ), array(), __('Address:', 'seo-ultimate'))
377
+ . $this->get_postmeta_jlsuggest_box('rich_snippet_place_map_url', __('Map Page:', 'seo-ultimate'), 'types=posttype')
378
+ . $this->get_postmeta_textbox('rich_snippet_place_tel_number', __('Phone Number:', 'seo-ultimate'), array('type' => 'tel'))
379
+ . $this->get_postmeta_textbox('rich_snippet_place_fax_number', __('Fax Number:', 'seo-ultimate'), array('type' => 'tel'))
380
+ . $this->get_postmeta_jlsuggest_box('rich_snippet_place_photo', __('Photo:', 'seo-ultimate'), 'types=posttype_attachment&post_mime_type=image/*')
381
+ );
382
 
383
  return $fields;
384
  }
401
  , 'title' => __('Settings Help', 'seo-ultimate')
402
  , 'content' => __("
403
  <ul>
 
404
  <li><strong>Categories/Tags That Indicate Reviews</strong> &mdash; If you haven&#8217;t set the &#8220;Rich Snippet Type&#8221; setting for an old post or page, then Rich Snippet Creator will automatically set its default type to &#8220;Review&#8221; (instead of &#8220;None&#8221;) if it has a category or tag whose name is in this list (the default list is &#8220;Reviews&#8221; and &#8220;Review&#8221;). Put one category/tag name per line.</li>
405
  </ul>
406
  ", 'seo-ultimate')));
modules/sharing-buttons/sharing-buttons.php CHANGED
@@ -36,12 +36,11 @@ class SU_SharingButtons extends SU_Module {
36
 
37
  function admin_page_contents() {
38
  $this->child_admin_form_start();
39
- $this->admin_form_subheader(__('Which provider would you like to use for your sharing buttons?', 'seo-ultimate'));
40
  $this->radiobuttons('provider', array(
41
  'none' => __('None; disable sharing buttons', 'seo-ultimate')
42
  , 'sharethis' => __('Use the ShareThis button', 'seo-ultimate') //: %s{sharethis_code}
43
  , 'addthis' => __('Use the AddThis button', 'seo-ultimate') //: %s{addthis_code}
44
- ));
45
  $this->child_admin_form_end();
46
  }
47
 
36
 
37
  function admin_page_contents() {
38
  $this->child_admin_form_start();
 
39
  $this->radiobuttons('provider', array(
40
  'none' => __('None; disable sharing buttons', 'seo-ultimate')
41
  , 'sharethis' => __('Use the ShareThis button', 'seo-ultimate') //: %s{sharethis_code}
42
  , 'addthis' => __('Use the AddThis button', 'seo-ultimate') //: %s{addthis_code}
43
+ ), __('Which provider would you like to use for your sharing buttons?', 'seo-ultimate'));
44
  $this->child_admin_form_end();
45
  }
46
 
modules/slugs/slugs.php CHANGED
@@ -11,10 +11,13 @@ class SU_Slugs extends SU_Module {
11
 
12
  function get_module_title() { return __('Slug Optimizer', 'seo-ultimate'); }
13
 
 
 
 
14
  function admin_page_contents() {
15
- $this->admin_form_start();
16
  $this->textarea('words_to_remove', __('Words to Remove', 'seo-ultimate'), 20);
17
- $this->admin_form_end();
18
  }
19
 
20
  function init() {
11
 
12
  function get_module_title() { return __('Slug Optimizer', 'seo-ultimate'); }
13
 
14
+ function get_parent_module() { return 'misc'; }
15
+ function get_settings_key() { return 'slugs'; }
16
+
17
  function admin_page_contents() {
18
+ $this->child_admin_form_start();
19
  $this->textarea('words_to_remove', __('Words to Remove', 'seo-ultimate'), 20);
20
+ $this->child_admin_form_end();
21
  }
22
 
23
  function init() {
modules/widgets/widgets.php CHANGED
@@ -12,7 +12,11 @@ class SU_Widgets extends SU_Module {
12
  function get_module_title() { return __('SEO Ultimate Widgets', 'seo-ultimate'); }
13
  function get_menu_title() { return false; }
14
 
15
- function get_admin_url() {
 
 
 
 
16
  if (is_network_admin())
17
  return false;
18
 
12
  function get_module_title() { return __('SEO Ultimate Widgets', 'seo-ultimate'); }
13
  function get_menu_title() { return false; }
14
 
15
+ function get_admin_url($key = false) {
16
+
17
+ if ($key)
18
+ return parent::get_admin_url($key);
19
+
20
  if (is_network_admin())
21
  return false;
22
 
plugin/class.seo-ultimate.php CHANGED
@@ -1425,12 +1425,12 @@ class SEO_Ultimate {
1425
  /********** MODULE FUNCTIONS ***********/
1426
 
1427
  /**
1428
- * Checks to see whether a specified module exists.
1429
  *
1430
  * @since 1.5
1431
  *
1432
  * @param string $key The key of the module to check.
1433
- * @return boolean Whether the module is enabled.
1434
  */
1435
  function module_exists($key) {
1436
  return isset($this->modules[$key]);
1425
  /********** MODULE FUNCTIONS ***********/
1426
 
1427
  /**
1428
+ * Checks to see whether an instantiation of the specified module exists (i.e. whether the module is non-disabled).
1429
  *
1430
  * @since 1.5
1431
  *
1432
  * @param string $key The key of the module to check.
1433
+ * @return boolean Whether the module is enabled (or silent or hidden).
1434
  */
1435
  function module_exists($key) {
1436
  return isset($this->modules[$key]);
plugin/global.css CHANGED
@@ -117,6 +117,10 @@ div.su-help h6 {
117
  white-space: nowrap;
118
  }
119
 
 
 
 
 
120
  #su-postmeta-box table tr.textarea th.su label {
121
  display: block;
122
  margin-top: 5px;
@@ -130,6 +134,26 @@ div.su-help h6 {
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 {
@@ -166,25 +190,10 @@ div.su-module select optgroup option {
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
 
117
  white-space: nowrap;
118
  }
119
 
120
+ #su-postmeta-box table tr[valign="top"] th.su {
121
+ padding-top: 0.7em;
122
+ }
123
+
124
  #su-postmeta-box table tr.textarea th.su label {
125
  display: block;
126
  margin-top: 5px;
134
  width: 100%;
135
  }
136
 
137
+ #su-postmeta-box table td.su.group table {
138
+ border-spacing: 0;
139
+ }
140
+
141
+ #su-postmeta-box table td.su.group th {
142
+ text-align: right;
143
+ font-weight: normal;
144
+ white-space: nowrap;
145
+ padding: 0 0.5em;
146
+ vertical-align: middle;
147
+ }
148
+
149
+ #su-postmeta-box table td.su.group {
150
+ padding: 0.4em;
151
+ }
152
+
153
+ #su-postmeta-box table td.su.group td {
154
+ width: 100%;
155
+ }
156
+
157
  #su-postmeta-box table,
158
  #su-postmeta-box table td input.regular-text,
159
  #su-postmeta-box table td textarea {
190
  text-decoration: none;
191
  }
192
 
193
+ #su-postmeta-box input[type="tel"] {
194
+ box-sizing: border-box;
 
 
195
  }
196
 
 
 
 
 
 
 
 
 
 
 
 
 
 
197
 
198
  /* PLUGIN NOTICES */
199
 
readme.txt CHANGED
@@ -1,21 +1,21 @@
1
  === SEO Ultimate ===
2
  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.4
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
 
10
  == Description ==
11
 
12
  = Recent Releases =
13
 
 
14
  * Version 7.4 adds the Author Highlighter module
15
  * Version 7.3 adds the Open Graph Integrator module
16
  * Version 7.2 updates Permalink Tweaker
17
  * Version 7.1 adds new Link Mask Generator features
18
- * Version 7.0 adds meta description pagination and WP 3.3 compatibility
19
 
20
  = Features =
21
 
@@ -94,10 +94,10 @@ SEO Ultimate is an all-in-one [SEO](http://www.seodesignsolutions.com/) plugin w
94
  * Use to add Google Analytics, Feedburner FeedFlare, Google AdSense section targeting, and other SEO/SEM-enhancing code snippets.
95
  * Code remains even when switching themes.
96
 
97
- * **Rich Snippet Creator**
98
- * Easily add rich snippet code to your review posts.
99
  * Attract more search traffic with eye-catching supplementary SERP data.
100
- * Add code to old review posts automatically.
101
 
102
  * **Sharing Facilitator**
103
  * Adds buttons that make it easy for visitors to share your content on social networking sites (thus building links to your site).
@@ -124,24 +124,25 @@ SEO Ultimate is an all-in-one [SEO](http://www.seodesignsolutions.com/) plugin w
124
  * The "URL Conflict Resolution" setting lets you arbitrate between pages/terms when taxonomy base removal causes their URLs to conflict
125
 
126
  * **SEO Ultimate Widgets**
127
- * Lets you output your Deeplink Juggernaut Footer Links in a widget
128
- * The Siloed Categories widget makes it drag-and-drop-easy to construct siloed navigation on your site
129
 
130
  * **Settings Monitor**
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, posts, pages, attachments, custom post type objects, and user profile pages
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
  * **Author Highlighter** -- NEW in Version 7.4
139
- * Generates code so that when one of your site's posts appears in Google search results, the Google+ profile picture of the post's author will appear alongside it
140
- * Includes support for both single-author and multi-author site setups
141
- * Supports author highlighting for posts, pages, attachments, custom post types, the homepage, archive pages, and author pages
142
- * Inserts a "Google+ Profile URL" field on the WordPress user profile editor, so that users can insert their Google+ URL and enable author highlighting on their posts
143
 
144
- * **Settings Manager** (located under Settings > SEO Ultimate)
145
  * Export your SEO Ultimate settings to a file and re-import later if desired.
146
  * Use the export/import functionality to move SEO Ultimate settings between WordPress sites.
147
  * Reset all settings back to "factory defaults" if something goes wrong.
@@ -203,6 +204,9 @@ To install the plugin manually:
203
  * **Will SEO Ultimate work on multisite setups?**
204
  Yes. SEO Ultimate versions 7.2.6 and later are designed to work on networks running WordPress 3.3 or later.
205
 
 
 
 
206
  = General FAQ =
207
 
208
  * **Why "SEO Ultimate" instead of "Ultimate SEO"?**
@@ -275,6 +279,19 @@ Frequently asked questions, settings help, and troubleshooting tips for SEO Ulti
275
 
276
  == Changelog ==
277
 
 
 
 
 
 
 
 
 
 
 
 
 
 
278
  = Version 7.4 (August 7, 2012) =
279
  * New Module: Author Highlighter
280
  * Generates code so that when one of your site's posts appears in Google search results, the Google+ profile picture of the post's author will appear alongside it
1
  === SEO Ultimate ===
2
  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, Open Graph, og, microdata, Facebook, Twitter, Schema.org
4
  Requires at least: 3.3
5
  Tested up to: 3.4.1
6
+ Stable tag: 7.5
7
 
8
+ This all-in-one SEO plugin gives you control over title tags, noindex, meta tags, Open Graph, slugs, canonical, autolinks, 404 errors, rich snippets, and more.
9
 
10
  == Description ==
11
 
12
  = Recent Releases =
13
 
14
+ * Version 7.5 adds support for Twitter Cards, Schema.org, and place snippets
15
  * Version 7.4 adds the Author Highlighter module
16
  * Version 7.3 adds the Open Graph Integrator module
17
  * Version 7.2 updates Permalink Tweaker
18
  * Version 7.1 adds new Link Mask Generator features
 
19
 
20
  = Features =
21
 
94
  * Use to add Google Analytics, Feedburner FeedFlare, Google AdSense section targeting, and other SEO/SEM-enhancing code snippets.
95
  * Code remains even when switching themes.
96
 
97
+ * **Rich Snippet Creator** -- UPDATED in Version 7.5
98
+ * Easily add rich snippet code for reviews and places.
99
  * Attract more search traffic with eye-catching supplementary SERP data.
100
+ * Supports the new Schema.org format used by Google, Bing, Yahoo, and Yandex.
101
 
102
  * **Sharing Facilitator**
103
  * Adds buttons that make it easy for visitors to share your content on social networking sites (thus building links to your site).
124
  * The "URL Conflict Resolution" setting lets you arbitrate between pages/terms when taxonomy base removal causes their URLs to conflict
125
 
126
  * **SEO Ultimate Widgets**
127
+ * Lets you output your Deeplink Juggernaut Footer Links in a widget.
128
+ * The Siloed Categories widget makes it drag-and-drop-easy to construct siloed navigation on your site.
129
 
130
  * **Settings Monitor**
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** -- UPDATED in Version 7.5
134
+ * Out-of-the-box functionality autogenerates Open Graph data for your homepage, posts, pages, attachments, custom post type objects, and user profile pages.
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
+ * Includes support for summary-style and photo-style Twitter Cards.
138
 
139
  * **Author Highlighter** -- NEW in Version 7.4
140
+ * Generates code so that when one of your site's posts appears in Google search results, the Google+ profile picture of the post's author will appear alongside it.
141
+ * Includes support for both single-author and multi-author site setups.
142
+ * Supports author highlighting for posts, pages, attachments, custom post types, the homepage, archive pages, and author pages.
143
+ * Inserts a "Google+ Profile URL" field on the WordPress user profile editor, so that users can insert their Google+ URL and enable author highlighting on their posts.
144
 
145
+ * **Plugin Settings Manager** (located under Settings > SEO Ultimate)
146
  * Export your SEO Ultimate settings to a file and re-import later if desired.
147
  * Use the export/import functionality to move SEO Ultimate settings between WordPress sites.
148
  * Reset all settings back to "factory defaults" if something goes wrong.
204
  * **Will SEO Ultimate work on multisite setups?**
205
  Yes. SEO Ultimate versions 7.2.6 and later are designed to work on networks running WordPress 3.3 or later.
206
 
207
+ * **Which browsers work best with the SEO Ultimate administration interface?**
208
+ SEO Ultimate's administration interface occasionally uses some HTML5 features. All modern browsers support these features with the exception of Internet Explorer. Don't worry, you'll still be able to use the administration interface with Internet Explorer, but you'll get the best experience if you use another browser. (Note that this only applies to the browser _you_ use. The visitors to your website, on the other hand, can use whatever browser they want.)
209
+
210
  = General FAQ =
211
 
212
  * **Why "SEO Ultimate" instead of "Ultimate SEO"?**
279
 
280
  == Changelog ==
281
 
282
+ = Version 7.5 (August 9, 2012) =
283
+ * Feature: Open Graph Integrator now includes Twitter Card support
284
+ * Feature: Rich Snippet Creator now supports Place microdata
285
+ * Improvement: Rich Snippet Creator has been updated to use the new Schema.org microdata format supported by Google, Bing, Yahoo, and Yandex
286
+ * Improvement: Module Manager no longer shows the "Hidden" option for Miscellaneous modules, since for those modules the "Hidden" option behaves no differently than the "Enabled" option
287
+ * Bugfix: Adjusted 404 Monitor CSS to account for WordPress CSS changes
288
+ * Bugfix: Since Open Graph articles are only supposed to have one "article:section" element but can have multiple "article:tag" elements, posts with multiple categories now have those categories listed in the Open Graph code as "article:tag" elements instead of multiple "article:section" elements, while posts with just one category continue to have that category marked as "article:section"
289
+ * Removed Feature: Rich Snippet Creator no longer lets you choose between the microdata/microformat/RDFa data formats, since these have been replaced with the new Schema.org format. (Rich Snippet Creator will update all your old microdata/microformat/RDFa code automatically.)
290
+ * Removed Feature: The previous version of Rich Snippet Creator was able to mark old posts as reviews if they had certain categories or tags. This feature has been removed, and old posts must now be marked as reviews manually. This is because automatically marking old posts as reviews won't do you much good unless those posts also have review data, which must be entered in manually anyway.
291
+ * Note: Rich Snippet Creator no longer has an admin page; now the module's only interface is in the "SEO Settings" box
292
+ * Change: The "Link Masks" section now appears on the "Links" tab of the "SEO Settings" box instead of on the "Miscellaneous" tab
293
+ * Change: The admin pages for Linkbox Inserter, Nofollow Manager, and Slug Optimizer have been moved to the Miscellaneous page in order to reduce clutter on the SEO menu
294
+
295
  = Version 7.4 (August 7, 2012) =
296
  * New Module: Author Highlighter
297
  * Generates code so that when one of your site's posts appears in Google search results, the Google+ profile picture of the post's author will appear alongside it
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.4
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.4
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.4');
51
  define('SU_AUTHOR', 'SEO Design Solutions');
52
  define('SU_AUTHOR_URI', 'http://www.seodesignsolutions.com/');
53
- define('SU_USER_AGENT', 'SeoUltimate/7.4');
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.5
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.5
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.5');
51
  define('SU_AUTHOR', 'SEO Design Solutions');
52
  define('SU_AUTHOR_URI', 'http://www.seodesignsolutions.com/');
53
+ define('SU_USER_AGENT', 'SeoUltimate/7.5');
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.4\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/seo-ultimate\n"
7
- "POT-Creation-Date: 2012-08-07 19:49:55+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
@@ -206,14 +206,14 @@ msgid "404 Monitor"
206
  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: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 ""
@@ -263,9 +263,9 @@ msgid ""
263
  "</ul>\r\n"
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 ""
@@ -318,7 +318,7 @@ msgstr ""
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 ""
@@ -575,7 +575,7 @@ msgstr ""
575
  msgid "Footer Deeplink Juggernaut"
576
  msgstr ""
577
 
578
- #: modules/autolinks/footer-autolinks.php:17 modules/widgets/widgets.php:170
579
  msgid "Footer Links"
580
  msgstr ""
581
 
@@ -825,63 +825,63 @@ msgstr ""
825
  msgid "Save Changes"
826
  msgstr ""
827
 
828
- #: modules/class.su-module.php:1970
829
  msgid ""
830
  "Are you sure you want to replace the textbox contents with this default "
831
  "value?"
832
  msgstr ""
833
 
834
- #: modules/class.su-module.php:1996 modules/settings/settings-data.php:23
835
  msgid "Reset"
836
  msgstr ""
837
 
838
- #: modules/class.su-module.php:2718 modules/class.su-module.php:2730
839
  msgid "A Deleted %s"
840
  msgstr ""
841
 
842
- #: modules/class.su-module.php:2720
843
  msgid "A Deleted Post"
844
  msgstr ""
845
 
846
- #: modules/class.su-module.php:2735
847
  msgid "A Deleted Term"
848
  msgstr ""
849
 
850
- #: modules/class.su-module.php:2741 modules/meta/meta-descriptions.php:31
851
- #: modules/meta/meta-keywords.php:41 modules/opengraph/opengraph.php:228
852
  #: plugin/class.seo-ultimate.php:1775
853
  msgid "Blog Homepage"
854
  msgstr ""
855
 
856
- #: modules/class.su-module.php:2746 plugin/class.seo-ultimate.php:1853
857
  msgid "Author"
858
  msgstr ""
859
 
860
- #: modules/class.su-module.php:2748
861
  msgid "A Deleted User"
862
  msgstr ""
863
 
864
- #: modules/class.su-module.php:2763 plugin/class.seo-ultimate.php:1883
865
  msgid "Link Mask"
866
  msgstr ""
867
 
868
- #: modules/class.su-module.php:2765
869
  msgid "Link Mask (Disabled)"
870
  msgstr ""
871
 
872
- #: modules/class.su-module.php:2770
873
  msgid "A Deleted Link Mask"
874
  msgstr ""
875
 
876
- #: modules/class.su-module.php:2800
877
  msgid "Type a URL or start typing the name of an item on your site"
878
  msgstr ""
879
 
880
- #: modules/class.su-module.php:2813
881
  msgid "Remove this location from this textbox"
882
  msgstr ""
883
 
884
- #: modules/class.su-module.php:2813
885
  msgid "X"
886
  msgstr ""
887
 
@@ -959,9 +959,9 @@ msgid ""
959
  msgstr ""
960
 
961
  #: modules/files/files.php:155 modules/meta/meta-descriptions.php:216
962
- #: modules/meta/meta-keywords.php:196 modules/modules/modules.php:183
963
  #: modules/more-links/more-links.php:105 modules/more-links/more-links.php:116
964
- #: modules/settings/settings.php:82 modules/slugs/slugs.php:86
965
  #: modules/titles/titles.php:458
966
  msgid "FAQ"
967
  msgstr ""
@@ -1110,71 +1110,71 @@ msgstr ""
1110
  msgid "Nofollow Manager"
1111
  msgstr ""
1112
 
1113
- #: modules/link-nofollow/link-nofollow.php:53
1114
- msgid "Add the nofollow attribute to..."
1115
- msgstr ""
1116
-
1117
- #: modules/link-nofollow/link-nofollow.php:55
1118
  msgid "Adjacent post links (next post / previous post)"
1119
  msgstr ""
1120
 
1121
- #: modules/link-nofollow/link-nofollow.php:56
1122
  msgid "Category links (after posts)"
1123
  msgstr ""
1124
 
1125
- #: modules/link-nofollow/link-nofollow.php:57
1126
  msgid "Category links (in lists)"
1127
  msgstr ""
1128
 
1129
- #: modules/link-nofollow/link-nofollow.php:58
1130
  msgid "Comment anchor links"
1131
  msgstr ""
1132
 
1133
- #: modules/link-nofollow/link-nofollow.php:59
1134
  msgid "Comment feed links"
1135
  msgstr ""
1136
 
1137
- #: modules/link-nofollow/link-nofollow.php:60
1138
  msgid "Date-based archive links"
1139
  msgstr ""
1140
 
1141
- #: modules/link-nofollow/link-nofollow.php:61
1142
  msgid "Pagination navigation links (all)"
1143
  msgstr ""
1144
 
1145
- #: modules/link-nofollow/link-nofollow.php:62
1146
  msgid "Pagination navigation links (on blog home only)"
1147
  msgstr ""
1148
 
1149
- #: modules/link-nofollow/link-nofollow.php:63
1150
  msgid "&#8220;Read more&#8221; links"
1151
  msgstr ""
1152
 
1153
- #: modules/link-nofollow/link-nofollow.php:64
1154
  msgid "Registration link"
1155
  msgstr ""
1156
 
1157
- #: modules/link-nofollow/link-nofollow.php:65
1158
  msgid "Login link"
1159
  msgstr ""
1160
 
1161
- #: modules/link-nofollow/link-nofollow.php:66
1162
  msgid "Tag links (after posts)"
1163
  msgstr ""
1164
 
1165
- #: modules/link-nofollow/link-nofollow.php:67
1166
  msgid "Tag links (in lists and clouds)"
1167
  msgstr ""
1168
 
1169
- #: modules/link-nofollow/link-nofollow.php:76
 
 
 
 
1170
  msgid "When displaying page lists, nofollow links to this page"
1171
  msgstr ""
1172
 
1173
- #: modules/link-nofollow/link-nofollow.php:76
1174
  msgid "Nofollow:"
1175
  msgstr ""
1176
 
1177
- #: modules/link-nofollow/link-nofollow.php:131
1178
  msgid ""
1179
  "\r\n"
1180
  "<p>Nofollow Manager adds the <code>rel=&quot;nofollow&quot;</code> attribute "
@@ -1192,31 +1192,31 @@ msgstr ""
1192
  msgid "Linkbox Inserter"
1193
  msgstr ""
1194
 
1195
- #: modules/linkbox/linkbox.php:18
1196
  msgid "Link to this post!"
1197
  msgstr ""
1198
 
1199
- #: modules/linkbox/linkbox.php:45
1200
  msgid "At the end of posts"
1201
  msgstr ""
1202
 
1203
- #: modules/linkbox/linkbox.php:46
1204
  msgid "At the end of pages"
1205
  msgstr ""
1206
 
1207
- #: modules/linkbox/linkbox.php:47
1208
  msgid "When called by the su_linkbox hook"
1209
  msgstr ""
1210
 
1211
- #: modules/linkbox/linkbox.php:48
1212
  msgid "Display linkboxes..."
1213
  msgstr ""
1214
 
1215
- #: modules/linkbox/linkbox.php:49
1216
  msgid "Linkbox HTML"
1217
  msgstr ""
1218
 
1219
- #: modules/linkbox/linkbox.php:92
1220
  msgid ""
1221
  "\r\n"
1222
  "<ul>\r\n"
@@ -1231,7 +1231,7 @@ msgid ""
1231
  "</ul>\r\n"
1232
  msgstr ""
1233
 
1234
- #: modules/linkbox/linkbox.php:103
1235
  msgid ""
1236
  "\r\n"
1237
  "<p>Here&#8217;s information on the various settings:</p>\r\n"
@@ -1416,12 +1416,12 @@ msgid "Meta Keywords"
1416
  msgstr ""
1417
 
1418
  #: modules/meta/meta-keywords.php:39 modules/meta/meta-robots.php:22
1419
- #: modules/opengraph/opengraph.php:226
1420
  msgid "Sitewide Values"
1421
  msgstr ""
1422
 
1423
  #: modules/meta/meta-keywords.php:40 modules/noindex/noindex.php:50
1424
- #: modules/opengraph/opengraph.php:227
1425
  msgid "Default Values"
1426
  msgstr ""
1427
 
@@ -1697,8 +1697,8 @@ msgid ""
1697
  "SEO Ultimate&#8217;s features are located in groups called &#8220;modules."
1698
  "&#8221; By default, most of these modules are listed in the &#8220;"
1699
  "SEO&#8221; menu on the left. Whenever you&#8217;re working with a module, "
1700
- "you can view documentation by clicking the tabs in the upper-right-hand "
1701
- "corner of your administration screen."
1702
  msgstr ""
1703
 
1704
  #: modules/modules/modules.php:52
@@ -1735,11 +1735,11 @@ msgstr ""
1735
  msgid "Disabled"
1736
  msgstr ""
1737
 
1738
- #: modules/modules/modules.php:170
1739
  msgid "Options Help"
1740
  msgstr ""
1741
 
1742
- #: modules/modules/modules.php:171
1743
  msgid ""
1744
  "\r\n"
1745
  "<p>The Module Manager lets you customize the visibility and accessibility of "
@@ -1759,7 +1759,7 @@ msgid ""
1759
  "</ul>\r\n"
1760
  msgstr ""
1761
 
1762
- #: modules/modules/modules.php:184
1763
  msgid ""
1764
  "\r\n"
1765
  "<ul>\r\n"
@@ -1859,7 +1859,8 @@ msgid "Noindex"
1859
  msgstr ""
1860
 
1861
  #: modules/noindex/noindex.php:69 modules/noindex/noindex.php:80
1862
- #: modules/opengraph/opengraph.php:197 modules/opengraph/opengraph.php:273
 
1863
  msgid "Use default"
1864
  msgstr ""
1865
 
@@ -1949,39 +1950,55 @@ msgstr ""
1949
  msgid "Open Graph"
1950
  msgstr ""
1951
 
1952
- #: modules/opengraph/opengraph.php:199
1953
  msgid "Type"
1954
  msgstr ""
1955
 
1956
- #: modules/opengraph/opengraph.php:204
1957
  msgid "Title"
1958
  msgstr ""
1959
 
1960
- #: modules/opengraph/opengraph.php:209
1961
  msgid "Description"
1962
  msgstr ""
1963
 
1964
- #: modules/opengraph/opengraph.php:214
1965
  msgid "Image"
1966
  msgstr ""
1967
 
1968
- #: modules/opengraph/opengraph.php:236
1969
  msgid "Site Name"
1970
  msgstr ""
1971
 
1972
- #: modules/opengraph/opengraph.php:237
1973
  msgid "Facebook App ID"
1974
  msgstr ""
1975
 
1976
- #: modules/opengraph/opengraph.php:244
 
 
 
 
1977
  msgid "Default Types"
1978
  msgstr ""
1979
 
1980
- #: modules/opengraph/opengraph.php:250 modules/opengraph/opengraph.php:255
 
 
 
 
 
 
 
 
 
 
 
 
1981
  msgid "Default Image"
1982
  msgstr ""
1983
 
1984
- #: modules/opengraph/opengraph.php:253
1985
  msgid ""
1986
  "In the box below, you can specify an image URL or an image from your media "
1987
  "library to use as a default image in the event that there is no image "
@@ -1990,112 +2007,128 @@ msgid ""
1990
  "the WordPress.com mShots service will be used instead."
1991
  msgstr ""
1992
 
1993
- #: modules/opengraph/opengraph.php:262 modules/titles/titles.php:91
1994
  msgid "Blog Homepage Title"
1995
  msgstr ""
1996
 
1997
- #: modules/opengraph/opengraph.php:263
1998
  msgid "Blog Homepage Description"
1999
  msgstr ""
2000
 
2001
- #: modules/opengraph/opengraph.php:264
2002
  msgid "Blog Homepage Image"
2003
  msgstr ""
2004
 
2005
- #: modules/opengraph/opengraph.php:270 modules/widgets/widgets.php:136
2006
  msgid "Title:"
2007
  msgstr ""
2008
 
2009
- #: modules/opengraph/opengraph.php:271
2010
  msgid "Description:"
2011
  msgstr ""
2012
 
2013
- #: modules/opengraph/opengraph.php:272
2014
  msgid "Image:"
2015
  msgstr ""
2016
 
2017
- #: modules/opengraph/opengraph.php:273
2018
- msgid "Type:"
2019
  msgstr ""
2020
 
2021
- #: modules/opengraph/opengraph.php:298
 
 
 
 
2022
  msgid "Featured Image: %s"
2023
  msgstr ""
2024
 
2025
- #: modules/opengraph/opengraph.php:306
2026
- #: modules/rich-snippets/rich-snippets.php:228
2027
- #: modules/rich-snippets/rich-snippets.php:237
2028
  msgid "None"
2029
  msgstr ""
2030
 
2031
- #: modules/opengraph/opengraph.php:307
2032
  msgid "Internet"
2033
  msgstr ""
2034
 
2035
- #: modules/opengraph/opengraph.php:308
2036
  msgid "Article"
2037
  msgstr ""
2038
 
2039
- #: modules/opengraph/opengraph.php:309
2040
  msgid "Blog"
2041
  msgstr ""
2042
 
2043
- #: modules/opengraph/opengraph.php:310
2044
  msgid "Profile"
2045
  msgstr ""
2046
 
2047
- #: modules/opengraph/opengraph.php:311
2048
  msgid "Website"
2049
  msgstr ""
2050
 
2051
- #: modules/opengraph/opengraph.php:312
2052
  msgid "Products"
2053
  msgstr ""
2054
 
2055
- #: modules/opengraph/opengraph.php:313
2056
  msgid "Book"
2057
  msgstr ""
2058
 
2059
- #: modules/opengraph/opengraph.php:314
2060
  msgid "Music"
2061
  msgstr ""
2062
 
2063
- #: modules/opengraph/opengraph.php:315
2064
  msgid "Album"
2065
  msgstr ""
2066
 
2067
- #: modules/opengraph/opengraph.php:316
2068
  msgid "Playlist"
2069
  msgstr ""
2070
 
2071
- #: modules/opengraph/opengraph.php:317
2072
  msgid "Radio Station"
2073
  msgstr ""
2074
 
2075
- #: modules/opengraph/opengraph.php:318
2076
  msgid "Song"
2077
  msgstr ""
2078
 
2079
- #: modules/opengraph/opengraph.php:319
2080
  msgid "Videos"
2081
  msgstr ""
2082
 
2083
- #: modules/opengraph/opengraph.php:320
2084
  msgid "Movie"
2085
  msgstr ""
2086
 
2087
- #: modules/opengraph/opengraph.php:321
2088
  msgid "TV Episode"
2089
  msgstr ""
2090
 
2091
- #: modules/opengraph/opengraph.php:322
2092
  msgid "TV Show"
2093
  msgstr ""
2094
 
2095
- #: modules/opengraph/opengraph.php:323
2096
  msgid "Video"
2097
  msgstr ""
2098
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2099
  #: modules/permalinks/permalinks.php:15
2100
  msgid "Permalink Tweaker"
2101
  msgstr ""
@@ -2137,110 +2170,182 @@ msgid ""
2137
  "the %s."
2138
  msgstr ""
2139
 
2140
- #: modules/rich-snippets/rich-snippets.php:12
2141
  msgid "Rich Snippet Creator"
2142
  msgstr ""
2143
 
2144
- #: modules/rich-snippets/rich-snippets.php:17
2145
- msgid ""
2146
- "Reviews\n"
2147
- "Review"
2148
  msgstr ""
2149
 
2150
- #: modules/rich-snippets/rich-snippets.php:28
2151
- msgid "Data Format"
 
2152
  msgstr ""
2153
 
2154
- #: modules/rich-snippets/rich-snippets.php:29
2155
- msgid "Categories/Tags That Indicate Reviews"
2156
  msgstr ""
2157
 
2158
- #: modules/rich-snippets/rich-snippets.php:37
2159
- msgid "Microformats (recommended)"
2160
  msgstr ""
2161
 
2162
- #: modules/rich-snippets/rich-snippets.php:43
2163
- msgid "HTML5 Microdata"
2164
  msgstr ""
2165
 
2166
- #: modules/rich-snippets/rich-snippets.php:49
2167
- msgid "RDFa"
2168
  msgstr ""
2169
 
2170
- #: modules/rich-snippets/rich-snippets.php:62
2171
- #: modules/rich-snippets/rich-snippets.php:229
2172
- msgid "Review"
2173
  msgstr ""
2174
 
2175
- #: modules/rich-snippets/rich-snippets.php:70
2176
- msgid "Item Reviewed"
2177
  msgstr ""
2178
 
2179
- #: modules/rich-snippets/rich-snippets.php:82
2180
- msgid "Star Rating"
2181
  msgstr ""
2182
 
2183
- #: modules/rich-snippets/rich-snippets.php:87
2184
- msgid "Review Author"
2185
  msgstr ""
2186
 
2187
- #: modules/rich-snippets/rich-snippets.php:93
2188
- msgid "Date Reviewed"
 
 
 
 
 
 
 
 
 
2189
  msgstr ""
2190
 
2191
- #: modules/rich-snippets/rich-snippets.php:230
2192
- msgid "Rich Snippet Type:"
2193
  msgstr ""
2194
 
2195
- #: modules/rich-snippets/rich-snippets.php:234
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2196
  msgid "Name of Reviewed Item:"
2197
  msgstr ""
2198
 
2199
- #: modules/rich-snippets/rich-snippets.php:238
2200
  msgid "0.5 stars"
2201
  msgstr ""
2202
 
2203
- #: modules/rich-snippets/rich-snippets.php:239
2204
  msgid "1 star"
2205
  msgstr ""
2206
 
2207
- #: modules/rich-snippets/rich-snippets.php:240
2208
  msgid "1.5 stars"
2209
  msgstr ""
2210
 
2211
- #: modules/rich-snippets/rich-snippets.php:241
2212
  msgid "2 stars"
2213
  msgstr ""
2214
 
2215
- #: modules/rich-snippets/rich-snippets.php:242
2216
  msgid "2.5 stars"
2217
  msgstr ""
2218
 
2219
- #: modules/rich-snippets/rich-snippets.php:243
2220
  msgid "3 stars"
2221
  msgstr ""
2222
 
2223
- #: modules/rich-snippets/rich-snippets.php:244
2224
  msgid "3.5 stars"
2225
  msgstr ""
2226
 
2227
- #: modules/rich-snippets/rich-snippets.php:245
2228
  msgid "4 stars"
2229
  msgstr ""
2230
 
2231
- #: modules/rich-snippets/rich-snippets.php:246
2232
  msgid "4.5 stars"
2233
  msgstr ""
2234
 
2235
- #: modules/rich-snippets/rich-snippets.php:247
2236
  msgid "5 stars"
2237
  msgstr ""
2238
 
2239
- #: modules/rich-snippets/rich-snippets.php:248
2240
  msgid "Star Rating for Reviewed Item:"
2241
  msgstr ""
2242
 
2243
- #: modules/rich-snippets/rich-snippets.php:259
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2244
  msgid ""
2245
  "\r\n"
2246
  "<ul>\r\n"
@@ -2268,16 +2373,10 @@ msgid ""
2268
  "</ul>\r\n"
2269
  msgstr ""
2270
 
2271
- #: modules/rich-snippets/rich-snippets.php:270
2272
  msgid ""
2273
  "\r\n"
2274
  "<ul>\r\n"
2275
- "\t<li><strong>Data Format</strong> &mdash; This lets you select the &#8220;"
2276
- "language&#8221; that Rich Snippet Creator uses to communicate the rich "
2277
- "snippet data to Google. Google supports all three options. We recommend "
2278
- "&#8220;Microformats&#8221; because it&#8217;s compatible with the greatest "
2279
- "number of HTML/XHTML variants. This option will likely be of interest only "
2280
- "to advanced users.</li>\r\n"
2281
  "\t<li><strong>Categories/Tags That Indicate Reviews</strong> &mdash; If you "
2282
  "haven&#8217;t set the &#8220;Rich Snippet Type&#8221; setting for an old "
2283
  "post or page, then Rich Snippet Creator will automatically set its default "
@@ -2288,7 +2387,7 @@ msgid ""
2288
  "</ul>\r\n"
2289
  msgstr ""
2290
 
2291
- #: modules/rich-snippets/rich-snippets.php:280
2292
  msgid ""
2293
  "\r\n"
2294
  "<ul>\r\n"
@@ -2315,7 +2414,7 @@ msgstr ""
2315
  msgid "SEO Design Solutions Whitepapers"
2316
  msgstr ""
2317
 
2318
- #. #-#-#-#-# plugin.pot (SEO Ultimate 7.4) #-#-#-#-#
2319
  #. Author of the plugin/theme
2320
  #: modules/sds-blog/sds-blog.php:49
2321
  msgid "SEO Design Solutions"
@@ -2631,7 +2730,7 @@ msgstr ""
2631
  msgid "SEO Ultimate Plugin Settings"
2632
  msgstr ""
2633
 
2634
- #. #-#-#-#-# plugin.pot (SEO Ultimate 7.4) #-#-#-#-#
2635
  #. Plugin Name of the plugin/theme
2636
  #: modules/settings/settings.php:26 plugin/class.seo-ultimate.php:861
2637
  msgid "SEO Ultimate"
@@ -2733,7 +2832,7 @@ msgid "Uninstallation complete. Thanks for trying SEO Ultimate."
2733
  msgstr ""
2734
 
2735
  #: modules/sharing-buttons/sharing-buttons.php:12
2736
- #: modules/sharing-buttons/sharing-buttons.php:72
2737
  msgid "Sharing Facilitator"
2738
  msgstr ""
2739
 
@@ -2741,23 +2840,23 @@ msgstr ""
2741
  msgid "Bookmark and Share"
2742
  msgstr ""
2743
 
2744
- #: modules/sharing-buttons/sharing-buttons.php:39
2745
- msgid "Which provider would you like to use for your sharing buttons?"
2746
  msgstr ""
2747
 
2748
  #: modules/sharing-buttons/sharing-buttons.php:41
2749
- msgid "None; disable sharing buttons"
2750
  msgstr ""
2751
 
2752
  #: modules/sharing-buttons/sharing-buttons.php:42
2753
- msgid "Use the ShareThis button"
2754
  msgstr ""
2755
 
2756
  #: modules/sharing-buttons/sharing-buttons.php:43
2757
- msgid "Use the AddThis button"
2758
  msgstr ""
2759
 
2760
- #: modules/sharing-buttons/sharing-buttons.php:73
2761
  msgid ""
2762
  "\r\n"
2763
  "<ul>\r\n"
@@ -2777,11 +2876,11 @@ msgstr ""
2777
  msgid "Slug Optimizer"
2778
  msgstr ""
2779
 
2780
- #: modules/slugs/slugs.php:16
2781
  msgid "Words to Remove"
2782
  msgstr ""
2783
 
2784
- #: modules/slugs/slugs.php:76
2785
  msgid ""
2786
  "\r\n"
2787
  "<ul>\r\n"
@@ -2801,7 +2900,7 @@ msgid ""
2801
  "</ul>\r\n"
2802
  msgstr ""
2803
 
2804
- #: modules/slugs/slugs.php:87
2805
  msgid ""
2806
  "\r\n"
2807
  "<ul>\r\n"
@@ -2837,7 +2936,7 @@ msgid ""
2837
  "</ul>\r\n"
2838
  msgstr ""
2839
 
2840
- #: modules/slugs/slugs.php:107
2841
  msgid ""
2842
  "\r\n"
2843
  "<ul>\r\n"
@@ -3304,49 +3403,49 @@ msgstr ""
3304
  msgid "SEO Ultimate Widgets"
3305
  msgstr ""
3306
 
3307
- #: modules/widgets/widgets.php:42
3308
  msgid ""
3309
  "On category archives, displays a list of child categories and/or posts in "
3310
  "the category. Displays a list of top-level categories everywhere else. "
3311
  "Powered by the SEO Ultimate plugin."
3312
  msgstr ""
3313
 
3314
- #: modules/widgets/widgets.php:43
3315
  msgid "Siloed Categories"
3316
  msgstr ""
3317
 
3318
- #: modules/widgets/widgets.php:57
3319
  msgid "Tags"
3320
  msgstr ""
3321
 
3322
- #: modules/widgets/widgets.php:140
3323
  msgid "Show post counts"
3324
  msgstr ""
3325
 
3326
- #: modules/widgets/widgets.php:142
3327
  msgid "Use term descriptions in title attributes"
3328
  msgstr ""
3329
 
3330
- #: modules/widgets/widgets.php:144
3331
  msgid "Taxonomy:"
3332
  msgstr ""
3333
 
3334
- #: modules/widgets/widgets.php:169
3335
  msgid ""
3336
  "Add this widget to display Deeplink Juggernaut&#8217;s Footer Links in a "
3337
  "widget area of your choosing rather than the default wp_footer section. "
3338
  "Powered by the SEO Ultimate plugin."
3339
  msgstr ""
3340
 
3341
- #: modules/widgets/widgets.php:223
3342
  msgid "Title: <em>(optional)</em>"
3343
  msgstr ""
3344
 
3345
- #: modules/widgets/widgets.php:227
3346
  msgid "Display as a list"
3347
  msgstr ""
3348
 
3349
- #: modules/widgets/widgets.php:230
3350
  msgid "Use my <a href=\"%s\" target=\"_blank\">footer link HTML formats</a>"
3351
  msgstr ""
3352
 
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.5\n"
6
  "Report-Msgid-Bugs-To: http://wordpress.org/tag/seo-ultimate\n"
7
+ "POT-Creation-Date: 2012-08-09 15:06:57+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=UTF-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
206
  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:132
210
+ #: modules/linkbox/linkbox.php:94 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:390
215
  #: modules/settings/settings.php:63
216
+ #: modules/sharing-buttons/sharing-buttons.php:71 modules/slugs/slugs.php:78
217
  #: modules/titles/titles.php:357 modules/user-code/user-code.php:97
218
  msgid "Overview"
219
  msgstr ""
263
  "</ul>\r\n"
264
  msgstr ""
265
 
266
+ #: modules/404s/fofs.php:45 modules/linkbox/linkbox.php:105
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:401
269
  #: modules/titles/titles.php:431
270
  msgid "Settings Help"
271
  msgstr ""
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:410 modules/slugs/slugs.php:109
322
  #: modules/titles/titles.php:469 modules/user-code/user-code.php:111
323
  msgid "Troubleshooting"
324
  msgstr ""
575
  msgid "Footer Deeplink Juggernaut"
576
  msgstr ""
577
 
578
+ #: modules/autolinks/footer-autolinks.php:17 modules/widgets/widgets.php:174
579
  msgid "Footer Links"
580
  msgstr ""
581
 
825
  msgid "Save Changes"
826
  msgstr ""
827
 
828
+ #: modules/class.su-module.php:1974
829
  msgid ""
830
  "Are you sure you want to replace the textbox contents with this default "
831
  "value?"
832
  msgstr ""
833
 
834
+ #: modules/class.su-module.php:2000 modules/settings/settings-data.php:23
835
  msgid "Reset"
836
  msgstr ""
837
 
838
+ #: modules/class.su-module.php:2738 modules/class.su-module.php:2750
839
  msgid "A Deleted %s"
840
  msgstr ""
841
 
842
+ #: modules/class.su-module.php:2740
843
  msgid "A Deleted Post"
844
  msgstr ""
845
 
846
+ #: modules/class.su-module.php:2755
847
  msgid "A Deleted Term"
848
  msgstr ""
849
 
850
+ #: modules/class.su-module.php:2761 modules/meta/meta-descriptions.php:31
851
+ #: modules/meta/meta-keywords.php:41 modules/opengraph/opengraph.php:266
852
  #: plugin/class.seo-ultimate.php:1775
853
  msgid "Blog Homepage"
854
  msgstr ""
855
 
856
+ #: modules/class.su-module.php:2766 plugin/class.seo-ultimate.php:1853
857
  msgid "Author"
858
  msgstr ""
859
 
860
+ #: modules/class.su-module.php:2768
861
  msgid "A Deleted User"
862
  msgstr ""
863
 
864
+ #: modules/class.su-module.php:2783 plugin/class.seo-ultimate.php:1883
865
  msgid "Link Mask"
866
  msgstr ""
867
 
868
+ #: modules/class.su-module.php:2785
869
  msgid "Link Mask (Disabled)"
870
  msgstr ""
871
 
872
+ #: modules/class.su-module.php:2790
873
  msgid "A Deleted Link Mask"
874
  msgstr ""
875
 
876
+ #: modules/class.su-module.php:2820
877
  msgid "Type a URL or start typing the name of an item on your site"
878
  msgstr ""
879
 
880
+ #: modules/class.su-module.php:2833
881
  msgid "Remove this location from this textbox"
882
  msgstr ""
883
 
884
+ #: modules/class.su-module.php:2833
885
  msgid "X"
886
  msgstr ""
887
 
959
  msgstr ""
960
 
961
  #: modules/files/files.php:155 modules/meta/meta-descriptions.php:216
962
+ #: modules/meta/meta-keywords.php:196 modules/modules/modules.php:190
963
  #: modules/more-links/more-links.php:105 modules/more-links/more-links.php:116
964
+ #: modules/settings/settings.php:82 modules/slugs/slugs.php:89
965
  #: modules/titles/titles.php:458
966
  msgid "FAQ"
967
  msgstr ""
1110
  msgid "Nofollow Manager"
1111
  msgstr ""
1112
 
1113
+ #: modules/link-nofollow/link-nofollow.php:57
 
 
 
 
1114
  msgid "Adjacent post links (next post / previous post)"
1115
  msgstr ""
1116
 
1117
+ #: modules/link-nofollow/link-nofollow.php:58
1118
  msgid "Category links (after posts)"
1119
  msgstr ""
1120
 
1121
+ #: modules/link-nofollow/link-nofollow.php:59
1122
  msgid "Category links (in lists)"
1123
  msgstr ""
1124
 
1125
+ #: modules/link-nofollow/link-nofollow.php:60
1126
  msgid "Comment anchor links"
1127
  msgstr ""
1128
 
1129
+ #: modules/link-nofollow/link-nofollow.php:61
1130
  msgid "Comment feed links"
1131
  msgstr ""
1132
 
1133
+ #: modules/link-nofollow/link-nofollow.php:62
1134
  msgid "Date-based archive links"
1135
  msgstr ""
1136
 
1137
+ #: modules/link-nofollow/link-nofollow.php:63
1138
  msgid "Pagination navigation links (all)"
1139
  msgstr ""
1140
 
1141
+ #: modules/link-nofollow/link-nofollow.php:64
1142
  msgid "Pagination navigation links (on blog home only)"
1143
  msgstr ""
1144
 
1145
+ #: modules/link-nofollow/link-nofollow.php:65
1146
  msgid "&#8220;Read more&#8221; links"
1147
  msgstr ""
1148
 
1149
+ #: modules/link-nofollow/link-nofollow.php:66
1150
  msgid "Registration link"
1151
  msgstr ""
1152
 
1153
+ #: modules/link-nofollow/link-nofollow.php:67
1154
  msgid "Login link"
1155
  msgstr ""
1156
 
1157
+ #: modules/link-nofollow/link-nofollow.php:68
1158
  msgid "Tag links (after posts)"
1159
  msgstr ""
1160
 
1161
+ #: modules/link-nofollow/link-nofollow.php:69
1162
  msgid "Tag links (in lists and clouds)"
1163
  msgstr ""
1164
 
1165
+ #: modules/link-nofollow/link-nofollow.php:70
1166
+ msgid "Add the nofollow attribute to..."
1167
+ msgstr ""
1168
+
1169
+ #: modules/link-nofollow/link-nofollow.php:78
1170
  msgid "When displaying page lists, nofollow links to this page"
1171
  msgstr ""
1172
 
1173
+ #: modules/link-nofollow/link-nofollow.php:78
1174
  msgid "Nofollow:"
1175
  msgstr ""
1176
 
1177
+ #: modules/link-nofollow/link-nofollow.php:133
1178
  msgid ""
1179
  "\r\n"
1180
  "<p>Nofollow Manager adds the <code>rel=&quot;nofollow&quot;</code> attribute "
1192
  msgid "Linkbox Inserter"
1193
  msgstr ""
1194
 
1195
+ #: modules/linkbox/linkbox.php:21
1196
  msgid "Link to this post!"
1197
  msgstr ""
1198
 
1199
+ #: modules/linkbox/linkbox.php:48
1200
  msgid "At the end of posts"
1201
  msgstr ""
1202
 
1203
+ #: modules/linkbox/linkbox.php:49
1204
  msgid "At the end of pages"
1205
  msgstr ""
1206
 
1207
+ #: modules/linkbox/linkbox.php:50
1208
  msgid "When called by the su_linkbox hook"
1209
  msgstr ""
1210
 
1211
+ #: modules/linkbox/linkbox.php:51
1212
  msgid "Display linkboxes..."
1213
  msgstr ""
1214
 
1215
+ #: modules/linkbox/linkbox.php:52
1216
  msgid "Linkbox HTML"
1217
  msgstr ""
1218
 
1219
+ #: modules/linkbox/linkbox.php:95
1220
  msgid ""
1221
  "\r\n"
1222
  "<ul>\r\n"
1231
  "</ul>\r\n"
1232
  msgstr ""
1233
 
1234
+ #: modules/linkbox/linkbox.php:106
1235
  msgid ""
1236
  "\r\n"
1237
  "<p>Here&#8217;s information on the various settings:</p>\r\n"
1416
  msgstr ""
1417
 
1418
  #: modules/meta/meta-keywords.php:39 modules/meta/meta-robots.php:22
1419
+ #: modules/opengraph/opengraph.php:264
1420
  msgid "Sitewide Values"
1421
  msgstr ""
1422
 
1423
  #: modules/meta/meta-keywords.php:40 modules/noindex/noindex.php:50
1424
+ #: modules/opengraph/opengraph.php:265
1425
  msgid "Default Values"
1426
  msgstr ""
1427
 
1697
  "SEO Ultimate&#8217;s features are located in groups called &#8220;modules."
1698
  "&#8221; By default, most of these modules are listed in the &#8220;"
1699
  "SEO&#8221; menu on the left. Whenever you&#8217;re working with a module, "
1700
+ "you can view documentation by clicking the &#8220;Help&#8221; tab in the "
1701
+ "upper-right-hand corner of your administration screen."
1702
  msgstr ""
1703
 
1704
  #: modules/modules/modules.php:52
1735
  msgid "Disabled"
1736
  msgstr ""
1737
 
1738
+ #: modules/modules/modules.php:177
1739
  msgid "Options Help"
1740
  msgstr ""
1741
 
1742
+ #: modules/modules/modules.php:178
1743
  msgid ""
1744
  "\r\n"
1745
  "<p>The Module Manager lets you customize the visibility and accessibility of "
1759
  "</ul>\r\n"
1760
  msgstr ""
1761
 
1762
+ #: modules/modules/modules.php:191
1763
  msgid ""
1764
  "\r\n"
1765
  "<ul>\r\n"
1859
  msgstr ""
1860
 
1861
  #: modules/noindex/noindex.php:69 modules/noindex/noindex.php:80
1862
+ #: modules/opengraph/opengraph.php:235 modules/opengraph/opengraph.php:325
1863
+ #: modules/opengraph/opengraph.php:326
1864
  msgid "Use default"
1865
  msgstr ""
1866
 
1950
  msgid "Open Graph"
1951
  msgstr ""
1952
 
1953
+ #: modules/opengraph/opengraph.php:237
1954
  msgid "Type"
1955
  msgstr ""
1956
 
1957
+ #: modules/opengraph/opengraph.php:242
1958
  msgid "Title"
1959
  msgstr ""
1960
 
1961
+ #: modules/opengraph/opengraph.php:247
1962
  msgid "Description"
1963
  msgstr ""
1964
 
1965
+ #: modules/opengraph/opengraph.php:252
1966
  msgid "Image"
1967
  msgstr ""
1968
 
1969
+ #: modules/opengraph/opengraph.php:274
1970
  msgid "Site Name"
1971
  msgstr ""
1972
 
1973
+ #: modules/opengraph/opengraph.php:275
1974
  msgid "Facebook App ID"
1975
  msgstr ""
1976
 
1977
+ #: modules/opengraph/opengraph.php:276
1978
+ msgid "This Site&#8217;s Twitter Handle"
1979
+ msgstr ""
1980
+
1981
+ #: modules/opengraph/opengraph.php:283
1982
  msgid "Default Types"
1983
  msgstr ""
1984
 
1985
+ #: modules/opengraph/opengraph.php:285
1986
+ msgid "Post Type"
1987
+ msgstr ""
1988
+
1989
+ #: modules/opengraph/opengraph.php:286
1990
+ msgid "Open Graph Type"
1991
+ msgstr ""
1992
+
1993
+ #: modules/opengraph/opengraph.php:287
1994
+ msgid "Twitter Type"
1995
+ msgstr ""
1996
+
1997
+ #: modules/opengraph/opengraph.php:302 modules/opengraph/opengraph.php:307
1998
  msgid "Default Image"
1999
  msgstr ""
2000
 
2001
+ #: modules/opengraph/opengraph.php:305
2002
  msgid ""
2003
  "In the box below, you can specify an image URL or an image from your media "
2004
  "library to use as a default image in the event that there is no image "
2007
  "the WordPress.com mShots service will be used instead."
2008
  msgstr ""
2009
 
2010
+ #: modules/opengraph/opengraph.php:314 modules/titles/titles.php:91
2011
  msgid "Blog Homepage Title"
2012
  msgstr ""
2013
 
2014
+ #: modules/opengraph/opengraph.php:315
2015
  msgid "Blog Homepage Description"
2016
  msgstr ""
2017
 
2018
+ #: modules/opengraph/opengraph.php:316
2019
  msgid "Blog Homepage Image"
2020
  msgstr ""
2021
 
2022
+ #: modules/opengraph/opengraph.php:322 modules/widgets/widgets.php:140
2023
  msgid "Title:"
2024
  msgstr ""
2025
 
2026
+ #: modules/opengraph/opengraph.php:323
2027
  msgid "Description:"
2028
  msgstr ""
2029
 
2030
+ #: modules/opengraph/opengraph.php:324
2031
  msgid "Image:"
2032
  msgstr ""
2033
 
2034
+ #: modules/opengraph/opengraph.php:325
2035
+ msgid "Open Graph Type:"
2036
  msgstr ""
2037
 
2038
+ #: modules/opengraph/opengraph.php:326
2039
+ msgid "Twitter Type:"
2040
+ msgstr ""
2041
+
2042
+ #: modules/opengraph/opengraph.php:351
2043
  msgid "Featured Image: %s"
2044
  msgstr ""
2045
 
2046
+ #: modules/opengraph/opengraph.php:359
2047
+ #: modules/rich-snippets/rich-snippets.php:353
 
2048
  msgid "None"
2049
  msgstr ""
2050
 
2051
+ #: modules/opengraph/opengraph.php:360
2052
  msgid "Internet"
2053
  msgstr ""
2054
 
2055
+ #: modules/opengraph/opengraph.php:361
2056
  msgid "Article"
2057
  msgstr ""
2058
 
2059
+ #: modules/opengraph/opengraph.php:362
2060
  msgid "Blog"
2061
  msgstr ""
2062
 
2063
+ #: modules/opengraph/opengraph.php:363
2064
  msgid "Profile"
2065
  msgstr ""
2066
 
2067
+ #: modules/opengraph/opengraph.php:364
2068
  msgid "Website"
2069
  msgstr ""
2070
 
2071
+ #: modules/opengraph/opengraph.php:365
2072
  msgid "Products"
2073
  msgstr ""
2074
 
2075
+ #: modules/opengraph/opengraph.php:366
2076
  msgid "Book"
2077
  msgstr ""
2078
 
2079
+ #: modules/opengraph/opengraph.php:367
2080
  msgid "Music"
2081
  msgstr ""
2082
 
2083
+ #: modules/opengraph/opengraph.php:368
2084
  msgid "Album"
2085
  msgstr ""
2086
 
2087
+ #: modules/opengraph/opengraph.php:369
2088
  msgid "Playlist"
2089
  msgstr ""
2090
 
2091
+ #: modules/opengraph/opengraph.php:370
2092
  msgid "Radio Station"
2093
  msgstr ""
2094
 
2095
+ #: modules/opengraph/opengraph.php:371
2096
  msgid "Song"
2097
  msgstr ""
2098
 
2099
+ #: modules/opengraph/opengraph.php:372
2100
  msgid "Videos"
2101
  msgstr ""
2102
 
2103
+ #: modules/opengraph/opengraph.php:373
2104
  msgid "Movie"
2105
  msgstr ""
2106
 
2107
+ #: modules/opengraph/opengraph.php:374
2108
  msgid "TV Episode"
2109
  msgstr ""
2110
 
2111
+ #: modules/opengraph/opengraph.php:375
2112
  msgid "TV Show"
2113
  msgstr ""
2114
 
2115
+ #: modules/opengraph/opengraph.php:376
2116
  msgid "Video"
2117
  msgstr ""
2118
 
2119
+ #: modules/opengraph/opengraph.php:383
2120
+ msgid "Regular"
2121
+ msgstr ""
2122
+
2123
+ #: modules/opengraph/opengraph.php:384
2124
+ #: modules/rich-snippets/rich-snippets.php:114
2125
+ msgid "Photo"
2126
+ msgstr ""
2127
+
2128
+ #: modules/opengraph/opengraph.php:406
2129
+ msgid "Twitter Handle"
2130
+ msgstr ""
2131
+
2132
  #: modules/permalinks/permalinks.php:15
2133
  msgid "Permalink Tweaker"
2134
  msgstr ""
2170
  "the %s."
2171
  msgstr ""
2172
 
2173
+ #: modules/rich-snippets/rich-snippets.php:14
2174
  msgid "Rich Snippet Creator"
2175
  msgstr ""
2176
 
2177
+ #: modules/rich-snippets/rich-snippets.php:31
2178
+ msgid "Schema.org Microdata"
 
 
2179
  msgstr ""
2180
 
2181
+ #: modules/rich-snippets/rich-snippets.php:44
2182
+ #: modules/rich-snippets/rich-snippets.php:343
2183
+ msgid "Review"
2184
  msgstr ""
2185
 
2186
+ #: modules/rich-snippets/rich-snippets.php:49
2187
+ msgid "Item Reviewed"
2188
  msgstr ""
2189
 
2190
+ #: modules/rich-snippets/rich-snippets.php:52
2191
+ msgid "Star Rating"
2192
  msgstr ""
2193
 
2194
+ #: modules/rich-snippets/rich-snippets.php:65
2195
+ msgid "Review Author"
2196
  msgstr ""
2197
 
2198
+ #: modules/rich-snippets/rich-snippets.php:70
2199
+ msgid "Date Reviewed"
2200
  msgstr ""
2201
 
2202
+ #: modules/rich-snippets/rich-snippets.php:78
2203
+ #: modules/rich-snippets/rich-snippets.php:344
2204
+ msgid "Place"
2205
  msgstr ""
2206
 
2207
+ #: modules/rich-snippets/rich-snippets.php:82
2208
+ msgid "Address"
2209
  msgstr ""
2210
 
2211
+ #: modules/rich-snippets/rich-snippets.php:86
2212
+ msgid "Street Address"
2213
  msgstr ""
2214
 
2215
+ #: modules/rich-snippets/rich-snippets.php:89
2216
+ msgid "PO Box"
2217
  msgstr ""
2218
 
2219
+ #: modules/rich-snippets/rich-snippets.php:92
2220
+ #: modules/rich-snippets/rich-snippets.php:95
2221
+ msgid "City"
2222
+ msgstr ""
2223
+
2224
+ #: modules/rich-snippets/rich-snippets.php:98
2225
+ msgid "Country"
2226
+ msgstr ""
2227
+
2228
+ #: modules/rich-snippets/rich-snippets.php:101
2229
+ msgid "Postal Code"
2230
  msgstr ""
2231
 
2232
+ #: modules/rich-snippets/rich-snippets.php:106
2233
+ msgid "Fax Number"
2234
  msgstr ""
2235
 
2236
+ #: modules/rich-snippets/rich-snippets.php:109
2237
+ msgid "Map URL"
2238
+ msgstr ""
2239
+
2240
+ #: modules/rich-snippets/rich-snippets.php:123
2241
+ msgid "Phone Number"
2242
+ msgstr ""
2243
+
2244
+ #: modules/rich-snippets/rich-snippets.php:304
2245
+ msgid "Schema.org markup generated by %1$s (%2$s)"
2246
+ msgstr ""
2247
+
2248
+ #: modules/rich-snippets/rich-snippets.php:342
2249
+ msgid "Standard"
2250
+ msgstr ""
2251
+
2252
+ #: modules/rich-snippets/rich-snippets.php:345
2253
+ msgid "Search Result Type:"
2254
+ msgstr ""
2255
+
2256
+ #: modules/rich-snippets/rich-snippets.php:350
2257
  msgid "Name of Reviewed Item:"
2258
  msgstr ""
2259
 
2260
+ #: modules/rich-snippets/rich-snippets.php:354
2261
  msgid "0.5 stars"
2262
  msgstr ""
2263
 
2264
+ #: modules/rich-snippets/rich-snippets.php:355
2265
  msgid "1 star"
2266
  msgstr ""
2267
 
2268
+ #: modules/rich-snippets/rich-snippets.php:356
2269
  msgid "1.5 stars"
2270
  msgstr ""
2271
 
2272
+ #: modules/rich-snippets/rich-snippets.php:357
2273
  msgid "2 stars"
2274
  msgstr ""
2275
 
2276
+ #: modules/rich-snippets/rich-snippets.php:358
2277
  msgid "2.5 stars"
2278
  msgstr ""
2279
 
2280
+ #: modules/rich-snippets/rich-snippets.php:359
2281
  msgid "3 stars"
2282
  msgstr ""
2283
 
2284
+ #: modules/rich-snippets/rich-snippets.php:360
2285
  msgid "3.5 stars"
2286
  msgstr ""
2287
 
2288
+ #: modules/rich-snippets/rich-snippets.php:361
2289
  msgid "4 stars"
2290
  msgstr ""
2291
 
2292
+ #: modules/rich-snippets/rich-snippets.php:362
2293
  msgid "4.5 stars"
2294
  msgstr ""
2295
 
2296
+ #: modules/rich-snippets/rich-snippets.php:363
2297
  msgid "5 stars"
2298
  msgstr ""
2299
 
2300
+ #: modules/rich-snippets/rich-snippets.php:364
2301
  msgid "Star Rating for Reviewed Item:"
2302
  msgstr ""
2303
 
2304
+ #: modules/rich-snippets/rich-snippets.php:370
2305
+ msgid "Street Address:"
2306
+ msgstr ""
2307
+
2308
+ #: modules/rich-snippets/rich-snippets.php:371
2309
+ msgid "Post Office Box Number:"
2310
+ msgstr ""
2311
+
2312
+ #: modules/rich-snippets/rich-snippets.php:372
2313
+ msgid "City:"
2314
+ msgstr ""
2315
+
2316
+ #: modules/rich-snippets/rich-snippets.php:373
2317
+ msgid "State or Region:"
2318
+ msgstr ""
2319
+
2320
+ #: modules/rich-snippets/rich-snippets.php:374
2321
+ msgid "Country:"
2322
+ msgstr ""
2323
+
2324
+ #: modules/rich-snippets/rich-snippets.php:375
2325
+ msgid "Postal Code:"
2326
+ msgstr ""
2327
+
2328
+ #: modules/rich-snippets/rich-snippets.php:376
2329
+ msgid "Address:"
2330
+ msgstr ""
2331
+
2332
+ #: modules/rich-snippets/rich-snippets.php:377
2333
+ msgid "Map Page:"
2334
+ msgstr ""
2335
+
2336
+ #: modules/rich-snippets/rich-snippets.php:378
2337
+ msgid "Phone Number:"
2338
+ msgstr ""
2339
+
2340
+ #: modules/rich-snippets/rich-snippets.php:379
2341
+ msgid "Fax Number:"
2342
+ msgstr ""
2343
+
2344
+ #: modules/rich-snippets/rich-snippets.php:380
2345
+ msgid "Photo:"
2346
+ msgstr ""
2347
+
2348
+ #: modules/rich-snippets/rich-snippets.php:391
2349
  msgid ""
2350
  "\r\n"
2351
  "<ul>\r\n"
2373
  "</ul>\r\n"
2374
  msgstr ""
2375
 
2376
+ #: modules/rich-snippets/rich-snippets.php:402
2377
  msgid ""
2378
  "\r\n"
2379
  "<ul>\r\n"
 
 
 
 
 
 
2380
  "\t<li><strong>Categories/Tags That Indicate Reviews</strong> &mdash; If you "
2381
  "haven&#8217;t set the &#8220;Rich Snippet Type&#8221; setting for an old "
2382
  "post or page, then Rich Snippet Creator will automatically set its default "
2387
  "</ul>\r\n"
2388
  msgstr ""
2389
 
2390
+ #: modules/rich-snippets/rich-snippets.php:411
2391
  msgid ""
2392
  "\r\n"
2393
  "<ul>\r\n"
2414
  msgid "SEO Design Solutions Whitepapers"
2415
  msgstr ""
2416
 
2417
+ #. #-#-#-#-# plugin.pot (SEO Ultimate 7.5) #-#-#-#-#
2418
  #. Author of the plugin/theme
2419
  #: modules/sds-blog/sds-blog.php:49
2420
  msgid "SEO Design Solutions"
2730
  msgid "SEO Ultimate Plugin Settings"
2731
  msgstr ""
2732
 
2733
+ #. #-#-#-#-# plugin.pot (SEO Ultimate 7.5) #-#-#-#-#
2734
  #. Plugin Name of the plugin/theme
2735
  #: modules/settings/settings.php:26 plugin/class.seo-ultimate.php:861
2736
  msgid "SEO Ultimate"
2832
  msgstr ""
2833
 
2834
  #: modules/sharing-buttons/sharing-buttons.php:12
2835
+ #: modules/sharing-buttons/sharing-buttons.php:71
2836
  msgid "Sharing Facilitator"
2837
  msgstr ""
2838
 
2840
  msgid "Bookmark and Share"
2841
  msgstr ""
2842
 
2843
+ #: modules/sharing-buttons/sharing-buttons.php:40
2844
+ msgid "None; disable sharing buttons"
2845
  msgstr ""
2846
 
2847
  #: modules/sharing-buttons/sharing-buttons.php:41
2848
+ msgid "Use the ShareThis button"
2849
  msgstr ""
2850
 
2851
  #: modules/sharing-buttons/sharing-buttons.php:42
2852
+ msgid "Use the AddThis button"
2853
  msgstr ""
2854
 
2855
  #: modules/sharing-buttons/sharing-buttons.php:43
2856
+ msgid "Which provider would you like to use for your sharing buttons?"
2857
  msgstr ""
2858
 
2859
+ #: modules/sharing-buttons/sharing-buttons.php:72
2860
  msgid ""
2861
  "\r\n"
2862
  "<ul>\r\n"
2876
  msgid "Slug Optimizer"
2877
  msgstr ""
2878
 
2879
+ #: modules/slugs/slugs.php:19
2880
  msgid "Words to Remove"
2881
  msgstr ""
2882
 
2883
+ #: modules/slugs/slugs.php:79
2884
  msgid ""
2885
  "\r\n"
2886
  "<ul>\r\n"
2900
  "</ul>\r\n"
2901
  msgstr ""
2902
 
2903
+ #: modules/slugs/slugs.php:90
2904
  msgid ""
2905
  "\r\n"
2906
  "<ul>\r\n"
2936
  "</ul>\r\n"
2937
  msgstr ""
2938
 
2939
+ #: modules/slugs/slugs.php:110
2940
  msgid ""
2941
  "\r\n"
2942
  "<ul>\r\n"
3403
  msgid "SEO Ultimate Widgets"
3404
  msgstr ""
3405
 
3406
+ #: modules/widgets/widgets.php:46
3407
  msgid ""
3408
  "On category archives, displays a list of child categories and/or posts in "
3409
  "the category. Displays a list of top-level categories everywhere else. "
3410
  "Powered by the SEO Ultimate plugin."
3411
  msgstr ""
3412
 
3413
+ #: modules/widgets/widgets.php:47
3414
  msgid "Siloed Categories"
3415
  msgstr ""
3416
 
3417
+ #: modules/widgets/widgets.php:61
3418
  msgid "Tags"
3419
  msgstr ""
3420
 
3421
+ #: modules/widgets/widgets.php:144
3422
  msgid "Show post counts"
3423
  msgstr ""
3424
 
3425
+ #: modules/widgets/widgets.php:146
3426
  msgid "Use term descriptions in title attributes"
3427
  msgstr ""
3428
 
3429
+ #: modules/widgets/widgets.php:148
3430
  msgid "Taxonomy:"
3431
  msgstr ""
3432
 
3433
+ #: modules/widgets/widgets.php:173
3434
  msgid ""
3435
  "Add this widget to display Deeplink Juggernaut&#8217;s Footer Links in a "
3436
  "widget area of your choosing rather than the default wp_footer section. "
3437
  "Powered by the SEO Ultimate plugin."
3438
  msgstr ""
3439
 
3440
+ #: modules/widgets/widgets.php:227
3441
  msgid "Title: <em>(optional)</em>"
3442
  msgstr ""
3443
 
3444
+ #: modules/widgets/widgets.php:231
3445
  msgid "Display as a list"
3446
  msgstr ""
3447
 
3448
+ #: modules/widgets/widgets.php:234
3449
  msgid "Use my <a href=\"%s\" target=\"_blank\">footer link HTML formats</a>"
3450
  msgstr ""
3451