X-Git-Url: http://git.bytex64.net/?a=blobdiff_plain;ds=sidebyside;f=www%2Fjs%2Fblerg.js;h=205c5a9ee594b2f5c58be802600735a88bc4cde5;hb=acfedd7b7e02875fdc6a85fdcb080771da24961d;hp=d6081eb7859e4ed8f42e31b8b8dbf880a0451e0b;hpb=bddb3452818c4bb33195452f75c5667c207474a2;p=blerg.git
diff --git a/www/js/blerg.js b/www/js/blerg.js
index d6081eb..205c5a9 100644
--- a/www/js/blerg.js
+++ b/www/js/blerg.js
@@ -39,7 +39,7 @@ LoginStatus.prototype.login = function(username, password) {
new Ajax.Request(baseURL + '/login', {
parameters: {
username: username,
- password: password,
+ password: password
},
onSuccess: function(r) {
var j = r.responseText.evalJSON();
@@ -64,13 +64,13 @@ LoginStatus.prototype.login = function(username, password) {
LoginStatus.prototype.logout = function() {
new Ajax.Request(baseURL + '/logout', {
parameters: {
- username: this.username,
+ username: this.username
},
onSuccess: function(r) {
this.loggedIn = false;
document.cookie = "auth=; expires=1-Jan-1970 00:00:00 GMT";
this.update();
- }.bind(this),
+ }.bind(this)
});
document.cookie = "username=; expires=1-Jan-1970 00:00:00 GMT";
}
@@ -79,6 +79,7 @@ LoginStatus.prototype.update = function() {
if (this.loggedIn) {
$('userlink').href = '/#' + this.username;
$('userlink').update('@' + this.username);
+ $('reflink').href = '/#ref/' + this.username;
$('login').hide();
$('logout').show();
} else {
@@ -104,7 +105,7 @@ LoginStatus.prototype.post = function(msg) {
if (j && j.status == 'success') {
$('post.content').value = '';
if (location.hash != '#' + this.username) {
- location.hash = this.username;
+ location.href = '/#' + this.username;
hashSwitch();
} else {
currentPager.itemCount++;
@@ -192,7 +193,7 @@ function User(username) {
this.itemCount = parseInt(j.record_count);
this.displayItems();
}
- }.bind(this),
+ }.bind(this)
});
}
User.prototype = new Pager();
@@ -202,7 +203,6 @@ User.prototype.show = function() {
$$('[name=section]').each(function(v) { v.update(' @' + this.username) }.bind(this));
$('welcome').hide();
items.show();
- $('reflink').href = '/#ref/' + this.username;
$('rss').show();
$('rsslink').href = '/rss/' + this.username;
}
@@ -244,13 +244,17 @@ function mangleRecord(record, template) {
record.recInt = parseInt(record.record);
// Sanitize HTML input
- record.data = record.data.replace('&', '&').replace('<', '<').replace('>', '>');
+ record.data = record.data.replace(/&/g, '&').replace(//g, '>');
// Turn HTTP URLs into links
- record.data = record.data.replace(/(\s|^)(https?:\/\/[a-zA-Z0-9.-]*[a-zA-Z0-9](\/(\S*[^.!,;?()\s])?)?)/g, '$1$2');
+ record.data = record.data.replace(/(\s|^)(https?:\/\/[a-zA-Z0-9.-]*[a-zA-Z0-9](\/([^\s"]*[^.!,;?()\s])?)?)/g, '$1$2');
// Turn markdown links into links
- record.data = record.data.replace(/(\s|^)\[([^\]]+)\]\((https?:\/\/[a-zA-Z0-9.-]*[a-zA-Z0-9](\/[^)]*?)?)\)/, '$1$2');
+ record.data = record.data.replace(/(\s|^)\[([^\]]+)\]\((https?:\/\/[a-zA-Z0-9.-]*[a-zA-Z0-9](\/[^)"]*?)?)\)/g, '$1$2');
+
+ // Turn *foo* into italics and **foo** into bold
+ record.data = record.data.replace(/(\s)\*\*([^*]+)\*\*(\s)/g, '$1$2$3');
+ record.data = record.data.replace(/(\s)\*([^*]+)\*(\s)/g, '$1$2$3');
// Turn refs and tags into links
record.data = record.data.replace(/(\s|^)#(\w+)/g, '$1#$2');
@@ -349,11 +353,11 @@ function signup() {
new Ajax.Request(baseURL + '/create', {
parameters: {
username: username,
- password: password,
+ password: password
},
onSuccess: function(r) {
$('signup').hide();
- location.hash = username;
+ location.href = '/#' + username;
hashSwitch();
loginStatus.login(username, password);
@@ -398,6 +402,32 @@ function resizePostContent() {
}, 150);
}
+function loadNewThings() {
+ new Ajax.Request(baseURL + '/newtags.json', {
+ onSuccess: function(r) {
+ $('newtags').update();
+ r.responseText.evalJSON().each(function(v) {
+ var a = new Element('a', {href: '/#tag/' + v});
+ a.insert('#' + v);
+ $('newtags').insert(a);
+ $('newtags').insert(new Element('br'));
+ });
+ }
+ });
+
+ new Ajax.Request(baseURL + '/newusers.json', {
+ onSuccess: function(r) {
+ $('newusers').update();
+ r.responseText.evalJSON().each(function(v) {
+ var a = new Element('a', {href: '/#' + v});
+ a.insert('@' + v);
+ $('newusers').insert(a);
+ $('newusers').insert(new Element('br'));
+ });
+ }
+ });
+}
+
function hashSwitch() {
var m;
if (m = location.search.match(/^\?post\/([^/]+)\/(.+)/)) {
@@ -433,6 +463,7 @@ function hashSwitch() {
$('older_link').hide();
$('welcome').show();
$('rss').hide();
+ loadNewThings();
}
}
@@ -459,4 +490,7 @@ function init() {
event.stop();
}
});
+ $('post.content').addEventListener('keyup', function(event) {
+ event.stopPropagation();
+ }, true);
}