OLD | NEW |
---|---|
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 Loading... | |
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 }); |
OLD | NEW |