Thanks, Sean!

Ticket #564

http://dev.radiantcms.org/radiant/ticket/564

==
Will Green

Sean Cribbs wrote:
> 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
_______________________________________________
Radiant mailing list
Post:   [email protected]
Search: http://radiantcms.org/mailing-list/search/
Site:   http://lists.radiantcms.org/mailman/listinfo/radiant

Reply via email to