From cfab9bc488b48f785e265199b5ca527988958f1b Mon Sep 17 00:00:00 2001 From: Dries Date: Sun, 29 Jan 2012 16:47:33 -0500 Subject: [PATCH 01/37] - Patch #1229442 by bleen18, amateescu, chrispomeroy, jessebeach: convert poll tpls and markup to HTML5. --- core/includes/common.inc | 3 + core/includes/theme.inc | 43 +++++++++++++ core/modules/poll/poll-bar--block.tpl.php | 26 -------- core/modules/poll/poll-bar.tpl.php | 26 -------- core/modules/poll/poll-results--block.tpl.php | 28 --------- core/modules/poll/poll-results.tpl.php | 10 ++- core/modules/poll/poll-rtl.css | 2 +- core/modules/poll/poll-vote.tpl.php | 16 ++--- core/modules/poll/poll.css | 6 +- core/modules/poll/poll.module | 62 +++++-------------- core/modules/poll/poll.test | 4 +- core/themes/bartik/css/style.css | 4 +- 12 files changed, 85 insertions(+), 145 deletions(-) delete mode 100644 core/modules/poll/poll-bar--block.tpl.php delete mode 100644 core/modules/poll/poll-bar.tpl.php delete mode 100644 core/modules/poll/poll-results--block.tpl.php diff --git a/core/includes/common.inc b/core/includes/common.inc index e2c8784e7d98..a4c445f5e774 100644 --- a/core/includes/common.inc +++ b/core/includes/common.inc @@ -6753,6 +6753,9 @@ function drupal_common_theme() { 'table' => array( 'variables' => array('header' => NULL, 'rows' => NULL, 'attributes' => array(), 'caption' => NULL, 'colgroups' => array(), 'sticky' => TRUE, 'empty' => ''), ), + 'meter' => array( + 'variables' => array('display_value' => NULL, 'form' => NULL, 'high' => NULL, 'low' => NULL, 'max' => NULL, 'min' => NULL, 'optimum' => NULL, 'value' => NULL, 'percentage' => NULL, 'attributes' => array()), + ), 'tablesort_indicator' => array( 'variables' => array('style' => NULL), ), diff --git a/core/includes/theme.inc b/core/includes/theme.inc index 40c4f35c4a93..de695a46ba1d 100644 --- a/core/includes/theme.inc +++ b/core/includes/theme.inc @@ -2142,6 +2142,49 @@ function theme_progress_bar($variables) { return $output; } +/** + * Returns HTML for a meter. + * + * @param $variables + * An associative array containing: + * - display_value: The textual representation of the meter bar. + * - form: A string specifying one or more forms to which the element + * belongs separated by spaces. + * - high: A number specifying the range that is considered to be a high + * value. + * - low: A number specifying the range that is considered to be a low value. + * - max: A number specifying the maximum value of the range. + * - min: A number specifying the minimum value of the range. + * - optimum: A number specifying what value is the optimal value for the + * gauge. + * - value: A number specifying the current value of the gauge. + * - percentage: A number specifying the current percentage of the gauge. + * - attributes: Associative array of attributes to be placed in the meter + * tag. + */ +function theme_meter($variables) { + $attributes = $variables['attributes']; + + foreach (array('form', 'high', 'low', 'max', 'min', 'optimum', 'value') as $attribute) { + if (!empty($variables[$attribute])) { + // This function was initially designed for the tag, but due to + // the lack of browser and styling support for it, we're currently using + // it's attributes as HTML5 data attributes. + $attributes['data-' . $attribute] = $variables[$attribute]; + } + } + + $output = ''; + $output .= '
'; + $output .= "\n"; + + if (!empty($variables['display_value'])) { + $output .= '
' . $variables['display_value'] . '
'; + } + + return $output; +} + /** * Returns HTML for an indentation div; used for drag and drop tables. * diff --git a/core/modules/poll/poll-bar--block.tpl.php b/core/modules/poll/poll-bar--block.tpl.php deleted file mode 100644 index 3b91afc3a052..000000000000 --- a/core/modules/poll/poll-bar--block.tpl.php +++ /dev/null @@ -1,26 +0,0 @@ - - -
-
-
-
-
- % -
diff --git a/core/modules/poll/poll-bar.tpl.php b/core/modules/poll/poll-bar.tpl.php deleted file mode 100644 index 9426ff59f2a6..000000000000 --- a/core/modules/poll/poll-bar.tpl.php +++ /dev/null @@ -1,26 +0,0 @@ - - -
-
-
-
-
- % () -
diff --git a/core/modules/poll/poll-results--block.tpl.php b/core/modules/poll/poll-results--block.tpl.php deleted file mode 100644 index f8387f5657c8..000000000000 --- a/core/modules/poll/poll-results--block.tpl.php +++ /dev/null @@ -1,28 +0,0 @@ - - -
-
- -
- $votes)); ?> -
-
- diff --git a/core/modules/poll/poll-results.tpl.php b/core/modules/poll/poll-results.tpl.php index 5e14dec21e42..bb4cee38292c 100644 --- a/core/modules/poll/poll-results.tpl.php +++ b/core/modules/poll/poll-results.tpl.php @@ -17,7 +17,10 @@ * @see template_preprocess_poll_results() */ ?> -
+
+ +

