summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/simpletest/drupal_web_test_case.php210
-rw-r--r--modules/simpletest/tests/ajax.test15
-rw-r--r--modules/simpletest/tests/form.test6
-rw-r--r--modules/simpletest/tests/form_test.file.inc13
-rw-r--r--modules/system/admin.css173
-rw-r--r--modules/system/system-behavior-rtl.css89
-rw-r--r--modules/system/system-menus-rtl.css16
-rw-r--r--modules/system/system-menus.css50
-rw-r--r--modules/system/system-rtl.css74
-rw-r--r--modules/system/system.admin-rtl.css (renamed from modules/system/admin-rtl.css)43
-rw-r--r--modules/system/system.admin.css295
-rw-r--r--modules/system/system.base-rtl.css55
-rw-r--r--modules/system/system.base.css (renamed from modules/system/system-behavior.css)156
-rw-r--r--modules/system/system.css415
-rw-r--r--modules/system/system.maintenance.css (renamed from modules/system/maintenance.css)8
-rw-r--r--modules/system/system.menus-rtl.css38
-rw-r--r--modules/system/system.menus.css119
-rw-r--r--modules/system/system.messages.css (renamed from modules/system/system-messages.css)11
-rw-r--r--modules/system/system.theme-rtl.css59
-rw-r--r--modules/system/system.theme.css239
20 files changed, 1079 insertions, 1005 deletions
diff --git a/modules/simpletest/drupal_web_test_case.php b/modules/simpletest/drupal_web_test_case.php
index 36568a8d4..5b1849dd6 100644
--- a/modules/simpletest/drupal_web_test_case.php
+++ b/modules/simpletest/drupal_web_test_case.php
@@ -690,6 +690,13 @@ class DrupalWebTestCase extends DrupalTestCase {
protected $plainTextContent;
/**
+ * The value of the Drupal.settings JavaScript variable for the page currently loaded in the internal browser.
+ *
+ * @var Array
+ */
+ protected $drupalSettings;
+
+ /**
* The parsed version of the page.
*
* @var SimpleXMLElement
@@ -1698,8 +1705,14 @@ class DrupalWebTestCase extends DrupalTestCase {
* Note that this is not the Drupal $form_id, but rather the HTML ID of the
* form, which is typically the same thing but with hyphens replacing the
* underscores.
- */
- protected function drupalPost($path, $edit, $submit, array $options = array(), array $headers = array(), $form_html_id = NULL) {
+ * @param $extra_post
+ * (optional) A string of additional data to append to the POST submission.
+ * This can be used to add POST data for which there are no HTML fields, as
+ * is done by drupalPostAJAX(). This string is literally appended to the
+ * POST data, so it must already be urlencoded and contain a leading "&"
+ * (e.g., "&extra_var1=hello+world&extra_var2=you%26me").
+ */
+ protected function drupalPost($path, $edit, $submit, array $options = array(), array $headers = array(), $form_html_id = NULL, $extra_post = NULL) {
$submit_matches = FALSE;
$ajax = is_array($submit);
if (isset($path)) {
@@ -1750,23 +1763,7 @@ class DrupalWebTestCase extends DrupalTestCase {
// http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.1
$post[$key] = urlencode($key) . '=' . urlencode($value);
}
- // For AJAX requests, add '_triggering_element_*' and
- // 'ajax_html_ids' to the POST data, as ajax.js does.
- if ($ajax) {
- if (is_array($submit['triggering_element'])) {
- // Get the first key/value pair in the array.
- $post['_triggering_element_value'] = '_triggering_element_value=' . urlencode(reset($submit['triggering_element']));
- $post['_triggering_element_name'] = '_triggering_element_name=' . urlencode(key($submit['triggering_element']));
- }
- else {
- $post['_triggering_element_name'] = '_triggering_element_name=' . urlencode($submit['triggering_element']);
- }
- foreach ($this->xpath('//*[@id]') as $element) {
- $id = (string) $element['id'];
- $post[] = urlencode('ajax_html_ids[]') . '=' . urlencode($id);
- }
- }
- $post = implode('&', $post);
+ $post = implode('&', $post) . $extra_post;
}
$out = $this->curlExec(array(CURLOPT_URL => $action, CURLOPT_POST => TRUE, CURLOPT_POSTFIELDS => $post, CURLOPT_HTTPHEADER => $headers));
// Ensure that any changes to variables in the other thread are picked up.
@@ -1803,70 +1800,131 @@ class DrupalWebTestCase extends DrupalTestCase {
*
* @see ajax.js
*/
- protected function drupalPostAJAX($path, $edit, $triggering_element, $ajax_path = 'system/ajax', array $options = array(), array $headers = array(), $form_html_id = NULL, $ajax_settings = array()) {
+ protected function drupalPostAJAX($path, $edit, $triggering_element, $ajax_path = 'system/ajax', array $options = array(), array $headers = array(), $form_html_id = NULL, $ajax_settings = NULL) {
// Get the content of the initial page prior to calling drupalPost(), since
// drupalPost() replaces $this->content.
if (isset($path)) {
$this->drupalGet($path, $options);
}
- $content = $this->drupalGetContent();
- $return = drupal_json_decode($this->drupalPost(NULL, $edit, array('path' => $ajax_path, 'triggering_element' => $triggering_element), $options, $headers, $form_html_id));
+ $content = $this->content;
+ $drupal_settings = $this->drupalSettings;
+
+ // Get the AJAX settings bound to the triggering element.
+ if (!isset($ajax_settings)) {
+ if (is_array($triggering_element)) {
+ $xpath = '//*[@name="' . key($triggering_element) . '" and @value="' . current($triggering_element) . '"]';
+ }
+ else {
+ $xpath = '//*[@name="' . $triggering_element . '"]';
+ }
+ if (isset($form_html_id)) {
+ $xpath = '//form[@id="' . $form_html_id . '"]' . $xpath;
+ }
+ $element = $this->xpath($xpath);
+ $element_id = (string) $element[0]['id'];
+ $ajax_settings = $drupal_settings['ajax'][$element_id];
+ }
+
+ // Add extra information to the POST data as ajax.js does.
+ $extra_post = '';
+ if (isset($ajax_settings['submit'])) {
+ foreach ($ajax_settings['submit'] as $key => $value) {
+ $extra_post .= '&' . urlencode($key) . '=' . urlencode($value);
+ }
+ }
+ foreach ($this->xpath('//*[@id]') as $element) {
+ $id = (string) $element['id'];
+ $extra_post .= '&' . urlencode('ajax_html_ids[]') . '=' . urlencode($id);
+ }
- // We need $ajax_settings['wrapper'] to perform DOM manipulation.
+ // Submit the POST request.
+ $return = drupal_json_decode($this->drupalPost(NULL, $edit, array('path' => $ajax_path, 'triggering_element' => $triggering_element), $options, $headers, $form_html_id, $extra_post));
+
+ // Change the page content by applying the returned commands.
if (!empty($ajax_settings) && !empty($return)) {
+ // ajax.js applies some defaults to the settings object, so do the same
+ // for what's used by this function.
+ $ajax_settings += array(
+ 'method' => 'replaceWith',
+ );
// DOM can load HTML soup. But, HTML soup can throw warnings, suppress
// them.
@$dom = DOMDocument::loadHTML($content);
foreach ($return as $command) {
- // @todo ajax.js can process commands other than 'insert' and can
- // process commands that include a 'selector', but these are hard to
- // emulate with DOMDocument. For now, we only implement 'insert'
- // commands that use $ajax_settings['wrapper'].
- if ($command['command'] == 'insert' && !isset($command['selector'])) {
- // $dom->getElementById() doesn't work when drupalPostAJAX() is
- // invoked multiple times for a page, so use XPath instead. This also
- // sets us up for adding support for $command['selector'], though it
- // will require transforming a jQuery selector to XPath.
- $xpath = new DOMXPath($dom);
- $wrapperNode = $xpath->query('//*[@id="' . $ajax_settings['wrapper'] . '"]')->item(0);
- if ($wrapperNode) {
- // ajax.js adds an enclosing DIV to work around a Safari bug.
- $newDom = new DOMDocument();
- $newDom->loadHTML('<div>' . $command['data'] . '</div>');
- $newNode = $dom->importNode($newDom->documentElement->firstChild->firstChild, TRUE);
- $method = isset($command['method']) ? $command['method'] : $ajax_settings['method'];
- // The "method" is a jQuery DOM manipulation function. Emulate each
- // one using PHP's DOMNode API.
- switch ($method) {
- case 'replaceWith':
- $wrapperNode->parentNode->replaceChild($newNode, $wrapperNode);
- break;
- case 'append':
- $wrapperNode->appendChild($newNode);
- break;
- case 'prepend':
- // If no firstChild, insertBefore() falls back to appendChild().
- $wrapperNode->insertBefore($newNode, $wrapperNode->firstChild);
- break;
- case 'before':
- $wrapperNode->parentNode->insertBefore($newNode, $wrapperNode);
- break;
- case 'after':
- // If no nextSibling, insertBefore() falls back to appendChild().
- $wrapperNode->parentNode->insertBefore($newNode, $wrapperNode->nextSibling);
- break;
- case 'html':
- foreach ($wrapperNode->childNodes as $childNode) {
- $wrapperNode->removeChild($childNode);
+ switch ($command['command']) {
+ case 'settings':
+ $drupal_settings = array_merge_recursive($drupal_settings, $command['settings']);
+ break;
+
+ case 'insert':
+ // @todo ajax.js can process commands that include a 'selector', but
+ // these are hard to emulate with DOMDocument. For now, we only
+ // implement 'insert' commands that use $ajax_settings['wrapper'].
+ if (!isset($command['selector'])) {
+ // $dom->getElementById() doesn't work when drupalPostAJAX() is
+ // invoked multiple times for a page, so use XPath instead. This
+ // also sets us up for adding support for $command['selector'] in
+ // the future, once we figure out how to transform a jQuery
+ // selector to XPath.
+ $xpath = new DOMXPath($dom);
+ $wrapperNode = $xpath->query('//*[@id="' . $ajax_settings['wrapper'] . '"]')->item(0);
+ if ($wrapperNode) {
+ // ajax.js adds an enclosing DIV to work around a Safari bug.
+ $newDom = new DOMDocument();
+ $newDom->loadHTML('<div>' . $command['data'] . '</div>');
+ $newNode = $dom->importNode($newDom->documentElement->firstChild->firstChild, TRUE);
+ $method = isset($command['method']) ? $command['method'] : $ajax_settings['method'];
+ // The "method" is a jQuery DOM manipulation function. Emulate
+ // each one using PHP's DOMNode API.
+ switch ($method) {
+ case 'replaceWith':
+ $wrapperNode->parentNode->replaceChild($newNode, $wrapperNode);
+ break;
+ case 'append':
+ $wrapperNode->appendChild($newNode);
+ break;
+ case 'prepend':
+ // If no firstChild, insertBefore() falls back to
+ // appendChild().
+ $wrapperNode->insertBefore($newNode, $wrapperNode->firstChild);
+ break;
+ case 'before':
+ $wrapperNode->parentNode->insertBefore($newNode, $wrapperNode);
+ break;
+ case 'after':
+ // If no nextSibling, insertBefore() falls back to
+ // appendChild().
+ $wrapperNode->parentNode->insertBefore($newNode, $wrapperNode->nextSibling);
+ break;
+ case 'html':
+ foreach ($wrapperNode->childNodes as $childNode) {
+ $wrapperNode->removeChild($childNode);
+ }
+ $wrapperNode->appendChild($newNode);
+ break;
}
- $wrapperNode->appendChild($newNode);
- break;
+ }
}
- }
+ break;
+
+ // @todo Add suitable implementations for these commands in order to
+ // have full test coverage of what ajax.js can do.
+ case 'remove':
+ break;
+ case 'changed':
+ break;
+ case 'css':
+ break;
+ case 'data':
+ break;
+ case 'restripe':
+ break;
}
}
- $this->drupalSetContent($dom->saveHTML());
+ $content = $dom->saveHTML();
}
+ $this->drupalSetContent($content);
+ $this->drupalSetSettings($drupal_settings);
return $return;
}
@@ -2398,6 +2456,13 @@ class DrupalWebTestCase extends DrupalTestCase {
}
/**
+ * Gets the value of the Drupal.settings JavaScript variable for the currently loaded page.
+ */
+ protected function drupalGetSettings() {
+ return $this->drupalSettings;
+ }
+
+ /**
* Gets an array containing all e-mails sent during this test case.
*
* @param $filter
@@ -2435,6 +2500,17 @@ class DrupalWebTestCase extends DrupalTestCase {
$this->url = $url;
$this->plainTextContent = FALSE;
$this->elements = FALSE;
+ $this->drupalSettings = array();
+ if (preg_match('/jQuery\.extend\(Drupal\.settings, (.*?)\);/', $content, $matches)) {
+ $this->drupalSettings = drupal_json_decode($matches[1]);
+ }
+ }
+
+ /**
+ * Sets the value of the Drupal.settings JavaScript variable for the currently loaded page.
+ */
+ protected function drupalSetSettings($settings) {
+ $this->drupalSettings = $settings;
}
/**
diff --git a/modules/simpletest/tests/ajax.test b/modules/simpletest/tests/ajax.test
index 91572bda0..9377f4cdb 100644
--- a/modules/simpletest/tests/ajax.test
+++ b/modules/simpletest/tests/ajax.test
@@ -269,24 +269,17 @@ class AJAXMultiFormTestCase extends AJAXTestCase {
// of field items and "add more" button for the multi-valued field within
// each form.
$this->drupalGet('form-test/two-instances-of-same-form');
- foreach ($field_xpaths as $form_id => $field_xpath) {
+ foreach ($field_xpaths as $form_html_id => $field_xpath) {
$this->assert(count($this->xpath($field_xpath . $field_items_xpath_suffix)) == 1, t('Found the correct number of field items on the initial page.'));
$this->assertFieldByXPath($field_xpath . $button_xpath_suffix, NULL, t('Found the "add more" button on the initial page.'));
}
$this->assertNoDuplicateIds(t('Initial page contains unique IDs'), 'Other');
// Submit the "add more" button of each form twice. After each corresponding
- // page update, ensure the same as above. To successfully implement
- // consecutive AJAX submissions, we need to manage $settings as ajax.js
- // does for Drupal.settings.
- preg_match('/jQuery\.extend\(Drupal\.settings, (.*?)\);/', $this->content, $matches);
- $settings = drupal_json_decode($matches[1]);
- foreach ($field_xpaths as $form_id => $field_xpath) {
+ // page update, ensure the same as above.
+ foreach ($field_xpaths as $form_html_id => $field_xpath) {
for ($i=0; $i<2; $i++) {
- $button = $this->xpath($field_xpath . $button_xpath_suffix);
- $button_id = (string) $button[0]['id'];
- $commands = $this->drupalPostAJAX(NULL, array(), array($button_name => $button_value), 'system/ajax', array(), array(), $form_id, $settings['ajax'][$button_id]);
- $settings = array_merge_recursive($settings, $commands[0]['settings']);
+ $this->drupalPostAJAX(NULL, array(), array($button_name => $button_value), 'system/ajax', array(), array(), $form_html_id);
$this->assert(count($this->xpath($field_xpath . $field_items_xpath_suffix)) == $i+2, t('Found the correct number of field items after an AJAX submission.'));
$this->assertFieldByXPath($field_xpath . $button_xpath_suffix, NULL, t('Found the "add more" button after an AJAX submission.'));
$this->assertNoDuplicateIds(t('Updated page contains unique IDs'), 'Other');
diff --git a/modules/simpletest/tests/form.test b/modules/simpletest/tests/form.test
index c3ef7fd9d..969f3f398 100644
--- a/modules/simpletest/tests/form.test
+++ b/modules/simpletest/tests/form.test
@@ -996,11 +996,7 @@ class FormsRebuildTestCase extends DrupalWebTestCase {
// submission and verify it worked by ensuring the updated page has two text
// field items in the field for which we just added an item.
$this->drupalGet('node/add/page');
- preg_match('/jQuery\.extend\(Drupal\.settings, (.*?)\);/', $this->content, $matches);
- $settings = drupal_json_decode($matches[1]);
- $button = $this->xpath('//input[@name="field_ajax_test_add_more"]');
- $button_id = (string) $button[0]['id'];
- $this->drupalPostAJAX(NULL, array(), array('field_ajax_test_add_more' => t('Add another item')), 'system/ajax', array(), array(), 'page-node-form', $settings['ajax'][$button_id]);
+ $this->drupalPostAJAX(NULL, array(), array('field_ajax_test_add_more' => t('Add another item')), 'system/ajax', array(), array(), 'page-node-form');
$this->assert(count($this->xpath('//div[contains(@class, "field-name-field-ajax-test")]//input[@type="text"]')) == 2, t('AJAX submission succeeded.'));
// Submit the form with the non-AJAX "Save" button, leaving the title field
diff --git a/modules/simpletest/tests/form_test.file.inc b/modules/simpletest/tests/form_test.file.inc
index 96681eaa8..808863ede 100644
--- a/modules/simpletest/tests/form_test.file.inc
+++ b/modules/simpletest/tests/form_test.file.inc
@@ -13,11 +13,17 @@
function form_test_load_include_menu($form, &$form_state) {
// Submit the form via AJAX. That way the FAPI has to care about including
// the file specified in hook_menu().
+ $ajax_wrapper_id = drupal_html_id('form-test-load-include-menu-ajax-wrapper');
+ $form['ajax_wrapper'] = array(
+ '#markup' => '<div id="' . $ajax_wrapper_id . '"></div>',
+ );
$form['button'] = array(
'#type' => 'submit',
'#value' => t('Save'),
'#submit' => array('form_test_load_include_submit'),
'#ajax' => array(
+ 'wrapper' => $ajax_wrapper_id,
+ 'method' => 'append',
'callback' => 'form_test_load_include_menu_ajax',
),
);
@@ -32,9 +38,12 @@ function form_test_load_include_submit($form, $form_state) {
}
/**
- * Ajax callback for the file inclusion via menu test. We don't need to return
- * anything as the messages are added automatically.
+ * Ajax callback for the file inclusion via menu test.
*/
function form_test_load_include_menu_ajax($form) {
+ // We don't need to return anything, since #ajax['method'] is 'append', which
+ // does not remove the original #ajax['wrapper'] element, and status messages
+ // are automatically added by the AJAX framework as long as there's a wrapper
+ // element to add them to.
return '';
}
diff --git a/modules/system/admin.css b/modules/system/admin.css
deleted file mode 100644
index fbd32d427..000000000
--- a/modules/system/admin.css
+++ /dev/null
@@ -1,173 +0,0 @@
-/* $Id$ */
-
-/*
-** Formatting for administration page
-*/
-div.admin-panel {
- margin: 0;
- padding: 5px 5px 15px 5px;
-}
-
-div.admin-panel .description {
- margin: 0 0 3px;
- padding: 2px 0 3px 0;
-}
-
-div.admin-panel .body {
- padding: 0 4px 2px 8px; /* LTR */
-}
-
-div.admin {
- padding-top: 15px;
-}
-
-div.admin .left {
- float: left; /* LTR */
- width: 47%;
- margin-left: 1em; /* LTR */
-}
-div.admin .right {
- float: right; /* LTR */
- width: 47%;
- margin-right: 1em; /* LTR */
-}
-
-div.admin .expert-link {
- text-align: right; /* LTR */
- margin-right: 1em; /* LTR */
- padding-right: 4px; /* LTR */
-}
-
-table.package {
- width: 100%;
-}
-table.package .description {
- width: 100%;
-}
-table.package .version {
- direction: ltr;
-}
-div.admin-requirements,
-div.admin-required {
- font-size: 0.9em;
- color: #444;
-}
-span.admin-disabled {
- color: #800;
-}
-span.admin-enabled {
- color: #080;
-}
-span.admin-missing {
- color: #f00;
-}
-
-/**
- * Formatting for status report
- */
-table.system-status-report th {
- border-bottom: 1px solid #ccc;
-}
-table.system-status-report th,
-table.system-status-report tr.merge-up td {
- padding-left: 30px; /* LTR */
-}
-table.system-status-report th {
- background-repeat: no-repeat;
- background-position: 5px 50%; /* LTR */
- padding-top: 6px;
- padding-bottom: 6px;
-}
-table.system-status-report tr.error th {
- background-image: url(../../misc/watchdog-error.png);
-}
-table.system-status-report tr.warning th {
- background-image: url(../../misc/watchdog-warning.png);
-}
-table.system-status-report tr.ok th {
- background-image: url(../../misc/watchdog-ok.png);
-}
-
-/**
- * Formatting for theme configuration
- */
-.theme-settings-left {
- float: left;
- width: 49%;
-}
-.theme-settings-right {
- float: right;
- width: 49%;
-}
-.theme-settings-bottom {
- clear: both;
-}
-
-/**
- * Formatting for theme overview
- */
-table.screenshot {
- margin-right: 1em; /* LTR */
-}
-.theme-info h2 {
- margin-bottom: 0;
-}
-.theme-info p {
- margin-top: 0;
-}
-
-
-/**
- * Date and time settings page
- */
-.date-container {
- overflow: auto;
- clear: left; /* LTR */
-}
-.date-container .form-item {
- margin-top: 0;
-}
-.date-container .select-container,
-.date-container .custom-container {
- float: left; /* LTR */
-}
-.date-container .custom-container {
- margin-left: 15px; /* LTR */
- width: 50%;
-}
-html.js .custom-container label {
- visibility: hidden;
-}
-
-/**
- * Exposed filters
- */
-.exposed-filters .filters {
- float: left; /* LTR */
- margin-right: 1em; /* LTR */
- width: 25em; /* IE6 */
-}
-.exposed-filters .form-item {
- margin: 0 0 0.1em 0;
- padding: 0;
-}
-.exposed-filters .form-item label {
- float: left; /* LTR */
- font-weight: normal;
- width: 10em;
-}
-.exposed-filters .form-select {
- width: 14em;
-}
-/* Current filters */
-.exposed-filters .current-filters {
- margin-bottom: 1em;
-}
-.exposed-filters .current-filters .placeholder {
- font-style: normal;
- font-weight: bold;
-}
-.exposed-filters .additional-filters {
- float: left; /* LTR */
- margin-right: 1em; /* LTR */
-}
diff --git a/modules/system/system-behavior-rtl.css b/modules/system/system-behavior-rtl.css
deleted file mode 100644
index 0fcda3d1c..000000000
--- a/modules/system/system-behavior-rtl.css
+++ /dev/null
@@ -1,89 +0,0 @@
-/* $Id$ */
-
-/**
- * Autocomplete
- */
- /* Animated throbber */
-html.js input.form-autocomplete {
- background-position: 0% 2px;
-}
-html.js input.throbbing {
- background-position: 0% -18px;
-}
-
-/**
- * Collapsing fieldsets
- */
-html.js fieldset.collapsible .fieldset-legend {
- padding-left: 0;
- padding-right: 15px;
- background-position: 98% 75%;
-}
-html.js fieldset.collapsed .fieldset-legend {
- background-image: url(../../misc/menu-collapsed-rtl.png);
- background-position: 98% 50%;
-}
-
-/**
- * Progress bar
- */
-.progress .percentage {
- float: left;
-}
-.progress-disabled {
- float: right;
-}
-.ajax-progress {
- float: right;
-}
-.ajax-progress .throbber {
- float: right;
-}
-
-/**
- * Password strength indicator
- */
-input.password-field {
- margin-left: 10px;
- margin-right: 0;
-}
-input.password-confirm {
- margin-left: 10px;
- margin-right: 0;
-}
-.password-strength-title {
- float: right;
-}
-.password-parent {
- float: right;
-}
-
-/**
- * Table drag and drop
- */
-.draggable a.tabledrag-handle {
- float: right;
- margin: -0.4em -0.5em -0.4em 0;
- padding: 0.42em 0.5em 0.42em 1.5em;
-}
-div.indentation {
- margin: -0.4em -0.4em -0.4em 0.2em;
- padding: 0.42em 0.6em 0.42em 0;
- float: right;
-}
-div.tree-child,
-div.tree-child-last {
- background-position: -65px center;
-}
-.tabledrag-toggle-weight-wrapper {
- text-align: left; /* RTL */
-}
-
-/**
- * Multiselect form
- */
-dl.multiselect dt,
-dl.multiselect dd {
- float: right;
- margin: 0 0 0 1em;
-}
diff --git a/modules/system/system-menus-rtl.css b/modules/system/system-menus-rtl.css
deleted file mode 100644
index e5247dfed..000000000
--- a/modules/system/system-menus-rtl.css
+++ /dev/null
@@ -1,16 +0,0 @@
-/* $Id$ */
-
-ul.menu {
- text-align:right;
-}
-ul.menu li {
- margin: 0 0.5em 0 0;
-}
-ul li.collapsed {
- list-style-image: url(../../misc/menu-collapsed-rtl.png);
-}
-li.expanded,
-li.collapsed,
-li.leaf {
- padding: 0.2em 0 0 0.5em;
-}
diff --git a/modules/system/system-menus.css b/modules/system/system-menus.css
deleted file mode 100644
index abf18ad7f..000000000
--- a/modules/system/system-menus.css
+++ /dev/null
@@ -1,50 +0,0 @@
-/* $Id$ */
-
-ul.menu {
- list-style: none;
- border: none;
- text-align:left; /* LTR */
-}
-ul.menu li {
- margin: 0 0 0 0.5em; /* LTR */
-}
-ul li.expanded {
- list-style-type: circle;
- list-style-image: url(../../misc/menu-expanded.png);
-}
-ul li.collapsed {
- list-style-type: disc;
- list-style-image: url(../../misc/menu-collapsed.png); /* LTR */
-}
-ul li.leaf {
- list-style-type: square;
- list-style-image: url(../../misc/menu-leaf.png);
-}
-li.expanded,
-li.collapsed,
-li.leaf {
- padding: 0.2em 0.5em 0 0; /* LTR */
- margin: 0;
-}
-li a.active {
- color: #000;
-}
-td.menu-disabled {
- background: #ccc;
-}
-ul.links {
- margin: 0;
- padding: 0;
-}
-ul.links.inline {
- display: inline;
-}
-ul.links li {
- display: inline;
- list-style-type: none;
- padding: 0 0.5em;
-}
-.block ul {
- margin: 0;
- padding: 0 0 0.25em 1em; /* LTR */
-}
diff --git a/modules/system/system-rtl.css b/modules/system/system-rtl.css
deleted file mode 100644
index 88c4072a2..000000000
--- a/modules/system/system-rtl.css
+++ /dev/null
@@ -1,74 +0,0 @@
-/* $Id$ */
-
-th {
- text-align: right;
- padding-right: 0;
- padding-left: 1em;
-}
-
-thead th {
- text-align: right;
- padding-left: 1em;
- padding-right: 0.5em;
-}
-
-.item-list .icon {
- float: left;
- padding-left: 0;
- padding-right: 0.25em;
- clear: left;
-}
-.item-list ul li {
- margin: 0 1.5em 0.25em 0;
-}
-
-.more-link {
- text-align: left;
-}
-.more-help-link {
- text-align: left;
-}
-.more-help-link a {
- padding: 1px 20px 1px 0;
- background-position: 100% 50%;
-}
-
-.block ul {
- padding: 0 1em 0.25em 0;
-}
-
-ul.primary {
- padding: 0 1em 0 0;
-}
-ul.primary li a {
- margin-right: 5px;
- margin-left: 0.5em;
-}
-ul.secondary li {
- display: inline;
- padding: 0 1em;
- border-right: none;
- border-left: 1px solid #ccc;
-}
-
-.system-themes-list-enabled .theme-selector .screenshot,
-.system-themes-list-enabled .theme-selector .no-screenshot {
- float: right;
- margin: 0 0 0 20px;
-}
-.system-themes-list-disabled .theme-selector {
- float: right;
- padding: 20px 0 20px 20px;
-}
-.theme-selector .operations li {
- float: right;
- border-right: none;
- border-left: 1px solid #cdcdcd;
-}
-.theme-selector .operations li.last {
- padding: 0 0.7em 0 0;
- border-left: none;
-}
-.theme-selector .operations li.first {
- padding: 0 0 0 0.7em;
-}
diff --git a/modules/system/admin-rtl.css b/modules/system/system.admin-rtl.css
index 4331fab4d..c19adcd65 100644
--- a/modules/system/admin-rtl.css
+++ b/modules/system/system.admin-rtl.css
@@ -1,9 +1,16 @@
/* $Id$ */
+/**
+ * @file
+ * RTL styles for administration pages.
+ */
+
+/**
+ * Administration blocks.
+ */
div.admin-panel .body {
padding: 0 8px 2px 4px;
}
-
div.admin .left {
float: right;
margin-left: 0;
@@ -14,7 +21,6 @@ div.admin .right {
margin-left: 1em;
margin-right: 0;
}
-
div.admin .expert-link {
text-align: left;
margin-right: 0;
@@ -23,19 +29,48 @@ div.admin .expert-link {
padding-left: 4px;
}
+/**
+ * Status report.
+ */
table.system-status-report th,
table.system-status-report tr.merge-up td {
padding-right: 30px;
}
-
table.system-status-report th {
background-position: 95% 50%;
}
+/**
+ * Appearance page.
+ */
table.screenshot {
margin-left: 1em;
}
+.system-themes-list-enabled .theme-selector .screenshot,
+.system-themes-list-enabled .theme-selector .no-screenshot {
+ float: right;
+ margin: 0 0 0 20px;
+}
+.system-themes-list-disabled .theme-selector {
+ float: right;
+ padding: 20px 0 20px 20px;
+}
+.theme-selector .operations li {
+ float: right;
+ border-right: none;
+ border-left: 1px solid #cdcdcd;
+}
+.theme-selector .operations li.last {
+ padding: 0 0.7em 0 0;
+ border-left: none;
+}
+.theme-selector .operations li.first {
+ padding: 0 0 0 0.7em;
+}
+/**
+ * Date and time settings page.
+ */
.date-container {
clear: right;
}
@@ -49,7 +84,7 @@ table.screenshot {
}
/**
- * Exposed filters
+ * Exposed filters.
*/
.exposed-filters .filters {
float: right;
diff --git a/modules/system/system.admin.css b/modules/system/system.admin.css
new file mode 100644
index 000000000..2014b4a64
--- /dev/null
+++ b/modules/system/system.admin.css
@@ -0,0 +1,295 @@
+/* $Id$ */
+
+/**
+ * @file
+ * Styles for administration pages.
+ */
+
+/**
+ * Administration blocks.
+ */
+div.admin-panel {
+ margin: 0;
+ padding: 5px 5px 15px 5px;
+}
+div.admin-panel .description {
+ margin: 0 0 3px;
+ padding: 2px 0 3px 0;
+}
+div.admin-panel .body {
+ padding: 0 4px 2px 8px; /* LTR */
+}
+div.admin {
+ padding-top: 15px;
+}
+div.admin .left {
+ float: left; /* LTR */
+ width: 47%;
+ margin-left: 1em; /* LTR */
+}
+div.admin .right {
+ float: right; /* LTR */
+ width: 47%;
+ margin-right: 1em; /* LTR */
+}
+div.admin .expert-link {
+ text-align: right; /* LTR */
+ margin-right: 1em; /* LTR */
+ padding-right: 4px; /* LTR */
+}
+
+/**
+ * Markup generated by theme_system_compact_link().
+ */
+.compact-link {
+ margin: 0 0 0.5em 0;
+}
+
+/**
+ * Modules page.
+ */
+#system-modules div.incompatible {
+ font-weight: bold;
+}
+table.package {
+ width: 100%;
+}
+table.package .description {
+ width: 100%;
+}
+table.package .version {
+ direction: ltr;
+}
+div.admin-requirements,
+div.admin-required {
+ font-size: 0.9em;
+ color: #444;
+}
+span.admin-disabled {
+ color: #800;
+}
+span.admin-enabled {
+ color: #080;
+}
+span.admin-missing {
+ color: #f00;
+}
+a.module-link {
+ display: block;
+ padding: 1px 0 1px 20px; /* LTR */
+ white-space: nowrap;
+}
+a.module-link-help {
+ background: url(../../misc/help.png) 0 50% no-repeat; /* LTR */
+}
+a.module-link-permissions {
+ background: url(../../misc/permissions.png) 0 50% no-repeat; /* LTR */
+}
+a.module-link-configure {
+ background: url(../../misc/configure.png) 0 50% no-repeat; /* LTR */
+}
+.module-help {
+ margin-left: 1em; /* LTR */
+ float: right; /* LTR */
+}
+
+/**
+ * Status report.
+ */
+table.system-status-report th {
+ border-bottom: 1px solid #ccc;
+}
+table.system-status-report th,
+table.system-status-report tr.merge-up td {
+ padding-left: 30px; /* LTR */
+}
+table.system-status-report th {
+ background-repeat: no-repeat;
+ background-position: 5px 50%; /* LTR */
+ padding-top: 6px;
+ padding-bottom: 6px;
+}
+table.system-status-report tr.error th {
+ background-image: url(../../misc/watchdog-error.png);
+}
+table.system-status-report tr.warning th {
+ background-image: url(../../misc/watchdog-warning.png);
+}
+table.system-status-report tr.ok th {
+ background-image: url(../../misc/watchdog-ok.png);
+}
+tr.merge-down,
+tr.merge-down td,
+tr.merge-down th {
+ border-bottom-width: 0 !important;
+}
+tr.merge-up,
+tr.merge-up td,
+tr.merge-up th {
+ border-top-width: 0 !important;
+}
+
+/**
+ * Theme settings.
+ */
+.theme-settings-left {
+ float: left;
+ width: 49%;
+}
+.theme-settings-right {
+ float: right;
+ width: 49%;
+}
+.theme-settings-bottom {
+ clear: both;
+}
+
+/**
+ * Appearance page.
+ */
+table.screenshot {
+ margin-right: 1em; /* LTR */
+}
+.theme-info h2 {
+ margin-bottom: 0;
+}
+.theme-info p {
+ margin-top: 0;
+}
+.system-themes-list {
+ margin-bottom: 20px;
+}
+.system-themes-list-disabled {
+ border-top: 1px solid #cdcdcd;
+ padding-top: 20px;
+}
+.system-themes-list h2 {
+ margin: 0;
+}
+.theme-selector {
+ padding-top: 20px;
+}
+.theme-selector .screenshot,
+.theme-selector .no-screenshot {
+ border: 1px solid #e0e0d8;
+ padding: 2px;
+ vertical-align: bottom;
+ width: 294px;
+ height: 219px;
+ line-height: 219px;
+ text-align: center;
+}
+.theme-default .screenshot {
+ border: 1px solid #aaa;
+}
+.system-themes-list-enabled .theme-selector .screenshot,
+.system-themes-list-enabled .theme-selector .no-screenshot {
+ float: left; /* LTR */
+ margin: 0 20px 0 0; /* LTR */
+}
+.system-themes-list-disabled .theme-selector .screenshot,
+.system-themes-list-disabled .theme-selector .no-screenshot {
+ width: 194px;
+ height: 144px;
+ line-height: 144px;
+}
+.theme-selector h3 {
+ font-weight: normal;
+}
+.theme-default h3 {
+ font-weight: bold;
+}
+.system-themes-list-enabled .theme-selector h3 {
+ margin-top: 0;
+}
+.system-themes-list-disabled .theme-selector {
+ width: 300px;
+ float: left; /* LTR */
+ padding: 20px 20px 20px 0; /* LTR */
+}
+.system-themes-list-enabled .theme-info {
+ max-width: 940px;
+}
+.system-themes-list-disabled .theme-info {
+ min-height: 170px;
+}
+.theme-selector .incompatible {
+ margin-top: 10px;
+ font-weight: bold;
+}
+.theme-selector .operations {
+ margin: 10px 0 0 0;
+ padding: 0;
+}
+.theme-selector .operations li {
+ float: left; /* LTR */
+ margin: 0;
+ padding: 0 0.7em;
+ list-style-type: none;
+ border-right: 1px solid #cdcdcd; /* LTR */
+}
+.theme-selector .operations li.last {
+ padding: 0 0 0 0.7em; /* LTR */
+ border-right: none; /* LTR */
+}
+.theme-selector .operations li.first {
+ padding: 0 0.7em 0 0; /* LTR */
+}
+#system-themes-admin-form {
+ clear: left;
+}
+
+/**
+ * Date and time settings page.
+ */
+.date-container {
+ overflow: auto;
+ clear: left; /* LTR */
+}
+.date-container .form-item {
+ margin-top: 0;
+}
+.date-container .select-container,
+.date-container .custom-container {
+ float: left; /* LTR */
+}
+.date-container .custom-container {
+ margin-left: 15px; /* LTR */
+ width: 50%;
+}
+html.js .custom-container label {
+ visibility: hidden;
+}
+
+/**
+ * Exposed filters.
+ */
+.exposed-filters .filters {
+ float: left; /* LTR */
+ margin-right: 1em; /* LTR */
+ width: 25em; /* IE6 */
+}
+.exposed-filters .form-item {
+ margin: 0 0 0.1em 0;
+ padding: 0;
+}
+.exposed-filters .form-item label {
+ float: left; /* LTR */
+ font-weight: normal;
+ width: 10em;
+}
+.exposed-filters .form-select {
+ width: 14em;
+}
+/* Current filters */
+.exposed-filters .current-filters {
+ margin-bottom: 1em;
+}
+.exposed-filters .current-filters .placeholder {
+ font-style: normal;
+ font-weight: bold;
+}
+.exposed-filters .additional-filters {
+ float: left; /* LTR */
+ margin-right: 1em; /* LTR */
+}
diff --git a/modules/system/system.base-rtl.css b/modules/system/system.base-rtl.css
new file mode 100644
index 000000000..ac5f49b7e
--- /dev/null
+++ b/modules/system/system.base-rtl.css
@@ -0,0 +1,55 @@
+/* $Id$ */
+
+/**
+ * @file
+ * Generic theme-independent base styles.
+ */
+
+/**
+ * Autocomplete.
+ */
+/* Animated throbber */
+html.js input.form-autocomplete {
+ background-position: 0% 2px;
+}
+html.js input.throbbing {
+ background-position: 0% -18px;
+}
+
+/**
+ * Progress bar.
+ */
+.progress .percentage {
+ float: left;
+}
+.progress-disabled {
+ float: right;
+}
+.ajax-progress {
+ float: right;
+}
+.ajax-progress .throbber {
+ float: right;
+}
+
+/**
+ * TableDrag behavior.
+ */
+.draggable a.tabledrag-handle {
+ float: right;
+ margin: -0.4em -0.5em -0.4em 0;
+ padding: 0.42em 0.5em 0.42em 1.5em;
+}
+div.indentation {
+ margin: -0.4em -0.4em -0.4em 0.2em;
+ padding: 0.42em 0.6em 0.42em 0;
+ float: right;
+}
+div.tree-child,
+div.tree-child-last {
+ background-position: -65px center;
+}
+.tabledrag-toggle-weight-wrapper {
+ text-align: left; /* RTL */
+}
+
diff --git a/modules/system/system-behavior.css b/modules/system/system.base.css
index 343cff68a..785acf47c 100644
--- a/modules/system/system-behavior.css
+++ b/modules/system/system.base.css
@@ -1,7 +1,14 @@
/* $Id$ */
/**
- * Autocomplete
+ * @file
+ * Generic theme-independent base styles.
+ */
+
+/**
+ * Autocomplete.
+ *
+ * @see autocomplete.js
*/
/* Suggestion list */
#autocomplete {
@@ -22,10 +29,6 @@
white-space: pre;
cursor: default;
}
-#autocomplete li.selected {
- background: #0072b9;
- color: #fff;
-}
/* Animated throbber */
html.js input.form-autocomplete {
background-image: url(../../misc/throbber.gif);
@@ -37,7 +40,9 @@ html.js input.throbbing {
}
/**
- * Collapsing fieldsets
+ * Collapsible fieldsets.
+ *
+ * @see collapse.js
*/
html.js fieldset.collapsed {
border-bottom-width: 0;
@@ -54,22 +59,11 @@ fieldset.collapsible {
fieldset.collapsible .fieldset-legend {
display: block;
}
-html.js fieldset.collapsible .fieldset-legend {
- padding-left: 15px; /* LTR */
- background: url(../../misc/menu-expanded.png) 5px 65% no-repeat; /* LTR */
-}
-html.js fieldset.collapsed .fieldset-legend {
- background-image: url(../../misc/menu-collapsed.png); /* LTR */
- background-position: 5px 50%; /* LTR */
-}
-.fieldset-legend span.summary {
- font-size: 0.9em;
- color: #999;
- margin-left: 0.5em;
-}
/**
- * Resizable textareas
+ * Resizable textareas.
+ *
+ * @see textarea.js
*/
.form-textarea-wrapper textarea {
margin: 0;
@@ -89,7 +83,9 @@ html.js fieldset.collapsed .fieldset-legend {
}
/**
- * Table drag and drop
+ * TableDrag behavior.
+ *
+ * @see tabledrag.js
*/
body.drag {
cursor: move;
@@ -133,29 +129,29 @@ div.tree-child-horizontal {
.tabledrag-toggle-weight-wrapper {
text-align: right; /* LTR */
}
-.tabledrag-toggle-weight {
- font-size: 0.9em;
-}
-body div.tabledrag-changed-warning {
- margin-bottom: 0.5em;
-}
/**
- * Progress bar
+ * TableHeader behavior.
+ *
+ * @see tableheader.js
*/
-.progress {
- font-weight: bold;
+table.sticky-header {
+ background-color: #fff;
+ margin-top: 0;
}
+
+/**
+ * Progress behavior.
+ *
+ * @see progress.js
+ */
+/* Bar */
.progress .bar {
- border-radius: 3px;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
- background: #ccc;
- border: 1px solid #666;
- margin: 0 0.2em;
+ background-color: #fff;
+ border: 1px solid;
}
.progress .filled {
- background: #0072b9 url(../../misc/progress.gif);
+ background-color: #000;
height: 1.5em;
width: 5px;
}
@@ -165,6 +161,7 @@ body div.tabledrag-changed-warning {
.progress-disabled {
float: left; /* LTR */
}
+/* Throbber */
.ajax-progress {
float: left; /* LTR */
}
@@ -183,65 +180,7 @@ tr .ajax-progress .throbber {
}
/**
- * Password strength indicator
- */
-.password-strength {
- width: 17em;
- float: right; /* LTR */
- margin-top: 1.4em;
-}
-.password-strength-title {
- display: inline;
-}
-.password-strength-text {
- float: right; /* LTR */
- font-weight: bold;
-}
-.password-indicator {
- background-color: #C4C4C4;
- height: 0.3em;
- width: 100%;
-}
-.password-indicator div {
- height: 100%;
- width: 0%;
- background-color: #47C965;
-}
-input.password-confirm,
-input.password-field {
- width: 16em;
- margin-bottom: 0.4em;
-}
-div.password-confirm {
- display: inline;
- padding-left: 1em;
-}
-div.form-item div.password-suggestions {
- padding: 0.2em 0.5em;
- margin: 0.7em 0;
- width: 38.5em;
- border: 1px solid #B4B4B4;
-}
-div.password-suggestions ul {
- margin-bottom: 0;
-}
-.password-parent {
- margin: 0;
- width: 34.3em;
-}
-
-/**
- * Password confirmation checker
- */
-.confirm-parent {
- margin: 0;
-}
-div.password-confirm {
- visibility: hidden;
-}
-
-/**
- * Inline items (need to override above)
+ * Inline items.
*/
.container-inline div,
.container-inline label {
@@ -252,6 +191,9 @@ div.password-confirm {
display: block;
}
+/**
+ * Prevent text wrapping.
+ */
.nowrap {
white-space: nowrap;
}
@@ -291,3 +233,25 @@ html.js .js-hide {
clip: rect(1px 1px 1px 1px); /* IE6, IE7 */
clip: rect(1px, 1px, 1px, 1px);
}
+
+/**
+ * Markup free clearing.
+ *
+ * @see http://perishablepress.com/press/2009/12/06/new-clearfix-hack
+ */
+.clearfix:after {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+}
+/* IE6 */
+* html .clearfix {
+ height: 1%;
+}
+/* IE7 */
+*:first-child + html .clearfix {
+ min-height: 1%;
+}
+
diff --git a/modules/system/system.css b/modules/system/system.css
deleted file mode 100644
index 0acff828a..000000000
--- a/modules/system/system.css
+++ /dev/null
@@ -1,415 +0,0 @@
-/* $Id$ */
-
-/*
-** HTML elements
-*/
-fieldset {
- margin-bottom: 1em;
- padding: .5em;
-}
-form {
- margin: 0;
- padding: 0;
-}
-hr {
- height: 1px;
- border: 1px solid gray;
-}
-img {
- border: 0;
-}
-table {
- border-collapse: collapse;
-}
-th {
- text-align: left; /* LTR */
- padding-right: 1em; /* LTR */
- border-bottom: 3px solid #ccc;
-}
-th.active img {
- display: inline;
-}
-tr.even,
-tr.odd {
- background-color: #eee;
- border-bottom: 1px solid #ccc;
- padding: 0.1em 0.6em;
-}
-tr.drag {
- background-color: #fffff0;
-}
-tr.drag-previous {
- background-color: #ffd;
-}
-td.active {
- background-color: #ddd;
-}
-td.checkbox,
-th.checkbox {
- text-align: center;
-}
-tbody {
- border-top: 1px solid #ccc;
-}
-tbody th {
- border-bottom: 1px solid #ccc;
-}
-thead th {
- text-align: left; /* LTR */
- padding-right: 1em; /* LTR */
- border-bottom: 3px solid #ccc;
-}
-
-/*
-** Other common styles
-*/
-.breadcrumb {
- padding-bottom: .5em
-}
-.item-list .icon {
- color: #555;
- float: right; /* LTR */
- padding-left: 0.25em; /* LTR */
- clear: right; /* LTR */
-}
-.item-list .title {
- font-weight: bold;
-}
-.item-list ul {
- margin: 0 0 0.75em 0;
- padding: 0;
-}
-.item-list ul li {
- margin: 0 0 0.25em 1.5em; /* LTR */
- padding: 0;
-}
-.form-item {
- margin-top: 1em;
- margin-bottom: 1em;
-}
-tr.odd .form-item,
-tr.even .form-item {
- margin-top: 0;
- margin-bottom: 0;
- white-space: nowrap;
-}
-tr.merge-down,
-tr.merge-down td,
-tr.merge-down th {
- border-bottom-width: 0 !important;
-}
-tr.merge-up,
-tr.merge-up td,
-tr.merge-up th {
- border-top-width: 0 !important;
-}
-.form-item input.error,
-.form-item textarea.error,
-.form-item select.error {
- border: 2px solid red;
-}
-.form-item .description {
- font-size: 0.85em;
-}
-.form-item label {
- display: block;
- font-weight: bold;
-}
-.form-item label.option {
- display: inline;
- font-weight: normal;
-}
-.form-checkboxes,
-.form-radios {
- margin: 1em 0;
-}
-.form-checkboxes .form-item,
-.form-radios .form-item {
- margin-top: 0.4em;
- margin-bottom: 0.4em;
-}
-.form-type-radio .description,
-.form-type-checkbox .description {
- margin-left: 2.4em;
-}
-input.form-checkbox,
-input.form-radio {
- vertical-align: middle;
-}
-.marker,
-.form-required {
- color: #f00;
-}
-.more-help-link {
- text-align: right; /* LTR */
-}
-.more-help-link a,
-a.module-link {
- padding: 1px 0 1px 20px; /* LTR */
-}
-a.module-link {
- display: block;
- white-space: nowrap;
-}
-.more-help-link a,
-a.module-link-help {
- background: url(../../misc/help.png) 0 50% no-repeat; /* LTR */
-}
-a.module-link-permissions {
- background: url(../../misc/permissions.png) 0 50% no-repeat; /* LTR */
-}
-a.module-link-configure {
- background: url(../../misc/configure.png) 0 50% no-repeat; /* LTR */
-}
-.more-link {
- text-align: right; /* LTR */
-}
-.module-help {
- margin-left: 1em; /* LTR */
- float: right; /* LTR */
-}
-.item-list .pager {
- clear: both;
- text-align: center;
-}
-.item-list .pager li {
- background-image:none;
- display:inline;
- list-style-type:none;
- padding: 0.5em;
-}
-.pager-current {
- font-weight:bold;
-}
-.tips {
- margin-top: 0;
- margin-bottom: 0;
- padding-top: 0;
- padding-bottom: 0;
- font-size: 0.9em;
-}
-.compact-link {
- margin: 0 0 0.5em 0;
-}
-
-/*
-** Tab navigation
-*/
-ul.primary {
- border-collapse: collapse;
- padding: 0 0 0 1em; /* LTR */
- white-space: nowrap;
- list-style: none;
- margin: 5px;
- height: auto;
- line-height: normal;
- border-bottom: 1px solid #bbb;
-}
-ul.primary li {
- display: inline;
-}
-ul.primary li a {
- background-color: #ddd;
- border-color: #bbb;
- border-width: 1px;
- border-style: solid solid none solid;
- height: auto;
- margin-right: 0.5em; /* LTR */
- padding: 0 1em;
- text-decoration: none;
-}
-ul.primary li.active a {
- background-color: #fff;
- border: 1px solid #bbb;
- border-bottom: #fff 1px solid;
-}
-ul.primary li a:hover {
- background-color: #eee;
- border-color: #ccc;
- border-bottom-color: #eee;
-}
-ul.secondary {
- border-bottom: 1px solid #bbb;
- padding: 0.5em 1em;
- margin: 5px;
-}
-ul.secondary li {
- display: inline;
- padding: 0 1em;
- border-right: 1px solid #ccc; /* LTR */
-}
-ul.secondary a {
- padding: 0;
- text-decoration: none;
-}
-ul.secondary a.active {
- border-bottom: 4px solid #999;
-}
-
-/*
-** To be used with tableselect.js
-*/
-tr.selected td {
- background: #ffc;
-}
-
-/*
-** To be used with displace.js
-*/
-.displace-top,
-.displace-bottom {
- position: relative;
- width: 100%;
-}
-.displace-processed .displace-top,
-.displace-processed .displace-bottom {
- position: fixed;
- width: auto;
- left: 0;
- right: 0;
-}
-.displace-unsupported .displace-top,
-.displace-unsupported .displace-bottom {
- position: absolute;
-}
-
-/*
-** To be used with displace.js
-*/
-.displace-top,
-.displace-bottom {
- position: relative;
- width: 100%;
-}
-.displace-processed .displace-top,
-.displace-processed .displace-bottom {
- position: fixed;
- width: auto;
- left: 0;
- right: 0;
-}
-.displace-unsupported .displace-top,
-.displace-unsupported .displace-bottom {
- position: absolute;
-}
-
-/*
-** Floating header for tableheader.js
-*/
-table.sticky-header {
- margin-top: 0;
- background: #fff;
-}
-
-/*
-** Styles for the system modules page (admin/modules)
-*/
-#system-modules div.incompatible {
- font-weight: bold;
-}
-
-/*
-** Styles for the system themes page (admin/appearance)
-*/
-.system-themes-list {
- margin-bottom: 20px;
-}
-.system-themes-list-disabled {
- border-top: 1px solid #cdcdcd;
- padding-top: 20px;
-}
-.system-themes-list h2 {
- margin: 0;
-}
-.theme-selector {
- padding-top: 20px;
-}
-.theme-selector .screenshot,
-.theme-selector .no-screenshot {
- border: 1px solid #e0e0d8;
- padding: 2px;
- vertical-align: bottom;
- width: 294px;
- height: 219px;
- line-height: 219px;
- text-align: center;
-}
-.theme-default .screenshot {
- border: 1px solid #aaa;
-}
-.system-themes-list-enabled .theme-selector .screenshot,
-.system-themes-list-enabled .theme-selector .no-screenshot {
- float: left; /* LTR */
- margin: 0 20px 0 0; /* LTR */
-}
-.system-themes-list-disabled .theme-selector .screenshot,
-.system-themes-list-disabled .theme-selector .no-screenshot {
- width: 194px;
- height: 144px;
- line-height: 144px;
-}
-.theme-selector h3 {
- font-weight: normal;
-}
-.theme-default h3 {
- font-weight: bold;
-}
-.system-themes-list-enabled .theme-selector h3 {
- margin-top: 0;
-}
-.system-themes-list-disabled .theme-selector {
- width: 300px;
- float: left; /* LTR */
- padding: 20px 20px 20px 0; /* LTR */
-}
-.system-themes-list-enabled .theme-info {
- max-width: 940px;
-}
-.system-themes-list-disabled .theme-info {
- min-height: 170px;
-}
-.theme-selector .incompatible {
- margin-top: 10px;
- font-weight: bold;
-}
-.theme-selector .operations {
- margin: 10px 0 0 0;
- padding: 0;
-}
-.theme-selector .operations li {
- float: left; /* LTR */
- margin: 0;
- padding: 0 0.7em;
- list-style-type: none;
- border-right: 1px solid #cdcdcd; /* LTR */
-}
-.theme-selector .operations li.last {
- padding: 0 0 0 0.7em; /* LTR */
- border-right: none; /* LTR */
-}
-.theme-selector .operations li.first {
- padding: 0 0.7em 0 0; /* LTR */
-}
-#system-themes-admin-form {
- clear: left;
-}
-
-/*
-** Markup free clearing
-** Details: http://perishablepress.com/press/2009/12/06/new-clearfix-hack
-*/
-.clearfix:after {
- content: ".";
- display: block;
- height: 0;
- clear: both;
- visibility: hidden;
-}
-/* IE6 */
-* html .clearfix {
- height: 1%;
-}
-/* IE7 */
-*:first-child + html .clearfix {
- min-height: 1%;
-}
diff --git a/modules/system/maintenance.css b/modules/system/system.maintenance.css
index acd2917a2..a4a64c17e 100644
--- a/modules/system/maintenance.css
+++ b/modules/system/system.maintenance.css
@@ -1,6 +1,8 @@
/* $Id$ */
-/* Update styles */
+/**
+ * Update styles
+ */
#update-results {
margin-top: 3em;
padding: 0.25em;
@@ -22,7 +24,9 @@
color: #b63300;
}
-/* authorize.php styles */
+/**
+ * Authorize.php styles
+ */
.connection-settings-update-filetransfer-default-wrapper {
float: left;
}
diff --git a/modules/system/system.menus-rtl.css b/modules/system/system.menus-rtl.css
new file mode 100644
index 000000000..9241db7cd
--- /dev/null
+++ b/modules/system/system.menus-rtl.css
@@ -0,0 +1,38 @@
+/* $Id$ */
+
+/**
+ * @file
+ * RTL styles for menus and navigation markup.
+ */
+
+ul.menu {
+ text-align:right;
+}
+ul.menu li {
+ margin: 0 0.5em 0 0;
+}
+ul li.collapsed {
+ list-style-image: url(../../misc/menu-collapsed-rtl.png);
+}
+li.expanded,
+li.collapsed,
+li.leaf {
+ padding: 0.2em 0 0 0.5em;
+}
+
+/**
+ * Markup generated by theme_menu_local_tasks().
+ */
+ul.primary {
+ padding: 0 1em 0 0;
+}
+ul.primary li a {
+ margin-right: 5px;
+ margin-left: 0.5em;
+}
+ul.secondary li {
+ display: inline;
+ padding: 0 1em;
+ border-right: none;
+ border-left: 1px solid #ccc;
+}
diff --git a/modules/system/system.menus.css b/modules/system/system.menus.css
new file mode 100644
index 000000000..52e9dd35e
--- /dev/null
+++ b/modules/system/system.menus.css
@@ -0,0 +1,119 @@
+/* $Id$ */
+
+/**
+ * @file
+ * Styles for menus and navigation markup.
+ */
+
+/**
+ * Markup generated by theme_menu_tree().
+ */
+ul.menu {
+ list-style: none;
+ border: none;
+ text-align:left; /* LTR */
+}
+ul.menu li {
+ margin: 0 0 0 0.5em; /* LTR */
+}
+ul li.expanded {
+ list-style-type: circle;
+ list-style-image: url(../../misc/menu-expanded.png);
+}
+ul li.collapsed {
+ list-style-type: disc;
+ list-style-image: url(../../misc/menu-collapsed.png); /* LTR */
+}
+ul li.leaf {
+ list-style-type: square;
+ list-style-image: url(../../misc/menu-leaf.png);
+}
+li.expanded,
+li.collapsed,
+li.leaf {
+ padding: 0.2em 0.5em 0 0; /* LTR */
+ margin: 0;
+}
+li a.active {
+ color: #000;
+}
+td.menu-disabled {
+ background: #ccc;
+}
+
+/**
+ * Markup generated by theme_links().
+ */
+ul.links {
+ margin: 0;
+ padding: 0;
+}
+ul.links.inline {
+ display: inline;
+}
+ul.links li {
+ display: inline;
+ list-style-type: none;
+ padding: 0 0.5em;
+}
+
+/**
+ * Markup generated by theme_breadcrumb().
+ */
+.breadcrumb {
+ padding-bottom: .5em;
+}
+
+/**
+ * Markup generated by theme_menu_local_tasks().
+ */
+ul.primary {
+ border-collapse: collapse;
+ padding: 0 0 0 1em; /* LTR */
+ white-space: nowrap;
+ list-style: none;
+ margin: 5px;
+ height: auto;
+ line-height: normal;
+ border-bottom: 1px solid #bbb;
+}
+ul.primary li {
+ display: inline;
+}
+ul.primary li a {
+ background-color: #ddd;
+ border-color: #bbb;
+ border-width: 1px;
+ border-style: solid solid none solid;
+ height: auto;
+ margin-right: 0.5em; /* LTR */
+ padding: 0 1em;
+ text-decoration: none;
+}
+ul.primary li.active a {
+ background-color: #fff;
+ border: 1px solid #bbb;
+ border-bottom: #fff 1px solid;
+}
+ul.primary li a:hover {
+ background-color: #eee;
+ border-color: #ccc;
+ border-bottom-color: #eee;
+}
+ul.secondary {
+ border-bottom: 1px solid #bbb;
+ padding: 0.5em 1em;
+ margin: 5px;
+}
+ul.secondary li {
+ display: inline;
+ padding: 0 1em;
+ border-right: 1px solid #ccc; /* LTR */
+}
+ul.secondary a {
+ padding: 0;
+ text-decoration: none;
+}
+ul.secondary a.active {
+ border-bottom: 4px solid #999;
+}
diff --git a/modules/system/system-messages.css b/modules/system/system.messages.css
index b1a1406ee..46338f46d 100644
--- a/modules/system/system-messages.css
+++ b/modules/system/system.messages.css
@@ -1,4 +1,9 @@
-/* $Id */
+/* $Id$ */
+
+/**
+ * @file
+ * Styles for system messages.
+ */
div.messages {
background-position: 8px 8px; /* LTR */
@@ -7,6 +12,7 @@ div.messages {
margin: 6px 0;
padding: 10px 10px 10px 50px; /* LTR */
}
+
div.status {
background-image: url(../../misc/message-24-ok.png);
border-color: #be7;
@@ -19,6 +25,7 @@ div.status,
table tr.ok {
background-color: #f8fff0;
}
+
div.warning {
background-image: url(../../misc/message-24-warning.png);
border-color: #ed5;
@@ -31,6 +38,7 @@ div.warning,
table tr.warning {
background-color: #fffce5;
}
+
div.error {
background-image: url(../../misc/message-24-error.png);
border-color: #ed541d;
@@ -46,6 +54,7 @@ table tr.error {
div.error p.error {
color: #333;
}
+
div.messages ul {
margin: 0 0 0 1em; /* LTR */
padding: 0;
diff --git a/modules/system/system.theme-rtl.css b/modules/system/system.theme-rtl.css
new file mode 100644
index 000000000..a4b775928
--- /dev/null
+++ b/modules/system/system.theme-rtl.css
@@ -0,0 +1,59 @@
+/* $Id$ */
+
+/**
+ * @file
+ * RTL styles for common markup.
+ */
+
+/**
+ * HTML elements.
+ */
+th {
+ text-align: right;
+ padding-right: 0;
+ padding-left: 1em;
+}
+thead th {
+ text-align: right;
+ padding-left: 1em;
+ padding-right: 0.5em;
+}
+
+/**
+ * Markup generated by theme_item_list().
+ */
+.item-list ul li {
+ margin: 0 1.5em 0.25em 0;
+}
+
+/**
+ * Markup generated by theme_more_link().
+ */
+.more-link {
+ text-align: left;
+}
+
+/**
+ * Markup generated by theme_more_help_link().
+ */
+.more-help-link {
+ text-align: left;
+}
+.more-help-link a {
+ padding: 1px 20px 1px 0;
+ background-position: 100% 50%;
+}
+
+/**
+ * Collapsible fieldsets.
+ */
+html.js fieldset.collapsible .fieldset-legend {
+ padding-left: 0;
+ padding-right: 15px;
+ background-position: 98% 75%;
+}
+html.js fieldset.collapsed .fieldset-legend {
+ background-image: url(../../misc/menu-collapsed-rtl.png);
+ background-position: 98% 50%;
+}
+
diff --git a/modules/system/system.theme.css b/modules/system/system.theme.css
new file mode 100644
index 000000000..35609e48b
--- /dev/null
+++ b/modules/system/system.theme.css
@@ -0,0 +1,239 @@
+/* $Id$ */
+
+/**
+ * @file
+ * Basic styling for common markup.
+ */
+
+/**
+ * HTML elements.
+ */
+fieldset {
+ margin-bottom: 1em;
+ padding: .5em;
+}
+form {
+ margin: 0;
+ padding: 0;
+}
+hr {
+ height: 1px;
+ border: 1px solid gray;
+}
+img {
+ border: 0;
+}
+table {
+ border-collapse: collapse;
+}
+th {
+ text-align: left; /* LTR */
+ padding-right: 1em; /* LTR */
+ border-bottom: 3px solid #ccc;
+}
+thead th {
+ text-align: left; /* LTR */
+ padding-right: 1em; /* LTR */
+ border-bottom: 3px solid #ccc;
+}
+tbody {
+ border-top: 1px solid #ccc;
+}
+tr.even,
+tr.odd {
+ background-color: #eee;
+ border-bottom: 1px solid #ccc;
+ padding: 0.1em 0.6em;
+}
+
+/**
+ * Markup generated by theme_tablesort_indicator().
+ */
+th.active img {
+ display: inline;
+}
+td.active {
+ background-color: #ddd;
+}
+
+/**
+ * Markup generated by theme_item_list().
+ */
+.item-list .title {
+ font-weight: bold;
+}
+.item-list ul {
+ margin: 0 0 0.75em 0;
+ padding: 0;
+}
+.item-list ul li {
+ margin: 0 0 0.25em 1.5em; /* LTR */
+ padding: 0;
+}
+
+/**
+ * Markup generated by Form API.
+ */
+.form-item {
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+tr.odd .form-item,
+tr.even .form-item {
+ margin-top: 0;
+ margin-bottom: 0;
+ white-space: nowrap;
+}
+.form-item .description {
+ font-size: 0.85em;
+}
+.form-item label {
+ display: block;
+ font-weight: bold;
+}
+.form-item label.option {
+ display: inline;
+ font-weight: normal;
+}
+.form-checkboxes,
+.form-radios {
+ margin: 1em 0;
+}
+.form-checkboxes .form-item,
+.form-radios .form-item {
+ margin-top: 0.4em;
+ margin-bottom: 0.4em;
+}
+.form-type-radio .description,
+.form-type-checkbox .description {
+ margin-left: 2.4em;
+}
+input.form-checkbox,
+input.form-radio {
+ vertical-align: middle;
+}
+.marker,
+.form-required {
+ color: #f00;
+}
+.form-item input.error,
+.form-item textarea.error,
+.form-item select.error {
+ border: 2px solid red;
+}
+
+/**
+ * Markup generated by theme_more_link().
+ */
+.more-link {
+ text-align: right; /* LTR */
+}
+
+/**
+ * Markup generated by theme_more_help_link().
+ */
+.more-help-link {
+ text-align: right; /* LTR */
+}
+.more-help-link a {
+ background: url(../../misc/help.png) 0 50% no-repeat; /* LTR */
+ padding: 1px 0 1px 20px; /* LTR */
+}
+
+/**
+ * Markup generated by theme_pager().
+ */
+.item-list .pager {
+ clear: both;
+ text-align: center;
+}
+.item-list .pager li {
+ background-image:none;
+ display:inline;
+ list-style-type:none;
+ padding: 0.5em;
+}
+.pager-current {
+ font-weight:bold;
+}
+
+/**
+ * Autocomplete.
+ *
+ * @see autocomplete.js
+ */
+/* Suggestion list */
+#autocomplete li.selected {
+ background: #0072b9;
+ color: #fff;
+}
+
+/**
+ * Collapsible fieldsets.
+ *
+ * @see collapse.js
+ */
+html.js fieldset.collapsible .fieldset-legend {
+ padding-left: 15px; /* LTR */
+ background: url(../../misc/menu-expanded.png) 5px 65% no-repeat; /* LTR */
+}
+html.js fieldset.collapsed .fieldset-legend {
+ background-image: url(../../misc/menu-collapsed.png); /* LTR */
+ background-position: 5px 50%; /* LTR */
+}
+.fieldset-legend span.summary {
+ font-size: 0.9em;
+ color: #999;
+ margin-left: 0.5em;
+}
+
+/**
+ * TableDrag behavior.
+ *
+ * @see tabledrag.js
+ */
+tr.drag {
+ background-color: #fffff0;
+}
+tr.drag-previous {
+ background-color: #ffd;
+}
+.tabledrag-toggle-weight {
+ font-size: 0.9em;
+}
+body div.tabledrag-changed-warning {
+ margin-bottom: 0.5em;
+}
+
+/**
+ * TableSelect behavior.
+ *
+ * @see tableselect.js
+*/
+tr.selected td {
+ background: #ffc;
+}
+td.checkbox,
+th.checkbox {
+ text-align: center;
+}
+
+/**
+ * Progress bar.
+ *
+ * @see progress.js
+ */
+.progress {
+ font-weight: bold;
+}
+.progress .bar {
+ background: #ccc;
+ border-color: #666;
+ margin: 0 0.2em;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ border-radius: 3px;
+}
+.progress .filled {
+ background: #0072b9 url(../../misc/progress.gif);
+}