75 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| ((customElements, Joomla) => {
 | |
|   class JoomlaFieldSendTestMail extends HTMLElement {
 | |
|     // attributeChangedCallback(attr, oldValue, newValue) {}
 | |
|     constructor() {
 | |
|       super();
 | |
|       if (!Joomla) {
 | |
|         throw new Error('Joomla API is not properly initiated');
 | |
|       }
 | |
|       if (!this.getAttribute('uri')) {
 | |
|         throw new Error('No valid url for validation');
 | |
|       }
 | |
|     }
 | |
|     connectedCallback() {
 | |
|       const self = this;
 | |
|       const button = document.getElementById('sendtestmail');
 | |
|       if (button) {
 | |
|         button.addEventListener('click', () => {
 | |
|           self.sendTestMail(self);
 | |
|         });
 | |
|       }
 | |
|     }
 | |
|     sendTestMail() {
 | |
|       const emailData = {
 | |
|         smtpauth: document.getElementById('jform_smtpauth1').checked ? 1 : 0,
 | |
|         smtpuser: this.querySelector('[name="jform[smtpuser]"]').value,
 | |
|         smtphost: this.querySelector('[name="jform[smtphost]"]').value,
 | |
|         smtpsecure: this.querySelector('[name="jform[smtpsecure]"]').value,
 | |
|         smtpport: this.querySelector('[name="jform[smtpport]"]').value,
 | |
|         mailfrom: this.querySelector('[name="jform[mailfrom]"]').value,
 | |
|         fromname: this.querySelector('[name="jform[fromname]"]').value,
 | |
|         mailer: this.querySelector('[name="jform[mailer]"]').value,
 | |
|         mailonline: document.getElementById('jform_mailonline1').checked ? 1 : 0
 | |
|       };
 | |
|       const smtppass = this.querySelector('[name="jform[smtppass]"]');
 | |
|       if (smtppass.disabled === false) {
 | |
|         emailData.smtppass = smtppass.value;
 | |
|       }
 | |
| 
 | |
|       // Remove js messages, if they exist.
 | |
|       Joomla.removeMessages();
 | |
|       Joomla.request({
 | |
|         url: this.getAttribute('uri'),
 | |
|         method: 'POST',
 | |
|         data: JSON.stringify(emailData),
 | |
|         perform: true,
 | |
|         headers: {
 | |
|           'Content-Type': 'application/json'
 | |
|         },
 | |
|         onSuccess: resp => {
 | |
|           let response;
 | |
|           try {
 | |
|             response = JSON.parse(resp);
 | |
|           } catch (e) {
 | |
|             // eslint-disable-next-line no-console
 | |
|             console.error(e);
 | |
|           }
 | |
|           if (typeof response.messages === 'object' && response.messages !== null) {
 | |
|             Joomla.renderMessages(response.messages);
 | |
|           }
 | |
|           document.body.scrollIntoView({
 | |
|             behavior: 'smooth'
 | |
|           });
 | |
|         },
 | |
|         onError: xhr => {
 | |
|           Joomla.renderMessages(Joomla.ajaxErrorsMessages(xhr));
 | |
|           document.body.scrollIntoView({
 | |
|             behavior: 'smooth'
 | |
|           });
 | |
|         }
 | |
|       });
 | |
|     }
 | |
|   }
 | |
|   customElements.define('joomla-field-send-test-mail', JoomlaFieldSendTestMail);
 | |
| })(customElements, Joomla);
 |