Forum: Radiant CMS About Comments Extension

Ec797ac7978ab39f04b0a5844c234528?d=identicon&s=25 Mohit Sindhwani (mohits)
on 2009-05-09 17:57
(Received via mailing list)
Hi, I have just started to use the Comments Extension.  One of the
things that I have noticed is that the comments extension has always
mentioned in the readme that:

Relative urls will not work on comment pages if they fail validation,
since the page gets re-rendered at a (probably) different level of the
hierarchy. Always use absolute urls and you won't have any issues.

I don't know what to make of this.  I find that even if the comment post
is successful, relative URLs may not work.  I was wondering how to
resolve it.  For this, I changed the following line in the
comments_controller.rb > create:

   redirect_to "#{@page.url}comments#comment-#{comment.id}"

to:
   redirect_to "#{@page.url}"

This way, it should just redirect to the page on which the comment was
posted.  It seems to work... but can someone confirm if that is indeed
the correct way to deal with it?

Cheers,
Mohit.
5/9/2009 | 11:25 PM.
Ec797ac7978ab39f04b0a5844c234528?d=identicon&s=25 Mohit Sindhwani (mohits)
on 2009-05-09 19:11
(Received via mailing list)
Mohit Sindhwani wrote:
> to resolve it.  For this, I changed the following line in the
> comments_controller.rb > create:
>
>   redirect_to "#{@page.url}comments#comment-#{comment.id}"
>
> to:
>   redirect_to "#{@page.url}"
>
> This way, it should just redirect to the page on which the comment was
> posted.  It seems to work... but can someone confirm if that is indeed
> the correct way to deal with it?
I have been further playing and have spent quite a while copying back
code from Radiant's controllers into the Comments Controller to see what
works.  This is what the create function looks like now and it seems
like it works.  Could someone help me see if my assumption is  correct?
Is this how we should modify the create action on the comments
controller to fix it in case validation fails?  It appears that relative
URLs are also rendering correctly now.

  def create
    comment = @page.comments.build(params[:comment])
    comment.request = request
    comment.save!

    ResponseCache.instance.clear
    if Radiant::Config['comments.notification'] == "true"
      if comment.approved? ||
Radiant::Config['comments.notify_unapproved'] == "true"
        CommentMailer.deliver_comment_notification(comment)
      end
    end

    flash[:selected_comment] = comment.id
    #Changed the line below to deal with wrong rendering of relative
links even when validation passes
    #redirect_to "#{@page.url}comments#comment-#{comment.id}"
    redirect_to "#{@page.url}"
  rescue ActiveRecord::RecordInvalid
      @pg = Page.find_by_url(@page.url)
      @pg.last_comment = comment
      unless @pg.nil?
        #process_page(@page) <-- replaced this with the part below since
process_page is private in SiteController
        @pg.process(request, response)
        @cache.cache_response(url, response) if request.get? and live?
and @pg.cache?
        @performed_render = true
      else
        render :template => 'site/not_found', :status => 404
      end
  end

Any help would be greatly appreciated!

Cheers,
Mohit.
5/10/2009 | 1:10 AM.
09477c358c5897d44121a248326e16d7?d=identicon&s=25 Jim Gay (Guest)
on 2009-05-09 20:12
(Received via mailing list)
Mohit
Thanks for looking into this. I don't have time at the moment to look
at this buy I'll try to get to it in the next few days.

Be sure to write some specs to test it out. I plan to move all
Test::Unit stuff to Rspec.

Jim
This topic is locked and can not be replied to.