misago-uiserver.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. // Misago UI server
  2. (function($) {
  3. // Class definition
  4. // ===============================
  5. var MisagoUIServer = function(frequency) {
  6. if (frequency == undefined) {
  7. frequency = 15000;
  8. }
  9. this.ui_observers = [];
  10. this.observer = function(name, callback) {
  11. this.ui_observers.push({name: name, callback: callback});
  12. this.query_server();
  13. };
  14. this.query_server = function(poll) {
  15. if (poll === undefined) {
  16. poll = 0;
  17. }
  18. ui_observers = this.ui_observers
  19. $.get(uiserver_url, function(data) {
  20. $.each(ui_observers, function(i, observer) {
  21. if (typeof data[observer.name] !== "undefined") {
  22. observer.callback(data[observer.name]);
  23. }
  24. });
  25. if (poll > 0) {
  26. window.setTimeout(function() {
  27. query_server(frequency);
  28. }, poll);
  29. }
  30. });
  31. };
  32. window.setTimeout(function() {
  33. query_server(frequency);
  34. }, frequency);
  35. // Return object
  36. return this;
  37. };
  38. // Plugin definition
  39. // ==========================
  40. $.misago_ui = function(frequency) {
  41. if ($._misago_ui == undefined) {
  42. $._misago_ui = MisagoUIServer(frequency);
  43. }
  44. return $._misago_ui;
  45. };
  46. }(jQuery));