Add base url support (#140)

This commit is contained in:
Claude Petit 2023-03-06 12:46:45 -05:00 committed by GitHub
parent ccc5049b07
commit b52b394bad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 14 deletions

View File

@ -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;
} }
}, },
{ {

View File

@ -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>