Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simple Joomla CCK #26

Draft
wants to merge 22 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 29 additions & 14 deletions index.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,11 @@ The sponsor is responsible for managing the review stage and votes.

### Draft

| Num | Title | Editor | Sponsor |
|:---:|--------------------------------|-------------------------|-------------------|
| N/A | N/A | N/A | N/A |
| Num | Title | Editor | Sponsor |
|:---:|-----------------------------------------|-----------------------------------------------------|------------------------------------------------------------------------|
| 1 | [Decpoupling Output](decoupling-output) | Niels Braczek <[email protected]> | Llewellyn van der Merwe <[email protected]> |
| 2 | [Form Admin](form-admin) | Niels Braczek <[email protected]> | Llewellyn van der Merwe <[email protected]> |
| 3 | [Simple CCK](simple-cck) | Niels Braczek <[email protected]> | Llewellyn van der Merwe <[email protected]> |

### Pre-Draft

Expand All @@ -51,20 +53,33 @@ The sponsor is responsible for managing the review stage and votes.
|:---:|--------------------------------|-------------------------|-------------------|
| N/A | N/A | N/A | N/A |

### Rejected

| Title | Editor | Sponsor |
|-----------------------------|-------------------------|-------------------|
| [Append Form](append-form) | Niels Braczek <[email protected]> | Llewellyn van der Merwe <[email protected]> |

## Numerical Index

| Status | Num | Title | Editor | Sponsor |
|--------|:---:|--------------------------------|-------------------------|-------------------|
| A | 0 | [RFC Procedure][rfc-procedure] | Niels Braczek <[email protected]> | Marco Dings <[email protected]> |
| Status | Num | Title | Editor | Sponsor |
|--------|:---:|-----------------------------------------|----------------------------------------------------|-------------------|
| A | 0 | [RFC Procedure][rfc-procedure] | Niels Braczek <[email protected]> | Marco Dings <[email protected]> |
| D | 1 | [Decpoupling Output](decoupling-output) | Niels Braczek <[email protected]> | Llewellyn van der Merwe <[email protected]> |
| D | 2 | [Form Admin](form-admin) | Niels Braczek <[email protected]> | Llewellyn van der Merwe <[email protected]> |
| D | 3 | [Simple CCK](simple-cck) | Niels Braczek <[email protected]> | Llewellyn van der Merwe <[email protected]> |

_**Legend:** A = Accepted | D = Draft | P = Pre-Draft | R = Review | X = Deprecated_

[workflow]: bylaws/workflow.md
[contentelements]: https://github.com/joomla-x/joomla-Specifications/tree/master/proposed
[authorisation]: https://github.com/joomla-x/joomla-standards/pull/2
[joomla-cli]: https://github.com/joomla-x/joomla-standards/pull/4
[mobile-app]: https://github.com/joomla-x/joomla-standards/pull/5
[simplify-admin]: https://github.com/joomla-x/joomla-standards/pull/6
[simplify-admin2]: https://github.com/joomla-x/joomla-standards/pull/7
[composer]: https://github.com/joomla-x/joomla-standards/pull/8
[rfc-procedure]: https://github.com/joomla-x/joomla-standards/blob/master/accepted/RFC-0-rfc-meta.md
[contentelements]: https://github.com/joomla/rfc/tree/master/proposed
[authorisation]: https://github.com/joomla/rfc/pull/2
[joomla-cli]: https://github.com/joomla/rfc/pull/4
[mobile-app]: https://github.com/joomla/rfc/pull/5
[simplify-admin]: https://github.com/joomla/rfc/pull/6
[simplify-admin2]: https://github.com/joomla/rfc/pull/7
[composer]: https://github.com/joomla/rfc/pull/8
[rfc-procedure]: https://github.com/joomla/rfc/blob/master/accepted/RFC-0-rfc-meta.md
[decoupling-output]: https://github.com/joomla/rfc/pull/36
[form-admin]: https://github.com/joomla/rfc/pull/31
[simple-cck]: https://github.com/joomla/rfc/pull/26
[append-form]: https://github.com/joomla/rfc/pull/18
170 changes: 170 additions & 0 deletions proposed/cck-meta.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
# Simple CCK Meta Document

## 1. Summary

A "Simple CCK" system is proposed here to extend the article data model with the help of custom fields and the necessary
functions to filter the contents according to any criteria and to display them in a specific sorting order.

This specification aims to enable users to create simple projects with on-board tools.

## 2. Why Bother?

Currently, if one wants to use custom fields with **Filtering** and **Ordering**, a CCK extension must be installed.
This prevents the majority of Joomla's own features (such as **Tags**, **Custom Fields**, **Categories**,
**Multi-Language**, **Associations**, **Workflow**, etc.) as well as the majority of other third party extensions from
being used without restriction.

Adding **Filtering** and **Ordering** options based on the **Custom Fields** makes it possible to create a website with
simple custom content types that offers all the possibilities of Joomla without the hassle of a full-fledged CCK.

For example, consider a list of activities to do on weekends, with fields like "date", "free or paid", "city". We need
to be able to filter by activities in a specific city and to sort them by price or by date.

