Merge branch '1400748-namespaces' into dbtngtng
commit
0ee2386bc0
|
@ -2293,7 +2293,7 @@ function _drupal_bootstrap_configuration() {
|
||||||
|
|
||||||
// Register explicit vendor namespaces.
|
// Register explicit vendor namespaces.
|
||||||
$loader->registerNamespaces(array(
|
$loader->registerNamespaces(array(
|
||||||
// All Symfony-borrowed code lives in /core/includes/Symfony.
|
// All Symfony-borrowed code lives in /core/vendor/Symfony.
|
||||||
'Symfony' => DRUPAL_ROOT . '/core/vendor',
|
'Symfony' => DRUPAL_ROOT . '/core/vendor',
|
||||||
));
|
));
|
||||||
// Register the Drupal namespace for classes in core as a fallback.
|
// Register the Drupal namespace for classes in core as a fallback.
|
||||||
|
@ -2303,7 +2303,7 @@ function _drupal_bootstrap_configuration() {
|
||||||
// namespace match based on a string comparison. It further allows modules to
|
// namespace match based on a string comparison. It further allows modules to
|
||||||
// register/overload namespaces in Drupal core.
|
// register/overload namespaces in Drupal core.
|
||||||
$loader->registerNamespaceFallbacks(array(
|
$loader->registerNamespaceFallbacks(array(
|
||||||
// All Drupal-namespaced code in core lives in /core/includes/Drupal.
|
// All Drupal-namespaced code in core lives in /core/lib/Drupal.
|
||||||
'Drupal' => DRUPAL_ROOT . '/core/lib',
|
'Drupal' => DRUPAL_ROOT . '/core/lib',
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
@ -2653,53 +2653,45 @@ function language_types() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a list of installed languages, indexed by the specified key.
|
* Returns a list of configured languages.
|
||||||
*
|
*
|
||||||
* @param $field
|
* @param $only_enabled
|
||||||
* (optional) The field to index the list with.
|
* (optional) Whether to return only enabled languages.
|
||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
* An associative array, keyed on the values of $field.
|
* An associative array of languages, keyed by the language code, ordered by
|
||||||
* - If $field is 'weight' or 'enabled', the array is nested, with the outer
|
* weight ascending and name ascending.
|
||||||
* array's values each being associative arrays with language codes as
|
|
||||||
* keys and language objects as values.
|
|
||||||
* - For all other values of $field, the array is only one level deep, and
|
|
||||||
* the array's values are language objects.
|
|
||||||
*/
|
*/
|
||||||
function language_list($field = 'langcode') {
|
function language_list($only_enabled = FALSE) {
|
||||||
$languages = &drupal_static(__FUNCTION__);
|
$languages = &drupal_static(__FUNCTION__);
|
||||||
// Init language list
|
// Initialize master language list.
|
||||||
if (!isset($languages)) {
|
if (!isset($languages)) {
|
||||||
|
// Initialize local language list caches.
|
||||||
|
$languages = array('all' => array(), 'enabled' => array());
|
||||||
|
|
||||||
|
// Fill in master language list based on current configuration.
|
||||||
$default = language_default();
|
$default = language_default();
|
||||||
if (language_multilingual() || module_exists('language')) {
|
if (language_multilingual() || module_exists('language')) {
|
||||||
$languages['langcode'] = db_query('SELECT * FROM {language} ORDER BY weight ASC, name ASC')->fetchAllAssoc('langcode');
|
// Use language module configuration if available.
|
||||||
|
$languages['all'] = db_query('SELECT * FROM {language} ORDER BY weight ASC, name ASC')->fetchAllAssoc('langcode');
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// No locale module, so use the default language only.
|
// No language module, so use the default language only.
|
||||||
$languages['langcode'][$default->langcode] = $default;
|
$languages['all'][$default->langcode] = $default;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Initialize default property so callers have an easy reference and
|
// Initialize default property so callers have an easy reference and can
|
||||||
// can save the same object without data loss.
|
// save the same object without data loss. Also fill in the filtered list
|
||||||
foreach ($languages['langcode'] as $langcode => $language) {
|
// of enabled languages only.
|
||||||
$languages['langcode'][$langcode]->default = ($langcode == $default->langcode);
|
foreach ($languages['all'] as $langcode => $language) {
|
||||||
|
$languages['all'][$langcode]->default = ($langcode == $default->langcode);
|
||||||
|
if ($language->enabled) {
|
||||||
|
$languages['enabled'][$langcode] = $languages['all'][$langcode];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return the array indexed by the right field
|
return $only_enabled ? $languages['enabled'] : $languages['all'];
|
||||||
if (!isset($languages[$field])) {
|
|
||||||
$languages[$field] = array();
|
|
||||||
foreach ($languages['langcode'] as $lang) {
|
|
||||||
// Some values should be collected into an array
|
|
||||||
if (in_array($field, array('enabled', 'weight'))) {
|
|
||||||
$languages[$field][$lang->$field][$lang->langcode] = $lang;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$languages[$field][$lang->$field] = $lang;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $languages[$field];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -3205,29 +3197,29 @@ function registry_update() {
|
||||||
*
|
*
|
||||||
* Example:
|
* Example:
|
||||||
* @code
|
* @code
|
||||||
* function language_list($field = 'langcode') {
|
* function example_list($field = 'default') {
|
||||||
* $languages = &drupal_static(__FUNCTION__);
|
* $examples = &drupal_static(__FUNCTION__);
|
||||||
* if (!isset($languages)) {
|
* if (!isset($examples)) {
|
||||||
* // If this function is being called for the first time after a reset,
|
* // If this function is being called for the first time after a reset,
|
||||||
* // query the database and execute any other code needed to retrieve
|
* // query the database and execute any other code needed to retrieve
|
||||||
* // information about the supported languages.
|
* // information.
|
||||||
* ...
|
* ...
|
||||||
* }
|
* }
|
||||||
* if (!isset($languages[$field])) {
|
* if (!isset($examples[$field])) {
|
||||||
* // If this function is being called for the first time for a particular
|
* // If this function is being called for the first time for a particular
|
||||||
* // index field, then execute code needed to index the information already
|
* // index field, then execute code needed to index the information already
|
||||||
* // available in $languages by the desired field.
|
* // available in $examples by the desired field.
|
||||||
* ...
|
* ...
|
||||||
* }
|
* }
|
||||||
* // Subsequent invocations of this function for a particular index field
|
* // Subsequent invocations of this function for a particular index field
|
||||||
* // skip the above two code blocks and quickly return the already indexed
|
* // skip the above two code blocks and quickly return the already indexed
|
||||||
* // information.
|
* // information.
|
||||||
* return $languages[$field];
|
* return $examples[$field];
|
||||||
* }
|
* }
|
||||||
* function locale_translate_overview_screen() {
|
* function examples_admin_overview() {
|
||||||
* // When building the content for the translations overview page, make
|
* // When building the content for the overview page, make sure to get
|
||||||
* // sure to get completely fresh information about the supported languages.
|
* // completely fresh information.
|
||||||
* drupal_static_reset('language_list');
|
* drupal_static_reset('example_list');
|
||||||
* ...
|
* ...
|
||||||
* }
|
* }
|
||||||
* @endcode
|
* @endcode
|
||||||
|
|
|
@ -329,9 +329,8 @@ function language_provider_invoke($provider_id, $provider = NULL) {
|
||||||
if (!isset($results[$provider_id])) {
|
if (!isset($results[$provider_id])) {
|
||||||
global $user;
|
global $user;
|
||||||
|
|
||||||
// Get languages grouped by status and select only the enabled ones.
|
// Get the enabled languages only.
|
||||||
$languages = language_list('enabled');
|
$languages = language_list(TRUE);
|
||||||
$languages = $languages[1];
|
|
||||||
|
|
||||||
if (!isset($provider)) {
|
if (!isset($provider)) {
|
||||||
$providers = language_negotiation_info();
|
$providers = language_negotiation_info();
|
||||||
|
@ -454,17 +453,8 @@ function language_fallback_get_candidates($type = LANGUAGE_TYPE_CONTENT) {
|
||||||
$fallback_candidates = &drupal_static(__FUNCTION__);
|
$fallback_candidates = &drupal_static(__FUNCTION__);
|
||||||
|
|
||||||
if (!isset($fallback_candidates)) {
|
if (!isset($fallback_candidates)) {
|
||||||
$fallback_candidates = array();
|
// Get languages ordered by weight, add LANGUAGE_NONE as the last one.
|
||||||
|
$fallback_candidates = array_keys(language_list());
|
||||||
// Get languages ordered by weight.
|
|
||||||
// Use array keys to avoid duplicated entries.
|
|
||||||
foreach (language_list('weight') as $languages) {
|
|
||||||
foreach ($languages as $language) {
|
|
||||||
$fallback_candidates[$language->langcode] = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$fallback_candidates = array_keys($fallback_candidates);
|
|
||||||
$fallback_candidates[] = LANGUAGE_NONE;
|
$fallback_candidates[] = LANGUAGE_NONE;
|
||||||
|
|
||||||
// Let other modules hook in and add/change candidates.
|
// Let other modules hook in and add/change candidates.
|
||||||
|
|
|
@ -349,14 +349,16 @@ function locale_language_url_fallback($language = NULL, $language_type = LANGUAG
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the URL language switcher block. Translation links may be provided by
|
* Return links for the URL language switcher block.
|
||||||
* other modules.
|
*
|
||||||
|
* Translation links may be provided by other modules.
|
||||||
*/
|
*/
|
||||||
function locale_language_switcher_url($type, $path) {
|
function locale_language_switcher_url($type, $path) {
|
||||||
$languages = language_list('enabled');
|
// Get the enabled languages only.
|
||||||
|
$languages = language_list(TRUE);
|
||||||
$links = array();
|
$links = array();
|
||||||
|
|
||||||
foreach ($languages[1] as $language) {
|
foreach ($languages as $language) {
|
||||||
$links[$language->langcode] = array(
|
$links[$language->langcode] = array(
|
||||||
'href' => $path,
|
'href' => $path,
|
||||||
'title' => $language->name,
|
'title' => $language->name,
|
||||||
|
@ -377,13 +379,14 @@ function locale_language_switcher_session($type, $path) {
|
||||||
$param = variable_get('locale_language_negotiation_session_param', 'language');
|
$param = variable_get('locale_language_negotiation_session_param', 'language');
|
||||||
$language_query = isset($_SESSION[$param]) ? $_SESSION[$param] : $GLOBALS[$type]->langcode;
|
$language_query = isset($_SESSION[$param]) ? $_SESSION[$param] : $GLOBALS[$type]->langcode;
|
||||||
|
|
||||||
$languages = language_list('enabled');
|
// Get the enabled languages only.
|
||||||
|
$languages = language_list(TRUE);
|
||||||
$links = array();
|
$links = array();
|
||||||
|
|
||||||
$query = $_GET;
|
$query = $_GET;
|
||||||
unset($query['q']);
|
unset($query['q']);
|
||||||
|
|
||||||
foreach ($languages[1] as $language) {
|
foreach ($languages as $language) {
|
||||||
$langcode = $language->langcode;
|
$langcode = $language->langcode;
|
||||||
$links[$langcode] = array(
|
$links[$langcode] = array(
|
||||||
'href' => $path,
|
'href' => $path,
|
||||||
|
@ -413,8 +416,9 @@ function locale_language_url_rewrite_url(&$path, &$options) {
|
||||||
$languages = &$drupal_static_fast['languages'];
|
$languages = &$drupal_static_fast['languages'];
|
||||||
|
|
||||||
if (!isset($languages)) {
|
if (!isset($languages)) {
|
||||||
$languages = language_list('enabled');
|
// Get the enabled languages only.
|
||||||
$languages = array_flip(array_keys($languages[1]));
|
$languages = language_list(TRUE);
|
||||||
|
$languages = array_flip(array_keys($languages));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Language can be passed as an option, or we go for current URL language.
|
// Language can be passed as an option, or we go for current URL language.
|
||||||
|
@ -488,8 +492,8 @@ function locale_language_url_rewrite_session(&$path, &$options) {
|
||||||
if (!isset($query_rewrite)) {
|
if (!isset($query_rewrite)) {
|
||||||
global $user;
|
global $user;
|
||||||
if (!$user->uid) {
|
if (!$user->uid) {
|
||||||
$languages = language_list('enabled');
|
// Get the enabled languages only.
|
||||||
$languages = $languages[1];
|
$languages = language_list(TRUE);
|
||||||
$query_param = check_plain(variable_get('locale_language_negotiation_session_param', 'language'));
|
$query_param = check_plain(variable_get('locale_language_negotiation_session_param', 'language'));
|
||||||
$query_value = isset($_GET[$query_param]) ? check_plain($_GET[$query_param]) : NULL;
|
$query_value = isset($_GET[$query_param]) ? check_plain($_GET[$query_param]) : NULL;
|
||||||
$query_rewrite = isset($languages[$query_value]) && language_negotiation_get_any(LOCALE_LANGUAGE_NEGOTIATION_SESSION);
|
$query_rewrite = isset($languages[$query_value]) && language_negotiation_get_any(LOCALE_LANGUAGE_NEGOTIATION_SESSION);
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Right-to-left specific stylesheet for the Dashboard module.
|
||||||
|
*/
|
||||||
|
|
||||||
#dashboard div.dashboard-region {
|
#dashboard div.dashboard-region {
|
||||||
float: right;
|
float: right;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds regions to the dashboard.
|
* Add regions to the dashboard.
|
||||||
*
|
*
|
||||||
* @return
|
* @return
|
||||||
* An array whose keys are the names of the dashboard regions and whose
|
* An array whose keys are the names of the dashboard regions and whose
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Stylesheet for the Dashboard module.
|
||||||
|
*/
|
||||||
|
|
||||||
#dashboard div.dashboard-region {
|
#dashboard div.dashboard-region {
|
||||||
float: left;
|
float: left;
|
||||||
min-height: 1px;
|
min-height: 1px;
|
||||||
|
|
|
@ -1,7 +1,12 @@
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Attaches behaviors for the Dashboard module.
|
||||||
|
*/
|
||||||
|
|
||||||
(function ($) {
|
(function ($) {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of Drupal.behaviors for dashboard.
|
* Implements Drupal.behaviors for the Dashboard module.
|
||||||
*/
|
*/
|
||||||
Drupal.behaviors.dashboard = {
|
Drupal.behaviors.dashboard = {
|
||||||
attach: function (context, settings) {
|
attach: function (context, settings) {
|
||||||
|
@ -39,7 +44,7 @@ Drupal.behaviors.dashboard = {
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enter "customize" mode by displaying disabled blocks.
|
* Enters "customize" mode by displaying disabled blocks.
|
||||||
*/
|
*/
|
||||||
enterCustomizeMode: function () {
|
enterCustomizeMode: function () {
|
||||||
$('#dashboard').addClass('customize-mode customize-inactive');
|
$('#dashboard').addClass('customize-mode customize-inactive');
|
||||||
|
@ -51,7 +56,7 @@ Drupal.behaviors.dashboard = {
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Exit "customize" mode by simply forcing a page refresh.
|
* Exits "customize" mode by simply forcing a page refresh.
|
||||||
*/
|
*/
|
||||||
exitCustomizeMode: function () {
|
exitCustomizeMode: function () {
|
||||||
$('#dashboard').removeClass('customize-mode customize-inactive');
|
$('#dashboard').removeClass('customize-mode customize-inactive');
|
||||||
|
@ -60,7 +65,7 @@ Drupal.behaviors.dashboard = {
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper for enterCustomizeMode; sets up drag-and-drop and close button.
|
* Sets up the drag-and-drop behavior and the 'close' button.
|
||||||
*/
|
*/
|
||||||
setupDrawer: function () {
|
setupDrawer: function () {
|
||||||
$('div.customize .canvas-content input').click(Drupal.behaviors.dashboard.exitCustomizeMode);
|
$('div.customize .canvas-content input').click(Drupal.behaviors.dashboard.exitCustomizeMode);
|
||||||
|
@ -84,7 +89,7 @@ Drupal.behaviors.dashboard = {
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* While dragging, make the block appear as a disabled block
|
* Makes the block appear as a disabled block while dragging.
|
||||||
*
|
*
|
||||||
* This function is called on the jQuery UI Sortable "start" event.
|
* This function is called on the jQuery UI Sortable "start" event.
|
||||||
*
|
*
|
||||||
|
@ -104,8 +109,7 @@ Drupal.behaviors.dashboard = {
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* While dragging, adapt block's width to the width of the region it is moved
|
* Adapts block's width to the region it is moved into while dragging.
|
||||||
* into.
|
|
||||||
*
|
*
|
||||||
* This function is called on the jQuery UI Sortable "over" event.
|
* This function is called on the jQuery UI Sortable "over" event.
|
||||||
*
|
*
|
||||||
|
@ -127,8 +131,7 @@ Drupal.behaviors.dashboard = {
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* While dragging, adapt block's position to stay connected with the position
|
* Adapts a block's position to stay connected with the mouse pointer.
|
||||||
* of the mouse pointer.
|
|
||||||
*
|
*
|
||||||
* This function is called on the jQuery UI Sortable "sort" event.
|
* This function is called on the jQuery UI Sortable "sort" event.
|
||||||
*
|
*
|
||||||
|
@ -146,7 +149,7 @@ Drupal.behaviors.dashboard = {
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send block order to the server, and expand previously disabled blocks.
|
* Sends block order to the server, and expands previously disabled blocks.
|
||||||
*
|
*
|
||||||
* This function is called on the jQuery UI Sortable "update" event.
|
* This function is called on the jQuery UI Sortable "update" event.
|
||||||
*
|
*
|
||||||
|
@ -198,8 +201,10 @@ Drupal.behaviors.dashboard = {
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the current order of the blocks in each of the sortable regions,
|
* Returns the current order of the blocks in each of the sortable regions.
|
||||||
* in query string format.
|
*
|
||||||
|
* @return
|
||||||
|
* The current order of the blocks, in query string format.
|
||||||
*/
|
*/
|
||||||
getOrder: function () {
|
getOrder: function () {
|
||||||
var order = [];
|
var order = [];
|
||||||
|
|
|
@ -1,5 +1,10 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @file
|
||||||
|
* Provides a dashboard page in the administrative interface.
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implements hook_help().
|
* Implements hook_help().
|
||||||
*/
|
*/
|
||||||
|
@ -263,10 +268,12 @@ function dashboard_forms() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dashboard page callback.
|
* Page callback: Displays the dashboard.
|
||||||
*
|
*
|
||||||
* @param $launch_customize
|
* @param $launch_customize
|
||||||
* Whether to launch in customization mode right away. TRUE or FALSE.
|
* Whether to launch in customization mode right away. TRUE or FALSE.
|
||||||
|
*
|
||||||
|
* @see dashboard_menu()
|
||||||
*/
|
*/
|
||||||
function dashboard_admin($launch_customize = FALSE) {
|
function dashboard_admin($launch_customize = FALSE) {
|
||||||
$js_settings = array(
|
$js_settings = array(
|
||||||
|
@ -298,11 +305,12 @@ function dashboard_admin($launch_customize = FALSE) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Menu page callback: builds the page for administering dashboard blocks.
|
* Page callback: Builds the page for administering dashboard blocks.
|
||||||
*
|
*
|
||||||
* This page reuses the Block module's administration form but limits editing
|
* This page reuses the Block module's administration form but limits editing
|
||||||
* to blocks that are available to appear on the dashboard.
|
* to blocks that are available to appear on the dashboard.
|
||||||
*
|
*
|
||||||
|
* @see dashboard_menu()
|
||||||
* @see block_admin_display()
|
* @see block_admin_display()
|
||||||
* @see block_admin_display_form()
|
* @see block_admin_display_form()
|
||||||
* @see dashboard_form_dashboard_admin_display_form_alter()
|
* @see dashboard_form_dashboard_admin_display_form_alter()
|
||||||
|
@ -454,7 +462,7 @@ function dashboard_is_visible() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return an array of dashboard region descriptions, keyed by region name.
|
* Returns an array of dashboard region descriptions, keyed by region name.
|
||||||
*/
|
*/
|
||||||
function dashboard_region_descriptions() {
|
function dashboard_region_descriptions() {
|
||||||
$regions = module_invoke_all('dashboard_regions');
|
$regions = module_invoke_all('dashboard_regions');
|
||||||
|
@ -463,7 +471,7 @@ function dashboard_region_descriptions() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return an array of dashboard region names.
|
* Returns an array of dashboard region names.
|
||||||
*/
|
*/
|
||||||
function dashboard_regions() {
|
function dashboard_regions() {
|
||||||
$regions = &drupal_static(__FUNCTION__);
|
$regions = &drupal_static(__FUNCTION__);
|
||||||
|
@ -485,7 +493,9 @@ function dashboard_dashboard_regions() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ajax callback to show disabled blocks in the dashboard customization mode.
|
* Ajax callback: Shows disabled blocks in the dashboard customization mode.
|
||||||
|
*
|
||||||
|
* @see dashboard_menu()
|
||||||
*/
|
*/
|
||||||
function dashboard_show_disabled() {
|
function dashboard_show_disabled() {
|
||||||
global $theme_key;
|
global $theme_key;
|
||||||
|
@ -506,12 +516,14 @@ function dashboard_show_disabled() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ajax callback to display the rendered contents of a specific block.
|
* Ajax callback: Displays the rendered contents of a specific block.
|
||||||
*
|
*
|
||||||
* @param $module
|
* @param $module
|
||||||
* The block's module name.
|
* The block's module name.
|
||||||
* @param $delta
|
* @param $delta
|
||||||
* The block's delta.
|
* The block's delta.
|
||||||
|
*
|
||||||
|
* @see dashboard_menu()
|
||||||
*/
|
*/
|
||||||
function dashboard_show_block_content($module, $delta) {
|
function dashboard_show_block_content($module, $delta) {
|
||||||
drupal_theme_initialize();
|
drupal_theme_initialize();
|
||||||
|
@ -533,7 +545,7 @@ function dashboard_show_block_content($module, $delta) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the new weight of each region according to the drag-and-drop order.
|
* Sets the new weight of each region according to the drag-and-drop order.
|
||||||
*/
|
*/
|
||||||
function dashboard_update() {
|
function dashboard_update() {
|
||||||
drupal_theme_initialize();
|
drupal_theme_initialize();
|
||||||
|
@ -630,7 +642,7 @@ function theme_dashboard_region($variables) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns HTML for a set of disabled blocks, for display in dashboard customization mode.
|
* Returns HTML for disabled blocks, for use in dashboard customization mode.
|
||||||
*
|
*
|
||||||
* @param $variables
|
* @param $variables
|
||||||
* An associative array containing:
|
* An associative array containing:
|
||||||
|
@ -652,7 +664,7 @@ function theme_dashboard_disabled_blocks($variables) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns HTML for a disabled block, for display in dashboard customization mode.
|
* Returns HTML for a disabled block, for use in dashboard customization mode.
|
||||||
*
|
*
|
||||||
* @param $variables
|
* @param $variables
|
||||||
* An associative array containing:
|
* An associative array containing:
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
* Tests for dashboard.module.
|
* Tests for dashboard.module.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests the Dashboard module blocks.
|
||||||
|
*/
|
||||||
class DashboardBlocksTestCase extends DrupalWebTestCase {
|
class DashboardBlocksTestCase extends DrupalWebTestCase {
|
||||||
public static function getInfo() {
|
public static function getInfo() {
|
||||||
return array(
|
return array(
|
||||||
|
@ -33,7 +36,7 @@ class DashboardBlocksTestCase extends DrupalWebTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test adding a block to the dashboard and checking access to it.
|
* Tests adding a block to the dashboard and checking access to it.
|
||||||
*/
|
*/
|
||||||
function testDashboardAccess() {
|
function testDashboardAccess() {
|
||||||
// Add a new custom block to a dashboard region.
|
// Add a new custom block to a dashboard region.
|
||||||
|
@ -58,7 +61,7 @@ class DashboardBlocksTestCase extends DrupalWebTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test that dashboard regions are displayed or hidden properly.
|
* Tests that dashboard regions are displayed or hidden properly.
|
||||||
*/
|
*/
|
||||||
function testDashboardRegions() {
|
function testDashboardRegions() {
|
||||||
$dashboard_regions = dashboard_region_descriptions();
|
$dashboard_regions = dashboard_region_descriptions();
|
||||||
|
@ -80,8 +83,7 @@ class DashboardBlocksTestCase extends DrupalWebTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test that the dashboard module can be disabled and enabled again,
|
* Tests that the dashboard module can be re-enabled, retaining its blocks.
|
||||||
* retaining its blocks.
|
|
||||||
*/
|
*/
|
||||||
function testDisableEnable() {
|
function testDisableEnable() {
|
||||||
// Add a new custom block to a dashboard region.
|
// Add a new custom block to a dashboard region.
|
||||||
|
@ -113,8 +115,7 @@ class DashboardBlocksTestCase extends DrupalWebTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test that defining a block with ['properties']['administrative'] = TRUE
|
* Tests that administrative blocks are available for the dashboard.
|
||||||
* adds it as an available block for the dashboard.
|
|
||||||
*/
|
*/
|
||||||
function testBlockAvailability() {
|
function testBlockAvailability() {
|
||||||
// Test "Recent comments", which should be available (defined as
|
// Test "Recent comments", which should be available (defined as
|
||||||
|
|
|
@ -122,8 +122,8 @@ class LanguageListTest extends DrupalWebTestCase {
|
||||||
$this->assertResponse(404, t('Language no longer found.'));
|
$this->assertResponse(404, t('Language no longer found.'));
|
||||||
// Make sure the "language_count" variable has been updated correctly.
|
// Make sure the "language_count" variable has been updated correctly.
|
||||||
drupal_static_reset('language_list');
|
drupal_static_reset('language_list');
|
||||||
$enabled = language_list('enabled');
|
$enabled_languages = language_list(TRUE);
|
||||||
$this->assertEqual(variable_get('language_count', 1), count($enabled[1]), t('Language count is correct.'));
|
$this->assertEqual(variable_get('language_count', 1), count($enabled_languages), t('Language count is correct.'));
|
||||||
// Delete a disabled language.
|
// Delete a disabled language.
|
||||||
// Disable an enabled language.
|
// Disable an enabled language.
|
||||||
$edit = array(
|
$edit = array(
|
||||||
|
@ -133,7 +133,7 @@ class LanguageListTest extends DrupalWebTestCase {
|
||||||
$this->assertNoFieldChecked('edit-languages-fr-enabled', t('French language disabled.'));
|
$this->assertNoFieldChecked('edit-languages-fr-enabled', t('French language disabled.'));
|
||||||
// Get the count of enabled languages.
|
// Get the count of enabled languages.
|
||||||
drupal_static_reset('language_list');
|
drupal_static_reset('language_list');
|
||||||
$enabled = language_list('enabled');
|
$enabled_languages = language_list(TRUE);
|
||||||
// Delete the disabled language.
|
// Delete the disabled language.
|
||||||
$this->drupalPost('admin/config/regional/language/delete/fr', array(), t('Delete'));
|
$this->drupalPost('admin/config/regional/language/delete/fr', array(), t('Delete'));
|
||||||
// We need raw here because %language and %langcode will add HTML.
|
// We need raw here because %language and %langcode will add HTML.
|
||||||
|
@ -144,7 +144,7 @@ class LanguageListTest extends DrupalWebTestCase {
|
||||||
$this->drupalGet('admin/config/regional/language/delete/fr');
|
$this->drupalGet('admin/config/regional/language/delete/fr');
|
||||||
$this->assertResponse(404, t('Language no longer found.'));
|
$this->assertResponse(404, t('Language no longer found.'));
|
||||||
// Make sure the "language_count" variable has not changed.
|
// Make sure the "language_count" variable has not changed.
|
||||||
$this->assertEqual(variable_get('language_count', 1), count($enabled[1]), t('Language count is correct.'));
|
$this->assertEqual(variable_get('language_count', 1), count($enabled_languages), t('Language count is correct.'));
|
||||||
|
|
||||||
// Ensure we can delete the English language. Right now English is the only
|
// Ensure we can delete the English language. Right now English is the only
|
||||||
// language so we must add a new language and make it the default before
|
// language so we must add a new language and make it the default before
|
||||||
|
|
|
@ -256,10 +256,11 @@ function locale_language_providers_url_form($form, &$form_state) {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
$languages = language_list('enabled');
|
// Get the enabled languages only.
|
||||||
|
$languages = language_list(TRUE);
|
||||||
$prefixes = locale_language_negotiation_url_prefixes();
|
$prefixes = locale_language_negotiation_url_prefixes();
|
||||||
$domains = locale_language_negotiation_url_domains();
|
$domains = locale_language_negotiation_url_domains();
|
||||||
foreach ($languages[1] as $langcode => $language) {
|
foreach ($languages as $langcode => $language) {
|
||||||
$form['prefix'][$langcode] = array(
|
$form['prefix'][$langcode] = array(
|
||||||
'#type' => 'textfield',
|
'#type' => 'textfield',
|
||||||
'#title' => t('%language (%langcode) path prefix', array('%language' => $language->name, '%langcode' => $language->langcode)),
|
'#title' => t('%language (%langcode) path prefix', array('%language' => $language->name, '%langcode' => $language->langcode)),
|
||||||
|
@ -292,40 +293,41 @@ function locale_language_providers_url_form($form, &$form_state) {
|
||||||
* the prefix and domain are only blank for the default.
|
* the prefix and domain are only blank for the default.
|
||||||
*/
|
*/
|
||||||
function locale_language_providers_url_form_validate($form, &$form_state) {
|
function locale_language_providers_url_form_validate($form, &$form_state) {
|
||||||
$languages = locale_language_list();
|
// Get the enabled languages only.
|
||||||
|
$languages = language_list(TRUE);
|
||||||
$default = language_default();
|
$default = language_default();
|
||||||
|
|
||||||
// Count repeated values for uniqueness check.
|
// Count repeated values for uniqueness check.
|
||||||
$count = array_count_values($form_state['values']['prefix']);
|
$count = array_count_values($form_state['values']['prefix']);
|
||||||
foreach ($languages as $langcode => $name) {
|
foreach ($languages as $langcode => $language) {
|
||||||
$value = $form_state['values']['prefix'][$langcode];
|
$value = $form_state['values']['prefix'][$langcode];
|
||||||
|
|
||||||
if ($value === '') {
|
if ($value === '') {
|
||||||
if ($default->langcode != $langcode && $form_state['values']['locale_language_negotiation_url_part'] == LOCALE_LANGUAGE_NEGOTIATION_URL_PREFIX) {
|
if (!$language->default && $form_state['values']['locale_language_negotiation_url_part'] == LOCALE_LANGUAGE_NEGOTIATION_URL_PREFIX) {
|
||||||
// Validation error if the prefix is blank for a non-default language, and value is for selected negotiation type.
|
// Validation error if the prefix is blank for a non-default language, and value is for selected negotiation type.
|
||||||
form_error($form['prefix'][$langcode], t('The prefix may only be left blank for the default language.'));
|
form_error($form['prefix'][$langcode], t('The prefix may only be left blank for the default language.'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (isset($count[$value]) && $count[$value] > 1) {
|
else if (isset($count[$value]) && $count[$value] > 1) {
|
||||||
// Validation error if there are two languages with the same domain/prefix.
|
// Validation error if there are two languages with the same domain/prefix.
|
||||||
form_error($form['prefix'][$langcode], t('The prefix for %language, %value, is not unique.', array( '%language' => $name, '%value' => $value )));
|
form_error($form['prefix'][$langcode], t('The prefix for %language, %value, is not unique.', array('%language' => $language->name, '%value' => $value)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Count repeated values for uniqueness check.
|
// Count repeated values for uniqueness check.
|
||||||
$count = array_count_values($form_state['values']['domain']);
|
$count = array_count_values($form_state['values']['domain']);
|
||||||
foreach ($languages as $langcode => $name) {
|
foreach ($languages as $langcode => $language) {
|
||||||
$value = $form_state['values']['domain'][$langcode];
|
$value = $form_state['values']['domain'][$langcode];
|
||||||
|
|
||||||
if ($value === '') {
|
if ($value === '') {
|
||||||
if ($default->langcode != $langcode && $form_state['values']['locale_language_negotiation_url_part'] == LOCALE_LANGUAGE_NEGOTIATION_URL_DOMAIN) {
|
if (!$language->default && $form_state['values']['locale_language_negotiation_url_part'] == LOCALE_LANGUAGE_NEGOTIATION_URL_DOMAIN) {
|
||||||
// Validation error if the domain is blank for a non-default language, and value is for selected negotiation type.
|
// Validation error if the domain is blank for a non-default language, and value is for selected negotiation type.
|
||||||
form_error($form['domain'][$langcode], t('The domain may only be left blank for the default language.'));
|
form_error($form['domain'][$langcode], t('The domain may only be left blank for the default language.'));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (isset($count[$value]) && $count[$value] > 1) {
|
else if (isset($count[$value]) && $count[$value] > 1) {
|
||||||
// Validation error if there are two languages with the same domain/domain.
|
// Validation error if there are two languages with the same domain/domain.
|
||||||
form_error($form['domain'][$langcode], t('The domain for %language, %value, is not unique.', array( '%language' => $name, '%value' => $value )));
|
form_error($form['domain'][$langcode], t('The domain for %language, %value, is not unique.', array('%language' => $language->name, '%value' => $value)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -405,12 +407,12 @@ function locale_date_format_language_overview_page() {
|
||||||
array('data' => t('Operations'), 'colspan' => '2'),
|
array('data' => t('Operations'), 'colspan' => '2'),
|
||||||
);
|
);
|
||||||
|
|
||||||
// Get list of languages.
|
// Get the enabled languages only.
|
||||||
$languages = locale_language_list();
|
$languages = language_list(TRUE);
|
||||||
|
|
||||||
foreach ($languages as $langcode => $info) {
|
foreach ($languages as $langcode => $language) {
|
||||||
$row = array();
|
$row = array();
|
||||||
$row[] = $languages[$langcode];
|
$row[] = $language->name;
|
||||||
$row[] = l(t('edit'), 'admin/config/regional/date-time/locale/' . $langcode . '/edit');
|
$row[] = l(t('edit'), 'admin/config/regional/date-time/locale/' . $langcode . '/edit');
|
||||||
$row[] = l(t('reset'), 'admin/config/regional/date-time/locale/' . $langcode . '/reset');
|
$row[] = l(t('reset'), 'admin/config/regional/date-time/locale/' . $langcode . '/reset');
|
||||||
$rows[] = $row;
|
$rows[] = $row;
|
||||||
|
@ -423,14 +425,11 @@ function locale_date_format_language_overview_page() {
|
||||||
* Provide date localization configuration options to users.
|
* Provide date localization configuration options to users.
|
||||||
*/
|
*/
|
||||||
function locale_date_format_form($form, &$form_state, $langcode) {
|
function locale_date_format_form($form, &$form_state, $langcode) {
|
||||||
$languages = locale_language_list();
|
|
||||||
$language_name = $languages[$langcode];
|
|
||||||
|
|
||||||
// Display the current language name.
|
// Display the current language name.
|
||||||
$form['language'] = array(
|
$form['language'] = array(
|
||||||
'#type' => 'item',
|
'#type' => 'item',
|
||||||
'#title' => t('Language'),
|
'#title' => t('Language'),
|
||||||
'#markup' => check_plain($language_name),
|
'#markup' => language_load($langcode)->name,
|
||||||
'#weight' => -10,
|
'#weight' => -10,
|
||||||
);
|
);
|
||||||
$form['langcode'] = array(
|
$form['langcode'] = array(
|
||||||
|
@ -509,9 +508,8 @@ function locale_date_format_form_submit($form, &$form_state) {
|
||||||
*/
|
*/
|
||||||
function locale_date_format_reset_form($form, &$form_state, $langcode) {
|
function locale_date_format_reset_form($form, &$form_state, $langcode) {
|
||||||
$form['langcode'] = array('#type' => 'value', '#value' => $langcode);
|
$form['langcode'] = array('#type' => 'value', '#value' => $langcode);
|
||||||
$languages = language_list();
|
|
||||||
return confirm_form($form,
|
return confirm_form($form,
|
||||||
t('Are you sure you want to reset the date formats for %language to the global defaults?', array('%language' => $languages[$langcode]->name)),
|
t('Are you sure you want to reset the date formats for %language to the global defaults?', array('%language' => language_load($langcode)->name)),
|
||||||
'admin/config/regional/date-time/locale',
|
'admin/config/regional/date-time/locale',
|
||||||
t('Resetting will remove all localized date formats for this language. This action cannot be undone.'),
|
t('Resetting will remove all localized date formats for this language. This action cannot be undone.'),
|
||||||
t('Reset'), t('Cancel'));
|
t('Reset'), t('Cancel'));
|
||||||
|
|
|
@ -11,24 +11,32 @@ include_once DRUPAL_ROOT . '/core/includes/gettext.inc';
|
||||||
* User interface for the translation import screen.
|
* User interface for the translation import screen.
|
||||||
*/
|
*/
|
||||||
function locale_translate_import_form($form, &$form_state) {
|
function locale_translate_import_form($form, &$form_state) {
|
||||||
// Get all languages, except English
|
|
||||||
drupal_static_reset('language_list');
|
drupal_static_reset('language_list');
|
||||||
$names = locale_language_list('name');
|
$languages = language_list(TRUE);
|
||||||
if (!locale_translate_english()) {
|
|
||||||
unset($names['en']);
|
// Initialize a language list to the ones available, including English if we
|
||||||
|
// are to translate Drupal to English as well.
|
||||||
|
$existing_languages = array();
|
||||||
|
foreach ($languages as $langcode => $language) {
|
||||||
|
if ($langcode != 'en' || locale_translate_english()) {
|
||||||
|
$existing_languages[$langcode] = $language->name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If we have no languages available, present the list of predefined languages
|
||||||
|
// only. If we do have already added languages, set up two option groups with
|
||||||
|
// the list of existing and then predefined languages.
|
||||||
form_load_include($form_state, 'inc', 'language', 'language.admin');
|
form_load_include($form_state, 'inc', 'language', 'language.admin');
|
||||||
if (!count($names)) {
|
if (empty($existing_languages)) {
|
||||||
$languages = language_admin_predefined_list();
|
$language_options = language_admin_predefined_list();
|
||||||
$default = key($languages);
|
$default = key($language_options);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$languages = array(
|
$default = key($existing_languages);
|
||||||
t('Already added languages') => $names,
|
$language_options = array(
|
||||||
|
t('Already added languages') => $existing_languages,
|
||||||
t('Languages not yet added') => language_admin_predefined_list()
|
t('Languages not yet added') => language_admin_predefined_list()
|
||||||
);
|
);
|
||||||
$default = key($names);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$form['import'] = array('#type' => 'fieldset',
|
$form['import'] = array('#type' => 'fieldset',
|
||||||
|
@ -41,7 +49,7 @@ function locale_translate_import_form($form, &$form_state) {
|
||||||
);
|
);
|
||||||
$form['import']['langcode'] = array('#type' => 'select',
|
$form['import']['langcode'] = array('#type' => 'select',
|
||||||
'#title' => t('Import into'),
|
'#title' => t('Import into'),
|
||||||
'#options' => $languages,
|
'#options' => $language_options,
|
||||||
'#default_value' => $default,
|
'#default_value' => $default,
|
||||||
'#description' => t('Choose the language you want to add strings into. If you choose a language which is not yet set up, it will be added.'),
|
'#description' => t('Choose the language you want to add strings into. If you choose a language which is not yet set up, it will be added.'),
|
||||||
);
|
);
|
||||||
|
@ -101,16 +109,20 @@ function locale_translate_import_form_submit($form, &$form_state) {
|
||||||
* User interface for the translation export screen.
|
* User interface for the translation export screen.
|
||||||
*/
|
*/
|
||||||
function locale_translate_export_screen() {
|
function locale_translate_export_screen() {
|
||||||
// Get all languages, except English
|
// Get all enabled languages, except English, if we should not translate that.
|
||||||
drupal_static_reset('language_list');
|
drupal_static_reset('language_list');
|
||||||
$names = locale_language_list('name');
|
$languages = language_list(TRUE);
|
||||||
if (!locale_translate_english()) {
|
$language_options = array();
|
||||||
unset($names['en']);
|
foreach ($languages as $langcode => $language) {
|
||||||
|
if ($langcode != 'en' || locale_translate_english()) {
|
||||||
|
$language_options[$langcode] = $language->name;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$output = '';
|
$output = '';
|
||||||
// Offer translation export if any language is set up.
|
// Offer translation export if any language is set up.
|
||||||
if (count($names)) {
|
if (!empty($language_options)) {
|
||||||
$elements = drupal_get_form('locale_translate_export_po_form', $names);
|
$elements = drupal_get_form('locale_translate_export_po_form', $language_options);
|
||||||
$output = drupal_render($elements);
|
$output = drupal_render($elements);
|
||||||
}
|
}
|
||||||
$elements = drupal_get_form('locale_translate_export_pot_form');
|
$elements = drupal_get_form('locale_translate_export_pot_form');
|
||||||
|
|
|
@ -219,8 +219,8 @@ function locale_permission() {
|
||||||
*/
|
*/
|
||||||
function locale_language_selector_form($user) {
|
function locale_language_selector_form($user) {
|
||||||
global $language;
|
global $language;
|
||||||
$languages = language_list('enabled');
|
// Get list of enabled languages only.
|
||||||
$languages = $languages[1];
|
$languages = language_list(TRUE);
|
||||||
|
|
||||||
// If the user is being created, we set the user language to the page language.
|
// If the user is being created, we set the user language to the page language.
|
||||||
$user_preferred_language = $user->uid ? user_preferred_language($user) : $language;
|
$user_preferred_language = $user->uid ? user_preferred_language($user) : $language;
|
||||||
|
@ -296,11 +296,16 @@ function locale_form_alter(&$form, &$form_state, $form_id) {
|
||||||
*/
|
*/
|
||||||
function locale_form_node_form_alter(&$form, &$form_state) {
|
function locale_form_node_form_alter(&$form, &$form_state) {
|
||||||
if (isset($form['#node']->type) && locale_multilingual_node_type($form['#node']->type)) {
|
if (isset($form['#node']->type) && locale_multilingual_node_type($form['#node']->type)) {
|
||||||
|
$languages = language_list(TRUE);
|
||||||
|
$language_options = array(LANGUAGE_NONE => t('Language neutral'));
|
||||||
|
foreach ($languages as $langcode => $language) {
|
||||||
|
$language_options[$langcode] = $language->name;
|
||||||
|
}
|
||||||
$form['language'] = array(
|
$form['language'] = array(
|
||||||
'#type' => 'select',
|
'#type' => 'select',
|
||||||
'#title' => t('Language'),
|
'#title' => t('Language'),
|
||||||
'#default_value' => (isset($form['#node']->language) ? $form['#node']->language : ''),
|
'#default_value' => (isset($form['#node']->language) ? $form['#node']->language : ''),
|
||||||
'#options' => array(LANGUAGE_NONE => t('Language neutral')) + locale_language_list('name'),
|
'#options' => $language_options,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
// Node type without language selector: assign the default for new nodes
|
// Node type without language selector: assign the default for new nodes
|
||||||
|
@ -764,37 +769,12 @@ function locale_get_plural($count, $langcode = NULL) {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a language name
|
* Returns a language name.
|
||||||
*/
|
*/
|
||||||
function locale_language_name($lang) {
|
function locale_language_name($langcode) {
|
||||||
$list = &drupal_static(__FUNCTION__);
|
// Consider enabled languages only.
|
||||||
if (!isset($list)) {
|
$languages = language_list(TRUE);
|
||||||
$list = locale_language_list();
|
return ($langcode && isset($languages[$langcode])) ? $languages[$langcode]->name : t('All');
|
||||||
}
|
|
||||||
return ($lang && isset($list[$lang])) ? $list[$lang] : t('All');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns array of language names
|
|
||||||
*
|
|
||||||
* @param $field
|
|
||||||
* Name of language object field.
|
|
||||||
* @param $all
|
|
||||||
* Boolean to return all languages or only enabled ones
|
|
||||||
*/
|
|
||||||
function locale_language_list($field = 'name', $all = FALSE) {
|
|
||||||
if ($all) {
|
|
||||||
$languages = language_list();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$languages = language_list('enabled');
|
|
||||||
$languages = $languages[1];
|
|
||||||
}
|
|
||||||
$list = array();
|
|
||||||
foreach ($languages as $language) {
|
|
||||||
$list[$language->langcode] = $language->$field;
|
|
||||||
}
|
|
||||||
return $list;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -152,9 +152,12 @@ function locale_translation_filters() {
|
||||||
|
|
||||||
// Get all languages, except English
|
// Get all languages, except English
|
||||||
drupal_static_reset('language_list');
|
drupal_static_reset('language_list');
|
||||||
$languages = locale_language_list('name');
|
$languages = language_list(TRUE);
|
||||||
if (!locale_translate_english()) {
|
$language_options = array();
|
||||||
unset($languages['en']);
|
foreach ($languages as $langcode => $language) {
|
||||||
|
if ($langcode != 'en' || locale_translate_english()) {
|
||||||
|
$language_options[$langcode] = $language->name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$filters['string'] = array(
|
$filters['string'] = array(
|
||||||
|
@ -164,7 +167,7 @@ function locale_translation_filters() {
|
||||||
|
|
||||||
$filters['language'] = array(
|
$filters['language'] = array(
|
||||||
'title' => t('Language'),
|
'title' => t('Language'),
|
||||||
'options' => array_merge(array('all' => t('All languages'), LANGUAGE_SYSTEM => t('System (English)')), $languages),
|
'options' => array_merge(array('all' => t('All languages'), LANGUAGE_SYSTEM => t('System (English)')), $language_options),
|
||||||
);
|
);
|
||||||
|
|
||||||
$filters['translation'] = array(
|
$filters['translation'] = array(
|
||||||
|
|
|
@ -2032,8 +2032,8 @@ class LocaleUILanguageNegotiationTest extends DrupalWebTestCase {
|
||||||
// is for some reason not found when doing translate search. This might
|
// is for some reason not found when doing translate search. This might
|
||||||
// be some bug.
|
// be some bug.
|
||||||
drupal_static_reset('language_list');
|
drupal_static_reset('language_list');
|
||||||
$languages = language_list('enabled');
|
$languages = language_list(TRUE);
|
||||||
variable_set('language_default', $languages[1]['vi']);
|
variable_set('language_default', $languages['vi']);
|
||||||
// First visit this page to make sure our target string is searchable.
|
// First visit this page to make sure our target string is searchable.
|
||||||
$this->drupalGet('admin/config');
|
$this->drupalGet('admin/config');
|
||||||
// Now the t()'ed string is in db so switch the language back to default.
|
// Now the t()'ed string is in db so switch the language back to default.
|
||||||
|
|
|
@ -106,14 +106,18 @@ function node_filters() {
|
||||||
) + node_type_get_names(),
|
) + node_type_get_names(),
|
||||||
);
|
);
|
||||||
|
|
||||||
// Language filter if there is a list of languages
|
// Language filter if the site is multilingual.
|
||||||
if ($languages = module_invoke('locale', 'language_list')) {
|
if (language_multilingual()) {
|
||||||
$languages = array(LANGUAGE_NONE => t('Language neutral')) + $languages;
|
$languages = language_list(TRUE);
|
||||||
|
$language_options = array(LANGUAGE_NONE => t('Language neutral'));
|
||||||
|
foreach ($languages as $langcode => $language) {
|
||||||
|
$language_options[$langcode] = $language->name;
|
||||||
|
}
|
||||||
$filters['language'] = array(
|
$filters['language'] = array(
|
||||||
'title' => t('language'),
|
'title' => t('language'),
|
||||||
'options' => array(
|
'options' => array(
|
||||||
'[any]' => t('any'),
|
'[any]' => t('any'),
|
||||||
) + $languages,
|
) + $language_options,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
return $filters;
|
return $filters;
|
||||||
|
|
|
@ -258,8 +258,7 @@ function openid_form_user_register_form_alter(&$form, &$form_state) {
|
||||||
$candidate_languages[] = $parts[0] . '-' . $parts[2];
|
$candidate_languages[] = $parts[0] . '-' . $parts[2];
|
||||||
$candidate_languages[] = $parts[0] . '-' . $parts[1] . '-' . $parts[2];
|
$candidate_languages[] = $parts[0] . '-' . $parts[1] . '-' . $parts[2];
|
||||||
}
|
}
|
||||||
$all_languages = language_list('enabled');
|
$enabled_languages = language_list(TRUE);
|
||||||
$enabled_languages = $all_languages[1];
|
|
||||||
// Iterate over the generated permutations starting with the longest (most
|
// Iterate over the generated permutations starting with the longest (most
|
||||||
// specific) strings.
|
// specific) strings.
|
||||||
foreach (array_reverse($candidate_languages) as $candidate_language) {
|
foreach (array_reverse($candidate_languages) as $candidate_language) {
|
||||||
|
|
|
@ -132,10 +132,16 @@ function path_admin_form($form, &$form_state, $path = array('source' => '', 'ali
|
||||||
|
|
||||||
// A hidden value unless locale module is enabled.
|
// A hidden value unless locale module is enabled.
|
||||||
if (module_exists('locale')) {
|
if (module_exists('locale')) {
|
||||||
|
$languages = language_list(TRUE);
|
||||||
|
$language_options = array(LANGUAGE_NONE => t('All languages'));
|
||||||
|
foreach ($languages as $langcode => $language) {
|
||||||
|
$language_options[$langcode] = $language->name;
|
||||||
|
}
|
||||||
|
|
||||||
$form['langcode'] = array(
|
$form['langcode'] = array(
|
||||||
'#type' => 'select',
|
'#type' => 'select',
|
||||||
'#title' => t('Language'),
|
'#title' => t('Language'),
|
||||||
'#options' => array(LANGUAGE_NONE => t('All languages')) + locale_language_list('name'),
|
'#options' => $language_options,
|
||||||
'#default_value' => $path['langcode'],
|
'#default_value' => $path['langcode'],
|
||||||
'#weight' => -10,
|
'#weight' => -10,
|
||||||
'#description' => t('A path alias set for a specific language will always be used when displaying this page in that language, and takes precedence over path aliases set for <em>All languages</em>.'),
|
'#description' => t('A path alias set for a specific language will always be used when displaying this page in that language, and takes precedence over path aliases set for <em>All languages</em>.'),
|
||||||
|
|
|
@ -3908,10 +3908,7 @@ function system_date_format_save($date_format, $dfid = 0) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Retrieve an array of language objects for enabled languages.
|
// Retrieve an array of language objects for enabled languages.
|
||||||
$languages = language_list('enabled');
|
$languages = language_list(TRUE);
|
||||||
// This list is keyed off the value of $language->enabled; we want the ones
|
|
||||||
// that are enabled (value of 1).
|
|
||||||
$languages = $languages[1];
|
|
||||||
|
|
||||||
$locale_format = array();
|
$locale_format = array();
|
||||||
$locale_format['type'] = $date_format['type'];
|
$locale_format['type'] = $date_format['type'];
|
||||||
|
|
|
@ -1048,9 +1048,9 @@ function taxonomy_get_tree($vid, $parent = 0, $max_depth = NULL, $load_entities
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
$term = $load_entities ? $term_entities[$child] : $terms[$vid][$child];
|
$term = $load_entities ? $term_entities[$child] : $terms[$vid][$child];
|
||||||
if (count($parents[$vid][$term->tid]) > 1) {
|
if (isset($parents[$vid][$term->tid])) {
|
||||||
// We have a term with multi parents here. Clone the term,
|
// Clone the term so that the depth attribute remains correct
|
||||||
// so that the depth attribute remains correct.
|
// in the event of multiple parents.
|
||||||
$term = clone $term;
|
$term = clone $term;
|
||||||
}
|
}
|
||||||
$term->depth = $depth;
|
$term->depth = $depth;
|
||||||
|
|
|
@ -416,6 +416,60 @@ class TaxonomyTermUnitTest extends TaxonomyWebTestCase {
|
||||||
// Delete an invalid term. Should not throw any notices.
|
// Delete an invalid term. Should not throw any notices.
|
||||||
taxonomy_term_delete(42);
|
taxonomy_term_delete(42);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Test a taxonomy with terms that have multiple parents of different depths.
|
||||||
|
*/
|
||||||
|
function testTaxonomyVocabularyTree() {
|
||||||
|
// Create a new vocabulary with 6 terms.
|
||||||
|
$vocabulary = $this->createVocabulary();
|
||||||
|
$term = array();
|
||||||
|
for ($i = 0; $i < 6; $i++) {
|
||||||
|
$term[$i] = $this->createTerm($vocabulary);
|
||||||
|
}
|
||||||
|
|
||||||
|
// $term[2] is a child of 1 and 5.
|
||||||
|
$term[2]->parent = array($term[1]->tid, $term[5]->tid);
|
||||||
|
taxonomy_term_save($term[2]);
|
||||||
|
// $term[3] is a child of 2.
|
||||||
|
$term[3]->parent = array($term[2]->tid);
|
||||||
|
taxonomy_term_save($term[3]);
|
||||||
|
// $term[5] is a child of 4.
|
||||||
|
$term[5]->parent = array($term[4]->tid);
|
||||||
|
taxonomy_term_save($term[5]);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Expected tree:
|
||||||
|
* term[0] | depth: 0
|
||||||
|
* term[1] | depth: 0
|
||||||
|
* -- term[2] | depth: 1
|
||||||
|
* ---- term[3] | depth: 2
|
||||||
|
* term[4] | depth: 0
|
||||||
|
* -- term[5] | depth: 1
|
||||||
|
* ---- term[2] | depth: 2
|
||||||
|
* ------ term[3] | depth: 3
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Count $term[1] parents with $max_depth = 1.
|
||||||
|
$tree = taxonomy_get_tree($vocabulary->vid, $term[1]->tid, 1);
|
||||||
|
$this->assertEqual(1, count($tree), 'We have one parent with depth 1.');
|
||||||
|
|
||||||
|
// Count all vocabulary tree elements.
|
||||||
|
$tree = taxonomy_get_tree($vocabulary->vid);
|
||||||
|
$this->assertEqual(8, count($tree), 'We have all vocabulary tree elements.');
|
||||||
|
|
||||||
|
// Count elements in every tree depth.
|
||||||
|
foreach($tree as $element) {
|
||||||
|
if (!isset($depth_count[$element->depth])) {
|
||||||
|
$depth_count[$element->depth] = 0;
|
||||||
|
}
|
||||||
|
$depth_count[$element->depth]++;
|
||||||
|
}
|
||||||
|
$this->assertEqual(3, $depth_count[0], 'Three elements in taxonomy tree depth 0.');
|
||||||
|
$this->assertEqual(2, $depth_count[1], 'Two elements in taxonomy tree depth 1.');
|
||||||
|
$this->assertEqual(2, $depth_count[2], 'Two elements in taxonomy tree depth 2.');
|
||||||
|
$this->assertEqual(1, $depth_count[3], 'One element in taxonomy tree depth 3.');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -125,20 +125,25 @@ function translation_form_node_type_form_alter(&$form, &$form_state) {
|
||||||
function translation_form_node_form_alter(&$form, &$form_state) {
|
function translation_form_node_form_alter(&$form, &$form_state) {
|
||||||
if (translation_supported_type($form['#node']->type)) {
|
if (translation_supported_type($form['#node']->type)) {
|
||||||
$node = $form['#node'];
|
$node = $form['#node'];
|
||||||
$languages = language_list('enabled');
|
|
||||||
$disabled_languages = isset($languages[0]) ? $languages[0] : FALSE;
|
// Build two lists with the disabled and enabled languages.
|
||||||
$translator_widget = $disabled_languages && user_access('translate content');
|
$languages = language_list();
|
||||||
|
$grouped_languages = array();
|
||||||
|
foreach ($languages as $langcode => $language) {
|
||||||
|
$grouped_languages[(int) $language->enabled][$langcode] = $language;
|
||||||
|
}
|
||||||
|
|
||||||
|
$translator_widget = !empty($grouped_languages[0]) && user_access('translate content');
|
||||||
$groups = array(t('Disabled'), t('Enabled'));
|
$groups = array(t('Disabled'), t('Enabled'));
|
||||||
// Allow translators to enter content in disabled languages. Translators
|
// Allow translators to enter content in disabled languages. Translators
|
||||||
// might need to distinguish between enabled and disabled languages, hence
|
// might need to distinguish between enabled and disabled languages, hence
|
||||||
// we divide them in two option groups.
|
// we divide them in two option groups.
|
||||||
if ($translator_widget) {
|
if ($translator_widget) {
|
||||||
$options = array($groups[1] => array(LANGUAGE_NONE => t('Language neutral')));
|
$options = array($groups[1] => array(LANGUAGE_NONE => t('Language neutral')));
|
||||||
$language_list = locale_language_list('name', TRUE);
|
|
||||||
foreach (array(1, 0) as $status) {
|
foreach (array(1, 0) as $status) {
|
||||||
$group = $groups[$status];
|
$group = $groups[$status];
|
||||||
foreach ($languages[$status] as $langcode => $language) {
|
foreach ($grouped_languages[$status] as $langcode => $language) {
|
||||||
$options[$group][$langcode] = $language_list[$langcode];
|
$options[$group][$langcode] = $language->name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$form['language']['#options'] = $options;
|
$form['language']['#options'] = $options;
|
||||||
|
@ -208,8 +213,7 @@ function translation_node_view($node, $view_mode) {
|
||||||
// If the site has no translations or is not multilingual we have no content
|
// If the site has no translations or is not multilingual we have no content
|
||||||
// translation links to display.
|
// translation links to display.
|
||||||
if (isset($node->tnid) && language_multilingual() && $translations = translation_node_get_translations($node->tnid)) {
|
if (isset($node->tnid) && language_multilingual() && $translations = translation_node_get_translations($node->tnid)) {
|
||||||
$languages = language_list('enabled');
|
$languages = language_list(TRUE);
|
||||||
$languages = $languages[1];
|
|
||||||
|
|
||||||
// There might be a language provider enabled defining custom language
|
// There might be a language provider enabled defining custom language
|
||||||
// switch links which need to be taken into account while generating the
|
// switch links which need to be taken into account while generating the
|
||||||
|
|
Loading…
Reference in New Issue