diff options
| author | 2021-01-16 16:11:30 -0500 | |
|---|---|---|
| committer | 2021-01-16 22:11:30 +0100 | |
| commit | 5c18c64afbdc8b888fdedf2d7cc45e1930225f02 (patch) | |
| tree | 3d20526df907da7c2435774ae4647841376ae821 /p/scripts/integration.js | |
| parent | bf639f9b984185e1fb8157a24cc11e2f49b827c7 (diff) | |
Change integration configuration page (#3372)
I've refactored the user query code to be able to use it also on the
integration configuration page. Now, items can be re-organized as in
the user query list.
Diffstat (limited to 'p/scripts/integration.js')
| -rw-r--r-- | p/scripts/integration.js | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/p/scripts/integration.js b/p/scripts/integration.js new file mode 100644 index 000000000..076f379ec --- /dev/null +++ b/p/scripts/integration.js @@ -0,0 +1,54 @@ +// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-3.0 +"use strict"; +/* jshint esversion:6, strict:global */ + +const init_integration = function() { + if (!window.context) { + if (window.console) { + console.log('FreshRSS integration waiting for JS…'); + } + setTimeout(init_integration, 50); + return; + } + + let shares = document.querySelectorAll('.group-share').length; + document.querySelector('.share.add').addEventListener('click', event => { + const shareTypes = event.target.closest('.group-controls').querySelector('select'); + const shareType = shareTypes.options[shareTypes.selectedIndex]; + let newShare = event.target.closest('form').getAttribute(`data-${shareType.getAttribute('data-form')}`); + newShare = newShare.replace(/##label##/g, shareType.text); + newShare = newShare.replace(/##type##/g, shareType.value); + newShare = newShare.replace(/##help##/g, shareType.getAttribute('data-help')); + newShare = newShare.replace(/##key##/g, shares); + newShare = newShare.replace(/##method##/g, shareType.getAttribute('data-method')); + newShare = newShare.replace(/##field##/g, shareType.getAttribute('data-field')); + event.target.closest('.form-group').insertAdjacentHTML('beforebegin', newShare); + shares++; + }); + + document.querySelector('.post').addEventListener('click', event => { + if (!event.target || !event.target.closest) { + return; + } + + const deleteButton = event.target.closest('a.remove'); + if (null === deleteButton || !deleteButton.closest) { + return; + } + + const share = deleteButton.closest('.group-share'); + const form = deleteButton.closest('form'); + if (!share.remove || !form.submit) { + return; + } + share.remove(); + form.submit(); + }); +}; + +if (document.readyState && document.readyState !== 'loading') { + init_integration(); +} else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', event => init_integration(), false); +} +// @license-end |
