From a70ebf77620d6c5651e092cc4998c416161746cf Mon Sep 17 00:00:00 2001
From: "Cheng-Han, Wu" <jackymaxj@gmail.com>
Date: Sun, 15 May 2016 10:54:24 +0800
Subject: [PATCH] Update to move dropbox app key setting to common.js and will
 auto load client-side related scripts

---
 README.md               |  3 +--
 lib/config.js           |  4 +---
 lib/response.js         |  9 +++------
 public/js/common.js     |  6 ++++--
 public/js/index.js      | 29 +++++++++++++++++++++++++++++
 public/views/foot.ejs   | 11 +----------
 public/views/header.ejs | 20 --------------------
 7 files changed, 39 insertions(+), 43 deletions(-)

diff --git a/README.md b/README.md
index 2fef963..beece7d 100644
--- a/README.md
+++ b/README.md
@@ -123,8 +123,7 @@ Third-party integration api key settings
 | ------- | --------- | ----------- |
 | facebook, twitter, github, dropbox | `config.json` | for signin |
 | imgur | `config.json` | for image upload |
-| dropbox | `public/views/foot.ejs` | for chooser and saver |
-| google drive | `public/js/common.js`/ `config.json` (enable) | for export and import |
+| google drive, dropbox | `public/js/common.js` | for export and import |
 
 
 Operational Transformation
diff --git a/lib/config.js b/lib/config.js
index 64d2056..b85a966 100644
--- a/lib/config.js
+++ b/lib/config.js
@@ -61,7 +61,6 @@ var twitter = config.twitter || false;
 var github = config.github || false;
 var dropbox = config.dropbox || false;
 var imgur = config.imgur || false;
-var googleDrive = config.googleDrive || false;
 
 function getserverurl() {
     var url = '';
@@ -112,6 +111,5 @@ module.exports = {
     twitter: twitter,
     github: github,
     dropbox: dropbox,
-    imgur: imgur,
-    googleDrive: googleDrive,
+    imgur: imgur
 };
diff --git a/lib/response.js b/lib/response.js
index 9d75561..994c65f 100644
--- a/lib/response.js
+++ b/lib/response.js
@@ -72,8 +72,7 @@ function responseError(res, code, detail, msg) {
         code: code,
         detail: detail,
         msg: msg,
-        useCDN: config.usecdn,
-        googleDrive: config.googleDrive,
+        useCDN: config.usecdn
     });
     res.write(content);
     res.end();
@@ -95,8 +94,7 @@ function showIndex(req, res, next) {
         facebook: config.facebook,
         twitter: config.twitter,
         github: config.github,
-        dropbox: config.dropbox,
-        googleDrive: config.googleDrive,
+        dropbox: config.dropbox
     });
     res.write(content);
     res.end();
