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

.
refactor(admin): migrate to new pagination component
Replace johncms/johncms-pagination (LengthAwarePaginator) and Tools::displayPagination with Johncms\Http\Pagination across user list, bans, IP bans, IP search, registration moderation, ads and hidden forum content:
- 7 repositories: paginate*() -> count*()/get*(limit, offset): Collection (shared query builders for joinSub-based ban/IP-search queries)
- 7 use cases split into count()/getPage(); UserListResultDTO and IpSearchResultDTO now carry a Collection instead of a paginator
- 8 controllers use PaginationFactory + PaginationGuard
.
refactor(forum): migrate to new pagination component
Replace johncms/johncms-pagination (LengthAwarePaginator) and Tools::displayPagination with Johncms\Http\Pagination:
- ForumTopicRepository: paginateReadBySectionId -> countReadBySectionId/getReadBySectionId
- ForumMessageRepository: paginateByTopicIdWithUsersAndFiles -> countAllByTopicId/getByTopicIdWithUsersAndFiles
- topic and section use cases compute total + page slice (no rendering); controllers build the Pagination from total+page (no guard, preserving SEO URLs / jump-to-last-message behavior)
- visitor/search/poll/period/unread controllers and ViewForumFilesUseCase: pagination moved into controllers via PaginationFactory
.
refactor(downloads): migrate to new pagination component
Replace johncms/johncms-pagination (LengthAwarePaginator) and Tools::displayPagination with Johncms\Http\Pagination:
- DownloadFileRepository: 6 paginate*() -> count*()/get*(limit, offset); top users via distinct count + User hydration
- 6 use cases split into count()/getPage(); result DTOs now carry a Collection instead of a paginator
- use-case controllers (New/Search/TopUsers/UserFiles/Favorites/CommentsReview) and inline-query controllers (Index/DownloadCategory/FilesModeration) use PaginationFactory + PaginationGuard
.
refactor(library): migrate to new pagination component
Replace Tools::displayPagination with Johncms\Http\Pagination across Section, NewArticles, Tags, Premod, Search and Article controllers:
- list controllers build Pagination from the total count, use getOffset()/getPerPage(), and PaginationGuard for canonical-page redirects
- ArticleController is a one-text-page-per-page reader: perPage=1 with an explicit (already clamped) current page, no guard
- pagination links keep their query params (tag/search/t) via the component
.
refactor(mail): migrate to new pagination component
Replace johncms/johncms-pagination (LengthAwarePaginator) with Johncms\Http\Pagination across conversations, incoming/outgoing lists, attached files and contacts:
- MailMessageRepository: paginate*() -> count*()/get*(limit, offset); grouped conversations use distinct count + hydrateConversationUsers(); remove dead getIncomingGrouped/getOutgoingGrouped
- ContactRepository: paginateContacts() -> countContactList()/getContactList()
- 5 use cases split into count()/getPage()
- controllers: PaginationFactory + PaginationGuard + PageMeta
- drop total/pagination fields from Conversation/ConversationList/FileList/ContactList result DTOs
.
refactor(profile): migrate to new pagination component
Replace johncms/johncms-pagination (LengthAwarePaginator) with Johncms\Http\Pagination across activity, bans, IP history and karma:
- repositories: paginate*() -> count*()/get*(limit, offset): Collection (shared query builders)
- use cases: split into count()/getPage() with access checks in both
- controllers: PaginationFactory + PaginationGuard (+ PageMeta where present)
- drop total/pagination fields from BanHistoryDTO, ActivityDTO, IpHistoryDTO, KarmaListDTO
- reuse existing countVotesReceivedAfter() for the new-karma list
.
refactor(album): migrate to new pagination component
Replace johncms/johncms-pagination (LengthAwarePaginator) and Tools::displayPagination with Johncms\Http\Pagination:
- AlbumRepository: paginateOwnersBySex -> countOwners()/getOwners() (shared ownersQuery builder)
- AlbumPhotoRepository: paginatePhotosByAlbum -> getPhotosByAlbum(); paginateTop -> countTop()/getTop() (shared topQuery, reorder() before count)
- use cases split into count()/getPage(); album/photo guards via loadAccessibleAlbum()
- controllers: PaginationFactory + PaginationGuard + PageMeta; ShowPhoto uses perPage=1 with explicit current page
- remove TopResultDTO and UsersListResultDTO; drop total from AlbumViewResultDTO
.
refactor(news): migrate to new pagination component
Replace johncms/johncms-pagination (LengthAwarePaginator) with Johncms\Http\Pagination:
- Article: countArticles() + getArticles(sections, limit, offset): Collection
- SectionController/SearchController/Admin\AdminController: PaginationFactory + PaginationGuard
- CommentsController: rebuild flat Laravel-shape JSON for the Vue pagination widget from Pagination (no behavior change for frontend)
- templates: render items + $pagination instead of paginator->render()
.
refactor(community): migrate to new pagination component
Replace johncms/johncms-pagination (LengthAwarePaginator) with Johncms\Http\Pagination:
- repository: 4 paginate*() -> countApproved*()/getApproved*(limit, offset): Collection
- use cases: split execute() into count() + getPage(); search exposes validate()/count()/getPage()
- controllers: PaginationFactory + PaginationGuard + PageMeta; own page titles
- remove AdministrationUsersResultDTO and CommunitySearchResultDTO
.
refactor(notifications): migrate to new pagination component
Replace johncms/johncms-pagination (LengthAwarePaginator) with Johncms\Http\Pagination:
- repository: countNotifications() + getNotifications(limit, offset): Collection
- use case: split into count() and getPage(limit, offset)
- controller: PaginationFactory + PaginationGuard (canonical-page redirect) + PageMeta
- DTO: drop total/pagination fields (pagination now lives in controller)