global_view.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. $('#panel').on('click', '#nav_menu_read_all button, #bigMarkAsRead', function () {
  22. console.log($(this).attr("formaction"));
  23. $.ajax({
  24. type: "POST",
  25. url: $(this).attr("formaction"),
  26. async: false
  27. });
  28. window.location.reload(false);
  29. return false;
  30. });
  31. panel_loading = false;
  32. });
  33. }
  34. function init_close_panel() {
  35. $("#overlay .close").click(function () {
  36. $("#panel").html('');
  37. $("#panel").slideToggle();
  38. $("#overlay").fadeOut();
  39. return false;
  40. });
  41. }
  42. function init_global_view() {
  43. // TODO: should be based on generic classes.
  44. $(".box a").click(function () {
  45. var link = $(this).attr("href");
  46. load_panel(link);
  47. return false;
  48. });
  49. $(".nav_menu #nav_menu_read_all, .nav_menu .toggle_aside").remove();
  50. init_stream($("#panel"));
  51. }
  52. function init_all_global_view() {
  53. if (!(window.$ && window.init_stream)) {
  54. if (window.console) {
  55. console.log('FreshRSS Global view waiting for JS…');
  56. }
  57. window.setTimeout(init_all_global_view, 50); //Wait for all js to be loaded
  58. return;
  59. }
  60. init_global_view();
  61. init_close_panel();
  62. }
  63. if (document.readyState && document.readyState !== 'loading') {
  64. init_all_global_view();
  65. } else if (document.addEventListener) {
  66. document.addEventListener('DOMContentLoaded', function () {
  67. init_all_global_view();
  68. }, false);
  69. }