Wow, yeah, this should work great!

Thanks a bunch!

--Jorge

On Wed, Sep 3, 2008 at 12:46 PM, blizz <[EMAIL PROTECTED]> wrote:

>
> Here is something you can do while waiting for the rest of the in-
> place editors to come online, of course you could do it with non-ajax
> field editors as well.
>
> In application.dryml put:
>
> <def tag="myeditor" ><%=
>  if !can_edit?
>    view(attributes)
>  else
>    attrs = add_classes(attributes, type_id, type_and_field, "editor")
>    if (refl = this_field_reflection)
>      if refl.macro == :belongs_to
>        belongs_to_editor(attrs)
>      else
>        has_many_editor(attrs)
>      end
>    else
>      call_polymorphic_tag("myeditor", attrs) or
>        raise HoboError.new("<myeditor> not implemented for
> #{this.class.name}\##{this_field} " +
>                            "(#{this.inspect}:#{this_type})")
>    end
>  end
> %></def>
>
> <def tag="myeditor" for="string">
>  <my-string-editor merge-attrs/>
> </def>
>
> <def tag="my-string-editor" attrs="update, values, labels, titleize"><
> %
>  f = ajax_updater(object_url(this_parent, :method => :put),
>                   update,
>                   :method => "put",
>                   :params => { this_parent.class.name.underscore => {
>                       this_field => Hobo.raw_js('this.value')
>                    } })
> %>
>  <input type="text" onchange="#{f}" value="#{this}"
>         merge-attrs />
> </def>
>
>
> The in the show.dryml you can call:
>
> <myeditor:amount/>  (where amount is the string field added to the
> ingredient_assignments table)
>
> The context has to be ingredient_assignments, here is how it would
> look in the agility demo (show.dryml for project)
>
> <show-page>
>
>  <content:>
>    <section-group>
>      <section>
>        <param-content for="content"/>
>      </section>
>      <aside>
>        <h2>Project Members</h2>
>        <collection:memberships part="members">
>          <card>
>                <heading:>
>                   <a:user/><editor:contributor/
> >Contributor:<myeditor:amount/>
>                         </heading:>
>          </card>
>        </collection>
>        <form:memberships.new update="members" reset-form refocus-
> form>
>          <div>
>            Add a member:
>            <name-one:user complete-target="&@project"
> completer="new_member_name"/>
>          </div>
>        </form>
>      </aside>
>    </section-group>
>  </content:>
>
>  <collection: replace>
>    <table-plus with="&@stories" fields="this, tasks.count, status">
>          <prepend-header:>
>            <div class="filter">
>              Display by status: <filter-menu param-name="status"
> options="&StoryStatus.all"/>
>            </div>
>          </prepend-header:>
>      <empty-message:>No stories match your criteria</empty-message:>
>    </table-plus>
>  </collection:>
> </show-page>
>
> And just to be complete the model code for ProjectMembership...
>
> ....
>  fields do
>    contributor :boolean
>    amount :string
>    timestamps
>  end
> ....
>
> Hope this helps :)
>
> Brett
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Hobo 
Users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/hobousers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to