Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package com.condation.cms.api.ui.annotations;

/*-
* #%L
* CMS Api
* %%
* Copyright (C) 2023 - 2026 CondationCMS
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* #L%
*/

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
* Registers a method as an application in the manager app launcher.
* The action is supplied by {@link ScriptAction}, {@link HookAction}, or
* {@link com.condation.cms.api.annotations.Action} on the same method.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface App {

String id();

String title();

String icon();

String[] permissions() default {};
}
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,14 @@
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface ShortCut {
String title();
String id();
String title() default "";
String id() default "";
String parent() default "";
String icon() default "";
String hotkey () default "";
String section () default "";

String[] permissions();
String[] permissions() default {};

ScriptAction scriptAction () default @ScriptAction(function = "", module = "");
HookAction hookAction () default @HookAction("");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,24 +23,35 @@

import com.condation.cms.api.auth.Permissions;
import com.condation.cms.api.extensions.AbstractExtensionPoint;
import com.condation.cms.api.ui.action.UIScriptAction;
import com.condation.cms.api.ui.apps.App;
import com.condation.cms.api.ui.apps.AppExtensionPoint;
import com.condation.cms.api.ui.annotations.App;
import com.condation.cms.api.ui.annotations.ScriptAction;
import com.condation.cms.api.ui.annotations.ShortCut;
import com.condation.cms.api.ui.extensions.UIActionsExtensionPoint;
import com.condation.modules.api.annotation.Extension;
import java.util.List;
import java.util.Map;

/** Registers role and manager-user administration apps. */
@Extension(AppExtensionPoint.class)
public class AccessManagerAppExtension extends AbstractExtensionPoint implements AppExtensionPoint {
@Override
public List<App> getApps() {
return List.of(
new App("role-manager", "Roles", "/manager/assets/apps/role-manager.svg",
new UIScriptAction("/manager/actions/access/manage-roles", Map.of()),
List.of(Permissions.ROLE_MANAGE)),
new App("user-manager", "Users", "/manager/assets/apps/user-manager.svg",
new UIScriptAction("/manager/actions/access/manage-users", Map.of()),
List.of(Permissions.USER_MANAGE)));
@Extension(UIActionsExtensionPoint.class)
public class AccessManagerAppExtension extends AbstractExtensionPoint implements UIActionsExtensionPoint {

@App(
id = "role-manager",
title = "Roles",
icon = "/manager/public/apps/role-manager.svg",
permissions = Permissions.ROLE_MANAGE)
@ShortCut(section = "Apps")
@ScriptAction(module = "/manager/actions/access/manage-roles")
public void manageRoles() {
// Marker method for manager UI annotations.
}

@App(
id = "user-manager",
title = "Users",
icon = "/manager/public/apps/user-manager.svg",
permissions = Permissions.USER_MANAGE)
@ShortCut(section = "Apps")
@ScriptAction(module = "/manager/actions/access/manage-users")
public void manageUsers() {
// Marker method for manager UI annotations.
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,27 +22,26 @@
*/
import com.condation.cms.api.auth.Permissions;
import com.condation.cms.api.extensions.AbstractExtensionPoint;
import com.condation.cms.api.ui.action.UIScriptAction;
import com.condation.cms.api.ui.apps.App;
import com.condation.cms.api.ui.apps.AppExtensionPoint;
import com.condation.cms.api.ui.annotations.App;
import com.condation.cms.api.ui.annotations.ScriptAction;
import com.condation.cms.api.ui.annotations.ShortCut;
import com.condation.cms.api.ui.extensions.UIActionsExtensionPoint;
import com.condation.modules.api.annotation.Extension;
import java.util.List;
import java.util.Map;

/**
* Makes the menu manager available as the first manager app.
*/
@Extension(AppExtensionPoint.class)
public class MenuManagerAppExtension extends AbstractExtensionPoint implements AppExtensionPoint, UIActionsExtensionPoint {
@Extension(UIActionsExtensionPoint.class)
public class MenuManagerAppExtension extends AbstractExtensionPoint implements UIActionsExtensionPoint {

@Override
public List<App> getApps() {
return List.of(new App(
"menu-manager",
"Menu Manager",
"/manager/assets/apps/menu-manager.svg",
new UIScriptAction("/manager/actions/menu/manage-menus", Map.of()),
List.of(Permissions.MENU_MANAGE)));
@App(
id = "menu-manager",
title = "Menu Manager",
icon = "/manager/public/apps/menu-manager.svg",
permissions = Permissions.MENU_MANAGE)
@ShortCut(section = "Apps")
@ScriptAction(module = "/manager/actions/menu/manage-menus")
public void manageMenus() {
// Marker method for manager UI annotations.
}
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,10 @@ public Mapping getMapping() {
createFileSystem("/manager"),
"/manager",
List.of(
"public/manager-login.js"
"public/manager-login.js",
"public/apps/menu-manager.svg",
"public/apps/role-manager.svg",
"public/apps/user-manager.svg"
)
)
);
Expand Down
Loading
Loading