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