Will,
It sounds like you're jumping through a bunch of unnecessary hoops.
Could you just create a patch for the existing code, put it in a ticket,
and let me know about it? I'll fix it up right away.
Sean
Will Green wrote:
> Sorry, that's
> vendor/extensions/mailer_alternate_render/app/models/mailer_alternate_render_tags.rb
>
> ==
> Will Green
>
> Will Green wrote:
>
>> Sadly, thats not working :(
>>
>> I did a script/generate extension MailerAlternateRender, then I tried the
>> following code
>> (in
>> /vendor/extensions/mailer_alternate_render/app_models/mailer_alternate_render_tags.rb):
>>
>> class MailerPage
>> desc %{ Renders an @<option/>@ tag if the parent is a
>> @<r:mailer:select>...</r:mailer:select>@ tag, an @<input
>> type="radio"/>@ tag if
>> the parent is a @<r:mailer:radiogroup>...</r:mailer:radiogroup>@ }
>> tag 'mailer:option' do |tag|
>> @tag_attr = tag.attr.symbolize_keys
>> raise_error_if_name_missing "mailer:option"
>> result = ""
>> if tag.locals.parent_tag_type == 'select'
>> result << %Q|<option value="#{tag_attr.delete(:value) ||
>> tag_attr[:name]}" #{add_attrs_to("")}>#{tag_attr[:name]}</option>|
>> elsif tag.locals.parent_tag_type == 'radiogroup'
>> tag.globals.option_count = tag.globals.option_count.nil? ? 1 :
>> tag.globals.option_count += 1
>> options = tag_attr.clone.update({
>> :id =>
>> "#{tag.locals.parent_tag_name}_#{tag.globals.option_count}",
>> :value => tag_attr.delete(:value) || tag_attr[:name],
>> :name => tag.locals.parent_tag_name
>> })
>> result << %Q|<label
>> for="#{options[:id]}"><span>#{tag_attr[:name]}</span>|
>> result << input_tag_html( 'radio', options )
>> result << "</label>"
>> #result << input_tag_html( 'radio', options )
>> #result << %Q|<label
>> for="#{options[:id]}">#{tag_attr[:name]}</label>|
>> end
>> end
>> end
>>
>> I've also tried putting it in a MailerAlternateRenderTags module (replacing
>> the class declaration),
>> and including Page.send :include, MailerAlternateRenderTags in
>> mailer_alternate_render_extension.rb
>>
>> Any thoughts?
>>
>> ==
>> Will Green
>>
>> Aitor Garay-Romero wrote:
>>
>>> Yes, you can directly replace MailerExtension's tag definition with
>>> something in the line of:
>>>
>>> class MailerExtension
>>> desc {
>>> -> you will need to duplicate the original desc here, or if you
>>> don't care just don't put it (you won't get docs)
>>> }
>>> tag "r:mailer:option" do |tag|
>>> -> your new code here
>>> end
>>> end
>>>
>>> Be sure to define the tag inside the MailerExtension class so it can
>>> access that context. Your tag definition will replace the original one.
>>>
>>> The best of Rails is Ruby...
>>>
>>> /AITOR
>>>
>>> On 10/12/07, Will Green <[EMAIL PROTECTED]> wrote:
>>>
>>>> I use svn:externals for my extensions, so directly editing the
>>>> MailerPage class is out. I understand that Ruby classes are open, but
>>>> the Pages in radiant use a DSL for tags, containing a desc, tag pair.
>>>> This is whats throwing me off.
>>>>
>>>> It sounds like you're saying I can create an extension that loads after
>>>> Mailer, and that defines a radius tag that is named the same as the one
>>>> whose functionality I am looking to replace (r:mailer:option), and it
>>>> will override the one defined in the Mailer extension. Do I understand
>>>> you correctly? Could it be that simple?
>>>>
>>>> (Sorry, c# .Net puts food on the table right now, so I've grown
>>>> accustomed to be skeptical of simple solutions, because there are none
>>>> in .Net, not that I've found, anyway).
>>>>
>>>> ==
>>>> Will Green
>>>>
>>>> Aitor Garay-Romero wrote:
>>>>
>>>>> One of the main features of Ruby is that it's "open" in the sense that
>>>>> your code can modify any other loaded coded as desired.
>>>>>
>>>>> In your case, make an extension that loads after the mailer extension
>>>>>
>>>> and
>>>>
>>>>> patches the MailerPage class as desired.
>>>>>
>>>>> Other option is to patch your local mailer extension directly.
>>>>>
>>>>> /AITOR
>>>>>
>>>>> On 10/12/07, Will Green <[EMAIL PROTECTED]> wrote:
>>>>>
>>>>>> Perhaps more a Ruby question than a Radiant question, but...
>>>>>>
>>>>>> I'd like to alter the html that the Mailer Extension outputs for
>>>>>> <r:mailer:option> tags within a <r:mailer:radiogroup>. Rather than
>>>>>>
>>>> have
>>>>
>>>>>> the Label tag follow the Input tag, I want to wrap in Input tag in the
>>>>>> Label tag (with the label text inside a span). This way, you can have
>>>>>> the action of clicking on the label activate the associated control
>>>>>> (even in IE 6, which for some reason, doesn't do it with just the for
>>>>>> attribute).
>>>>>>
>>>>>> Is there an easy way to "monkey patch" MailerPage to alter the tag
>>>>>> 'mailer:option' method?
>>>>>>
>>>>>> So, instead of:
>>>>>>
>>>>>> <input type="radio" value="Yes" id="have_children_1" class="radio"
>>>>>> name="mailer[have_children]"/><label for="have_children_1">Yes</label>
>>>>>>
>>>>>> <input type="radio" value="No" id="have_children_2" class="radio"
>>>>>> checked="checked" name="mailer[have_children]"/><label
>>>>>> for="have_children_2">No</label>
>>>>>>
>>>>>> I'd like to instead output:
>>>>>>
>>>>>> <label for="have_children_1">
>>>>>> <input type="radio" value="Yes" id="have_children_1" class="radio"
>>>>>> name="mailer[have_children]"/><span>Yes</span>
>>>>>> </label>
>>>>>> <label for="have_children_2">
>>>>>> <input type="radio" value="No" id="have_children_2" class="radio"
>>>>>> checked="checked" name="mailer[have_children]"/><span>No</span></label>
>>>>>>
>>>>>> --
>>>>>> Will Green
>>>>>> _______________________________________________
>>>>>> Radiant mailing list
>>>>>> Post: [email protected]
>>>>>> Search: http://radiantcms.org/mailing-list/search/
>>>>>> Site: http://lists.radiantcms.org/mailman/listinfo/radiant
>>>>>>
>>>>>>
>>>>> _______________________________________________
>>>>> Radiant mailing list
>>>>> Post: [email protected]
>>>>> Search: http://radiantcms.org/mailing-list/search/
>>>>> Site: http://lists.radiantcms.org/mailman/listinfo/radiant
>>>>>
>>>> _______________________________________________
>>>> Radiant mailing list
>>>> Post: [email protected]
>>>> Search: http://radiantcms.org/mailing-list/search/
>>>> Site: http://lists.radiantcms.org/mailman/listinfo/radiant
>>>>
>>>>
>>> _______________________________________________
>>> Radiant mailing list
>>> Post: [email protected]
>>> Search: http://radiantcms.org/mailing-list/search/
>>> Site: http://lists.radiantcms.org/mailman/listinfo/radiant
>>>
>> _______________________________________________
>> Radiant mailing list
>> Post: [email protected]
>> Search: http://radiantcms.org/mailing-list/search/
>> Site: http://lists.radiantcms.org/mailman/listinfo/radiant
>>
> _______________________________________________
> Radiant mailing list
> Post: [email protected]
> Search: http://radiantcms.org/mailing-list/search/
> Site: http://lists.radiantcms.org/mailman/listinfo/radiant
>
>
_______________________________________________
Radiant mailing list
Post: [email protected]
Search: http://radiantcms.org/mailing-list/search/
Site: http://lists.radiantcms.org/mailman/listinfo/radiant