On 13 Aug 2010, at 00:35, Wes Gamble wrote:

> I have reviewed the contents of 
> http://wiki.github.com/radiant/radiant/modifying-the-page-ui in depth.
> 
> I have extension that modifies the user model to be attached to something 
> called a program, and I've made the change in the DB, and modified the user 
> model in my extension code like so:
> 
> User && class User < ActiveRecord::Base
>   belongs_to :program
> end
> 
> so that the association will be there.
> 
> Now, I would like to be able to display and edit program assignments for a 
> given user in the admin. UI.
> 
> In my extension's "activate" method, I added the following lines in the hopes 
> of customizing the UI:
> 
>     admin.user.edit.form << 'edit_program'
>     admin.user.index.thead << 'program_header'
>     admin.user.index.tbody << 'program_cell'
> 
> thinking that the display of the user admin was super dynamic and it would 
> just figure out how to display the edit components based on attribute type.
> 
> But when I try to look at the index view of users, I get:
> 
> "`program_header' default partial not found! `program_cell' default partial 
> not found!" as errors in the index display.
> 
> and 
> 
> `edit_program' default partial not found! as an error in the edit display.
> 
> After looking into it, though, I see the admin/users/edit and 
> admin/users/index views under the Radiant core are more or less hard-coded at 
> the column level, but the error messages imply that I should be able to add a 
> partial somewhere for my custom fields.
> 
> Questions:
> 
> What is the preferred way to customize at this level?  

You're on the right lines, though I would normally use this kind of idiom to 
get more control:

        admin.users.edit.add :form, "edit_program", :after => "something"
 
and then you need to create the partial, which in this case would be
        
        
vendor/extensions/your_extension/app/views/admin/users/_edit_program.html.haml

If you want it to live somewhere else - eg. to share a form component between 
several models - then you can specify the full path to the partial in the usual 
way:

        admin.users.edit.add :form, "admin/programs/edit_program", :after => 
"something"

> Do I need to just override the entire edit and index views?

Much better to avoid that: working through the UI you are relatively safe from 
interface changes and able to co-operate with other extensions.

> Is there some Javascript-y way to do this that I'm missing?

Nope.

best,

will

Reply via email to