X-Git-Url: http://git.bytex64.net/?a=blobdiff_plain;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); }