[Feature Request] Synced Blocks (Page Transclusions)
- Dominant language
- Go
- Stars
- 2.1k
- Forks
- 274
- Avg merge
- 2d 2h
- Merged PRs (30d)
- 106
Description
# Feature Request: Synced Blocks (Page Transclusions)
## Is your feature request related to a problem? Please describe.
This feature request aims to meet the following objectives:
- Expand the market share of ownCloud Infinite Scale (oCIS) among end users.
- Increase the product value of a single oCIS instance.
The use case for this feature request is present in popular software such as Notion.
## Describe the solution you'd like
Develop an extension that let's users create synced blocks (page transclusions) within a document.
### Example: Notion
https://www.notion.so/help/synced-blocks
### Example: Obsidian
https://forum.obsidian.md/t/edit-transcluded-embedded-notes-blocks-in-place-likely-requires-wyswyg-first/15339 (+180)
### Definition: Transclusion
https://en.m.wikipedia.org/wiki/Transclusion
### Implementation
_This section provides an example of synced block behavior, but the implementation may not be optimal._
An extension defines a delineator and identifier used at the start and end of a synced block for a given file: This creates a synced block file that contains the content (that the given file references).
```md
# Title
# # Subtitle
This file contains an example of an synced block with the delineator "~~~".
~~~ ID
"This is content within the synced block.",
~~~ ID
```
The synced block file is created.
```md
~~~ ID
"This is content within the synced block.",
~~~ ID
```
When the synced block's delineator and identifier (~~~ ID) is added to another file, this Synced Block extension will autofill the synced block's content using the synced block file content reference. So updating a synced block on one file also updates every other file that references the synced block.
```csv
"This is a csv file used to clarify the example",
~~~ ID
"This is content within the synced block.",
~~~ ID
```
An export of the `csv` file contains the synced block content, but not it's delineator or identifier.
```csv
"This is a csv file used to clarify the example",
"This is content within the synced block.",
```
## Describe alternatives you've considered
- No Synced Block Feature: Copy and paste the synced content of every file every time synced content is updated.
# Resources
I am willing to develop the Synced Block extension on the following conditions:
- An optimal oCIS extension implementation is determined _(preferably by owncloud developers)_.
- An oCIS extension marketplace is released and stable.
- For [sponsorship](https://github.com/sponsors/switchupcb?frequency=one-time) or salary.
Otherwise, this feature request is published in an Open Source Software environment, available to all for implementation.
Contributor guide
Assessment
This issue has not been assessed yet.