mirror of
https://github.com/toptal/haste-server.git
synced 2024-11-25 12:25:40 +01:00
Add base url support (#140)
This commit is contained in:
parent
ccc5049b07
commit
b52b394bad
@ -2,8 +2,9 @@
|
|||||||
|
|
||||||
///// represents a single document
|
///// represents a single document
|
||||||
|
|
||||||
var haste_document = function() {
|
var haste_document = function(app) {
|
||||||
this.locked = false;
|
this.locked = false;
|
||||||
|
this.app = app;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Escapes HTML tag characters
|
// Escapes HTML tag characters
|
||||||
@ -18,7 +19,7 @@ haste_document.prototype.htmlEscape = function(s) {
|
|||||||
// Get this document from the server and lock it here
|
// Get this document from the server and lock it here
|
||||||
haste_document.prototype.load = function(key, callback, lang) {
|
haste_document.prototype.load = function(key, callback, lang) {
|
||||||
var _this = this;
|
var _this = this;
|
||||||
$.ajax('/documents/' + key, {
|
$.ajax(_this.app.baseUrl + 'documents/' + key, {
|
||||||
type: 'get',
|
type: 'get',
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
success: function(res) {
|
success: function(res) {
|
||||||
@ -60,7 +61,7 @@ haste_document.prototype.save = function(data, callback) {
|
|||||||
}
|
}
|
||||||
this.data = data;
|
this.data = data;
|
||||||
var _this = this;
|
var _this = this;
|
||||||
$.ajax('/documents', {
|
$.ajax(_this.app.baseUrl + 'documents', {
|
||||||
type: 'post',
|
type: 'post',
|
||||||
data: data,
|
data: data,
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
@ -101,7 +102,8 @@ var haste = function(appName, options) {
|
|||||||
// If twitter is disabled, hide the button
|
// If twitter is disabled, hide the button
|
||||||
if (!options.twitter) {
|
if (!options.twitter) {
|
||||||
$('#box2 .twitter').hide();
|
$('#box2 .twitter').hide();
|
||||||
}
|
};
|
||||||
|
this.baseUrl = options.baseUrl || '/';
|
||||||
};
|
};
|
||||||
|
|
||||||
// Set the page title - include the appName
|
// Set the page title - include the appName
|
||||||
@ -148,9 +150,9 @@ haste.prototype.configureKey = function(enable) {
|
|||||||
// and set up for a new one
|
// and set up for a new one
|
||||||
haste.prototype.newDocument = function(hideHistory) {
|
haste.prototype.newDocument = function(hideHistory) {
|
||||||
this.$box.hide();
|
this.$box.hide();
|
||||||
this.doc = new haste_document();
|
this.doc = new haste_document(this);
|
||||||
if (!hideHistory) {
|
if (!hideHistory) {
|
||||||
window.history.pushState(null, this.appName, '/');
|
window.history.pushState(null, this.appName, this.baseUrl);
|
||||||
}
|
}
|
||||||
this.setTitle();
|
this.setTitle();
|
||||||
this.lightKey();
|
this.lightKey();
|
||||||
@ -209,7 +211,7 @@ haste.prototype.loadDocument = function(key) {
|
|||||||
var parts = key.split('.', 2);
|
var parts = key.split('.', 2);
|
||||||
// Ask for what we want
|
// Ask for what we want
|
||||||
var _this = this;
|
var _this = this;
|
||||||
_this.doc = new haste_document();
|
_this.doc = new haste_document(this);
|
||||||
_this.doc.load(parts[0], function(ret) {
|
_this.doc.load(parts[0], function(ret) {
|
||||||
if (ret) {
|
if (ret) {
|
||||||
_this.$code.html(ret.value);
|
_this.$code.html(ret.value);
|
||||||
@ -244,7 +246,7 @@ haste.prototype.lockDocument = function() {
|
|||||||
else if (ret) {
|
else if (ret) {
|
||||||
_this.$code.html(ret.value);
|
_this.$code.html(ret.value);
|
||||||
_this.setTitle(ret.key);
|
_this.setTitle(ret.key);
|
||||||
var file = '/' + ret.key;
|
var file = _this.baseUrl + ret.key;
|
||||||
if (ret.language) {
|
if (ret.language) {
|
||||||
file += '.' + _this.lookupExtensionByType(ret.language);
|
file += '.' + _this.lookupExtensionByType(ret.language);
|
||||||
}
|
}
|
||||||
@ -303,7 +305,7 @@ haste.prototype.configureButtons = function() {
|
|||||||
},
|
},
|
||||||
shortcutDescription: 'control + shift + r',
|
shortcutDescription: 'control + shift + r',
|
||||||
action: function() {
|
action: function() {
|
||||||
window.location.href = '/raw/' + _this.doc.key;
|
window.location.href = _this.baseUrl + 'raw/' + _this.doc.key;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -17,9 +17,9 @@
|
|||||||
var app = null;
|
var app = null;
|
||||||
// Handle pops
|
// Handle pops
|
||||||
var handlePop = function(evt) {
|
var handlePop = function(evt) {
|
||||||
var path = evt.target.location.pathname;
|
var path = evt.target.location.href;
|
||||||
if (path === '/') { app.newDocument(true); }
|
if (path === app.baseUrl) { app.newDocument(true); }
|
||||||
else { app.loadDocument(path.substring(1, path.length)); }
|
else { app.loadDocument(path.split('/').slice(-1)[0]); }
|
||||||
};
|
};
|
||||||
// Set up the pop state to handle loads, skipping the first load
|
// Set up the pop state to handle loads, skipping the first load
|
||||||
// to make chrome behave like others:
|
// to make chrome behave like others:
|
||||||
@ -31,7 +31,9 @@
|
|||||||
}, 1000);
|
}, 1000);
|
||||||
// Construct app and load initial path
|
// Construct app and load initial path
|
||||||
$(function() {
|
$(function() {
|
||||||
app = new haste('hastebin', { twitter: true });
|
var baseUrl = window.location.href.split('/');
|
||||||
|
baseUrl = baseUrl.slice(0, baseUrl.length - 1).join('/') + '/';
|
||||||
|
app = new haste('hastebin', { twitter: true, baseUrl: baseUrl });
|
||||||
handlePop({ target: window });
|
handlePop({ target: window });
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
@ -44,7 +46,7 @@
|
|||||||
<div id="key">
|
<div id="key">
|
||||||
<div id="pointer" style="display:none;"></div>
|
<div id="pointer" style="display:none;"></div>
|
||||||
<div id="box1">
|
<div id="box1">
|
||||||
<a href="/about.md" class="logo"></a>
|
<a href="about.md" class="logo"></a>
|
||||||
</div>
|
</div>
|
||||||
<div id="box2">
|
<div id="box2">
|
||||||
<button class="save function button-picture">Save</button>
|
<button class="save function button-picture">Save</button>
|
||||||
|
Loading…
Reference in New Issue
Block a user