fe_comment v2: FE-user feedback tickets with summary, uploads and API
- Replace the v1 submit endpoint with a full JSON API under
/api/fe-comment/ (state, feedback create/update/delete, uploads,
summary notes/recipients, submit), guarded by frontend login and a
configurable FE user group; unauthorized callers get {"allowed":false}
- New models: tx_fecomment_summary (one open ticket per user, status
open/sent) and tx_fecomment_feedback (url, RTE note, FAL attachments),
both editable in the backend on the ticket storage page
- FeedbackApiMiddleware registered after frontend authentication (the
frontend.user attribute does not exist earlier); uploads land in
fileadmin/fe_comment/summary-<uid>/ with mime/extension check, 20 MB cap
- Submit sends one HTML mail (author block, items with attachment links,
reply-to = FE user mail) to selected recipients with mailTo fallback,
then closes the summary
- felogin wired React-compatible: felogin.pid=520 plus headless FeLogin
JSON templates via site settings - felogin v14 and EXT:headless both
claim templateRootPaths.10, the felogin.view.* settings feed exactly
that index, so the structured JSON form (incl. __RequestToken) wins
- Read the sys_file_reference insert id before syncAttachmentCount():
DBAL throws "no identity value" once the count UPDATE has run
- migrations: drop_fecomment_tables.php (repairs the no-uid tables,
only drops when empty), check_feuser.php (login diagnosis),
fec_login_test.sh / fec_api_test.sh (curl chains incl. CSRF token flow)
This commit is contained in:
1 parent
78af83d2e3
commit
872c6e715c
14 files changed
+842
-95
No files matched your search
@@ -0,0 +1,46 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* One feedback item (page URL + rich-text note + attachments), owned by a
|
||||
* FE user, belonging to a summary. Written from the front end.
|
||||
*/
|
||||
return [
|
||||
'ctrl' => [
|
||||
'title' => 'Feedback',
|
||||
'label' => 'url',
|
||||
'tstamp' => 'tstamp',
|
||||
'crdate' => 'crdate',
|
||||
'delete' => 'deleted',
|
||||
'sortby' => 'sorting',
|
||||
'hideTable' => true,
|
||||
'iconfile' => 'EXT:fe_comment/Resources/Public/Icons/Extension.svg',
|
||||
'security' => ['ignorePageTypeRestriction' => true],
|
||||
],
|
||||
'types' => [
|
||||
'1' => ['showitem' => 'url, note, attachments, fe_user'],
|
||||
],
|
||||
'columns' => [
|
||||
'summary' => [
|
||||
'config' => ['type' => 'passthrough'],
|
||||
],
|
||||
'fe_user' => [
|
||||
'label' => 'Author (frontend user)',
|
||||
'config' => ['type' => 'group', 'allowed' => 'fe_users', 'maxitems' => 1, 'size' => 1],
|
||||
],
|
||||
'url' => [
|
||||
'label' => 'Page URL',
|
||||
'config' => ['type' => 'input', 'size' => 50, 'max' => 2048],
|
||||
],
|
||||
'note' => [
|
||||
'label' => 'Note',
|
||||
'config' => ['type' => 'text', 'rows' => 6, 'enableRichtext' => true],
|
||||
],
|
||||
'attachments' => [
|
||||
'label' => 'Attachments',
|
||||
'config' => [
|
||||
'type' => 'file',
|
||||
'maxitems' => 20,
|
||||
],
|
||||
],
|
||||
],
|
||||
];
|
||||
Reference in new issue
Block a user