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