summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorhukl <hukl@eight.local>2009-02-02 20:53:40 +0100
committerhukl <hukl@eight.local>2009-02-02 20:53:40 +0100
commit9c793dd8b3adc8adb8d541b88a1f547e18937d14 (patch)
tree806d18b081c410e511ee7e3dbf4e8a9234fded18 /doc
parent5a8c9154d504c5376e807716c0cfcb76ef766d88 (diff)
more concept text
Diffstat (limited to 'doc')
-rw-r--r--doc/README_FOR_APP52
1 files changed, 45 insertions, 7 deletions
diff --git a/doc/README_FOR_APP b/doc/README_FOR_APP
index 9b76357..9f7133a 100644
--- a/doc/README_FOR_APP
+++ b/doc/README_FOR_APP
@@ -1,14 +1,52 @@
1CCCMS 1CCCMS
2 2
3==General
3 4
4The basic structure of the cccms is built from Nodes. Nodes live within a 5===Nodes
5nested set. When a arbitrary url is entered it is dispatched to the
6ContentController action render_page. Based on the url parameters the
7render_page action retrieves the corresponding Node from the database. Rather
8than walking through the tree of the nested set to find the node, the Node is
9retrieved directly by its unique_name which matches the url parameters.
10 6
11So much for now yeah 7The structure of the cccms is built from Node objects which live within a nested
8set. Therefor a given node has parents, children, descendants etc.
9
10The position of a node within the nested set corresponds directly to the URL
11under which that node is accessible:
12
13root
14 \__updates
15 \__2009
16 \___ultra_important_news
17
18=> http://domain/de/updates/2009/ultra_important_news
19
20Note that the first parameter after the domain is the locale. Everything after
21the locale identifier is the unique path of a given node. The unique path itself
22is generated from the slugs of the ancestors of a node. The last part of the
23unique path is taken from the slug of the node.
24
25Once a node is added to the nested set or moved within, the unique path of that
26node is generated from all its ancestors up to the root node. The computed path
27is then saved on the node object itself, allowing the system to retrieve a
28node simply by looking for the right url in the unique_path column. This is a
29lot faster then walking down the tree.
30
31===Pages
32
33As the nodes only built the structure, another object is necessary to actually
34hold all the contents. This object is called a page and is associated to a node
35via a one-to-many association. A node can have multiple pages associated to it.
36The node is actually a proxy for the pages behind it, and the pages act as a
37versioned page. By default, if you retrieve a node from the database by its
38unique path and ask this node for a page, the node would return the most recent
39one. It is also possible to get a page from a node, supplying a revision number.
40The node object would then retrieve the associated page with the corresponding
41revision number. For convenience purposes, the most recent page revision, in
42the scope of a node, is flagged as the head of this collection. This is
43primarily for making certain queries a lot easier where you only want to select
44upon the current pages in the db rather than on all.
45
46It is important to know that all the associations of a page, such as tags,
47authors etc, must be copied one a new revision of a page is created. The Page
48class is providing a deep_copy method to make sure everything important is
49copied.
12 50
13 51
14git clone ssh://git@svn.medienhaus.udk-berlin.de/usr/local/git/cccms 52git clone ssh://git@svn.medienhaus.udk-berlin.de/usr/local/git/cccms