+
$votes)); ?> @@ -25,4 +28,7 @@ -
+
+ + + diff --git a/core/modules/poll/poll-rtl.css b/core/modules/poll/poll-rtl.css index 14d42e691a76..1d215d7d6291 100644 --- a/core/modules/poll/poll-rtl.css +++ b/core/modules/poll/poll-rtl.css @@ -5,6 +5,6 @@ .poll .percent { text-align: left; } -.poll .vote-form .choices { +.poll .vote-form { text-align: right; } diff --git a/core/modules/poll/poll-vote.tpl.php b/core/modules/poll/poll-vote.tpl.php index 068ff7c05352..a749f918366d 100644 --- a/core/modules/poll/poll-vote.tpl.php +++ b/core/modules/poll/poll-vote.tpl.php @@ -14,16 +14,16 @@ * @see template_preprocess_poll_vote() */ ?> -
+
-
- -
- - -
+ + +

+ + +
-
+ diff --git a/core/modules/poll/poll.css b/core/modules/poll/poll.css index 8b04e380911e..6abcaf5a1e84 100644 --- a/core/modules/poll/poll.css +++ b/core/modules/poll/poll.css @@ -24,12 +24,10 @@ .poll .vote-form { text-align: center; } -.poll .vote-form .choices { +.poll .vote-form { text-align: left; /* LTR */ - margin: 0 auto; - display: table; } -.poll .vote-form .choices .title { +.poll .vote-form .poll-title { font-weight: bold; } .node-form #edit-poll-more { diff --git a/core/modules/poll/poll.module b/core/modules/poll/poll.module index 40a481a5825e..886230860e15 100644 --- a/core/modules/poll/poll.module +++ b/core/modules/poll/poll.module @@ -42,25 +42,8 @@ function poll_theme() { 'template' => 'poll-results', 'variables' => array('raw_title' => NULL, 'results' => NULL, 'votes' => NULL, 'raw_links' => NULL, 'block' => NULL, 'nid' => NULL, 'vote' => NULL), ), - 'poll_bar' => array( - 'template' => 'poll-bar', - 'variables' => array('title' => NULL, 'votes' => NULL, 'total_votes' => NULL, 'vote' => NULL, 'block' => NULL), - ), - ); - // The theme system automatically discovers the theme's functions and - // templates that implement more targeted "suggestions" of generic theme - // hooks. But suggestions implemented by a module must be explicitly - // registered. - $theme_hooks += array( - 'poll_results__block' => array( - 'template' => 'poll-results--block', - 'variables' => $theme_hooks['poll_results']['variables'], - ), - 'poll_bar__block' => array( - 'template' => 'poll-bar--block', - 'variables' => $theme_hooks['poll_bar']['variables'], - ), ); + return $theme_hooks; } @@ -832,15 +815,25 @@ function poll_view_results($node, $view_mode, $block = FALSE) { } } - $poll_results = ''; + $poll_results = array(); foreach ($node->choice as $i => $choice) { - if (!empty($choice['chtext'])) { - $chvotes = isset($choice['chvotes']) ? $choice['chvotes'] : NULL; - $poll_results .= theme('poll_bar', array('title' => $choice['chtext'], 'votes' => $chvotes, 'total_votes' => $total_votes, 'vote' => isset($node->vote) && $node->vote == $i, 'block' => $block)); - } + $chvotes = isset($choice['chvotes']) ? $choice['chvotes'] : NULL; + $percentage = round($chvotes * 100 / max($total_votes, 1)); + $display_votes = !$block ? ' (' . format_plural($chvotes, '1 vote', '@count votes') . ')' : ''; + + $poll_results[] = array( + '#theme' => 'meter', + '#prefix' => '
' . check_plain($choice['chtext']) . '
', + '#display_value' => t('!percentage%', array('!percentage' => $percentage)) . $display_votes, + '#min' => 0, + '#max' => $total_votes, + '#value' => $chvotes, + '#percentage' => $percentage, + '#attributes' => array('class' => 'bar'), + ); } - return theme('poll_results', array('raw_title' => $node->title, 'results' => $poll_results, 'votes' => $total_votes, 'raw_links' => isset($node->links) ? $node->links : array(), 'block' => $block, 'nid' => $node->nid, 'vote' => isset($node->vote) ? $node->vote : NULL)); + return theme('poll_results', array('raw_title' => $node->title, 'results' => drupal_render($poll_results), 'votes' => $total_votes, 'raw_links' => isset($node->links) ? $node->links : array(), 'block' => $block, 'nid' => $node->nid, 'vote' => isset($node->vote) ? $node->vote : NULL)); } @@ -917,27 +910,6 @@ function template_preprocess_poll_results(&$variables) { $variables['cancel_form'] = drupal_render($elements); } $variables['title'] = check_plain($variables['raw_title']); - - if ($variables['block']) { - $variables['theme_hook_suggestions'][] = 'poll_results__block'; - } -} - -/** - * Preprocess the poll_bar theme hook. - * - * Inputs: $title, $votes, $total_votes, $voted, $block - * - * @see poll-bar.tpl.php - * @see poll-bar--block.tpl.php - * @see theme_poll_bar() - */ -function template_preprocess_poll_bar(&$variables) { - if ($variables['block']) { - $variables['theme_hook_suggestions'][] = 'poll_bar__block'; - } - $variables['title'] = check_plain($variables['title']); - $variables['percentage'] = round($variables['votes'] * 100 / max($variables['total_votes'], 1)); } /** diff --git a/core/modules/poll/poll.test b/core/modules/poll/poll.test index 3fad677feba7..78af995c56cb 100644 --- a/core/modules/poll/poll.test +++ b/core/modules/poll/poll.test @@ -228,10 +228,10 @@ class PollCreateTestCase extends PollTestCase { $this->clickLink($title); $this->assertText($new_option, 'New option found.'); - $option = $this->xpath('//div[@id="node-1"]//div[@class="poll"]//div[@class="text"]'); + $option = $this->xpath('//div[@id="node-1"]//article[@class="poll"]//div[@class="choice-title"]'); $this->assertEqual(end($option), $new_option, 'Last item is equal to new option.'); - $votes = $this->xpath('//div[@id="node-1"]//div[@class="poll"]//div[@class="percent"]'); + $votes = $this->xpath('//div[@id="node-1"]//article[@class="poll"]//div[@class="percent"]'); $this->assertTrue(strpos(end($votes), $vote_count) > 0, t("Votes saved.")); } diff --git a/core/themes/bartik/css/style.css b/core/themes/bartik/css/style.css index cafd744579f9..25a29edbd0ee 100644 --- a/core/themes/bartik/css/style.css +++ b/core/themes/bartik/css/style.css @@ -1584,8 +1584,6 @@ div.admin-panel .description { } .poll .vote-form { text-align: left; /* LTR */ -} -.poll .vote-form .choices { margin: 0; } .poll .percent { @@ -1596,7 +1594,7 @@ div.admin-panel .description { float: right; text-align: right; } -.poll .text { +.poll .choice-title { clear: right; margin-right: 2.25em; } From 823ff6a19b841500f6f92b149df949d092420704 Mon Sep 17 00:00:00 2001 From: Dries Date: Thu, 2 Feb 2012 10:49:10 -0500 Subject: [PATCH 02/37] - Patch #1290506 by droplet, mike stewart, bvirtual: remove webkit-specific border radius from CSS. --- core/modules/block/block.admin.css | 1 - core/modules/contextual/contextual-rtl.css | 2 -- core/modules/contextual/contextual.css | 7 ------ core/modules/dashboard/dashboard.css | 1 - core/modules/overlay/overlay-child-rtl.css | 1 - core/modules/overlay/overlay-child.css | 5 ---- core/modules/shortcut/shortcut-rtl.css | 2 -- core/modules/shortcut/shortcut.css | 4 ---- core/modules/system/system.theme.css | 1 - core/modules/toolbar/toolbar.css | 1 - core/themes/bartik/color/preview.css | 2 -- core/themes/bartik/css/style.css | 28 ---------------------- core/themes/seven/jquery.ui.theme.css | 5 ---- core/themes/seven/style.css | 10 -------- 14 files changed, 70 deletions(-) diff --git a/core/modules/block/block.admin.css b/core/modules/block/block.admin.css index 214c8a25e0a0..85c2c5fbbfb2 100644 --- a/core/modules/block/block.admin.css +++ b/core/modules/block/block.admin.css @@ -20,7 +20,6 @@ a.block-demo-backlink:link, a.block-demo-backlink:visited { background-color: #B4D7F0; -moz-border-radius: 0 0 10px 10px; - -webkit-border-radius: 0 0 10px 10px; border-radius: 0 0 10px 10px; color: #000; font-family: "Lucida Grande", Verdana, sans-serif; diff --git a/core/modules/contextual/contextual-rtl.css b/core/modules/contextual/contextual-rtl.css index aecbee043a3b..dfb6dda2d857 100644 --- a/core/modules/contextual/contextual-rtl.css +++ b/core/modules/contextual/contextual-rtl.css @@ -9,8 +9,6 @@ div.contextual-links-wrapper { } div.contextual-links-wrapper ul.contextual-links { -moz-border-radius: 0 4px 4px 4px; - -webkit-border-top-left-radius: 0; - -webkit-border-top-right-radius: 4px; border-radius: 0 4px 4px 4px; left: 0; right: auto; diff --git a/core/modules/contextual/contextual.css b/core/modules/contextual/contextual.css index 428589242622..a48932beb380 100644 --- a/core/modules/contextual/contextual.css +++ b/core/modules/contextual/contextual.css @@ -40,7 +40,6 @@ a.contextual-links-trigger { width: 28px; overflow: hidden; -moz-border-radius: 4px; - -webkit-border-radius: 4px; border-radius: 4px; } a.contextual-links-trigger:hover, @@ -54,8 +53,6 @@ div.contextual-links-active a.contextual-links-trigger { position: relative; z-index: 1; -moz-border-radius: 4px 4px 0 0; - -webkit-border-bottom-left-radius: 0; - -webkit-border-bottom-right-radius: 0; border-radius: 4px 4px 0 0; } div.contextual-links-wrapper ul.contextual-links { @@ -70,10 +67,6 @@ div.contextual-links-wrapper ul.contextual-links { top: 18px; white-space: nowrap; -moz-border-radius: 4px 0 4px 4px; /* LTR */ - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; - -webkit-border-top-right-radius: 0; /* LTR */ - -webkit-border-top-left-radius: 4px; /* LTR */ border-radius: 4px 0 4px 4px; /* LTR */ } .contextual-links-region:hover a.contextual-links-trigger, diff --git a/core/modules/dashboard/dashboard.css b/core/modules/dashboard/dashboard.css index e94964091cbe..0570f7e5a985 100644 --- a/core/modules/dashboard/dashboard.css +++ b/core/modules/dashboard/dashboard.css @@ -34,7 +34,6 @@ #dashboard .block-placeholder { background: #E2E1DC; -moz-border-radius: 4px; - -webkit-border-radius: 4px; border-radius: 4px; float: left; /* LTR */ margin: 3px 3px 3px 0; /* LTR */ diff --git a/core/modules/overlay/overlay-child-rtl.css b/core/modules/overlay/overlay-child-rtl.css index 7fd39f44031c..2bc55486f983 100644 --- a/core/modules/overlay/overlay-child-rtl.css +++ b/core/modules/overlay/overlay-child-rtl.css @@ -19,7 +19,6 @@ html { #overlay-close:hover { background: transparent url(images/close-rtl.png) no-repeat; -moz-border-radius-topright: 0; - -webkit-border-top-right-radius: 0; border-top-right-radius: 0; } diff --git a/core/modules/overlay/overlay-child.css b/core/modules/overlay/overlay-child.css index a402938b9221..f760c26d25e9 100644 --- a/core/modules/overlay/overlay-child.css +++ b/core/modules/overlay/overlay-child.css @@ -65,7 +65,6 @@ #overlay-close:hover { background: transparent url(images/close.png) no-repeat; /* LTR */ -moz-border-radius-topleft: 0; /* LTR */ - -webkit-border-top-left-radius: 0; /* LTR */ border-top-left-radius: 0; /* LTR */ display: block; height: 26px; @@ -98,8 +97,6 @@ #overlay-tabs li a:hover { background-color: #a6a7a2; -moz-border-radius: 8px 8px 0 0; - -webkit-border-top-left-radius: 8px; - -webkit-border-top-right-radius: 8px; border-radius: 8px 8px 0 0; color: #000; display: inline-block; @@ -142,8 +139,6 @@ margin: -20px auto 20px; width: 80%; -moz-border-radius: 0 0 8px 8px; - -webkit-border-bottom-left-radius: 8px; - -webkit-border-bottom-right-radius: 8px; border-radius: 0 0 8px 8px; } .overlay-disable-message-focused { diff --git a/core/modules/shortcut/shortcut-rtl.css b/core/modules/shortcut/shortcut-rtl.css index 9e0c21dd1d52..bbae1b976014 100644 --- a/core/modules/shortcut/shortcut-rtl.css +++ b/core/modules/shortcut/shortcut-rtl.css @@ -31,8 +31,6 @@ .add-or-remove-shortcuts a:focus span.text, .add-or-remove-shortcuts a:hover span.text { -moz-border-radius: 5px 0 0 5px; - -webkit-border-top-left-radius: 5px; - -webkit-border-bottom-left-radius: 5px; border-radius: 5px 0 0 5px; padding-left: 6px; } diff --git a/core/modules/shortcut/shortcut.css b/core/modules/shortcut/shortcut.css index 91947f21a5a7..acc5e55ab4bc 100644 --- a/core/modules/shortcut/shortcut.css +++ b/core/modules/shortcut/shortcut.css @@ -23,7 +23,6 @@ padding: 0 5px 0 5px; margin-right: 5px; /* LTR */ -moz-border-radius: 5px; - -webkit-border-radius: 5px; border-radius: 5px; } @@ -45,7 +44,6 @@ height: 30px; margin-right: 5px; /* LTR */ -moz-border-radius: 5px; - -webkit-border-radius: 5px; border-radius: 5px; } @@ -90,8 +88,6 @@ padding-right: 6px; /* LTR */ cursor: pointer; -moz-border-radius: 0 5px 5px 0; /* LTR */ - -webkit-border-top-right-radius: 5px; /* LTR */ - -webkit-border-bottom-right-radius: 5px; /* LTR */ border-radius: 0 5px 5px 0; /* LTR */ } diff --git a/core/modules/system/system.theme.css b/core/modules/system/system.theme.css index a3461d60c9c2..c3913c16759e 100644 --- a/core/modules/system/system.theme.css +++ b/core/modules/system/system.theme.css @@ -231,7 +231,6 @@ th.checkbox { border-color: #666; margin: 0 0.2em; -moz-border-radius: 3px; - -webkit-border-radius: 3px; border-radius: 3px; } .progress .filled { diff --git a/core/modules/toolbar/toolbar.css b/core/modules/toolbar/toolbar.css index 4b62cded060e..80712bf3eb5b 100644 --- a/core/modules/toolbar/toolbar.css +++ b/core/modules/toolbar/toolbar.css @@ -109,7 +109,6 @@ body.toolbar-drawer { #toolbar div.toolbar-menu ul li a { padding: 0 10px; -moz-border-radius: 10px; - -webkit-border-radius: 10px; border-radius: 10px; } #toolbar div.toolbar-menu ul li a:focus, diff --git a/core/themes/bartik/color/preview.css b/core/themes/bartik/color/preview.css index 7861a1972eb4..a5d6a2f9f349 100644 --- a/core/themes/bartik/color/preview.css +++ b/core/themes/bartik/color/preview.css @@ -58,10 +58,8 @@ background: rgba(255, 255, 255, 0.7); text-shadow: 0 1px #eee; -moz-border-radius-topleft: 8px; - -webkit-border-top-left-radius: 8px; border-top-left-radius: 8px; -moz-border-radius-topright: 8px; - -webkit-border-top-right-radius: 8px; border-top-right-radius: 8px; } #preview-main-menu-links a:hover, diff --git a/core/themes/bartik/css/style.css b/core/themes/bartik/css/style.css index 25a29edbd0ee..850a69c2df2f 100644 --- a/core/themes/bartik/css/style.css +++ b/core/themes/bartik/css/style.css @@ -86,7 +86,6 @@ kbd { display: inline-block; padding: 0 6px; -moz-border-radius: 5px; - -webkit-border-radius: 5px; border-radius: 5px; } pre { @@ -279,10 +278,6 @@ ul.tips { padding: 1px 10px 2px 10px; text-decoration: none; -moz-border-radius: 0 0 10px 10px; - -webkit-border-top-left-radius: 0; - -webkit-border-top-right-radius: 0; - -webkit-border-bottom-left-radius: 10px; - -webkit-border-bottom-right-radius: 10px; border-radius: 0 0 10px 10px; } #skip-link a:hover, @@ -480,8 +475,6 @@ h1#site-name { text-shadow: 0 1px #eee; -moz-border-radius-topleft: 8px; -moz-border-radius-topright: 8px; - -webkit-border-top-left-radius: 8px; - -webkit-border-top-right-radius: 8px; border-top-left-radius: 8px; border-top-right-radius: 8px; } @@ -979,10 +972,8 @@ ul.links { margin: 0; text-shadow: 0 1px 0 #fff; -moz-border-radius-topleft: 6px; - -webkit-border-top-left-radius: 6px; border-top-left-radius: 6px; -moz-border-radius-topright: 6px; - -webkit-border-top-right-radius: 6px; border-top-right-radius: 6px; } .tabs ul.primary li.active a { @@ -1009,7 +1000,6 @@ ul.links { background: #f2f2f2; border-bottom: none; -moz-border-radius: 5px; - -webkit-border-radius: 5px; border-radius: 5px; } ul.action-links { @@ -1094,7 +1084,6 @@ a.button { margin-right: 0.6em; /* LTR */ padding: 4px 17px; -moz-border-radius: 20px; - -webkit-border-radius: 15px; border-radius: 15px; } a.button:link, @@ -1117,7 +1106,6 @@ fieldset { position: relative; top: 12px; /* Offsets the negative margin of legends */ -moz-border-radius: 4px; - -webkit-border-radius: 4px; border-radius: 4px; } .fieldset-wrapper { @@ -1131,8 +1119,6 @@ fieldset { padding: 1em 0 0.2em; -moz-border-radius-topright: 0; -moz-border-radius-topleft: 0; - -webkit-border-top-left-radius: 0; - -webkit-border-top-right-radius: 0; border-top-left-radius: 0; border-top-right-radius: 0; } @@ -1152,7 +1138,6 @@ fieldset { fieldset.collapsed { background: transparent; -moz-border-radius: 0; - -webkit-border-radius: 0; border-radius: 0; } fieldset legend { @@ -1172,15 +1157,12 @@ fieldset legend { top: -12px; width: 100%; -moz-border-radius-topleft: 4px; - -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; - -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; } fieldset.collapsed legend { -moz-border-radius: 4px; - -webkit-border-radius: 4px; border-radius: 4px; } fieldset legend a { @@ -1251,27 +1233,22 @@ input.form-submit:focus { .contact-form #edit-name { width: 75%; -moz-border-radius: 4px; - -webkit-border-radius: 4px; border-radius: 4px; } .contact-form #edit-mail { width: 75%; -moz-border-radius: 4px; - -webkit-border-radius: 4px; border-radius: 4px; } .contact-form #edit-subject { width: 75%; -moz-border-radius: 4px; - -webkit-border-radius: 4px; border-radius: 4px; } .contact-form #edit-message { width: 76.3%; -moz-border-radius-topleft: 4px; -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; } @@ -1279,8 +1256,6 @@ input.form-submit:focus { width: 76%; -moz-border-radius-bottomleft: 4px; -moz-border-radius-bottomright: 4px; - -webkit-border-bottom-left-radius: 4px; - -webkit-border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; border-bottom-right-radius: 4px; } @@ -1323,7 +1298,6 @@ input.form-button-disabled:active, .comment-form .form-select { margin: 0; -moz-border-radius: 4px; - -webkit-border-radius: 4px; border-radius: 4px; } .comment-form .form-type-textarea label { @@ -1368,8 +1342,6 @@ input.form-button-disabled:active, .comment-form .form-textarea { -moz-border-radius-topleft: 4px; -moz-border-radius-topright: 4px; - -webkit-border-top-left-radius: 4px; - -webkit-border-top-right-radius: 4px; border-top-left-radius: 4px; border-top-right-radius: 4px; } diff --git a/core/themes/seven/jquery.ui.theme.css b/core/themes/seven/jquery.ui.theme.css index c26046ae129a..35b505a6cc13 100644 --- a/core/themes/seven/jquery.ui.theme.css +++ b/core/themes/seven/jquery.ui.theme.css @@ -304,10 +304,8 @@ line-height: 20px; border-bottom: solid 1px #ccc; -moz-border-radius-bottomleft: 0; - -webkit-border-bottom-left-radius: 0; border-bottom-left-radius: 0; -moz-border-radius-bottomright: 0; - -webkit-border-bottom-right-radius: 0; border-bottom-right-radius: 0; } .ui-tabs .ui-tabs-nav li { @@ -319,7 +317,6 @@ float: none; padding: 0 10px; -moz-border-radius: 10px; - -webkit-border-radius: 10px; border-radius: 10px; } .ui-tabs .ui-tabs-nav li.ui-tabs-selected a { @@ -366,7 +363,6 @@ border-right-color: #D2D2D2; background: url(images/buttons.png) 0 0 repeat-x; -moz-border-radius: 20px; - -webkit-border-radius: 20px; border-radius: 20px; } .ui-dialog .ui-dialog-buttonpane button:active { @@ -398,7 +394,6 @@ border-right-color: #D2D2D2; background: url(images/buttons.png) 0 0 repeat-x; -moz-border-radius: 4px; - -webkit-border-radius: 4px; border-radius: 4px; } .ui-slider a.ui-state-active, diff --git a/core/themes/seven/style.css b/core/themes/seven/style.css index 1a85b38b3cc1..301659c4b13e 100644 --- a/core/themes/seven/style.css +++ b/core/themes/seven/style.css @@ -166,10 +166,6 @@ pre { padding: 1px 10px 2px 10px; /* LTR */ text-decoration: none; -moz-border-radius: 0 0 10px 10px; - -webkit-border-top-left-radius: 0; - -webkit-border-top-right-radius: 0; - -webkit-border-bottom-left-radius: 10px; - -webkit-border-bottom-right-radius: 10px; border-radius: 0 0 10px 10px; } #skip-link a:hover, @@ -288,8 +284,6 @@ ul.primary li.active a { border-style: solid; border-color: #a6a7a2; -moz-border-radius: 8px 8px 0 0; - -webkit-border-top-left-radius: 8px; - -webkit-border-top-right-radius: 8px; border-radius: 8px 8px 0 0; } ul.primary li.active a, @@ -331,7 +325,6 @@ ul.secondary li.active a, ul.secondary li.active a.active { padding: 2px 10px; -moz-border-radius: 7px; - -webkit-border-radius: 7px; border-radius: 7px; } ul.secondary li a:hover, @@ -368,7 +361,6 @@ ul.secondary li.active a.active { width: 80px; overflow: hidden; -moz-border-radius: 5px; - -webkit-border-radius: 5px; border-radius: 5px; } #secondary-links ul.links li a:hover { @@ -663,7 +655,6 @@ a.button { border-right-color: #d2d2d2; background: url(images/buttons.png) 0 0 repeat-x; -moz-border-radius: 20px; - -webkit-border-radius: 20px; border-radius: 20px; } a.button:link, @@ -1003,6 +994,5 @@ div.add-or-remove-shortcuts { background-color: #59a0d8; color: #fff; -moz-border-radius: 8px; - -webkit-border-radius: 8px; border-radius: 8px; } From 82cb7cf5e8ea14ad413f56dcfa4c4fac64682933 Mon Sep 17 00:00:00 2001 From: Dries Date: Thu, 2 Feb 2012 11:08:57 -0500 Subject: [PATCH 03/37] =?UTF-8?q?-=20Patch=20#1414314=20by=20G=C3=A1bor=20?= =?UTF-8?q?Hojtsy,=20tstoeckler:=20make=20node=20and=20path=20depend=20on?= =?UTF-8?q?=20language=20module=20only=20for=20language=20support,=20get?= =?UTF-8?q?=20rid=20of=20locale=5Flanguage=5Fname().?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/includes/bootstrap.inc | 35 +++++++++++++++++++++ core/modules/language/language.module | 14 --------- core/modules/locale/locale.module | 12 ++----- core/modules/node/node.admin.inc | 15 +++------ core/modules/path/path.admin.inc | 19 ++++++----- core/modules/translation/translation.module | 2 +- 6 files changed, 54 insertions(+), 43 deletions(-) diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc index 952b4ea36b50..dcea7f430910 100644 --- a/core/includes/bootstrap.inc +++ b/core/includes/bootstrap.inc @@ -2703,6 +2703,41 @@ function language_list($only_enabled = FALSE) { return $only_enabled ? $languages['enabled'] : $languages['all']; } +/** + * Loads a language object from the database. + * + * @param $langcode + * The language code. + * + * @return + * A fully-populated language object or FALSE. + */ +function language_load($langcode) { + $languages = language_list(); + return isset($languages[$langcode]) ? $languages[$langcode] : FALSE; +} + +/** + * Produced the printed name for a language for display. + * + * @param $langcode + * The language code. + * + * @return + * The printed name of the language. + */ +function language_name($langcode) { + if ($langcode == LANGUAGE_NONE) { + return t('None'); + } + + if ($language = language_load($langcode)) { + return $language->name; + } + + return t('Unknown (@langcode)', array('@langcode' => $langcode)); +} + /** * Returns the default language used on the site. * diff --git a/core/modules/language/language.module b/core/modules/language/language.module index 44d59176dc43..22da412742ac 100644 --- a/core/modules/language/language.module +++ b/core/modules/language/language.module @@ -100,20 +100,6 @@ function language_theme() { ); } -/** - * Loads a language object from the database. - * - * @param $langcode - * The language code. - * - * @return - * A fully-populated language object or FALSE. - */ -function language_load($langcode) { - $languages = language_list(); - return isset($languages[$langcode]) ? $languages[$langcode] : FALSE; -} - /** * API function to add or update a language. * diff --git a/core/modules/locale/locale.module b/core/modules/locale/locale.module index a712c49f7cd6..f97be6fe42ff 100644 --- a/core/modules/locale/locale.module +++ b/core/modules/locale/locale.module @@ -297,7 +297,6 @@ function locale_form_alter(&$form, &$form_state, $form_id) { function locale_form_node_form_alter(&$form, &$form_state) { 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; } @@ -306,6 +305,8 @@ function locale_form_node_form_alter(&$form, &$form_state) { '#title' => t('Language'), '#default_value' => (isset($form['#node']->language) ? $form['#node']->language : ''), '#options' => $language_options, + '#empty_value' => LANGUAGE_NONE, + '#empty_option' => t('- None -'), ); } // Node type without language selector: assign the default for new nodes @@ -768,15 +769,6 @@ function locale_get_plural($count, $langcode = NULL) { } -/** - * Returns a language name. - */ -function locale_language_name($langcode) { - // Consider enabled languages only. - $languages = language_list(TRUE); - return ($langcode && isset($languages[$langcode])) ? $languages[$langcode]->name : t('All'); -} - /** * Implements hook_modules_installed(). */ diff --git a/core/modules/node/node.admin.inc b/core/modules/node/node.admin.inc index 9b1968f094e3..e197f6065cc6 100644 --- a/core/modules/node/node.admin.inc +++ b/core/modules/node/node.admin.inc @@ -107,14 +107,14 @@ function node_filters() { // Language filter if the site is multilingual. if (language_multilingual()) { $languages = language_list(TRUE); - $language_options = array(LANGUAGE_NONE => t('Language neutral')); + $language_options = array(LANGUAGE_NONE => t('- None -')); foreach ($languages as $langcode => $language) { $language_options[$langcode] = $language->name; } $filters['language'] = array( 'title' => t('language'), 'options' => array( - '[any]' => t('any'), + '[any]' => t('- Any -'), ) + $language_options, ); } @@ -173,7 +173,7 @@ function node_filter_form() { $value = $value->name; } elseif ($type == 'language') { - $value = $value == LANGUAGE_NONE ? t('Language neutral') : module_invoke('locale', 'language_name', $value); + $value = language_name($value); } else { $value = $filters[$type]['options'][$value]; @@ -446,7 +446,7 @@ function node_admin_nodes() { 'changed' => array('data' => t('Updated'), 'field' => 'n.changed', 'sort' => 'desc') ); if ($multilanguage) { - $header['language'] = array('data' => t('Language'), 'field' => 'n.language'); + $header['language_name'] = array('data' => t('Language'), 'field' => 'n.language'); } $header['operations'] = array('data' => t('Operations')); @@ -498,12 +498,7 @@ function node_admin_nodes() { 'changed' => format_date($node->changed, 'short'), ); if ($multilanguage) { - if ($node->language == LANGUAGE_NONE || isset($languages[$node->language])) { - $options[$node->nid]['language'] = $node->language == LANGUAGE_NONE ? t('Language neutral') : $languages[$node->language]->name; - } - else { - $options[$node->nid]['language'] = t('Undefined language (@langcode)', array('@langcode' => $node->language)); - } + $options[$node->nid]['language_name'] = language_name($node->language); } // Build a list of all the accessible operations for the current node. $operations = array(); diff --git a/core/modules/path/path.admin.inc b/core/modules/path/path.admin.inc index 4bca34ad4786..511c26d5963b 100644 --- a/core/modules/path/path.admin.inc +++ b/core/modules/path/path.admin.inc @@ -14,9 +14,10 @@ function path_admin_overview($keys = NULL) { // Add the filter form above the overview table. $build['path_admin_filter_form'] = drupal_get_form('path_admin_filter_form', $keys); - // Enable language column if locale is enabled or if we have any alias with language + // Enable language column if language.module is enabled or if we have any + // alias with a language. $alias_exists = (bool) db_query_range('SELECT 1 FROM {url_alias} WHERE langcode <> :langcode', 0, 1, array(':langcode' => LANGUAGE_NONE))->fetchField(); - $multilanguage = (module_exists('locale') || $alias_exists); + $multilanguage = (module_exists('language') || $alias_exists); $header = array(); $header[] = array('data' => t('Alias'), 'field' => 'alias', 'sort' => 'asc'); @@ -44,7 +45,7 @@ function path_admin_overview($keys = NULL) { $row['data']['alias'] = l($data->alias, $data->source); $row['data']['source'] = l($data->source, $data->source, array('alias' => TRUE)); if ($multilanguage) { - $row['data']['langcode'] = module_invoke('locale', 'language_name', $data->langcode); + $row['data']['language_name'] = language_name($data->langcode); } $operations = array(); @@ -130,10 +131,9 @@ function path_admin_form($form, &$form_state, $path = array('source' => '', 'ali '#required' => TRUE, ); - // A hidden value unless locale module is enabled. - if (module_exists('locale')) { + // A hidden value unless language.module is enabled. + if (module_exists('language')) { $languages = language_list(TRUE); - $language_options = array(LANGUAGE_NONE => t('All languages')); foreach ($languages as $langcode => $language) { $language_options[$langcode] = $language->name; } @@ -142,9 +142,11 @@ function path_admin_form($form, &$form_state, $path = array('source' => '', 'ali '#type' => 'select', '#title' => t('Language'), '#options' => $language_options, + '#empty_value' => LANGUAGE_NONE, + '#empty_option' => t('- None -'), '#default_value' => $path['langcode'], '#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 All languages.'), + '#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 as - None -.'), ); } else { @@ -194,7 +196,8 @@ function path_admin_form_validate($form, &$form_state) { $source = drupal_get_normal_path($source); $alias = $form_state['values']['alias']; $pid = isset($form_state['values']['pid']) ? $form_state['values']['pid'] : 0; - // Language is only set if locale module is enabled, otherwise save for all languages. + // Language is only set if language.module is enabled, otherwise save for all + // languages. $langcode = isset($form_state['values']['langcode']) ? $form_state['values']['langcode'] : LANGUAGE_NONE; $has_alias = db_query("SELECT COUNT(alias) FROM {url_alias} WHERE pid <> :pid AND alias = :alias AND langcode = :langcode", array( diff --git a/core/modules/translation/translation.module b/core/modules/translation/translation.module index 30ceee8b0e78..da719aa13ca9 100644 --- a/core/modules/translation/translation.module +++ b/core/modules/translation/translation.module @@ -139,7 +139,7 @@ function translation_form_node_form_alter(&$form, &$form_state) { // might need to distinguish between enabled and disabled languages, hence // we divide them in two option groups. if ($translator_widget) { - $options = array($groups[1] => array(LANGUAGE_NONE => t('Language neutral'))); + $options = array($groups[1] => array(LANGUAGE_NONE => t('- None -'))); foreach (array(1, 0) as $status) { $group = $groups[$status]; foreach ($grouped_languages[$status] as $langcode => $language) { From 9ec7d24763e7047bbedb797650f65b0f34c4bc08 Mon Sep 17 00:00:00 2001 From: Dries Date: Thu, 2 Feb 2012 11:20:14 -0500 Subject: [PATCH 04/37] - Patch #1423510 by oriol_e9g: undefined var in prepareInstallDirectory. --- core/includes/updater.inc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/includes/updater.inc b/core/includes/updater.inc index 9801629b178c..d4f99e9741a6 100644 --- a/core/includes/updater.inc +++ b/core/includes/updater.inc @@ -330,7 +330,7 @@ class Updater { } catch (FileTransferException $e) { $message = t($e->getMessage(), $e->arguments); - $throw_message = t('Unable to create %directory due to the following: %reason', array('%directory' => $install_location, '%reason' => $message)); + $throw_message = t('Unable to create %directory due to the following: %reason', array('%directory' => $directory, '%reason' => $message)); throw new UpdaterException($throw_message); } } From 31544e56ff5ac9966730d84f58f7275e83baa7c7 Mon Sep 17 00:00:00 2001 From: Dries Date: Thu, 2 Feb 2012 11:38:57 -0500 Subject: [PATCH 05/37] - Patch #1417754 by mkadin: hook_menu() docs need to explain that options don't work for tabs. --- core/modules/system/system.api.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/modules/system/system.api.php b/core/modules/system/system.api.php index 34df7bafe384..8947ac1cc8ea 100644 --- a/core/modules/system/system.api.php +++ b/core/modules/system/system.api.php @@ -790,7 +790,8 @@ function hook_menu_get_item_alter(&$router_item, $path, $original_map) { * "default" task, which should display the same page as the parent item. * If the "type" element is omitted, MENU_NORMAL_ITEM is assumed. * - "options": An array of options to be passed to l() when generating a link - * from this menu item. + * from this menu item. Note that the "options" parameter has no effect on + * MENU_LOCAL_TASK, MENU_DEFAULT_LOCAL_TASK, and MENU_LOCAL_ACTION items. * * For a detailed usage example, see page_example.module. * For comprehensive documentation on the menu system, see From f7daf3453b05f8fc386520d17f84a6e92b5d9f1f Mon Sep 17 00:00:00 2001 From: Dries Date: Thu, 2 Feb 2012 13:09:46 -0500 Subject: [PATCH 06/37] - Patch #598414 by Tor Arne Thune, Dave Reid: Fixed Links in the update results page lead to 403s. --- core/modules/system/system.test | 52 ++++++++++++++++++++++++++++++++- core/update.php | 8 +++-- 2 files changed, 56 insertions(+), 4 deletions(-) diff --git a/core/modules/system/system.test b/core/modules/system/system.test index af6c27094378..ba7003dc5c83 100644 --- a/core/modules/system/system.test +++ b/core/modules/system/system.test @@ -2109,7 +2109,7 @@ class UpdateScriptFunctionalTest extends DrupalWebTestCase { } function setUp() { - parent::setUp('update_script_test'); + parent::setUp(array('update_script_test', 'dblog')); $this->update_url = $GLOBALS['base_url'] . '/core/update.php'; $this->update_user = $this->drupalCreateUser(array('administer software updates')); } @@ -2210,6 +2210,56 @@ class UpdateScriptFunctionalTest extends DrupalWebTestCase { $final_theme_data = db_query("SELECT * FROM {system} WHERE type = 'theme' ORDER BY name")->fetchAll(); $this->assertEqual($original_theme_data, $final_theme_data, t('Visiting update.php does not alter the information about themes stored in the database.')); } + + /** + * Tests update.php when there are no updates to apply. + */ + function testNoUpdateFunctionality() { + // Click through update.php with 'administer software updates' permission. + $this->drupalLogin($this->update_user); + $this->drupalPost($this->update_url, array(), t('Continue'), array('external' => TRUE)); + $this->assertText(t('No pending updates.')); + $this->assertNoLink('Administration pages'); + $this->clickLink('Front page'); + $this->assertResponse(200); + + // Click through update.php with 'access administration pages' permission. + $admin_user = $this->drupalCreateUser(array('administer software updates', 'access administration pages')); + $this->drupalLogin($admin_user); + $this->drupalPost($this->update_url, array(), t('Continue'), array('external' => TRUE)); + $this->assertText(t('No pending updates.')); + $this->clickLink('Administration pages'); + $this->assertResponse(200); + } + + /** + * Tests update.php after performing a successful update. + */ + function testSuccessfulUpdateFunctionality() { + drupal_set_installed_schema_version('update_script_test', drupal_get_installed_schema_version('update_script_test') - 1); + // Click through update.php with 'administer software updates' permission. + $this->drupalLogin($this->update_user); + $this->drupalPost($this->update_url, array(), t('Continue'), array('external' => TRUE)); + $this->drupalPost(NULL, array(), t('Apply pending updates')); + $this->assertText('Updates were attempted.'); + $this->assertLink('site'); + $this->assertNoLink('Administration pages'); + $this->assertNoLink('logged'); + $this->clickLink('Front page'); + $this->assertResponse(200); + + drupal_set_installed_schema_version('update_script_test', drupal_get_installed_schema_version('update_script_test') - 1); + // Click through update.php with 'access administration pages' and + // 'access site reports' permissions. + $admin_user = $this->drupalCreateUser(array('administer software updates', 'access administration pages', 'access site reports')); + $this->drupalLogin($admin_user); + $this->drupalPost($this->update_url, array(), t('Continue'), array('external' => TRUE)); + $this->drupalPost(NULL, array(), t('Apply pending updates')); + $this->assertText('Updates were attempted.'); + $this->assertLink('logged'); + $this->clickLink('Administration pages'); + $this->assertResponse(200); + } } /** diff --git a/core/update.php b/core/update.php index dd338a209f21..e7e4e5c343ed 100644 --- a/core/update.php +++ b/core/update.php @@ -148,7 +148,9 @@ function update_helpful_links() { // NOTE: we can't use l() here because the URL would point to // 'core/update.php?q=admin'. $links[] = 'Front page'; - $links[] = 'Administration pages'; + if (user_access('access administration pages')) { + $links[] = 'Administration pages'; + } return $links; } @@ -158,7 +160,7 @@ function update_results_page() { update_task_list(); // Report end result. - if (module_exists('dblog')) { + if (module_exists('dblog') && user_access('access site reports')) { $log_message = ' All errors have been logged.'; } else { @@ -166,7 +168,7 @@ function update_results_page() { } if ($_SESSION['update_success']) { - $output = '

Updates were attempted. If you see no failures below, you may proceed happily to the administration pages. Otherwise, you may need to update your database manually.' . $log_message . '

'; + $output = '

Updates were attempted. If you see no failures below, you may proceed happily back to your site. Otherwise, you may need to update your database manually.' . $log_message . '

'; } else { list($module, $version) = array_pop(reset($_SESSION['updates_remaining'])); From 7500befb81710dc50a734e2398ba19ba213f8fff Mon Sep 17 00:00:00 2001 From: Dries Date: Thu, 2 Feb 2012 13:13:06 -0500 Subject: [PATCH 07/37] - Patch #1319420 by nod_: multiple execution of tableselect.js with nested tables. --- core/misc/tableselect.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/misc/tableselect.js b/core/misc/tableselect.js index 904adb9dfba0..cc4beb0dc9d1 100644 --- a/core/misc/tableselect.js +++ b/core/misc/tableselect.js @@ -2,7 +2,8 @@ Drupal.behaviors.tableSelect = { attach: function (context, settings) { - $('table:has(th.select-all)', context).once('table-select', Drupal.tableSelect); + // Select the inner-most table in case of nested tables. + $('th.select-all', context).closest('table').once('table-select', Drupal.tableSelect); } }; From da5aa80e098147c4ca5a31cafe90212c8784a43e Mon Sep 17 00:00:00 2001 From: catch Date: Fri, 3 Feb 2012 22:52:24 +0900 Subject: [PATCH 08/37] Issue #1331370 by beejeebus, plach: Fixed [Upgrade path broken] Stored include paths need to be updated to /core before running the upgrade path. --- core/includes/update.inc | 22 ++++++++++++++++++ .../upgrade/drupal-7.filled.database.php.gz | Bin 78373 -> 84974 bytes 2 files changed, 22 insertions(+) diff --git a/core/includes/update.inc b/core/includes/update.inc index 613319acfd83..7859db1f3104 100644 --- a/core/includes/update.inc +++ b/core/includes/update.inc @@ -101,6 +101,12 @@ function update_prepare_d8_bootstrap() { ), ); if ($has_required_schema) { + // Bootstrap variables so we can update theme while preparing the update + // process. + drupal_bootstrap(DRUPAL_BOOTSTRAP_VARIABLES); + // Update the dynamic include paths that might be used before running the + // proper update functions. + update_prepare_stored_includes(); // Update the environment for the language bootstrap if needed. update_prepare_d8_language(); @@ -127,6 +133,22 @@ function update_prepare_d8_bootstrap() { } } +/** + * Fix stored include paths to match the "/core" migration. + */ +function update_prepare_stored_includes() { + // Update language negotiation settings. + foreach (language_types() as $language_type) { + $negotiation = variable_get("language_negotiation_$language_type", array()); + foreach ($negotiation as $id => &$provider) { + if (isset($negotiation[$id]['file']) && $negotiation[$id]['file'] == 'includes/locale.inc') { + $negotiation[$id]['file'] = 'core/includes/locale.inc'; + } + } + variable_set("language_negotiation_$language_type", $negotiation); + } +} + /** * Prepare Drupal 8 language changes for the bootstrap if needed. */ diff --git a/core/modules/simpletest/tests/upgrade/drupal-7.filled.database.php.gz b/core/modules/simpletest/tests/upgrade/drupal-7.filled.database.php.gz index 8b8a73adefc187aa4977039051e1b2cab91440bd..99d20fc5eab9052bd81794d12f3b21f7d599d4d9 100644 GIT binary patch literal 84974 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,dCxJ2E{E&fJ4Bb_)yTub6qBjWY_m) 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

h;&Xu!UOX@QHxwq%jAeQN@)q96I{%$9z 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 literal 78373 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 From 869b5e1a7eef1310f877312de1f0dc66add66275 Mon Sep 17 00:00:00 2001 From: catch Date: Fri, 3 Feb 2012 23:16:11 +0900 Subject: [PATCH 09/37] Issue #761608 by JohnAlbin: Fixed Missing theme settings values because list_themes() has inconsistent theme object data. --- core/includes/module.inc | 24 ++++++++++ core/includes/theme.inc | 48 ++++++++++++++++++- core/modules/simpletest/tests/theme.test | 31 ++++++++++++ .../simpletest/tests/theme_test.module | 2 + .../tests/themes/test_theme/test_theme.info | 2 + core/modules/system/system.admin.inc | 2 +- core/modules/system/system.module | 43 +---------------- 7 files changed, 107 insertions(+), 45 deletions(-) diff --git a/core/includes/module.inc b/core/includes/module.inc index 1a52a8046d34..d61aba9a7e59 100644 --- a/core/includes/module.inc +++ b/core/includes/module.inc @@ -178,6 +178,30 @@ function system_list($type) { $lists['filepaths'][] = array('type' => $record->type, 'name' => $record->name, 'filepath' => $record->filename); } } + foreach ($lists['theme'] as $key => $theme) { + if (!empty($theme->info['base theme'])) { + // Make a list of the theme's base themes. + $lists['theme'][$key]->base_themes = drupal_find_base_themes($lists['theme'], $key); + // Don't proceed if there was a problem with the root base theme. + if (!current($lists['theme'][$key]->base_themes)) { + continue; + } + // Determine the root base theme. + $base_key = key($lists['theme'][$key]->base_themes); + // Add to the list of sub-themes for each of the theme's base themes. + foreach (array_keys($lists['theme'][$key]->base_themes) as $base_theme) { + $lists['theme'][$base_theme]->sub_themes[$key] = $lists['theme'][$key]->info['name']; + } + // Add the base theme's theme engine info. + $lists['theme'][$key]->info['engine'] = $lists['theme'][$base_key]->info['engine']; + } + else { + // A plain theme is its own base theme. + $base_key = $key; + } + // Set the theme engine prefix. + $lists['theme'][$key]->prefix = ($lists['theme'][$key]->info['engine'] == 'theme') ? $base_key : $lists['theme'][$key]->info['engine']; + } cache('bootstrap')->set('system_list', $lists); } // To avoid a separate database lookup for the filepath, prime the diff --git a/core/includes/theme.inc b/core/includes/theme.inc index 5088c4166835..9ce9289c9945 100644 --- a/core/includes/theme.inc +++ b/core/includes/theme.inc @@ -723,7 +723,7 @@ function _theme_build_registry($theme, $base_theme, $theme_engine) { * names of the themes and the values are objects having the following * properties: * - 'filename': The name of the .info file. - * - 'name': The name of the theme. + * - 'name': The machine name of the theme. * - 'status': 1 for enabled, 0 for disabled themes. * - 'info': The contents of the .info file. * - 'stylesheets': A two dimensional array, using the first key for the @@ -733,7 +733,10 @@ function _theme_build_registry($theme, $base_theme, $theme_engine) { * - 'scripts': An associative array of JavaScripts, using the filename as key * and the complete filepath as value. * - 'engine': The name of the theme engine. - * - 'base theme': The name of the base theme. + * - 'base_theme': The name of the base theme. + * - 'base_themes': An ordered array of all the base themes. If the first item + * is NULL, a base theme is missing for this theme. + * - 'sub_themes': An unordered array of sub-themes of this theme. */ function list_themes($refresh = FALSE) { $list = &drupal_static(__FUNCTION__, array()); @@ -789,6 +792,47 @@ function list_themes($refresh = FALSE) { return $list; } +/** + * Find all the base themes for the specified theme. + * + * Themes can inherit templates and function implementations from earlier themes. + * + * @param $themes + * An array of available themes. + * @param $key + * The name of the theme whose base we are looking for. + * @param $used_keys + * A recursion parameter preventing endless loops. + * @return + * Returns an array of all of the theme's ancestors; the first element's value + * will be NULL if an error occurred. + */ +function drupal_find_base_themes($themes, $key, $used_keys = array()) { + $base_key = $themes[$key]->info['base theme']; + // Does the base theme exist? + if (!isset($themes[$base_key])) { + return array($base_key => NULL); + } + + $current_base_theme = array($base_key => $themes[$base_key]->info['name']); + + // Is the base theme itself a child of another theme? + if (isset($themes[$base_key]->info['base theme'])) { + // Do we already know the base themes of this theme? + if (isset($themes[$base_key]->base_themes)) { + return $themes[$base_key]->base_themes + $current_base_theme; + } + // Prevent loops. + if (!empty($used_keys[$base_key])) { + return array($base_key => NULL); + } + $used_keys[$base_key] = TRUE; + return drupal_find_base_themes($themes, $base_key, $used_keys) + $current_base_theme; + } + // If we get here, then this is our parent theme. + return $current_base_theme; +} + /** * Generates themed output. * diff --git a/core/modules/simpletest/tests/theme.test b/core/modules/simpletest/tests/theme.test index 21a69bd0acef..cf7588546962 100644 --- a/core/modules/simpletest/tests/theme.test +++ b/core/modules/simpletest/tests/theme.test @@ -113,6 +113,37 @@ class ThemeUnitTest extends DrupalWebTestCase { $this->drupalGet('theme-test/template-test'); $this->assertText('Success: Template overridden.', t('Template overridden by defined \'template\' filename.')); } + + /** + * Test the list_themes() function. + */ + function testListThemes() { + $themes = list_themes(); + // Check if drupal_theme_access() retrieves enabled themes properly from list_themes(). + $this->assertTrue(drupal_theme_access('test_theme'), t('Enabled theme detected')); + // Check if list_themes() returns disabled themes. + $this->assertTrue(array_key_exists('test_basetheme', $themes), t('Disabled theme detected')); + // Check for base theme and subtheme lists. + $base_theme_list = array('test_basetheme' => 'Theme test base theme'); + $sub_theme_list = array('test_subtheme' => 'Theme test subtheme'); + $this->assertIdentical($themes['test_basetheme']->sub_themes, $sub_theme_list, t('Base theme\'s object includes list of subthemes.')); + $this->assertIdentical($themes['test_subtheme']->base_themes, $base_theme_list, t('Subtheme\'s object includes list of base themes.')); + // Check for theme engine in subtheme. + $this->assertIdentical($themes['test_subtheme']->engine, 'phptemplate', t('Subtheme\'s object includes the theme engine.')); + // Check for theme engine prefix. + $this->assertIdentical($themes['test_basetheme']->prefix, 'phptemplate', t('Base theme\'s object includes the theme engine prefix.')); + $this->assertIdentical($themes['test_subtheme']->prefix, 'phptemplate', t('Subtheme\'s object includes the theme engine prefix.')); + } + + /** + * Test the theme_get_setting() function. + */ + function testThemeGetSetting() { + $GLOBALS['theme_key'] = 'test_theme'; + $this->assertIdentical(theme_get_setting('theme_test_setting'), 'default value', t('theme_get_setting() uses the default theme automatically.')); + $this->assertNotEqual(theme_get_setting('subtheme_override', 'test_basetheme'), theme_get_setting('subtheme_override', 'test_subtheme'), t('Base theme\'s default settings values can be overridden by subtheme.')); + $this->assertIdentical(theme_get_setting('basetheme_only', 'test_subtheme'), 'base theme value', t('Base theme\'s default settings values are inherited by subtheme.')); + } } /** diff --git a/core/modules/simpletest/tests/theme_test.module b/core/modules/simpletest/tests/theme_test.module index 570b72ccadb1..365fd873a5b8 100644 --- a/core/modules/simpletest/tests/theme_test.module +++ b/core/modules/simpletest/tests/theme_test.module @@ -19,6 +19,8 @@ function theme_test_theme($existing, $type, $theme, $path) { */ function theme_test_system_theme_info() { $themes['test_theme'] = drupal_get_path('module', 'theme_test') . '/themes/test_theme/test_theme.info'; + $themes['test_basetheme'] = drupal_get_path('module', 'theme_test') . '/themes/test_basetheme/test_basetheme.info'; + $themes['test_subtheme'] = drupal_get_path('module', 'theme_test') . '/themes/test_subtheme/test_subtheme.info'; return $themes; } diff --git a/core/modules/simpletest/tests/themes/test_theme/test_theme.info b/core/modules/simpletest/tests/themes/test_theme/test_theme.info index c32fe57a629e..b5d1bfc9f3da 100644 --- a/core/modules/simpletest/tests/themes/test_theme/test_theme.info +++ b/core/modules/simpletest/tests/themes/test_theme/test_theme.info @@ -14,3 +14,5 @@ hidden = TRUE ; version from being loaded, and that errors aren't caused by the lack of this ; file within the theme folder. stylesheets[all][] = system.base.css + +settings[theme_test_setting] = default value diff --git a/core/modules/system/system.admin.inc b/core/modules/system/system.admin.inc index 4e8e936f0a6a..00c4c41edd26 100644 --- a/core/modules/system/system.admin.inc +++ b/core/modules/system/system.admin.inc @@ -369,7 +369,7 @@ function system_theme_settings($form, &$form_state, $key = '') { // Default settings are defined in theme_get_setting() in includes/theme.inc if ($key) { $var = 'theme_' . $key . '_settings'; - $themes = system_rebuild_theme_data(); + $themes = list_themes(); $features = $themes[$key]->info['features']; } else { diff --git a/core/modules/system/system.module b/core/modules/system/system.module index da0d9f4aee94..332e55900449 100644 --- a/core/modules/system/system.module +++ b/core/modules/system/system.module @@ -2581,7 +2581,7 @@ function _system_rebuild_theme_data() { // Now that we've established all our master themes, go back and fill in data // for subthemes. foreach ($sub_themes as $key) { - $themes[$key]->base_themes = system_find_base_themes($themes, $key); + $themes[$key]->base_themes = drupal_find_base_themes($themes, $key); // Don't proceed if there was a problem with the root base theme. if (!current($themes[$key]->base_themes)) { continue; @@ -2673,47 +2673,6 @@ function _system_default_theme_features() { ); } -/** - * Find all the base themes for the specified theme. - * - * Themes can inherit templates and function implementations from earlier themes. - * - * @param $themes - * An array of available themes. - * @param $key - * The name of the theme whose base we are looking for. - * @param $used_keys - * A recursion parameter preventing endless loops. - * @return - * Returns an array of all of the theme's ancestors; the first element's value - * will be NULL if an error occurred. - */ -function system_find_base_themes($themes, $key, $used_keys = array()) { - $base_key = $themes[$key]->info['base theme']; - // Does the base theme exist? - if (!isset($themes[$base_key])) { - return array($base_key => NULL); - } - - $current_base_theme = array($base_key => $themes[$base_key]->info['name']); - - // Is the base theme itself a child of another theme? - if (isset($themes[$base_key]->info['base theme'])) { - // Do we already know the base themes of this theme? - if (isset($themes[$base_key]->base_themes)) { - return $themes[$base_key]->base_themes + $current_base_theme; - } - // Prevent loops. - if (!empty($used_keys[$base_key])) { - return array($base_key => NULL); - } - $used_keys[$base_key] = TRUE; - return system_find_base_themes($themes, $base_key, $used_keys) + $current_base_theme; - } - // If we get here, then this is our parent theme. - return $current_base_theme; -} - /** * Get a list of available regions from a specified theme. * From a8edf85f0f172f6cb15071613a4f22709e843ce2 Mon Sep 17 00:00:00 2001 From: catch Date: Fri, 3 Feb 2012 23:37:28 +0900 Subject: [PATCH 10/37] Issue #911354 by adrian, boombatower, jhedstrom, sun, yhahn, dixon_, et al: Fixed Tests in profiles/[name]/modules cannot be run and cannot use a different profile for running tests. --- core/includes/common.inc | 19 +++- .../simpletest/drupal_web_test_case.php | 6 ++ core/modules/simpletest/simpletest.test | 88 +++++++++++++++++++ ...drupal_system_listing_compatible_test.info | 1 + ...drupal_system_listing_compatible_test.test | 37 ++++++++ 5 files changed, 149 insertions(+), 2 deletions(-) create mode 100644 profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.test diff --git a/core/includes/common.inc b/core/includes/common.inc index f840e5c20051..a4fcf511ce19 100644 --- a/core/includes/common.inc +++ b/core/includes/common.inc @@ -5344,9 +5344,24 @@ function drupal_system_listing($mask, $directory, $key = 'name', $min_depth = 1) // themes as provided by a distribution. It is pristine in the same way that // the 'core/modules' directory is pristine for core; users should avoid // any modification by using the sites/all or sites/ directories. + $profiles = array(); $profile = drupal_get_profile(); - if (file_exists("profiles/$profile/$directory")) { - $searchdir[] = "profiles/$profile/$directory"; + // For SimpleTest to be able to test modules packaged together with a + // distribution we need to include the profile of the parent site (in which + // test runs are triggered). + if (drupal_valid_test_ua()) { + $testing_profile = variable_get('simpletest_parent_profile', FALSE); + if ($testing_profile && $testing_profile != $profile) { + $profiles[] = $testing_profile; + } + } + // In case both profile directories contain the same extension, the actual + // profile always has precedence. + $profiles[] = $profile; + foreach ($profiles as $profile) { + if (file_exists("profiles/$profile/$directory")) { + $searchdir[] = "profiles/$profile/$directory"; + } } // Always search sites/all/* as well as the global directories. diff --git a/core/modules/simpletest/drupal_web_test_case.php b/core/modules/simpletest/drupal_web_test_case.php index 57eff83639c4..c9fc5627ecd6 100644 --- a/core/modules/simpletest/drupal_web_test_case.php +++ b/core/modules/simpletest/drupal_web_test_case.php @@ -1372,6 +1372,12 @@ class DrupalWebTestCase extends DrupalTestCase { variable_set('file_private_path', $private_files_directory); variable_set('file_temporary_path', $temp_files_directory); + // Set the 'simpletest_parent_profile' variable to add the parent profile's + // search path to the child site's search paths. + // @see drupal_system_listing() + // @todo This may need to be primed like 'install_profile' above. + variable_set('simpletest_parent_profile', $this->originalProfile); + // Include the testing profile. variable_set('install_profile', $this->profile); $profile_details = install_profile_info($this->profile, 'en'); diff --git a/core/modules/simpletest/simpletest.test b/core/modules/simpletest/simpletest.test index bd4427c99b28..f4bdd132a01e 100644 --- a/core/modules/simpletest/simpletest.test +++ b/core/modules/simpletest/simpletest.test @@ -616,3 +616,91 @@ class SimpleTestMissingCheckedRequirements extends DrupalWebTestCase { } } } + +/** + * Verifies that tests bundled with installation profile modules are found. + */ +class SimpleTestInstallationProfileModuleTestsTestCase extends DrupalWebTestCase { + /** + * Use the Testing profile. + * + * The Testing profile contains drupal_system_listing_compatible_test.test, + * which attempts to: + * - run tests using the Minimal profile (which does not contain the + * drupal_system_listing_compatible_test.module) + * - but still install the drupal_system_listing_compatible_test.module + * contained in the Testing profile. + * + * @see DrupalSystemListingCompatibleTestCase + */ + protected $profile = 'testing'; + + public static function getInfo() { + return array( + 'name' => 'Installation profile module tests', + 'description' => 'Verifies that tests bundled with installation profile modules are found.', + 'group' => 'SimpleTest', + ); + } + + function setUp() { + parent::setUp(array('simpletest')); + + $this->admin_user = $this->drupalCreateUser(array('administer unit tests')); + $this->drupalLogin($this->admin_user); + } + + /** + * Tests existence of test case located in an installation profile module. + */ + function testInstallationProfileTests() { + $this->drupalGet('admin/config/development/testing'); + $this->assertText('Installation profile module tests helper'); + $edit = array( + 'DrupalSystemListingCompatibleTestCase' => TRUE, + ); + $this->drupalPost(NULL, $edit, t('Run tests')); + $this->assertText('DrupalSystemListingCompatibleTestCase test executed.'); + } +} + +/** + * Verifies that tests in other installation profiles are not found. + * + * @see SimpleTestInstallationProfileModuleTestsTestCase + */ +class SimpleTestOtherInstallationProfileModuleTestsTestCase extends DrupalWebTestCase { + /** + * Use the Minimal profile. + * + * The Testing profile contains drupal_system_listing_compatible_test.test, + * which should not be found. + * + * @see SimpleTestInstallationProfileModuleTestsTestCase + * @see DrupalSystemListingCompatibleTestCase + */ + protected $profile = 'minimal'; + + public static function getInfo() { + return array( + 'name' => 'Other Installation profiles', + 'description' => 'Verifies that tests in other installation profiles are not found.', + 'group' => 'SimpleTest', + ); + } + + function setUp() { + parent::setUp(array('simpletest')); + + $this->admin_user = $this->drupalCreateUser(array('administer unit tests')); + $this->drupalLogin($this->admin_user); + } + + /** + * Tests that tests located in another installation profile do not appear. + */ + function testOtherInstallationProfile() { + $this->drupalGet('admin/config/development/testing'); + $this->assertNoText('Installation profile module tests helper'); + } +} diff --git a/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info b/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info index 53515e769e3a..9ce4ca1b015c 100644 --- a/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info +++ b/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.info @@ -4,3 +4,4 @@ package = Testing version = VERSION core = 8.x hidden = TRUE +files[] = drupal_system_listing_compatible_test.test diff --git a/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.test b/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.test new file mode 100644 index 000000000000..198c1d8a03e5 --- /dev/null +++ b/profiles/testing/modules/drupal_system_listing_compatible_test/drupal_system_listing_compatible_test.test @@ -0,0 +1,37 @@ + 'Installation profile module tests helper', + 'description' => 'Verifies that tests in installation profile modules are found and may use another profile for running tests.', + 'group' => 'Installation profile', + ); + } + + function setUp() { + // Attempt to install a module in Testing profile, while this test runs with + // a different profile. + parent::setUp(array('drupal_system_listing_compatible_test')); + } + + /** + * Non-empty test* method required to executed the test case class. + */ + function testDrupalSystemListing() { + $this->pass(__CLASS__ . ' test executed.'); + } +} From fc690da10de721be1e88a4506bdd207b4e538042 Mon Sep 17 00:00:00 2001 From: catch Date: Sat, 4 Feb 2012 00:42:50 +0900 Subject: [PATCH 11/37] Issue #761608: add the new test themes. --- .../tests/themes/test_basetheme/test_basetheme.info | 7 +++++++ .../tests/themes/test_subtheme/test_subtheme.info | 7 +++++++ 2 files changed, 14 insertions(+) create mode 100644 core/modules/simpletest/tests/themes/test_basetheme/test_basetheme.info create mode 100644 core/modules/simpletest/tests/themes/test_subtheme/test_subtheme.info diff --git a/core/modules/simpletest/tests/themes/test_basetheme/test_basetheme.info b/core/modules/simpletest/tests/themes/test_basetheme/test_basetheme.info new file mode 100644 index 000000000000..2b5f66e521af --- /dev/null +++ b/core/modules/simpletest/tests/themes/test_basetheme/test_basetheme.info @@ -0,0 +1,7 @@ +name = Theme test base theme +description = Test theme which acts as a base theme for other test subthemes. +core = 8.x +hidden = TRUE + +settings[basetheme_only] = base theme value +settings[subtheme_override] = base theme value diff --git a/core/modules/simpletest/tests/themes/test_subtheme/test_subtheme.info b/core/modules/simpletest/tests/themes/test_subtheme/test_subtheme.info new file mode 100644 index 000000000000..974e00fb7bd9 --- /dev/null +++ b/core/modules/simpletest/tests/themes/test_subtheme/test_subtheme.info @@ -0,0 +1,7 @@ +name = Theme test subtheme +description = Test theme which uses test_basetheme as the base theme. +core = 8.x +base theme = test_basetheme +hidden = TRUE + +settings[subtheme_override] = subtheme value From 4f6c4013ded782d96a29ec4fe2aa09bb2d0c9a6c Mon Sep 17 00:00:00 2001 From: Dries Date: Fri, 3 Feb 2012 16:15:50 -0500 Subject: [PATCH 12/37] - Patch #1426698 by droplet: Fixed book.js: fix vertical tabs summary & clean up. --- core/modules/book/book.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/modules/book/book.js b/core/modules/book/book.js index 5b953f164ff7..075f33b93cb2 100644 --- a/core/modules/book/book.js +++ b/core/modules/book/book.js @@ -1,10 +1,10 @@ - (function ($) { Drupal.behaviors.bookFieldsetSummaries = { attach: function (context) { - $('fieldset.book-form', context).drupalSetSummary(function (context) { - var val = $('.form-item-book-bid select').val(); + $('fieldset.book-outline-form', context).drupalSetSummary(function (context) { + var $select = $('.form-item-book-bid select'); + var val = $select.val(); if (val === '0') { return Drupal.t('Not in book'); @@ -13,7 +13,7 @@ Drupal.behaviors.bookFieldsetSummaries = { return Drupal.t('New book'); } else { - return Drupal.checkPlain($('.form-item-book-bid select :selected').text()); + return Drupal.checkPlain($select.find(':selected').text()); } }); } From 5b9756726217ed64aa2019eeb693c1b9196c2b07 Mon Sep 17 00:00:00 2001 From: Dries Date: Fri, 3 Feb 2012 16:18:21 -0500 Subject: [PATCH 13/37] - Patch #1414824 by nod_: Fixed Leaking vars in tabledrag.js. --- core/misc/tabledrag.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/misc/tabledrag.js b/core/misc/tabledrag.js index 62b48d9a9d69..4315057bff44 100644 --- a/core/misc/tabledrag.js +++ b/core/misc/tabledrag.js @@ -397,12 +397,12 @@ Drupal.tableDrag.prototype.makeDraggable = function (item) { if ($(item).is('.tabledrag-root')) { // Swap with the next group (necessarily a top-level one). var groupHeight = 0; - nextGroup = new self.row(nextRow, 'keyboard', self.indentEnabled, self.maxDepth, false); + var nextGroup = new self.row(nextRow, 'keyboard', self.indentEnabled, self.maxDepth, false); if (nextGroup) { $(nextGroup.group).each(function () { groupHeight += $(this).is(':hidden') ? 0 : this.offsetHeight; }); - nextGroupRow = $(nextGroup.group).filter(':last').get(0); + var nextGroupRow = $(nextGroup.group).filter(':last').get(0); self.rowObject.swap('after', nextGroupRow); // No need to check for indentation, 0 is the only valid one. window.scrollBy(0, parseInt(groupHeight, 10)); From 5c35e09380ccf5e114c3a7735e60a7e8ebfaee83 Mon Sep 17 00:00:00 2001 From: Dries Date: Sat, 4 Feb 2012 21:02:07 -0500 Subject: [PATCH 14/37] - Patch #1420056 by nod_, droplet: Fixed moving shortcut local var. --- core/modules/shortcut/shortcut.admin.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/modules/shortcut/shortcut.admin.js b/core/modules/shortcut/shortcut.admin.js index 6ec3e280dbb4..5554e5a7c37f 100644 --- a/core/modules/shortcut/shortcut.admin.js +++ b/core/modules/shortcut/shortcut.admin.js @@ -52,7 +52,7 @@ Drupal.behaviors.shortcutDrag = { // status to be disabled and mark it also as changed. var changedRowObject = new tableDrag.row(changedRow, 'mouse', self.indentEnabled, self.maxDepth, true); changedRowObject.markChanged(); - rowStatusChange(changedRowObject); + tableDrag.rowStatusChange(changedRowObject); } } else if (total != visibleLength) { @@ -71,18 +71,18 @@ Drupal.behaviors.shortcutDrag = { // Add a handler so when a row is dropped, update fields dropped into new regions. tableDrag.onDrop = function () { - rowStatusChange(this.rowObject); + tableDrag.rowStatusChange(this.rowObject); return true; }; - function rowStatusChange(rowObject) { + tableDrag.rowStatusChange = function (rowObject) { // Use "status-message" row instead of "status" row because // "status-{status_name}-message" is less prone to regexp match errors. var statusRow = $(rowObject.element).prevAll('tr.shortcut-status').get(0); var statusName = statusRow.className.replace(/([^ ]+[ ]+)*shortcut-status-([^ ]+)([ ]+[^ ]+)*/, '$2'); var statusField = $('select.shortcut-status-select', rowObject.element); statusField.val(statusName); - } + }; tableDrag.restripeTable = function () { // :even and :odd are reversed because jQuery counts from 0 and From 36b7afcc0efd5db5c374e271ec187326a663a789 Mon Sep 17 00:00:00 2001 From: Dries Date: Sat, 4 Feb 2012 22:15:32 -0500 Subject: [PATCH 15/37] - Patch #1221772 by pounard, jcisio: transaction database settings is misleading in settings.php . --- sites/default/default.settings.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/sites/default/default.settings.php b/sites/default/default.settings.php index 360e556ffd49..83548f483eee 100755 --- a/sites/default/default.settings.php +++ b/sites/default/default.settings.php @@ -73,11 +73,13 @@ * webserver. For most other drivers, you must specify a * username, password, host, and database name. * - * Some database engines support transactions. In order to enable - * transaction support for a given database, set the 'transactions' key - * to TRUE. To disable it, set it to FALSE. Note that the default value - * varies by driver. For MySQL, the default is FALSE since MyISAM tables - * do not support transactions. + * Transaction support is enabled by default for all drivers that support it, + * including MySQL. To explicitly disable it, set the 'transactions' key to + * FALSE. + * Note that some configurations of MySQL, such as the MyISAM engine, don't + * support it and will proceed silently even if enabled. If you experience + * transaction related crashes with such configuration, set the 'transactions' + * key to FALSE. * * For each database, you may optionally specify multiple "target" databases. * A target database allows Drupal to try to send certain queries to a From 91263e58515b20602a43c7721174724973d90cf7 Mon Sep 17 00:00:00 2001 From: Dries Date: Sun, 5 Feb 2012 08:23:53 -0500 Subject: [PATCH 16/37] =?UTF-8?q?-=20Patch=20#1426954=20by=20G=C3=A1bor=20?= =?UTF-8?q?Hojtsy:=20remove=20locale=20backward=20compatibility=20layer=20?= =?UTF-8?q?in=20installer.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/includes/install.core.inc | 5 ----- 1 file changed, 5 deletions(-) diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc index b0df859c3aa6..c21cd68bccf7 100644 --- a/core/includes/install.core.inc +++ b/core/includes/install.core.inc @@ -213,11 +213,6 @@ function install_begin_request(&$install_state) { // Add any installation parameters passed in via the URL. $install_state['parameters'] += $_GET; - // @todo: remove this testbot compatibility layer once the testbot is fixed. - if (isset($_GET['locale'])) { - $install_state['parameters']['langcode'] = $_GET['locale']; - } - // Validate certain core settings that are used throughout the installation. if (!empty($install_state['parameters']['profile'])) { $install_state['parameters']['profile'] = preg_replace('/[^a-zA-Z_0-9]/', '', $install_state['parameters']['profile']); From 3aed4afd5ace2162250eed16c85df18ee7892879 Mon Sep 17 00:00:00 2001 From: Dries Date: Sun, 5 Feb 2012 08:38:25 -0500 Subject: [PATCH 17/37] - Patch #404116 by c31ck, amateescu, neclimdul: provide default choices on poll translations. --- core/modules/poll/poll.test | 72 +++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/core/modules/poll/poll.test b/core/modules/poll/poll.test index 78af995c56cb..ea8b3410c5ab 100644 --- a/core/modules/poll/poll.test +++ b/core/modules/poll/poll.test @@ -798,3 +798,75 @@ class PollDeleteChoiceTestCase extends PollTestCase { $this->assertText('Third choice', t('Third choice remains.')); } } + +/** + * Tests poll translation logic. + */ +class PollTranslateTestCase extends PollTestCase { + public static function getInfo() { + return array( + 'name' => 'Poll translation', + 'description' => 'Test the poll translation logic.', + 'group' => 'Poll', + ); + } + + function setUp() { + parent::setUp('poll', 'translation'); + } + + /** + * Tests poll creation and translation. + * + * Checks that the choice names get copied from the original poll and that + * the vote count values are set to 0. + */ + function testPollTranslate() { + $admin_user = $this->drupalCreateUser(array('administer content types', 'administer languages', 'edit any poll content', 'create poll content', 'administer nodes', 'translate content')); + + // Set up a poll with two choices. + $title = $this->randomName(); + $choices = array($this->randomName(), $this->randomName()); + $poll_nid = $this->pollCreate($title, $choices, FALSE); + $this->assertTrue($poll_nid, t('Poll for translation logic test created.')); + + $this->drupalLogout(); + $this->drupalLogin($admin_user); + + // Enable a second language. + $this->drupalGet('admin/config/regional/language'); + $edit = array(); + $edit['predefined_langcode'] = 'nl'; + $this->drupalPost('admin/config/regional/language/add', $edit, t('Add language')); + $this->assertRaw(t('The language %language has been created and can now be used.', array('%language' => 'Dutch')), t('Language Dutch has been created.')); + + // Set "Poll" content type to use multilingual support with translation. + $this->drupalGet('admin/structure/types/manage/poll'); + $edit = array(); + $edit['language_content_type'] = 2; + $this->drupalPost('admin/structure/types/manage/poll', $edit, t('Save content type')); + $this->assertRaw(t('The content type %type has been updated.', array('%type' => 'Poll')), t('Poll content type has been updated.')); + + // Edit poll. + $this->drupalGet("node/$poll_nid/edit"); + $edit = array(); + // Set the poll's first choice count to 200. + $edit['choice[chid:1][chvotes]'] = 200; + // Set the language to Dutch. + $edit['language'] = 'nl'; + $this->drupalPost(NULL, $edit, t('Save')); + + // Translate the Dutch poll. + $this->drupalGet('node/add/poll', array('query' => array('translation' => $poll_nid, 'target' => 'en'))); + + $dutch_poll = node_load($poll_nid); + + // Check that the vote count values didn't get copied from the Dutch poll + // and are set to 0. + $this->assertFieldByName('choice[chid:1][chvotes]', '0', ('Found choice with vote count 0')); + $this->assertFieldByName('choice[chid:2][chvotes]', '0', ('Found choice with vote count 0')); + // Check that the choice names got copied from the Dutch poll. + $this->assertFieldByName('choice[chid:1][chtext]', $dutch_poll->choice[1]['chtext'], t('Found choice with text @text', array('@text' => $dutch_poll->choice[1]['chtext']))); + $this->assertFieldByName('choice[chid:2][chtext]', $dutch_poll->choice[2]['chtext'], t('Found choice with text @text', array('@text' => $dutch_poll->choice[2]['chtext']))); + } +} From 26bf1f5b6468a3f6571fe352875a94389ad18a1d Mon Sep 17 00:00:00 2001 From: Dries Date: Sun, 5 Feb 2012 08:59:33 -0500 Subject: [PATCH 18/37] - Patch #1159258 by Deciphered: fixed image_file_move() flushes new URI not source URI. --- core/modules/image/image.module | 2 +- core/modules/simpletest/tests/image.test | 41 ++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/core/modules/image/image.module b/core/modules/image/image.module index f39a2a0054c1..4d7b9675e3be 100644 --- a/core/modules/image/image.module +++ b/core/modules/image/image.module @@ -319,7 +319,7 @@ function image_file_download($uri) { */ function image_file_move($file, $source) { // Delete any image derivatives at the original image path. - image_path_flush($file->uri); + image_path_flush($source->uri); } /** diff --git a/core/modules/simpletest/tests/image.test b/core/modules/simpletest/tests/image.test index daf5394ef569..ab008e55f281 100644 --- a/core/modules/simpletest/tests/image.test +++ b/core/modules/simpletest/tests/image.test @@ -462,3 +462,44 @@ class ImageToolkitGdTestCase extends DrupalWebTestCase { } } + +/** + * Tests the file move function for managed files. + */ +class ImageFileMoveTest extends ImageToolkitTestCase { + public static function getInfo() { + return array( + 'name' => 'Image moving', + 'description' => 'Tests the file move function for managed files.', + 'group' => 'Image', + ); + } + + /** + * Tests moving a randomly generated image. + */ + function testNormal() { + // Pick a file for testing. + $file = current($this->drupalGetTestFiles('image')); + + // Create derivative image. + $style = image_style_load(key(image_styles())); + $derivative_uri = image_style_path($style['name'], $file->uri); + image_style_create_derivative($style, $file->uri, $derivative_uri); + + // Check if derivative image exists. + $this->assertTrue(file_exists($derivative_uri), 'Make sure derivative image is generated successfully.'); + + // Clone the object so we don't have to worry about the function changing + // our reference copy. + $desired_filepath = 'public://' . $this->randomName(); + $result = file_move(clone $file, $desired_filepath, FILE_EXISTS_ERROR); + + // Check if image has been moved. + $this->assertTrue(file_exists($result->uri), 'Make sure image is moved successfully.'); + + // Check if derivative image has been flushed. + $this->assertFalse(file_exists($derivative_uri), 'Make sure derivative image has been flushed.'); + } +} + From 45278f51081e60d00312e71063366e190c699e4b Mon Sep 17 00:00:00 2001 From: Dries Date: Mon, 6 Feb 2012 17:15:29 -0500 Subject: [PATCH 19/37] - Patch #1428538 by nod_: Use jQuery toggle. --- core/misc/states.js | 4 ++-- core/misc/tableselect.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/misc/states.js b/core/misc/states.js index a2650a8165f4..3c17efc97180 100644 --- a/core/misc/states.js +++ b/core/misc/states.js @@ -494,7 +494,7 @@ $(document).bind('state:disabled', function(e) { $(e.target) .attr('disabled', e.value) .filter('.form-element') - .closest('.form-item, .form-submit, .form-wrapper')[e.value ? 'addClass' : 'removeClass']('form-disabled'); + .closest('.form-item, .form-submit, .form-wrapper').toggleClass('form-disabled', e.value); // Note: WebKit nightlies don't reflect that change correctly. // See https://bugs.webkit.org/show_bug.cgi?id=23789 @@ -514,7 +514,7 @@ $(document).bind('state:required', function(e) { $(document).bind('state:visible', function(e) { if (e.trigger) { - $(e.target).closest('.form-item, .form-submit, .form-wrapper')[e.value ? 'show' : 'hide'](); + $(e.target).closest('.form-item, .form-submit, .form-wrapper').toggle(e.value); } }); diff --git a/core/misc/tableselect.js b/core/misc/tableselect.js index cc4beb0dc9d1..5a88ac20ccc4 100644 --- a/core/misc/tableselect.js +++ b/core/misc/tableselect.js @@ -70,7 +70,7 @@ Drupal.tableSelectRange = function (from, to, state) { } // Either add or remove the selected class based on the state of the target checkbox. - $(i)[ state ? 'addClass' : 'removeClass' ]('selected'); + $(i).toggleClass('selected', state); $('input:checkbox', i).each(function () { this.checked = state; }); From cb043599e03b3364b1688e3a63312ef45e7d3cd8 Mon Sep 17 00:00:00 2001 From: Dries Date: Mon, 6 Feb 2012 17:25:01 -0500 Subject: [PATCH 20/37] - Patch #1425280 by Niklas Fiekas, swentel: no contextual links in node lists after a node without contextual links. --- core/includes/menu.inc | 2 +- core/modules/contextual/contextual.info | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/core/includes/menu.inc b/core/includes/menu.inc index 84bd0d1e125e..0ab3d8c99a0d 100644 --- a/core/includes/menu.inc +++ b/core/includes/menu.inc @@ -2123,7 +2123,7 @@ function menu_contextual_links($module, $parent_path, $args) { $links = array(); // Performance: In case a previous invocation for the same parent path did not // return any links, we immediately return here. - if (isset($path_empty[$parent_path])) { + if (isset($path_empty[$parent_path]) && strpos($parent_path, '%') !== FALSE) { return $links; } // Construct the item-specific parent path. diff --git a/core/modules/contextual/contextual.info b/core/modules/contextual/contextual.info index a006377bcade..041f2e3fffcc 100644 --- a/core/modules/contextual/contextual.info +++ b/core/modules/contextual/contextual.info @@ -3,3 +3,4 @@ description = Provides contextual links to perform actions related to elements o package = Core version = VERSION core = 8.x +files[] = contextual.test From 36e9422aef289691cc3f420bec4ceee6c60a5618 Mon Sep 17 00:00:00 2001 From: Dries Date: Mon, 6 Feb 2012 17:25:12 -0500 Subject: [PATCH 21/37] - Patch #1425280 by Niklas Fiekas, swentel: no contextual links in node lists after a node without contextual links. --- core/modules/contextual/contextual.test | 47 +++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 core/modules/contextual/contextual.test diff --git a/core/modules/contextual/contextual.test b/core/modules/contextual/contextual.test new file mode 100644 index 000000000000..a1b94cc08cb8 --- /dev/null +++ b/core/modules/contextual/contextual.test @@ -0,0 +1,47 @@ + 'Contextual links on node lists', + 'description' => 'Tests if contextual links are showing on the front page depending on permissions.', + 'group' => 'Contextual', + ); + } + + function setUp() { + parent::setUp(array('contextual', 'node')); + $this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page')); + $this->drupalCreateContentType(array('type' => 'article', 'name' => 'Article')); + $web_user = $this->drupalCreateUser(array('access content', 'access contextual links', 'edit any article content')); + $this->drupalLogin($web_user); + } + + /** + * Tests contextual links on node lists with different permissions. + */ + function testNodeLinks() { + // Promote nodes to the front page. One article node the user can edit, one + // page node he can not edit and another article node he can edit. + $node1 = $this->drupalCreateNode(array('type' => 'article', 'promote' => 1)); + $node2 = $this->drupalCreateNode(array('type' => 'page', 'promote' => 1)); + $node3 = $this->drupalCreateNode(array('type' => 'article', 'promote' => 1)); + + // Now, on the front page, all article nodes should have contextual edit + // links. The page node in between should not. + $this->drupalGet('node'); + $this->assertRaw('node/' . $node1->nid . '/edit', 'Edit link for oldest article node showing.'); + $this->assertNoRaw('node/' . $node2->nid . '/edit', 'No edit link for page nodes.'); + $this->assertRaw('node/' . $node3->nid . '/edit', 'Edit link for most recent article node showing.'); + } +} From c94f4a0592d3a658af9dc34b2e57e87e5dec7ee0 Mon Sep 17 00:00:00 2001 From: Dries Date: Mon, 6 Feb 2012 21:59:07 -0500 Subject: [PATCH 22/37] - Patch #1428498 by linclark: Docblock syntax error for taxonomy_select_nodes(). --- core/modules/taxonomy/taxonomy.module | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/taxonomy/taxonomy.module b/core/modules/taxonomy/taxonomy.module index c7d28850a0c0..1055391716bb 100644 --- a/core/modules/taxonomy/taxonomy.module +++ b/core/modules/taxonomy/taxonomy.module @@ -210,7 +210,7 @@ function taxonomy_field_extra_fields() { * @param $limit * Integer. The maximum number of nodes to find. * Set to FALSE for no limit. - * @order + * @param $order * An array of fields and directions. * * @return From fdca0419a524917d0d8b912615fe1fe366756417 Mon Sep 17 00:00:00 2001 From: Dries Date: Tue, 7 Feb 2012 14:34:52 -0500 Subject: [PATCH 23/37] =?UTF-8?q?-=20Patch=20#1357918=20by=20G=C3=A1bor=20?= =?UTF-8?q?Hojtsy,=20swentel,=20sun,=20no=5Fcommit=5Fcredit:=20missing=20u?= =?UTF-8?q?pdate=20for=20language=5Fdefault()=20in=20language=20langcode?= =?UTF-8?q?=20update.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/includes/bootstrap.inc | 17 +++++------ core/includes/update.inc | 17 ++++------- core/modules/language/language.install | 28 ++++++++++++++++++ core/modules/simpletest/simpletest.info | 1 + .../upgrade/drupal-7.filled.database.php.gz | Bin 84974 -> 83402 bytes .../simpletest/tests/upgrade/upgrade.test | 2 +- 6 files changed, 42 insertions(+), 23 deletions(-) diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc index dcea7f430910..838c5dc38581 100644 --- a/core/includes/bootstrap.inc +++ b/core/includes/bootstrap.inc @@ -2745,16 +2745,13 @@ function language_name($langcode) { * A language object. */ function language_default() { - $default = variable_get( - 'language_default', - (object) array( - 'langcode' => 'en', - 'name' => 'English', - 'direction' => 0, - 'enabled' => 1, - 'weight' => 0, - ) - ); + $default = variable_get('language_default', (object) array( + 'langcode' => 'en', + 'name' => 'English', + 'direction' => 0, + 'enabled' => 1, + 'weight' => 0, + )); $default->default = TRUE; return $default; } diff --git a/core/includes/update.inc b/core/includes/update.inc index 7859db1f3104..9dd1e5d708bf 100644 --- a/core/includes/update.inc +++ b/core/includes/update.inc @@ -119,7 +119,7 @@ function update_prepare_d8_bootstrap() { 'type' => 'varchar', 'length' => 12, 'not null' => TRUE, - 'default' => '', + 'default' => '', ); $langcode_indexes = array('indexes' => array( @@ -183,17 +183,6 @@ function update_prepare_d8_language() { db_drop_field('languages', 'domain'); db_drop_field('languages', 'native'); - // Rename language column to langcode and set it again as the primary key. - db_drop_primary_key('languages'); - $langcode_spec = array( - 'type' => 'varchar', - 'length' => 12, - 'not null' => TRUE, - 'default' => '', - 'description' => "Language code, e.g. 'de' or 'en-US'.", - ); - db_change_field('languages', 'language', 'langcode', $langcode_spec, array('primary key' => array('langcode'))); - // Rename the languages table to language. db_rename_table('languages', 'language'); @@ -203,6 +192,10 @@ function update_prepare_d8_language() { $modules = array('language'); update_module_add_to_system($modules); update_module_enable($modules); + + // Rename 'language' column to 'langcode'. + require_once DRUPAL_ROOT . '/core/modules/language/language.install'; + language_update_8000(); } } diff --git a/core/modules/language/language.install b/core/modules/language/language.install index 1375fd98188e..ecf637d375d6 100644 --- a/core/modules/language/language.install +++ b/core/modules/language/language.install @@ -73,3 +73,31 @@ function language_schema() { ); return $schema; } + +/** + * Rename {language}.language to {language}.langcode. + * + * @see update_prepare_d8_language() + */ +function language_update_8000() { + // Rename language column to langcode and set it again as the primary key. + if (db_field_exists('language', 'language')) { + db_drop_primary_key('language'); + $langcode_spec = array( + 'type' => 'varchar', + 'length' => 12, + 'not null' => TRUE, + 'default' => '', + 'description' => "Language code, e.g. 'de' or 'en-US'.", + ); + db_change_field('language', 'language', 'langcode', $langcode_spec, array('primary key' => array('langcode'))); + } + + // Update the 'language_default' system variable, if configured. + $language_default = variable_get('language_default'); + if (!empty($language_default) && isset($language_default->language)) { + $language_default->langcode = $language_default->language; + unset($language_default->language); + variable_set('language_default', $language_default); + } +} diff --git a/core/modules/simpletest/simpletest.info b/core/modules/simpletest/simpletest.info index bbe65f0604b4..adee92a9ea99 100644 --- a/core/modules/simpletest/simpletest.info +++ b/core/modules/simpletest/simpletest.info @@ -40,3 +40,4 @@ files[] = tests/xmlrpc.test files[] = tests/upgrade/upgrade.test files[] = tests/upgrade/upgrade_bare.test files[] = tests/upgrade/upgrade_filled.test +files[] = tests/upgrade/upgrade.language.test diff --git a/core/modules/simpletest/tests/upgrade/drupal-7.filled.database.php.gz b/core/modules/simpletest/tests/upgrade/drupal-7.filled.database.php.gz index 99d20fc5eab9052bd81794d12f3b21f7d599d4d9..01e2d309933f2cf1d23a137b7a397d041a2d47b1 100644 GIT binary patch literal 83402 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

h;&Xu!UOX@QHxwq%jAeQN@)q96I{%$9z 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 diff --git a/core/modules/simpletest/tests/upgrade/upgrade.test b/core/modules/simpletest/tests/upgrade/upgrade.test index 29793b257c35..ac579fc36a08 100644 --- a/core/modules/simpletest/tests/upgrade/upgrade.test +++ b/core/modules/simpletest/tests/upgrade/upgrade.test @@ -243,9 +243,9 @@ abstract class UpgradePathTestCase extends DrupalWebTestCase { * TRUE if the upgrade succeeded, FALSE otherwise. */ protected function performUpgrade($register_errors = TRUE) { - $update_url = $GLOBALS['base_url'] . '/core/update.php'; // Load the first update screen. + $update_url = $GLOBALS['base_url'] . '/core/update.php'; $this->drupalGet($update_url, array('external' => TRUE)); if (!$this->assertResponse(200)) { return FALSE; From d68fe9071d059e36426a468c5121281fb259de42 Mon Sep 17 00:00:00 2001 From: Dries Date: Tue, 7 Feb 2012 14:55:09 -0500 Subject: [PATCH 24/37] - Patch #1068016 by franz, karschsp, BartVB, Niklas Fiekas: fixed number field validation fails to block some invalid input causing later SQL fatal error. --- .../field/modules/number/number.module | 4 ++-- core/modules/field/modules/number/number.test | 22 +++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/core/modules/field/modules/number/number.module b/core/modules/field/modules/number/number.module index 87e2d3a93131..d00c55f07f1f 100644 --- a/core/modules/field/modules/number/number.module +++ b/core/modules/field/modules/number/number.module @@ -377,12 +377,12 @@ function number_field_widget_validate($element, &$form_state) { switch ($type) { case 'float': case 'decimal': - $regexp = '@[^-0-9\\' . $field['settings']['decimal_separator'] . ']@'; + $regexp = '@([^-0-9\\' . $field['settings']['decimal_separator'] . '])|(.-)@'; $message = t('Only numbers and the decimal separator (@separator) allowed in %field.', array('%field' => $instance['label'], '@separator' => $field['settings']['decimal_separator'])); break; case 'integer': - $regexp = '@[^-0-9]@'; + $regexp = '@([^-0-9])|(.-)@'; $message = t('Only numbers are allowed in %field.', array('%field' => $instance['label'])); break; } diff --git a/core/modules/field/modules/number/number.test b/core/modules/field/modules/number/number.test index e96be42a70e0..5488e669b219 100644 --- a/core/modules/field/modules/number/number.test +++ b/core/modules/field/modules/number/number.test @@ -92,6 +92,28 @@ class NumberFieldTestCase extends DrupalWebTestCase { t('Correctly failed to save decimal value with more than one decimal point.') ); } + + // Try to create entries with minus sign not in the first position + $wrong_entries = array( + '3-3', + '4-', + '1.3-', + '1.2-4', + '-10-10', + ); + + foreach ($wrong_entries as $wrong_entry) { + $this->drupalGet('test-entity/add/test-bundle'); + $edit = array( + "{$this->field['field_name']}[$langcode][0][value]" => $wrong_entry, + ); + $this->drupalPost(NULL, $edit, t('Save')); + $this->assertText( + t('Only numbers and the decimal separator (@separator) allowed in ', + array('@separator' => $this->field['settings']['decimal_separator'])), + 'Correctly failed to save decimal value with minus sign in the wrong position.' + ); + } } /** From b62f85ca970d118ec13cdb1e7ab4fc868bb17d59 Mon Sep 17 00:00:00 2001 From: catch Date: Wed, 8 Feb 2012 20:03:32 +0900 Subject: [PATCH 25/37] Issue #998256 by justafish, Dave Reid: Please let modules know about the original URL alias in hook_path_update(). --- core/includes/path.inc | 32 +++++++------ core/modules/simpletest/tests/path.test | 46 +++++++++++++++++++ core/modules/simpletest/tests/path_test.info | 6 +++ .../modules/simpletest/tests/path_test.module | 22 +++++++++ 4 files changed, 93 insertions(+), 13 deletions(-) create mode 100644 core/modules/simpletest/tests/path_test.info create mode 100644 core/modules/simpletest/tests/path_test.module diff --git a/core/includes/path.inc b/core/includes/path.inc index 44bf3fef8845..b49d42b27ac5 100644 --- a/core/includes/path.inc +++ b/core/includes/path.inc @@ -431,21 +431,27 @@ function path_load($conditions) { * - langcode: (optional) The language code of the alias. */ function path_save(&$path) { - $path += array('pid' => NULL, 'langcode' => LANGUAGE_NONE); + $path += array('langcode' => LANGUAGE_NONE); - // Insert or update the alias. - $status = drupal_write_record('url_alias', $path, (!empty($path['pid']) ? 'pid' : array())); - - // Verify that a record was written. - if ($status) { - if ($status === SAVED_NEW) { - module_invoke_all('path_insert', $path); - } - else { - module_invoke_all('path_update', $path); - } - drupal_clear_path_cache($path['source']); + // Load the stored alias, if any. + if (!empty($path['pid']) && !isset($path['original'])) { + $path['original'] = path_load($path['pid']); } + + if (empty($path['pid'])) { + drupal_write_record('url_alias', $path); + module_invoke_all('path_insert', $path); + } + else { + drupal_write_record('url_alias', $path, array('pid')); + module_invoke_all('path_update', $path); + } + + // Clear internal properties. + unset($path['original']); + + // Clear the static alias cache. + drupal_clear_path_cache($path['source']); } /** diff --git a/core/modules/simpletest/tests/path.test b/core/modules/simpletest/tests/path.test index 18dab6b8982d..308ef644a556 100644 --- a/core/modules/simpletest/tests/path.test +++ b/core/modules/simpletest/tests/path.test @@ -333,3 +333,49 @@ class PathLookupTest extends DrupalWebTestCase { $this->assertEqual(drupal_lookup_path('source', $path['alias']), $path['source'], t('Newer alias record is returned when comparing two LANGUAGE_NONE paths with the same alias.')); } } + +/** + * Tests the path_save() function. + */ +class PathSaveTest extends DrupalWebTestCase { + public static function getInfo() { + return array( + 'name' => t('Path save'), + 'description' => t('Tests that path_save() exposes the previous alias value.'), + 'group' => t('Path API'), + ); + } + + function setUp() { + // Enable a helper module that implements hook_path_update(). + parent::setUp('path_test'); + path_test_reset(); + } + + /** + * Tests that path_save() makes the original path available to modules. + */ + function testDrupalSaveOriginalPath() { + $account = $this->drupalCreateUser(); + $uid = $account->uid; + $name = $account->name; + + // Create a language-neutral alias. + $path = array( + 'source' => "user/$uid", + 'alias' => 'foo', + ); + $path_original = $path; + path_save($path); + + // Alter the path. + $path['alias'] = 'bar'; + path_save($path); + + // Test to see if the original alias is available to modules during + // hook_path_update(). + $results = variable_get('path_test_results', array()); + $this->assertIdentical($results['hook_path_update']['original']['alias'], $path_original['alias'], t('Old path alias available to modules during hook_path_update.')); + $this->assertIdentical($results['hook_path_update']['original']['source'], $path_original['source'], t('Old path alias available to modules during hook_path_update.')); + } +} diff --git a/core/modules/simpletest/tests/path_test.info b/core/modules/simpletest/tests/path_test.info new file mode 100644 index 000000000000..d2573a466110 --- /dev/null +++ b/core/modules/simpletest/tests/path_test.info @@ -0,0 +1,6 @@ +name = "Hook path tests" +description = "Support module for path hook testing." +package = Testing +version = VERSION +core = 8.x +hidden = TRUE diff --git a/core/modules/simpletest/tests/path_test.module b/core/modules/simpletest/tests/path_test.module new file mode 100644 index 000000000000..01116753a2db --- /dev/null +++ b/core/modules/simpletest/tests/path_test.module @@ -0,0 +1,22 @@ + Date: Wed, 8 Feb 2012 20:05:27 +0900 Subject: [PATCH 26/37] Issue #1334344 by jessebeach, mikestefff: Fixed During update, Bartik throws an error that () is not defined. --- core/themes/bartik/template.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/core/themes/bartik/template.php b/core/themes/bartik/template.php index 9133243f110b..59a909984bcc 100644 --- a/core/themes/bartik/template.php +++ b/core/themes/bartik/template.php @@ -73,8 +73,12 @@ function bartik_process_page(&$variables) { * Implements hook_preprocess_maintenance_page(). */ function bartik_preprocess_maintenance_page(&$variables) { + // By default, site_name is set to Drupal if no db connection is available + // or during site installation. Setting site_name to an empty string makes + // the site and update pages look cleaner. + // @see template_preprocess_maintenance_page if (!$variables['db_is_active']) { - unset($variables['site_name']); + $variables['site_name'] = ''; } drupal_add_css(drupal_get_path('theme', 'bartik') . '/css/maintenance-page.css'); } From 1ab8af6d81762c80c5a8c21106179ef8c0176400 Mon Sep 17 00:00:00 2001 From: catch Date: Wed, 8 Feb 2012 20:10:03 +0900 Subject: [PATCH 27/37] Issue #1320028 by isay: Fixed bartik style-rtl.css have not overide text align to rigth for tr td, tr th tags. --- core/themes/bartik/css/style-rtl.css | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/themes/bartik/css/style-rtl.css b/core/themes/bartik/css/style-rtl.css index d04e9c62d052..48f64abfba74 100644 --- a/core/themes/bartik/css/style-rtl.css +++ b/core/themes/bartik/css/style-rtl.css @@ -16,7 +16,10 @@ blockquote:before { blockquote:after { content: "\201C"; } - +tr td, +tr th { + text-align: right; +} /* ------------------ List Styles ------------------ */ .region-content ul, From ed9a5d96f660a781a873148ca5fb7a3d9a60bc94 Mon Sep 17 00:00:00 2001 From: catch Date: Wed, 8 Feb 2012 20:13:10 +0900 Subject: [PATCH 28/37] Issue #814804 by JacobSingh, ksenzee, draenen, et al: Fixed taxonomy_autocomplete() produces SQL error for nonexistent field. --- core/modules/taxonomy/taxonomy.pages.inc | 8 +++++++- core/modules/taxonomy/taxonomy.test | 8 ++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/core/modules/taxonomy/taxonomy.pages.inc b/core/modules/taxonomy/taxonomy.pages.inc index aeb12d740e3f..e1b47a964de1 100644 --- a/core/modules/taxonomy/taxonomy.pages.inc +++ b/core/modules/taxonomy/taxonomy.pages.inc @@ -108,7 +108,13 @@ function taxonomy_term_feed($term) { * @see taxonomy_field_widget_info() */ function taxonomy_autocomplete($field_name, $tags_typed = '') { - $field = field_info_field($field_name); + // Make sure the field exists and is a taxonomy field. + if (!($field = field_info_field($field_name)) || $field['type'] !== 'taxonomy_term_reference') { + // Error string. The JavaScript handler will realize this is not JSON and + // will display it as debugging information. + print t('Taxonomy field @field_name not found.', array('@field_name' => $field_name)); + exit; + } // The user enters a comma-separated list of tags. We only autocomplete the last tag. $tags_typed = drupal_explode_tags($tags_typed); diff --git a/core/modules/taxonomy/taxonomy.test b/core/modules/taxonomy/taxonomy.test index 6d8060268cf2..2953550487f2 100644 --- a/core/modules/taxonomy/taxonomy.test +++ b/core/modules/taxonomy/taxonomy.test @@ -706,6 +706,14 @@ class TaxonomyTermTestCase extends TaxonomyWebTestCase { $input = substr($term_objects['term4']->name, 0, 3); $this->drupalGet('taxonomy/autocomplete/taxonomy_' . $this->vocabulary->machine_name . '/' . $input); $this->assertRaw('{"' . $term_objects['term4']->name . '":"' . $term_objects['term4']->name . '"}', t('Autocomplete returns term %term_name after typing the first 3 letters.', array('%term_name' => $term_objects['term4']->name))); + + // Test taxonomy autocomplete with a nonexistent field. + $field_name = $this->randomName(); + $tag = $this->randomName(); + $message = t("Taxonomy field @field_name not found.", array('@field_name' => $field_name)); + $this->assertFalse(field_info_field($field_name), t('Field %field_name does not exist.', array('%field_name' => $field_name))); + $this->drupalGet('taxonomy/autocomplete/' . $field_name . '/' . $tag); + $this->assertRaw($message, t('Autocomplete returns correct error message when the taxonomy field does not exist.')); } /** From 6e2a9031415733a2d3296a6f4618cfa4dba4bc1a Mon Sep 17 00:00:00 2001 From: catch Date: Wed, 8 Feb 2012 20:14:58 +0900 Subject: [PATCH 29/37] Issue #666854 by TR, JacobSingh: Whitespace follow-up for E_NOTICE warnings in run_tests().sh . --- core/scripts/run-tests.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/scripts/run-tests.sh b/core/scripts/run-tests.sh index f535f89494d7..5bf95fb1d40a 100755 --- a/core/scripts/run-tests.sh +++ b/core/scripts/run-tests.sh @@ -598,9 +598,9 @@ function simpletest_script_reporter_display_results() { echo "\n\n---- $result->test_class ----\n\n\n"; $test_class = $result->test_class; - // Print table header. - echo "Status Group Filename Line Function \n"; - echo "--------------------------------------------------------------------------------\n"; + // Print table header. + echo "Status Group Filename Line Function \n"; + echo "--------------------------------------------------------------------------------\n"; } simpletest_script_format_result($result); From 51867cdc0704b56bc9b5dd2ec3de3407fb0fb96d Mon Sep 17 00:00:00 2001 From: Dries Date: Wed, 8 Feb 2012 09:49:23 -0500 Subject: [PATCH 30/37] - Patch #1221718 by aspilicious, sun, skottler: refactor block-admin-display-form.tpl.php. --- .../block/block-admin-display-form.tpl.php | 9 --------- core/modules/block/block.admin.inc | 16 ++++++++++++---- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/core/modules/block/block-admin-display-form.tpl.php b/core/modules/block/block-admin-display-form.tpl.php index 0ce2b6b8c5f2..172827303020 100644 --- a/core/modules/block/block-admin-display-form.tpl.php +++ b/core/modules/block/block-admin-display-form.tpl.php @@ -25,15 +25,6 @@ * @ingroup themeable */ ?> - $title) { - drupal_add_tabledrag('blocks', 'match', 'sibling', 'block-region-select', 'block-region-' . $region, NULL, FALSE); - drupal_add_tabledrag('blocks', 'order', 'sibling', 'block-weight', 'block-weight-' . $region); - } -?> diff --git a/core/modules/block/block.admin.inc b/core/modules/block/block.admin.inc index 2b3c2dd3cc50..e383e7153760 100644 --- a/core/modules/block/block.admin.inc +++ b/core/modules/block/block.admin.inc @@ -84,13 +84,22 @@ function block_admin_display_prepare_blocks($theme) { * @see block_admin_display_form_submit() */ function block_admin_display_form($form, &$form_state, $blocks, $theme, $block_regions = NULL) { - - $form['#attached']['css'] = array(drupal_get_path('module', 'block') . '/block.admin.css'); + $path = drupal_get_path('module', 'block'); + $form['#attached']['css'][] = $path . '/block.admin.css'; + $form['#attached']['js'][] = 'core/misc/tableheader.js'; + $form['#attached']['js'][] = $path . '/block.js'; // Get a list of block regions if one was not provided. if (!isset($block_regions)) { $block_regions = system_region_list($theme, REGIONS_VISIBLE); } + // Add a last region for disabled blocks. + $block_regions_with_disabled = $block_regions + array(BLOCK_REGION_NONE => BLOCK_REGION_NONE); + + foreach ($block_regions_with_disabled as $region => $title) { + $form['#attached']['drupal_add_tabledrag'][] = array('blocks', 'match', 'sibling', 'block-region-select', 'block-region-' . $region, NULL, FALSE); + $form['#attached']['drupal_add_tabledrag'][] = array('blocks', 'order', 'sibling', 'block-weight', 'block-weight-' . $region); + } // Weights range from -delta to +delta, so delta should be at least half // of the amount of blocks present. This makes sure all blocks in the same @@ -104,8 +113,7 @@ function block_admin_display_form($form, &$form_state, $blocks, $theme, $block_r ); $form['block_regions'] = array( '#type' => 'value', - // Add a last region for disabled blocks. - '#value' => $block_regions + array(BLOCK_REGION_NONE => BLOCK_REGION_NONE), + '#value' => $block_regions_with_disabled, ); $form['blocks'] = array(); $form['#tree'] = TRUE; From 03a8bdc361fe0734152662f6f7fde04bca3bdee4 Mon Sep 17 00:00:00 2001 From: Dries Date: Wed, 8 Feb 2012 09:51:31 -0500 Subject: [PATCH 31/37] =?UTF-8?q?-=20Patch=20#1431040=20by=20G=C3=A1bor=20?= =?UTF-8?q?Hojtsy:=20rename=20LOCALE=5FLANGUAGE=5FNEGOTIATION=5F*=20consta?= =?UTF-8?q?nts=20to=20LANGUAGE=5FNEGOTIATION=5F*.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/includes/locale.inc | 34 ++++++++++---------- core/modules/locale/locale.admin.inc | 14 ++++---- core/modules/locale/locale.install | 4 +-- core/modules/locale/locale.module | 16 ++++----- core/modules/locale/locale.test | 32 +++++++++--------- core/modules/locale/tests/locale_test.module | 2 +- 6 files changed, 51 insertions(+), 51 deletions(-) diff --git a/core/includes/locale.inc b/core/includes/locale.inc index e2a79b623852..c4298729b9fb 100644 --- a/core/includes/locale.inc +++ b/core/includes/locale.inc @@ -9,33 +9,33 @@ * The language is determined using a URL language indicator: * path prefix or domain according to the configuration. */ -const LOCALE_LANGUAGE_NEGOTIATION_URL = 'locale-url'; +const LANGUAGE_NEGOTIATION_URL = 'locale-url'; /** * The language is set based on the browser language settings. */ -const LOCALE_LANGUAGE_NEGOTIATION_BROWSER = 'locale-browser'; +const LANGUAGE_NEGOTIATION_BROWSER = 'locale-browser'; /** * The language is determined using the current interface language. */ -const LOCALE_LANGUAGE_NEGOTIATION_INTERFACE = 'locale-interface'; +const LANGUAGE_NEGOTIATION_INTERFACE = 'locale-interface'; /** * If no URL language is available language is determined using an already * detected one. */ -const LOCALE_LANGUAGE_NEGOTIATION_URL_FALLBACK = 'locale-url-fallback'; +const LANGUAGE_NEGOTIATION_URL_FALLBACK = 'locale-url-fallback'; /** * The language is set based on the user language settings. */ -const LOCALE_LANGUAGE_NEGOTIATION_USER = 'locale-user'; +const LANGUAGE_NEGOTIATION_USER = 'locale-user'; /** * The language is set based on the request/session parameters. */ -const LOCALE_LANGUAGE_NEGOTIATION_SESSION = 'locale-session'; +const LANGUAGE_NEGOTIATION_SESSION = 'locale-session'; /** * Regular expression pattern used to localize JavaScript strings. @@ -88,13 +88,13 @@ const LOCALE_IMPORT_KEEP = 1; * URL language negotiation: use the path prefix as URL language * indicator. */ -const LOCALE_LANGUAGE_NEGOTIATION_URL_PREFIX = 0; +const LANGUAGE_NEGOTIATION_URL_PREFIX = 0; /** * URL language negotiation: use the domain as URL language * indicator. */ -const LOCALE_LANGUAGE_NEGOTIATION_URL_DOMAIN = 1; +const LANGUAGE_NEGOTIATION_URL_DOMAIN = 1; /** * @defgroup locale-languages-negotiation Language negotiation options @@ -264,12 +264,12 @@ function locale_language_from_session($languages) { function locale_language_from_url($languages) { $language_url = FALSE; - if (!language_negotiation_get_any(LOCALE_LANGUAGE_NEGOTIATION_URL)) { + if (!language_negotiation_get_any(LANGUAGE_NEGOTIATION_URL)) { return $language_url; } - switch (variable_get('locale_language_negotiation_url_part', LOCALE_LANGUAGE_NEGOTIATION_URL_PREFIX)) { - case LOCALE_LANGUAGE_NEGOTIATION_URL_PREFIX: + switch (variable_get('locale_language_negotiation_url_part', LANGUAGE_NEGOTIATION_URL_PREFIX)) { + case LANGUAGE_NEGOTIATION_URL_PREFIX: // $_GET['q'] might not be available at this time, because // path initialization runs after the language bootstrap phase. list($language, $_GET['q']) = language_url_split_prefix(isset($_GET['q']) ? $_GET['q'] : NULL, $languages); @@ -278,7 +278,7 @@ function locale_language_from_url($languages) { } break; - case LOCALE_LANGUAGE_NEGOTIATION_URL_DOMAIN: + case LANGUAGE_NEGOTIATION_URL_DOMAIN: $domains = locale_language_negotiation_url_domains(); foreach ($languages as $language) { // Skip check if the language doesn't have a domain. @@ -333,7 +333,7 @@ function locale_language_from_url($languages) { */ function locale_language_url_fallback($language = NULL, $language_type = LANGUAGE_TYPE_INTERFACE) { $default = language_default(); - $prefix = (variable_get('locale_language_negotiation_url_part', LOCALE_LANGUAGE_NEGOTIATION_URL_PREFIX) == LOCALE_LANGUAGE_NEGOTIATION_URL_PREFIX); + $prefix = (variable_get('locale_language_negotiation_url_part', LANGUAGE_NEGOTIATION_URL_PREFIX) == LANGUAGE_NEGOTIATION_URL_PREFIX); // If the default language is not configured to convey language information, // a missing URL language information indicates that URL language should be @@ -433,8 +433,8 @@ function locale_language_url_rewrite_url(&$path, &$options) { } if (isset($options['language'])) { - switch (variable_get('locale_language_negotiation_url_part', LOCALE_LANGUAGE_NEGOTIATION_URL_PREFIX)) { - case LOCALE_LANGUAGE_NEGOTIATION_URL_DOMAIN: + switch (variable_get('locale_language_negotiation_url_part', LANGUAGE_NEGOTIATION_URL_PREFIX)) { + case LANGUAGE_NEGOTIATION_URL_DOMAIN: $domains = locale_language_negotiation_url_domains(); if (!empty($domains[$options['language']->langcode])) { // Ask for an absolute URL with our modified base_url. @@ -443,7 +443,7 @@ function locale_language_url_rewrite_url(&$path, &$options) { } break; - case LOCALE_LANGUAGE_NEGOTIATION_URL_PREFIX: + case LANGUAGE_NEGOTIATION_URL_PREFIX: $prefixes = locale_language_negotiation_url_prefixes(); if (!empty($prefixes[$options['language']->langcode])) { $options['prefix'] = $prefixes[$options['language']->langcode] . '/'; @@ -496,7 +496,7 @@ function locale_language_url_rewrite_session(&$path, &$options) { $languages = language_list(TRUE); $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_rewrite = isset($languages[$query_value]) && language_negotiation_get_any(LOCALE_LANGUAGE_NEGOTIATION_SESSION); + $query_rewrite = isset($languages[$query_value]) && language_negotiation_get_any(LANGUAGE_NEGOTIATION_SESSION); } else { $query_rewrite = FALSE; diff --git a/core/modules/locale/locale.admin.inc b/core/modules/locale/locale.admin.inc index c0a91370e3dc..7e41b4f93ac4 100644 --- a/core/modules/locale/locale.admin.inc +++ b/core/modules/locale/locale.admin.inc @@ -223,10 +223,10 @@ function locale_language_providers_url_form($form, &$form_state) { '#title' => t('Part of the URL that determines language'), '#type' => 'radios', '#options' => array( - LOCALE_LANGUAGE_NEGOTIATION_URL_PREFIX => t('Path prefix'), - LOCALE_LANGUAGE_NEGOTIATION_URL_DOMAIN => t('Domain'), + LANGUAGE_NEGOTIATION_URL_PREFIX => t('Path prefix'), + LANGUAGE_NEGOTIATION_URL_DOMAIN => t('Domain'), ), - '#default_value' => variable_get('locale_language_negotiation_url_part', LOCALE_LANGUAGE_NEGOTIATION_URL_PREFIX), + '#default_value' => variable_get('locale_language_negotiation_url_part', LANGUAGE_NEGOTIATION_URL_PREFIX), ); $form['prefix'] = array( @@ -237,7 +237,7 @@ function locale_language_providers_url_form($form, &$form_state) { '#states' => array( 'visible' => array( ':input[name="locale_language_negotiation_url_part"]' => array( - 'value' => (string) LOCALE_LANGUAGE_NEGOTIATION_URL_PREFIX, + 'value' => (string) LANGUAGE_NEGOTIATION_URL_PREFIX, ), ), ), @@ -250,7 +250,7 @@ function locale_language_providers_url_form($form, &$form_state) { '#states' => array( 'visible' => array( ':input[name="locale_language_negotiation_url_part"]' => array( - 'value' => (string) LOCALE_LANGUAGE_NEGOTIATION_URL_DOMAIN, + 'value' => (string) LANGUAGE_NEGOTIATION_URL_DOMAIN, ), ), ), @@ -303,7 +303,7 @@ function locale_language_providers_url_form_validate($form, &$form_state) { $value = $form_state['values']['prefix'][$langcode]; if ($value === '') { - if (!$language->default && $form_state['values']['locale_language_negotiation_url_part'] == LOCALE_LANGUAGE_NEGOTIATION_URL_PREFIX) { + if (!$language->default && $form_state['values']['locale_language_negotiation_url_part'] == LANGUAGE_NEGOTIATION_URL_PREFIX) { // 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.')); } @@ -320,7 +320,7 @@ function locale_language_providers_url_form_validate($form, &$form_state) { $value = $form_state['values']['domain'][$langcode]; if ($value === '') { - if (!$language->default && $form_state['values']['locale_language_negotiation_url_part'] == LOCALE_LANGUAGE_NEGOTIATION_URL_DOMAIN) { + if (!$language->default && $form_state['values']['locale_language_negotiation_url_part'] == LANGUAGE_NEGOTIATION_URL_DOMAIN) { // 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.')); } diff --git a/core/modules/locale/locale.install b/core/modules/locale/locale.install index d2908c5c83b2..0ee7907cdd59 100644 --- a/core/modules/locale/locale.install +++ b/core/modules/locale/locale.install @@ -17,14 +17,14 @@ function locale_install() { // We cannot rely on language negotiation hooks here, because locale module is // not enabled yet. Therefore language_negotiation_set() cannot be used. $info = locale_language_negotiation_info(); - $provider = $info[LOCALE_LANGUAGE_NEGOTIATION_URL]; + $provider = $info[LANGUAGE_NEGOTIATION_URL]; $provider_fields = array('callbacks', 'file', 'cache'); $negotiation = array(); // Store only the needed data. foreach ($provider_fields as $field) { if (isset($provider[$field])) { - $negotiation[LOCALE_LANGUAGE_NEGOTIATION_URL][$field] = $provider[$field]; + $negotiation[LANGUAGE_NEGOTIATION_URL][$field] = $provider[$field]; } } diff --git a/core/modules/locale/locale.module b/core/modules/locale/locale.module index f97be6fe42ff..10feebbc304b 100644 --- a/core/modules/locale/locale.module +++ b/core/modules/locale/locale.module @@ -450,10 +450,10 @@ function locale_language_types_info() { LANGUAGE_TYPE_CONTENT => array( 'name' => t('Content'), 'description' => t('Order of language detection methods for content. If a version of content is available in the detected language, it will be displayed.'), - 'fixed' => array(LOCALE_LANGUAGE_NEGOTIATION_INTERFACE), + 'fixed' => array(LANGUAGE_NEGOTIATION_INTERFACE), ), LANGUAGE_TYPE_URL => array( - 'fixed' => array(LOCALE_LANGUAGE_NEGOTIATION_URL, LOCALE_LANGUAGE_NEGOTIATION_URL_FALLBACK), + 'fixed' => array(LANGUAGE_NEGOTIATION_URL, LANGUAGE_NEGOTIATION_URL_FALLBACK), ), ); } @@ -466,7 +466,7 @@ function locale_language_negotiation_info() { $file = '/core/includes/locale.inc'; $providers = array(); - $providers[LOCALE_LANGUAGE_NEGOTIATION_URL] = array( + $providers[LANGUAGE_NEGOTIATION_URL] = array( 'types' => array(LANGUAGE_TYPE_CONTENT, LANGUAGE_TYPE_INTERFACE, LANGUAGE_TYPE_URL), 'callbacks' => array( 'language' => 'locale_language_from_url', @@ -480,7 +480,7 @@ function locale_language_negotiation_info() { 'config' => 'admin/config/regional/language/configure/url', ); - $providers[LOCALE_LANGUAGE_NEGOTIATION_SESSION] = array( + $providers[LANGUAGE_NEGOTIATION_SESSION] = array( 'callbacks' => array( 'language' => 'locale_language_from_session', 'switcher' => 'locale_language_switcher_session', @@ -493,7 +493,7 @@ function locale_language_negotiation_info() { 'config' => 'admin/config/regional/language/configure/session', ); - $providers[LOCALE_LANGUAGE_NEGOTIATION_USER] = array( + $providers[LANGUAGE_NEGOTIATION_USER] = array( 'callbacks' => array('language' => 'locale_language_from_user'), 'file' => $file, 'weight' => -4, @@ -501,7 +501,7 @@ function locale_language_negotiation_info() { 'description' => t("Follow the user's language preference."), ); - $providers[LOCALE_LANGUAGE_NEGOTIATION_BROWSER] = array( + $providers[LANGUAGE_NEGOTIATION_BROWSER] = array( 'callbacks' => array('language' => 'locale_language_from_browser'), 'file' => $file, 'weight' => -2, @@ -510,7 +510,7 @@ function locale_language_negotiation_info() { 'description' => t("Determine the language from the browser's language settings."), ); - $providers[LOCALE_LANGUAGE_NEGOTIATION_INTERFACE] = array( + $providers[LANGUAGE_NEGOTIATION_INTERFACE] = array( 'types' => array(LANGUAGE_TYPE_CONTENT), 'callbacks' => array('language' => 'locale_language_from_interface'), 'file' => $file, @@ -519,7 +519,7 @@ function locale_language_negotiation_info() { 'description' => t('Use the detected interface language.'), ); - $providers[LOCALE_LANGUAGE_NEGOTIATION_URL_FALLBACK] = array( + $providers[LANGUAGE_NEGOTIATION_URL_FALLBACK] = array( 'types' => array(LANGUAGE_TYPE_URL), 'callbacks' => array('language' => 'locale_language_url_fallback'), 'file' => $file, diff --git a/core/modules/locale/locale.test b/core/modules/locale/locale.test index f102d4bdf5a1..c02488fc1224 100644 --- a/core/modules/locale/locale.test +++ b/core/modules/locale/locale.test @@ -1134,7 +1134,7 @@ class LocaleUninstallFunctionalTest extends DrupalWebTestCase { variable_set('language_negotiation_' . LANGUAGE_TYPE_URL, locale_language_negotiation_info()); // Change language providers settings. - variable_set('locale_language_negotiation_url_part', LOCALE_LANGUAGE_NEGOTIATION_URL_PREFIX); + variable_set('locale_language_negotiation_url_part', LANGUAGE_NEGOTIATION_URL_PREFIX); variable_set('locale_language_negotiation_session_param', TRUE); // Uninstall Locale. @@ -2059,7 +2059,7 @@ class LocaleUILanguageNegotiationTest extends DrupalWebTestCase { $tests = array( // Default, browser preference should have no influence. array( - 'language_negotiation' => array(LOCALE_LANGUAGE_NEGOTIATION_URL, LANGUAGE_NEGOTIATION_DEFAULT), + 'language_negotiation' => array(LANGUAGE_NEGOTIATION_URL, LANGUAGE_NEGOTIATION_DEFAULT), 'path' => 'admin/config', 'expect' => $default_string, 'expected_provider' => LANGUAGE_NEGOTIATION_DEFAULT, @@ -2068,34 +2068,34 @@ class LocaleUILanguageNegotiationTest extends DrupalWebTestCase { ), // Language prefix. array( - 'language_negotiation' => array(LOCALE_LANGUAGE_NEGOTIATION_URL, LANGUAGE_NEGOTIATION_DEFAULT), + 'language_negotiation' => array(LANGUAGE_NEGOTIATION_URL, LANGUAGE_NEGOTIATION_DEFAULT), 'path' => "$langcode/admin/config", 'expect' => $language_string, - 'expected_provider' => LOCALE_LANGUAGE_NEGOTIATION_URL, + 'expected_provider' => LANGUAGE_NEGOTIATION_URL, 'http_header' => $http_header_browser_fallback, 'message' => 'URL (PATH) > DEFAULT: with language prefix, UI language is switched based on path prefix', ), // Default, go by browser preference. array( - 'language_negotiation' => array(LOCALE_LANGUAGE_NEGOTIATION_URL, LOCALE_LANGUAGE_NEGOTIATION_BROWSER), + 'language_negotiation' => array(LANGUAGE_NEGOTIATION_URL, LANGUAGE_NEGOTIATION_BROWSER), 'path' => 'admin/config', 'expect' => $language_browser_fallback_string, - 'expected_provider' => LOCALE_LANGUAGE_NEGOTIATION_BROWSER, + 'expected_provider' => LANGUAGE_NEGOTIATION_BROWSER, 'http_header' => $http_header_browser_fallback, 'message' => 'URL (PATH) > BROWSER: no language prefix, UI language is determined by browser language preference', ), // Prefix, switch to the language. array( - 'language_negotiation' => array(LOCALE_LANGUAGE_NEGOTIATION_URL, LOCALE_LANGUAGE_NEGOTIATION_BROWSER), + 'language_negotiation' => array(LANGUAGE_NEGOTIATION_URL, LANGUAGE_NEGOTIATION_BROWSER), 'path' => "$langcode/admin/config", 'expect' => $language_string, - 'expected_provider' => LOCALE_LANGUAGE_NEGOTIATION_URL, + 'expected_provider' => LANGUAGE_NEGOTIATION_URL, 'http_header' => $http_header_browser_fallback, 'message' => 'URL (PATH) > BROWSER: with langage prefix, UI language is based on path prefix', ), // Default, browser language preference is not one of site's lang. array( - 'language_negotiation' => array(LOCALE_LANGUAGE_NEGOTIATION_URL, LOCALE_LANGUAGE_NEGOTIATION_BROWSER, LANGUAGE_NEGOTIATION_DEFAULT), + 'language_negotiation' => array(LANGUAGE_NEGOTIATION_URL, LANGUAGE_NEGOTIATION_BROWSER, LANGUAGE_NEGOTIATION_DEFAULT), 'path' => 'admin/config', 'expect' => $default_string, 'expected_provider' => LANGUAGE_NEGOTIATION_DEFAULT, @@ -2122,8 +2122,8 @@ class LocaleUILanguageNegotiationTest extends DrupalWebTestCase { $tests = array( // Default domain, browser preference should have no influence. array( - 'language_negotiation' => array(LOCALE_LANGUAGE_NEGOTIATION_URL, LANGUAGE_NEGOTIATION_DEFAULT), - 'locale_language_negotiation_url_part' => LOCALE_LANGUAGE_NEGOTIATION_URL_DOMAIN, + 'language_negotiation' => array(LANGUAGE_NEGOTIATION_URL, LANGUAGE_NEGOTIATION_DEFAULT), + 'locale_language_negotiation_url_part' => LANGUAGE_NEGOTIATION_URL_DOMAIN, 'path' => 'admin/config', 'expect' => $default_string, 'expected_provider' => LANGUAGE_NEGOTIATION_DEFAULT, @@ -2133,12 +2133,12 @@ class LocaleUILanguageNegotiationTest extends DrupalWebTestCase { // Language domain specific URL, we set the $_SERVER['HTTP_HOST'] in // locale_test.module hook_boot() to simulate this. array( - 'language_negotiation' => array(LOCALE_LANGUAGE_NEGOTIATION_URL, LANGUAGE_NEGOTIATION_DEFAULT), - 'locale_language_negotiation_url_part' => LOCALE_LANGUAGE_NEGOTIATION_URL_DOMAIN, + 'language_negotiation' => array(LANGUAGE_NEGOTIATION_URL, LANGUAGE_NEGOTIATION_DEFAULT), + 'locale_language_negotiation_url_part' => LANGUAGE_NEGOTIATION_URL_DOMAIN, 'locale_test_domain' => $language_domain, 'path' => 'admin/config', 'expect' => $language_string, - 'expected_provider' => LOCALE_LANGUAGE_NEGOTIATION_URL, + 'expected_provider' => LANGUAGE_NEGOTIATION_URL, 'http_header' => $http_header_browser_fallback, 'message' => 'URL (DOMAIN) > DEFAULT: domain example.cn should switch to Chinese', ), @@ -2381,7 +2381,7 @@ class LocaleMultilingualFieldsFunctionalTest extends DrupalWebTestCase { $this->assertTrue($assert, t('Field language correctly changed.')); // Enable content language URL detection. - language_negotiation_set(LANGUAGE_TYPE_CONTENT, array(LOCALE_LANGUAGE_NEGOTIATION_URL => 0)); + language_negotiation_set(LANGUAGE_TYPE_CONTENT, array(LANGUAGE_NEGOTIATION_URL => 0)); // Test multilingual field language fallback logic. $this->drupalGet("it/node/$node->nid"); @@ -2628,7 +2628,7 @@ class LocaleLanguageNegotiationInfoFunctionalTest extends DrupalWebTestCase { // Enable some core and custom language providers. The test language type is // supposed to be configurable. $test_type = 'test_language_type'; - $provider = LOCALE_LANGUAGE_NEGOTIATION_INTERFACE; + $provider = LANGUAGE_NEGOTIATION_INTERFACE; $test_provider = 'test_language_provider'; $form_field = $type . '[enabled]['. $provider .']'; $edit = array( diff --git a/core/modules/locale/tests/locale_test.module b/core/modules/locale/tests/locale_test.module index 868e0ef2cee4..c7bc6e34811c 100644 --- a/core/modules/locale/tests/locale_test.module +++ b/core/modules/locale/tests/locale_test.module @@ -85,7 +85,7 @@ function locale_test_language_negotiation_info() { */ function locale_test_language_negotiation_info_alter(array &$language_providers) { if (variable_get('locale_test_language_negotiation_info_alter', FALSE)) { - unset($language_providers[LOCALE_LANGUAGE_NEGOTIATION_INTERFACE]); + unset($language_providers[LANGUAGE_NEGOTIATION_INTERFACE]); } } From 72a6343890f2a129ed9b67474a696fe5fed34f4b Mon Sep 17 00:00:00 2001 From: Dries Date: Wed, 8 Feb 2012 13:50:19 -0500 Subject: [PATCH 32/37] - Added missing files --- .../upgrade/drupal-7.language.database.php | 522 ++++++++++++++++++ .../tests/upgrade/upgrade.language.test | 44 ++ 2 files changed, 566 insertions(+) create mode 100644 core/modules/simpletest/tests/upgrade/drupal-7.language.database.php create mode 100644 core/modules/simpletest/tests/upgrade/upgrade.language.test diff --git a/core/modules/simpletest/tests/upgrade/drupal-7.language.database.php b/core/modules/simpletest/tests/upgrade/drupal-7.language.database.php new file mode 100644 index 000000000000..02ae24ea79ec --- /dev/null +++ b/core/modules/simpletest/tests/upgrade/drupal-7.language.database.php @@ -0,0 +1,522 @@ +fields(array( + 'module', + 'delta', + 'theme', + 'status', + 'weight', + 'region', + 'custom', + 'visibility', + 'pages', + 'title', + 'cache', +)) +->values(array( + 'module' => 'locale', + 'delta' => 'language', + 'theme' => 'bartik', + 'status' => '0', + 'weight' => '0', + 'region' => '-1', + 'custom' => '0', + 'visibility' => '0', + 'pages' => '', + 'title' => '', + 'cache' => '-1', +)) +->values(array( + 'module' => 'locale', + 'delta' => 'language', + 'theme' => 'seven', + 'status' => '0', + 'weight' => '0', + 'region' => '-1', + 'custom' => '0', + 'visibility' => '0', + 'pages' => '', + 'title' => '', + 'cache' => '-1', +)) +->execute(); + +// Add language table from locale.install schema and prefill with some default +// languages for testing. +db_create_table('languages', array( + 'fields' => array( + 'language' => array( + 'type' => 'varchar', + 'length' => 12, + 'not null' => TRUE, + 'default' => '', + ), + 'name' => array( + 'type' => 'varchar', + 'length' => 64, + 'not null' => TRUE, + 'default' => '', + ), + 'native' => array( + 'type' => 'varchar', + 'length' => 64, + 'not null' => TRUE, + 'default' => '', + ), + 'direction' => array( + 'type' => 'int', + 'not null' => TRUE, + 'default' => 0, + ), + 'enabled' => array( + 'type' => 'int', + 'not null' => TRUE, + 'default' => 0, + ), + 'plurals' => array( + 'type' => 'int', + 'not null' => TRUE, + 'default' => 0, + ), + 'formula' => array( + 'type' => 'varchar', + 'length' => 128, + 'not null' => TRUE, + 'default' => '', + ), + 'domain' => array( + 'type' => 'varchar', + 'length' => 128, + 'not null' => TRUE, + 'default' => '', + ), + 'prefix' => array( + 'type' => 'varchar', + 'length' => 128, + 'not null' => TRUE, + 'default' => '', + ), + 'weight' => array( + 'type' => 'int', + 'not null' => TRUE, + 'default' => 0, + ), + 'javascript' => array( + 'type' => 'varchar', + 'length' => 64, + 'not null' => TRUE, + 'default' => '', + ), + ), + 'primary key' => array( + 'language', + ), + 'indexes' => array( + 'list' => array( + 'weight', + 'name', + ), + ), + 'module' => 'locale', + 'name' => 'languages', +)); +db_insert('languages')->fields(array( + 'language', + 'name', + 'native', + 'direction', + 'enabled', + 'plurals', + 'formula', + 'domain', + 'prefix', + 'weight', + 'javascript', +)) +->values(array( + 'language' => 'ca', + 'name' => 'Catalan', + 'native' => 'CatalĂ ', + 'direction' => '0', + 'enabled' => '1', + 'plurals' => '2', + 'formula' => '($n>1)', + 'domain' => '', + 'prefix' => 'ca', + 'weight' => '0', + 'javascript' => '', +)) +->values(array( + 'language' => 'cv', + 'name' => 'Chuvash', + 'native' => 'Chuvash', + 'direction' => '0', + 'enabled' => '1', + 'plurals' => '0', + 'formula' => '', + 'domain' => '', + 'prefix' => 'cv', + 'weight' => '0', + 'javascript' => '', +)) +->values(array( + 'language' => 'en', + 'name' => 'English', + 'native' => 'English', + 'direction' => '0', + 'enabled' => '1', + 'plurals' => '0', + 'formula' => '', + 'domain' => '', + 'prefix' => '', + 'weight' => '0', + 'javascript' => '', +)) +->execute(); + +// Add locales_source table from locale.install schema and fill with some +// sample data for testing. +db_create_table('locales_source', array( + 'fields' => array( + 'lid' => array( + 'type' => 'serial', + 'not null' => TRUE, + ), + 'location' => array( + 'type' => 'text', + 'not null' => FALSE, + 'size' => 'big', + ), + 'textgroup' => array( + 'type' => 'varchar', + 'length' => 255, + 'not null' => TRUE, + 'default' => 'default', + ), + 'source' => array( + 'type' => 'text', + 'mysql_type' => 'blob', + 'not null' => TRUE, + ), + 'context' => array( + 'type' => 'varchar', + 'length' => 255, + 'not null' => TRUE, + 'default' => '', + ), + 'version' => array( + 'type' => 'varchar', + 'length' => 20, + 'not null' => TRUE, + 'default' => 'none', + ), + ), + 'primary key' => array( + 'lid', + ), + 'indexes' => array( + 'source_context' => array( + array( + 'source', + 30, + ), + 'context', + ), + ), + 'module' => 'locale', + 'name' => 'locales_source', +)); +db_insert('locales_source')->fields(array( + 'lid', + 'location', + 'textgroup', + 'source', + 'context', + 'version', +)) +->values(array( + 'lid' => '1', + 'location' => 'misc/drupal.js', + 'textgroup' => 'default', + 'source' => 'An AJAX HTTP error occurred.', + 'context' => '', + 'version' => 'none', +)) +->values(array( + 'lid' => '2', + 'location' => 'misc/drupal.js', + 'textgroup' => 'default', + 'source' => 'HTTP Result Code: !status', + 'context' => '', + 'version' => 'none', +)) +->values(array( + 'lid' => '3', + 'location' => 'misc/drupal.js', + 'textgroup' => 'default', + 'source' => 'An AJAX HTTP request terminated abnormally.', + 'context' => '', + 'version' => 'none', +)) +->values(array( + 'lid' => '4', + 'location' => 'misc/drupal.js', + 'textgroup' => 'default', + 'source' => 'Debugging information follows.', + 'context' => '', + 'version' => 'none', +)) +->values(array( + 'lid' => '5', + 'location' => 'misc/drupal.js', + 'textgroup' => 'default', + 'source' => 'Path: !uri', + 'context' => '', + 'version' => 'none', +)) +->values(array( + 'lid' => '6', + 'location' => 'misc/drupal.js', + 'textgroup' => 'default', + 'source' => 'StatusText: !statusText', + 'context' => '', + 'version' => 'none', +)) +->values(array( + 'lid' => '7', + 'location' => 'misc/drupal.js', + 'textgroup' => 'default', + 'source' => 'ResponseText: !responseText', + 'context' => '', + 'version' => 'none', +)) +->values(array( + 'lid' => '8', + 'location' => 'misc/drupal.js', + 'textgroup' => 'default', + 'source' => 'ReadyState: !readyState', + 'context' => '', + 'version' => 'none', +)) +->values(array( + 'lid' => '9', + 'location' => 'modules/overlay/overlay-parent.js', + 'textgroup' => 'default', + 'source' => '@title dialog', + 'context' => '', + 'version' => 'none', +)) +->values(array( + 'lid' => '10', + 'location' => 'modules/contextual/contextual.js', + 'textgroup' => 'default', + 'source' => 'Configure', + 'context' => '', + 'version' => 'none', +)) +->values(array( + 'lid' => '11', + 'location' => 'modules/toolbar/toolbar.js', + 'textgroup' => 'default', + 'source' => 'Show shortcuts', + 'context' => '', + 'version' => 'none', +)) +->values(array( + 'lid' => '12', + 'location' => 'modules/toolbar/toolbar.js', + 'textgroup' => 'default', + 'source' => 'Hide shortcuts', + 'context' => '', + 'version' => 'none', +)) +->values(array( + 'lid' => '13', + 'location' => 'modules/overlay/overlay-child.js', + 'textgroup' => 'default', + 'source' => 'Loading', + 'context' => '', + 'version' => 'none', +)) +->values(array( + 'lid' => '14', + 'location' => 'modules/overlay/overlay-child.js', + 'textgroup' => 'default', + 'source' => '(active tab)', + 'context' => '', + 'version' => 'none', +)) +->values(array( + 'lid' => '15', + 'location' => 'misc/tabledrag.js', + 'textgroup' => 'default', + 'source' => 'Re-order rows by numerical weight instead of dragging.', + 'context' => '', + 'version' => 'none', +)) +->values(array( + 'lid' => '16', + 'location' => 'misc/tabledrag.js', + 'textgroup' => 'default', + 'source' => 'Show row weights', + 'context' => '', + 'version' => 'none', +)) +->values(array( + 'lid' => '17', + 'location' => 'misc/tabledrag.js', + 'textgroup' => 'default', + 'source' => 'Hide row weights', + 'context' => '', + 'version' => 'none', +)) +->values(array( + 'lid' => '18', + 'location' => 'misc/tabledrag.js', + 'textgroup' => 'default', + 'source' => 'Drag to re-order', + 'context' => '', + 'version' => 'none', +)) +->values(array( + 'lid' => '19', + 'location' => 'misc/tabledrag.js', + 'textgroup' => 'default', + 'source' => 'Changes made in this table will not be saved until the form is submitted.', + 'context' => '', + 'version' => 'none', +)) +->values(array( + 'lid' => '20', + 'location' => 'misc/collapse.js', + 'textgroup' => 'default', + 'source' => 'Hide', + 'context' => '', + 'version' => 'none', +)) +->values(array( + 'lid' => '21', + 'location' => 'misc/collapse.js', + 'textgroup' => 'default', + 'source' => 'Show', + 'context' => '', + 'version' => 'none', +)) +->execute(); + +// Add locales_target table from locale.install schema. +db_create_table('locales_target', array( + 'fields' => array( + 'lid' => array( + 'type' => 'int', + 'not null' => TRUE, + 'default' => 0, + ), + 'translation' => array( + 'type' => 'text', + 'mysql_type' => 'blob', + 'not null' => TRUE, + ), + 'language' => array( + 'type' => 'varchar', + 'length' => 12, + 'not null' => TRUE, + 'default' => '', + ), + 'plid' => array( + 'type' => 'int', + 'not null' => TRUE, + 'default' => 0, + ), + 'plural' => array( + 'type' => 'int', + 'not null' => TRUE, + 'default' => 0, + ), + ), + 'primary key' => array( + 'language', + 'lid', + 'plural', + ), + 'foreign keys' => array( + 'locales_source' => array( + 'table' => 'locales_source', + 'columns' => array( + 'lid' => 'lid', + ), + ), + ), + 'indexes' => array( + 'lid' => array( + 'lid', + ), + 'plid' => array( + 'plid', + ), + 'plural' => array( + 'plural', + ), + ), + 'module' => 'locale', + 'name' => 'locales_target', +)); + +// Set up variables needed for language support. +db_insert('variable')->fields(array( + 'name', + 'value', +)) +->values(array( + 'name' => 'javascript_parsed', + 'value' => 'a:16:{i:0;s:14:"misc/drupal.js";i:1;s:14:"misc/jquery.js";i:2;s:19:"misc/jquery.once.js";s:10:"refresh:ca";s:7:"waiting";i:3;s:29:"misc/ui/jquery.ui.core.min.js";i:4;s:21:"misc/jquery.ba-bbq.js";i:5;s:33:"modules/overlay/overlay-parent.js";i:6;s:32:"modules/contextual/contextual.js";i:7;s:21:"misc/jquery.cookie.js";i:8;s:26:"modules/toolbar/toolbar.js";i:9;s:32:"modules/overlay/overlay-child.js";i:10;s:19:"misc/tableheader.js";i:11;s:17:"misc/tabledrag.js";i:12;s:12:"misc/form.js";i:13;s:16:"misc/collapse.js";s:10:"refresh:cv";s:7:"waiting";}', +)) +->values(array( + 'name' => 'language_count', + 'value' => 'i:3;', +)) +->values(array( + 'name' => 'language_default', + 'value' => 'O:8:"stdClass":7:{s:8:"langcode";s:2:"ca";s:4:"name";s:7:"Catalan";s:9:"direction";i:0;s:7:"enabled";b:1;s:6:"weight";i:0;s:7:"default";b:1;s:6:"is_new";b:1;}', +)) +->values(array( + 'name' => 'language_negotiation_language', + 'value' => 'a:5:{s:10:"locale-url";a:2:{s:9:"callbacks";a:3:{s:8:"language";s:24:"locale_language_from_url";s:8:"switcher";s:28:"locale_language_switcher_url";s:11:"url_rewrite";s:31:"locale_language_url_rewrite_url";}s:4:"file";s:19:"includes/locale.inc";}s:14:"locale-session";a:2:{s:9:"callbacks";a:3:{s:8:"language";s:28:"locale_language_from_session";s:8:"switcher";s:32:"locale_language_switcher_session";s:11:"url_rewrite";s:35:"locale_language_url_rewrite_session";}s:4:"file";s:19:"includes/locale.inc";}s:11:"locale-user";a:2:{s:9:"callbacks";a:1:{s:8:"language";s:25:"locale_language_from_user";}s:4:"file";s:19:"includes/locale.inc";}s:14:"locale-browser";a:3:{s:9:"callbacks";a:1:{s:8:"language";s:28:"locale_language_from_browser";}s:4:"file";s:19:"includes/locale.inc";s:5:"cache";i:0;}s:16:"language-default";a:1:{s:9:"callbacks";a:1:{s:8:"language";s:21:"language_from_default";}}}', +)) +->values(array( + 'name' => 'language_negotiation_language_content', + 'value' => 'a:1:{s:16:"locale-interface";a:2:{s:9:"callbacks";a:1:{s:8:"language";s:30:"locale_language_from_interface";}s:4:"file";s:19:"includes/locale.inc";}}', +)) +->values(array( + 'name' => 'language_negotiation_language_url', + 'value' => 'a:2:{s:10:"locale-url";a:2:{s:9:"callbacks";a:3:{s:8:"language";s:24:"locale_language_from_url";s:8:"switcher";s:28:"locale_language_switcher_url";s:11:"url_rewrite";s:31:"locale_language_url_rewrite_url";}s:4:"file";s:19:"includes/locale.inc";}s:19:"locale-url-fallback";a:2:{s:9:"callbacks";a:1:{s:8:"language";s:28:"locale_language_url_fallback";}s:4:"file";s:19:"includes/locale.inc";}}', +)) +->values(array( + 'name' => 'language_types', + 'value' => 'a:3:{s:8:"language";b:1;s:16:"language_content";b:0;s:12:"language_url";b:0;}', +)) +->values(array( + 'name' => 'locale_language_providers_weight_language', + 'value' => 'a:5:{s:10:"locale-url";s:2:"-8";s:14:"locale-session";s:2:"-6";s:11:"locale-user";s:2:"-4";s:14:"locale-browser";s:2:"-2";s:16:"language-default";s:2:"10";}', +)) +->execute(); + +// Enable the locale module. +db_update('system')->fields(array( + 'status' => 1, + 'schema_version' => '7001', +)) +->condition('type', 'module') +->condition('name', 'locale') +->execute(); diff --git a/core/modules/simpletest/tests/upgrade/upgrade.language.test b/core/modules/simpletest/tests/upgrade/upgrade.language.test new file mode 100644 index 000000000000..ed54f5d18fbb --- /dev/null +++ b/core/modules/simpletest/tests/upgrade/upgrade.language.test @@ -0,0 +1,44 @@ + 'Language upgrade test', + 'description' => 'Upgrade tests with language data.', + 'group' => 'Upgrade path', + ); + } + + public function setUp() { + // Path to the database dump files. + $this->databaseDumpFiles = array( + drupal_get_path('module', 'simpletest') . '/tests/upgrade/drupal-7.filled.database.php.gz', + drupal_get_path('module', 'simpletest') . '/tests/upgrade/drupal-7.language.database.php', + ); + parent::setUp(); + } + + /** + * Tests a successful upgrade. + */ + public function testLanguageUpgrade() { + $this->assertTrue($this->performUpgrade(), t('The upgrade was completed successfully.')); + + // Ensure Catalan was properly upgraded to be the new default language. + $this->assertTrue(language_default()->langcode == 'ca', t('Catalan is the default language')); + $languages = language_list(); + foreach ($languages as $language) { + $this->assertTrue($language->default == ($language->langcode == 'ca'), t('@language default property properly set', array('@language' => $language->name))); + } + } +} From 57019c74c71b08f779095d67008d4cce12a24ce5 Mon Sep 17 00:00:00 2001 From: catch Date: Thu, 9 Feb 2012 11:16:27 +0900 Subject: [PATCH 33/37] Issue #1068016 by franz: Followup to fix code style issue. --- core/modules/field/modules/number/number.test | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/field/modules/number/number.test b/core/modules/field/modules/number/number.test index 5488e669b219..e5e7e8c71b34 100644 --- a/core/modules/field/modules/number/number.test +++ b/core/modules/field/modules/number/number.test @@ -93,7 +93,7 @@ class NumberFieldTestCase extends DrupalWebTestCase { ); } - // Try to create entries with minus sign not in the first position + // Try to create entries with minus sign not in the first position. $wrong_entries = array( '3-3', '4-', From 055900b3388358bb24fc59b7c1f00977fcc089aa Mon Sep 17 00:00:00 2001 From: catch Date: Sat, 11 Feb 2012 14:17:56 +0900 Subject: [PATCH 34/37] Issue #1250800 by attiks, Jelle_S, dereine: Fixed Language domain should work regardless of ports or protocols. --- core/includes/locale.inc | 12 +++++++- core/modules/locale/locale.test | 54 +++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 1 deletion(-) diff --git a/core/includes/locale.inc b/core/includes/locale.inc index c4298729b9fb..ab11d31e15f4 100644 --- a/core/includes/locale.inc +++ b/core/includes/locale.inc @@ -438,8 +438,18 @@ function locale_language_url_rewrite_url(&$path, &$options) { $domains = locale_language_negotiation_url_domains(); if (!empty($domains[$options['language']->langcode])) { // Ask for an absolute URL with our modified base_url. + global $is_https; + $url_scheme = ($is_https) ? 'https://' : 'http://'; $options['absolute'] = TRUE; - $options['base_url'] = $domains[$options['language']->langcode]; + $options['base_url'] = $url_scheme . $domains[$options['language']->langcode]; + if (isset($options['https']) && variable_get('https', FALSE)) { + if ($options['https'] === TRUE) { + $options['base_url'] = str_replace('http://', 'https://', $options['base_url']); + } + elseif ($options['https'] === FALSE) { + $options['base_url'] = str_replace('https://', 'http://', $options['base_url']); + } + } } break; diff --git a/core/modules/locale/locale.test b/core/modules/locale/locale.test index c02488fc1224..5408ccd6d3bb 100644 --- a/core/modules/locale/locale.test +++ b/core/modules/locale/locale.test @@ -2212,6 +2212,60 @@ class LocaleUILanguageNegotiationTest extends DrupalWebTestCase { $fields = $this->xpath('//div[@id="site-name"]//a[@rel="home" and @href=:url]//span', $args); $this->assertTrue($fields[0] == 'Drupal', t('URLs are rewritten using the browser language.')); } + + /** + * Test if the url function returns the right url when using different domains for different languages. + */ + function testLanguageDomain() { + // Add the Italian language. + $langcode = 'it'; + $language = (object) array( + 'langcode' => $langcode, + ); + language_save($language); + $languages = language_list(); + + // Enable browser and URL language detection. + $edit = array( + 'language[enabled][locale-url]' => TRUE, + 'language[weight][locale-url]' => -10, + ); + $this->drupalPost('admin/config/regional/language/configure', $edit, t('Save settings')); + + // Change the domain for the Italian language. + $edit = array( + 'locale_language_negotiation_url_part' => 1, + 'domain[it]' => 'it.example.com', + ); + $this->drupalPost('admin/config/regional/language/configure/url', $edit, t('Save configuration')); + + // Build the link we're going to test based on the clean url setting. + $link = (!empty($GLOBALS['conf']['clean_url'])) ? 'it.example.com/admin' : 'it.example.com/?q=admin'; + + global $is_https; + // Test URL in another language: http://it.example.com/?q=admin. + // Base path gives problems on the testbot, so $correct_link is hard-coded. + // @see UrlAlterFunctionalTest::assertUrlOutboundAlter (path.test). + $italian_url = url('admin', array('language' => $languages['it'])); + $url_scheme = ($is_https) ? 'https://' : 'http://'; + $correct_link = $url_scheme . $link; + $this->assertTrue($italian_url == $correct_link, t('The url() function returns the right url (@url) in accordance with the chosen language', array('@url' => $italian_url))); + + // Test https via options. + variable_set('https', TRUE); + $italian_url = url('admin', array('https' => TRUE, 'language' => $languages['it'])); + $correct_link = 'https://' . $link; + $this->assertTrue($italian_url == $correct_link, t('The url() function returns the right https url (via options) (@url) in accordance with the chosen language', array('@url' => $italian_url))); + variable_set('https', FALSE); + + // Test https via current url scheme. + $temp_https = $is_https; + $is_https = TRUE; + $italian_url = url('admin', array('language' => $languages['it'])); + $correct_link = 'https://' . $link; + $this->assertTrue($italian_url == $correct_link, t('The url() function returns the right url (via current url scheme) (@url) in accordance with the chosen language', array('@url' => $italian_url))); + $is_https = $temp_https; + } } /** From 25c770413165fc37c7e1e3f5c3bd11e7ab8fcce8 Mon Sep 17 00:00:00 2001 From: catch Date: Sat, 11 Feb 2012 14:22:04 +0900 Subject: [PATCH 35/37] Issue #41595 by pillarsdotnet, m3avrck, sun et al: Fixed All pager links have an 'active' CSS class. --- core/includes/pager.inc | 8 +++++++- core/modules/simpletest/simpletest.info | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/core/includes/pager.inc b/core/includes/pager.inc index a5d3e6be03c9..c060d0e7cda5 100644 --- a/core/includes/pager.inc +++ b/core/includes/pager.inc @@ -630,7 +630,13 @@ function theme_pager_link($variables) { } } - return l($text, $_GET['q'], array('attributes' => $attributes, 'query' => $query)); + // @todo l() cannot be used here, since it adds an 'active' class based on the + // path only (which is always the current path for pager links). Apparently, + // none of the pager links is active at any time - but it should still be + // possible to use l() here. + // @see http://drupal.org/node/1410574 + $attributes['href'] = url($_GET['q'], array('query' => $query)); + return '' . check_plain($text) . ''; } /** diff --git a/core/modules/simpletest/simpletest.info b/core/modules/simpletest/simpletest.info index adee92a9ea99..d518a76e33eb 100644 --- a/core/modules/simpletest/simpletest.info +++ b/core/modules/simpletest/simpletest.info @@ -26,6 +26,7 @@ files[] = tests/lock.test files[] = tests/mail.test files[] = tests/menu.test files[] = tests/module.test +files[] = tests/pager.test files[] = tests/password.test files[] = tests/path.test files[] = tests/registry.test From 49dbb6d4fbed1e35efd8a8e5b55105ba140215df Mon Sep 17 00:00:00 2001 From: catch Date: Sat, 11 Feb 2012 14:24:47 +0900 Subject: [PATCH 36/37] Issue #1411114 by sun: Fixed drupal_valid_test_ua() is not statically cached on non-positive match. --- core/includes/bootstrap.inc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/includes/bootstrap.inc b/core/includes/bootstrap.inc index 838c5dc38581..ab06260c965c 100644 --- a/core/includes/bootstrap.inc +++ b/core/includes/bootstrap.inc @@ -2498,7 +2498,8 @@ function drupal_valid_test_ua() { } } - return FALSE; + $test_prefix = FALSE; + return $test_prefix; } /** From d790839ecfee6e44a94fbef1c7fdcc8046c28296 Mon Sep 17 00:00:00 2001 From: catch Date: Sat, 11 Feb 2012 14:31:48 +0900 Subject: [PATCH 37/37] Issue #872488 by acouch, mfb, musicnode: Regression: no way to get taxonomy tags into RSS feeds. --- core/modules/taxonomy/taxonomy.module | 16 +++++ core/modules/taxonomy/taxonomy.test | 93 +++++++++++++++++++++++++++ 2 files changed, 109 insertions(+) diff --git a/core/modules/taxonomy/taxonomy.module b/core/modules/taxonomy/taxonomy.module index 1055391716bb..3a9258bb16b9 100644 --- a/core/modules/taxonomy/taxonomy.module +++ b/core/modules/taxonomy/taxonomy.module @@ -1483,6 +1483,10 @@ function taxonomy_field_formatter_info() { 'label' => t('Plain text'), 'field types' => array('taxonomy_term_reference'), ), + 'taxonomy_term_reference_rss_category' => array( + 'label' => t('RSS category'), + 'field types' => array('taxonomy_term_reference'), + ), ); } @@ -1525,6 +1529,18 @@ function taxonomy_field_formatter_view($entity_type, $entity, $field, $instance, ); } break; + + case 'taxonomy_term_reference_rss_category': + foreach ($items as $delta => $item) { + $entity->rss_elements[] = array( + 'key' => 'category', + 'value' => $item['tid'] != 'autocreate' ? $item['taxonomy_term']->name : $item['name'], + 'attributes' => array( + 'domain' => $item['tid'] != 'autocreate' ? url('taxonomy/term/' . $item['tid'], array('absolute' => TRUE)) : '', + ), + ); + } + break; } return $element; diff --git a/core/modules/taxonomy/taxonomy.test b/core/modules/taxonomy/taxonomy.test index 2953550487f2..0ef4758baa70 100644 --- a/core/modules/taxonomy/taxonomy.test +++ b/core/modules/taxonomy/taxonomy.test @@ -936,6 +936,99 @@ class TaxonomyTermTestCase extends TaxonomyWebTestCase { } } +/** + * Tests the rendering of term reference fields in RSS feeds. + */ +class TaxonomyRSSTestCase extends TaxonomyWebTestCase { + + public static function getInfo() { + return array( + 'name' => 'Taxonomy RSS Content.', + 'description' => 'Ensure that data added as terms appears in RSS feeds if "RSS Category" format is selected.', + 'group' => 'Taxonomy', + ); + } + + function setUp() { + parent::setUp('taxonomy'); + $this->admin_user = $this->drupalCreateUser(array('administer taxonomy', 'bypass node access', 'administer content types')); + $this->drupalLogin($this->admin_user); + $this->vocabulary = $this->createVocabulary(); + + $field = array( + 'field_name' => 'taxonomy_' . $this->vocabulary->machine_name, + 'type' => 'taxonomy_term_reference', + 'cardinality' => FIELD_CARDINALITY_UNLIMITED, + 'settings' => array( + 'allowed_values' => array( + array( + 'vocabulary' => $this->vocabulary->machine_name, + 'parent' => 0, + ), + ), + ), + ); + field_create_field($field); + + $this->instance = array( + 'field_name' => 'taxonomy_' . $this->vocabulary->machine_name, + 'bundle' => 'article', + 'entity_type' => 'node', + 'widget' => array( + 'type' => 'options_select', + ), + 'display' => array( + 'default' => array( + 'type' => 'taxonomy_term_reference_link', + ), + ), + ); + field_create_instance($this->instance); + } + + /** + * Tests that terms added to nodes are displayed in core RSS feed. + * + * Create a node and assert that taxonomy terms appear in rss.xml. + */ + function testTaxonomyRSS() { + // Create two taxonomy terms. + $term1 = $this->createTerm($this->vocabulary); + + // RSS display must be added manually. + $this->drupalGet("admin/structure/types/manage/article/display"); + $edit = array( + "view_modes_custom[rss]" => '1', + ); + $this->drupalPost(NULL, $edit, t('Save')); + + // Change the format to 'RSS category'. + $this->drupalGet("admin/structure/types/manage/article/display/rss"); + $edit = array( + "fields[taxonomy_" . $this->vocabulary->machine_name . "][type]" => 'taxonomy_term_reference_rss_category', + ); + $this->drupalPost(NULL, $edit, t('Save')); + + // Post an article. + $edit = array(); + $langcode = LANGUAGE_NONE; + $edit["title"] = $this->randomName(); + $edit[$this->instance['field_name'] . '[' . $langcode .'][]'] = $term1->tid; + $this->drupalPost('node/add/article', $edit, t('Save')); + + // Check that the term is displayed when the RSS feed is viewed. + $this->drupalGet('rss.xml'); + $test_element = array( + 'key' => 'category', + 'value' => $term1->name, + 'attributes' => array( + 'domain' => url('taxonomy/term/' . $term1->tid, array('absolute' => TRUE)), + ), + ); + $this->assertRaw(format_xml_elements(array($test_element)), 'Term is displayed when viewing the rss feed.'); + } +} + /** * Tests the hook implementations that maintain the taxonomy index. */

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 E0K9^5a{vGU literal 84974 zcmbrmWmFtZ*RV?cY+h#g9H!m?jcx^gz)u5?)Q1# zbFZ_`S>K7AfFb=2>6CzxRFKiW8tS1a^71j zBjtUAQIxR`!nX$Y53F9(pb7U4e80284Ay&Ty*}ruFtrJh#m%J9&U_>2Wxsxt*sMVE z4q-1RgcXc8Bz|aqk2&AWOND#Lz~wR%uI(xZ14-6KBpCfH(8pvQ?^f-6J_`Cq{}l0x z-KX=Wx`4DlZ1)xV`S!-}WnUkSlaLo8$R+Yk@SgR=wetDLNv{F_-q(v+uIQk3 z4;aqKAGRasJcH+cXKDwXWPdVbF>7Oe$%f8hw5ip+r2#Yh16{|+Jp5ar0+G=Iz z$xs%fUFx!()O_(s_ona7C!XDOpACd8haY)-*5qy#kNJL2*%axEc_Iuc$thQYk=I*X zT83tx?)u+fjMiXai($h3U=MjrYxbupeWbJuYQY5Y{A3b;a%d_*amz=@^La4O>G9q{ z06+ebVwYo9lP=2LHJG8>yoMaI>8L`Cx#0reIL^jMGEXH(R4bEm)G+)qx2iT z+3&zOdi%Qie9O2C@a%{coqE4+UCRC1lrWsh=aYA1?(C3)+$#z6L&vXiT%SRi-#%cC z&H8_i+n>U#7%VDlK_A+6ZbBP~L zZ0pNms924*3|6JWpw({glDGC7vrhTjeEdE^CnOGz-^(p~sH39EYkZ%A)mGDDQrj|fJXfEI zC#`B`!Rgg&f|Y!kKlV~h?xp#R#`of6#V4fCBEJkYKKeb8rLy|ud51wGCG2rhun!ZC z=DAGJ5uG3&ucSvK3%|F)pO!Sb@KM#K*T3J{SMNZe>Z$}qzU&7_!HblxAz2?TAt4^q z0zYDpS9{>e?+7d72l^~T&E|Px7?~yR&ap9FvT$|Vu~*+~{Jqy-DCoz{`N35+*^4vi zXOB*+4Nfp|46f-)(=+xFB%VvWU}h_~FD@*pESJ%Uscd+Qotcy6>|DW+9+@i^*OWqi- z)D2~5R22FLYKzmMD}>iElKBjGq#SM+f{A1&$|;r6Q;cZ_1O;LIK1{Da)in(k$nnX= zJdr|Bdb(V=vt7jM1l;Lm7MxDi$- z_%Zo29USzNnWm#aD<-wkd0P0jHp1Xb_k4yo*+|iR+>4)slE>Coj;@1Vu){rRYe5Qv zxJ4%UGyNpt zJ+(WA;a6K-l)`d}2Gwx#s9ZbC%gvUmxuQZsj8LZx#22MHY@>KldQ{Q!o5 zgTYhm-1B5p^4?L<-Zd^bna6RmVV%=z?3qXL%-3>uM_Cx_ny;=5KYG@XkU&! z*prBILpS$mU;@bTMLr8fmg^a+1&)`uER%}BNsK$q6{PzNo#@uqQjw-PJ#WjntyPpY z@GftnwP*{B1?em-uL*h6ztDspy2+l8AkBMB2s55MCx-oAUlzW8iZM>`Bp-bopGx(V|>fRAY4ZG7F{Ws4rB;2gZyEda{N$wCLM=14Cs` z>1!1%FCSFayE(t!Ieed`tbQzm=KR?{frT{~*wAD{Pnx-5A#e@v%IK{+hFi2vg4?ha zDWOm;OZ86S&UF4(HfalK02g~3X>TMiz>mk?%b1{B*rK3sF;W=EM=@HM5f7E9Z{bnpdVM`%*f`GgYb~HPmtM2jSmv)4A7J2pnbuU>U0=4V73oOr zlaxP)*>BLQ1nX`i=~4CaMsaQBGtND$Ws2m&u{I>N)?^`48`8$L&YsN#Ki|G~9sKZS zOziGEt~LF**UN0o)O`+WtszwGNIo2ALkj2q4Xbl$b?si#^N9MN(Nmlg`x!o4mT5l7 zKaynN(;m9I!9JfI&Ky!yj4_bLjfG>M1w3tu`!S$3dR1OUweL2@H;fmd?;mLX>E)_I zdL4SIHVud09fk{P-s9mLL{-9h_NCVs%24)uL2;x7wL1sWudGh`qGqFv+zik{Z(~{3 zCp3+(96%Gn=mirkX)|b~zHD#$SRUYLn5W@AP7(G`@D`_q#&(Pkz>cSkR@5_NpTJpL zB_mRXskzGKAj|vj!2~$2<8QSx;Y1_k;?|fZ0?FChGbnBomH6dfo*^oA=ka@}l&O4{ zl4Tx4EYlKnE4IYXYbe*r_a+ORvTjrxi;z8Y56yqA`-nhUMsZN4fve|f-@9Cyh0T_RX>10GYQ!zS!LqKV_dWN!PrmCJ zNy_`&!Yj~gMjEy_o_c)1k!P4Ul$L&e-cYPnp&T&yf?*nSY+)J2=%Mh*_Wigbg8~wD z!z5|Gg+z>)ECw0*Y02B$y~j@BRsALO8{X?FA$#8KqXxo)g-?g$t>3#Emjj41@rmoc zD3cKBv%{hBTA;2?CW=qB&9rSY=%-9fZFe}LEljuiCc-({YKSPnG&is`UDbbMbG)^U z#KxLpc~JPCA)~;&`HrF-&N+gDd~1r>E7v15I6TbxpjelalBf%uWhNWpylz*N|Kqd1 zM8T370@8wZh|t+Ak%Vsd9AmI|%^U$VOpN&l3y8?Zx8~v4k&x}icJxJL%-LPT02YaJ zXrDg)otDC?Lyx2t(2U7Unazw(Uxf!S-s8dmMdo(OL_aLm{+nN7}Yq;b$3C z-_r0U)ACSDLt;jIG=giwOa-o$+dP| z6eqoHz@jHnT(2{#U&XBqiWQ^KdiPci3e5(0n#=I`ns-MUv6T@Yw){PKvcRpZ>BXF3 zNU=Fd8n+>4AOqVU-Skjoxu~yb<9^0ejG&8ry8C0l#Xu^T`Eh^pv+J?@Oxj3d0PdK}(s`@vLO$^B{;uzywNR`CO0)I$Enc1L2N?IHzi=fI z_ad~H8Pr^OC;|P-O2#(u2EA&rsRb4Xc75U6W)9x}y6m|Qvsl@5nkcx$U z-9ZsJZ0f~r?c12%fnGht@j&zmBrEX*3fca_vQfdkfAtNQ1J zbRt3K6}O7CBE-JpOo%-%IF>w{)uIO@rhtB=lOm=<_v#aEP>b`to0b`+iKC}d^<;QR z3M| znJnl(4Li8ZsqU2st-st)M~$gAmX+9JIIbz^xhXw+~`-VCj{- z+EvyGpj`Q<=>gXu3rOl}R#~Tqa>WbiV2dZi%kdy&%m$M+zvfjd62a!61JFbLaKD4Z zrG8XAreFPx)+7R-u|z?ImlCZpv9GB;CU3qo(3E7;>PDuZB3+5ria2v#KRA}4KBwAD z#_ODj%xJ)#^L%Lo*&u2IQ(~Qv(JPp^9z3P>i59yab z9mU2r=s#GJTI#&oi6}-a{<3`Fks*Cd%zJ_LtUB>fZ_g;X-2as_PG}$!)I9CS6&O1G zfX)c#dV0Cf(W#ss>phD%XwMK{Q0So!_j(3sK)o!K5e(*C7T%iD9)0{Kkm*vR(285{9)E|4T7}1Zy@^bG=rh}% zTF`;0Y6b@(OtH+_?OF-cwdvg~d9-ng2NW;3pcVnG(+|xNT?0jnS@*LNx>Zm0x5Oyu z6^zVCU3&yJ+12%plI>vzQbY3;;+0RQM3$3<(o5k<4l*?-BPAQ2YCP~CJoh+|CEqKx z;T#Uo*gLLh-;^#+dbKIpw|aVQ?_B`*{}7$|BpVbn@r%bX_d8wB8a6TNu6KTM+8geHrw$R z+(xkO24=mh{7v6$#d2d?l_yYtEU)-XpjL(5q2XsJXO82-Qf;njGj>-}-BjtW%wG`| zffvz#K5R48U2xtyKPmcjX8n)7dqc~k~hkHFMT-vf$#`Vwq3Ms@n#LI zgCHU8mdG6u>5JhtPD3SG09v-hcS?YNwz8Q^b4$dDvYzSJKUGW1stm=GN7%3x%&hh^eVkZKD-zJ*`G{M%#P*s$#ld2P-#ujM z<-5|>VdXwH+$a@gc&+1`x5uyex}Bxrd?mIw8hai*tG}|st~E2azxp5%Q~#C^W9u4` z%2?-Z8uZsiVtQ#YUp_?9*X`>>NMGHcat}4m-2BL`F-2wK`DjsIhj__hOnB_OOZxI* zLK-pVNMm(#<$N)!j@@D2!biBcM3gXgG@ua|npvE{JYSXkv2$MiDKT*)=P>Tf&6dF$ zu}d=CM3LYeImC+}W8x|R(i3DjCQ@Upb}pl;oG+uh%v(AL7o&(0Z_1vr!S7^@Yv;zF z(QebBds(I@KmDrcY+q85$v=9_6Zj*NZs%oZya~gQ!jsoQhfceQcTSvdF5c>-%E>`Z zi1e=PX1a`Xz6pBPmCL>}k96TCmV4;@Pot(^jdoUcL%o4UQO~+E*mwATH*)!>(IBMJ zRm%~J`pR+rYHCvax|K@MCyaw;Y`6#Q0AsXCuAFK^@pa8lCd4}_0qR&o^$*pKu|Ez4 zb7mNH%u}U=MQ%#mg>OF+ert`SPkMUeu+OBk!k2tKALeaYmi+X}0p1~M#=o_8hCjz^ ztS^`3$&NQ%eDiyq9!s~4H{;)W-3I(*Ohx@ZGbI&Kzq9r+GsuSdyf2tDD%UM^aIPli zH)8!H1y%-Yvfi(jMOpeVDrbDxL6hw2)+JeFcSg;QiwXH?5p5B#L<*Q`_T7xB40P1bTZ89^;)~-rJS9N4%RTAPbv3)`$hqYhiRyms$&0#o%EM+D2jUo5tsv%xekbM_QSqaPJIa!oH9=NV7rJJNbr1o^6U44#_xy(jQh z!BOC=KorFa&1fBD0QXvfZq=R-I+VC0_6>vAx=o+oCvUrW;D%En9%Xdu6-bE%g3qEk zps`R$;$JB8KNHu%M09)irswJtk>dp>v7kB1L}h?*{a~_ieXHA;JfMpGoXut?&mM4R zzEZrd!R_VPg>=US0Q@gElt) z(ID;X6L0XIG09(Mn}~qA<39DOllpP8lDZh?>P6ahckCCL!MLd$&jhI2)igeqtUODD zINBbkshagCJy<+ zc;vw zD}u1-)YHpXAJvaJ4M)2`qs^xvTxw?46_d4}DV6id-dQrlF-0hDI9`nV}3d)%WhZOp6l>vmiq+=d@J&- z7}EqZYKD}n;+BK7N|Cf67mXp&9YNELS`^K_TjR-`Fi`e4IJwzsd==8eRxf*8>&q+t zY5Mnj_Q-7x+PeiHT;(Fw*0G~@i~82B7CoMS>)VL8;zA9KRH9D5YV}gBPH)v^rE>h& zxPLqQqr`tT)T`5ralYKHGcYRsx4}>T8GQAq+@X1dYhYUaKc47!&$`n{BL`fzi)a!>ZB#YsJW?$RJ2?*xR{KztQBOPSyc6}O+EiK z-CeFevRu~6eVuxh!KhVKu9;GTnTB_ysb46G|FHGn z8Y&x@$^B{=TT8R{eNASAcMWG^l#_(5Nx~s=7$IH+%#mI*YksXOtR45~qvpbOcMudw zR{nARs%2~t+7~WN0ipBuqC)gxcmB<=UZo}k4t)1Heb-z4xjQN3tr9g zIX8Mx1s*?b3E81A_Xnl)OnWR}INXQP&3rT(ltObM@1rv;CC-9u%w+nwk{Ev7Y+mnD zkY{$`W>c0lzsg}77QNDzRfInf*3m(oBWlFxxeeQlR_YNzyWkglwkw9OeTl-&g%$^eoig zl7v+nkVuWDMadzLu!@#T3NeBYK8U_*suI=PXbj{v$H}EB<%@0E-Z=r)?HcY zn!i4b@UHEMTv&pS=_XnWQ43(XZ=36pK@%#y8itq2W!<`_n@5KAlu4o#_3vuRVf9#s z?8M2e#fu5hIZdN_ScrQs#@}ah=X|kuWq4$#O?JZ0PlcbKYq%e7%4fUEP@PN5+t|9$ z6poG&t@@lAQNeQkBfDlw*~s=88)rGvLXIN7c2lM;W93AboDY9tWTF~>rX4-_j({Fk zih*8UoKQzx+!r3->8E)GUU!8q6w}wlib>163Xpm0eaNrZYM0Qr{=HGMSv>4BgIV$0 zShB#_xa{ElMZxs%Q80uSB@>kk$?g* zs(=E~st^S*8KV#?6_mp{JNPXxZPl!}OB^@=bx^}VQwv#~w!aTUvkOc(F&zv^c)t&Z zs8|1Wd%lbkC-y-u2`>(Ei1#%z1wC2JgtKm`PX$t4o*0N|*l8p#!tL&QV0VR58h% z2s~uBIEN6jo;ZvkrSzCW0ImyX*Ph9*9I47Ia1aK}KV}cwk3KGw0=o~+y3l)!x8$B; z3s@T}A8`&oN;;JONFRw?oQl(f%^SIgwP?68*KQj77?)w|rYK6Q$Fh9Sac;nQ$5D2e z7vEeXe>O_lyATb8vU8s5NXvbHu=?PvJ9RQ==TBUSDM1K;DT|B&Q;sbHrnJArl_#?9 zEB$54f$72dZf$7;Hmc7^Z*&O3$(Ztl;9w#!2JtWBzT^gJ^_0}Tc|v#^qnhG)$pNy= zB$+{w0(>e>|07jVn%?fdrXL|is^5?taHuprIN6m4gjf_^fhkXK=^LX887~-1p2!67 z()2A67?NcOG|AlK()6_r=RBZ@qL>=Y^5`aG>C$VoVQ7dGfn36}2?jZoMyrk>%uXR_ z{jmWbNDHt5LJD95DjdKDMBuLmoP^-g!!9f;O+3uYh*eu=7E425Odzv?F$w?on4N%n zg}|6VX4hlNGdlw6K{7j-v7jmq(+;Mq0y1Dxv??e@H5@esVh8~uaQTLYUf0{`Z_=eB zO?L!fAf#=BDJv`usBqpW&{E;>Jm{DOk5HP4To@($F;vL+#uqs3NZtXbtrZ+Hi~ZA) z@=?;&h#DdJwS1P-`3V)ZI`l*ziUV;Y2iKD2fLn0hV4I!H9c_9d9}QX-qB{Yt;NAr1 zdtKlxj`-M3{bC6lGLW}WNjKU(|(_!Wuv_d)r=C`6J z0elhKyV-1k6jD&^4>Hx#5^x0E!PFY2Pj6``;Q>S=&x!;P4HEDW?<2ARIsQcv5}47D z8XF}A)YzD7h$pUafgIm9{Z(VzGC0Kh4BasganJ&$fnC zo3EmZW{^2i?j+LU+{x4RgyDl^#ru@>Y#VArH7sve3s)ZA2&$-xA~_O0-!a9lgDrb= zEE#+gn55^exB6-QQv>r2)UmANo-_f$=RAyv)X_Ck5pufZ?ui`BhX$6a>Toocs#vzF zy$+>{@*{()`VtiPPVBTe^R(&63RU)6PMMr zx=8v5AEYiSHfQ}C3d|W;A53q@jXYC$K*5d?c?nq!(UHFg^0_= zA!1t$K%Db)YcHziqsfY|>$eEx6^6@~;mFw>on+<#T!ZsQ%r1ks_ZqO{1SZyu?t}MU z#QTCN-?d&7r!=dTHe+&vFL)W9&H0?oVZ9jb@KvXlmUU-Y@tvtwH^SGX+d)lNy!o%F zFL;ZSL@1gKL*Ar`_g+(b!uT12f+J{#larWp_oxFb&bjFj zsiP|R<(?TCj>$nEZrLeg$>Qs{CyKSUWF|eG9+=OjPGqm%qfQ8R<)N!ZJT_O>|AIG? zT?iSGdOG`QhH6GqGJjbXe;M>|=Q%2u+oeVEM>x4ix?>qr7-S|*3Swm>P0MwmxvRq= zZWjYZ5Euhb1sJ2w3m5}<`fTcWR$z<(4`2*L;GzGhL)hB1T|ErZi!Qo`Uyj-oICbc~ zPfyZrE8?VMa8Klb$597;v%6q->#E2(^G*GxH|m}DwDSZ648kNPTB za<9;1x~4BXSsZ#Uflg9KiZzJY=)U2gTox&>$lh#`hh~6cq7qE$I&?{EoA7+c_C0Qd zMDCrc)K>gH=`1D+V6XNQK?5CJmE&#+83X;?qANGKDlGQiTQNfftY^k#JZb}nO zSdoU#(Rheb)v+=Osymslb*XVatl_c%V!r`O@DNW~9nh|WMjsHj-bjHG>^p6McHW{5 zvh)`*Ll|}oUsN&*U+nmBHK=mCp%!2QtIru<L8wtVKNlp)NiAhi!8It}4LheWe4+uHyLfPJy)+R};!C5uR zMD|XrSCEC>CK9l)<9{DqCsJHA=2WGqFw#({s6eTt5RaH*E0>Ylnvu%bt)bTTHgc}G zsNC~Idg=k33^&UrZe5WrVh2@%Ekn-LF*}Q8{JS_`Tosd6#_W8(*1-;sn37?|9p7^y zE_%04uS{sEar}w;mz4Waz(YgCL9}k2EtyVI$^`TE`jpnu6-xR$(XPVN)NX?A)h1Ew6l4qF6ZMFDJx757+ylq$9bQmSzy5?E@0 zHGs9zSO8?H%FP6>46tQ5oLH+jPG*r?Oq6b2FW%&f)~dAGQw!yE4Xv|-nks^Qrb*Om_cnv5GqwpET68&F z+wpS5|GUzcUGYzbA7(Qh=SQ@$EQaz64ekX~#Q@+K-=EcVmFlgl{04xF2jFk8M-ypF zRlFJ#pSi9Tg@1iG=uZ%MN9pg+)^mJKU6kIaLU`|~vN@apQggD89H8FC-My{&l%V$i zKy2E$+D_V*N2QGIk)T7~3d>EN%gqjfR`256GV7y^Umr8xbG;Q*T3xgCwjx>4`769A zq)DGAD+>OVQhL4I`AaG7^z@TyD4?D7{JHFY$_Z;tiVEbT4Bk#9CIN;%cO z-h2>H`0EVFqZR{OWhOG^Zz`;3e0fQg7B>#&_5KF||LqFky0`yWZ1t$sp;>@@t)^c6 zzdfse`?Bz;*_(IFdS)sapX5P+>0edq`X7~6lTWqN`o6!M`{To3A4Xfe^k01dG+fDYvNfL&hotp91$5|Hv0S%$uZ+%C^C15__aqJ!#8mGa=6%w)uJ^VCMHw!3u z?Mf+7aONxb6WlCeCLng!HsbxF&2-5d_}#rX$^%ob59@Y|_erEgfs#rEeES$yP#k8o!C}6omM8Up>r=cGTD*d%-w2~3mEP#1d+6UtBaNzsr@#ugpGzJaw>l1$&KwBe*+m0+a-?8}@>o^4gB zPtpUYm`3=qNz81P5eh~GK0XM8J<@#!C`K{pi?han3$>LzvicBZ7$HR_Z zT7zjrCETN@r})90++?JEE+?-1oKcGtpKisl%8<;#v0a(ALZg1Uj9xiIXOPf>nZxMZ zz#r~g;lc2oy#c0G2|=Gs(O~9?ZaK1Z(i)^^@+Q#!lg2eW@6QHxn}c!VFp$Q?)*aC) zP6iw$bwU5zRp95umP{cQDQJE7Ke8IqB$(I;r3z!dU}eSys2e38^_)QfvSAbZ-EC&StUT(>1w_4eogXZgB zvESgsUyLi~oi^DOX)+b*Gsx&OjHatrW!bHsG&nWEYHD43+S?tc`qaE{WN|Ze9@SB4 zzwaHG_k`I98%tYdbAFW9UQS#vTp>s5A@tgd*Lkan$BH8}NAaTHykQ`Bd*5-UeXans z9xJcAc)rn85>!OxU<_KYI|^ozM_5+Od2fkm>b;!xyr{rIOL}oasZVvpDJlWP?;Kl%9bUi<|bKb8GjTj(lR2! z>6qn@P{P<}V&^M5D=+%$Clih_7(l>XeZDI9w_-*8-v>7ySY#=4=aItS2P&P*j{m%U z@$v&gh`IlC;Q-_SOKl>P@#nSd*Sp!pOJ^il3&@>c2Wpd&hX1;aN`vv69sLGK<4>NM zjco$F7cUWJ62gPvzJw20_yefu*MWNdEmLj!i3&i5PgD%>6~Cb+XPv1|XuZouO4bN) z+k)Q3z%Lj3pwCeNy-Nf?^4A0~y8r^mrcbkVI}zir3-v@y?sFc&p_l1-0TS2IB67wf z9CXthX@N5WJYf$N2VhIMAb`C&zX$*@VQXm!;Dkj6zzI%V5Kz<&5X^c86Tk^dy%12O z&sf*~Ig47BAy zFw8d4SGW!D(Hq18KG@Eh$Qmu(1uc;6ThTgN3XJn*ddQJC$= z)HExew4V!$QFyN1dP5J46R%6aSzgX9kA7I8D3SwysFJ4fnt$LmKPEmSn{`#Xn(_Fc z@i?QT)*Rd0qK>qB0BReL15n$Cf0$@#U^HSqd3aO~uxe*FV-~LffsHyX6qxUfM?K+Gp_ z%*z1D6#+>uB~8fsHXnjwu~PuQW|l(qkc1=`Eh9t^H3*80fFzfaCPa^X0L21+?U1+- z%P38bkk2UX&nU&fXT;V53_)8yNL&8b5D^f%Pg@QcBCB)=Foa|XU$oZ5_lS-B9OWmk|H7lds5O%>xRXKcj$@v{rrK`FKM6Dcxye10S0WJuMM_2QOanr*|9^yiMZUjak;6~cwA8@k<0XM_B|9~3}00iId)&2u+z)vCIMymNAa07*D zk9PJS;Kt<_xY7Ox+&s~NfE(af%YVQP{D|W#*$=7#Zj7qRup<%3$r6U8(7Qm%LrS(M zq1Op11vV(&H=rk1IAp23GXydXW*2Y>jVf9fgT^}&*dRn$BQ4u@z$Y~ao({lUB8E18*di? zf^UnXokwnIr*E6G7-kHr;?;_q2aB8CgtR`hLKSr^R^=OsNb{BV)G9gIte%*;1f30A zI4RJYwAU(;gH-Y{Iow!RIUk&t06P3E5}?D^sw8@bN?}_=TlRc7039v>L+CKd06>Qg z>0?x>fpA!ztA6he%()ga=wR6uNZfh%Zh=&l+8LBoy^2CS9@A;#7C5Hw5( z5sxE4#Jh12Vr+*Ah%dLoa~joU5<7R<9TO*cf!|VIG&FYa40$G~_YGkrXx2^h`bi}^ zo00VV7@YNE@>*-5jbq4ZUR$&Evo7T#8xgE(p8<8u0LArHD^Og|Jj~BL{uWn3BcQmR zc>pf&m;s9GR?eXF$WBi23w8=}rxfjUsli|D*sldrj1F;tV&wl0QjEqRMWB&7xj~(7 z0K*pZqAl>vTPwMfnrGU=NbTtKUWb@ z{CQ`XIq@z5HgCs;3+RHUKoK za)xN)2TX<*eg%LgbIpJz+s1*PX76c%ZO}PBaB_;?Ivk?@uo~}|##zJDNDu>4JrkOn znJzuioxUO@ODgFBm8>8t0rM14$o149g*+0Xk~XA}*P8)_d@M4GwAETQ12;uaEdzHT z0~eT2>dk;MYBexuHSo8L>eT{e)M@}yMsXqYNo6=tMk{4|#M<>-*fIWWdv&6T0d>uXKS)*R&zfZ!3D~vrp$q=I%~fv%)G^~Sia$Hq zz7o_x;X8Ar_`9ve_g)IpAeiz`gY3S9exiF|M~j6T{+*Js;sq)dHh`gT-u+q3P_KU# z1@^ssK1Tg5Y+;UHG-;)A8_EKCL*RgOvO(YDfm&6HtQZO2(Q{3;HmKxpo0+($7l?B! z5u;r#$LW5qbUI%KR#PmE3o$vqguohZ6WG@64AJt-mgcoAZV~PCnbz$*rI>&I{BDS- z-{tMbmT-X(>f2x78uSZXt3bdt z%yWqN00OT0JH_7_1v$F}brWtMKj1$%_ceNi2H2Lf;YKvDkH%$PS+noesiD`OvakC( zR?0h;0-bTf6{wE6+r_!tNWZIN<9zO@RF;&~=qE)S*C^bgq{uGi3r zIK+k>Gyp|D(!!9%H#u$tkQY&z6o9-^M`@z8&}=v@0F>@K@R(={_>&3Fd~m@f@mA17#m!#@=_xxd3!2-tv17G8;>9=;;FB#i#_3?Ye_@lsmecJ z5=?Q16YyzKt59VE@S11}u*VEA7W1#MTzT>#@VXXY=|zLZ6mCz4W#{_`Ov^AG!=E3a z7#Z*%5E+igDd3xIzY}|Q!Gi{%zY5oQC0,dCxJ2E{E&fJ4Bb_)yTub6qBjWY_m) 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