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

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: Extracted css into a dynamically loaded file Created 8 years, 8 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 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 64
65 // Private variables and helper functions. 65 // Private variables and helper functions.
66 66
67 /** 67 /**
68 * Location of the FAQ about the downloads directory. 68 * Location of the FAQ about the downloads directory.
69 */ 69 */
70 var DOWNLOADS_FAQ_URL = 'http://www.google.com/support/chromeos/bin/' + 70 var DOWNLOADS_FAQ_URL = 'http://www.google.com/support/chromeos/bin/' +
71 'answer.py?hl=en&answer=1061547'; 71 'answer.py?hl=en&answer=1061547';
72 72
73 /** 73 /**
74 * Location of the FAQ about Google Docs.
75 */
76 var GOOGLE_DRIVE_FAQ_URL =
77 'https://support.google.com/chromeos/?hl=en&p=filemanager_drive';
78
79 /**
74 * Location of the FAQ about the file actions. 80 * Location of the FAQ about the file actions.
75 */ 81 */
76 var NO_ACTION_FOR_FILE_URL = 'http://support.google.com/chromeos/bin/' + 82 var NO_ACTION_FOR_FILE_URL = 'http://support.google.com/chromeos/bin/' +
77 'answer.py?hl=en&answer=1700055&topic=29026&ctx=topic'; 83 'answer.py?hl=en&answer=1700055&topic=29026&ctx=topic';
78 84
79 /** 85 /**
80 * Maximum amount of thumbnails in the preview pane. 86 * Maximum amount of thumbnails in the preview pane.
81 */ 87 */
82 var MAX_PREVIEW_THUMBAIL_COUNT = 4; 88 var MAX_PREVIEW_THUMBAIL_COUNT = 4;
83 89
(...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after
581 this.dialogType_ == FileManager.DialogType.SELECT_OPEN_FILE || 587 this.dialogType_ == FileManager.DialogType.SELECT_OPEN_FILE ||
582 this.dialogType_ == FileManager.DialogType.SELECT_FOLDER || 588 this.dialogType_ == FileManager.DialogType.SELECT_FOLDER ||
583 this.dialogType_ == FileManager.DialogType.SELECT_SAVEAS_FILE; 589 this.dialogType_ == FileManager.DialogType.SELECT_SAVEAS_FILE;
584 590
585 this.directoryModel_ = new DirectoryModel( 591 this.directoryModel_ = new DirectoryModel(
586 this.filesystem_.root, 592 this.filesystem_.root,
587 sigleSelection, 593 sigleSelection,
588 str('ENABLE_GDATA') == '1', 594 str('ENABLE_GDATA') == '1',
589 this.metadataCache_); 595 this.metadataCache_);
590 596
597 this.initGDataWelcomeBanners_();
598
591 var dataModel = this.directoryModel_.getFileList(); 599 var dataModel = this.directoryModel_.getFileList();
592 var collator = this.collator_; 600 var collator = this.collator_;
593 // TODO(dgozman): refactor comparison functions together with 601 // TODO(dgozman): refactor comparison functions together with
594 // render/update/display. 602 // render/update/display.
595 dataModel.setCompareFunction('name', function(a, b) { 603 dataModel.setCompareFunction('name', function(a, b) {
596 return collator.compare(a.name, b.name); 604 return collator.compare(a.name, b.name);
597 }); 605 });
598 dataModel.setCompareFunction('modificationTime', 606 dataModel.setCompareFunction('modificationTime',
599 this.compareMtime_.bind(this)); 607 this.compareMtime_.bind(this));
600 dataModel.setCompareFunction('size', 608 dataModel.setCompareFunction('size',
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 this.unmountedPanel_.setAttribute('retry', true); 713 this.unmountedPanel_.setAttribute('retry', true);
706 } 714 }
707 }; 715 };
708 716
709 FileManager.prototype.initGDataUnmountedPanel_ = function() { 717 FileManager.prototype.initGDataUnmountedPanel_ = function() {
710 if (this.unmountedPanel_.firstElementChild) 718 if (this.unmountedPanel_.firstElementChild)
711 return; 719 return;
712 720
713 var loading = this.document_.createElement('div'); 721 var loading = this.document_.createElement('div');
714 loading.className = 'gdata loading'; 722 loading.className = 'gdata loading';
715 loading.textContent = strf('GDATA_LOADING', str('GDATA_PRODUCT_NAME')); 723 loading.textContent = str('GDATA_LOADING');
716 this.unmountedPanel_.appendChild(loading); 724 this.unmountedPanel_.appendChild(loading);
717 725
718 var spinnerBox = this.document_.createElement('div'); 726 var spinnerBox = this.document_.createElement('div');
719 spinnerBox.className = 'spinner-box'; 727 spinnerBox.className = 'spinner-box';
720 loading.appendChild(spinnerBox); 728 loading.appendChild(spinnerBox);
721 729
722 var spinner = this.document_.createElement('div'); 730 var spinner = this.document_.createElement('div');
723 spinner.className = 'spinner'; 731 spinner.className = 'spinner';
724 spinnerBox.appendChild(spinner); 732 spinnerBox.appendChild(spinner);
725 733
726 var error = this.document_.createElement('div'); 734 var error = this.document_.createElement('div');
727 error.className = 'gdata error'; 735 error.className = 'gdata error';
728 error.textContent = strf('GDATA_CANNOT_REACH', str('GDATA_PRODUCT_NAME')); 736 error.textContent = strf('GDATA_CANNOT_REACH', str('GDATA_PRODUCT_NAME'));
729 this.unmountedPanel_.appendChild(error); 737 this.unmountedPanel_.appendChild(error);
730 738
731 var retry = this.document_.createElement('button'); 739 var retry = this.document_.createElement('button');
732 retry.className = 'gdata retry'; 740 retry.className = 'gdata retry';
733 retry.textContent = str('GDATA_RETRY'); 741 retry.textContent = str('GDATA_RETRY');
734 retry.onclick = this.initGData_.bind(this, false /* retry */); 742 retry.onclick = this.initGData_.bind(this, false /* retry */);
735 this.unmountedPanel_.appendChild(retry); 743 this.unmountedPanel_.appendChild(retry);
736 744
737 var learnMore = this.document_.createElement('div'); 745 var learnMore = this.document_.createElement('div');
738 learnMore.className = 'gdata learn-more'; 746 learnMore.className = 'gdata learn-more plain-link';
747 learnMore.textContent = str('GDATA_LEARN_MORE');
748 learnMore.addEventListener('click', function() {
749 chrome.tabs.create({url: GOOGLE_DRIVE_FAQ_URL});
750 });
739 this.unmountedPanel_.appendChild(learnMore); 751 this.unmountedPanel_.appendChild(learnMore);
740
741 var learnMoreLink = this.document_.createElement('a');
742 learnMoreLink.textContent = str('GDATA_LEARN_MORE');
743 learnMoreLink.href = 'javascript://'; // TODO: Set a proper link URL.
744 learnMoreLink.className = 'gdata learn-more';
745 learnMore.appendChild(learnMoreLink);
746 }; 752 };
747 753
748 FileManager.prototype.onDataModelSplice_ = function(event) { 754 FileManager.prototype.onDataModelSplice_ = function(event) {
749 var checkbox = this.document_.querySelector('#select-all-checkbox'); 755 var checkbox = this.document_.querySelector('#select-all-checkbox');
750 if (checkbox) 756 if (checkbox)
751 this.updateSelectAllCheckboxState_(checkbox); 757 this.updateSelectAllCheckboxState_(checkbox);
752 }; 758 };
753 759
754 FileManager.prototype.onDataModelPermuted_ = function(event) { 760 FileManager.prototype.onDataModelPermuted_ = function(event) {
755 var sortStatus = this.directoryModel_.getFileList().sortStatus; 761 var sortStatus = this.directoryModel_.getFileList().sortStatus;
(...skipping 3469 matching lines...) Expand 10 before | Expand all | Expand 10 after
4225 }, 4231 },
4226 4232
4227 handleSplitterDragEnd: function(e) { 4233 handleSplitterDragEnd: function(e) {
4228 Splitter.prototype.handleSplitterDragEnd.apply(this, arguments); 4234 Splitter.prototype.handleSplitterDragEnd.apply(this, arguments);
4229 this.ownerDocument.documentElement.classList.remove('col-resize'); 4235 this.ownerDocument.documentElement.classList.remove('col-resize');
4230 } 4236 }
4231 }; 4237 };
4232 4238
4233 customSplitter.decorate(splitterElement); 4239 customSplitter.decorate(splitterElement);
4234 }; 4240 };
4241
4242 FileManager.prototype.initGDataWelcomeBanners_ = function() {
4243 var WELCOME_HEADER_COUNTER_KEY = 'gdataWelcomeHeaderCounter';
4244 var WELCOME_HEADER_COUNTER_LIMIT = 5;
4245
4246 function getHeaderCounter() {
4247 return parseInt(localStorage[WELCOME_HEADER_COUNTER_KEY] || '0');
4248 }
4249
4250 if (getHeaderCounter() >= WELCOME_HEADER_COUNTER_LIMIT)
4251 return;
4252
4253 function createDiv(className, parent) {
4254 var div = parent.ownerDocument.createElement('div');
4255 div.className = className;
4256 parent.appendChild(div);
4257 return div;
4258 }
4259
4260 var self = this;
4261
4262 function showBanner(type, messageId) {
4263 self.dialogContainer_.setAttribute('gdrive-welcome', type);
4264
4265 var container = self.dialogDom_.querySelector('.gdrive-welcome.' + type);
4266 if (container.firstElementChild)
4267 return; // Do not re-create.
4268
4269 var wrapper = createDiv('gdrive-welcome-wrapper', container);
4270 createDiv('gdrive-welcome-icon', wrapper);
4271
4272 var close = createDiv('cr-dialog-close', wrapper);
4273 close.addEventListener('click', closeBanner);
4274
4275 var message = createDiv('gdrive-welcome-message', wrapper);
4276
4277 var title = createDiv('gdrive-welcome-title', message);
4278 title.textContent =
4279 strf('GDATA_WELCOME_TITLE', str('GDATA_PRODUCT_NAME'));
4280
4281 var text = createDiv('gdrive-welcome-text', message);
4282 text.innerHTML = strf(messageId, str('GDATA_PRODUCT_NAME'));
4283
4284 var links = createDiv('gdrive-welcome-links', message);
4285
4286 var more = createDiv('gdrive-welcome-more plain-link', links);
4287 more.textContent = str('GDATA_LEARN_MORE');
4288 more.addEventListener('click', function() {
4289 chrome.tabs.create({url: GOOGLE_DRIVE_FAQ_URL});
4290 });
4291
4292 var dismiss = createDiv('gdrive-welcome-dismiss plain-link', links);
4293 dismiss.textContent = str('GDATA_WELCOME_DISMISS');
4294 dismiss.addEventListener('click', closeBanner);
4295 }
4296
4297 function maybeShowBanner() {
4298 if (!self.isOnGData()) {
4299 self.dialogContainer_.removeAttribute('gdrive-welcome');
4300 return;
4301 }
4302
4303 var counter = getHeaderCounter();
4304
4305 if (self.directoryModel_.getFileList().length == 0 && counter == 0) {
4306 // Only show the full page banner if the header banner was never shown.
4307 // Do not increment the counter.
4308 showBanner('page', 'GDATA_WELCOME_TEXT_LONG');
4309 } else if (counter < WELCOME_HEADER_COUNTER_LIMIT) {
4310 localStorage[WELCOME_HEADER_COUNTER_KEY] = ++counter;
4311 showBanner('header', 'GDATA_WELCOME_TEXT_SHORT');
4312 } else {
4313 closeBanner();
4314 }
4315 }
4316
4317 function closeBanner() {
4318 self.directoryModel_.removeEventListener('scan-completed',
4319 maybeShowBanner);
4320 self.directoryModel_.removeEventListener('rescan-completed',
4321 maybeShowBanner);
4322
4323 self.dialogContainer_.removeAttribute('gdrive-welcome');
4324 // Stop showing the welcome banner.
4325 localStorage[WELCOME_HEADER_COUNTER_KEY] = WELCOME_HEADER_COUNTER_LIMIT;
4326 }
4327
4328 this.directoryModel_.addEventListener('scan-completed', maybeShowBanner);
4329 this.directoryModel_.addEventListener('rescan-completed', maybeShowBanner);
4330
4331 var style = this.document_.createElement('link');
4332 style.rel = 'stylesheet';
4333 style.href = 'css/gdrive_welcome.css';
4334 this.document_.head.appendChild(style);
4335 };
4235 })(); 4336 })();
OLDNEW
« no previous file with comments | « chrome/browser/resources/file_manager/images/gdrive_logo.png ('k') | chrome/browser/resources/file_manager/js/mock_chrome.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698