Landing page (final)
This commit is contained in:
parent
85ecad60c1
commit
16c45a1795
44
app/index.js
44
app/index.js
@ -1,8 +1,10 @@
|
|||||||
var express = require('express');
|
var express = require('express');
|
||||||
var app = express();
|
var app = express();
|
||||||
|
var compression = require('compression');
|
||||||
|
var serveStatic = require('serve-static');
|
||||||
|
|
||||||
// Configure ejs engine
|
// Configure ejs engine
|
||||||
app.set('views', __dirname + '/../public');
|
app.set('views', __dirname + '/../views');
|
||||||
app.engine('html', require('ejs').renderFile);
|
app.engine('html', require('ejs').renderFile);
|
||||||
|
|
||||||
// Force HTTPS on stackedit.io
|
// Force HTTPS on stackedit.io
|
||||||
@ -15,28 +17,42 @@ app.all('*', function(req, res, next) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Use gzip compression
|
// Use gzip compression
|
||||||
app.use(express.compress());
|
app.use(compression());
|
||||||
|
|
||||||
// Serve static resources
|
// Serve static resources
|
||||||
app.use(express.static(__dirname + '/../public'));
|
app.use(serveStatic(__dirname + '/../public'));
|
||||||
|
|
||||||
// Serve editor.html in /viewer
|
|
||||||
app.get('/editor', function (req, res) {
|
|
||||||
res.render('editor.html');
|
|
||||||
});
|
|
||||||
|
|
||||||
// Serve viewer.html in /viewer
|
|
||||||
app.get('/viewer', function (req, res) {
|
|
||||||
res.render('viewer.html');
|
|
||||||
});
|
|
||||||
|
|
||||||
app.post('/pdfExport', require('./pdf').export);
|
app.post('/pdfExport', require('./pdf').export);
|
||||||
app.post('/sshPublish', require('./ssh').publish);
|
app.post('/sshPublish', require('./ssh').publish);
|
||||||
app.post('/picasaImportImg', require('./picasa').importImg);
|
app.post('/picasaImportImg', require('./picasa').importImg);
|
||||||
app.get('/downloadImport', require('./download').importPublic);
|
app.get('/downloadImport', require('./download').importPublic);
|
||||||
|
|
||||||
// Error 404
|
|
||||||
app.use(function(req, res, next) {
|
app.use(function(req, res, next) {
|
||||||
|
res.renderDebug = function(page) {
|
||||||
|
return res.render(page, {
|
||||||
|
cache: !req.query.hasOwnProperty('debug')
|
||||||
|
});
|
||||||
|
};
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
|
||||||
|
// Serve landing.html in /
|
||||||
|
app.get('/', function(req, res) {
|
||||||
|
res.renderDebug('landing.html');
|
||||||
|
});
|
||||||
|
|
||||||
|
// Serve editor.html in /viewer
|
||||||
|
app.get('/editor', function(req, res) {
|
||||||
|
res.renderDebug('editor.html');
|
||||||
|
});
|
||||||
|
|
||||||
|
// Serve viewer.html in /viewer
|
||||||
|
app.get('/viewer', function(req, res) {
|
||||||
|
res.renderDebug('viewer.html');
|
||||||
|
});
|
||||||
|
|
||||||
|
// Error 404
|
||||||
|
app.use(function(req, res) {
|
||||||
res.status(404);
|
res.status(404);
|
||||||
res.render('error_404.html');
|
res.render('error_404.html');
|
||||||
});
|
});
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
<head>
|
<head>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
|
|
||||||
var redirectUrl = location.href.substring(0, location.href.indexOf("html/gdrive-action.html")) + '/editor';
|
var redirectUrl = location.href.substring(0, location.href.indexOf("html/gdrive-action.html")) + 'editor';
|
||||||
var state = decodeURI((/state=(.+?)(&|$)/
|
var state = decodeURI((/state=(.+?)(&|$)/
|
||||||
.exec(location.search) || [ , null ])[1]);
|
.exec(location.search) || [ , null ])[1]);
|
||||||
if(state) {
|
if(state) {
|
||||||
|
@ -2,7 +2,7 @@ Welcome to StackEdit!
|
|||||||
===================
|
===================
|
||||||
|
|
||||||
|
|
||||||
Hello, I'm your first Markdown document in **StackEdit**[^stackedit]. Don't delete me, I'm very helpful! I can be recovered anyway in the **Utils** tab of the <i class="icon-cog"></i> **Settings** dialog.
|
Hey! I'm your first Markdown document in **StackEdit**[^stackedit]. Don't delete me, I'm very helpful! I can be recovered anyway in the **Utils** tab of the <i class="icon-cog"></i> **Settings** dialog.
|
||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
@ -159,14 +159,14 @@ Term 3
|
|||||||
|
|
||||||
### Fenced code blocks
|
### Fenced code blocks
|
||||||
|
|
||||||
GitHub's fenced code blocks[^gfm] are also supported with **Prettify** syntax highlighting:
|
GitHub's fenced code blocks are also supported with **Highlight.js** syntax highlighting:
|
||||||
|
|
||||||
```
|
```
|
||||||
// Foo
|
// Foo
|
||||||
var bar = 0;
|
var bar = 0;
|
||||||
```
|
```
|
||||||
|
|
||||||
> **Tip:** To use **Highlight.js** instead of **Prettify**, just configure the **Markdown Extra** extension in the <i class="icon-cog"></i> **Settings** dialog.
|
> **Tip:** To use **Prettify** instead of **Highlight.js**, just configure the **Markdown Extra** extension in the <i class="icon-cog"></i> **Settings** dialog.
|
||||||
|
|
||||||
> **Note:** You can find more information:
|
> **Note:** You can find more information:
|
||||||
|
|
||||||
@ -248,12 +248,10 @@ cond(no)->op
|
|||||||
|
|
||||||
### Support StackEdit
|
### Support StackEdit
|
||||||
|
|
||||||
[![](https://cdn.monetizejs.com/resources/button-38.png)](https://monetizejs.com/authorize?client_id=ESTHdCYOi18iLhhO&summary=true)
|
[![](https://cdn.monetizejs.com/resources/button-32.png)](https://monetizejs.com/authorize?client_id=ESTHdCYOi18iLhhO&summary=true)
|
||||||
|
|
||||||
[^stackedit]: [StackEdit](https://stackedit.io/) is a full-featured, open-source Markdown editor based on PageDown, the Markdown library used by Stack Overflow and the other Stack Exchange sites.
|
[^stackedit]: [StackEdit](https://stackedit.io/) is a full-featured, open-source Markdown editor based on PageDown, the Markdown library used by Stack Overflow and the other Stack Exchange sites.
|
||||||
|
|
||||||
[^gfm]: **GitHub Flavored Markdown** (GFM) is supported in StackEdit.
|
|
||||||
|
|
||||||
|
|
||||||
[1]: http://math.stackexchange.com/
|
[1]: http://math.stackexchange.com/
|
||||||
[2]: http://daringfireball.net/projects/markdown/syntax "Markdown"
|
[2]: http://daringfireball.net/projects/markdown/syntax "Markdown"
|
||||||
|
@ -28,7 +28,7 @@ define([
|
|||||||
});
|
});
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
tooltip.tooltip('hide').removeClass('info-tooltip').parent().removeClass('info-tooltip-container');
|
tooltip.tooltip('hide').removeClass('info-tooltip').parent().removeClass('info-tooltip-container');
|
||||||
}, 20000);
|
}, 30000);
|
||||||
}
|
}
|
||||||
|
|
||||||
var tour = new Tour({
|
var tour = new Tour({
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.0 KiB |
Binary file not shown.
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
Binary file not shown.
Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 5.3 KiB |
@ -279,7 +279,6 @@ table {
|
|||||||
table th,table td {
|
table th,table td {
|
||||||
padding: 8px;
|
padding: 8px;
|
||||||
line-height: 20px;
|
line-height: 20px;
|
||||||
text-align: left;
|
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
border-top: 1px solid #dddddd;
|
border-top: 1px solid #dddddd;
|
||||||
}
|
}
|
||||||
|
@ -503,18 +503,10 @@ a {
|
|||||||
|
|
||||||
.button-open-discussion {
|
.button-open-discussion {
|
||||||
&.some {
|
&.some {
|
||||||
color: lighten(@alert-warning-text, 8%);
|
color: lighten(@alert-warning-text, 8%) !important;
|
||||||
&:hover,
|
|
||||||
&:focus {
|
|
||||||
//color: @alert-warning-text;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
&.replied {
|
&.replied {
|
||||||
color: lighten(@alert-danger-text, 8%);
|
color: lighten(@alert-danger-text, 8%) !important;
|
||||||
&:hover,
|
|
||||||
&:focus {
|
|
||||||
//color: @alert-danger-text;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1155,6 +1147,11 @@ a {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.has-selection > .editor-margin .discussion.new {
|
||||||
|
display: inline-block;
|
||||||
|
color: fade(@tertiary-color, 25%);
|
||||||
|
}
|
||||||
|
|
||||||
&.font-monospaced * {
|
&.font-monospaced * {
|
||||||
font-family: @font-family-monospace !important;
|
font-family: @font-family-monospace !important;
|
||||||
line-height: @editor-line-weight !important;
|
line-height: @editor-line-weight !important;
|
||||||
|
28
public/sitemap.xml
Normal file
28
public/sitemap.xml
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||||
|
<url>
|
||||||
|
<loc>https://stackedit.io/</loc>
|
||||||
|
<changefreq>weekly</changefreq>
|
||||||
|
<priority>1.0</priority>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://stackedit.io/editor</loc>
|
||||||
|
<changefreq>weekly</changefreq>
|
||||||
|
<priority>1.0</priority>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://stackedit.io/viewer</loc>
|
||||||
|
<changefreq>weekly</changefreq>
|
||||||
|
<priority>0.8</priority>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://stackedit.io/privacy_policy.html</loc>
|
||||||
|
<changefreq>monthly</changefreq>
|
||||||
|
<priority>0.6</priority>
|
||||||
|
</url>
|
||||||
|
<url>
|
||||||
|
<loc>https://stackedit.io/recovery.html</loc>
|
||||||
|
<changefreq>monthly</changefreq>
|
||||||
|
<priority>0.6</priority>
|
||||||
|
</url>
|
||||||
|
</urlset>
|
31
views/editor.html
Normal file
31
views/editor.html
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html<%- cache ? ' manifest="cache.manifest"' : '' %>>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<title>StackEdit – Editor</title>
|
||||||
|
<link rel="canonical" href="https://stackedit.io/editor">
|
||||||
|
<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">
|
||||||
|
<link rel="shortcut icon" sizes="196x196" href="res-min/img/nice-highres.png">
|
||||||
|
<meta name="description" content="Full-featured, 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="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1">
|
||||||
|
<meta name="mobile-web-app-capable" content="yes">
|
||||||
|
<meta name="msvalidate.01" content="5E47EE6F67B069C17E3CDD418351A612">
|
||||||
|
<script>
|
||||||
|
// Use ?debug to serve original JavaScript files instead of minified
|
||||||
|
window.baseDir = 'res';
|
||||||
|
if (!/(\?|&)debug($|&)/.test(location.search)) {
|
||||||
|
window.baseDir += '-min';
|
||||||
|
}
|
||||||
|
window.require = {
|
||||||
|
baseUrl: window.baseDir,
|
||||||
|
deps: ['main']
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
<script src="res-min/require.js"></script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body></body>
|
||||||
|
|
||||||
|
</html>
|
22
views/error_404.html
Normal file
22
views/error_404.html
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<title>StackEdit - 404</title>
|
||||||
|
<link rel="canonical" href="https://stackedit.io/">
|
||||||
|
<link rel="icon" href="https://stackedit.io/res-min/img/stackedit-32.ico" type="image/x-icon">
|
||||||
|
<link rel="shortcut icon" href="https://stackedit.io/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="https://stackedit.io/res-min/themes/default.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body class="text-center">
|
||||||
|
<br/>
|
||||||
|
<p>
|
||||||
|
<a href="https://stackedit.io"><img src="https://stackedit.io/res-min/img/logo.svg" width="320" /></a>
|
||||||
|
</p>
|
||||||
|
<p>404 — Page not found</p>
|
||||||
|
<p><a href="/recovery.html">Looking for StackEdit recovery?</a></p>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
481
views/landing.html
Normal file
481
views/landing.html
Normal file
@ -0,0 +1,481 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html<%- cache ? ' manifest="cache.manifest"' : '' %>>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<title>StackEdit – In-browser 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="Full-featured, 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="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1">
|
||||||
|
<meta name="msvalidate.01" content="5E47EE6F67B069C17E3CDD418351A612">
|
||||||
|
<link rel="stylesheet" href="res-min/themes/default.css">
|
||||||
|
<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
font-size: 18px;
|
||||||
|
font-weight: 300;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-fixed {
|
||||||
|
position: fixed;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
position: absolute;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.slide {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer {
|
||||||
|
position: absolute;
|
||||||
|
top: inherit;
|
||||||
|
bottom: 0;
|
||||||
|
height: 50px;
|
||||||
|
width: 100%;
|
||||||
|
padding: 5px
|
||||||
|
}
|
||||||
|
|
||||||
|
.slide, .footer, h1 {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footer .btn {
|
||||||
|
font-size: 28px;
|
||||||
|
padding: 0 11px;
|
||||||
|
line-height: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.btn-info {
|
||||||
|
color: #777;
|
||||||
|
}
|
||||||
|
|
||||||
|
.centered {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
margin: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
width: 600px;
|
||||||
|
height: 160px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo img {
|
||||||
|
width: 600px;
|
||||||
|
height: 135px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo .subtitle {
|
||||||
|
position: absolute;
|
||||||
|
text-align: right;
|
||||||
|
color: #888;
|
||||||
|
top: 105px;
|
||||||
|
right: 10px;
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.transition {
|
||||||
|
-webkit-transition: all ease-in-out 1.5s;
|
||||||
|
transition: all ease-out 1.5s;
|
||||||
|
}
|
||||||
|
|
||||||
|
.transparent {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.scale {
|
||||||
|
-webkit-transform: scale(1.04);
|
||||||
|
-ms-transform: scale(1.04);
|
||||||
|
transform: scale(1.04);
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar .nav {
|
||||||
|
float: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar .btn {
|
||||||
|
font-size: 18px;
|
||||||
|
line-height: 1.25;
|
||||||
|
}
|
||||||
|
|
||||||
|
.img {
|
||||||
|
margin: 20px auto;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social {
|
||||||
|
font-size: 26px;
|
||||||
|
margin: 0 16px 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social i::before {
|
||||||
|
margin-right: 10px;
|
||||||
|
margin-left: -5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social a {
|
||||||
|
color: #555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social img {
|
||||||
|
width: 100px;
|
||||||
|
height: 25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container {
|
||||||
|
margin-bottom: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark {
|
||||||
|
background-color: #aeaeae;
|
||||||
|
}
|
||||||
|
|
||||||
|
.inset-shadow {
|
||||||
|
-webkit-box-shadow: inset 0 4px 16px rgba(0, 0, 0, 0.2);
|
||||||
|
box-shadow: inset 0 4px 16px rgba(0, 0, 0, 0.2);
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-img {
|
||||||
|
background-image: url(res-min/img/menu.png);
|
||||||
|
background-size: auto 240px;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: 30%;
|
||||||
|
height: 240px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown-img {
|
||||||
|
height: 150px;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
<script>
|
||||||
|
function animate(elts) {
|
||||||
|
Array.prototype.slice.call(elts).forEach(function(elt) {
|
||||||
|
elt.className = elt.className.replace(/(?:^|\s)(transparent|scale)(?!\S)/g , '');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
setTimeout(function() {
|
||||||
|
animate(document.querySelectorAll('.logo'));
|
||||||
|
}, 500);
|
||||||
|
setTimeout(function() {
|
||||||
|
animate(document.querySelectorAll('.logo .transparent, .footer .transparent'));
|
||||||
|
}, 1500);
|
||||||
|
|
||||||
|
$(function() {
|
||||||
|
function scrollTo(elt) {
|
||||||
|
return function(evt) {
|
||||||
|
evt.preventDefault();
|
||||||
|
$('html,body').animate({scrollTop: elt.offset().top}, 500);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
$('#scrollToSlide2').click(scrollTo($('#slide2')));
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div class="content">
|
||||||
|
<div class="slide modal-body" id="slide1">
|
||||||
|
<div class="navbar navbar-default navbar-fixed">
|
||||||
|
<div class="navbar-inner">
|
||||||
|
<div class="nav">
|
||||||
|
<a class="btn btn-success" href="editor" title="Editor"><i class="icon-pencil"></i> Start writing
|
||||||
|
now!</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="centered logo transition transparent scale">
|
||||||
|
<img src="res-min/img/logo.svg"/>
|
||||||
|
|
||||||
|
<div class="subtitle transition transparent scale">
|
||||||
|
In-browser markdown editor<br>
|
||||||
|
|
||||||
|
<div class="social">
|
||||||
|
<a href="https://twitter.com/stackedit" target="_blank"><i class="icon-twitter"></i></a>
|
||||||
|
<a href="https://github.com/benweet/stackedit" target="_blank"><i
|
||||||
|
class="icon-github-circled"></i></a>
|
||||||
|
<a href="https://monetizejs.com/authorize?client_id=ESTHdCYOi18iLhhO&summary=true"
|
||||||
|
target="_blank"><img src="res-min/img/button.svg"></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="footer preview-panel modal-footer">
|
||||||
|
<div class="transition transparent">
|
||||||
|
<a class="btn btn-info" id="scrollToSlide2" href="#slide2"><i class="icon-angle-down"></i></a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="slide2" class="modal-header">
|
||||||
|
<div class="container">
|
||||||
|
|
||||||
|
<h1 id="unrivalled-writing-experience">Unrivalled writing experience.</h1>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4 col-md-offset-4">
|
||||||
|
<hr>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-7">
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<img class="img modal-content" width="600" src="res-min/img/syntax-highlighting.gif">
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 col-md-offset-1">
|
||||||
|
<h2 id="rich-markdown-editor">Rich markdown editor</h2>
|
||||||
|
|
||||||
|
<p>StackEdit’s markdown syntax highlighting is unique. The refined text formatting of the editor
|
||||||
|
helps you
|
||||||
|
visualize the final rendering of your documents.</p>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h2 id="wysiwyg-control-buttons">WYSIWYG controls</h2>
|
||||||
|
|
||||||
|
<p>StackEdit provides very handy formatting buttons and shortcuts, thanks to PageDown, the
|
||||||
|
WYSIWYG-style markdown editor used by Stack Overflow.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4 col-md-offset-4">
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<hr>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6 col-md-offset-3">
|
||||||
|
<h2 id="live-preview-with-scroll-sync" class="text-center">Live preview with Scroll Sync</h2>
|
||||||
|
|
||||||
|
<p>StackEdit’s Scroll Sync extension accurately binds the scrollbars of the editor panel and the
|
||||||
|
preview panel to ensure that you always keep an eye on the output while writing.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<img class="img modal-content" width="600" src="res-min/img/live-preview.png">
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4 col-md-offset-1">
|
||||||
|
<h2 id="built-in-spell-checking">Built-in spell checking</h2>
|
||||||
|
|
||||||
|
<p>StackEdit uses browser’s built-in spell-checker to perform efficient, multi-language
|
||||||
|
spell-checking and correction suggestions.</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 col-md-offset-2">
|
||||||
|
<h2 id="fully-customizable">Fully customizable</h2>
|
||||||
|
|
||||||
|
<p>StackEdit has an infinite combinations of settings. Theme, layout, shortcuts can be
|
||||||
|
personalized. For the rest, StackEdit gives you the freedom to make your own extension…</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="dark inset-shadow menu-img">
|
||||||
|
</div>
|
||||||
|
<div id="slide3" class="modal-footer modal-header">
|
||||||
|
<div class="container">
|
||||||
|
|
||||||
|
|
||||||
|
<h1 id="designed-for-web-writing">Designed for web writers.</h1>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4 col-md-offset-4">
|
||||||
|
<hr>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-7">
|
||||||
|
<img class="img modal-content" width="600" src="res-min/img/publish.png">
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 col-md-offset-1">
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h2 id="publish-straight-to-your-blog">Straight to your blog</h2>
|
||||||
|
|
||||||
|
<p>StackEdit can upload your documents directly to Blogger, GitHub, Tumblr, WordPress… You can
|
||||||
|
choose
|
||||||
|
whether to upload in markdown format, HTML, or to format the output using Underscore template
|
||||||
|
engine.</p>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4 col-md-offset-4">
|
||||||
|
<hr>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4">
|
||||||
|
<h2 id="simultaneous-collaboration">Simultaneous collaboration</h2>
|
||||||
|
|
||||||
|
<p>Documents in StackEdit can be synchronized and shared through Google Drive and Dropbox. When two
|
||||||
|
collaborators are working on the same document at the same time, StackEdit takes care of merging
|
||||||
|
the
|
||||||
|
modifications.</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-7 col-md-offset-1">
|
||||||
|
<img class="img" width="600" src="res-min/img/comments.png">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
|
||||||
|
<div class="col-md-7">
|
||||||
|
<img class="img" width="600" src="res-min/img/conflict.png">
|
||||||
|
</div>
|
||||||
|
<div class="col-md-4 col-md-offset-1">
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h2 id="review-comments">Review comments</h2>
|
||||||
|
|
||||||
|
<p>StackEdit allows you to insert inline comments and embed collaborator discussions in your
|
||||||
|
documents, much
|
||||||
|
like Microsoft Word or Google Docs.</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4 col-md-offset-4">
|
||||||
|
<hr>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6 col-md-offset-3">
|
||||||
|
<h2 id="write-offline" class="text-center">Write offline!</h2>
|
||||||
|
|
||||||
|
<p>Even when you travel, StackEdit is still accessible and lets you write offline just like any
|
||||||
|
desktop application. Now you have no excuse!</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="dark inset-shadow markdown-img">
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<img class="background-img img" width="500" src="res-min/img/toc.gif">
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer modal-header">
|
||||||
|
<div class="container">
|
||||||
|
<h1 id="extended-markdown-support">Extended markdown support.</h1>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4 col-md-offset-4">
|
||||||
|
<hr>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-5">
|
||||||
|
<h2 id="github-flavored-markdown">GitHub Flavored Markdown</h2>
|
||||||
|
|
||||||
|
<p>StackEdit supports different markdown flavors such as Markdown Extra and GFM. Each
|
||||||
|
markdown feature can be enabled or disabled at your convenience.</p>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h2 id="latex-mathematical-expressions">LaTeX mathematical expressions</h2>
|
||||||
|
|
||||||
|
<p>StackEdit integrates MathJax to render mathematics from LaTeX expressions inside your markdown
|
||||||
|
document,
|
||||||
|
as you would do on Stack Exchange.</p>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<h2 id="uml-diagrams">UML diagrams</h2>
|
||||||
|
|
||||||
|
<p>StackEdit enables you to write sequence diagrams and flow charts using a simple syntax.</p>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6 col-md-offset-1">
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<img class="img" width="410" src="res-min/img/code-block.png">
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<img class="img" width="330" src="res-min/img/math.png">
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<img class="img" width="220" src="res-min/img/diagram.png">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
<br>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4 col-md-offset-4">
|
||||||
|
<hr>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="text-center">
|
||||||
|
<div class="social">
|
||||||
|
<a href="https://twitter.com/stackedit" target="_blank"><i class="icon-twitter"></i></a>
|
||||||
|
<a href="https://github.com/benweet/stackedit" target="_blank"><i
|
||||||
|
class="icon-github-circled"></i></a>
|
||||||
|
<a href="https://monetizejs.com/authorize?client_id=ESTHdCYOi18iLhhO&summary=true"
|
||||||
|
target="_blank"><img src="res-min/img/button.svg"></a>
|
||||||
|
</div>
|
||||||
|
Copyright 2013-2014 <a href="https://twitter.com/benweet" target="_blank">Benoit Schweblin</a><br>
|
||||||
|
Licensed under an <a target="_blank" href="http://www.apache.org/licenses/LICENSE-2.0">Apache
|
||||||
|
License</a><br>
|
||||||
|
<a href="privacy_policy.html" target="_blank">Privacy Policy</a><br>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
29
views/viewer.html
Normal file
29
views/viewer.html
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html<%- cache ? ' 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="Full-featured, 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="user-scalable=no, width=device-width, initial-scale=1, maximum-scale=1">
|
||||||
|
<meta name="msvalidate.01" content="5E47EE6F67B069C17E3CDD418351A612">
|
||||||
|
<script>
|
||||||
|
// Use ?debug to serve original JavaScript files instead of minified
|
||||||
|
window.baseDir = 'res';
|
||||||
|
if (!/(\?|&)debug($|&)/.test(location.search)) {
|
||||||
|
window.baseDir += '-min';
|
||||||
|
}
|
||||||
|
window.require = {
|
||||||
|
baseUrl: window.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