[Radiant] What I actually meant to say was...

Jacob Burkhart igotimac at gmail.com
Thu Oct 19 17:23:33 CDT 2006


Oops, I accidentally hit return while editing the subject.

Anyway this post has 2 purposes:

1. To explain what I want to do with Radiant, and to see if anybody else 
has ever tried. And to validate that my approach is correct.

2. To ask where/how it might most be useful to contribute what I plan on 
doing back into the core


The details:

I want to implement Page types.  From an interface perspective, I'm 
imagining you'll see a little pop-up when you click "add child" in the 
pages admin asking you what type of page you want to make.

I propose to implement each page type as a database table with a one to 
one relationship back to the pages table.  We will assume that somehow 
we know about all tables that have this property and thus know that they 
are page types.  I want to implement it so that anybody can create any 
arbitrary page type with very little work. (basically just create the 
database table) In my examples I will use the following example type:

students
    name - short string
    grade - number
    birthday - date
    description - text
    page_id - (one to one relation back to pages)

So for the purposes of this example you click "add child" in the pages 
admin you would be prompted to chose "standard page" or "student"

Next, what do you see:

If you chose "student" you would see an addional tab after your page 
parts called "Attributes" If you clicked this tab you would see a 
scaffolding-esque form for filling out all of the columns in the 
students table (you would then proceed to fill these out). In the body 
of your page (or in my case in the layout I select for my page) there 
will be additional r:tags for displaying the content-type specific 
attributes.   <r:content attribute="birthday" /> for example.

Once I have this working, I'd like "text" attributes to appear in 
seperate tabs with a WYSIWYG (remember they will not actually be page 
parts, they are still stored as attributes of the content type) I am 
also thinking about supporting file uploads in a similar manner.

Once I have that working, I'd like to add a new user type (called 
content admin) who can only create and edit pages that are of a 
non-standard type.  (all other actions in the admin would be greyed out)

Finally, I'd like to support linking to other special page types via 
content types.  So for instance:

students
    name - short string
    grade - number
    birthday - date
    description - text
    page_id - (one to one relation back to pages)
    school_id - (foreign key to schools table)

schools
    page_id - (one to one relation back to pages)
    etc...

This way, when you create a student you can select which school they are 
in from a drop down showing all other school-typed pages.


Remember, the idea here is not to add students and schools, but the 
ability for me to simply create those tables (and maybe their models) in 
a particular instance of radiant and have the core of the application 
recognize them as page types and allow me to manipulate then in the 
admin

I want to be able to customize radiant with content types for a 
particular purpose and then hand it off to a more non-technical users. 
I eliminate the need for that user to know any radiant tags by creating 
a layout for each content item type (which would pull all of the 
relevant stuff from the attributes they populate)

Any comments?

Should I work from corex or mental?  Does it sound like what I am trying 
to do might be broken by the currently planned roadmap for the next 
release of radiant?

Can you explain to me how (If possible) I might develop the entirety of 
the functionality I just described as a "plug-in"?

thanks,
Jacob

-- 
Posted via http://www.ruby-forum.com/.



More information about the Radiant mailing list