Originally Said By: Ray Borduin
Please explain those features in detail and perhaps we will be able to meet your needs.
here goes...
I will use the word 'article' to refer to a database record containing HTML content
SECTION EDITING
A site usually is made up of sections - Home, About Us, Contact etc
You should be able to add, delete, reorder (apply unique sort order value), turn on and off (publish visibility), assign a user level (visibility) controlled by variable (session etc) and assign the section to be a master or sub section of another section.
How to - very generally....
Each section has its own ID
each section has a foreign key points to its parent section ID (if the value of this fk is 0 then it is a master (top level section)
For subsections - the parent FK will be that value of the parents database ID.
On selection of the parent menu value, the menu depth is calculated and added to the section information - useful for restricting the depth of menu creation
*Articles are assigned to a particular section by foreign key in the 'article' DB record (FK = Section ID value)
If Home ID=1
all items with a section ID of 1 appear on the Home page/section (filtered by recordset)
ORDER ON PAGE
Articles assigned to a particular section can be ordered (assuming more than one article can be assigned to a specific page content area)
Each Article is given a unique (incrementing) SORT value when it is created (much like an ID). - always incremented.
The article display order is sorted in the recordset.
re ordering is simply a case of swapping the sort value with the article you wish to swap order with.
For a new record its simply a case of finding the MAX value for the sort value (of all articles) and adding one.(no issues with getting last insert id)
your page contains articles with ID:SORT pairs
maybe a typical side column would contain articles as...
ID=1:SORTVALUE=1 Article about Golf
8:8 Article about Fishing
58:55 Article about Tennis
94:80 Article about Swimming
select and swap the sort values of ID 1 and 94 in the CMS and you reorder first and last articles in that column
do this as many times as you wish to create the desired list order
in this example you end up with ...
94:1 Article about Swimming
8:8 Article about Fishing
58:55 Article about Tennis
1:80 Article about Golf
The same sorting technique can be used for SECTIONS/NAV
POSITION ON A PAGE
Each article has its own page position identifier, indicating where it is on the page.
Page content recordset select the article(s) for each area based on this filter value
This value is up to the individual - but an example of 5 areas on a page....
1=primary content
2=secondary content
3=tertiary content
4=header content
5=footer content
assigning an article a position value of 2 means its on the secondary content
change that to 5 and its should automatically appear in the footer
USER LEVEL CONTROL
Each article is give a user level value
again the recordset displays articles by comparing this value with the current user level session value
(values are for example)
0 = Site visitor - default article level - if you don't login, you see this
10 = registered user free
100 = registered user paid
1000 = Admin
Users see articles based on their login user level (session) value
Either as SPECIFIC information to a specific user level: recordset filters/shows article if user level = article user level (less flexible but still an option)
OR
the user sees ALL articles at and below their user level: recordset filters/shows article if user level => article user level
The same can be applied to Sections/Nav
A nice option would be a messgage in the page that says
Log in for further information for (user level name) if you are not logged in
(PHP - do this by using an ELSE statement in the article display code)
To summarize
A SECTION knows its Parent level, sort order, publish visibility, user level visibility (+ who updated it and when. Section info could also contain Search Engine tag info - Page Title etc)
an ARTICLE knows its section, sort order, publish visibility, user level visibility, location in page (+ who updated it and when).
FILE MANAGEMENT
the whole gamut of file upload, download, renaming, resizing.
One constant problem is keeping images within a size range depending on where the image is placed in a page layout - would be interested in your suggestions
add this to your great interface and multiple revision system and you'll be onto a winner
well, hope that helps