owncloud / owncloud/ocis

[Feature Request] Synced Blocks (Page Transclusions)

Open
#6,560 1 comment 0 reactions 0 assignees View on GitHub
Category:Enhancement Status:Proposal
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.