Speck Concepts
Property Types
Property types are the basic building blocks of content in Speck. Property types are things like Text, Date, Number, Html, Asset etc. They're a bit like data types in programming languages and databases, but with additional super hero powers like the ability to define how a form field should rendered, how to validate values and so on. They are used when defining the properties of content types...
Content Types
Content types in Speck define different types of content, for example Articles or Products. Content items themselves are instances of a content type, e.g. a news article Monkeys invade Parramatta or a product ACME Monkey Wrench. Content items also have properties, e.g. article title "Monkeys invade Parramatta" or product Id "1024". Each property is an instance of a property type, e.g. Text or Number.
In addition to some developer-defined properties like an article title, all content types have a number of system-defined properties. These included a unique identifier, created and updated dates, created by user and updated by user values, a revision number (for version control) and optionally, a label and some keywords. Users can normally edit the label and keywords, but values for the other system-defined properties are generated by the system.
The label and keywords property values can be pre-defined by
developers and can be hidden from normal (non-super) users. Labels
are often used to show multiple content items of the same type on a
page (e.g. items labelled column_1 and column_2). Keywords are
often used to show different content items on different pages of a
site (e.g. items with the keyword "home" on one page and
items with the keyword "news" on another). The portal
framework takes this to a logical conclusion and uses pre-defined
application keywords to build a hierarchy of site sections, with
options to specify the template to be used to generate content, who
can access the generated content, and the layout to be used when
displaying content at each node in the hierarchy.
Content types also have methods that are used to display or otherwise manipulate instances of that type. For example a content type may have two methods used for displaying content, DisplayHeadline and DisplayFull. Speck creates a database table for each content type, and stores property values and other information about each instance of that content type (i.e. a content item) in a row.
Revisioning
Normally when you update a record in database or a file on a file system, the changes replace what was there previously. Speck allows multiple revisions of content items to be stored. When a content item is created or updated, a new revision is created and the previous revision saved. This results in a sequence of revisions and means that changes to a content item can be undone by rolling back to a previous revision. With revisioning enabled, the site can be viewed as it appeared on a previous date and removed content items can also be restored. The revision control system in SpeckCMS also provides support for the versioning and rollback of non-text assets (images, PDFs etc.).
Promotion
Content management systems often require that new content or modifications to existing content go through an approval process before appearing on the live version of the web site. The classic levels in this process are edit, review and live. When promotion is enabled in Speck, new content is created at the edit level and remains at edit level while it is under construction. It is then promoted to review before being approved and promoted to the live site. The same applies to deletions/removals, the marking of a content item for removal starts at edit level and must again be promoted for review before being approved. Only when then removal is approved is the content removed from the live version of the site.
Note: the promotion model feature hasn't been used much in production and may still have some unidentified bugs. It does work, but with so few people using it, this is the area where you are most likely to hit a bug. If you do use this feature and stumble upon something that looks like a bug, please contact us and let us know.