X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=plugins%2FRealtime%2Frealtimeupdate.js;h=ce0297339d22a6eae287850ac8a16376dec700e9;hb=aab7344002fd390e5b62a3eb82f3a418fd294617;hp=4cd68a816b2bde0fc2d2a9cbeb424accd747a4fd;hpb=08546e4fb403b55827e32b6d59369b371d2334ac;p=quix0rs-gnu-social.git diff --git a/plugins/Realtime/realtimeupdate.js b/plugins/Realtime/realtimeupdate.js index 4cd68a816b..ce0297339d 100644 --- a/plugins/Realtime/realtimeupdate.js +++ b/plugins/Realtime/realtimeupdate.js @@ -1,5 +1,31 @@ -// add a notice encoded as JSON into the current timeline -// +/* + * StatusNet - a distributed open-source microblogging tool + * Copyright (C) 2008, StatusNet, Inc. + * + * Add a notice encoded as JSON into the current timeline + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + * @category Plugin + * @package StatusNet + * @author Evan Prodromou + * @author Sarven Capadisli + * @copyright 2009 StatusNet, Inc. + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License version 3.0 + * @link http://status.net/ + */ + // TODO: i18n RealtimeUpdate = { @@ -7,6 +33,12 @@ RealtimeUpdate = { _replyurl: '', _favorurl: '', _deleteurl: '', + _updatecounter: 0, + _maxnotices: 50, + _windowhasfocus: true, + _documenttitle: '', + _paused:false, + _queuedNotices:[], init: function(userid, replyurl, favorurl, deleteurl) { @@ -15,34 +47,68 @@ RealtimeUpdate = { RealtimeUpdate._favorurl = favorurl; RealtimeUpdate._deleteurl = deleteurl; - $(window).blur(function() { - $('#notices_primary .notice').css({ - 'border-top-color':$('#notices_primary .notice:last').css('border-top-color'), - 'border-top-style':'dotted' - }); + RealtimeUpdate._documenttitle = document.title; + + $(window).bind('focus', function(){ RealtimeUpdate._windowhasfocus = true; }); + + $(window).bind('blur', function() { + $('#notices_primary .notice').removeClass('mark-top'); + + $('#notices_primary .notice:first').addClass('mark-top'); - $('#notices_primary .notice:first').css({ - 'border-top-color':'#AAAAAA', - 'border-top-style':'solid' - }); + RealtimeUpdate._updatecounter = 0; + document.title = RealtimeUpdate._documenttitle; + RealtimeUpdate._windowhasfocus = false; + + return false; }); }, receive: function(data) { - id = data.id; + if (RealtimeUpdate._paused === false) { + RealtimeUpdate.purgeLastNoticeItem(); + + RealtimeUpdate.insertNoticeItem(data); + } + else { + RealtimeUpdate._queuedNotices.push(data); - // Don't add it if it already exists - // - if ($("#notice-"+id).length > 0) { - return; + RealtimeUpdate.updateQueuedCounter(); } - var noticeItem = RealtimeUpdate.makeNoticeItem(data); - $("#notices_primary .notices").prepend(noticeItem); - $("#notices_primary .notice:first").css({display:"none"}); - $("#notices_primary .notice:first").fadeIn(1000); - NoticeReply(); + RealtimeUpdate.updateWindowCounter(); + }, + + 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.FormXHR($('#'+noticeItemID+' .form_favor')); + SN.U.NoticeReplyTo($('#'+noticeItemID)); + SN.U.NoticeWithAttachment($('#'+noticeItemID)); + }, + + 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+') ' + RealtimeUpdate._documenttitle; + } }, makeNoticeItem: function(data) @@ -123,27 +189,86 @@ RealtimeUpdate = { return dl; }, - addPopup: function(url, timeline, iconurl) + initActions: function(url, timeline, path) { - $('#content').prepend(''); - - $('#realtime_timeline').css({ - 'margin':'0 0 18px 0', - 'background':'transparent url('+ iconurl + ') no-repeat 0% 30%', - 'padding':'0 0 0 20px', - 'display':'block', - 'float':'right', - 'border':'none', - 'cursor':'pointer', - 'color':$("a").css("color"), - 'font-weight':'bold', - 'font-size':'1em' - }); + var NP = $('#notices_primary'); + NP.prepend('
'); + + RealtimeUpdate._pluginPath = path; + + RealtimeUpdate.initPlayPause(); + RealtimeUpdate.initAddPopup(url, timeline, RealtimeUpdate._pluginPath); + }, + + initPlayPause: function() + { + RealtimeUpdate.showPause(); + }, + + showPause: function() + { + RT_PP = $('#realtime_playpause'); + RT_PP.empty(); + RT_PP.append(''); + + RT_P = $('#realtime_pause'); + RT_P.bind('click', function() { + RealtimeUpdate._paused = true; + + RealtimeUpdate.showPlay(); + return false; + }); + }, + + showPlay: function() + { + RT_PP = $('#realtime_playpause'); + RT_PP.empty(); + RT_PP.append(' '); + + RT_P = $('#realtime_play'); + RT_P.bind('click', function() { + RealtimeUpdate._paused = false; + + RealtimeUpdate.showPause(); + + RealtimeUpdate.showQueuedNotices(); + + return false; + }); + }, + + showQueuedNotices: function() + { + $.each(RealtimeUpdate._queuedNotices, function(i, n) { + RealtimeUpdate.insertNoticeItem(n); + }); + + RealtimeUpdate._queuedNotices = []; - $('#realtime_timeline').click(function() { + RealtimeUpdate.removeQueuedCounter(); + }, + + updateQueuedCounter: function() + { + $('#realtime_playpause #queued_counter').html('('+RealtimeUpdate._queuedNotices.length+')'); + }, + + removeQueuedCounter: function() + { + $('#realtime_playpause #queued_counter').empty(); + }, + + initAddPopup: function(url, timeline, path) + { + var NP = $('#realtime_timeline'); + NP.append(''); + + var PP = $('#realtime_popup'); + PP.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; }); @@ -151,26 +276,13 @@ RealtimeUpdate = { initPopupWindow: function() { - window.resizeTo(500, 550); - $('address').hide(); - $('#content').css({'width':'93.5%'}); - - $('#form_notice').css({ - 'margin':'18px 0 18px 1.795%', - 'width':'93%', - 'max-width':'451px' + $('.notices .entry-title a, .notices .entry-content a').bind('click', function() { + window.open(this.href, ''); + + 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%'}); } }