История коммитов

simba77
docs: update 9.9 changelog with mail rewrite and module refactorings
- Mail: CKEditor migration with mail:convert-bbcode command, layered architecture rewrite
- Auth, registration, language: migrate to controller architecture
- Notifications, redirect: migrate to layered architecture
- Online: PSR-4 architecture; Help: extract pages to controllers
- Deprecate routes.local.php; remove unused RSS module
- Add PageMeta value object
simba77
fix(mail): correct IP display by passing raw attributes to UserProperties
User model's Ip cast converts the stored integer to a string via toArray(),
causing UserProperties::getFromArray() to receive "172.18.0.5" and compute
long2ip((int)"172.18.0.5") = long2ip(172) = "0.0.0.172".
Use getRawOriginal() to pass the integer value the method expects.
simba77
feat(mail): migrate message editor from BBCode to CKEditor
- Replace BBCode toolbar/textarea with the CKEditor partial in the write form (image upload disabled)
- Normalize editor content and strip empty tags on send via EditorContentNormalizer
- Render messages with HTMLPurifier + media embed + smilies instead of BBCode checkout
- Extract conversation list preview into MailMessagePreviewService for HTML content
- Add MailBbcodeToHtmlConverter and mail:convert-bbcode command to migrate legacy data
simba77
refactor(mail): drop _new suffix from contact_list template
The legacy contact_list template was removed, so the _new suffix is redundant. Rename contact_list_new.phtml to contact_list.phtml and update the ContactController render call.
simba77
refactor(mail): move installer to src/Install
Relocate Installer to src/Install with the PSR-4 namespace Johncms\Modules\Mail\Install, matching the module's layered structure.
simba77
refactor(mail): remove legacy dispatcher and includes
All mail actions are migrated to dedicated controllers. Remove the legacy index.php dispatcher, the ignor/load includes and the orphaned contact_list template (the contacts index uses contact_list_new).
simba77
feat(mail): migrate message sending and conversation clearing
- Add POST /mail/write/{id} sending (SendMessageUseCase, SendMessageCommand): validation, antiflood, set_mail access, ignore checks, file upload, contact creation, duplicate guard
- Add GET/POST /mail/clear/{id} (ClearConversationController, ClearConversationUseCase) with per-message soft/hard delete
- Extend MailFileService with file name parsing, extension allowlist and uploaded file storage
- Add repository methods getLastMessageBetween, updateContactTime; drop unused clearConversation
- Remove legacy /mail dispatcher route and includes/write.php
- Drop legacy compose-by-nick and base64 mini-upload paths
simba77
fix(mail): point model relations to Eloquent User
MailMessage and Contact relations referenced Johncms\System\Users\User (the current-user service, not an Eloquent model), causing 'Call to undefined method getConnectionName()' on eager loading. Point them to Johncms\Users\User.
simba77
chore: ignore upload/downloads/screen uploads
simba77
refactor(mail): migrate files and conversation pages to layered architecture
- Add GET /mail/files page (FilesController, GetAttachedFilesUseCase, File DTOs); drop legacy includes/files.php and the ?act=files flow
- Add GET /mail/write/{id} conversation view (WriteController::conversation, GetConversationUseCase, message DTOs)
- Fix getConversation query semantics (delete/sys/spam filters, OR grouping) and eager-load recipient; add markAsReadByIds for marking received messages read
- Add MailFileService::formatSize
- Inject Tools/Bbcode via constructor instead of di('tools')/di('bbcode') in conversation use cases (fixes ServiceNotFoundException)
- Point conversation/contact/unblock links to clean URLs (profile, blocklist, legacy blocklist include)