X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FRealtime%2Frealtimeupdate.js;h=2e5851ae531e539dc07f85a0d0eab80915a87fc8;hb=5aeed9e04110c34bca12e601836797afd5acadba;hp=2ded33e937046e0005fa1a17dfa11436c38c0d0a;hpb=8b4fd414218d162970cf997d260e070d0a5177fe;p=quix0rs-gnu-social.git diff --git a/plugins/Realtime/realtimeupdate.js b/plugins/Realtime/realtimeupdate.js index 2ded33e937..2e5851ae53 100644 --- a/plugins/Realtime/realtimeupdate.js +++ b/plugins/Realtime/realtimeupdate.js @@ -32,33 +32,35 @@ RealtimeUpdate = { _userid: 0, _replyurl: '', _favorurl: '', + _repeaturl: '', _deleteurl: '', _updatecounter: 0, - _updatedelay: 500, _maxnotices: 50, + _windowhasfocus: true, + _documenttitle: '', + _paused:false, + _queuedNotices:[], - init: function(userid, replyurl, favorurl, deleteurl) + init: function(userid, replyurl, favorurl, repeaturl, deleteurl) { RealtimeUpdate._userid = userid; RealtimeUpdate._replyurl = replyurl; RealtimeUpdate._favorurl = favorurl; + RealtimeUpdate._repeaturl = repeaturl; RealtimeUpdate._deleteurl = deleteurl; - DT = document.title; + RealtimeUpdate._documenttitle = document.title; - $(window).blur(function() { - $('#notices_primary .notice').css({ - 'border-top-color':$('#notices_primary .notice:last').css('border-top-color'), - 'border-top-style':'dotted' - }); + $(window).bind('focus', function(){ RealtimeUpdate._windowhasfocus = true; }); - $('#notices_primary .notice:first').css({ - 'border-top-color':'#AAAAAA', - 'border-top-style':'solid' - }); + $(window).bind('blur', function() { + $('#notices_primary .notice').removeClass('mark-top'); + + $('#notices_primary .notice:first').addClass('mark-top'); RealtimeUpdate._updatecounter = 0; - document.title = DT; + document.title = RealtimeUpdate._documenttitle; + RealtimeUpdate._windowhasfocus = false; return false; }); @@ -66,44 +68,73 @@ RealtimeUpdate = { receive: function(data) { - setTimeout(function() { - id = data.id; + if (RealtimeUpdate._paused === false) { + RealtimeUpdate.purgeLastNoticeItem(); - // Don't add it if it already exists - if ($("#notice-"+id).length > 0) { - return; - } + RealtimeUpdate.insertNoticeItem(data); + } + else { + RealtimeUpdate._queuedNotices.push(data); - var noticeItem = RealtimeUpdate.makeNoticeItem(data); - $("#notices_primary .notices").prepend(noticeItem); - $("#notices_primary .notice:first").css({display:"none"}); - $("#notices_primary .notice:first").fadeIn(1000); + RealtimeUpdate.updateQueuedCounter(); + } + + RealtimeUpdate.updateWindowCounter(); + }, - if ($('#notices_primary .notice').length > RealtimeUpdate._maxnotices) { - $("#notices_primary .notice:last .form_disfavor").unbind('submit'); - $("#notices_primary .notice:last .form_favor").unbind('submit'); - $("#notices_primary .notice:last #notice_in-reply-to").unbind('click'); - $("#notices_primary .notice:last").remove(); - } + insertNoticeItem: function(data) { + // Don't add it if it already exists + if ($("#notice-"+data.id).length > 0) { + return; + } + + var noticeItem = RealtimeUpdate.makeNoticeItem(data); + var noticeItemID = $(noticeItem).attr('id'); + + $("#notices_primary .notices").prepend(noticeItem); + $("#notices_primary .notice:first").css({display:"none"}); + $("#notices_primary .notice:first").fadeIn(1000); + + SN.U.NoticeReplyTo($('#'+noticeItemID)); + SN.U.NoticeWithAttachment($('#'+noticeItemID)); + }, - NoticeFavors(); - NoticeReply(); + purgeLastNoticeItem: function() { + if ($('#notices_primary .notice').length > RealtimeUpdate._maxnotices) { + $("#notices_primary .notice:last").remove(); + } + }, + updateWindowCounter: function() { + if (RealtimeUpdate._windowhasfocus === false) { RealtimeUpdate._updatecounter += 1; - document.title = '('+RealtimeUpdate._updatecounter+') ' + DT; - }, RealtimeUpdate._updatedelay); + document.title = '('+RealtimeUpdate._updatecounter+') ' + RealtimeUpdate._documenttitle; + } }, makeNoticeItem: function(data) { + if (data.hasOwnProperty('retweeted_status')) { + original = data['retweeted_status']; + repeat = data; + data = original; + unique = repeat['id']; + responsible = repeat['user']; + } else { + original = null; + repeat = null; + unique = data['id']; + responsible = data['user']; + } + 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,'"'); + html = data['html'].replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"').replace(/&/g,'&'); + source = data['source'].replace(/</g,'<').replace(/>/g,'>').replace(/"/g,'"').replace(/&/g,'&'); - ni = "
  • "+ + ni = "
  • "+ "
    "+ ""+ - ""+ + ""+ "\""+user['screen_name']+"\"/"+ ""+user['screen_name']+""+ ""+ @@ -122,21 +153,32 @@ RealtimeUpdate = { ni = ni+" in context"; } - ni = ni+"
    "+ - "
    "; + if (repeat) { + ru = repeat['user']; + ni = ni + "Repeated by " + + "" + + ""+ ru['screen_name'] + ""; + } + + ni = ni+"
    "; + + ni = ni + "
    "; if (RealtimeUpdate._userid != 0) { var input = $("form#form_notice fieldset input#token"); var session_key = input.val(); ni = ni+RealtimeUpdate.makeFavoriteForm(data['id'], session_key); ni = ni+RealtimeUpdate.makeReplyLink(data['id'], data['user']['screen_name']); - if (RealtimeUpdate._userid == data['user']['id']) { + if (RealtimeUpdate._userid == responsible['id']) { ni = ni+RealtimeUpdate.makeDeleteLink(data['id']); + } else if (RealtimeUpdate._userid != user['id']) { + ni = ni+RealtimeUpdate.makeRepeatForm(data['id'], session_key); } } - ni = ni+"
    "+ - "
  • "; + ni = ni+""; + + ni = ni+""; return ni; }, @@ -160,7 +202,22 @@ RealtimeUpdate = { var rl; rl = "Reply "+id+""; return rl; - }, + }, + + makeRepeatForm: function(id, session_key) + { + var rf; + rf = "
    "+ + "
    "+ + "Repeat this notice?"+ + ""+ + ""+ + ""+ + "
    "+ + "
    "; + + return rf; + }, makeDeleteLink: function(id) { @@ -172,30 +229,117 @@ RealtimeUpdate = { return dl; }, - addPopup: function(url, timeline, iconurl) - { - $('#notices_primary').css({'position':'relative'}); - $('#notices_primary').prepend(''); - - $('#realtime_timeline').css({ - 'margin':'0 0 11px 0', - 'background':'transparent url('+ iconurl + ') no-repeat 0% 30%', - 'padding':'0 0 0 20px', - 'display':'block', - 'position':'absolute', - 'top':'-20px', - 'right':'0', - 'border':'none', - 'cursor':'pointer', - 'color':$("a").css("color"), - 'font-weight':'bold', - 'font-size':'1em' - }); + initActions: function(url, timeline, path) + { + $('#notices_primary').prepend(''); + + RealtimeUpdate._pluginPath = path; + + RealtimeUpdate.initPlayPause(); + RealtimeUpdate.initAddPopup(url, timeline, RealtimeUpdate._pluginPath); + }, + + initPlayPause: function() + { + if (typeof(localStorage) == 'undefined') { + RealtimeUpdate.showPause(); + } + else { + if (localStorage.getItem('RealtimeUpdate_paused') === 'true') { + RealtimeUpdate.showPlay(); + } + else { + RealtimeUpdate.showPause(); + } + } + }, + + showPause: function() + { + RealtimeUpdate.setPause(false); + RealtimeUpdate.showQueuedNotices(); + RealtimeUpdate.addNoticesHover(); + + $('#realtime_playpause').remove(); + $('#realtime_actions').prepend('
  • '); - $('#realtime_timeline').click(function() { + $('#realtime_pause').bind('click', function() { + RealtimeUpdate.removeNoticesHover(); + RealtimeUpdate.showPlay(); + return false; + }); + }, + + showPlay: function() + { + RealtimeUpdate.setPause(true); + $('#realtime_playpause').remove(); + $('#realtime_actions').prepend('
  • '); + + $('#realtime_play').bind('click', function() { + RealtimeUpdate.showPause(); + return false; + }); + }, + + setPause: function(state) + { + RealtimeUpdate._paused = state; + if (typeof(localStorage) != 'undefined') { + localStorage.setItem('RealtimeUpdate_paused', RealtimeUpdate._paused); + } + }, + + showQueuedNotices: function() + { + $.each(RealtimeUpdate._queuedNotices, function(i, n) { + RealtimeUpdate.insertNoticeItem(n); + }); + + RealtimeUpdate._queuedNotices = []; + + RealtimeUpdate.removeQueuedCounter(); + }, + + updateQueuedCounter: function() + { + $('#realtime_playpause #queued_counter').html('('+RealtimeUpdate._queuedNotices.length+')'); + }, + + removeQueuedCounter: function() + { + $('#realtime_playpause #queued_counter').empty(); + }, + + addNoticesHover: function() + { + $('#notices_primary .notices').hover( + function() { + if (RealtimeUpdate._paused === false) { + RealtimeUpdate.showPlay(); + } + }, + function() { + if (RealtimeUpdate._paused === true) { + RealtimeUpdate.showPause(); + } + } + ); + }, + + removeNoticesHover: function() + { + $('#notices_primary .notices').unbind(); + }, + + initAddPopup: function(url, timeline, path) + { + $('#realtime_timeline').append(''); + + $('#realtime_popup').bind('click', function() { window.open(url, - timeline, - 'toolbar=no,resizable=yes,scrollbars=yes,status=yes'); + '', + 'toolbar=no,resizable=yes,scrollbars=yes,status=no,menubar=no,personalbar=no,location=no,width=500,height=550'); return false; }); @@ -203,26 +347,13 @@ RealtimeUpdate = { initPopupWindow: function() { - window.resizeTo(500, 550); - $('address').hide(); - $('#content').css({'width':'93.5%'}); + $('.notices .entry-title a, .notices .entry-content a').bind('click', function() { + window.open(this.href, ''); - $('#form_notice').css({ - 'margin':'18px 0 18px 1.795%', - 'width':'93%', - 'max-width':'451px' + return false; }); - $('#form_notice label[for=notice_data-text], h1').css({'display': 'none'}); - - $('.notices li:first-child').css({'border-top-color':'transparent'}); - - $('#form_notice label[for="notice_data-attach"], #form_notice #notice_data-attach').css({'top':'0'}); - - $('#form_notice #notice_data-attach').css({ - 'left':'auto', - 'right':'0' - }); + $('#showstream .entity_profile').css({'width':'69%'}); } }