]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Added play/pause button for realtime notices. While on pause, it will
authorSarven Capadisli <csarven@status.net>
Wed, 18 Nov 2009 15:41:07 +0000 (15:41 +0000)
committerSarven Capadisli <csarven@status.net>
Wed, 18 Nov 2009 15:41:07 +0000 (15:41 +0000)
store the notices and on play it will add them to the notice list

plugins/Realtime/RealtimePlugin.php
plugins/Realtime/icon_pause.gif [new file with mode: 0644]
plugins/Realtime/icon_play.gif [new file with mode: 0644]
plugins/Realtime/realtimeupdate.js

index 0c7c1240c3f7bb24031e7db82cdc33c7acbb8c04..6d59bd1b12e03a06e42056a1b9fd76367b7285c1 100644 (file)
@@ -101,8 +101,8 @@ class RealtimePlugin extends Plugin
             $realtimeUI = ' RealtimeUpdate.initPopupWindow();';
         }
         else {
-            $iconurl = common_path('plugins/Realtime/icon_external.gif');
-            $realtimeUI = ' RealtimeUpdate.addPopup("'.$url.'", "'.$timeline.'", "'. $iconurl .'");';
+            $pluginPath = common_path('plugins/Realtime/');
+            $realtimeUI = ' RealtimeUpdate.initActions("'.$url.'", "'.$timeline.'", "'. $pluginPath .'");';
         }
 
         $action->elementStart('script', array('type' => 'text/javascript'));
diff --git a/plugins/Realtime/icon_pause.gif b/plugins/Realtime/icon_pause.gif
new file mode 100644 (file)
index 0000000..ced0b64
Binary files /dev/null and b/plugins/Realtime/icon_pause.gif differ
diff --git a/plugins/Realtime/icon_play.gif b/plugins/Realtime/icon_play.gif
new file mode 100644 (file)
index 0000000..794ec85
Binary files /dev/null and b/plugins/Realtime/icon_play.gif differ
index 6404cf896560ae2aa082b54d54ba315788f28595..4352b45d99458c595f03aa68782fb1881f7334f1 100644 (file)
@@ -37,6 +37,8 @@ RealtimeUpdate = {
      _maxnotices: 50,
      _windowhasfocus: true,
      _documenttitle: '',
+     _paused:false,
+     _queuedNotices:[],
 
      init: function(userid, replyurl, favorurl, deleteurl)
      {
@@ -71,12 +73,16 @@ RealtimeUpdate = {
                return;
           }
 
-          RealtimeUpdate.purgeLastNoticeItem();
+          if (RealtimeUpdate._paused === false) {
+              RealtimeUpdate.purgeLastNoticeItem();
 
-          RealtimeUpdate.insertNoticeItem(data);
-
-          RealtimeUpdate.updateWindowCounter();
+              RealtimeUpdate.insertNoticeItem(data);
 
+              RealtimeUpdate.updateWindowCounter();
+          }
+          else {
+              RealtimeUpdate._queuedNotices.push(data);
+          }
      },
 
      insertNoticeItem: function(data) {
@@ -183,7 +189,80 @@ RealtimeUpdate = {
           return dl;
      },
 
-     addPopup: function(url, timeline, iconurl)
+     initActions: function(url, timeline, path)
+     {
+        var NP = $('#notices_primary');
+        NP.prepend('<ul id="realtime_actions"><li id="realtime_pauseplay"></li></ul>');
+
+        RealtimeUpdate._pluginPath = path;
+
+        RealtimeUpdate.initPlayPause();
+        RealtimeUpdate.initAddPopup(url, timeline, RealtimeUpdate._pluginPath);
+     },
+
+     initPlayPause: function()
+     {
+        RealtimeUpdate.showPause();
+     },
+
+     showPause: function()
+     {
+        RT_PP = $('#realtime_pauseplay');
+        RT_PP.empty();
+        RT_PP.append('<button id="realtime_pause" class="pause" title="Pause">Pause</button>');
+
+        RT_P = $('#realtime_pause');
+        $('#realtime_pause').css({
+            'background':'url('+RealtimeUpdate._pluginPath+'icon_pause.gif) no-repeat 47% 47%',
+            'width':'16px',
+            'height':'16px',
+            'text-indent':'-9999px',
+             'border':'none',
+             'cursor':'pointer'
+        });
+        RT_P.bind('click', function() {
+            RealtimeUpdate._paused = true;
+
+            RealtimeUpdate.showPlay();
+            return false;
+        });
+     },
+
+     showPlay: function()
+     {
+        RT_PP = $('#realtime_pauseplay');
+        RT_PP.empty();
+        RT_PP.append('<button id="realtime_play" class="play" title="Play">Play</button>');
+
+        RT_P = $('#realtime_play');
+        RT_P.css({
+            'background':'url('+RealtimeUpdate._pluginPath+'icon_play.gif) no-repeat 47% 47%',
+            'width':'16px',
+            'height':'16px',
+            'text-indent':'-9999px',
+             'border':'none',
+             'cursor':'pointer'
+        });
+        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 = [];
+     },
+
+     initAddPopup: function(url, timeline, path)
      {
          var NP = $('#notices_primary');
          NP.css({'position':'relative'});
@@ -192,7 +271,7 @@ RealtimeUpdate = {
          var RT = $('#realtime_timeline');
          RT.css({
              'margin':'0 0 11px 0',
-             'background':'transparent url('+ iconurl + ') no-repeat 0 30%',
+             'background':'transparent url('+ path + 'icon_external.gif) no-repeat 0 30%',
              'padding':'0 0 0 20px',
              'display':'block',
              'position':'absolute',