Commit 1d4e6e25 authored by estade@chromium.org's avatar estade@chromium.org

uber managed pref banners

1. improve appearance (match Glen mock)
2. make them appear in overlays as appropriate
3. move below title.

BUG=114711
TEST=manual

Review URL: https://chromiumcodereview.appspot.com/9513016

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@124495 0039d316-1c4b-4281-b951-d872f2087c98
parent 9451bfe4
...@@ -481,52 +481,11 @@ cr.define('options', function() { ...@@ -481,52 +481,11 @@ cr.define('options', function() {
* @private * @private
*/ */
hideAdvancedSettings_: function() { hideAdvancedSettings_: function() {
$('advanced-settings').style.height = '0px' $('advanced-settings').style.height = '0px';
$('advanced-settings-expander').innerHTML = $('advanced-settings-expander').innerHTML =
localStrings.getString('showAdvancedSettings'); localStrings.getString('showAdvancedSettings');
}, },
/**
* Updates managed banner visibility state. This function iterates over
* all input fields of all subpages and if any of these is marked as managed
* it triggers the managed banner to be visible.
* @private
*/
updateManagedBannerVisibility_: function() {
var bannerDiv = $('managed-prefs-banner');
var controlledByPolicy = false;
var controlledByExtension = false;
var inputElements = document.querySelectorAll('input[controlled-by]');
var mainPages = document.querySelectorAll('#page-container .page');
for (var i = 0, len = inputElements.length; i < len; i++) {
if (inputElements[i].controlledBy == 'policy')
controlledByPolicy = true;
else if (inputElements[i].controlledBy == 'extension')
controlledByExtension = true;
}
if (!controlledByPolicy && !controlledByExtension) {
bannerDiv.hidden = true;
for (var i = 0; i < mainPages.length; i++)
mainPages[i].classList.remove('under-managed-prefs-banner');
} else {
bannerDiv.hidden = false;
for (var i = 0; i < mainPages.length; i++)
mainPages[i].classList.add('under-managed-prefs-banner');
if (controlledByPolicy && !controlledByExtension) {
$('managed-prefs-text').textContent =
templateData.policyManagedPrefsBannerText;
} else if (!controlledByPolicy && controlledByExtension) {
$('managed-prefs-text').textContent =
templateData.extensionManagedPrefsBannerText;
} else if (controlledByPolicy && controlledByExtension) {
$('managed-prefs-text').textContent =
templateData.policyAndExtensionManagedPrefsBannerText;
}
}
},
/** /**
* Initializes a button for controlling screen brightness. * Initializes a button for controlling screen brightness.
* @param {string} id Button ID. * @param {string} id Button ID.
......
...@@ -159,7 +159,7 @@ cr.define('options', function() { ...@@ -159,7 +159,7 @@ cr.define('options', function() {
(dict['cookies']['value'] == 'session'); (dict['cookies']['value'] == 'session');
} }
ContentSettings.getInstance().updateSessionRestoreContentSettings(); ContentSettings.getInstance().updateSessionRestoreContentSettings();
BrowserOptions.updateManagedBannerVisibility(); OptionsPage.updateManagedBannerVisibility();
}; };
/** /**
......
...@@ -139,24 +139,36 @@ ...@@ -139,24 +139,36 @@
<div id="main-content"> <div id="main-content">
<div id="mainview"> <div id="mainview">
<div id="managed-prefs-banner" class="managed-prefs-banner" hidden> <!-- TODO(csilv): Remove subpage-backdrop -->
<span id="managed-prefs-icon" class="managed-prefs-icon"></span> <div id="subpage-backdrop" hidden></div>
<span id="managed-prefs-text" class="managed-prefs-text"></span> <div id="mainview-content">
</div> <div id="page-container">
<!-- TODO(csilv): Remove subpage-backdrop --> <!-- Please keep the main pages in desired order of display. This will
<div id="subpage-backdrop" hidden></div> allow search results to display in the desired order. -->
<div id="mainview-content"> <include src="search_page.html">
<div id="page-container"> <include src="browser_options.html">
<include src="search_page.html"> </div>
<include src="browser_options.html"> <!-- TODO(csilv): Remove subpage-sheet-container-1 -->
</div> <div id="subpage-sheet-container-1"
<!-- TODO(csilv): Remove subpage-sheet-container-1 --> class="subpage-sheet-container transparent" hidden>
<div id="subpage-sheet-container-1" <div id="subpage-sheet-1" class="subpage-sheet">
class="subpage-sheet-container transparent" hidden> <div class="subpage-sheet-contents">
</div> <include src="advanced_options.html">
</div> </div>
</div>
</div>
</div>
</div> </div>
</div> </div>
<div id="templates" hidden>
<div id="managed-prefs-banner" class="managed-prefs-banner">
<div class="managed-prefs-gradient">
<span id="managed-prefs-text" class="managed-prefs-text"></span>
</div>
</div>
</div>
<script src="chrome://settings-frame/strings.js"></script> <script src="chrome://settings-frame/strings.js"></script>
<script src="chrome://resources/js/i18n_template.js"></script> <script src="chrome://resources/js/i18n_template.js"></script>
<script src="chrome://resources/js/i18n_process.js"></script> <script src="chrome://resources/js/i18n_process.js"></script>
......
...@@ -42,24 +42,6 @@ html.hide-menu #mainview { ...@@ -42,24 +42,6 @@ html.hide-menu #mainview {
min-width: 600px; min-width: 600px;
} }
#page-container .page {
-webkit-transition-duration: 200ms;
-webkit-transition-property: margin-top;
}
#page-container .page.under-managed-prefs-banner {
margin-top: 31px;
}
#page-container header {
-webkit-transition-duration: 200ms;
-webkit-transition-property: top;
}
#page-container .page.under-managed-prefs-banner header {
top: 31px;
}
div.disabled { div.disabled {
color: #888; color: #888;
} }
...@@ -177,43 +159,47 @@ html[touch-optimized] body { ...@@ -177,43 +159,47 @@ html[touch-optimized] body {
} }
.managed-prefs-banner { .managed-prefs-banner {
-webkit-transition-duration: 200ms; background-color: white;
-webkit-transition-property: height;
background: -webkit-linear-gradient(rgb(255, 242, 183),
rgb(250, 230, 145) 97%,
rgb(135, 135, 135));
height: 31px;
margin: 0;
padding: 0;
position: fixed;
vertical-align: middle;
width: 100%; width: 100%;
z-index: 2; z-index: 2;
} }
.managed-prefs-banner[hidden] { .page:not(.showing-banner) .managed-prefs-banner {
height: 0; display: none;
} }
.managed-prefs-banner.clickable:active { .managed-prefs-gradient {
background: -webkit-linear-gradient(rgb(135, 135, 135), background: -webkit-linear-gradient(rgb(255, 242, 183),
rgb(250, 230, 145) 3%, rgb(250, 230, 145));
rgb(255, 242, 183)); border: 1px solid rgb(201, 189, 141);
border-radius: 3px;
height: 25px;
margin: 9px 9px 0 9px;
} }
.managed-prefs-icon { .main-page-banner .managed-prefs-gradient {
-webkit-margin-end: 100px;
-webkit-margin-start: 0;
margin-bottom: 9px;
margin-top: 0;
}
.managed-prefs-text {
background-image: url('chrome://theme/IDR_WARNING'); background-image: url('chrome://theme/IDR_WARNING');
background-position: center; background-position: 3px center;
background-repeat: no-repeat; background-repeat: no-repeat;
display: inline-block; display: block;
height: 21px; line-height: 25px;
padding: 5px; padding-left: 31px;
vertical-align: middle;
width: 24px;
} }
.managed-prefs-text { .managed-prefs-banner.clickable:active .managed-prefs-text {
vertical-align: middle; background: -webkit-linear-gradient(rgb(250, 230, 145),
rgb(255, 242, 183));
}
#page-container .page.showing-banner {
margin-top: 36px;
} }
.overlay .page h1 { .overlay .page h1 {
......
...@@ -905,6 +905,57 @@ cr.define('options', function() { ...@@ -905,6 +905,57 @@ cr.define('options', function() {
*/ */
initializePage: function() {}, initializePage: function() {},
/**
* Updates managed banner visibility state. This function iterates over
* all input fields of a page and if any of these is marked as managed
* it triggers the managed banner to be visible. The banner can be enforced
* being on through the managed flag of this class but it can not be forced
* being off if managed items exist.
*/
updateManagedBannerVisibility: function() {
var bannerDiv = this.pageDiv.querySelector('.managed-prefs-banner');
// Create a banner for the overlay if we don't have one.
if (!bannerDiv) {
bannerDiv = $('managed-prefs-banner').cloneNode(true);
bannerDiv.id = null;
if (this.isOverlay) {
var content = this.pageDiv.querySelector('.content-area');
this.pageDiv.insertBefore(bannerDiv, content);
} else {
bannerDiv.classList.add('main-page-banner');
var header = this.pageDiv.querySelector('header');
header.appendChild(bannerDiv);
}
}
var controlledByPolicy = false;
var controlledByExtension = false;
var inputElements = this.pageDiv.querySelectorAll('input[controlled-by]');
for (var i = 0; i < inputElements.length; i++) {
if (inputElements[i].controlledBy == 'policy')
controlledByPolicy = true;
else if (inputElements[i].controlledBy == 'extension')
controlledByExtension = true;
}
if (!controlledByPolicy && !controlledByExtension) {
this.pageDiv.classList.remove('showing-banner');
} else {
this.pageDiv.classList.add('showing-banner');
var text = bannerDiv.querySelector('.managed-prefs-text');
if (controlledByPolicy && !controlledByExtension) {
text.textContent = templateData.policyManagedPrefsBannerText;
} else if (!controlledByPolicy && controlledByExtension) {
text.textContent = templateData.extensionManagedPrefsBannerText;
} else if (controlledByPolicy && controlledByExtension) {
text.textContent =
templateData.policyAndExtensionManagedPrefsBannerText;
}
}
},
/** /**
* Gets page visibility state. * Gets page visibility state.
*/ */
...@@ -923,6 +974,7 @@ cr.define('options', function() { ...@@ -923,6 +974,7 @@ cr.define('options', function() {
this.setContainerVisibility_(visible); this.setContainerVisibility_(visible);
OptionsPage.updatePageFreezeStates(); OptionsPage.updatePageFreezeStates();
OptionsPage.updateManagedBannerVisibility();
// A subpage was shown or hidden. // A subpage was shown or hidden.
if (!this.isOverlay && this.nestingLevel > 0) if (!this.isOverlay && this.nestingLevel > 0)
......
...@@ -57,7 +57,7 @@ cr.define('options', function() { ...@@ -57,7 +57,7 @@ cr.define('options', function() {
el.controlledBy = event.value['controlledBy']; el.controlledBy = event.value['controlledBy'];
BrowserOptions.updateManagedBannerVisibility(); OptionsPage.updateManagedBannerVisibility();
} }
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
...@@ -622,7 +622,7 @@ cr.define('options', function() { ...@@ -622,7 +622,7 @@ cr.define('options', function() {
* directly to save dialog preferences. * directly to save dialog preferences.
*/ */
savePrefState: function() { savePrefState: function() {
switch(this.dataType) { switch (this.dataType) {
case 'number': case 'number':
Preferences.setIntegerPref(this.pref, this.value, this.metric); Preferences.setIntegerPref(this.pref, this.value, this.metric);
break; break;
......
...@@ -131,13 +131,13 @@ html[touch-optimized] input[type='search']::-webkit-search-cancel-button { ...@@ -131,13 +131,13 @@ html[touch-optimized] input[type='search']::-webkit-search-cancel-button {
header > .search-field-container, header > .search-field-container,
header > button { header > button {
position: absolute; position: absolute;
right: 0; right: 100px;
top: 18px; top: 21px;
} }
html[dir='rtl'] header > .search-field-container, html[dir='rtl'] header > .search-field-container,
html[dir='rtl'] header > button { html[dir='rtl'] header > button {
left: 0; left: 100px;
right: auto; right: auto;
} }
......
...@@ -24,36 +24,18 @@ body.uber-frame > .page { ...@@ -24,36 +24,18 @@ body.uber-frame > .page {
body.uber-frame header { body.uber-frame header {
background: white; background: white;
left: 155px; left: 155px;
min-width: 600px; min-width: 700px;
/* <section>s in options currently amount to 638px total, broken up into /* <section>s in options currently amount to 638px total, broken up into
* 600px max-width + 18px -webkit-padding-start + 20px -webkit-margin-end * 600px max-width + 18px -webkit-padding-start + 20px -webkit-margin-end
* so we mirror this value here so the headers match width and horizontal * so we mirror this value here so the headers match width and horizontal
* alignment when scrolling sideways. */ * alignment when scrolling sideways. */
max-width: 638px; max-width: 738px;
position: fixed; position: fixed;
right: 155px; right: 155px;
top: 0; top: 0;
z-index: 2; z-index: 2;
} }
/* This is to make it appear that <headers> cover options <section> text when
* vertically scrolling. Without it, some text is visible beside a <header>. */
html[dir="ltr"] body.uber-frame header:after,
html[dir="rtl"] body.uber-frame header:before {
background: white;
content: " ";
display: block;
height: 100%;
position: absolute;
width: 100px;
}
body.uber-frame header,
body.uber-frame header > * {
-webkit-box-flex: 1;
display: -webkit-box;
}
body.uber-frame header > h1 { body.uber-frame header > h1 {
border-bottom: 1px solid #eee; border-bottom: 1px solid #eee;
margin: 0; margin: 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment