diff --git a/i18n_variable/i18n_variable.class.inc b/i18n_variable/i18n_variable.class.inc
new file mode 100644
index 0000000..4feef59
--- /dev/null
+++ b/i18n_variable/i18n_variable.class.inc
@@ -0,0 +1,43 @@
+ $variable) {
+ if (!empty($variable['localize']) || in_array($name, $conf)) {
+ $translatable[] = $name;
+ }
+ }
+ return $translatable;
+ }
+ /**
+ * Implementation of VariableRealmControllerInterface::getDefaultKey().
+ */
+ public function getDefaultKey() {
+ // The default key will match the default language.
+ return language_default('language');
+ }
+ /**
+ * Implementation of VariableRealmControllerInterface::getRequestKey().
+ */
+ public function getRequestKey() {
+ return i18n_variable_language()->language;
+ }
+ /**
+ * Implementation of VariableRealmControllerInterface::getAllKeys().
+ */
+ public function getAllKeys() {
+ return locale_language_list('name', TRUE);
+ }
+}
diff --git a/i18n_variable/i18n_variable.info b/i18n_variable/i18n_variable.info
index 3e970ff..a29b979 100644
--- a/i18n_variable/i18n_variable.info
+++ b/i18n_variable/i18n_variable.info
@@ -7,4 +7,5 @@ package = Multilingual - Internationalization
core = 7.x
configure = admin/config/regional/i18n/variable
-files[] = i18n_variable.test
\ No newline at end of file
+files[] = i18n_variable.class.inc
+files[] = i18n_variable.test
diff --git a/i18n_variable/i18n_variable.module b/i18n_variable/i18n_variable.module
index 61428eb..9de1948 100644
--- a/i18n_variable/i18n_variable.module
+++ b/i18n_variable/i18n_variable.module
@@ -14,17 +14,28 @@ define('I18N_VARIABLE_LANGUAGE_TYPE', 'language_variable');
*/
function i18n_variable_language_init() {
if (drupal_multilingual()) {
- i18n_variable_initialize();
+ variable_realm_initialize('language');
}
}
/**
- * Implements hook_variable_realm_controller().
+ * Implements hook_variable_realm_info().
*/
-function i18n_variable_variable_realm_controller() {
+function i18n_variable_variable_realm_info() {
$realm['language'] = array(
+ 'title' => t('Language'),
'weight' => 100,
- 'class' => 'VariableStoreRealmController',
+ 'controller class' => 'I18nVariableLanguageRealm',
+ 'store class' => 'VariableStoreRealmStore',
+ // Variables for this realm can be selected from a list.
+ 'select' => TRUE,
+ 'select path' => 'admin/config/regional/i18n/variable',
+ // Name for variables that belong to this realm: 'multilingual' variable/s
+ 'variable name' => t('multilingual'),
+ 'variable class' => 'i18n-variable',
+ // Automatically handle these variables in system settings forms.
+ 'form settings' => TRUE,
+ 'form switcher' => TRUE,
);
return $realm;
}
@@ -46,17 +57,6 @@ function i18n_variable_menu() {
return $items;
}
-/**
- * Initialization of multilingual variables.
- *
- * @param $langcode
- * Language to retrieve variables. Defaults to current language.
- */
-function i18n_variable_initialize($language = NULL) {
- $language = $language ? $language : i18n_variable_language();
- $GLOBALS[I18N_VARIABLE_LANGUAGE_TYPE] = $language;
- variable_realm_switch('language', $language->language);
-}
/**
* Get variables language, make sure it is initialized
@@ -77,61 +77,6 @@ function i18n_variable_global($name = NULL, $default = NULL) {
}
/**
- * Implements hook_variable_settings_form_alter();
- *
- * This is the place to add language fields to all forms.
- */
-/*
-function i18n_variable_variable_settings_form_alter(&$form, &$form_state, $form_id) {
- // Multilingual variables in settings form.
- if ($variables = i18n_variable_list()) {
- if ($form_id == 'system_theme_settings') {
- // Special treatment for theme settings
- if (!empty($form['var']) && !empty($form['var']['#value']) && in_array($form['var']['#value'], $variables)) {
- $variables = element_children($form['theme_settings']);
- $variables = array_merge($variables, array('default_logo', 'logo_path', 'default_favicon', 'favicon_path'));
- i18n_variable_form_alter_settings($form, $variables);
- // Replace variable (theme) name so we use a temporary storage variable
- $form['#i18n_variable'] = $form['var']['#value'];
- $form['var']['#value'] = 'i18n_variable_theme_settings';
- $form['#submit'][] = 'i18n_variable_theme_form_submit';
- $form += i18n_variable_form_selector();
- }
- }
- elseif ($i18n_variables = i18n_variable_form_alter_settings($form, $variables)) {
- array_unshift($form['#submit'], 'i18n_variable_form_submit');
- $form['#i18n_variables'] = $i18n_variables;
- $form += i18n_variable_form_selector();
- }
- }
-}
-*/
-/**
- * Variable form language switcher
- */
-/*
-function i18n_variable_form_selector() {
- $current = i18n_variable_language();
- $form['i18n_variable'] = array(
- '#type' => 'fieldset',
- '#weight' => -100,
- '#title' => t('There are multilingual variables in this form.'),
- '#description' => t('Check you are editing the variables for the right language or select the desired one. To enable more multilingual variables visit multilingual variables configuration.', array('@i18n-variable-admin' => url('admin/config/regional/i18n/variable'))),
- );
- $form['i18n_variable']['i18n_variable_language'] = array('#type' => 'value', '#value' => $current);
- foreach (language_list() as $language) {
- $link = l($language->name, $_GET['q'], array('query' => array('i18n_variable_language' => $language->language)));
- $items[] = $current->language == $language->language ? '' . $link . '' : $link;
- }
- $form['i18n_variable']['i18n_language_select'] = array(
- '#title' => t('Select language'),
- '#type' => 'item',
- '#markup' => implode(' | ', $items),
- );
- return $form;
-}
-*/
-/**
* Get list of multilingual variables or check whether a variable is multilingual
*/
function i18n_variable_list($name = NULL) {
@@ -160,79 +105,6 @@ function i18n_variable_load($langcode) {
}
/**
- * Check for multilingual variables in form.
- */
-/*
-function i18n_variable_form_alter_settings(&$form, $variables) {
- $result = array();
- foreach (element_children($form) as $field) {
- $output = '';
- if (count(element_children($form[$field])) && empty($form[$field]['#tree'])) {
- $result += i18n_variable_form_alter_settings($form[$field], $variables);
- }
- elseif (in_array($field, $variables)) {
- // Add form field class (i18n-variable) and description text.
- $form[$field]['#attributes']['class'][] = 'i18n-variable';
- $form[$field]['#description'] = !empty($form[$field]['#description']) ? $form[$field]['#description'] : '';
- $form[$field]['#description'] .= ' ' . t('This is a multilingual variable.') . ' ' . $output;
- // Addd field => name to result
- $result[$field] = !empty($form[$field]['#title']) ? $form[$field]['#title'] : $field;
- }
- }
- return $result;
-}
-*/
-/**
- * Save multilingual variables and remove them from form.
- */
-/*
-function i18n_variable_form_submit($form, &$form_state) {
- $op = isset($form_state['values']['op']) ? $form_state['values']['op'] : '';
- $language = i18n_language($form_state['values']['i18n_variable_language']);
- unset($form_state['values']['i18n_variable_language']);
- $variables = array_keys($form['#i18n_variables']);
- foreach ($variables as $name) {
- if (isset($form_state['values'][$name])) {
- if ($op == t('Reset to defaults')) {
- i18n_variable_del($name, $language->language);
- }
- else {
- $value = $form_state['values'][$name];
- if (is_array($value) && isset($form_state['values']['array_filter'])) {
- $value = array_keys(array_filter($value));
- }
- i18n_variable_set($name, $value, $language->language);
- }
- // If current is not default language, we don't set any global variable (without language)
- if ($language->language != language_default('language')) {
- unset($form_state['values'][$name]);
- }
- }
- }
- // The form will go now through system_settings_form_submit()
-}
-*/
-
-/**
- * Save multilingual variables and remove them from form.
- *
- * Note the theme variable has already been set into 'i18n_variable_theme_settings'
- */
-/*
-function i18n_variable_theme_form_submit($form, &$form_state) {
- $language = i18n_language($form_state['values']['i18n_variable_language']);
- unset($form_state['values']['i18n_variable_language']);
- $settings = variable_get('i18n_variable_theme_settings');
- $name = $form['#i18n_variable'];
- i18n_variable_set($name, $settings, $language->language);
- // If current is default language, we allow global (without language) variables to be set too
- if ($language->language == language_default('language')) {
- variable_set($name, $settings);
- }
- variable_del('i18n_variable_theme_settings');
-}
-*/
-/**
* Set a persistent language dependent variable.
*
* @param $name
diff --git a/i18n_variable/i18n_variable.variable.inc b/i18n_variable/i18n_variable.variable.inc
index 4957ac0..e4c6705 100644
--- a/i18n_variable/i18n_variable.variable.inc
+++ b/i18n_variable/i18n_variable.variable.inc
@@ -21,41 +21,5 @@ function i18n_variable_variable_info($options = array()) {
return $variables;
}
-/**
- * Implements hook_variable_realm_keys()
- */
-function i18n_variable_variable_realm_info() {
- $realm['language'] = array(
- 'title' => t('Language'),
- 'keys' => locale_language_list('name', TRUE),
- // The default key will match the default language.
- 'default key' => language_default('language'),
- // Array of variable names that may be set for this realm.
- 'options' => _i18n_variable_variable_realm_list(),
- // Variables for this realm can be selected from a list.
- 'select' => TRUE,
- 'select path' => 'admin/config/regional/i18n/variable',
- // Name for variables that belong to this realm: 'multilingual' variable/s
- 'variable name' => t('multilingual'),
- 'variable class' => 'i18n-variable',
- // Automatically handle these variables in system settings forms.
- 'form settings' => TRUE,
- 'form switcher' => TRUE,
- );
- return $realm;
-}
-/**
- * List variables that can be made multilingual.
- */
-function _i18n_variable_variable_realm_list() {
- $translatable = array();
- $conf = variable_get('i18n_variables', array());
- foreach (variable_get_info() as $name => $variable) {
- if (!empty($variable['localize']) || in_array($name, $conf)) {
- $translatable[] = $name;
- }
- }
- return $translatable;
-}