@@ -126,8 +124,7 @@ function responseHackMD(res, note) {
         facebook: config.facebook,
         twitter: config.twitter,
         github: config.github,
-        dropbox: config.dropbox,
-        googleDrive: config.googleDrive,
+        dropbox: config.dropbox
     });
     var buf = html;
     res.writeHead(200, {
diff --git a/public/js/common.js b/public/js/common.js
index c623cd2..33b3068 100644
--- a/public/js/common.js
+++ b/public/js/common.js
@@ -4,8 +4,10 @@ var urlpath = ''; // sub url path, like: www.example.com/<urlpath>
 //settings
 var debug = false;
 
-var GOOGLE_API_KEY = 'change this';
-var GOOGLE_CLIENT_ID = 'change this';
+var GOOGLE_API_KEY = '';
+var GOOGLE_CLIENT_ID = '';
+
+var DROPBOX_APP_KEY = '';
 
 var port = window.location.port;
 var serverurl = window.location.protocol + '//' + (domain ? domain : window.location.hostname) + (port ? ':' + port : '') + (urlpath ? '/' + urlpath : '');
diff --git a/public/js/index.js b/public/js/index.js
index 3f0ed59..6bb50c6 100644
--- a/public/js/index.js
+++ b/public/js/index.js
@@ -1048,6 +1048,35 @@ function showMessageModal(title, header, href, text, success) {
     modal.modal('show');
 }
 
+// check if dropbox app key is set and load scripts
+if (DROPBOX_APP_KEY) {
+    $('<script>')
+        .attr('type', 'text/javascript')
+        .attr('src', 'https://www.dropbox.com/static/api/2/dropins.js')
+        .attr('id', 'dropboxjs')
+        .attr('data-app-key', DROPBOX_APP_KEY)
+        .appendTo('body');
+} else {
+    ui.toolbar.import.dropbox.hide();
+    ui.toolbar.export.dropbox.hide();
+}
+
+// check if google api key and client id are set and load scripts
+if (GOOGLE_API_KEY && GOOGLE_CLIENT_ID) {
+    $('<script>')
+        .attr('type', 'text/javascript')
+        .attr('src', 'https://www.google.com/jsapi')
+        .appendTo('body');
+    
+    $('<script>')
+        .attr('type', 'text/javascript')
+        .attr('src', 'https://apis.google.com/js/client:plusone.js?onload=onGoogleClientLoaded')
+        .appendTo('body');
+} else {
+    ui.toolbar.import.googleDrive.hide();
+    ui.toolbar.export.googleDrive.hide();
+}
+
 //button actions
 //share
 ui.toolbar.publish.attr("href", noteurl + "/publish");
diff --git a/public/views/foot.ejs b/public/views/foot.ejs
index 15eff6e..7adb8c7 100644
--- a/public/views/foot.ejs
+++ b/public/views/foot.ejs
@@ -71,12 +71,6 @@
 <script src="<%- url %>/vendor/md-toc.js" defer></script>
 <script src="<%- url %>/vendor/showup/showup.js" defer></script>
 <script src="<%- url %>/vendor/randomColor.js" defer></script>
-<% if(dropbox) { %>
-<script type="text/javascript" src="https://www.dropbox.com/static/api/2/dropins.js" id="dropboxjs" data-app-key="change this" async defer></script>
-<% } %>
-<% if(googleDrive) { %>
-<script src="https://www.google.com/jsapi" defer></script>
-<% } %>
 <script src="<%- url %>/js/google-drive-upload.js" defer></script>
 <script src="<%- url %>/js/google-drive-picker.js" defer></script>
 <script src="<%- url %>/js/common.js" defer></script>
@@ -84,7 +78,4 @@
 <script src="<%- url %>/js/render.js" defer></script>
 <script src="<%- url %>/js/history.js" defer></script>
 <script src="<%- url %>/js/index.js" defer></script>
-<script src="<%- url %>/js/syncscroll.js" defer></script>
-<% if(googleDrive) { %>
-<script src="https://apis.google.com/js/client:plusone.js?onload=onGoogleClientLoaded" defer></script>
-<% } %>
+<script src="<%- url %>/js/syncscroll.js" defer></script>
\ No newline at end of file
diff --git a/public/views/header.ejs b/public/views/header.ejs
index 1092a2d..f45d631 100644
--- a/public/views/header.ejs
+++ b/public/views/header.ejs
@@ -33,31 +33,21 @@
                 <li role="presentation"><a role="menuitem" class="ui-beta-slide" tabindex="-1" href="#" target="_blank"><i class="fa fa-tv fa-fw"></i> Slide Mode</a>
                 </li>
                 <li class="divider"></li>
-                <% if((googleDrive == "true") || (typeof dropbox !== 'undefined' && dropbox) || (typeof github !== 'undefined' && github)) { %>
                 <li class="dropdown-header">Export</li>
-                <% if(typeof dropbox !== 'undefined' && dropbox) { %>
                 <li role="presentation"><a role="menuitem" class="ui-save-dropbox" tabindex="-1" href="#" target="_self"><i class="fa fa-dropbox fa-fw"></i> Dropbox</a>
                 </li>
-                <% } %>
-                <% if(googleDrive == "true") { %>
                 <li role="presentation"><a role="menuitem" class="ui-save-google-drive" tabindex="-1" href="#" target="_self"><i class="fa fa-cloud-upload fa-fw"></i> Google Drive</a>
                 </li>
-                <% } %>
                 <% if(typeof github !== 'undefined' && github) { %>
                 <li role="presentation"><a role="menuitem" class="ui-save-gist" tabindex="-1" href="#" target="_blank"><i class="fa fa-github fa-fw"></i> Gist</a>
                 </li>
                 <% } %>
                 <li class="divider"></li>
-                <% } %>
                 <li class="dropdown-header">Import</li>
-                <% if(typeof dropbox !== 'undefined' && dropbox) { %>
                 <li role="presentation"><a role="menuitem" class="ui-import-dropbox" tabindex="-1" href="#" target="_self"><i class="fa fa-dropbox fa-fw"></i> Dropbox</a>
                 </li>
-                <% } %>
-                <% if(googleDrive == "true") { %>
                 <li role="presentation"><a role="menuitem" class="ui-import-google-drive" tabindex="-1" href="#" target="_self"><i class="fa fa-cloud-download fa-fw"></i> Google Drive</a>
                 </li>
-                <% } %>
                 <li role="presentation"><a role="menuitem" class="ui-import-gist" href="#" data-toggle="modal" data-target="#gistImportModal"><i class="fa fa-github fa-fw"></i> Gist</a>
                 </li>
                 <li role="presentation"><a role="menuitem" class="ui-import-clipboard" href="#" data-toggle="modal" data-target="#clipboardModal"><i class="fa fa-clipboard fa-fw"></i> Clipboard</a>
@@ -128,31 +118,21 @@
                     <li role="presentation"><a role="menuitem" class="ui-beta-slide" tabindex="-1" href="#" target="_blank"><i class="fa fa-tv fa-fw"></i> Slide Mode</a>
                     </li>
                     <li class="divider"></li>
-                    <% if((googleDrive == "true") || (typeof dropbox !== 'undefined' && dropbox) || (typeof github !== 'undefined' && github)) { %>
                     <li class="dropdown-header">Export</li>
-                    <% if(typeof dropbox !== 'undefined' && dropbox) { %>
                     <li role="presentation"><a role="menuitem" class="ui-save-dropbox" tabindex="-1" href="#" target="_self"><i class="fa fa-dropbox fa-fw"></i> Dropbox</a>
                     </li>
-                    <% } %>
-                    <% if(googleDrive == "true") { %>
                     <li role="presentation"><a role="menuitem" class="ui-save-google-drive" tabindex="-1" href="#" target="_self"><i class="fa fa-cloud-upload fa-fw"></i> Google Drive</a>
                     </li>
-                    <% } %>
                     <% if(typeof github !== 'undefined' && github) { %>
                     <li role="presentation"><a role="menuitem" class="ui-save-gist" tabindex="-1" href="#" target="_blank"><i class="fa fa-github fa-fw"></i> Gist</a>
                     </li>
                     <% } %>
                     <li class="divider"></li>
-                    <% } %>
                     <li class="dropdown-header">Import</li>
-                    <% if(typeof dropbox !== 'undefined' && dropbox) { %>
                     <li role="presentation"><a role="menuitem" class="ui-import-dropbox" tabindex="-1" href="#" target="_self"><i class="fa fa-dropbox fa-fw"></i> Dropbox</a>
                     </li>
-                    <% } %>
-                    <% if(googleDrive == "true") { %>
                     <li role="presentation"><a role="menuitem" class="ui-import-google-drive" tabindex="-1" href="#" target="_self"><i class="fa fa-cloud-download fa-fw"></i> Google Drive</a>
                     </li>
-                    <% } %>
                     <li role="presentation"><a role="menuitem" class="ui-import-gist" href="#" data-toggle="modal" data-target="#gistImportModal"><i class="fa fa-github fa-fw"></i> Gist</a>
                     </li>
                     <li role="presentation"><a role="menuitem" class="ui-import-clipboard" href="#" data-toggle="modal" data-target="#clipboardModal"><i class="fa fa-clipboard fa-fw"></i> Clipboard</a>