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

Unified 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/resources/file_manager/js/file_manager.js
diff --git a/chrome/browser/resources/file_manager/js/file_manager.js b/chrome/browser/resources/file_manager/js/file_manager.js
index 7652b499058c1d8cf9219edf58901a1f2cdb04b8..bcfa06c87578aa532d5cfd31a1e544879ea08de3 100644
--- a/chrome/browser/resources/file_manager/js/file_manager.js
+++ b/chrome/browser/resources/file_manager/js/file_manager.js
@@ -71,6 +71,12 @@ FileManager.prototype = {
'answer.py?hl=en&answer=1061547';
/**
+ * Location of the FAQ about Google Docs.
+ */
+ var GOOGLE_DRIVE_FAQ_URL =
+ 'https://support.google.com/chromeos/?hl=en&p=filemanager_drive';
+
+ /**
* Location of the FAQ about the file actions.
*/
var NO_ACTION_FOR_FILE_URL = 'http://support.google.com/chromeos/bin/' +
@@ -588,6 +594,8 @@ FileManager.prototype = {
str('ENABLE_GDATA') == '1',
this.metadataCache_);
+ this.initGDataWelcomeBanners_();
+
var dataModel = this.directoryModel_.getFileList();
var collator = this.collator_;
// TODO(dgozman): refactor comparison functions together with
@@ -712,7 +720,7 @@ FileManager.prototype = {
var loading = this.document_.createElement('div');
loading.className = 'gdata loading';
- loading.textContent = strf('GDATA_LOADING', str('GDATA_PRODUCT_NAME'));
+ loading.textContent = str('GDATA_LOADING');
this.unmountedPanel_.appendChild(loading);
var spinnerBox = this.document_.createElement('div');
@@ -735,14 +743,12 @@ FileManager.prototype = {
this.unmountedPanel_.appendChild(retry);
var learnMore = this.document_.createElement('div');
- learnMore.className = 'gdata learn-more';
+ learnMore.className = 'gdata learn-more plain-link';
+ learnMore.textContent = str('GDATA_LEARN_MORE');
+ learnMore.addEventListener('click', function() {
+ chrome.tabs.create({url: GOOGLE_DRIVE_FAQ_URL});
+ });
this.unmountedPanel_.appendChild(learnMore);
-
- var learnMoreLink = this.document_.createElement('a');
- learnMoreLink.textContent = str('GDATA_LEARN_MORE');
- learnMoreLink.href = 'javascript://'; // TODO: Set a proper link URL.
- learnMoreLink.className = 'gdata learn-more';
- learnMore.appendChild(learnMoreLink);
};
FileManager.prototype.onDataModelSplice_ = function(event) {
@@ -4232,4 +4238,99 @@ FileManager.prototype = {
customSplitter.decorate(splitterElement);
};
+
+ FileManager.prototype.initGDataWelcomeBanners_ = function() {
+ var WELCOME_HEADER_COUNTER_KEY = 'gdataWelcomeHeaderCounter';
+ var WELCOME_HEADER_COUNTER_LIMIT = 5;
+
+ function getHeaderCounter() {
+ return parseInt(localStorage[WELCOME_HEADER_COUNTER_KEY] || '0');
+ }
+
+ if (getHeaderCounter() >= WELCOME_HEADER_COUNTER_LIMIT)
+ return;
+
+ function createDiv(className, parent) {
+ var div = parent.ownerDocument.createElement('div');
+ div.className = className;
+ parent.appendChild(div);
+ return div;
+ }
+
+ var self = this;
+
+ function showBanner(type, messageId) {
+ self.dialogContainer_.setAttribute('gdrive-welcome', type);
+
+ var container = self.dialogDom_.querySelector('.gdrive-welcome.' + type);
+ if (container.firstElementChild)
+ return; // Do not re-create.
+
+ var wrapper = createDiv('gdrive-welcome-wrapper', container);
+ createDiv('gdrive-welcome-icon', wrapper);
+
+ var close = createDiv('cr-dialog-close', wrapper);
+ close.addEventListener('click', closeBanner);
+
+ var message = createDiv('gdrive-welcome-message', wrapper);
+
+ var title = createDiv('gdrive-welcome-title', message);
+ title.textContent =
+ strf('GDATA_WELCOME_TITLE', str('GDATA_PRODUCT_NAME'));
+
+ var text = createDiv('gdrive-welcome-text', message);
+ text.innerHTML = strf(messageId, str('GDATA_PRODUCT_NAME'));
+
+ var links = createDiv('gdrive-welcome-links', message);
+
+ var more = createDiv('gdrive-welcome-more plain-link', links);
+ more.textContent = str('GDATA_LEARN_MORE');
+ more.addEventListener('click', function() {
+ chrome.tabs.create({url: GOOGLE_DRIVE_FAQ_URL});
+ });
+
+ var dismiss = createDiv('gdrive-welcome-dismiss plain-link', links);
+ dismiss.textContent = str('GDATA_WELCOME_DISMISS');
+ dismiss.addEventListener('click', closeBanner);
+ }
+
+ function maybeShowBanner() {
+ if (!self.isOnGData()) {
+ self.dialogContainer_.removeAttribute('gdrive-welcome');
+ return;
+ }
+
+ var counter = getHeaderCounter();
+
+ if (self.directoryModel_.getFileList().length == 0 && counter == 0) {
+ // Only show the full page banner if the header banner was never shown.
+ // Do not increment the counter.
+ showBanner('page', 'GDATA_WELCOME_TEXT_LONG');
+ } else if (counter < WELCOME_HEADER_COUNTER_LIMIT) {
+ localStorage[WELCOME_HEADER_COUNTER_KEY] = ++counter;
+ showBanner('header', 'GDATA_WELCOME_TEXT_SHORT');
+ } else {
+ closeBanner();
+ }
+ }
+
+ function closeBanner() {
+ self.directoryModel_.removeEventListener('scan-completed',
+ maybeShowBanner);
+ self.directoryModel_.removeEventListener('rescan-completed',
+ maybeShowBanner);
+
+ self.dialogContainer_.removeAttribute('gdrive-welcome');
+ // Stop showing the welcome banner.
+ localStorage[WELCOME_HEADER_COUNTER_KEY] = WELCOME_HEADER_COUNTER_LIMIT;
+ }
+
+ this.directoryModel_.addEventListener('scan-completed', maybeShowBanner);
+ this.directoryModel_.addEventListener('rescan-completed', maybeShowBanner);
+
+ var style = this.document_.createElement('link');
+ style.rel = 'stylesheet';
+ style.href = 'css/gdrive_welcome.css';
+ this.document_.head.appendChild(style);
+ };
})();
« 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