integration.js 1.9 KB

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