global_view.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. "use strict";
  2. /* globals init_load_more, init_posts, init_stream */
  3. /* jshint globalstrict: true */
  4. var panel_loading = false;
  5. function load_panel(link) {
  6. if (panel_loading) {
  7. return;
  8. }
  9. panel_loading = true;
  10. $.get(link, function (data) {
  11. $("#panel").append($(".nav_menu, #stream .day, #stream .flux, #stream .pagination, #stream.prompt", data));
  12. $("#panel .nav_menu").children().not("#nav_menu_read_all").remove();
  13. init_load_more($("#panel"));
  14. init_posts();
  15. $("#overlay").fadeIn();
  16. $("#panel").slideToggle();
  17. // force le démarrage du scroll en haut.
  18. // Sans ça, si l'on scroll en lisant une catégorie par exemple,
  19. // en en ouvrant une autre ensuite, on se retrouve au même point de scroll
  20. $("#panel").scrollTop(0);
  21. $(window).scrollTop(0);
  22. $('#panel').on('click', '#nav_menu_read_all button, #bigMarkAsRead', function () {
  23. console.log($(this).attr("formaction"));
  24. $.ajax({
  25. type: "POST",
  26. url: $(this).attr("formaction"),
  27. async: false
  28. });
  29. window.location.reload(false);
  30. return false;
  31. });
  32. panel_loading = false;
  33. });
  34. }
  35. function init_close_panel() {
  36. $("#overlay .close").click(function () {
  37. $("#panel").html('');
  38. $("#panel").slideToggle();
  39. $("#overlay").fadeOut();
  40. return false;
  41. });
  42. }
  43. function init_global_view() {
  44. // TODO: should be based on generic classes.
  45. $(".box a").click(function () {
  46. var link = $(this).attr("href");
  47. load_panel(link);
  48. return false;
  49. });
  50. $(".nav_menu #nav_menu_read_all, .nav_menu .toggle_aside").remove();
  51. init_stream($("#panel"));
  52. }
  53. function init_all_global_view() {
  54. if (!(window.$ && window.init_stream)) {
  55. if (window.console) {
  56. console.log('FreshRSS Global view waiting for JS…');
  57. }
  58. window.setTimeout(init_all_global_view, 50); //Wait for all js to be loaded
  59. return;
  60. }
  61. init_global_view();
  62. init_close_panel();
  63. }
  64. if (document.readyState && document.readyState !== 'loading') {
  65. init_all_global_view();
  66. } else if (document.addEventListener) {
  67. document.addEventListener('DOMContentLoaded', function () {
  68. init_all_global_view();
  69. }, false);
  70. }