diff -cr /tmp/tribune/js/tribune.ajax.js tribune/js/tribune.ajax.js *** /tmp/tribune/js/tribune.ajax.js 2009-04-11 21:14:22.000000000 +0200 --- tribune/js/tribune.ajax.js 2009-12-19 12:14:10.000000000 +0100 *************** *** 5,12 **** Drupal.tribune.tribunes = {}; } ! Drupal.behaviors.tribune = function() { for (var tribune_id in Drupal.settings.tribune.tribunes) (function (tribune_id) { Drupal.tribune.tribunes[tribune_id] = {}; Drupal.tribune.tribunes[tribune_id].highlightedElements = new Array(); Drupal.tribune.tribunes[tribune_id].message_preview_element = $("
"); --- 5,33 ---- Drupal.tribune.tribunes = {}; } ! Drupal.behaviors.tribune = function(context) { ! ! // ! // Avoid re-initialisation if Drupal.attachBehaviors() is called with ! // context != document. ! // ! if (context == document) ! { ! for (var tribune_id in Drupal.settings.tribune.tribunes) (function (tribune_id) { + + // + // Stop already running timers if Drupal.attachBehaviors() is + // called multiple times. + // + if (Drupal.tribune.tribunes[tribune_id] != undefined) + { + if (Drupal.tribune.tribunes[tribune_id].idle_timeout) + clearTimeout(Drupal.tribune.tribunes[tribune_id].idle_timeout); + if (Drupal.tribune.tribunes[tribune_id].reload_interval) + clearInterval(Drupal.tribune.tribunes[tribune_id].reload_interval); + } + Drupal.tribune.tribunes[tribune_id] = {}; Drupal.tribune.tribunes[tribune_id].highlightedElements = new Array(); Drupal.tribune.tribunes[tribune_id].message_preview_element = $(""); *************** *** 45,50 **** --- 66,72 ---- })(tribune_id); tribune_id = null; + } } Drupal.tribune.setNotificationFavicon = function(url, tribune_id) { *************** *** 309,315 **** Drupal.tribune.tribunes[tribune_id].palmipede.attr("disabled", "disabled").attr("readonly", "readonly"); if (Drupal.settings.tribune.tribunes[tribune_id].idle_delay) { ! clearInterval(Drupal.tribune.tribunes[tribune_id].idle_timeout); clearInterval(Drupal.tribune.tribunes[tribune_id].reload_interval); Drupal.tribune.tribunes[tribune_id].idle_timeout = setTimeout("Drupal.tribune.timed_out('" + tribune_id + "')", Drupal.settings.tribune.tribunes[tribune_id].idle_delay); Drupal.tribune.tribunes[tribune_id].reload_interval = setInterval("Drupal.tribune.loadPosts('" + tribune_id + "')", Drupal.settings.tribune.tribunes[tribune_id].reload_delay); --- 331,337 ---- Drupal.tribune.tribunes[tribune_id].palmipede.attr("disabled", "disabled").attr("readonly", "readonly"); if (Drupal.settings.tribune.tribunes[tribune_id].idle_delay) { ! clearTimeout(Drupal.tribune.tribunes[tribune_id].idle_timeout); clearInterval(Drupal.tribune.tribunes[tribune_id].reload_interval); Drupal.tribune.tribunes[tribune_id].idle_timeout = setTimeout("Drupal.tribune.timed_out('" + tribune_id + "')", Drupal.settings.tribune.tribunes[tribune_id].idle_delay); Drupal.tribune.tribunes[tribune_id].reload_interval = setInterval("Drupal.tribune.loadPosts('" + tribune_id + "')", Drupal.settings.tribune.tribunes[tribune_id].reload_delay);