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

Side by Side Diff: chrome/test/data/extensions/subscribe_page_action/options.js

Issue 10407017: Convert RSS extension to use manifest version 2 (with CSP protection). (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 7 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 | Annotate | Revision Log
OLDNEW
1 <!-- 1 /*
2 * Copyright (c) 2009 The Chromium Authors. All rights reserved. Use of this 2 * Copyright (c) 2012 The Chromium Authors. All rights reserved. Use of this
3 * source code is governed by a BSD-style license that can be found in the 3 * source code is governed by a BSD-style license that can be found in the
4 * LICENSE file. 4 * LICENSE file.
5 --> 5 */
6 <html>
7 <head>
8 <title></title>
9 <link rel="stylesheet" href="style.css" type="text/css" />
10 <style>
11 body {
12 display:-webkit-box;
13 -webkit-box-orient:vertical;
14 }
15 6
16 body>* { 7 // Various text messages within the edit dialog.
17 display:-webkit-box; 8 var assistText = chrome.i18n.getMessage("rss_subscription_feed_url_assist");
18 }
19 9
20 #dialogBackground { 10 // Specifies the index of the item we are editing or -1 if adding new.
21 background-color: rgba(0, 0, 0, .2); 11 var editingIndex = -1;
22 display: none; 12 // Whether we are currently editing the default item.
23 height: 100%; 13 var editingDefault = false;
24 left: 0;
25 position: fixed;
26 top: 0;
27 width: 100%;
28 z-index: 1;
29 -webkit-box-orient: vertical;
30 -webkit-user-select:none;
31 }
32
33 #dialogHBackground {
34 height: 100%;
35 -webkit-box-orient: horizontal;
36 }
37
38 #dialog {
39 background-color: #5296DE;
40 border: 1px solid #3A75BD;
41 border-radius: 6px 6px;
42 font-size: 12px;
43 width: 355px;
44 -webkit-box-orient: vertical;
45 }
46
47 #dialogHeader {
48 background-color: rgba(0,0,0,0);
49 color: white;
50 font-weight: bold;
51 margin: 4px;
52 width: 100%;
53 }
54
55 #dialogBody {
56 background-color: rgb(240, 240, 240);
57 border: 1px solid #3A75BD;
58 border-bottom-left-radius: 4px 4px;
59 border-bottom-right-radius: 4px 4px;
60 margin: 0px 2px 2px 2px;
61 padding-bottom: 10px;
62 padding-right: 10px;
63 padding-top: 10px;
64 -webkit-box-orient: vertical;
65 width: 340px;
66 }
67
68 #dialogBackground, #dialogBackground div {
69 display: -webkit-box;
70 -webkit-box-align: center;
71 }
72
73 #dialog input[type="button"] {
74 font-size: 12px;
75 height: 25px;
76 width: 100px;
77 }
78
79 #dialog input[type="text"] {
80 font-size: 12px;
81 font-family: Arial, Helvetica, sans-serif;
82 width: 220px;
83 }
84
85 .dialogRow {
86 margin-left: -24px;
87 width: 100%;
88 -webkit-box-orient: horizontal;
89 -webkit-box-pack: end;
90 }
91
92 .dialogRow>* {
93 margin: 2px
94 }
95
96 #dialogContentFooter {
97 margin-bottom: 6px;
98 margin-left: -12px;
99 margin-top: 20px;
100 padding-right: 10px;
101 }
102
103 .urlAssist {
104 padding-left: 30px;
105 }
106
107 .status {
108 background-color: #FFF18A;
109 }
110
111 </style>
112 <script type="text/javascript" src="common.js"></script>
113 <script>
114
115 // Various text messages within the edit dialog.
116 var assistText = chrome.i18n.getMessage("rss_subscription_feed_url_assist");
117
118 // Specifies the index of the item we are editing or -1 if adding new.
119 var editingIndex = -1;
120 // Whether we are currently editing the default item.
121 var editingDefault = false;
122 14
123 function main() { 15 function main() {
124 document.title = 16 document.title = chrome.i18n.getMessage("rss_subscription_edit_dialog_title");
125 chrome.i18n.getMessage("rss_subscription_edit_dialog_title");
126 17
127 // Make sure the dialog is not visible. 18 // Make sure the dialog is not visible.
128 document.getElementById('dialogBackground').style.display = "none"; 19 document.getElementById('dialogBackground').style.display = "none";
129 20
130 // Make sure the buttons are disabled to begin with. 21 // Make sure the buttons are disabled to begin with.
131 document.getElementById('editReader').disabled = true; 22 document.getElementById('editReader').disabled = true;
132 document.getElementById('removeReader').disabled = true; 23 document.getElementById('removeReader').disabled = true;
133 document.getElementById('setDefault').disabled = true; 24 document.getElementById('setDefault').disabled = true;
134 25
135 if (!storageEnabled) { 26 if (!storageEnabled) {
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
181 function setDefault() { 72 function setDefault() {
182 var readerListbox = document.getElementById('readerListbox'); 73 var readerListbox = document.getElementById('readerListbox');
183 var selection = readerListbox.options[readerListbox.selectedIndex]; 74 var selection = readerListbox.options[readerListbox.selectedIndex];
184 window.localStorage.defaultReader = selection.value; 75 window.localStorage.defaultReader = selection.value;
185 76
186 // Reinititalize the page. 77 // Reinititalize the page.
187 main(); 78 main();
188 } 79 }
189 80
190 function resetList() { 81 function resetList() {
191 if (!confirm(chrome.i18n.getMessage( 82 if (!confirm(chrome.i18n.getMessage("rss_subscription_reset_list_confirm"))) {
192 "rss_subscription_reset_list_confirm"))) {
193 return; 83 return;
194 } 84 }
195 85
196 delete window.localStorage.readerList; 86 delete window.localStorage.readerList;
197 delete window.localStorage.defaultReader; 87 delete window.localStorage.defaultReader;
198 delete window.localStorage.showPreviewPage; 88 delete window.localStorage.showPreviewPage;
199 89
200 // Reinititalize the page. 90 // Reinititalize the page.
201 main(); 91 main();
202 } 92 }
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 window.localStorage.readerList = JSON.stringify(feedReaderList); 139 window.localStorage.readerList = JSON.stringify(feedReaderList);
250 140
251 if (wasDefault) 141 if (wasDefault)
252 window.localStorage.defaultReader = feedReaderList[0].url; 142 window.localStorage.defaultReader = feedReaderList[0].url;
253 } 143 }
254 144
255 main(); 145 main();
256 } 146 }
257 147
258 /** 148 /**
259 * Shows the Edit Feed Reader dialog. 149 * Shows the Edit Feed Reader dialog.
260 */ 150 */
261 function showDialog() { 151 function showDialog() {
262 document.getElementById('urlAssist').innerText = assistText; 152 document.getElementById('urlAssist').innerText = assistText;
263 document.getElementById('save').disabled = true; 153 document.getElementById('save').disabled = true;
264 154
265 // Show the dialog box. 155 // Show the dialog box.
266 document.getElementById('dialogBackground').style.display = "-webkit-box"; 156 document.getElementById('dialogBackground').style.display = "-webkit-box";
267 } 157 }
268 158
269 /** 159 /**
270 * Hides the Edit Feed Reader dialog. 160 * Hides the Edit Feed Reader dialog.
271 */ 161 */
272 function hideDialog() { 162 function hideDialog() {
273 document.getElementById('dialogBackground').style.display = "none"; 163 document.getElementById('dialogBackground').style.display = "none";
274 } 164 }
275 165
276 /** 166 /**
277 * Validates the input in the form (making sure something is entered in both 167 * Validates the input in the form (making sure something is entered in both
278 * fields and that %s is not missing from the url field. 168 * fields and that %s is not missing from the url field.
279 */ 169 */
280 function validateInput() { 170 function validateInput() {
281 document.getElementById('statusMsg').innerText = ""; 171 document.getElementById('statusMsg').innerText = "";
282 172
283 var description = document.getElementById('descriptionText'); 173 var description = document.getElementById('descriptionText');
284 var url = document.getElementById('urlText'); 174 var url = document.getElementById('urlText');
285 175
286 var valid = description.value.length > 0 && 176 var valid = (description.value.length > 0 &&
287 url.value.length > 0 && 177 url.value.length > 0 &&
288 url.value.indexOf("%s") > -1; 178 url.value.indexOf("%s") > -1);
289 179
290 document.getElementById('save').disabled = !valid; 180 document.getElementById('save').disabled = !valid;
291 } 181 }
292 182
293 /** 183 /**
294 * Handler for saving the values. 184 * Handler for saving the values.
295 */ 185 */
296 function save() { 186 function save() {
297 // Get the old list. 187 // Get the old list.
298 var feedReaderList = JSON.parse(window.localStorage.readerList); 188 var feedReaderList = JSON.parse(window.localStorage.readerList);
299 189
300 var url = document.getElementById('urlText').value; 190 var url = document.getElementById('urlText').value;
301 var description = document.getElementById('descriptionText').value; 191 var description = document.getElementById('descriptionText').value;
302 192
303 if (editingIndex == -1) { 193 if (editingIndex == -1) {
304 // Construct a new list. 194 // Construct a new list.
305 var newFeedList = []; 195 var newFeedList = [];
(...skipping 15 matching lines...) Expand all
321 // Retain item default status, in case the url changed while editing item. 211 // Retain item default status, in case the url changed while editing item.
322 if (editingDefault) 212 if (editingDefault)
323 window.localStorage.defaultReader = url; 213 window.localStorage.defaultReader = url;
324 214
325 hideDialog(); 215 hideDialog();
326 216
327 // Reload the values from scratch. 217 // Reload the values from scratch.
328 main(); 218 main();
329 } 219 }
330 220
331 function init() { 221 function listen(id, eventType, method) {
222 document.getElementById(id).addEventListener(eventType, method);
223 }
224
225 document.addEventListener('DOMContentLoaded', function () {
226 // Localize.
332 i18nReplace('rss_subscription_options'); 227 i18nReplace('rss_subscription_options');
333 i18nReplaceImpl('addReader', 'rss_subscription_add_reader'); 228 i18nReplaceImpl('addReader', 'rss_subscription_add_reader');
334 i18nReplaceImpl('editReader', 'rss_subscription_edit_reader'); 229 i18nReplaceImpl('editReader', 'rss_subscription_edit_reader');
335 i18nReplaceImpl('removeReader', 'rss_subscription_remove_reader'); 230 i18nReplaceImpl('removeReader', 'rss_subscription_remove_reader');
336 i18nReplaceImpl('setDefault', 'rss_subscription_make_default_reader'); 231 i18nReplaceImpl('setDefault', 'rss_subscription_make_default_reader');
337 i18nReplaceImpl('resetList', 'rss_subscription_reset_list'); 232 i18nReplaceImpl('resetList', 'rss_subscription_reset_list');
338 i18nReplace('rss_subscription_always_use_default'); 233 i18nReplace('rss_subscription_always_use_default');
339 i18nReplaceImpl('dialogHeader', 'rss_subscription_edit_dialog_title'); 234 i18nReplaceImpl('dialogHeader', 'rss_subscription_edit_dialog_title');
340 i18nReplace('rss_subscription_feed_description'); 235 i18nReplace('rss_subscription_feed_description');
341 i18nReplace('rss_subscription_feed_url'); 236 i18nReplace('rss_subscription_feed_url');
342 i18nReplaceImpl('save', 'rss_subscription_save_button', 'value'); 237 i18nReplaceImpl('save', 'rss_subscription_save_button', 'value');
343 i18nReplaceImpl('rss_subscription_close_button', 238 i18nReplaceImpl('rss_subscription_close_button',
344 'rss_subscription_close_button', 'value'); 239 'rss_subscription_close_button', 'value');
240 // Init event listeners.
241 listen('readerListbox', 'change', onSelectionChanged);
242 listen('addReader', 'click', function () { editReader(-1); });
243 listen('editReader', 'click', function () { editReader(0); });
244 listen('removeReader', 'click', removeReader);
245 listen('setDefault', 'click', setDefault);
246 listen('resetList', 'click', resetList);
247 listen('alwaysUseDefault', 'change', toggleFeedPreview);
248 listen('descriptionText', 'keyup', validateInput);
249 listen('urlText', 'keyup', validateInput);
250 listen('save', 'click', save);
251 listen('rss_subscription_close_button', 'click', hideDialog);
252
253 // Reload the values from scratch.
345 main(); 254 main();
346 } 255 });
347 </script>
348 </head>
349 <body onload="init()">
350 <table border="0">
351 <tr>
352 <td valign="top" width="16">
353 <img src="feed-icon-16x16.png" />
354 </td>
355 <td valign="middle">
356 <strong id="rss_subscription_options"></strong>
357 </td>
358 <td colspan="2">
359 </td>
360 </tr>
361 <tr>
362 <td colspan="2">
363 <select id="readerListbox" size="8" style="width:300;"
364 onchange="onSelectionChanged()"></select>
365 </td>
366 <td valign="top">
367 <button style="width:100%;" id="addReader" onclick="editReader(-1)"
368 ></button><br />
369 <button style="width:100%;" id="editReader" onclick="editReader(0)"
370 ></button><br />
371 <button style="width:100%;" id="removeReader" onclick="removeReader()"
372 ></button><br />
373 <button style="width:100%;" id="setDefault" onclick="setDefault()"
374 ></button><br />
375 <button style="width:100%;" id="resetList" onclick="resetList()"
376 ></button><br />
377 </td>
378 <td style="width: 200px;">
379 </td>
380 </tr>
381 <tr>
382 <td colspan="4">
383 <input type="checkbox" id="alwaysUseDefault"
384 value="alwaysUseDefault" onchange="toggleFeedPreview()"
385 ><span id="rss_subscription_always_use_default"></span>
386 </td>
387 </tr>
388 </table>
389
390 <div id="dialogBackground">
391 <div id="dialogHBackground">
392 <div id="dialog">
393
394 <div id="dialogHeader"></div>
395
396 <div id="dialogBody">
397
398 <div class="dialogRow">
399 &nbsp;<div class="status" id="statusMsg"></div>
400 </div>
401
402 <div class="dialogRow">
403 <div id="rss_subscription_feed_description"></div>
404 <div>
405 <input type="text" id="descriptionText" onkeyup="validateInput()">
406 </div>
407 </div>
408
409 <div class="dialogRow">
410 <div id="rss_subscription_feed_url"></div>
411 <div>
412 <input type="text" id="urlText" onkeyup="validateInput()">
413 </div>
414 </div>
415
416 <div class="dialogRow">
417 <div id="urlAssist" class="urlAssist"></div>
418 </div>
419
420 <div class="dialogRow" id="dialogContentFooter">
421 <div>
422 <input type="button" id="save"
423 onclick="save()">
424 </div>
425 <div>
426 <input type="button"
427 id="rss_subscription_close_button"
428 onclick="hideDialog()">
429 </div>
430 </div>
431
432 </div> <!-- /dialogBody -->
433
434 </div>
435 </div>
436 </div>
437
438 </body>
439 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698