## 3. Scope

### 3.1 Goals

While **Custom Fields** and **Workflow** already give the CMS a considerable degree of flexibility, they still lack
basic functionality. The aim of this proposal is to complete the range of functions so that it meets current
expectations and thus enable users to create simple projects with on-board tools. The built-in functionality should also
enable extension developers to streamline their solutions and achieve better integration with horizontal features such
as **Tagging** and **Versioning**.

### 3.2 Non-Goals

It is not a goal of this proposal to make existing extensions obsolete.

## 4. Approaches

Already in the days of the Idea Portal, the desire for a Content Construction Kit (CCK) was high on the wish list. The
feature request continues to pop up frequently.

In Joomla 3.1, a first attempt towards universal content was made with the Unified Content Model (UCM), but this was
never really pursued. Most Joomla developers do not know how to use this concept properly - or simply ignore it.

Joomla 3.7 brought **Custom Fields** for articles and users, an integration of the DPFields extension into the CMS. As
useful as this new functionality is, it is extremely limited because there is no way to filter or sort by the value of
the **Custom Fields**.

In Joomla 3.9 ([PR#20890](https://github.com/joomla/joomla-cms/pull/20890)), custom admin menus with a lot of **
Filtering** options were added, which is another major step towards a simple CCK supporting (kind of) different content
types.

### 4.1 Provide Custom Content Types

#### 4.1.1 Custom Content Types with Unified Content Model

##### Pros

##### Cons

* UCM is not well accepted; even the core developers are hardly familiar with the concept. Some if not most features are
not supported by UCM.

#### 4.1.2 Custom Content Types with Content Model

##### Pros

* `com_content` is a first class citizen in the core, so all core features are available to its content.

##### Cons

#### 4.1.3 Custom Content Types with Type Specific Model

##### Pros

* Features like **Filtering** and **Ordering** are easy to implement because of the dedicated database table.

##### Cons

* Core features must be supported explicitly to make them available to the content of the type specific model.

### 4.2 Add Missing Features to **Custom Fields**

The implementation of **Custom Fields** lacks support for **Filtering** and **Ordering**. This approach complements **
Custom Fields** with the missing functions.

##### Pros

* `com_content` is a first class citizen in the core, so all core features are available to its content.
* A specific set of **Custom Fields** can be considered a content type and displayed accordingly in the UI.

##### Cons

### 4.3 Comparison of Approaches

It quickly becomes apparent that the content must be managed by `com_content` so that the various content types can
benefit from the further development of the CMS. The approaches 4.1.1 and 4.1.3 are therefore immediately omitted from
further consideration. The approaches 4.1.2 and 4.2 on the other hand are not mutually exclusive; the **Custom Fields**
complement `com_content` perfectly.

### 4.4 Chosen Approach

**Custom Fields** (`com_fields`) are supplemented by the features

* **Filtering** and
* **Ordering**.

**Custom Fields** can optionally be grouped into categories; the name of the category serves as the content type.

## 5. Design Decisions

## 6. People

### 6.1 Editor(s)

* Suki Nozick <[email protected]>

### 6.2 Sponsors

* Niels Braczek <[email protected]>
nibra marked this conversation as resolved.
Show resolved Hide resolved

### 6.3 Contributors

* Cyril Thibout <[email protected]>

## 7. Votes

### Entrance Vote: PROD2022/019

| Voter | Vote |
|---------------------------------------------|-----:|
| Benjamin Trenkle | 0 |
| Christiane Maier-Stadtherr / Viviana Menzel | +1 |
| Crystal Dionysopoulos | +1 |
| David Jardin | |
| Franciska Perisa | +1 |
| Hannes Papenberg | -1 |
| Harald Leithner | +1 |
| Jacob Waisner | 0 |
| Llewellyn van der Merve | +1 |
| Mike Brandner | +1 |
| Niels Braczek | +1 |
| Olivier Buisard | +1 |
| Philip Walton | +1 |
| Robert Deutz | -1 |
| Roland Dalmulder | +1 |
| Shirielle Williams | |
| Shivam Raiput | +1 |
| Sigrid Gramlinger | +1 |
| Tobias Zulauf | -1 |
| **Result: PASSED** | |
| **in favor** | 12 |
| **against** | 3 |
| **abstentions** | 2 |
| **no vote** | 2 |

### Acceptance Vote:
_(not yet taken)_

## 8. Relevant Links

_**Note:** Order descending chronologically._

* [Custom Admin Menus PR#20890](https://github.com/joomla/joomla-cms/pull/20890)
* [Discussion: Sort articles by custom field](https://github.com/joomla/joomla-cms/discussions/42430)
* [Feature request: filter and sort articles by custom field](https://github.com/joomla/joomla-cms/issues/42831)

## 9. Errata

...
4 changes: 4 additions & 0 deletions proposed/cck-todo.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Issues to be solved by Simple CCK

* [ ] Custom Fields with Filtering and Ordering
* [ ] Any change on the Tags or Custom Fields value in an article does not generate a new version of the article. [CMS-Issue#15700](https://github.com/joomla/joomla-cms/issues/15700)