feat(memberController, memberRoutes, MembersView): implement Click-TT player registration feature

- Added a new endpoint for Click-TT player registration in memberController, allowing submission of existing player applications.
- Integrated the new endpoint into memberRoutes for handling requests.
- Updated MembersView to include a button for initiating Click-TT registration, with user confirmation and loading state management.
- Enhanced UI feedback for registration status, improving user experience during the application process.
This commit is contained in:
Torsten Schulz (local)
2026-03-11 13:17:59 +01:00
parent 9c30cd181c
commit 08095ce22e
5 changed files with 443 additions and 3 deletions

View File

@@ -336,7 +336,12 @@ function injectProxyNavigationScript(html, proxyBaseUrl, pageBaseUrl, sid) {
"var submitControl=event.target&&event.target.closest?event.target.closest('button, input[type=\"submit\"], input[type=\"image\"]'):null;",
'if(submitControl){',
'lastSubmitter=submitControl;',
"try{console.log('[ClickTT Proxy] submit control click',{name:submitControl.name||null,value:submitControl.value||null,type:submitControl.type||submitControl.tagName,formAction:submitControl.getAttribute?submitControl.getAttribute('formaction'):null,text:(submitControl.textContent||'').trim().slice(0,120)});}catch(e){}",
"try{console.log('[ClickTT Proxy] submit control click',{name:submitControl.name||null,value:submitControl.value||null,type:submitControl.type||submitControl.tagName,formAction:submitControl.getAttribute?submitControl.getAttribute('formaction'):null,onclick:submitControl.getAttribute?submitControl.getAttribute('onclick'):null,text:(submitControl.textContent||'').trim().slice(0,120)});}catch(e){}",
'if(!shouldAllowInlineConfirm(submitControl)){',
'event.preventDefault();',
'event.stopPropagation();',
'return;',
'}',
'}',
'if(!anchor||event.defaultPrevented)return;',
'if(!shouldAllowInlineConfirm(anchor)){',
@@ -353,6 +358,16 @@ function injectProxyNavigationScript(html, proxyBaseUrl, pageBaseUrl, sid) {
'var form=event.target;',
"if(!form||!form.tagName||form.tagName.toLowerCase()!=='form')return;",
'var submitter=event.submitter||lastSubmitter||null;',
'if(submitter&&!shouldAllowInlineConfirm(submitter)){',
'event.preventDefault();',
'event.stopPropagation();',
'return;',
'}',
'if(!shouldAllowInlineConfirm(form)){',
'event.preventDefault();',
'event.stopPropagation();',
'return;',
'}',
'var targetUrl=getSubmitTarget(form,submitter);',
'if(!targetUrl||!shouldProxyUrl(targetUrl))return;',
'if(submitter&&submitter.form===form&&submitter.name){',

View File

@@ -10,6 +10,7 @@ import {
quickUpdateTestMembership,
quickUpdateMemberFormHandedOver,
quickDeactivateMember,
requestClickTtPlayerRegistration,
deleteMemberImage,
setPrimaryMemberImage,
generateMemberGallery
@@ -39,5 +40,6 @@ router.post('/transfer/:id', authenticate, authorize('members', 'write'), transf
router.post('/quick-update-test-membership/:clubId/:memberId', authenticate, authorize('members', 'write'), quickUpdateTestMembership);
router.post('/quick-update-member-form/:clubId/:memberId', authenticate, authorize('members', 'write'), quickUpdateMemberFormHandedOver);
router.post('/quick-deactivate/:clubId/:memberId', authenticate, authorize('members', 'write'), quickDeactivateMember);
router.post('/clicktt-registration/:clubId/:memberId', authenticate, authorize('members', 'write'), requestClickTtPlayerRegistration);
export default router;