Skip to content

feat: add Office overview page with recent / shared / templates#5598

Open
karlitschek wants to merge 1 commit intomainfrom
feature/office-overview-page
Open

feat: add Office overview page with recent / shared / templates#5598
karlitschek wants to merge 1 commit intomainfrom
feature/office-overview-page

Conversation

@karlitschek
Copy link
Copy Markdown
Member

Adds a new top-level "Office" entry to the app menu that opens a Vue SPA at /apps/richdocuments/overview, providing a single landing page for the user's office work.

Features:

  • Home with three sections: My recent docs, Shared with me, Templates
  • Dedicated views for each, with date grouping (Today / Yesterday / Earlier this week / Earlier this month / Older) and sticky headers
  • Type filter pills (Documents / Spreadsheets / Presentations / PDFs)
  • List and grid view toggle, persisted in localStorage
  • Hover quick-preview popover (mounted at via singleton)
  • Active-editor badges with pulsing live indicator (WOPI tokens)
  • Pinning / favourites integrated with Nextcloud's per-user tags so pins also appear in the Files app's Favorites view
  • Type-coloured thumbnails with frame on grid cards
  • Friendly empty-state illustrations with calls to action
  • Confetti + showSuccess toast on document creation
  • Smooth fade/slide route transitions, all motion respects prefers-reduced-motion

Backend:

  • OverviewService runs an indexed user-folder SearchQuery (mime IN + 60-day mtime window), partitions by ownership for recent vs shared, and batch-loads active editors and favourites per page
  • OverviewController renders the SPA shell as RENDER_AS_USER
  • OverviewApiController exposes paginated OCS endpoints, plus create-from-template and favourite-toggle, with strict input validation and OCS-bypass CSRF handling

Frontend:

  • Vue 2 + vue-router 3 SPA mounted at #content (Files-app pattern)
  • Reuses Nextcloud's design system primitives (NcContent, NcAppNavigation, NcAvatar, NcDateTime, NcDialog, NcEmptyContent, NcLoadingIcon, NcButton, NcTextField)
  • Optimistic UI for pin toggling
  • Resolves: #
  • Target version: main

Summary

TODO

  • ...

Checklist

  • Code is properly formatted
  • Sign-off message is added to all commits
  • Documentation (manuals or wiki) has been updated or is not required

Adds a new top-level "Office" entry to the app menu that opens a Vue
SPA at /apps/richdocuments/overview, providing a single landing page
for the user's office work.

Features:
- Home with three sections: My recent docs, Shared with me, Templates
- Dedicated views for each, with date grouping (Today / Yesterday /
  Earlier this week / Earlier this month / Older) and sticky headers
- Type filter pills (Documents / Spreadsheets / Presentations / PDFs)
- List and grid view toggle, persisted in localStorage
- Hover quick-preview popover (mounted at <body> via singleton)
- Active-editor badges with pulsing live indicator (WOPI tokens)
- Pinning / favourites integrated with Nextcloud's per-user tags so
  pins also appear in the Files app's Favorites view
- Type-coloured thumbnails with frame on grid cards
- Friendly empty-state illustrations with calls to action
- Confetti + showSuccess toast on document creation
- Smooth fade/slide route transitions, all motion respects
  prefers-reduced-motion

Backend:
- OverviewService runs an indexed user-folder SearchQuery (mime IN +
  60-day mtime window), partitions by ownership for recent vs shared,
  and batch-loads active editors and favourites per page
- OverviewController renders the SPA shell as RENDER_AS_USER
- OverviewApiController exposes paginated OCS endpoints, plus
  create-from-template and favourite-toggle, with strict input
  validation and OCS-bypass CSRF handling

Frontend:
- Vue 2 + vue-router 3 SPA mounted at #content (Files-app pattern)
- Reuses Nextcloud's design system primitives (NcContent,
  NcAppNavigation, NcAvatar, NcDateTime, NcDialog, NcEmptyContent,
  NcLoadingIcon, NcButton, NcTextField)
- Optimistic UI for pin toggling

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Signed-off-by: Frank Karlitschek <karlitschek@users.noreply.github.com>
@karlitschek
Copy link
Copy Markdown
Member Author

@jancborchardt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant