diff --git a/core/src/main/java/de/srsoftware/umbrella/core/constants/Field.java b/core/src/main/java/de/srsoftware/umbrella/core/constants/Field.java index 512f19c4..33e16539 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/constants/Field.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/constants/Field.java @@ -139,6 +139,7 @@ public class Field { public static final String RECEIVERS = "receivers"; public static final String REDIRECT = "redirect"; + public static final String RENDER = "render"; public static final String RENDERED = "rendered"; public static final String REQUIRED_TASKS_IDS = "required_tasks_ids"; diff --git a/core/src/main/java/de/srsoftware/umbrella/core/model/Project.java b/core/src/main/java/de/srsoftware/umbrella/core/model/Project.java index d4dce056..3f935b6d 100644 --- a/core/src/main/java/de/srsoftware/umbrella/core/model/Project.java +++ b/core/src/main/java/de/srsoftware/umbrella/core/model/Project.java @@ -118,8 +118,7 @@ public class Project extends UmbrellaObject { return tagColors; } - @Override - public Map toMap() { + public Map toMap(boolean renderMarkdown){ var memberMap = new HashMap>(); if (members != null) for (var entry : members.entrySet()){ memberMap.put(entry.getKey(),entry.getValue().toMap()); @@ -128,7 +127,7 @@ public class Project extends UmbrellaObject { for (var state : allowedStates) stateMap.put(state.code(),state.name()); return super.map( NAME,name, - DESCRIPTION,mapMarkdown(description), + DESCRIPTION, renderMarkdown ? mapMarkdown(description) : Map.of(SOURCE,description), STATUS,status, COMPANY_ID,companyId, SHOW_CLOSED,showClosed, @@ -137,6 +136,11 @@ public class Project extends UmbrellaObject { TAG_COLORS,tagColors); } + @Override + public Map toMap() { + return toMap(true); + } + @Override public String toString() { return name(); diff --git a/frontend/src/routes/task/Index.svelte b/frontend/src/routes/task/Index.svelte index 7b35428b..3d8fd4d2 100644 --- a/frontend/src/routes/task/Index.svelte +++ b/frontend/src/routes/task/Index.svelte @@ -59,7 +59,7 @@ } async function loadProject(pid){ - const url = api(`project/${pid}`); + const url = api(`project/${pid}?render=false`); const resp = await get(url); if (resp.ok){ projects[pid] = await resp.json(); @@ -67,7 +67,7 @@ } async function load(){ - const url = api(`task?offset=${bounds.offset}&limit=${bounds.limit}`); + const url = api(`task?offset=${bounds.offset}&limit=${bounds.limit}&render=false`); const resp = await get(url); if (resp.ok){ let newTasks = await resp.json(); diff --git a/project/src/main/java/de/srsoftware/umbrella/project/ProjectModule.java b/project/src/main/java/de/srsoftware/umbrella/project/ProjectModule.java index 20a5e6eb..09c6d6ef 100644 --- a/project/src/main/java/de/srsoftware/umbrella/project/ProjectModule.java +++ b/project/src/main/java/de/srsoftware/umbrella/project/ProjectModule.java @@ -144,9 +144,11 @@ public class ProjectModule extends BaseHandler implements ProjectService { } private boolean getProject(HttpExchange ex, long projectId, UmbrellaUser user) throws IOException, UmbrellaException { + var params = queryParam(ex); + var render = !(params.get(RENDER) instanceof String r) || r.equals("true"); var project = loadMembers(projectDb.load(projectId)); if (!project.hasMember(user)) throw notAmember(t(PROJECT_WITH_ID,ID,project.name())); - var map = project.toMap(); + var map = project.toMap(render); project.companyId().map(companyService()::get).map(Company::toMap).ifPresent(data -> map.put(Field.COMPANY,data)); return sendContent(ex,map); } diff --git a/task/src/main/java/de/srsoftware/umbrella/task/TaskModule.java b/task/src/main/java/de/srsoftware/umbrella/task/TaskModule.java index 4863a8fc..1680be5f 100644 --- a/task/src/main/java/de/srsoftware/umbrella/task/TaskModule.java +++ b/task/src/main/java/de/srsoftware/umbrella/task/TaskModule.java @@ -280,8 +280,9 @@ public class TaskModule extends BaseHandler implements TaskService { } catch (NumberFormatException e) { throw invalidField(LIMIT, t(Text.NUMBER)); } + var render = !(params.get(RENDER) instanceof String r) || r.equals("true"); var tasks = taskDb.listUserTasks(user.id(), limit, offset, false); - var mapped = loadMembers(tasks).stream().map(Task::toMap); + var mapped = loadMembers(tasks).stream().map(t -> t.toMap(render)); return sendContent(ex, mapped); }