Browse Source

Merge pull request #14666 from nextcloud/design/settings-header

Don't show 'Personal' header in settings when Admin section is not there
Morris Jobke 5 years ago
parent
commit
4824d278f9

+ 3 - 1
settings/templates/settings/frame.php

@@ -30,8 +30,10 @@ script('files', 'jquery.fileupload');
 
 <div id="app-navigation">
 	<ul>
-		<li class="app-navigation-caption"><?php p($l->t('Personal')); ?></li>
+		<?php if(!empty($_['forms']['admin'])) { ?>
+			<li class="app-navigation-caption"><?php p($l->t('Personal')); ?></li>
 		<?php
+		}
 		foreach($_['forms']['personal'] as $form) {
 			if (isset($form['anchor'])) {
 				$anchor = \OC::$server->getURLGenerator()->linkToRoute('settings.PersonalSettings.index', ['section' => $form['anchor']]);

+ 2 - 1
tests/acceptance/features/access-levels.feature

@@ -12,7 +12,8 @@ Feature: access-levels
   Scenario: regular users cannot see admin-level items on the Settings page
     Given I am logged in
     When I visit the settings page
-    Then I see that the "Personal" settings panel is shown
+    Then I see that the "Personal info" entry in the settings panel is shown
+    And I see that the "Personal" settings panel is not shown
     And I see that the "Administration" settings panel is not shown
 
   Scenario: admin users can see admin-level items on the Settings page

+ 18 - 0
tests/acceptance/features/bootstrap/SettingsMenuContext.php

@@ -93,6 +93,15 @@ class SettingsMenuContext implements Context, ActorAwareInterface {
 		describedAs($itemText . " item in Settings panel");
 	}
 
+	/**
+	 * @param string $itemText
+	 * @return Locator
+	 */
+	private static function settingsPanelEntryFor($itemText) {
+		return Locator::forThe()->xpath("//div[@id = 'app-navigation']//ul//li[normalize-space() = '$itemText']")->
+		describedAs($itemText . " entry in Settings panel");
+	}
+
 	/**
 	 * @return array 
 	 */
@@ -188,6 +197,15 @@ class SettingsMenuContext implements Context, ActorAwareInterface {
 		);
 	}
 
+	/**
+	 * @Then I see that the :itemText entry in the settings panel is shown
+	 */
+	public function iSeeThatTheItemEntryInTheSettingsPanelIsShown($itemText) {
+		PHPUnit_Framework_Assert::assertTrue(
+			$this->actor->find(self::settingsPanelEntryFor($itemText), 10)->isVisible()
+		);
+	}
+
 	/**
 	 * @Then I see that the :itemText settings panel is not shown
 	 */