X-Git-Url: http://git.bytex64.net/?a=blobdiff_plain;f=www%2Fjs%2Fblerg.js;h=9f92594ba51b22777d5855bf0390d4854d0bb3b9;hb=f4bf2d2efc566e9f165b97bda72cd5a27e0d2b19;hp=1851a0fddb108caa64981c56f82e619c9e2d8ee4;hpb=4d7b8e8bc62f697e18c9eacfee42dc8d9873b820;p=blerg.git diff --git a/www/js/blerg.js b/www/js/blerg.js index 1851a0f..9f92594 100644 --- a/www/js/blerg.js +++ b/www/js/blerg.js @@ -188,6 +188,28 @@ function User(username) { this.initPager(); this.username = username; + $$('[name=user.obsesslink]').each(Element.hide); + $$('[name=user.unobsesslink]').each(Element.hide); + + if (loginStatus.loggedIn) { + new Ajax.Request(baseURL + '/feedinfo/' + username, { + method: 'post', + parameters: { + username: loginStatus.username + }, + onSuccess: function(r) { + var json = r.responseText.evalJSON(); + if (json.subscribed) { + $$('[name=user.obsesslink]').each(Element.hide); + $$('[name=user.unobsesslink]').each(Element.show); + } else { + $$('[name=user.obsesslink]').each(Element.show); + $$('[name=user.unobsesslink]').each(Element.hide); + } + } + }); + } + new Ajax.Request(baseURL + '/info/' + username, { method: 'get', onSuccess: function(r) { @@ -250,26 +272,82 @@ User.prototype.loadItems = function(from, to) { function mangleRecord(record, template) { record.recInt = parseInt(record.record); - // Sanitize HTML input - record.data = record.data.replace(/&/g, '&').replace(//g, '>'); + var lines = record.data.split(/\r?\n/); + if (lines[lines.length - 1] == '') + lines.pop(); + + var out = ['
'];
+ var endpush = null;
+ var listMode = false;
+ lines.each(function(l) {
+ if (l == '') {
+ if (out[out.length - 1] == '
') {
+ out[out.length - 1] = '
'; + } + if (out[out.length - 1] == '') { + out.push(''); + out.push('
'); + listMode = false; + } + return; + } - // 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'); + if (l[0] == '>') { + var pi = out.lastIndexOf('
'); + if (pi != -1) { + out[pi] = '
'; + l = l.replace(/^>\s*/, ''); + } + } + if (l[0] == '*') { + if (!listMode) { + var pi = out.lastIndexOf('
'); + out[pi] = '
").replace(/\r?\n/g, "
");
+ // 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');
+ out.push(l);
+ if (endpush) {
+ out.push(endpush);
+ endpush = null;
+ } else {
+ out.push('
');
+ }
+ });
+ while (out[out.length - 1] == '
' || out[out.length - 1] == '
') + out.pop(); + + record.data = out.join(''); record.date = (new Date(record.timestamp * 1000)).toString(); record.html = template.evaluate(record); } @@ -391,6 +469,50 @@ function older_page() { currentPager.olderPage(); } +function obsess() { + new Ajax.Request(baseURL + '/subscribe/' + currentPager.username, { + method: 'post', + parameters: { + username: loginStatus.username + }, + onSuccess: function(r) { + var response = r.responseText.evalJSON(); + if (response.status == 'success') { + alert("You call " + currentPager.username + " and begin breathing heavily into the handset."); + $$('[name=user.obsesslink]').each(Element.hide); + $$('[name=user.unobsesslink]').each(Element.show); + } else { + alert('Failed to obsess. This is probably for the best'); + } + }, + onFailure: function(r) { + alert('Failed to obsess. This is probably for the best'); + } + }); +} + +function unobsess() { + new Ajax.Request(baseURL + '/unsubscribe/' + currentPager.username, { + method: 'post', + parameters: { + username: loginStatus.username + }, + onSuccess: function(r) { + var response = r.responseText.evalJSON(); + if (response.status == 'success') { + alert("You come to your senses."); + $$('[name=user.obsesslink]').each(Element.show); + $$('[name=user.unobsesslink]').each(Element.hide); + } else { + alert('You are unable to tear yourself away (because something failed on the server)'); + } + }, + onFailure: function(r) { + alert('You are unable to tear yourself away (because something failed on the server)'); + } + }); +} + var resizePostContentTimeout = null; function resizePostContent() { if (resizePostContentTimeout) @@ -425,9 +547,6 @@ function tickerFader(a, b, p) { b.hide(); } -function fadeOut(p) { -} - function ticker() { tickerHead.show(); Bytex64.FX.run(tickerFader.curry(tickerHead, tickerTail), 0.5); @@ -505,7 +624,7 @@ function hashSwitch() { if (m[3]) { var r = parseInt(m[3]); currentPager.showRecord = r; - if (currentPager.recordCache[r]) { + if (currentPager.itemCache[r]) { currentPager.displayItems(); } else { currentPager.loadItems((r >= 49 ? r - 49 : 0), r);