From cc317b169fa43ebf9c12b695d51cee88b8551ef4 Mon Sep 17 00:00:00 2001 From: Evan Prodromou Date: Fri, 10 Jul 2009 09:57:38 -0700 Subject: first version of Meteord plugin, doesn't work --- plugins/Meteor/meteorupdater.js | 151 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 151 insertions(+) create mode 100644 plugins/Meteor/meteorupdater.js (limited to 'plugins/Meteor/meteorupdater.js') diff --git a/plugins/Meteor/meteorupdater.js b/plugins/Meteor/meteorupdater.js new file mode 100644 index 000000000..ffbd28434 --- /dev/null +++ b/plugins/Meteor/meteorupdater.js @@ -0,0 +1,151 @@ +// update the local timeline from a Meteor server +// + +var MeteorUpdater = function() +{ + var _server; + var _port; + var _timeline; + var _userid; + var _replyurl; + var _favorurl; + var _deleteurl; + + return { + init: function(server, port, timeline, userid, replyurl, favorurl, deleteurl) + { + _userid = userid; + _replyurl = replyurl; + _favorurl = favorurl; + _deleteurl = deleteurl; + + Meteor.callbacks["process"] = function(data) { + receive(JSON.parse(data)); + }; + + Meteor.host = server; + Meteor.port = port; + Meteor.joinChannel(timeline, 0); + Meteor.connect(); + } + } + + function receive(message) + { + id = message.data.id; + + // Don't add it if it already exists + + if ($("#notice-"+id).length > 0) { + return; + } + + var noticeItem = makeNoticeItem(message.data); + $("#notices_primary .notices").prepend(noticeItem, true); + $("#notices_primary .notice:first").css({display:"none"}); + $("#notices_primary .notice:first").fadeIn(1000); + NoticeHover(); + NoticeReply(); + } + + function makeNoticeItem(data) + { + user = data['user']; + html = data['html'].replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"'); + source = data['source'].replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"'); + + ni = "
  • "+ + "
    "+ + ""+ + ""+ + "\""+user['screen_name']+"\"/"+ + ""+user['screen_name']+""+ + ""+ + ""+ + "

    "+html+"

    "+ + "
    "+ + "
    "+ + "
    "+ + "
    Published
    "+ + "
    "+ + ""+ + "a few seconds ago"+ + " "+ + "
    "+ + "
    "+ + "
    "+ + "
    From
    "+ + "
    "+source+"
    "+ // may have a link, I think + "
    "; + + if (data['in_reply_to_status_id']) { + ni = ni+"
    "+ + "
    To
    "+ + "
    "+ + "in reply to"+ + "
    "+ + "
    "; + } + + ni = ni+"
    "+ + "
    "; + + if (_userid != 0) { + var input = $("form#form_notice fieldset input#token"); + var session_key = input.val(); + ni = ni+makeFavoriteForm(data['id'], session_key); + ni = ni+makeReplyLink(data['id'], data['user']['screen_name']); + if (_userid == data['user']['id']) { + ni = ni+makeDeleteLink(data['id']); + } + } + + ni = ni+"
    "+ + "
  • "; + return ni; + } + + function makeFavoriteForm(id, session_key) + { + var ff; + + ff = "
    "+ + "
    "+ + "Favor this notice"+ // XXX: i18n + ""+ + ""+ + ""+ + "
    "+ + "
    "; + return ff; + } + + function makeReplyLink(id, nickname) + { + var rl; + rl = "
    "+ + "
    Reply to this notice
    "+ + "
    "+ + "Reply "+id+""+ + ""+ + "
    "+ + "
    "; + return rl; + } + + function makeDeleteLink(id) + { + var dl, delurl; + delurl = _deleteurl.replace("0000000000", id); + + dl = "
    "+ + "
    Delete this notice
    "+ + "
    "+ + "Delete"+ + "
    "+ + "
    "; + + return dl; + } +}(); + -- cgit v1.2.3-54-g00ecf