Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1444)

Side by Side Diff: chrome/browser/resources/options/managed_user_import.js

Issue 23454020: Update the 'managed user import' overlay to show an avatar selection grid (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@show_synced_avatars_in_import_overlay
Patch Set: rebase Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 cr.define('options', function() { 5 cr.define('options', function() {
6 var OptionsPage = options.OptionsPage; 6 var OptionsPage = options.OptionsPage;
7 var ArrayDataModel = cr.ui.ArrayDataModel; 7 var ArrayDataModel = cr.ui.ArrayDataModel;
8 8
9 /** 9 /**
10 * ManagedUserImportOverlay class. 10 * ManagedUserImportOverlay class.
11 * Encapsulated handling of the 'Import existing managed user' overlay page. 11 * Encapsulated handling of the 'Import existing managed user' overlay page.
12 * @constructor 12 * @constructor
13 * @class 13 * @class
14 */ 14 */
15 function ManagedUserImportOverlay() { 15 function ManagedUserImportOverlay() {
16 var title = loadTimeData.getString('managedUserImportTabTitle'); 16 var title = loadTimeData.getString('managedUserImportTitle');
17 OptionsPage.call(this, 'managedUserImport', 17 OptionsPage.call(this, 'managedUserImport',
18 title, 'managed-user-import'); 18 title, 'managed-user-import');
19 }; 19 };
20 20
21 cr.addSingletonGetter(ManagedUserImportOverlay); 21 cr.addSingletonGetter(ManagedUserImportOverlay);
22 22
23 ManagedUserImportOverlay.prototype = { 23 ManagedUserImportOverlay.prototype = {
24 // Inherit from OptionsPage. 24 // Inherit from OptionsPage.
25 __proto__: OptionsPage.prototype, 25 __proto__: OptionsPage.prototype,
26 26
27 /** @override */ 27 /** @override */
28 canShowPage: function() { 28 canShowPage: function() {
29 return !BrowserOptions.getCurrentProfile().isManaged; 29 return !BrowserOptions.getCurrentProfile().isManaged;
30 }, 30 },
31 31
32 /** 32 /**
33 * Initialize the page. 33 * Initialize the page.
34 */ 34 */
35 initializePage: function() { 35 initializePage: function() {
36 // Call base class implementation to start preference initialization. 36 // Call base class implementation to start preference initialization.
37 OptionsPage.prototype.initializePage.call(this); 37 OptionsPage.prototype.initializePage.call(this);
38 38
39 var managedUserList = $('managed-user-list'); 39 var managedUserList = $('managed-user-list');
40 options.managedUserOptions.ManagedUserList.decorate(managedUserList); 40 options.managedUserOptions.ManagedUserList.decorate(managedUserList);
41 41
42 var avatarGrid = $('select-avatar-grid');
43 options.ProfilesIconGrid.decorate(avatarGrid);
44 var avatarIcons = loadTimeData.getValue('avatarIcons');
45 avatarGrid.dataModel = new ArrayDataModel(avatarIcons);
46
42 managedUserList.addEventListener('change', function(event) { 47 managedUserList.addEventListener('change', function(event) {
43 var managedUser = managedUserList.selectedItem; 48 var managedUser = managedUserList.selectedItem;
44 if (!managedUser) 49 if (!managedUser)
45 return; 50 return;
46 51
47 $('managed-user-import-ok').disabled = 52 $('managed-user-import-ok').disabled =
48 managedUserList.selectedItem.onCurrentDevice; 53 managedUserList.selectedItem.onCurrentDevice;
49 }); 54 });
50 55
51 $('managed-user-import-cancel').onclick = function(event) { 56 $('managed-user-import-cancel').onclick = function(event) {
52 OptionsPage.closeOverlay(); 57 OptionsPage.closeOverlay();
53 // 'cancelCreateProfile' is handled by BrowserOptionsHandler. 58 // 'cancelCreateProfile' is handled by BrowserOptionsHandler.
54 chrome.send('cancelCreateProfile'); 59 chrome.send('cancelCreateProfile');
55 }; 60 };
56 61
57 $('managed-user-import-ok').onclick = function(event) { 62 $('managed-user-import-ok').onclick =
58 var managedUser = managedUserList.selectedItem; 63 this.showAvatarGridOrSubmit_.bind(this);
59 if (!managedUser)
60 return;
61
62 $('managed-user-import-error-bubble').hidden = true;
63 $('managed-user-import-ok').disabled = true;
64
65 // 'createProfile' is handled by BrowserOptionsHandler.
66 chrome.send('createProfile',
67 [managedUser.name, managedUser.iconURL,
68 false, true, managedUser.id]);
69 };
70 64
71 $('create-new-user-link').onclick = function(event) { 65 $('create-new-user-link').onclick = function(event) {
72 OptionsPage.closeOverlay(); 66 OptionsPage.closeOverlay();
73 OptionsPage.navigateToPage('createProfile'); 67 OptionsPage.navigateToPage('createProfile');
74 }; 68 };
75 }, 69 },
76 70
77 /** 71 /**
78 * @override 72 * @override
79 */ 73 */
80 didShowPage: function() { 74 didShowPage: function() {
81 chrome.send('requestExistingManagedUsers'); 75 chrome.send('requestExistingManagedUsers');
82 $('managed-user-import-error-bubble').hidden = true; 76 $('managed-user-import-error-bubble').hidden = true;
83 $('managed-user-import-ok').disabled = true; 77 $('managed-user-import-ok').disabled = true;
78 $('select-avatar-grid').hidden = true;
79 $('managed-user-list').hidden = false;
80
81 $('managed-user-import-ok').textContent =
82 loadTimeData.getString('managedUserImportOk');
83 $('managed-user-import-text').textContent =
84 loadTimeData.getString('managedUserImportText');
85 $('managed-user-import-title').textContent =
86 loadTimeData.getString('managedUserImportTitle');
84 }, 87 },
85 88
86 /** 89 /**
90 * Called when the user clicks the "OK" button. In case the managed
91 * user being imported has no avatar in sync, it shows the avatar
92 * icon grid. In case the avatar grid is visible or the managed user
93 * already has an avatar stored in sync, it proceeds with importing
94 * the managed user.
95 * @private
96 */
97 showAvatarGridOrSubmit_: function() {
98 var managedUser = $('managed-user-list').selectedItem;
99 if (!managedUser)
100 return;
101
102 $('managed-user-import-error-bubble').hidden = true;
103
104 if ($('select-avatar-grid').hidden && managedUser.needAvatar) {
105 this.showAvatarGridHelper_();
106 return;
107 }
108
109 $('managed-user-import-ok').disabled = true;
110 var avatarUrl = managedUser.needAvatar ?
111 $('select-avatar-grid').selectedItem : managedUser.iconURL;
112
113 // 'createProfile' is handled by BrowserOptionsHandler.
114 chrome.send('createProfile', [managedUser.name, avatarUrl,
115 false, true, managedUser.id]);
116 },
117
118 /**
119 * Hides the 'managed user list' and shows the avatar grid instead.
120 * It also updates the overlay text and title to instruct the user
121 * to choose an avatar for the supervised user.
122 * @private
123 */
124 showAvatarGridHelper_: function() {
125 $('managed-user-list').hidden = true;
126 $('select-avatar-grid').hidden = false;
127 $('select-avatar-grid').redraw();
128 $('select-avatar-grid').selectedItem =
129 loadTimeData.getValue('avatarIcons')[0];
130
131 $('managed-user-import-ok').textContent =
Bernhard Bauer 2013/09/13 20:33:59 Why do you use this instead of the i18n-content at
ibra 2013/09/13 20:52:06 Because I display different strings on the button
132 loadTimeData.getString('managedUserSelectAvatarOk');
133 $('managed-user-import-text').textContent =
134 loadTimeData.getString('managedUserSelectAvatarText');
135 $('managed-user-import-title').textContent =
136 loadTimeData.getString('managedUserSelectAvatarTitle');
137 },
138
139 /**
87 * Adds all the existing |managedUsers| to the list. 140 * Adds all the existing |managedUsers| to the list.
88 * @param {Array.<Object>} managedUsers An array of managed user objects. 141 * @param {Array.<Object>} managedUsers An array of managed user objects.
89 * Each object is of the form: 142 * Each object is of the form:
90 * managedUser = { 143 * managedUser = {
91 * id: "Managed User ID", 144 * id: "Managed User ID",
92 * name: "Managed User Name", 145 * name: "Managed User Name",
93 * iconURL: "chrome://path/to/icon/image", 146 * iconURL: "chrome://path/to/icon/image",
94 * onCurrentDevice: true or false 147 * onCurrentDevice: true or false,
148 * needAvatar: true or false
95 * } 149 * }
96 * @private 150 * @private
97 */ 151 */
98 receiveExistingManagedUsers_: function(managedUsers) { 152 receiveExistingManagedUsers_: function(managedUsers) {
99 managedUsers.sort(function(a, b) { 153 managedUsers.sort(function(a, b) {
100 return a.name.localeCompare(b.name); 154 return a.name.localeCompare(b.name);
101 }); 155 });
102 156
103 $('managed-user-list').dataModel = new ArrayDataModel(managedUsers); 157 $('managed-user-list').dataModel = new ArrayDataModel(managedUsers);
104 if (managedUsers.length == 0) 158 if (managedUsers.length == 0)
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 var instance = ManagedUserImportOverlay.getInstance(); 191 var instance = ManagedUserImportOverlay.getInstance();
138 return instance[name + '_'].apply(instance, arguments); 192 return instance[name + '_'].apply(instance, arguments);
139 }; 193 };
140 }); 194 });
141 195
142 // Export 196 // Export
143 return { 197 return {
144 ManagedUserImportOverlay: ManagedUserImportOverlay, 198 ManagedUserImportOverlay: ManagedUserImportOverlay,
145 }; 199 };
146 }); 200 });
OLDNEW
« no previous file with comments | « chrome/browser/resources/options/managed_user_import.html ('k') | chrome/browser/resources/options/managed_user_list.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698