# Feature COMMS-876 - Adjust CKEditor version macros: single-line/multi-line layout argument for attribute value macros

Project: Stream Communicator
Status: closed
URL: https://community.openproject.org/work_packages/COMMS-876

## Planning

| Attribute | Value |
| --- | --- |
| Date |  |
| Priority | Medium |
| Target versions | 17.8.0 |
| Sprint | Sprint 7 |
| Backlog bucket |  |
| Votes |  |
| List |  |
| Roadmap |  |
| Relevance |  |

## OPEN POINTS / FEEDBACK

_No work packages_

## Features and Chunks

_No work packages_

## Bugs and other work packages

| ID | Type | Subject | Status | Assignee | Target versions | Spent time | Module |
| --- | --- | --- | --- | --- | --- | --- | --- |
| COMMS-895 | Documentation | Document the single-line/multi-line layout argument for attribute value macros | closed |  | 17.8.0 |  | Modules and project features / Text editor / CKEditor5 |

## Technical Details

| Attribute | Value |
| --- | --- |
| Module | Modules and project features / Text editor / CKEditor5 |
| Feature Flag |  |
| Requires doc change | Yes |
| Enterprise plan |  |

## Details

| Attribute | Value |
| --- | --- |
| Pull preview |  |
| Mockups |  |
| Accessibility | No |

## People

| Attribute | Value |
| --- | --- |
| Assignee |  |
| Accountable | Kabiru Mwenja |
| Product manager |  |
| Developers | Kabiru Mwenja |
| Designer | Parimal Satyal |
| Ordered by |  |
| Signed off by |  |
| Interest by |  |

## Estimates and progress

| Attribute | Value |
| --- | --- |
| PD (min) |  |
| PD (max) |  |
| Work |  |
| Labor costs |  |

## Description

**As** a user writing rich text (work package descriptions, comments, wiki pages, meeting notes)  
**I want to** choose whether a multi-value attribute macro renders its values as a list of lines or on a single line  
**so that** the macro output fits its surroundings: a block list when it stands alone, inline when it is part of a sentence.

**Acceptance criteria**

  - Attribute value macros accept an optional trailing layout argument: `workPackageValue:X:attribute:multiline` or `workPackageValue:X:attribute:singleline`.

  - Without the argument, multi-value attributes (e.g. `targetVersions`, multi-select list custom fields, multi-user custom fields) render multi-line: one value per line, as today.

  - With `singleline`, all values render on one line, comma-separated.

  - The argument is available on `workPackageValue` and `projectValue` macros for all attributes. On single-value attributes it has no effect.

  - The relative form without an id works with the argument: `workPackageValue:targetVersions:singleline` refers to the current work package.

  - Quoted custom field names work with the argument: `workPackageValue:X:"My list field":singleline`.

  - `multiline` and `singleline` are reserved keywords; an attribute that happens to carry such a name remains addressable by quoting it.

  - A misspelled keyword (e.g. `:block`) is not swallowed: the macro renders normally and the unrecognized text stays visible next to it, so the mistake is apparent.

  - `workPackageValue:X:version` keeps rendering for existing content and behaves as the single-line variant, backed by the version derived from the target versions (existing comments, journals and wiki pages cannot be migrated).

  - The layout argument is honored in both render paths: web (comments, descriptions, wiki) and exports (PDF).

**Permissions and visibility considerations**

  - *To whom is this feature visible?* Unchanged from existing macros: values resolve with the viewing user's permissions; a user only sees attribute values of work packages/projects they can see.

  - *When is it not visible?* Unchanged: without visibility of the referenced resource, the existing "not found" macro error appears. The layout argument grants no additional data access.

**Translation considerations**

  - `singleline` and `multiline` are reserved syntax keywords and not localized, consistent with macro names like `workPackageValue`. Attribute names remain localizable as today.

  - No new UI strings expected; existing macro error messages are reused.

**Out of scope**

  - CKEditor UI support for inserting the layout argument (autocomplete/toolbar); the argument is typed manually.

  - Changing how multi-value attributes render outside macros (tables, single view, timeline).

  - Migration or rewriting of existing user content.

  - Other macro families (`workPackageLabel` semantics, quickinfo `###`, resource link macros like `version#3`).
