Added Gist provider
This commit is contained in:
parent
bd7b5a3b5e
commit
4c976fa77e
@ -1 +1 @@
|
||||
CACHE MANIFEST
# v18
CACHE:
index.html
css/main-min.css
js/main-min.js
js/require.js
img/ajax-loader.gif
img/glyphicons-halflings.png
img/glyphicons-halflings-white.png
img/icons.png
img/stackedit-32.ico
img/stackedit-promo.png
NETWORK:
*
|
||||
CACHE MANIFEST
# v19
CACHE:
index.html
css/main-min.css
js/main-min.js
js/require.js
img/ajax-loader.gif
img/glyphicons-halflings.png
img/glyphicons-halflings-white.png
img/icons.png
img/stackedit-32.ico
img/stackedit-promo.png
NETWORK:
*
|
||||
|
6
css/main-min.css
vendored
6
css/main-min.css
vendored
@ -5541,7 +5541,8 @@ hr {
|
||||
height: 16px;
|
||||
background-position: -37px 0;
|
||||
}
|
||||
.icon-github {
|
||||
.icon-github,
|
||||
.icon-gist {
|
||||
background-image: url("../img/icons.png") !important;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
@ -5613,7 +5614,8 @@ hr {
|
||||
z-index: 1050 !important;
|
||||
}
|
||||
#modal-settings textarea {
|
||||
height: 180px;
|
||||
height: 80px;
|
||||
max-width: 206px;
|
||||
}
|
||||
.tooltip-inner {
|
||||
text-align: left;
|
||||
|
@ -246,7 +246,8 @@ hr {
|
||||
background-position: -37px 0;
|
||||
}
|
||||
|
||||
.icon-github {
|
||||
.icon-github,
|
||||
.icon-gist {
|
||||
background-image: url("../img/icons.png") !important;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
|
@ -14,7 +14,7 @@
|
||||
var code = getParameter("code");
|
||||
if (client_id) {
|
||||
window.location.href = "https://github.com/login/oauth/authorize?client_id="
|
||||
+ client_id + "&scope=repo";
|
||||
+ client_id + "&scope=repo,gist";
|
||||
} else {
|
||||
if (code) {
|
||||
localStorage["githubCode"] = code;
|
||||
|
103
index.html
103
index.html
@ -88,17 +88,7 @@
|
||||
<li class="divider"></li>
|
||||
<li class="dropdown-submenu"><a href="#"><i
|
||||
class="icon-share"></i> Publish on</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#" class="action-publish-blogger"><i
|
||||
class="icon-blogger"></i> Blogger</a></li>
|
||||
<li><a href="#" class="action-publish-dropbox"><i
|
||||
class="icon-dropbox"></i> Dropbox</a></li>
|
||||
<li><a href="#" class="action-publish-github"><i
|
||||
class="icon-github"></i> GitHub</a></li>
|
||||
<li><a href="#" class="action-publish-gdrive"><i
|
||||
class="icon-gdrive"></i> Google Drive</a></li>
|
||||
<li><a href="#" class="action-publish-tumblr"><i
|
||||
class="icon-tumblr"></i> Tumblr</a></li>
|
||||
<ul id="publish-menu" class="dropdown-menu">
|
||||
</ul></li>
|
||||
<li><a href="#" data-toggle="modal"
|
||||
data-target="#modal-manage-publish" class="action-reset-input"><i
|
||||
@ -176,8 +166,10 @@
|
||||
<div class="modal-body">
|
||||
<p>Are you sure you want to remove "<span class="file-title"></span>"?
|
||||
</p>
|
||||
<blockquote class="muted"><b>NOTE:</b> This will not remove the file on
|
||||
synchronized locations.</blockquote>
|
||||
<blockquote class="muted">
|
||||
<b>NOTE:</b> This will not remove the file on synchronized
|
||||
locations.
|
||||
</blockquote>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" class="btn" data-dismiss="modal">Cancel</a> <a href="#"
|
||||
@ -194,8 +186,10 @@
|
||||
<div class="modal-body">
|
||||
<p>This will upload the current document into your Google Drive
|
||||
root folder and keep it synchronized.</p>
|
||||
<blockquote class="muted"><b>NOTE:</b> You can move or rename the file
|
||||
afterwards within Google Drive.</blockquote>
|
||||
<blockquote class="muted">
|
||||
<b>NOTE:</b> You can move or rename the file afterwards within
|
||||
Google Drive.
|
||||
</blockquote>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" class="btn" data-dismiss="modal">Cancel</a> <a href="#"
|
||||
@ -222,13 +216,13 @@
|
||||
</div>
|
||||
<br /> <br />
|
||||
<blockquote class="muted">
|
||||
<b>NOTE:</b>
|
||||
<ul>
|
||||
<li>Dropbox file path does not depend on document title.</li>
|
||||
<li>The title of your document will not be synchronized.</li>
|
||||
<li>Destination folder must exist.</li>
|
||||
<li>Any existing file at this location will be overwritten.</li>
|
||||
</ul>
|
||||
<b>NOTE:</b>
|
||||
<ul>
|
||||
<li>Dropbox file path does not depend on document title.</li>
|
||||
<li>The title of your document will not be synchronized.</li>
|
||||
<li>Destination folder must exist.</li>
|
||||
<li>Any existing file at this location will be overwritten.</li>
|
||||
</ul>
|
||||
</blockquote>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
@ -269,8 +263,10 @@
|
||||
class="btn action-sync-manual-dropbox" title="Add location"
|
||||
data-dismiss="modal"><i class="icon-ok"></i></a>
|
||||
</div>
|
||||
<blockquote class="muted"><b>NOTE:</b> This will upload the local document
|
||||
firstly and overwrite the existing file on the server.</blockquote>
|
||||
<blockquote class="muted">
|
||||
<b>NOTE:</b> This will upload the local document firstly and
|
||||
overwrite the existing file on the server.
|
||||
</blockquote>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" class="btn btn-primary" data-dismiss="modal">Close</a>
|
||||
@ -309,6 +305,28 @@
|
||||
placeholder="path/to/file.md">
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group modal-publish-gist">
|
||||
<label class="control-label" for="input-publish-filename">Filename</label>
|
||||
<div class="controls">
|
||||
<input type="text" id="input-publish-filename"
|
||||
placeholder="Filename">
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group modal-publish-gist">
|
||||
<label class="control-label" for="input-publish-gist-id">Existing
|
||||
ID (optional)</label>
|
||||
<div class="controls">
|
||||
<input type="text" id="input-publish-gist-id"
|
||||
placeholder="Gist ID">
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group modal-publish-gist">
|
||||
<label class="control-label" for="input-publish-gist-public">Public</label>
|
||||
<div class="controls">
|
||||
<input type="checkbox" id="input-publish-gist-public"
|
||||
checked="checked" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group modal-publish-blogger">
|
||||
<label class="control-label" for="input-publish-blogger-url">Blog
|
||||
URL</label>
|
||||
@ -325,12 +343,12 @@
|
||||
placeholder="exemple.tumblr.com">
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group modal-publish-blogger modal-publish-tumblr">
|
||||
<div
|
||||
class="control-group modal-publish-blogger modal-publish-tumblr">
|
||||
<label class="control-label" for="input-publish-postid">Update
|
||||
existing post ID (optional)</label>
|
||||
<div class="controls">
|
||||
<input type="text" id="input-publish-postid"
|
||||
placeholder="Post ID">
|
||||
<input type="text" id="input-publish-postid" placeholder="Post ID">
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group modal-publish-blogger">
|
||||
@ -417,8 +435,9 @@
|
||||
<p class="msg-no-publish hide">"<span class="file-title"></span>"
|
||||
is not published.
|
||||
</p>
|
||||
<blockquote class="muted"><b>NOTE:</b> You can add locations using
|
||||
"Publish on" sub-menu.</blockquote>
|
||||
<blockquote class="muted">
|
||||
<b>NOTE:</b> You can add locations using "Publish on" sub-menu.
|
||||
</blockquote>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" class="btn btn-primary" data-dismiss="modal">Close</a>
|
||||
@ -483,15 +502,15 @@
|
||||
class="input-mini"><span class="help-inline">px</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label"
|
||||
for="textarea-settings-default-content">Default content <a
|
||||
href="#" class="tooltip-default-content">(?)</a>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<textarea id="textarea-settings-default-content"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label"
|
||||
for="textarea-settings-default-content">Default content
|
||||
<a href="#" class="tooltip-default-content">(?)</a>
|
||||
</label>
|
||||
<div class="controls">
|
||||
<textarea id="textarea-settings-default-content"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="tab-pane" id="tabpane-settings-publish">
|
||||
@ -643,8 +662,8 @@
|
||||
<div class="modal-body">
|
||||
<p>StackEdit has stopped because another instance was running in
|
||||
the same browser.</p>
|
||||
<blockquote class="muted">If you want to reopen StackEdit, click on
|
||||
"Reload".</blockquote>
|
||||
<blockquote class="muted">If you want to reopen
|
||||
StackEdit, click on "Reload".</blockquote>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="javascript:window.location.reload();"
|
||||
@ -661,8 +680,8 @@
|
||||
<blockquote class="muted">Are you sure?</blockquote>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a href="#" class="btn" data-dismiss="modal">Cancel</a> <a href="#"
|
||||
class="btn btn-primary action-app-reset" data-dismiss="modal">OK</a>
|
||||
<a href="#" class="btn" data-dismiss="modal">Cancel</a> <a href="#"
|
||||
class="btn btn-primary action-app-reset" data-dismiss="modal">OK</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -15,6 +15,7 @@ var USER_IDLE_THRESHOLD = 300000;
|
||||
var PROVIDER_BLOGGER = "blogger";
|
||||
var PROVIDER_DROPBOX = "dropbox";
|
||||
var PROVIDER_GDRIVE = "gdrive";
|
||||
var PROVIDER_GIST = "gist";
|
||||
var PROVIDER_GITHUB = "github";
|
||||
var PROVIDER_TUMBLR = "tumblr";
|
||||
var WELCOME_DOCUMENT_TITLE = "Welcome document";
|
||||
|
@ -762,6 +762,14 @@ define(
|
||||
}
|
||||
version = "v4";
|
||||
}
|
||||
|
||||
// Upgrade from v4 to v5
|
||||
if(version == "v4") {
|
||||
// Recreate GitHub token
|
||||
localStorage.removeItem("githubToken");
|
||||
version = "v5";
|
||||
}
|
||||
|
||||
localStorage["version"] = version;
|
||||
}
|
||||
// Setup the localStorage when starting
|
||||
|
33
js/gist-provider.js
Normal file
33
js/gist-provider.js
Normal file
@ -0,0 +1,33 @@
|
||||
define(["jquery", "core", "github-helper"], function($, core, githubHelper) {
|
||||
|
||||
var gistProvider = {
|
||||
providerId: PROVIDER_GIST,
|
||||
providerName: "Gist"
|
||||
};
|
||||
|
||||
gistProvider.publish = function(publishAttributes, title, content, callback) {
|
||||
githubHelper.gistUpload(publishAttributes.gistId, publishAttributes.filename, publishAttributes.isPublic,
|
||||
title, content, function(error, gistId) {
|
||||
if(error) {
|
||||
callback(error);
|
||||
return;
|
||||
}
|
||||
publishAttributes.gistId = gistId;
|
||||
callback();
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
gistProvider.newPublishAttributes = function(event) {
|
||||
var publishAttributes = {};
|
||||
publishAttributes.gistId = core.getInputValue($("#input-publish-gist-id"));
|
||||
publishAttributes.filename = core.getInputValue($("#input-publish-filename"), event);
|
||||
publishAttributes.isPublic = $("#input-publish-gist-public").is(":checked");
|
||||
if(event.isPropagationStopped()) {
|
||||
return undefined;
|
||||
}
|
||||
return publishAttributes;
|
||||
};
|
||||
|
||||
return gistProvider;
|
||||
});
|
@ -144,6 +144,45 @@ define(["jquery", "core", "async-runner"], function($, core, asyncRunner) {
|
||||
asyncRunner.addTask(task);
|
||||
};
|
||||
|
||||
githubHelper.gistUpload = function(gistId, filename, isPublic, title, content, callback) {
|
||||
callback = callback || core.doNothing;
|
||||
var task = asyncRunner.createTask();
|
||||
connect(task);
|
||||
authenticate(task);
|
||||
task.onRun(function() {
|
||||
var gist = github.getGist(gistId);
|
||||
var files = {};
|
||||
files[filename] = {content: content};
|
||||
githubFunction = gist.update;
|
||||
if(gistId === undefined) {
|
||||
githubFunction = gist.create;
|
||||
}
|
||||
githubFunction({
|
||||
description: title,
|
||||
"public": isPublic,
|
||||
files: files
|
||||
}, function(err, gist) {
|
||||
if(err) {
|
||||
// Handle error
|
||||
if(err.error === 404 && gistId !== undefined) {
|
||||
err = 'Gist ' + gistId + ' not found on GitHub.|removePublish';
|
||||
}
|
||||
handleError(err, task);
|
||||
return;
|
||||
}
|
||||
gistId = gist.id;
|
||||
task.chain();
|
||||
});
|
||||
});
|
||||
task.onSuccess(function() {
|
||||
callback(undefined, gistId);
|
||||
});
|
||||
task.onError(function(error) {
|
||||
callback(error);
|
||||
});
|
||||
asyncRunner.addTask(task);
|
||||
};
|
||||
|
||||
function handleError(error, task) {
|
||||
var errorMsg = undefined;
|
||||
if (error) {
|
||||
|
2
js/main-min.js
vendored
2
js/main-min.js
vendored
File diff suppressed because one or more lines are too long
@ -1,4 +1,4 @@
|
||||
define(["jquery", "core", "github-provider", "blogger-provider", "dropbox-provider", "gdrive-provider", "tumblr-provider", "underscore"], function($, core) {
|
||||
define(["jquery", "core", "blogger-provider", "dropbox-provider", "gist-provider", "github-provider", "gdrive-provider", "tumblr-provider", "underscore"], function($, core) {
|
||||
|
||||
var publisher = {};
|
||||
|
||||
@ -219,12 +219,19 @@ define(["jquery", "core", "github-provider", "blogger-provider", "dropbox-provid
|
||||
};
|
||||
|
||||
core.onReady(function() {
|
||||
// Init each provider
|
||||
// Add every provider
|
||||
var publishMenu = $("#publish-menu");
|
||||
_.each(providerMap, function(provider) {
|
||||
// Publish provider button
|
||||
$(".action-publish-" + provider.providerId).click(function() {
|
||||
initNewLocation(provider);
|
||||
});
|
||||
// Provider's publish button
|
||||
publishMenu.append(
|
||||
$("<li>").append(
|
||||
$('<a href="#"><i class="icon-' + provider.providerId + '"></i> ' + provider.providerName + '</a>')
|
||||
.click(function() {
|
||||
initNewLocation(provider);
|
||||
}
|
||||
)
|
||||
)
|
||||
);
|
||||
});
|
||||
|
||||
$(".action-process-publish").click(performNewLocation);
|
||||
|
Loading…
Reference in New Issue
Block a user