integration.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-3.0
  2. "use strict";
  3. /* jshint esversion:6, strict:global */
  4. const init_integration = function() {
  5. if (!window.context) {
  6. if (window.console) {
  7. console.log('FreshRSS integration waiting for JS…');
  8. }
  9. setTimeout(init_integration, 50);
  10. return;
  11. }
  12. let shares = document.querySelectorAll('.group-share').length;
  13. document.querySelector('.share.add').addEventListener('click', event => {
  14. const shareTypes = event.target.closest('.group-controls').querySelector('select');
  15. const shareType = shareTypes.options[shareTypes.selectedIndex];
  16. let newShare = event.target.closest('form').getAttribute('data-' + shareType.getAttribute('data-form'));
  17. newShare = newShare.replace(/##label##/g, shareType.text);
  18. newShare = newShare.replace(/##type##/g, shareType.value);
  19. newShare = newShare.replace(/##help##/g, shareType.getAttribute('data-help'));
  20. newShare = newShare.replace(/##key##/g, shares);
  21. newShare = newShare.replace(/##method##/g, shareType.getAttribute('data-method'));
  22. newShare = newShare.replace(/##field##/g, shareType.getAttribute('data-field'));
  23. event.target.closest('.form-group').insertAdjacentHTML('beforebegin', newShare);
  24. shares++;
  25. });
  26. document.querySelector('.post').addEventListener('click', event => {
  27. if (!event.target || !event.target.closest) {
  28. return;
  29. }
  30. const deleteButton = event.target.closest('a.remove');
  31. if (null === deleteButton || !deleteButton.closest) {
  32. return;
  33. }
  34. const share = deleteButton.closest('.group-share');
  35. const form = deleteButton.closest('form');
  36. if (!share.remove || !form.submit) {
  37. return;
  38. }
  39. share.remove();
  40. form.submit();
  41. });
  42. };
  43. if (document.readyState && document.readyState !== 'loading') {
  44. init_integration();
  45. } else if (document.addEventListener) {
  46. document.addEventListener('DOMContentLoaded', event => init_integration(), false);
  47. }
  48. // @license-end