declare const _romhackplaza_manage_notifications: any; declare const romhackplaza_modal_notifications: any; declare function romhackplaza_manage_modal( a: object, b: string|undefined, c: string|undefined, d: string|undefined, e: string|undefined ): void; document.addEventListener("DOMContentLoaded", () => { function _change_event_to_reload(){ romhackplaza_modal_notifications.close_button.onclick = () => { romhackplaza_manage_modal( romhackplaza_modal_notifications, "none", "", "", "" ); window.location.reload(); } window.addEventListener( 'click', (e) => { if( e.target === romhackplaza_modal_notifications.modal ) window.location.reload(); } ); } function _reply_to_message( e: Event ) { const button = e.currentTarget as HTMLElement; const html_content: HTMLFormElement = document.createElement( 'form' ); html_content.id = "reply_message_form" const textarea: HTMLTextAreaElement = document.createElement( 'textarea' ); textarea.id = "reply_message_content"; const submit_button: HTMLElement = document.createElement( 'input' ); submit_button.setAttribute( 'type', 'submit' ); submit_button.setAttribute( 'value', 'Send' ); html_content.appendChild( textarea ); html_content.appendChild( submit_button ); romhackplaza_manage_modal( romhackplaza_modal_notifications, "block", "Reply to a message", "", html_content.outerHTML ); document.getElementById( 'reply_message_form' )!.onsubmit = function( e: SubmitEvent ) { e.preventDefault(); // @ts-ignore let txt = document.getElementById( 'reply_message_content' ).value; romhackplaza_manage_modal( romhackplaza_modal_notifications, "none", "", "", " " ); if ( txt == "" || txt == "none" || txt == "undefined" ){ romhackplaza_manage_modal( romhackplaza_modal_notifications, "block", "Submit error", "A content is required", "" ); _change_event_to_reload(); return; } txt = "Reply to a notification " + button.getAttribute( 'data-id' ) + "\n\n" + txt; let form_data: FormData = new FormData(); form_data.append( 'notification', button.getAttribute( 'data-id' ) as string ) form_data.append( 'content', txt ); form_data.append( '_wpnonce', _romhackplaza_manage_notifications.reply_nonce ); form_data.append( 'action', 'notifications_reply' ); const XML: XMLHttpRequest = new XMLHttpRequest(); XML.open( 'POST', _romhackplaza_manage_notifications.manage_url, true ); XML.onreadystatechange = function () { if (XML.readyState === XMLHttpRequest.DONE && XML.status === 200) { let real_response: any; try { real_response = JSON.parse(XML.responseText); } catch( e ) { console.error( e, XML.responseText ); return; } if( real_response != "-1" && real_response?.success == true ) { romhackplaza_manage_modal( romhackplaza_modal_notifications, "block", "Submit successful", "Notification sent.", "" ); _change_event_to_reload(); return; } else { romhackplaza_manage_modal( romhackplaza_modal_notifications, "block", "Submit error", real_response?.message ?? real_response, "" ); _change_event_to_reload(); return; } } } XML.send( form_data ); } } function _mark_as_read( e: Event ) { const button = e.currentTarget as HTMLElement; let form_data: FormData = new FormData(); form_data.append( 'notification', button.getAttribute( 'data-id' ) as string ) form_data.append( '_wpnonce', _romhackplaza_manage_notifications.mark_as_read_nonce ); form_data.append( 'action', 'notifications_unread_to_read' ); const XML: XMLHttpRequest = new XMLHttpRequest(); XML.open( 'POST', _romhackplaza_manage_notifications.manage_url, true ); XML.onreadystatechange = function () { if (XML.readyState === XMLHttpRequest.DONE && XML.status === 200) { let real_response: any; try { real_response = JSON.parse(XML.responseText); } catch( e ) { console.error( e, XML.responseText ); return; } if( real_response != "-1" && real_response?.success == true ) { document.getElementById( 'new-info-' + button.getAttribute( 'data-id' ) as string )?.remove(); button.parentElement?.remove(); return; } else { alert( "An error occurred : " + ( real_response?.message ?? real_response ) ); return; } } } XML.send( form_data ); } // Replies. const replies_buttons: NodeList = document.querySelectorAll('.reply-message'); for (const reply_button of replies_buttons) { reply_button.addEventListener("click", _reply_to_message ); } const mark_as_read_buttons: NodeList = document.querySelectorAll('.mark-as-read'); for (const mark_as_read_button of mark_as_read_buttons) { mark_as_read_button.addEventListener("click", _mark_as_read ); } })