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

Side by Side Diff: chrome/browser/resources/file_manager/js/file_manager.js

Issue 10140023: [File Manager] Welcome to Google Docs banner (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Added Google Drive logo, updated strings 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 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 /** 5 /**
6 * FileManager constructor. 6 * FileManager constructor.
7 * 7 *
8 * FileManager objects encapsulate the functionality of the file selector 8 * FileManager objects encapsulate the functionality of the file selector
9 * dialogs, as well as the full screen file manager application (though the 9 * dialogs, as well as the full screen file manager application (though the
10 * latter is not yet implemented). 10 * latter is not yet implemented).
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 63
64 // Private variables and helper functions. 64 // Private variables and helper functions.
65 65
66 /** 66 /**
67 * Location of the FAQ about the downloads directory. 67 * Location of the FAQ about the downloads directory.
68 */ 68 */
69 var DOWNLOADS_FAQ_URL = 'http://www.google.com/support/chromeos/bin/' + 69 var DOWNLOADS_FAQ_URL = 'http://www.google.com/support/chromeos/bin/' +
70 'answer.py?hl=en&answer=1061547'; 70 'answer.py?hl=en&answer=1061547';
71 71
72 /** 72 /**
73 * Location of the FAQ about Google Docs.
74 */
75 var GOOGLE_DRIVE_FAQ_URL =
76 'https://support.google.com/chromeos/?hl=en&p=filemanager_drive';
77
78 /**
73 * Location of the FAQ about the file actions. 79 * Location of the FAQ about the file actions.
74 */ 80 */
75 var NO_ACTION_FOR_FILE_URL = 'http://support.google.com/chromeos/bin/' + 81 var NO_ACTION_FOR_FILE_URL = 'http://support.google.com/chromeos/bin/' +
76 'answer.py?hl=en&answer=1700055&topic=29026&ctx=topic'; 82 'answer.py?hl=en&answer=1700055&topic=29026&ctx=topic';
77 83
78 /** 84 /**
79 * Maximum amount of thumbnails in the preview pane. 85 * Maximum amount of thumbnails in the preview pane.
80 */ 86 */
81 var MAX_PREVIEW_THUMBAIL_COUNT = 4; 87 var MAX_PREVIEW_THUMBAIL_COUNT = 4;
82 88
(...skipping 631 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 this.dialogType_ == FileManager.DialogType.SELECT_OPEN_FILE || 720 this.dialogType_ == FileManager.DialogType.SELECT_OPEN_FILE ||
715 this.dialogType_ == FileManager.DialogType.SELECT_FOLDER || 721 this.dialogType_ == FileManager.DialogType.SELECT_FOLDER ||
716 this.dialogType_ == FileManager.DialogType.SELECT_SAVEAS_FILE; 722 this.dialogType_ == FileManager.DialogType.SELECT_SAVEAS_FILE;
717 723
718 this.directoryModel_ = new DirectoryModel( 724 this.directoryModel_ = new DirectoryModel(
719 this.filesystem_.root, 725 this.filesystem_.root,
720 sigleSelection, 726 sigleSelection,
721 str('ENABLE_GDATA') == '1', 727 str('ENABLE_GDATA') == '1',
722 this.metadataCache_); 728 this.metadataCache_);
723 729
730 this.initGDataWelcomeBanners_();
731
724 var dataModel = this.directoryModel_.getFileList(); 732 var dataModel = this.directoryModel_.getFileList();
725 var collator = this.collator_; 733 var collator = this.collator_;
726 // TODO(dgozman): refactor comparison functions together with 734 // TODO(dgozman): refactor comparison functions together with
727 // render/update/display. 735 // render/update/display.
728 dataModel.setCompareFunction('name', function(a, b) { 736 dataModel.setCompareFunction('name', function(a, b) {
729 return collator.compare(a.name, b.name); 737 return collator.compare(a.name, b.name);
730 }); 738 });
731 dataModel.setCompareFunction('modificationTime', 739 dataModel.setCompareFunction('modificationTime',
732 this.compareMtime_.bind(this)); 740 this.compareMtime_.bind(this));
733 dataModel.setCompareFunction('size', 741 dataModel.setCompareFunction('size',
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
838 this.unmountedPanel_.setAttribute('retry', true); 846 this.unmountedPanel_.setAttribute('retry', true);
839 } 847 }
840 }; 848 };
841 849
842 FileManager.prototype.initGDataUnmountedPanel_ = function() { 850 FileManager.prototype.initGDataUnmountedPanel_ = function() {
843 if (this.unmountedPanel_.firstElementChild) 851 if (this.unmountedPanel_.firstElementChild)
844 return; 852 return;
845 853
846 var loading = this.document_.createElement('div'); 854 var loading = this.document_.createElement('div');
847 loading.className = 'gdata loading'; 855 loading.className = 'gdata loading';
848 loading.textContent = strf('GDATA_LOADING', str('GDATA_PRODUCT_NAME')); 856 loading.textContent = str('GDATA_LOADING');
849 this.unmountedPanel_.appendChild(loading); 857 this.unmountedPanel_.appendChild(loading);
850 858
851 var spinnerBox = this.document_.createElement('div'); 859 var spinnerBox = this.document_.createElement('div');
852 spinnerBox.className = 'spinner-box'; 860 spinnerBox.className = 'spinner-box';
853 loading.appendChild(spinnerBox); 861 loading.appendChild(spinnerBox);
854 862
855 var spinner = this.document_.createElement('div'); 863 var spinner = this.document_.createElement('div');
856 spinner.className = 'spinner'; 864 spinner.className = 'spinner';
857 spinnerBox.appendChild(spinner); 865 spinnerBox.appendChild(spinner);
858 866
859 var error = this.document_.createElement('div'); 867 var error = this.document_.createElement('div');
860 error.className = 'gdata error'; 868 error.className = 'gdata error';
861 error.textContent = strf('GDATA_CANNOT_REACH', str('GDATA_PRODUCT_NAME')); 869 error.textContent = strf('GDATA_CANNOT_REACH', str('GDATA_PRODUCT_NAME'));
862 this.unmountedPanel_.appendChild(error); 870 this.unmountedPanel_.appendChild(error);
863 871
864 var retry = this.document_.createElement('button'); 872 var retry = this.document_.createElement('button');
865 retry.className = 'gdata retry'; 873 retry.className = 'gdata retry';
866 retry.textContent = str('GDATA_RETRY'); 874 retry.textContent = str('GDATA_RETRY');
867 retry.onclick = this.initGData_.bind(this, false /* retry */); 875 retry.onclick = this.initGData_.bind(this, false /* retry */);
868 this.unmountedPanel_.appendChild(retry); 876 this.unmountedPanel_.appendChild(retry);
869 877
870 var learnMore = this.document_.createElement('div'); 878 var learnMore = this.document_.createElement('div');
871 learnMore.className = 'gdata learn-more'; 879 learnMore.className = 'gdata learn-more plain-link';
880 learnMore.textContent = str('GDATA_LEARN_MORE');
881 learnMore.addEventListener('click', function() {
882 chrome.tabs.create({url: GOOGLE_DRIVE_FAQ_URL});
883 });
872 this.unmountedPanel_.appendChild(learnMore); 884 this.unmountedPanel_.appendChild(learnMore);
873
874 var learnMoreLink = this.document_.createElement('a');
875 learnMoreLink.textContent = str('GDATA_LEARN_MORE');
876 learnMoreLink.href = 'javascript://'; // TODO: Set a proper link URL.
877 learnMoreLink.className = 'gdata learn-more';
878 learnMore.appendChild(learnMoreLink);
879 }; 885 };
880 886
881 FileManager.prototype.onDataModelSplice_ = function(event) { 887 FileManager.prototype.onDataModelSplice_ = function(event) {
882 var checkbox = this.document_.querySelector('#select-all-checkbox'); 888 var checkbox = this.document_.querySelector('#select-all-checkbox');
883 if (checkbox) 889 if (checkbox)
884 this.updateSelectAllCheckboxState_(checkbox); 890 this.updateSelectAllCheckboxState_(checkbox);
885 }; 891 };
886 892
887 FileManager.prototype.onDataModelPermuted_ = function(event) { 893 FileManager.prototype.onDataModelPermuted_ = function(event) {
888 var sortStatus = this.directoryModel_.getFileList().sortStatus; 894 var sortStatus = this.directoryModel_.getFileList().sortStatus;
(...skipping 3442 matching lines...) Expand 10 before | Expand all | Expand 10 after
4331 }, 4337 },
4332 4338
4333 handleSplitterDragEnd: function(e) { 4339 handleSplitterDragEnd: function(e) {
4334 Splitter.prototype.handleSplitterDragEnd.apply(this, arguments); 4340 Splitter.prototype.handleSplitterDragEnd.apply(this, arguments);
4335 this.ownerDocument.documentElement.classList.remove('col-resize'); 4341 this.ownerDocument.documentElement.classList.remove('col-resize');
4336 } 4342 }
4337 }; 4343 };
4338 4344
4339 customSplitter.decorate(splitterElement); 4345 customSplitter.decorate(splitterElement);
4340 }; 4346 };
4347
4348 FileManager.prototype.initGDataWelcomeBanners_ = function() {
4349 var WELCOME_HEADER_COUNTER_KEY = 'gdataWelcomeHeaderCounter';
4350 var WELCOME_HEADER_COUNTER_LIMIT = 5;
4351
4352 function getHeaderCounter() {
4353 return parseInt(localStorage[WELCOME_HEADER_COUNTER_KEY] || '0');
4354 }
4355
4356 if (getHeaderCounter() >= WELCOME_HEADER_COUNTER_LIMIT)
4357 return;
4358
4359 function createDiv(className, parent) {
4360 var div = parent.ownerDocument.createElement('div');
4361 div.className = className;
4362 parent.appendChild(div);
4363 return div;
4364 }
4365
4366 function createBanner(container, messageText) {
4367 var wrapper = createDiv('gdata-welcome-wrapper', container);
4368 createDiv('gdata-welcome-icon', wrapper);
4369
4370 var close = createDiv('gdata-welcome-close', wrapper);
4371 close.addEventListener('click', closeBanner);
4372
4373 var message = createDiv('gdata-welcome-message', wrapper);
4374
4375 var title = createDiv('gdata-welcome-title', message);
4376 title.textContent =
4377 strf('GDATA_WELCOME_TITLE', str('GDATA_PRODUCT_NAME'));
4378
4379 var text = createDiv('gdata-welcome-text', message);
4380 text.innerHTML = messageText;
4381
4382 var links = createDiv('gdata-welcome-links', message);
4383
4384 var more = createDiv('gdata-welcome-more plain-link', links);
4385 more.textContent = str('GDATA_LEARN_MORE');
4386 more.addEventListener('click', function() {
4387 chrome.tabs.create({url: GOOGLE_DRIVE_FAQ_URL});
4388 });
4389
4390 var dismiss = createDiv('gdata-welcome-dismiss plain-link', links);
4391 dismiss.textContent = str('GDATA_WELCOME_DISMISS');
4392 dismiss.addEventListener('click', closeBanner);
4393 }
4394
4395 var self = this;
4396
4397 function maybeShowBanner() {
4398 if (!self.isOnGData()) {
4399 self.dialogContainer_.removeAttribute('gdata-welcome');
4400 return;
4401 }
4402
4403 var counter = getHeaderCounter();
4404
4405 if (self.directoryModel_.getFileList().length == 0 && counter == 0) {
4406 // Only show the full page banner if the header banner was never shown.
4407 // Do not increment the counter.
4408 self.dialogContainer_.setAttribute('gdata-welcome', 'page');
4409 } else if (counter < WELCOME_HEADER_COUNTER_LIMIT) {
4410 localStorage[WELCOME_HEADER_COUNTER_KEY] = ++counter;
4411 self.dialogContainer_.setAttribute('gdata-welcome', 'header');
4412 } else {
4413 closeBanner();
4414 }
4415 }
4416
4417 function closeBanner() {
4418 self.directoryModel_.removeEventListener('scan-completed',
4419 maybeShowBanner);
4420 self.directoryModel_.removeEventListener('rescan-completed',
4421 maybeShowBanner);
4422
4423 self.dialogContainer_.removeAttribute('gdata-welcome');
4424 // Stop showing the welcome banner.
4425 localStorage[WELCOME_HEADER_COUNTER_KEY] = WELCOME_HEADER_COUNTER_LIMIT;
4426 }
4427
4428 createBanner(this.dialogDom_.querySelector('.gdata-welcome.page'),
4429 strf('GDATA_WELCOME_TEXT_LONG', str('GDATA_PRODUCT_NAME')));
4430
4431 createBanner(this.dialogDom_.querySelector('.gdata-welcome.header'),
4432 str('GDATA_WELCOME_TEXT_SHORT'));
4433
4434 this.directoryModel_.addEventListener('scan-completed',
4435 maybeShowBanner);
4436 this.directoryModel_.addEventListener('rescan-completed',
4437 maybeShowBanner);
4438 };
4341 })(); 4439 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698