summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--modules/system/system.module13
-rw-r--r--modules/system/system.test39
2 files changed, 46 insertions, 6 deletions
diff --git a/modules/system/system.module b/modules/system/system.module
index 5e65fd9e1..eea5e90f0 100644
--- a/modules/system/system.module
+++ b/modules/system/system.module
@@ -2703,11 +2703,15 @@ function confirm_form($form, $question, $path, $description = NULL, $yes = NULL,
}
/**
- * Determine if a user is in compact mode.
+ * Determines if the current user is in compact mode.
+ *
+ * @return
+ * TRUE when in compact mode, FALSE when in expanded mode.
*/
function system_admin_compact_mode() {
- global $user;
- return (isset($user->admin_compact_mode)) ? $user->admin_compact_mode : variable_get('admin_compact_mode', FALSE);
+ // PHP converts dots into underscores in cookie names to avoid problems with
+ // its parser, so we use a converted cookie name.
+ return isset($_COOKIE['Drupal_visitor_admin_compact_mode']) ? $_COOKIE['Drupal_visitor_admin_compact_mode'] : variable_get('admin_compact_mode', FALSE);
}
/**
@@ -2717,8 +2721,7 @@ function system_admin_compact_mode() {
* Valid values are 'on' and 'off'.
*/
function system_admin_compact_page($mode = 'off') {
- global $user;
- user_save($user, array('admin_compact_mode' => ($mode == 'on')));
+ user_cookie_save(array('admin_compact_mode' => ($mode == 'on')), array('admin_compact_mode'));
drupal_goto();
}
diff --git a/modules/system/system.test b/modules/system/system.test
index 55c4083a5..fa33ac3a7 100644
--- a/modules/system/system.test
+++ b/modules/system/system.test
@@ -1719,7 +1719,7 @@ class ShutdownFunctionsTest extends DrupalWebTestCase {
}
/**
- * Test flood control mechanism clean-up.
+ * Test shutdown functions.
*/
function testShutdownFunctions() {
$arg1 = $this->randomName();
@@ -1729,3 +1729,40 @@ class ShutdownFunctionsTest extends DrupalWebTestCase {
$this->assertText(t('Second shutdown function, arg1 : @arg1, arg2: @arg2', array('@arg1' => $arg1, '@arg2' => $arg2)));
}
}
+
+/**
+ * Functional tests compact mode.
+ */
+class CompactModeTest extends DrupalWebTestCase {
+ public static function getInfo() {
+ return array(
+ 'name' => 'Compact mode',
+ 'description' => 'Tests compact mode functionality.',
+ 'group' => 'System',
+ );
+ }
+
+ function setUp() {
+ $admin_user = $this->drupalCreateUser(array('access administration pages'));
+ $this->drupalLogin($admin_user);
+ }
+
+ /**
+ * Test compact mode.
+ */
+ function testCompactMode() {
+ $this->drupalGet('admin/compact/on');
+ $this->assertTrue($this->cookies['Drupal.visitor.admin_compact_mode']['value'], t('Compact mode turns on.'));
+ $this->drupalGet('admin/compact/on');
+ $this->assertTrue($this->cookies['Drupal.visitor.admin_compact_mode']['value'], t('Compact mode remains on after a repeat call.'));
+ $this->drupalGet('');
+ $this->assertTrue($this->cookies['Drupal.visitor.admin_compact_mode']['value'], t('Compact mode persists on new requests.'));
+
+ $this->drupalGet('admin/compact/off');
+ $this->assertEqual($this->cookies['Drupal.visitor.admin_compact_mode']['value'], 'deleted', t('Compact mode turns off.'));
+ $this->drupalGet('admin/compact/off');
+ $this->assertEqual($this->cookies['Drupal.visitor.admin_compact_mode']['value'], 'deleted', t('Compact mode remains off after a repeat call.'));
+ $this->drupalGet('');
+ $this->assertTrue($this->cookies['Drupal.visitor.admin_compact_mode']['value'], t('Compact mode persists on new requests.'));
+ }
+}