Skip to content

Feat/favorite projects tasks#615

Open
bmestrallet wants to merge 7 commits into
developfrom
feat/favorite-projects-tasks
Open

Feat/favorite projects tasks#615
bmestrallet wants to merge 7 commits into
developfrom
feat/favorite-projects-tasks

Conversation

@bmestrallet

Copy link
Copy Markdown

What

Adds Favorites support for Task projects and tasks, reusing the platform favorites framework end to end:

  • A "Make it a favorite" / "Remove from favorite" row in the 3-dots menu of project cards and the task drawer.
  • Projects and Tasks sections in the global top-bar Favorites drawer, with items resolving their own title/icon/link.

No new REST/DAO/schema — favorites ride the generic /v1/social/favorites API, and the existing ProjectAclPlugin/TaskAclPlugin (object types project/task) already gate access.

How it works

  • Backend: the per-viewer favorite state is surfaced on the existing responses — a transient favorite flag on TaskDto (GET /tasks/{id}) and on the project JSON in ProjectRestService.buildJsonProject, computed via social FavoriteService.isFavorite(...). TaskRestService/ProjectRestService get FavoriteService (+ IdentityManager) injected.
  • Frontend: two extension bundles discovered by eXo's name convention ($utils.includeExtensions), so they load lazily and behave exactly like the Notes/Documents/AI favorites:
    • TaskFavoriteDrawerExtension (load-group FavoriteDrawerGRP) → registers the project/task favorite types + drawer-item components.
    • taskFavoriteMenuTaskExtension (load-group taskDrawerGrp) → registers the task-menu / task-project-menu rows.
  • i18n: UITopBarFavoritesPortlet.types.project/.task shipped in the add-on's Portlets_en.properties (merged into the social favorites bundle); only _en edited (Crowdin syncs the rest).

Test

  1. Open a project card 3-dots (as a manager) → Make it a favorite / Remove from favorite (star toggles, success toast).
  2. Open a task in the drawer → same row in its 3-dots menu.
  3. Open the top-bar Favorites drawer → Projects and Tasks sections appear (grouped), items show title + icon and link back.

Verified live on a 7.2.x platform.

Notes

  • The project 3-dots is manager-only (ProjectCardFront v-if="project.canManage"), so non-managers favorite/unfavorite from the drawer.

Benjamin and others added 7 commits June 28, 2026 03:24
Reuse the platform favorites framework: enrich Task/Project REST responses
with a per-viewer favorite flag (FavoriteService) and add a site-wide
favorite-extensions bundle that registers project/task in the top-bar
Favorites drawer and adds a favorite-button toggle to the project card and
task drawer 3-dots menus.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The 3-dots menu extensions must register in the same load-group as the task
drawer (taskDrawerGrp), not FavoriteDrawerGRP, so they are present when the
drawer/project cards render. Split menu registrations into a dedicated
task-favorite-menu bundle; keep drawer-item registrations in favorite-extensions.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…pes in drawer

- Menu rows now show 'Make it a favorite' / 'Remove from favorite'.
- Make taskDrawer depend on taskFavoriteExtensions so favorite-type +
  favorite-drawer-item registrations execute on task pages, surfacing Projects
  and Tasks sections in the global Favorites drawer.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Add UITopBarFavoritesPortlet.types.project/.task to Portlets_en.
- Use adjacent ranks 70/71 so Projects and Tasks group together.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…awer workaround

Rename modules to TaskFavoriteDrawerExtension (FavoriteDrawerGRP) and
taskFavoriteMenuTaskExtension (taskDrawerGrp) so eXo's includeExtensions()
name-convention discovery runs them; remove the taskDrawer <depends> hack.
Now lazy + global, identical to Documents/Notes/AI.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…iewers)

Inject the project favorite as an inline icon in the board header via the
task-board-header extension point (TasksViewDashboard), alongside the AI icon
when enabled. ProjectFavoriteBoardHeaderAction wraps favorite-button, registered
symmetrically with AI's project-ask-ai-board-header-action.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
On small screens (smAndDown) the inline favorite star in the project board
header is hidden to declutter; favoriting stays available elsewhere.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@bmestrallet

Copy link
Copy Markdown
Author

📌 Heads-up: these Task feature PRs were rebased onto develop (7.3.x) and stacked.

Merge order (each PR's base is the one below it; GitHub auto-retargets to develop as they land):

  1. Feat/favorite projects tasks #615 — Favorites for projects & tasks → base develop
  2. feat: revamp the project board header toolbar (compact, agenda-style,… #616 — Project board toolbar revamp → base feat/favorite-projects-tasks
  3. Feat/project card redesign 7.2.x #617 — Project card redesign → base feat/task-application-toolbar

Please review/merge in that order. I force-pushed #616 & #617 during the rebase, so prior local checkouts will have diverged and old review comments may be pinned to rewritten commits.

#618 (18 task MCP tools) is independent, off develop — can merge anytime.

Notes:

  • Feat/project card redesign 7.2.x #617's branch is still named feat/project-card-redesign-7.2.x but is now develop-based (name is just cosmetic).
  • All four build clean and were verified live on a local 7.3 platform (favorites, toolbar, card redesign, and the MCP tools).

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