X-Git-Url: http://git.bytex64.net/?a=blobdiff_plain;f=www%2Fjs%2Fblerg.js;h=b882dd9944425567d01f6844138216e8955978d0;hb=e5ddf802919d8f9d123d02b14602a98168c7bf6f;hp=d227a7a0e5f24f875ec7acf2b697d201f8d3fe8a;hpb=d4ad5c4cff7183fdbac1c47f3ab0fa1db204397b;p=blerg.git diff --git a/www/js/blerg.js b/www/js/blerg.js index d227a7a..b882dd9 100644 --- a/www/js/blerg.js +++ b/www/js/blerg.js @@ -5,10 +5,10 @@ // Config var baseURL = ''; var recordTemplate = new Template( - '
#{data}
Posted #{date}. [permalink]
' + '
#{data}
Posted #{date}. [permalink] [reply]
' ); var tagRecordTemplate = new Template( - '
#{data}
Posted by @#{author} on #{date}
' + '
#{data}
Posted by @#{author} on #{date}. [permalink] [reply]
' ); var latestRecordsTemplate = new Template( '
@#{author} #{data}
' @@ -209,18 +209,38 @@ Pager.prototype.showRecord = function(r) { } } +Pager.prototype.loadItems = function(from, to, continuation) { } + // Object to render user pages function User(username) { this.initPager(); this.username = username; this.baseFrag = username; +} +User.prototype = new Pager(); +User.prototype.constructor = User; + +User.prototype.show = function() { + $$('[name=section]').each(function(v) { v.update(' @' + this.username) }.bind(this)); + $('welcome').hide(); + items.show(); + $('rss').show(); + $('rsslink').href = '/rss/' + this.username; + $$('[name=user.reflink]').each(function(e) { + e.href = '/#/ref/' + this.username; + }.bind(this)); + $('usercontrols').show(); +} + +User.prototype.reload = function() { + this.pageStart = null; $$('[name=user.subscribelink]').each(Element.hide); $$('[name=user.unsubscribelink]').each(Element.hide); if (loginStatus.loggedIn) { - new Ajax.Request(baseURL + '/feedinfo/' + username, { + new Ajax.Request(baseURL + '/feedinfo/' + this.username, { method: 'post', parameters: { username: loginStatus.username @@ -238,7 +258,7 @@ function User(username) { }); } - new Ajax.Request(baseURL + '/info/' + username, { + new Ajax.Request(baseURL + '/info/' + this.username, { method: 'get', onSuccess: function(r) { var j = r.responseText.evalJSON(); @@ -250,20 +270,6 @@ function User(username) { }.bind(this) }); } -User.prototype = new Pager(); -User.prototype.constructor = User; - -User.prototype.show = function() { - $$('[name=section]').each(function(v) { v.update(' @' + this.username) }.bind(this)); - $('welcome').hide(); - items.show(); - $('rss').show(); - $('rsslink').href = '/rss/' + this.username; - $$('[name=user.reflink]').each(function(e) { - e.href = '/#/ref/' + this.username; - }.bind(this)); - $('usercontrols').show(); -} User.prototype.loadItems = function(from, to, continuation) { var url; @@ -344,12 +350,9 @@ function mangleRecord(record, template) { l = l.replace(/([^\w\\]|^)\*\*(\w[^*]*)\*\*(\W|$)/g, '$1$2$3'); l = l.replace(/([^\w\\]|^)\*(\w[^*]*)\*(\W|$)/g, '$1$2$3'); - // Remove backslashes from escaped metachars - l = l.replace(/\\([*\[\]])/g, '$1'); - // Turn refs and tags into links l = l.replace(/(\s|^)#([A-Za-z0-9_-]+)/g, '$1#$2'); - l = l.replace(/(\s|^)@([A-Za-z0-9_-]+)/g, '$1@$2'); + l = l.replace(/(\s|^)@([A-Za-z0-9_-]+)(\/\d+)?/g, '$1@$2'); // Create lists when lines begin with * if (l[0] == '*') { @@ -374,6 +377,9 @@ function mangleRecord(record, template) { } } + // Remove backslashes from escaped metachars + l = l.replace(/\\([*\[\]@#])/g, '$1'); + out.push(l); if (endpush) { out.push(endpush); @@ -508,14 +514,16 @@ Feed.prototype.show = function() { } -function postPopup() { - if (loginStatus.loggedIn) { +function postPopup(initial) { + if (loginStatus.loggedIn || initial) { var post = $('post'); if (post.visible()) { post.hide(); } else { post.show(); - if (currentPager.username && currentPager.username != loginStatus.username && !$('post.content').value) { + if (initial) { + $('post.content').value = initial; + } else if (!$('post.content').value && currentPager.username && currentPager.username != loginStatus.username) { $('post.content').value = '@' + currentPager.username + ': '; } $('post.content').focus(); @@ -714,6 +722,8 @@ function hashSwitch() { if (m[3]) { var r = parseInt(m[3]); currentPager.showPageAt(r); + } else { + currentPager.showPageAt(currentPager.itemCount - 1); } } else if (m = location.hash.match(/^#\/feed(?:\/p(\d+))?$/)) { if (loginStatus.loggedIn) { @@ -723,6 +733,8 @@ function hashSwitch() { if (m[3]) { var r = parseInt(m[3]); currentPager.showPageAt(r); + } else { + currentPager.showPageAt(currentPager.itemCount - 1); } } else { location.href = baseURL; @@ -740,8 +752,9 @@ function hashSwitch() { } else { currentPager.showRecord(r); } + } else { + currentPager.reload(); } - // Do nothing otherwise, the User constructor takes care of it } else { $$('[name=section]').each(function(v) { v.update('Welcome') }); $('signup').hide();