Support for template

This commit is contained in:
benweet 2013-04-14 22:15:40 +01:00
parent d00b734017
commit b7b63b843c
8 changed files with 80 additions and 108 deletions

View File

@ -1 +1 @@
CACHE MANIFEST # v35 CACHE: index.html css/bootstrap.css css/jgrowl.css css/main.css js/main-min.js js/require.js NETWORK: * CACHE MANIFEST # v36 CACHE: index.html css/bootstrap.css css/jgrowl.css css/main.css js/main-min.js js/require.js NETWORK: *

View File

@ -329,6 +329,9 @@ hr {
} }
#modal-settings textarea { #modal-settings textarea {
max-width: 206px; height: 180px;
height: 150px; }
.tooltip-inner {
text-align: left;
} }

View File

@ -488,10 +488,10 @@
<a target="_blank" href="http://requirejs.org/">RequireJS</a> <a target="_blank" href="http://requirejs.org/">RequireJS</a>
</dd> </dd>
<dd> <dd>
<a target="_blank" href="http://underscorejs.org/">Underscore.js</a> <a target="_blank" href="http://layout.jquery-dev.net/">UI Layout</a>
</dd> </dd>
<dd> <dd>
<a target="_blank" href="http://layout.jquery-dev.net/">UI Layout</a> <a target="_blank" href="http://underscorejs.org/">Underscore.js</a>
</dd> </dd>
</dl> </dl>
<p>Copyright 2013 <a target="_blank" <p>Copyright 2013 <a target="_blank"

View File

