diff --git a/modules/comment.page_title.inc b/modules/comment.page_title.inc
index 91e83d9..180b4ba 100644
--- a/modules/comment.page_title.inc
+++ b/modules/comment.page_title.inc
@@ -33,6 +33,10 @@ function comment_page_title_alter(&$title) {
function comment_page_title_pattern_alter(&$pattern, &$types) {
// Comment reply page
if (arg(0) == 'comment' && arg(1) == 'reply' && is_numeric(arg(2))) {
+ global $language;
+ // Keys
+ $default_comment_child_reply_pattern_key = 'page_title_comment_child_reply';
+ $default_comment_reply_pattern_key = 'page_title_comment_reply';
// The node ID position is in arg 2...
$types['node'] = menu_get_object('node', 2);
@@ -46,11 +50,13 @@ function comment_page_title_pattern_alter(&$pattern, &$types) {
if (($pid = arg(3)) && $comment = _comment_load($pid)) {
// Reply to comment...
$types['comment'] = $comment;
- $pattern = variable_get('page_title_comment_child_reply', '');
+ $lang_pattern_key = !empty($language) ? $default_comment_child_reply_pattern_key . '_' . $language->language : $default_comment_child_reply_pattern_key;
+ $pattern = variable_get($lang_pattern_key, '');
}
else {
// Reply to node...
- $pattern = variable_get('page_title_comment_reply', '');
+ $lang_pattern_key = !empty($language) ? $default_comment_reply_pattern_key . '_' . $language->language : $default_comment_reply_pattern_key;
+ $pattern = variable_get($lang_pattern_key, '');
}
}
}
diff --git a/modules/forum.page_title.inc b/modules/forum.page_title.inc
index ca4658c..a38f03c 100644
--- a/modules/forum.page_title.inc
+++ b/modules/forum.page_title.inc
@@ -25,17 +25,25 @@ function forum_page_title_alter(&$title) {
* Implementation of hook_page_title_pattern_alter().
*/
function forum_page_title_pattern_alter(&$pattern, &$types) {
+ global $language;
+
+ // Setting up keys
+ $default_forum_vocab_pattern_key = 'page_title_vocab';
+ $default_forum_root_pattern_key = 'page_title_forum_root_title';
+
// Forums Page title Patterns
if (arg(0) == 'forum') {
// If there is a numeric argument, then we're viewing a container or forum
if (is_numeric(arg(1))) {
$types['taxonomy'] = taxonomy_get_term(arg(1));
$forum_vid = variable_get('forum_nav_vocabulary', '');
- $pattern = variable_get('page_title_vocab_'. $forum_vid, '');
+ $lang_pattern_key = !empty($language) ? $default_forum_vocab_pattern_key . '_' . $forum_vid . '_' . $language->language : $default_forum_vocab_pattern_key;
+ $pattern = variable_get($lang_pattern_key, '');
}
// Otherwise its the root - lets grab the root pattern.
else {
- $pattern = variable_get('page_title_forum_root_title', '');
+ $lang_pattern_key = !empty($language) ? $default_forum_root_pattern_key . '_' . $language->language : $default_forum_root_pattern_key;
+ $pattern = variable_get($lang_pattern_key, '');
}
}
}
diff --git a/modules/node.page_title.inc b/modules/node.page_title.inc
index e67a572..7e868ec 100644
--- a/modules/node.page_title.inc
+++ b/modules/node.page_title.inc
@@ -30,12 +30,13 @@ function node_page_title_pattern_alter(&$pattern, &$types) {
if ((arg(0) == 'node' && is_numeric(arg(1)))) {
$types['node'] = menu_get_object();
+ $default_pattern_key = 'page_title_type_'. $types['node']->type;
+ $lang_pattern_key = !empty($types['node']->language) ? $default_pattern_key . '_' . $types['node']->language : $default_pattern_key;
+ $pattern = variable_get($lang_pattern_key, '');
// If the node has any taxonomy, grab the first time and pass it over to be passed as a token.
// TODO: Handle multiple terms? Only pass specific terms per content type?
if (!empty($types['node']->taxonomy)) {
$types['taxonomy'] = current($types['node']->taxonomy);
}
-
- $pattern = variable_get('page_title_type_'. $types['node']->type, '');
}
}
diff --git a/modules/page_title.page_title.inc b/modules/page_title.page_title.inc
index cd03e37..8af2489 100644
--- a/modules/page_title.page_title.inc
+++ b/modules/page_title.page_title.inc
@@ -29,7 +29,18 @@ function page_title_page_title_alter(&$title) {
function page_title_page_title_pattern_alter(&$pattern, &$data = array()) {
// If frontpage, then use the frontpage pattern and set the title.
if (drupal_is_front_page()) {
- // Get the frontpage pattern
- $pattern = variable_get('page_title_front', '[site-name] | [site-slogan]');
+ global $language;
+
+ // Setting up keys
+ $default_pattern_key = 'page_title_front';
+ $lang_pattern_key = 'page_title_front'. '_' . $language->language;
+
+ // Get pattern
+ $pattern = variable_get($lang_pattern_key, '');
+
+ // Fallback for frontpage
+ if (empty($pattern)) {
+ $pattern = variable_get($default_pattern_key, '[page-title] | [site-name]');
+ }
}
}
diff --git a/modules/taxonomy.page_title.inc b/modules/taxonomy.page_title.inc
index ae86426..bd95fa1 100644
--- a/modules/taxonomy.page_title.inc
+++ b/modules/taxonomy.page_title.inc
@@ -27,7 +27,10 @@ function taxonomy_page_title_alter(&$title) {
function taxonomy_page_title_pattern_alter(&$pattern, &$types) {
// Taxonomy Term Page
if (arg(0) == 'taxonomy' && arg(1) == 'term' && is_numeric(arg(2)) && module_exists('taxonomy')) {
+ global $language;
$types['taxonomy'] = taxonomy_get_term(arg(2));
- $pattern = variable_get('page_title_vocab_'. $types['taxonomy']->vid, '');
+ $default_taxonomy_pattern_key = 'page_title_vocab' . '_' . $types['taxonomy']->vid;
+ $lang_key = $default_taxonomy_pattern_key . '_' . $language->language;
+ $pattern = variable_get($lang_key, '');
}
}
diff --git a/modules/user.page_title.inc b/modules/user.page_title.inc
index 1b96364..2301689 100644
--- a/modules/user.page_title.inc
+++ b/modules/user.page_title.inc
@@ -24,14 +24,20 @@ function user_page_title_alter(&$title) {
* Implementation of hook_page_title_pattern_alter().
*/
function user_page_title_pattern_alter(&$pattern, &$types) {
- // User
+ global $language;
+ // Setting up keys
+ $default_user_pattern_key = 'page_title_user';
+ $default_blog_pattern_key = 'page_title_blog';
+ $lang_pattern_user_key = !empty($language) ? $default_user_pattern_key . '_' . $language->language : $default_user_pattern_key;
+ $lang_pattern_blog_key = !empty($language) ? $default_blog_pattern_key . '_' . $language->language : $default_blog_pattern_key;
if (arg(0) == 'user' && is_numeric(arg(1))) {
+ // User
$types['user'] = user_load(array('uid' => arg(1)));
- $pattern = variable_get('page_title_user', '');
+ $pattern = variable_get($lang_pattern_user_key, '');
}
- // Blog
elseif (arg(0) == 'blog' && is_numeric(arg(1))) {
+ // Blog
$types['user'] = user_load(array('uid' => arg(1)));
- $pattern = variable_get('page_title_blog', '');
+ $pattern = variable_get($lang_pattern_blog_key, '');
}
}
diff --git a/modules/views.page_title.inc b/modules/views.page_title.inc
index 23b560d..c799284 100644
--- a/modules/views.page_title.inc
+++ b/modules/views.page_title.inc
@@ -1,5 +1,5 @@
drupal_render($title), 'class' => 'page-type'),
+ array('data' => drupal_render($form['language'][$key]), 'class' => 'language'),
array('data' => drupal_render($form['scope'][$key]), 'class' => 'scope'),
);
if (isset($form['showfield'][$key .'_showfield'])) {
$row[] = array('data' => drupal_render($form['pattern'][$key]), 'class' => 'pattern');
- $row[] = array('data' => drupal_render($form['showfield'][$key .'_showfield']), 'class' => 'showfield');
}
else {
$row[] = array('data' => drupal_render($form['pattern'][$key]), 'colspan' => 2, 'class' => 'pattern');
}
- $rows[] = $row;
+$rows[] = $row;
}
$headers = array(
array('data' => t('Page Type'), 'class' => 'page-type'),
+ array('data' => t('Language'), 'class' => 'language'),
array('data' => t('Token Scope'), 'class' => 'scope'),
array('data' => t('Pattern'), 'class' => 'pattern'),
- array('data' => t('Show Field'), 'class' => 'showfie;d'),
);
-
drupal_add_css(drupal_get_path('module', 'page_title') .'/page_title.admin.css', 'module', 'all', FALSE);
print theme('table', $headers, $rows, array('id' => 'page-title-settings'));
diff --git a/page_title.admin.css b/page_title.admin.css
index fd73b35..855f883 100644
--- a/page_title.admin.css
+++ b/page_title.admin.css
@@ -1,10 +1,16 @@
+table#page-title-settings thead th { text-align:center; }
+
table#page-title-settings th.showfield { text-align:center; }
-table#page-title-settings th.scope { text-align:center; }
-table#page-title-settings th.page-type { text-align:right; }
+table#page-title-settings th.scope { text-align:left; }
+table#page-title-settings th.page-type { text-align:left; }
+table#page-title-settings th.language { text-align:left; }
+table#page-title-settings th.pattern { text-align:left; }
table#page-title-settings td.showfield { width:10%; text-align:center; }
-table#page-title-settings td.scope { text-align:center; }
-table#page-title-settings td.page-type { text-align:right; }
+table#page-title-settings td.scope { text-align:left; }
+table#page-title-settings td.language { text-align:left; }
+table#page-title-settings td.page-type { text-align:left; }
+table#page-title-settings td.pattern input { text-align:left; width: 95%;}
div.view-list-page-titles th.views-field-nid { width:5%; }
div.view-list-page-titles th.views-field-edit-node { width:20%; }
diff --git a/page_title.admin.inc b/page_title.admin.inc
index 5ef7c95..30c5d62 100644
--- a/page_title.admin.inc
+++ b/page_title.admin.inc
@@ -16,156 +16,156 @@ function page_title_admin_settings() {
// Define a default looking 'form element' for setting.
$showfield_form_element = array('#type' => 'checkbox', );
-
// Define a default looking 'form element' for setting.
$pattern_form_element = array(
'#type' => 'textfield',
- '#size' => 30,
+ '#size' => 50,
'#maxlength' => 256,
);
-
- // Set the theme callback for the patterns section
- $form['patterns'] = array(
+ // General form
+ $form['patterns']['general'] = array(
'#type' => 'fieldset',
- '#title' => t('Page Title Patterns'),
+ '#title' => t('General'),
+ '#description' => t('Default pattern will be used as a fallback (ie, when no other pattern is defined)'),
'#collapsible' => TRUE,
- '#theme' => 'page_title_admin_settings'
+ '#weight' => 0,
+ '#theme' => 'page_title_admin_settings',
+ 'showfield' => array(
+ '#type' => 'radios',
+ '#title' => t('Showfield settings'),
+ '#description' => t('Activating showfield will allow you to define custom page titles on page edit.'),
+ )
);
-
-
- // Define the basic scope column values
- $form['patterns']['scope'] = array(
- 'page_title_default' => array('#type' => 'markup', '#value' => t('Global'), ),
- 'page_title_front' => array('#type' => 'markup', '#value' => t('Global'), ),
- 'page_title_comment_reply' => array('#type' => 'markup', '#value' => t('Node'), ),
- 'page_title_comment_child_reply' => array('#type' => 'markup', '#value' => t('Node') .'
'. t('Comment'), ),
- 'page_title_pager_pattern' => array('#type' => 'markup', '#value' => t('Global'), ),
- 'page_title_user' => array('#type' => 'markup', '#value' => t('User'), ),
+ // Content types form
+ $form['patterns']['content_type'] = array(
+ '#type' => 'fieldset',
+ '#title' => t('Content Types'),
+ '#description' => t('The following patterns will be used on pages like /node/4'),
+ '#collapsible' => TRUE,
+ '#collapsed' => TRUE,
+ '#weight' => 1,
+ '#theme' => 'page_title_admin_settings',
+ 'showfield' => array(
+ '#type' => 'radios',
+ '#title' => t('Showfield settings'),
+ '#description' => t('Activating showfield will allow you to define custom page titles on page edit.'),
+ )
+ );
+ // Taxonomy form
+ $form['patterns']['taxonomy'] = array(
+ '#type' => 'fieldset',
+ '#title' => t('Taxonomy'),
+ '#description' => t('The following patterns will be used on pages like /taxonomy/term/4'),
+ '#collapsible' => TRUE,
+ '#collapsed' => TRUE,
+ '#weight' => 2,
+ '#theme' => 'page_title_admin_settings',
+ 'showfield' => array(
+ '#type' => 'radios',
+ '#title' => t('Showfield settings'),
+ '#description' => t('Activating showfield will allow you to define custom page titles on page edit.'),
+ )
+ );
+ // Specific form
+ $form['patterns']['specific'] = array(
+ '#type' => 'fieldset',
+ '#title' => t('More...'),
+ '#collapsible' => TRUE,
+ '#collapsed' => TRUE,
+ '#weight' => 3,
+ '#theme' => 'page_title_admin_settings',
);
+ // List of all enabled languages
+ if (module_exists('locale')) {
+ $langs = array('' => t('Language neutral')) + locale_language_list('name');
+ }
+ else {
+ $langs = array();
+ }
+
+ // Initialisation of specific settings of patterns
+ _page_title_init_patterns_options($patterns);
- // Define the 'default' token patterns
- $form['patterns']['pattern'] = array(
- //Define the default pattern - this is a "fallback" pattern.
- 'page_title_default' => array(
+ // GENERAL AND SPECIFIC PATTERNS
+ // default fallback pattern
+ $form['patterns']['general']['pattern']['page_title_default'] = array(
'#title' => t('Default'),
'#default_value' => variable_get('page_title_default', '[page-title] | [site-name]'),
'#required' => TRUE,
- '#description' => t('This pattern will be used as a fallback (ie, when no other pattern is defined)'),
- ) + $pattern_form_element,
-
- // Define the frontpage pattern. This is use on
- 'page_title_front' => array(
- '#title' => t('Frontpage'),
- '#default_value' => variable_get('page_title_front', '[site-name] | [site-slogan]'),
- '#description' => t('This pattern will be used for the site frontpage'),
- ) + $pattern_form_element,
-
- // Define the pager pattern. This is appended to any page requests containing 'page=[0-9]+' in the query string
- 'page_title_pager_pattern' => array(
- '#title' => t('Pager Suffix'),
- '#default_value' => variable_get('page_title_pager_pattern', ''),
- '#description' => t('This pattern will be appended to a page title for any given page with a pager on it'),
- ) + $pattern_form_element,
-
- // Define the comment reply pattern. This is used for a root comment reply (ie comment/[0-9]+).
- 'page_title_comment_reply' => array(
- '#title' => t('Comment Reply'),
- '#default_value' => variable_get('page_title_comment_reply', ''),
- '#description' => t('This pattern will be used for comment reply pages, where the reply is directly to a "node"'),
- ) + $pattern_form_element,
-
- // Define the comment reply to comment pattern. This is used for a reply to a comment (ie comment/[0-9]+/[0-9]+).
- 'page_title_comment_child_reply' => array(
- '#title' => t('Comment Child Reply'),
- '#default_value' => variable_get('page_title_comment_child_reply', ''),
- '#description' => t('This pattern with be used for comment reply pages where the reply is to an existing "comment" (eg a comment thread)'),
- ) + $pattern_form_element,
-
- // Define the user profile page pattern. This is used on any 'user/[0-9]' pages
- 'page_title_user' => array(
- '#title' => t('User Profile'),
- '#default_value' => variable_get('page_title_user', ''),
- '#description' => t('This pattern will be used for any user profile pages'),
- ) + $pattern_form_element,
- );
-
-
- // Define the "showfield" checkbox for the user profile page
- $form['patterns']['showfield']['page_title_user_showfield'] = array(
- '#default_value' => variable_get('page_title_user_showfield', 0),
- ) + $showfield_form_element;
-
-
- // Definate the patterns per-node-type
- $types = node_get_types();
- foreach ($types as $type) {
- // Define the node-type key
- $key = 'page_title_type_'. $type->type;
-
- // Pattern entry
- $form['patterns']['pattern'][$key] = array(
- '#title' => t('Content Type - %type', array('%type' => $type->name)),
- '#default_value' => variable_get($key, ''),
- '#description' => t('This pattern will be used for all %type node-type pages', array('%type' => $type->name)),
- ) + $pattern_form_element;
-
- $form['patterns']['showfield'][$key .'_showfield'] = array(
- '#default_value' => variable_get($key .'_showfield', 0),
+ ) + $pattern_form_element;
+ $form['patterns']['general']['scope']['page_title_default'] = array('#type' => 'markup', '#value' => t('Global'), );
+ $form['patterns']['general']['language']['page_title_default'] = array('#type' => 'markup', '#value' => t('All'), );
+ // generation of other patterns
+ if (count($langs)) {
+ foreach ($patterns as $key => $pattern) {
+ $group = $pattern['#group'];
+ // decide if showfield is needed
+ if (isset($pattern['#showfield']) && $pattern['#showfield'] == 1) {
+ $form['patterns']['general']['showfield'][$key . '_showfield'] = array(
+ '#title' => $pattern['#title'],
+ '#default_value' => variable_get($key . '_showfield', 0),
+ '#required' => TRUE,
+ ) + $showfield_form_element;
+ }
+ // generation of all patterns for each languages
+ foreach ($langs as $langcode => $langname) {
+ $lang_key = empty($langcode) ? $key : $key . '_' . $langcode;
+ if ((isset($pattern['#langneutral']) && $pattern['#langneutral'] == 1) || ($langcode != '')) {
+ $form['patterns'][$group]['pattern'][$lang_key] = array() + $pattern_form_element;
+ $form['patterns'][$group]['pattern'][$lang_key]['#title'] = $pattern['#title'];
+ $form['patterns'][$group]['scope'][$lang_key] = array('#type' => 'markup', '#value' => $pattern['#scope']);
+ $form['patterns'][$group]['pattern'][$lang_key]['#default_value'] = variable_get($lang_key, '');
+ $form['patterns'][$group]['language'][$lang_key] = array('#type' => 'markup', '#value' => t('%lang', array('%lang' => $langname)));
+ }
+ }
+ }
+ };
+
+ // CONTENT TYPES PATTERNS
+ foreach (node_get_types('names') as $node_type => $node_type_name) {
+ $key = 'page_title_type_' . $node_type;
+ $form['patterns']['content_type']['showfield'][$key . '_showfield'] = array(
+ '#title' => $node_type_name,
+ '#default_value' => variable_get($key . '_showfield', 0),
+ '#required' => TRUE,
) + $showfield_form_element;
-
- $form['patterns']['scope'][$key] = array('#type' => 'markup', '#value' => t('Node'), );
+ foreach ($langs as $langcode => $langname) {
+ $lang_key = empty($langcode) ? $key : $key . '_' . $langcode;
+ $form['patterns']['content_type']['pattern'][$lang_key] = array() + $pattern_form_element;
+ if (empty($langcode)) {
+ $form['patterns']['content_type']['pattern'][$lang_key]['#title'] = t('%title', array('%title' => $node_type_name));
+ $form['patterns']['content_type']['scope'][$lang_key] = array('#type' => 'markup', '#value' => t('Node'));
+ }
+ $form['patterns']['content_type']['pattern'][$lang_key]['#default_value'] = variable_get($lang_key, '');
+ $form['patterns']['content_type']['language'][$lang_key] = array('#type' => 'markup', '#value' => t('%lang', array('%lang' => $langname)));
+ }
}
-
- // Definate the patterns per-vocab-type - if Taxonomy Module is enabled
+ // TAXONOMY PATTERNS
if (module_exists('taxonomy')) {
- $vocabs = taxonomy_get_vocabularies();
- foreach ($vocabs as $vocab) {
- // Define the vocab key
- $key = 'page_title_vocab_'. $vocab->vid;
-
- // Pattern entry
- $form['patterns']['pattern'][$key] = array(
- '#title' => t('Vocabulary - %vocab_name', array('%vocab_name' => $vocab->name)),
- '#default_value' => variable_get($key, ''),
- '#description' => t('This pattern will be used for all %title term pages', array('%title' => $vocab->name)),
- ) + $pattern_form_element;
-
- $form['patterns']['showfield'][$key .'_showfield'] = array(
- '#default_value' => variable_get($key .'_showfield', 0),
- ) + $showfield_form_element;
-
- $form['patterns']['scope'][$key] = array('#type' => 'markup', '#value' => t('Taxonomy'), );
+ $vocabularies = taxonomy_get_vocabularies();
+ if (sizeof($vocabularies) > 0) {
+ foreach ($vocabularies as $vocab) {
+ $key = 'page_title_vocab_' . $vocab->vid;
+ $form['patterns']['taxonomy']['showfield'][$key . '_showfield'] = array(
+ '#title' => $vocab->name,
+ '#default_value' => variable_get($key . '_showfield', 0),
+ '#required' => TRUE,
+ ) + $showfield_form_element;
+ foreach ($langs as $langcode => $langname) {
+ $lang_key = empty($langcode) ? $key : $key . '_' . $langcode;
+ $form['patterns']['taxonomy']['pattern'][$lang_key] = array() + $pattern_form_element;
+ $form['patterns']['taxonomy']['pattern'][$lang_key]['#title'] = t('%title', array('%title' => $vocab->name));
+ $form['patterns']['taxonomy']['scope'][$lang_key] = array('#type' => 'markup', '#value' => t('Taxonomy'));
+ $form['patterns']['taxonomy']['pattern'][$lang_key]['#default_value'] = variable_get($lang_key, '');
+ $form['patterns']['taxonomy']['language'][$lang_key] = array('#type' => 'markup', '#value' => t('%lang', array('%lang' => $langname)));
+ }
+ }
}
}
-
- // Add the blog homepage pattern field
- if (module_exists('blog')) {
- $key = 'page_title_blog';
- $form['patterns']['pattern'][$key] = array(
- '#title' => t('Blog Homepage'),
- '#default_value' => variable_get($key, ''),
- '#description' => t('This pattern will be used for a users blog page (ie /blog/1)'),
- ) + $pattern_form_element;
-
- $form['patterns']['scope'][$key] = array('#type' => 'markup', '#value' => t('User'), );
- }
-
-
- // Add the forum root pattern field
- if (module_exists('forum')) {
- $form['patterns']['pattern']['page_title_forum_root_title'] = array(
- '#title' => t('Forum Root'),
- '#default_value' => variable_get('page_title_forum_root_title', ''),
- '#description' => t('This pattern will be used on the forum root page (ie, /forum)'),
- ) + $pattern_form_element;
- $form['patterns']['scope']['page_title_forum_root_title'] = array('#type' => 'markup', '#value' => t('Global'));
- }
-
-
// Add the token help to a collapsed fieldset at the end of the configuration page.
$form['token_help'] = array(
'#type' => 'fieldset',
@@ -182,3 +182,28 @@ function page_title_admin_settings() {
return system_settings_form($form);
}
+/**
+ * Initialisation of patterns' settings.
+ * These patterns have custom settings, and thus are not content types or vacabularies.
+ * - Only frontpage needs a language neutral page title
+ * - Showfield appears only on user profiles
+ * - Token scopes are different from one pattern to another
+ */
+function _page_title_init_patterns_options(&$patterns) {
+ $patterns = array(
+ 'page_title_front' => array('#title' => t('Frontpage'), '#group' => 'general', '#scope' => t('Global'), '#langneutral' => 1),
+ 'page_title_pager_pattern' => array('#title' => t('Pager'), '#group' => 'specific', '#scope' => t('Global')),
+ 'page_title_comment_reply' => array('#title' => t('Comment Reply'), '#group' => 'specific', '#scope' => t('Node')),
+ 'page_title_comment_child_reply' => array('#title' => t('Comment Child Reply'), '#group' => 'specific', '#scope' => t('Node Comment')),
+ );
+ if (module_exists('profile')) {
+ $patterns['page_title_user']=array('#title' => t('User Profile'), '#group' => 'general', '#scope' => 'User', '#showfield' => 1);
+ };
+ if (module_exists('blog')) {
+ $patterns['page_title_blog']=array('#title' => t('Blog'), '#group' => 'general', '#scope' => 'User');
+ };
+ if (module_exists('forum')) {
+ $patterns['page_title_forum_root_title']=array('#title' => t('Forum Root'), '#group' => 'general', '#scope' => 'Global');
+ };
+}
+
diff --git a/page_title.info b/page_title.info
index 3a6540d..dd70989 100644
--- a/page_title.info
+++ b/page_title.info
@@ -3,9 +3,9 @@ name = Page Title
description = "Enhanced control over the page title (in the <head> tag)."
dependencies[] = token
core = 6.x
-; Information added by drupal.org packaging script on 2010-11-02
+; Information added by drupal.org packaging script on 2010-08-26
version = "6.x-2.x-dev"
core = "6.x"
project = "page_title"
-datestamp = "1288657017"
+datestamp = "1282781730"
diff --git a/page_title.install b/page_title.install
index 12dc942..e95293f 100644
--- a/page_title.install
+++ b/page_title.install
@@ -11,7 +11,7 @@
*/
function page_title_install() {
drupal_install_schema('page_title');
- drupal_set_message(t('Page Title has been installed. Please go to Admin > Site Configuration > Page title to configure the settings for your site, or !link', array('!link' => l(t('click here'), 'admin/settings/page-title'))));
+ drupal_set_message(st('Page Title has been installed. Please go to Admin > Site Configuration > Page title to configure the settings for your site, or !link', array('!link' => l(st('click here'), 'admin/settings/page-title'))));
}
@@ -42,11 +42,11 @@ function page_title_update_6200() {
return $ret;
}
elseif (db_table_exists('page_title_temp') || db_table_exists('page_title_old')) {
- drupal_set_message(t('Page Title cannot be updated until page_title_temp and/or page_title_old have been removed. Please manually remove these tables (if safe to do so), return to update.php and run the remaining updates.', array('@update-php' => base_path() .'update.php?op=selection')), 'warning', FALSE);
+ drupal_set_message(st('Page Title cannot be updated until page_title_temp and/or page_title_old have been removed. Please manually remove these tables (if safe to do so), return to update.php and run the remaining updates.', array('@update-php' => base_path() .'update.php?op=selection')), 'warning', FALSE);
return array('#abort' => array(
'success' => FALSE,
- 'query' => t('It seems page_title_temp or page_title_old tables are already present in your database, possibly from a previous update. Please remove these tables from your database.')
+ 'query' => sst('It seems page_title_temp or page_title_old tables are already present in your database, possibly from a previous update. Please remove these tables from your database.')
));
}
diff --git a/page_title.module b/page_title.module
index 3f1411b..563f848 100644
--- a/page_title.module
+++ b/page_title.module
@@ -1,5 +1,5 @@
old_type;
+ $newkey_prefix = 'page_title_type_'. $info->type;
// Handle a content type rename
if ($op == 'update' && !empty($info->old_type) && $info->type != $info->old_type) {
- // Load the old node type settings.
- $temp = variable_get('page_title_type_'. $info->old_type, '');
-
- // If the settings aren't empty, then save them into the new type
- if (!empty($temp)) {
- variable_set('page_title_type_'. $info->type, $temp);
- }
-
- // Delete the old setting
- variable_del('page_title_type_'. $info->old_type);
-
- // Essentially, do the same as above but with the _showfield suffix for the node type
- $temp = variable_get('page_title_type_'. $info->old_type .'_showfield', 0);
+ // 1. Save showfield setting from old node type
+ $temp = variable_get($oldkey_prefix .'_showfield', 0);
if ($temp) {
- variable_set('page_title_type_'. $info->type .'_showfield', $temp);
+ variable_set($newkey_prefix .'_showfield', $temp);
}
- variable_del('page_title_type_'. $info->old_type .'_showfield');
-
+ variable_del($oldkey_prefix .'_showfield');
+ // 2. Save patterns of old node type for each languages available on the system
+ foreach ($langs as $langcode => $langname) {
+ // Key for the old and new node type per language
+ $oldkey_lang = $oldkey_prefix . '_' . $langcode;
+ $newkey_lang = $newkey_prefix . '_' . $langcode;
+ // Load the old node type setting
+ $temp = variable_get($oldkey_lang, '');
+ // If the setting is not empty, then save it with the new type
+ if (!empty($temp)) {
+ variable_set($newkey_lang, $temp);
+ }
+ // Delete the old setting
+ variable_del($oldkey_lang);
+ } // end foreach $alllangs
}
-
- // If deleted, remove the variables
+ // Handle a content type deletion
if ($op == 'delete') {
- variable_del('page_title_type_'. $info->type);
- variable_del('page_title_type_'. $info->type .'_showfield');
+ // Removing default pattern and showfield
+ variable_del($newkey_prefix);
+ variable_del($newkey_prefix .'_showfield');
+ // Removing patterns associated to a language
+ foreach ($langs as $langcode => $langname) {
+ $newkey_lang = $newkey_prefix . '_' . $langcode;
+ variable_del($newkey_lang);
+ }
}
}
@@ -150,10 +167,12 @@ function page_title_form_alter(&$form, $form_state, $form_id) {
// Check we're editing a node and also check that the node type's 'show field' is enabled
if ($form['#id'] == 'node-form') {
- $key = 'page_title_type_'. $form['type']['#value'] .'_showfield';
- if (variable_get($key, 0)) {
- $page_title = isset($form['#node']->page_title) ? $form['#node']->page_title : NULL;
-
+ $showfield_key = 'page_title_type_'. $form['type']['#value'] .'_showfield';
+ if (variable_get($showfield_key, 0)) {
+ $default_pattern_key = 'page_title_type_'. $form['type']['#value'];
+ // If a language exists for this node, we use the language related page title pattern, else we use the default pattern
+ $pattern_key = empty($form['#node']->language) ? $default_pattern_key : $default_pattern_key . '_' . $form['#node']->language;
+ $page_title = isset($form['#node']->page_title) ? $form['#node']->page_title : variable_get($pattern_key, NULL);
// If we have vertical tabs installed, we need to render the form element slightly differently
$show_vertical_tabs = FALSE;
if (module_exists('vertical_tabs')) {
@@ -166,7 +185,6 @@ function page_title_form_alter(&$form, $form_state, $form_id) {
$show_vertical_tabs = ($vt_conf = vertical_tabs_get_config($form_id)) && ($vt_conf['page_title'] !== 0);
}
}
-
// If we have decided to show vertical tabs, render the page_title element into a fieldset, otherwise just a textfield with a weight putting it at the top.
if ($show_vertical_tabs) {
$form['page_title'] = array(
@@ -283,6 +301,7 @@ function page_title_form_user_profile_form_alter(&$form, &$form_state) {
* Implementation of hook_form_FORM_ID_alter().
*/
function page_title_form_node_type_form_alter(&$form, &$form_state) {
+ $key = 'page_title_type_'. $form['#node_type']->type;
// Alter the node type form - allows easy access to the per-content type page title settings
$form['page_title'] = array(
'#type' => 'fieldset',
@@ -291,7 +310,6 @@ function page_title_form_node_type_form_alter(&$form, &$form_state) {
'#collapsed' => TRUE,
'#tree' => TRUE,
);
-
$form['page_title']['show_field'] = array(
'#type' => 'checkboxes',
'#title' => t('Page Title Field'),
@@ -299,16 +317,14 @@ function page_title_form_node_type_form_alter(&$form, &$form_state) {
'#options' => array(
'show_field' => t('Show field'),
),
- '#default_value' => variable_get('page_title_type_'. $form['#node_type']->type .'_showfield', 0) ? array('show_field') : array(),
+ '#default_value' => variable_get( $key .'_showfield', 0) ? array('show_field') : array(),
);
-
$form['page_title']['pattern'] = array(
'#type' => 'textfield',
'#title' => t('Page Title Pattern'),
- '#default_value' => variable_get('page_title_type_'. $form['#node_type']->type, ''),
+ '#default_value' => variable_get( $key , ''),
'#description' => t('Enter the Page Title pattern you want to use for this node type. For more information, please use the !link settings page', array('!link' => l('Page Title', 'admin/content/page_title'))),
);
-
$form['#submit'][] = 'page_title_node_type_form_submit';
}
@@ -317,10 +333,10 @@ function page_title_form_node_type_form_alter(&$form, &$form_state) {
* Submit handler for the node_type_form element added in the hook_form_alter() above.
*/
function page_title_node_type_form_submit($form, &$form_state) {
+ $key_type = 'page_title_type_'. $form_state['values']['type'];
$show_field = $form_state['values']['page_title']['show_field']['show_field'] ? 1 : 0;
- variable_set('page_title_type_'. $form_state['values']['type'] .'_showfield', $show_field);
- variable_set('page_title_type_'. $form_state['values']['type'], $form_state['values']['page_title']['pattern']);
-
+ variable_set($key_type .'_showfield', $show_field);
+ variable_set($key_type, $form_state['values']['page_title']['pattern']);
// For some reason the node module adds the fieldset as a separate entry in the variables table... we dont want this!
variable_del('page_title_'. $form_state['values']['type']);
}
@@ -441,7 +457,7 @@ function page_title_load_title($id, $type) {
/**
* Wrapper for old function...
- * NOTE: This has been depricated in favor of page_title_load_title().
+ * @deprecated Use page_title_load_title() instead.
*/
function page_title_node_get_title($nid) {
return page_title_load_title($nid, 'node');
@@ -450,7 +466,7 @@ function page_title_node_get_title($nid) {
/**
* Legacy page title setting function...
- * NOTE: This has been deprecated in favour of hook_page_title_alter().
+ * @deprecated Use hook_page_title_alter() instead.
*/
function page_title_set_title($title = NULL) {
static $stored_title;
@@ -496,7 +512,12 @@ function page_title_page_get_title($raw = FALSE) {
}
// Append the pattern for pages with a pager on them
- $page_title_pattern .= isset($_REQUEST['page']) ? variable_get('page_title_pager_pattern', '') : '';
+ if (isset($_REQUEST['page'])) {
+ global $language;
+ $default_key = 'page_title_pager_pattern';
+ $lang_key = empty($language->language) ? $default_key : $default_key . '_' . $language->language;
+ $page_title_pattern .= variable_get($lang_key, '');
+ }
// Apply token patterns by resetting the token cache first and then using token_replace_multiple to insert token values
token_get_values('global', NULL, TRUE);
@@ -589,7 +610,6 @@ function _page_title_build_views_keys($view_name, $display_id) {
return 'page_title-'. implode('-', array_filter(array($view_name, $display_id)));
}
-
/**
* Form Alter handler for the views ui config form (used for filters and args)
*/
@@ -731,7 +751,7 @@ function page_title_page_title_api() {
}
/**
- * Core implementations of hook_page_title_api().
+ * Implementation of hook_page_title_api().
*/
function taxonomy_page_title_api() { return page_title_page_title_api(); }
function node_page_title_api() { return page_title_page_title_api(); }