You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/decisions/0017-generalized-containers.rst
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,7 +7,7 @@ Context
7
7
This ADR proposes a model for containers that can hold different types of content and can be used to model other content types with similar behavior, such as units, subsections, sections, or courses. The model defines containers' core structure and purpose, the types of containers, content constraints, container children, version control, publishing, and pruning.
8
8
9
9
Key Concepts
10
-
============
10
+
~~~~~~~~~~~~~
11
11
12
12
The following definitions provide context for the terms used in this ADR:
13
13
@@ -24,7 +24,7 @@ Decisions
24
24
---------
25
25
26
26
1. Core Structure and Purpose of Containers
27
-
===========================================
27
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
28
28
29
29
This section defines the purpose and structure of containers, explaining how they are designed to hold various types of content through a parent-child setup.
30
30
@@ -37,7 +37,7 @@ This section defines the purpose and structure of containers, explaining how the
37
37
- Units (units Django application, builds on containers and selectors).
38
38
39
39
2. Container Types and Content Constraints
40
-
==========================================
40
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
41
41
42
42
This section defines container types, content constraints, hierarchy, and extensibility. It introduces the main types of containers and outlines how content limitations and configurations are handled at the application level to support flexible content structures.
43
43
@@ -49,7 +49,7 @@ This section defines container types, content constraints, hierarchy, and extens
49
49
- Containers will follow extensibility principles in `Content Extensibility Through Model Relations <0003-content-extensibility.rst>`_ for creating new container types or subtypes.
50
50
51
51
3. Container Children and Relationships
52
-
=======================================
52
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
53
53
54
54
This section defines container children, their order, and relationships, covering flexible connections and support for draft and published states of their children.
55
55
@@ -63,7 +63,7 @@ This section defines container children, their order, and relationships, coverin
63
63
- A single child (publishable entity) can be shared by multiple containers, allowing for reuse of content across different containers. For instance, a component can be shared by multiple units.
64
64
65
65
4. Container Versioning, Deletions and Structural Changes
This section defines the versioning rules for containers, explaining when a new version is created based on structural or metadata changes. It also clarifies how changes in child elements affect (or do not affect) container versions.
69
69
@@ -74,7 +74,7 @@ This section defines the versioning rules for containers, explaining when a new
74
74
- Changes to container metadata, such as updating its title or description, will also create a new version.
75
75
76
76
5. Publishing
77
-
=============
77
+
~~~~~~~~~~~~~
78
78
79
79
This section explains the publishing process for containers, detailing how containers and their children become accessible, either together or independently, based on their publication state. The publishing process happens on container versions, but throughout this section we'd call them containers for simplicity.
80
80
@@ -84,7 +84,7 @@ This section explains the publishing process for containers, detailing how conta
84
84
- Containers are not affected by the publishing process of its children. This means that publishing a component won't trigger new publishing processes for a container.
85
85
86
86
6. Pruning
87
-
==========
87
+
~~~~~~~~~~
88
88
89
89
This section defines the rules for pruning container versions, explaining when a container version can be pruned and the effects of pruning on the container and its children.
Copy file name to clipboardExpand all lines: docs/decisions/0018-units-as-containers.rst
+6-6Lines changed: 6 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,23 +12,23 @@ Decisions
12
12
All decisions from `0017-generalized-containers.rst <0017-generalized-containers.rst>`_ are still valid but are written here alongside unit-specific decisions for better illustration.
13
13
14
14
1. Units as Containers
15
-
=======================
15
+
~~~~~~~~~~~~~~~~~~~~~~~
16
16
17
17
- A unit is a concrete type of container that holds components.
18
18
- A unit is a container, making it also a publishable entity.
19
19
- Units build on the generalized container capability to hold components and selectors for dynamically selecting 0-N PublishableEntities.
20
20
- Units have their own Django application that builds on containers and selectors.
21
21
22
22
2. Unit Types and Content Constraints
23
-
======================================
23
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24
24
25
25
- Units can only hold components as their children but will not enforce this restriction at the model level.
26
26
- Units are the first level of nested content types Unit > Components.
27
27
- Content restrictions for units are implemented at the application layer, allowing units to limit their children to only components. None of this is enforced at the model level.
28
28
- Unit subtypes can be created by following the extensibility principles in `Content Extensibility Through Model Relations <0003-content-extensibility.rst>`_.
29
29
30
30
3. Unit Children and Relationships
31
-
==================================
31
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
32
32
33
33
- The children of a unit can only be components.
34
34
- Components in a unit are referenced as an ordered list. For example, a unit can have a list of components that are ordered by the author.
@@ -37,20 +37,20 @@ All decisions from `0017-generalized-containers.rst <0017-generalized-containers
37
37
- A single component can be reference by multiple units.
38
38
39
39
4. Next Unit Versions
40
-
======================
40
+
~~~~~~~~~~~~~~~~~~~~~
41
41
42
42
Only changes to the unit itself (e.g., title, ordering of components, adding or removing a component, or changes to the unit's metadata) will create a new version of the unit. Changes to the components of a unit will not create a new version of the unit.
43
43
44
44
5. Publishing
45
-
==============
45
+
~~~~~~~~~~~~~
46
46
47
47
- Units can be published, allowing their content to be accessible from where the unit is being used. Only after a unit is published it can be reused as content for other containers.
48
48
- When a draft unit is published, all its draft components are also published.
49
49
- Components within a unit can be published independently of the unit itself. This could happen for components that are shared by multiple units.
50
50
- Units are not affected by the publishing process of its components.
51
51
52
52
6. Pruning
53
-
==========
53
+
~~~~~~~~~~
54
54
55
55
- A unit version can be pruned if it's not being used by any subsections, it's not a published version, and it's not the latest version of the unit.
56
56
- In a top-down approach, start with the unit and work your way down to its component versions.
Copy file name to clipboardExpand all lines: docs/decisions/0019-selectors.rst
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,5 @@
1
1
19. Selectors for Dynamically Selecting Content
2
-
===========================================
2
+
===============================================
3
3
4
4
Context
5
5
-------
@@ -12,7 +12,7 @@ This ADR proposes a way to represent dynamic members of a container, where dynam
12
12
And any other custom use case to dynamically select members for a container. This proposal introduces the concepts of selectors and variants to implement this type of dynamic selection.
13
13
14
14
1. Core Structure
15
-
=================
15
+
~~~~~~~~~~~~~~~~~
16
16
17
17
This section explains the concepts and behaviors used to build dynamic selection, selectors and variants.
18
18
@@ -23,7 +23,7 @@ This section explains the concepts and behaviors used to build dynamic selection
23
23
- Variants are build on the parent-child relationship used for containers and their members, storing the dynamically selected content as an ordered list as containers do.
24
24
25
25
2. Selector Types and Selecting Content
26
-
=======================================
26
+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
27
27
28
28
This section describes how different types of selectors work and how they handle the selection of dynamic content.
29
29
@@ -33,7 +33,7 @@ This section describes how different types of selectors work and how they handle
33
33
- A compositor is responsible for populating the variants but will not be implemented as part of the selector application which belongs to the authoring app.
34
34
35
35
3. Versioning
36
-
=============
36
+
~~~~~~~~~~~~~
37
37
38
38
A new version of a selector is created whenever the pool of concent changes by adding, removing or reordering existing members.
0 commit comments