Added ejs engine
This commit is contained in:
parent
5536ced7c8
commit
1e88a6fe21
@ -7,7 +7,8 @@
|
||||
"doc": "doc"
|
||||
},
|
||||
"dependencies": {
|
||||
"express": "3.x"
|
||||
"express": "3.x",
|
||||
"ejs": "~0.8.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"grunt": "~0.4.1",
|
||||
|
@ -1,9 +1,7 @@
|
||||
CACHE MANIFEST
|
||||
#Date Wed Oct 16 2013 00:12:59
|
||||
#Date Wed Oct 16 2013 00:12:57
|
||||
|
||||
CACHE:
|
||||
index.html
|
||||
viewer.html
|
||||
res/worker.js
|
||||
libs/MathJax/MathJax.js?config=TeX-AMS_HTML
|
||||
libs/MathJax/config/Safe.js
|
||||
|
@ -1,32 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html manifest="cache.manifest">
|
||||
<head>
|
||||
<title>StackEdit - Markdown editor</title>
|
||||
<link rel="canonical" href="http://benweet.github.io/stackedit/">
|
||||
<link rel="icon" href="res-min/img/stackedit-32.ico" type="image/x-icon">
|
||||
<link rel="shortcut icon" href="res-min/img/stackedit-32.ico"
|
||||
type="image/x-icon">
|
||||
<meta name="description"
|
||||
content="StackEdit is a free, open-source Markdown editor based on PageDown, the Markdown library used by Stack Overflow and the other Stack Exchange sites.">
|
||||
<meta name="author" content="Benoit Schweblin">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="msvalidate.01" content="5E47EE6F67B069C17E3CDD418351A612" />
|
||||
<script>
|
||||
// Use http://.../?debug to serve original JavaScript files instead of minified
|
||||
var baseDir = 'res';
|
||||
if(!/(\?|&)debug($|&)/.test(location.search)) {
|
||||
baseDir += '-min';
|
||||
}
|
||||
var require = {
|
||||
baseUrl: baseDir,
|
||||
deps: [
|
||||
'main'
|
||||
]
|
||||
};
|
||||
</script>
|
||||
<script src="res-min/require.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -830,10 +830,15 @@ define([
|
||||
return function(e) {
|
||||
try {
|
||||
newLocalStorage = JSON.parse(e.target.result);
|
||||
if(/^v/.test(newLocalStorage.version) === false) {
|
||||
throw 1;
|
||||
// Compare localStorage version
|
||||
var newVersion = parseInt(newLocalStorage.version.match(/^v(\d+)$/)[1], 10);
|
||||
var currentVersion = parseInt(localStorage.version.match(/^v(\d+)$/)[1], 10);
|
||||
if(newVersion > currentVersion) {
|
||||
// We manage localStorage upgrade, not downgrade
|
||||
eventMgr.onError("Incompatible version. Please upgrade StackEdit.");
|
||||
} else {
|
||||
$('.modal-import-docs-settings').modal('show');
|
||||
}
|
||||
$('.modal-import-docs-settings').modal('show');
|
||||
}
|
||||
catch(e) {
|
||||
eventMgr.onError("Wrong format: " + importedFile.name);
|
||||
@ -889,7 +894,7 @@ define([
|
||||
trigger: 'hover',
|
||||
title: [
|
||||
'Thanks for supporting StackEdit by adding a backlink in your documents!<br/><br/>',
|
||||
'<b class="text-danger">NOTE: Backlinks are not welcome in Stack Exchange Q/A.</b>'
|
||||
'<b class="text-danger">NOTE: Backlinks in Stack Exchange Q/A are not welcome.</b>'
|
||||
].join('')
|
||||
});
|
||||
var tooltipOpen = false;
|
||||
|
@ -7,7 +7,7 @@ define([
|
||||
"eventMgr",
|
||||
"fileSystem",
|
||||
"classes/FileDescriptor",
|
||||
"text!../WELCOME.md"
|
||||
"text!WELCOME.md"
|
||||
], function($, _, core, utils, settings, eventMgr, fileSystem, FileDescriptor, welcomeContent) {
|
||||
|
||||
var fileMgr = {};
|
||||
|
@ -52,7 +52,7 @@
|
||||
</button>
|
||||
<div class="panel-content">
|
||||
<div class="list-group">
|
||||
<a href="viewer.html" title="StackEdit Viewer"
|
||||
<a href="viewer" title="StackEdit Viewer"
|
||||
class="list-group-item"><i class="icon-resize-full"></i>
|
||||
StackEdit Viewer</a> <a href="#" data-toggle="collapse"
|
||||
data-target=".collapse-open-from" class="list-group-item"><i
|
||||
@ -1046,6 +1046,8 @@
|
||||
data-target=".modal-app-reset"><i
|
||||
class="icon-fire icon-white"></i> Reset application</a>
|
||||
</div>
|
||||
<span class="help-block text-center"><a target="_blank"
|
||||
href="http://benweet.github.io/stackedit/recovery.html">Old platform recovery</a></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
||||
</p>
|
||||
<blockquote>
|
||||
<b>NOTE:</b> You can open any URL within StackEdit using <a
|
||||
href="viewer.html#!url=https://raw.github.com/benweet/stackedit/master/README.md"
|
||||
title="Sharing example"><code>viewer.html#!url=...</code></a>
|
||||
href="viewer#!url=https://raw.github.com/benweet/stackedit/master/README.md"
|
||||
title="Sharing example"><code>viewer#!url=...</code></a>
|
||||
</blockquote>
|
||||
</div>
|
||||
|
@ -1,4 +1,4 @@
|
||||
<a href="viewer.html" class="btn btn-default dropdown-toggle"
|
||||
<a href="viewer" class="btn btn-default dropdown-toggle"
|
||||
title="Open in viewer">
|
||||
<i class="icon-resize-full"></i>
|
||||
</a>
|
||||
|
@ -33,6 +33,7 @@ define(function(require, exports, module) {
|
||||
|
||||
var lang = require("ace/lib/lang");
|
||||
var config = require("ace/config");
|
||||
var Range = require('ace/range').Range
|
||||
|
||||
function bindKey(win, mac) {
|
||||
return {
|
||||
@ -283,10 +284,12 @@ exports.commands = [{
|
||||
name: "indent",
|
||||
bindKey: bindKey("Tab", "Tab"),
|
||||
exec: function(editor) {
|
||||
var rowIndex = editor.$getSelectedRows().last;
|
||||
var rowText = editor.session.getLine(rowIndex);
|
||||
var rowState = editor.session.getState(rowIndex);
|
||||
if((rowState == "listblock" || rowState == "listblock-start") && /^\s*(?:[-+*]|\d+\.)\s+$/.test(rowText)) {
|
||||
// Perform block indent if the caret is at the begining of a list item
|
||||
var selectionRange = editor.getSelectionRange();
|
||||
var range = new Range(selectionRange.end.row, 0, selectionRange.end.row, selectionRange.end.column);
|
||||
var startText = editor.session.getTextRange(range);
|
||||
var token = editor.session.getTokenAt(selectionRange.end.row, selectionRange.end.column);
|
||||
if(token.type == "markup.list" && /^\s*(?:[-+*]|\d+\.)\s+$/.test(startText)) {
|
||||
editor.blockIndent();
|
||||
}
|
||||
else {
|
||||
|
@ -1,200 +1,158 @@
|
||||
// RequireJS configuration
|
||||
requirejs.config({
|
||||
waitSeconds: 0,
|
||||
packages: [
|
||||
{
|
||||
name: 'ace',
|
||||
location: 'bower-libs/ace/lib/ace',
|
||||
main: 'ace'
|
||||
},
|
||||
{
|
||||
name: 'css',
|
||||
location: 'bower-libs/require-css',
|
||||
main: 'css'
|
||||
},
|
||||
{
|
||||
name: 'less',
|
||||
location: 'bower-libs/require-less',
|
||||
main: 'less'
|
||||
}
|
||||
],
|
||||
paths: {
|
||||
jquery: 'bower-libs/jquery/jquery',
|
||||
underscore: 'bower-libs/underscore/underscore',
|
||||
crel: 'bower-libs/crel/crel',
|
||||
jgrowl: 'bower-libs/jgrowl/jquery.jgrowl',
|
||||
mousetrap: 'bower-libs/mousetrap/mousetrap',
|
||||
'mousetrap-record': 'bower-libs/mousetrap/plugins/record/mousetrap-record',
|
||||
toMarkdown: 'bower-libs/to-markdown/src/to-markdown',
|
||||
text: 'bower-libs/requirejs-text/text',
|
||||
mathjax: '../libs/MathJax/MathJax.js?config=TeX-AMS_HTML',
|
||||
bootstrap: 'bower-libs/bootstrap/dist/js/bootstrap',
|
||||
requirejs: 'bower-libs/requirejs/require',
|
||||
'google-code-prettify': 'bower-libs/google-code-prettify/src/prettify',
|
||||
highlightjs: 'bower-libs/highlightjs/highlight.pack',
|
||||
'jquery-waitforimages': 'bower-libs/waitForImages/src/jquery.waitforimages',
|
||||
'jquery-ui': 'bower-libs/jquery-ui/ui/jquery-ui',
|
||||
'jquery-ui-core': 'bower-libs/jquery-ui/ui/jquery.ui.core',
|
||||
'jquery-ui-widget': 'bower-libs/jquery-ui/ui/jquery.ui.widget',
|
||||
'jquery-ui-mouse': 'bower-libs/jquery-ui/ui/jquery.ui.mouse',
|
||||
'jquery-ui-draggable': 'bower-libs/jquery-ui/ui/jquery.ui.draggable',
|
||||
'jquery-ui-effect': 'bower-libs/jquery-ui/ui/jquery.ui.effect',
|
||||
'jquery-ui-effect-slide': 'bower-libs/jquery-ui/ui/jquery.ui.effect-slide',
|
||||
uilayout: 'libs/layout',
|
||||
FileSaver: 'bower-libs/FileSaver/FileSaver',
|
||||
stacktrace: 'bower-libs/stacktrace/stacktrace',
|
||||
'requirejs-text': 'bower-libs/requirejs-text/text',
|
||||
'bootstrap-tour': 'bower-libs/bootstrap-tour/build/js/bootstrap-tour',
|
||||
css_browser_selector: 'bower-libs/css_browser_selector/css_browser_selector',
|
||||
'jquery-mousewheel': 'bower-libs/jquery-mousewheel/jquery.mousewheel',
|
||||
'pagedown-ace': 'bower-libs/pagedown-ace/Markdown.Editor',
|
||||
'pagedown-extra': 'bower-libs/pagedown-extra/Markdown.Extra',
|
||||
'ace/requirejs/text': 'libs/ace_text',
|
||||
'ace/commands/default_commands': 'libs/ace_commands',
|
||||
'require-css': 'bower-libs/require-css/css',
|
||||
xregexp: 'bower-libs/xregexp/xregexp-all',
|
||||
yaml: 'bower-libs/yaml.js',
|
||||
'yaml.js': 'bower-libs/yaml.js',
|
||||
'yaml-js': 'bower-libs/yaml.js/bin/yaml',
|
||||
Typo: 'bower-libs/Typo.js',
|
||||
'Typo.js': 'bower-libs/Typo.js'
|
||||
},
|
||||
shim: {
|
||||
underscore: {
|
||||
exports: '_'
|
||||
},
|
||||
mathjax: [
|
||||
'libs/mathjax_init'
|
||||
],
|
||||
jgrowl: {
|
||||
deps: [
|
||||
'jquery'
|
||||
],
|
||||
exports: 'jQuery.jGrowl'
|
||||
},
|
||||
mousetrap: {
|
||||
exports: 'Mousetrap'
|
||||
},
|
||||
'yaml-js': {
|
||||
exports: 'YAML'
|
||||
},
|
||||
'bootstrap-record': [
|
||||
'mousetrap'
|
||||
],
|
||||
toMarkdown: {
|
||||
deps: [
|
||||
'jquery'
|
||||
],
|
||||
exports: 'toMarkdown'
|
||||
},
|
||||
'bootstrap-tour': [
|
||||
'bootstrap'
|
||||
],
|
||||
bootstrap: [
|
||||
'jquery'
|
||||
],
|
||||
'jquery-waitforimages': [
|
||||
'jquery'
|
||||
],
|
||||
'jquery-mousewheel': [
|
||||
'jquery'
|
||||
],
|
||||
uilayout: [
|
||||
'jquery-ui-effect-slide'
|
||||
],
|
||||
'jquery-ui-effect-slide': [
|
||||
'jquery-ui-effect'
|
||||
],
|
||||
'jquery-ui-effect': [
|
||||
'jquery-ui-draggable'
|
||||
],
|
||||
'jquery-ui-draggable': [
|
||||
'jquery-ui-mouse'
|
||||
],
|
||||
'jquery-ui-mouse': [
|
||||
'jquery-ui-widget'
|
||||
],
|
||||
'jquery-ui-widget': [
|
||||
'jquery-ui-core'
|
||||
],
|
||||
'jquery-ui-core': [
|
||||
'jquery'
|
||||
],
|
||||
'pagedown-extra': [
|
||||
'pagedown-ace',
|
||||
'google-code-prettify',
|
||||
'highlightjs'
|
||||
],
|
||||
'pagedown-ace': [
|
||||
'bower-libs/pagedown-ace/Markdown.Converter'
|
||||
]
|
||||
}
|
||||
});
|
||||
|
||||
// Defines the logger object
|
||||
var logger = {
|
||||
log: function() {
|
||||
},
|
||||
info: function() {
|
||||
},
|
||||
warn: function() {
|
||||
},
|
||||
error: function() {
|
||||
}
|
||||
};
|
||||
// We can run StackEdit with http://.../?console to print logs in the console
|
||||
if(/(\?|&)console($|&)/.test(location.search)) {
|
||||
logger = console;
|
||||
}
|
||||
|
||||
// Viewer mode is deduced from the body class
|
||||
var viewerMode = /(^| )viewer($| )/.test(document.body.className);
|
||||
|
||||
// Light mode is for mobile or viewer
|
||||
var lightMode =
|
||||
viewerMode
|
||||
|| /(\?|&)light($|&)/.test(location.search)
|
||||
|| (function(a) {
|
||||
if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|android|ipad|playbook|silk/i.test(a)
|
||||
|| /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i
|
||||
.test(a.substr(0, 4)))
|
||||
return true;
|
||||
})(navigator.userAgent || navigator.vendor || window.opera);
|
||||
|
||||
// Keep the theme in a global variable
|
||||
var theme = localStorage.theme || 'default';
|
||||
var themeModule = "less!themes/" + theme;
|
||||
if(baseDir.indexOf('-min') !== -1) {
|
||||
themeModule = "css!themes/" + theme;
|
||||
}
|
||||
|
||||
// RequireJS entry point. By requiring synchronizer, publisher and
|
||||
// media-importer, we are actually loading all the modules
|
||||
require([
|
||||
"jquery",
|
||||
"core",
|
||||
"eventMgr",
|
||||
"synchronizer",
|
||||
"publisher",
|
||||
"mediaImporter",
|
||||
"css",
|
||||
themeModule,
|
||||
], function($, core, eventMgr) {
|
||||
|
||||
$(function() {
|
||||
|
||||
// Here, all the modules are loaded and the DOM is ready
|
||||
core.onReady();
|
||||
|
||||
// If browser has detected a new application cache.
|
||||
if(window.applicationCache) {
|
||||
window.applicationCache.addEventListener('updateready', function(e) {
|
||||
if(window.applicationCache.status === window.applicationCache.UPDATEREADY) {
|
||||
window.applicationCache.swapCache();
|
||||
eventMgr.onMessage('New version available!\nJust refresh the page to upgrade.');
|
||||
}
|
||||
}, false);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
// RequireJS configuration
|
||||
requirejs.config({
|
||||
waitSeconds: 0,
|
||||
packages: [{
|
||||
name: 'ace',
|
||||
location: 'bower-libs/ace/lib/ace',
|
||||
main: 'ace'
|
||||
}, {
|
||||
name: 'css',
|
||||
location: 'bower-libs/require-css',
|
||||
main: 'css'
|
||||
}, {
|
||||
name: 'less',
|
||||
location: 'bower-libs/require-less',
|
||||
main: 'less'
|
||||
}],
|
||||
paths: {
|
||||
jquery: 'bower-libs/jquery/jquery',
|
||||
underscore: 'bower-libs/underscore/underscore',
|
||||
crel: 'bower-libs/crel/crel',
|
||||
jgrowl: 'bower-libs/jgrowl/jquery.jgrowl',
|
||||
mousetrap: 'bower-libs/mousetrap/mousetrap',
|
||||
'mousetrap-record': 'bower-libs/mousetrap/plugins/record/mousetrap-record',
|
||||
toMarkdown: 'bower-libs/to-markdown/src/to-markdown',
|
||||
text: 'bower-libs/requirejs-text/text',
|
||||
mathjax: '../libs/MathJax/MathJax.js?config=TeX-AMS_HTML',
|
||||
bootstrap: 'bower-libs/bootstrap/dist/js/bootstrap',
|
||||
requirejs: 'bower-libs/requirejs/require',
|
||||
'google-code-prettify': 'bower-libs/google-code-prettify/src/prettify',
|
||||
highlightjs: 'bower-libs/highlightjs/highlight.pack',
|
||||
'jquery-waitforimages': 'bower-libs/waitForImages/src/jquery.waitforimages',
|
||||
'jquery-ui': 'bower-libs/jquery-ui/ui/jquery-ui',
|
||||
'jquery-ui-core': 'bower-libs/jquery-ui/ui/jquery.ui.core',
|
||||
'jquery-ui-widget': 'bower-libs/jquery-ui/ui/jquery.ui.widget',
|
||||
'jquery-ui-mouse': 'bower-libs/jquery-ui/ui/jquery.ui.mouse',
|
||||
'jquery-ui-draggable': 'bower-libs/jquery-ui/ui/jquery.ui.draggable',
|
||||
'jquery-ui-effect': 'bower-libs/jquery-ui/ui/jquery.ui.effect',
|
||||
'jquery-ui-effect-slide': 'bower-libs/jquery-ui/ui/jquery.ui.effect-slide',
|
||||
uilayout: 'libs/layout',
|
||||
FileSaver: 'bower-libs/FileSaver/FileSaver',
|
||||
stacktrace: 'bower-libs/stacktrace/stacktrace',
|
||||
'requirejs-text': 'bower-libs/requirejs-text/text',
|
||||
'bootstrap-tour': 'bower-libs/bootstrap-tour/build/js/bootstrap-tour',
|
||||
css_browser_selector: 'bower-libs/css_browser_selector/css_browser_selector',
|
||||
'jquery-mousewheel': 'bower-libs/jquery-mousewheel/jquery.mousewheel',
|
||||
'pagedown-ace': 'bower-libs/pagedown-ace/Markdown.Editor',
|
||||
'pagedown-extra': 'bower-libs/pagedown-extra/Markdown.Extra',
|
||||
'ace/requirejs/text': 'libs/ace_text',
|
||||
'ace/commands/default_commands': 'libs/ace_commands',
|
||||
'require-css': 'bower-libs/require-css/css',
|
||||
xregexp: 'bower-libs/xregexp/xregexp-all',
|
||||
yaml: 'bower-libs/yaml.js',
|
||||
'yaml.js': 'bower-libs/yaml.js',
|
||||
'yaml-js': 'bower-libs/yaml.js/bin/yaml',
|
||||
Typo: 'bower-libs/Typo.js',
|
||||
'Typo.js': 'bower-libs/Typo.js'
|
||||
},
|
||||
shim: {
|
||||
underscore: {
|
||||
exports: '_'
|
||||
},
|
||||
mathjax: ['libs/mathjax_init'],
|
||||
jgrowl: {
|
||||
deps: ['jquery'],
|
||||
exports: 'jQuery.jGrowl'
|
||||
},
|
||||
mousetrap: {
|
||||
exports: 'Mousetrap'
|
||||
},
|
||||
'yaml-js': {
|
||||
exports: 'YAML'
|
||||
},
|
||||
'bootstrap-record': ['mousetrap'],
|
||||
toMarkdown: {
|
||||
deps: ['jquery'],
|
||||
exports: 'toMarkdown'
|
||||
},
|
||||
'bootstrap-tour': ['bootstrap'],
|
||||
bootstrap: ['jquery'],
|
||||
'jquery-waitforimages': ['jquery'],
|
||||
'jquery-mousewheel': ['jquery'],
|
||||
uilayout: ['jquery-ui-effect-slide'],
|
||||
'jquery-ui-effect-slide': ['jquery-ui-effect'],
|
||||
'jquery-ui-effect': ['jquery-ui-draggable'],
|
||||
'jquery-ui-draggable': ['jquery-ui-mouse'],
|
||||
'jquery-ui-mouse': ['jquery-ui-widget'],
|
||||
'jquery-ui-widget': ['jquery-ui-core'],
|
||||
'jquery-ui-core': ['jquery'],
|
||||
'pagedown-extra': ['pagedown-ace', 'google-code-prettify', 'highlightjs'],
|
||||
'pagedown-ace': ['bower-libs/pagedown-ace/Markdown.Converter']
|
||||
}
|
||||
});
|
||||
|
||||
// Check browser compatibility
|
||||
try {
|
||||
var test = 'seLocalStorageCheck';
|
||||
localStorage.setItem(test, test);
|
||||
localStorage.removeItem(test);
|
||||
var obj = {};
|
||||
Object.defineProperty(obj, 'prop', {
|
||||
get: function() {},
|
||||
set: function() {}
|
||||
});
|
||||
}
|
||||
catch (e) {
|
||||
alert('Your browser is not supported, sorry!');
|
||||
throw e;
|
||||
}
|
||||
|
||||
// Defines the logger object
|
||||
var logger = {
|
||||
log: function() {},
|
||||
info: function() {},
|
||||
warn: function() {},
|
||||
error: function() {}
|
||||
};
|
||||
// We can run StackEdit with http://.../?console to print logs in the console
|
||||
if (/(\?|&)console($|&)/.test(location.search)) {
|
||||
logger = console;
|
||||
}
|
||||
|
||||
// Viewer mode is deduced from the body class
|
||||
var viewerMode = /(^| )viewer($| )/.test(document.body.className);
|
||||
|
||||
// Light mode is for mobile or viewer
|
||||
var lightMode = viewerMode || /(\?|&)light($|&)/.test(location.search) || (function(a) {
|
||||
if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino|android|ipad|playbook|silk/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0, 4))) return true;
|
||||
})(navigator.userAgent || navigator.vendor || window.opera);
|
||||
|
||||
// Keep the theme in a global variable
|
||||
var theme = localStorage.theme || 'default';
|
||||
var themeModule = "less!themes/" + theme;
|
||||
if (baseDir.indexOf('-min') !== -1) {
|
||||
themeModule = "css!themes/" + theme;
|
||||
}
|
||||
|
||||
// RequireJS entry point. By requiring synchronizer, publisher and
|
||||
// media-importer, we are actually loading all the modules
|
||||
require(["jquery", "core", "eventMgr", "synchronizer", "publisher", "mediaImporter", "css",
|
||||
themeModule, ], function($, core, eventMgr) {
|
||||
|
||||
$(function() {
|
||||
|
||||
// Here, all the modules are loaded and the DOM is ready
|
||||
core.onReady();
|
||||
|
||||
// If browser has detected a new application cache.
|
||||
if (window.applicationCache) {
|
||||
window.applicationCache.addEventListener('updateready', function(e) {
|
||||
if (window.applicationCache.status === window.applicationCache.UPDATEREADY) {
|
||||
window.applicationCache.swapCache();
|
||||
eventMgr.onMessage('New version available!\nJust refresh the page to upgrade.');
|
||||
}
|
||||
}, false);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
@ -45,7 +45,7 @@ define([
|
||||
}
|
||||
var url = [
|
||||
MAIN_URL,
|
||||
'viewer.html#!provider=',
|
||||
'viewer#!provider=',
|
||||
provider.providerId
|
||||
];
|
||||
_.each(provider.sharingAttributes, function(attributeName) {
|
||||
|
@ -1,32 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html manifest="cache.manifest">
|
||||
<head>
|
||||
<title>StackEdit Viewer</title>
|
||||
<link rel="canonical"
|
||||
href="http://benweet.github.io/stackedit/viewer.html">
|
||||
<link rel="icon" href="res-min/img/stackedit-32.ico" type="image/x-icon">
|
||||
<link rel="shortcut icon" href="res-min/img/stackedit-32.ico"
|
||||
type="image/x-icon">
|
||||
<meta name="description"
|
||||
content="StackEdit is a free, open-source Markdown editor based on PageDown, the Markdown library used by Stack Overflow and the other Stack Exchange sites.">
|
||||
<meta name="author" content="Benoit Schweblin">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="msvalidate.01" content="5E47EE6F67B069C17E3CDD418351A612" />
|
||||
<script>
|
||||
// Use http://.../?debug to serve original JavaScript files instead of minified
|
||||
var baseDir = 'res';
|
||||
if(!/(\?|&)debug($|&)/.test(location.search)) {
|
||||
baseDir += '-min';
|
||||
}
|
||||
var require = {
|
||||
baseUrl: baseDir,
|
||||
deps: [
|
||||
'main'
|
||||
]
|
||||
};
|
||||
</script>
|
||||
<script src="res-min/require.js"></script>
|
||||
</head>
|
||||
<body class="viewer">
|
||||
</body>
|
||||
</html>
|
26
server.js
26
server.js
@ -1,6 +1,10 @@
|
||||
var express = require('express');
|
||||
var app = express();
|
||||
|
||||
// Configure ejs engine
|
||||
app.set('views', __dirname + '/views');
|
||||
app.engine('html', require('ejs').renderFile);
|
||||
|
||||
// Force HTTPS on stackedit.io
|
||||
app.all('*', function(req, res, next) {
|
||||
if (req.headers.host == 'stackedit.io' && req.headers['x-forwarded-proto'] != 'https') {
|
||||
@ -17,6 +21,28 @@ app.use(express.compress());
|
||||
// Serve static resources
|
||||
app.use(express.static(__dirname + '/public'));
|
||||
|
||||
// Serve index.html
|
||||
app.get('/', function (req, res) {
|
||||
res.render('index.html');
|
||||
});
|
||||
app.get('/index.html', function (req, res) {
|
||||
res.render('index.html');
|
||||
});
|
||||
|
||||
// Serve viewer.html
|
||||
app.get('/viewer', function (req, res) {
|
||||
res.render('viewer.html');
|
||||
});
|
||||
app.get('/viewer.html', function (req, res) {
|
||||
res.render('viewer.html');
|
||||
});
|
||||
|
||||
// Error 404
|
||||
app.use(function(req, res, next){
|
||||
res.status(404);
|
||||
res.render('error_404.html');
|
||||
});
|
||||
|
||||
// Listen on port 3000
|
||||
var port = process.env.PORT || 3000;
|
||||
app.listen(port, null, function() {
|
||||
|
21
views/error_404.html
Normal file
21
views/error_404.html
Normal file
@ -0,0 +1,21 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>StackEdit - Error 404</title>
|
||||
<link rel="canonical" href="https://stackedit.io/">
|
||||
<link rel="icon" href="res-min/img/stackedit-32.ico" type="image/x-icon">
|
||||
<link rel="shortcut icon" href="res-min/img/stackedit-32.ico" type="image/x-icon">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" type="text/css" href="res-min/themes/default.css">
|
||||
</head>
|
||||
|
||||
<body class="text-center">
|
||||
<br/>
|
||||
<p>
|
||||
<a href="https://stackedit.io"><img src="res-min/img/stackedit-promo.png" width="240" height="60" /></a>
|
||||
</p>
|
||||
<p>404 — Page not found</p>
|
||||
</body>
|
||||
|
||||
</html>
|
30
views/index.html
Normal file
30
views/index.html
Normal file
@ -0,0 +1,30 @@
|
||||
<!DOCTYPE html>
|
||||
<html manifest="cache.manifest">
|
||||
|
||||
<head>
|
||||
<title>StackEdit - Markdown editor</title>
|
||||
<link rel="canonical" href="https://stackedit.io/">
|
||||
<link rel="icon" href="res-min/img/stackedit-32.ico" type="image/x-icon">
|
||||
<link rel="shortcut icon" href="res-min/img/stackedit-32.ico" type="image/x-icon">
|
||||
<meta name="description" content="StackEdit is a free, open-source Markdown editor based on PageDown, the Markdown library used by Stack Overflow and the other Stack Exchange sites.">
|
||||
<meta name="author" content="Benoit Schweblin">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="msvalidate.01" content="5E47EE6F67B069C17E3CDD418351A612"
|
||||
/>
|
||||
<script>
|
||||
// Use ?debug to serve original JavaScript files instead of minified
|
||||
var baseDir = 'res';
|
||||
if (!/(\?|&)debug($|&)/.test(location.search)) {
|
||||
baseDir += '-min';
|
||||
}
|
||||
var require = {
|
||||
baseUrl: baseDir,
|
||||
deps: ['main']
|
||||
};
|
||||
</script>
|
||||
<script src="res-min/require.js"></script>
|
||||
</head>
|
||||
|
||||
<body></body>
|
||||
|
||||
</html>
|
30
views/viewer.html
Normal file
30
views/viewer.html
Normal file
@ -0,0 +1,30 @@
|
||||
<!DOCTYPE html>
|
||||
<html manifest="cache.manifest">
|
||||
|
||||
<head>
|
||||
<title>StackEdit Viewer</title>
|
||||
<link rel="canonical" href="https://stackedit.io/viewer">
|
||||
<link rel="icon" href="res-min/img/stackedit-32.ico" type="image/x-icon">
|
||||
<link rel="shortcut icon" href="res-min/img/stackedit-32.ico" type="image/x-icon">
|
||||
<meta name="description" content="StackEdit is a free, open-source Markdown editor based on PageDown, the Markdown library used by Stack Overflow and the other Stack Exchange sites.">
|
||||
<meta name="author" content="Benoit Schweblin">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="msvalidate.01" content="5E47EE6F67B069C17E3CDD418351A612"
|
||||
/>
|
||||
<script>
|
||||
// Use ?debug to serve original JavaScript files instead of minified
|
||||
var baseDir = 'res';
|
||||
if (!/(\?|&)debug($|&)/.test(location.search)) {
|
||||
baseDir += '-min';
|
||||
}
|
||||
var require = {
|
||||
baseUrl: baseDir,
|
||||
deps: ['main']
|
||||
};
|
||||
</script>
|
||||
<script src="res-min/require.js"></script>
|
||||
</head>
|
||||
|
||||
<body class="viewer"></body>
|
||||
|
||||
</html>
|
Loading…
Reference in New Issue
Block a user