@ -389,15 +389,15 @@ define(["jquery", "google-helper", "dropbox-helper", "github-helper", "synchroni
// Create a new publication on GitHub // Create a new publication on GitHub
function newPublishGithub(event) { function newPublishGithub(event) {
var publishObject = {}; var publishAttributes = {};
publishObject.repository = core.getInputValue($("#input-publish-github-reponame"), event); publishAttributes.repository = core.getInputValue($("#input-publish-github-reponame"), event);
publishObject.branch = core.getInputValue($("#input-publish-github-branch"), event); publishAttributes.branch = core.getInputValue($("#input-publish-github-branch"), event);
publishObject.path = core.getInputValue($("#input-publish-github-path"), event); publishAttributes.path = core.getInputValue($("#input-publish-github-path"), event);
publishObject.provider = newPublishProvider; publishAttributes.provider = newPublishProvider;
if(event.isPropagationStopped()) { if(event.isPropagationStopped()) {
return; return;
} }
publisher.newLocation(publishObject); publisher.newLocation(publishAttributes);
} }
// Create a new publication on Blogger // Create a new publication on Blogger

View File

@ -9,10 +9,10 @@ define(["jquery", "github-helper"], function($, githubHelper) {
providerName: "GitHub" providerName: "GitHub"
}; };
publishGithub.publish = function(publishObject, title, content, callback) { publishGithub.publish = function(publishAttributes, title, content, callback) {
var commitMsg = core.settings.commitMsg; var commitMsg = core.settings.commitMsg;
githubHelper.upload(publishObject.repository, publishObject.branch, githubHelper.upload(publishAttributes.repository, publishAttributes.branch,
publishObject.path, content, commitMsg, callback); publishAttributes.path, content, commitMsg, callback);
}; };
publishGithub.init = function(coreModule) { publishGithub.init = function(coreModule) {

10
js/main-min.js vendored

File diff suppressed because one or more lines are too long

View File

@ -41,28 +41,34 @@ define(["jquery", "github-provider", "underscore"], function($) {
}; };
// Apply template to the current document // Apply template to the current document
publisher.applyTemplate = function() { publisher.applyTemplate = function(publishAttributes) {
var fileIndex = fileManager.getCurrentFileIndex(); var fileIndex = fileManager.getCurrentFileIndex();
return _.template(core.settings.template, { try {
documentTitle: localStorage[fileIndex + ".title"], return _.template(core.settings.template, {
documentMarkdown: $("#wmd-input").val(), documentTitle: localStorage[fileIndex + ".title"],
documentHTML: $("#wmd-preview").html() documentMarkdown: $("#wmd-input").val(),
}); documentHTML: $("#wmd-preview").html(),
publishAttributes: publishAttributes
});
} catch(e) {
core.showError(e);
throw e;
}
}; };
// Used to get content to publish // Used to get content to publish
function getPublishContent(publishObject) { function getPublishContent(publishAttributes) {
if(publishObject.format === undefined) { if(publishAttributes.format === undefined) {
publishObject.format = $("input:radio[name=radio-publish-format]:checked").prop("value"); publishAttributes.format = $("input:radio[name=radio-publish-format]:checked").prop("value");
} }
if(publishObject.format == "markdown") { if(publishAttributes.format == "markdown") {
return $("#wmd-input").val(); return $("#wmd-input").val();
} }
else if(publishObject.format == "html") { else if(publishAttributes.format == "html") {
return $("#wmd-preview").html(); return $("#wmd-preview").html();
} }
else { else {
return publisher.applyTemplate(); return publisher.applyTemplate(publishAttributes);
} }
} }
@ -79,12 +85,12 @@ define(["jquery", "github-provider", "underscore"], function($) {
// Dequeue a synchronized location // Dequeue a synchronized location
var publishIndex = publishIndexList.pop(); var publishIndex = publishIndexList.pop();
var publishObject = JSON.parse(localStorage[publishIndex]); var publishAttributes = JSON.parse(localStorage[publishIndex]);
var content = getPublishContent(publishObject); var content = getPublishContent(publishAttributes);
// Call the provider // Call the provider
var provider = providerMap[publishObject.provider]; var provider = providerMap[publishAttributes.provider];
provider.publish(publishObject, publishTitle, content, function(error) { provider.publish(publishAttributes, publishTitle, content, function(error) {
publishLocation(callback, errorFlag); publishLocation(callback, errorFlag);
}); });
} }
@ -105,30 +111,30 @@ define(["jquery", "github-provider", "underscore"], function($) {
publishRunning = false; publishRunning = false;
publisher.updatePublishButton(); publisher.updatePublishButton();
if(errorFlag === undefined) { if(errorFlag === undefined) {
core.showMessage('"' + title + '" successfully published.'); core.showMessage('"' + publishTitle + '" successfully published.');
} }
}); });
}; };
// Generate a publishIndex associated to a fileIndex and store a publishObject // Generate a publishIndex associated to a fileIndex and store publishAttributes
function createPublishIndex(fileIndex, publishObject) { function createPublishIndex(fileIndex, publishAttributes) {
var publishIndex = undefined; var publishIndex = undefined;
do { do {
publishIndex = "publish." + core.randomString(); publishIndex = "publish." + core.randomString();
} while(_.has(localStorage, publishIndex)); } while(_.has(localStorage, publishIndex));
localStorage[publishIndex] = JSON.stringify(publishObject); localStorage[publishIndex] = JSON.stringify(publishAttributes);
localStorage[fileIndex + ".publish"] += publishIndex + ";"; localStorage[fileIndex + ".publish"] += publishIndex + ";";
} }
// Add a new publish location to a local document // Add a new publish location to a local document
publisher.newLocation = function(publishObject) { publisher.newLocation = function(publishAttributes) {
var fileIndex = fileManager.getCurrentFileIndex(); var fileIndex = fileManager.getCurrentFileIndex();
var title = localStorage[fileIndex + ".title"]; var title = localStorage[fileIndex + ".title"];
var content = getPublishContent(publishObject); var content = getPublishContent(publishAttributes);
var provider = providerMap[publishObject.provider]; var provider = providerMap[publishAttributes.provider];
provider.publish(publishObject, title, content, function(error) { provider.publish(publishAttributes, title, content, function(error) {
if(error === undefined) { if(error === undefined) {
createPublishIndex(fileIndex, publishObject); createPublishIndex(fileIndex, publishAttributes);
publisher.notifyPublish(); publisher.notifyPublish();
core.showMessage('"' + title core.showMessage('"' + title
+ '" will now be published on GitHub.'); + '" will now be published on GitHub.');
@ -155,10 +161,10 @@ define(["jquery", "github-provider", "underscore"], function($) {
} }
_.each(publishIndexList, function(publishIndex) { _.each(publishIndexList, function(publishIndex) {
var serializedObject = localStorage[publishIndex]; var serializedObject = localStorage[publishIndex];
var publishObject = JSON.parse(serializedObject); var publishAttributes = JSON.parse(serializedObject);
var publishDesc = JSON.stringify(_.omit(publishObject, 'provider')).replace(/{|}|"/g, ""); var publishDesc = JSON.stringify(_.omit(publishAttributes, 'provider')).replace(/{|}|"/g, "");
lineElement = $(_.template(lineTemplate, { lineElement = $(_.template(lineTemplate, {
provider: providerMap[publishObject.provider], provider: providerMap[publishAttributes.provider],
publishDesc: publishDesc publishDesc: publishDesc
})); }));
lineElement.append($(removeButtonTemplate).click(function() { lineElement.append($(removeButtonTemplate).click(function() {
@ -184,9 +190,30 @@ define(["jquery", "github-provider", "underscore"], function($) {
}); });
$(".tooltip-template").tooltip({ $(".tooltip-template").tooltip({
title: ['Variables:\n', html: true,
'documentTitle: the document title' container: '#modal-settings',
].join("") placement: 'right',
trigger: 'manual',
title: ['Available variables:<br>',
'<ul><li><b>documentTitle</b>: document title</li>',
'<li><b>documentMarkdown</b>: document in Markdown format</li>',
'<li><b>documentHTML</b>: document in HTML format</li>',
'<li><b>publishAttributes</b>: attributes of the publish location (undefined when using "Save")</li></ul>',
'Examples:<br>',
_.escape('<title><%= documentTitle %></title>'),
'<br>',
_.escape('<div><%- documentHTML %></div>'),
'<br>',
_.escape('<% if(publishAttributes.provider == "github") print(documentMarkdown); %>'),
'<br><br><a target="_blank" href="http://underscorejs.org/#template">More info</a>',
].join("")
}).click(function(e) {
$(this).tooltip('show');
e.stopPropagation();
});
$(document).click(function(e) {
$(".tooltip-template").tooltip('hide');
}); });
}; };

View File

@ -1,58 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>README.md</title>
</head>
<body><h1>StackEdit</h1>
<p>StackEdit is a free, open-source Markdown editor based on PageDown, the Markdown library used by Stack Overflow and the other Stack Exchange sites.</p>
<h3>StackEdit can:</h3>
<ul>
<li>Manage multiple Markdown documents locally</li>
<li>Export your documents in Markdown or HTML format</li>
<li>Synchronize your Markdown documents in the Cloud</li>
<li>Edit existing Markdown documents from Google Drive and Dropbox</li>
<li>Publish your document on GitHub in one click</li>
</ul>
<h3>Features:</h3>
<ul>
<li>Real-time HTML preview</li>
<li>WYSIWYG control buttons</li>
<li>Configurable layout</li>
<li>Offline editing</li>
<li>Online synchronization using Google Drive and Dropbox</li>
<li>Publish on GitHub</li>
</ul>
<blockquote>
<p><strong>NOTE:</strong> This page has been written with <a href="http://benweet.github.io/stackedit/" title="StackEdit">StackEdit</a>.</p>
</blockquote>StackEdit
=========
StackEdit is a free, open-source Markdown editor based on PageDown, the Markdown library used by Stack Overflow and the other Stack Exchange sites.
### StackEdit can:
- Manage multiple Markdown documents locally
- Export your documents in Markdown or HTML format
- Synchronize your Markdown documents in the Cloud
- Edit existing Markdown documents from Google Drive and Dropbox
- Publish your document on GitHub in one click
### Features:
- Real-time HTML preview
- WYSIWYG control buttons
- Configurable layout
- Offline editing
- Online synchronization using Google Drive and Dropbox
- Publish on GitHub
> **NOTE:** This page has been written with [StackEdit][1].
[1]: http://benweet.github.io/stackedit/ "StackEdit"</body>
</html>