<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Sentia &#124; Sydney IT Consultancy, Software Development, Ruby on Rails, Web Application Development, Rails Development, Test Driven Development, Microsoft.Net, Asp.Net , Agile, Continuous Integration Training, iPhone development &#187; cms</title>
	<atom:link href="http://www.sentia.com.au/tag/cms/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.sentia.com.au</link>
	<description>Sentia company website and blog about all things development, Ruby on Rails, Microsoft .Net, ASP.Net, C#.Net, Agile web development, Test Driven Development</description>
	<lastBuildDate>Thu, 02 Feb 2012 07:16:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Comatose, Authlogic and FCKEditor</title>
		<link>http://www.sentia.com.au/2009/08/comatose-authlogic-and-fckeditor/</link>
		<comments>http://www.sentia.com.au/2009/08/comatose-authlogic-and-fckeditor/#comments</comments>
		<pubDate>Sun, 02 Aug 2009 23:47:44 +0000</pubDate>
		<dc:creator>Michael Cindric</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[authlogic]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[comatose]]></category>
		<category><![CDATA[fckeditor]]></category>
		<category><![CDATA[rails]]></category>

		<guid isPermaLink="false">http://sentia.com.au/?p=309</guid>
		<description><![CDATA[Ok so we are using comatose and Authlogic for an &#8230; <a href="http://www.sentia.com.au/2009/08/comatose-authlogic-and-fckeditor/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Ok so we are using comatose and Authlogic for an app we are building for a client. We also wanted to use FCKEditor for comatose to give it a little more buzz.</p>
<p>Firstly you need to install Comatose. Go to your project root directory in terminal and type the following.</p>
<pre class="brush: ruby; title: ; notranslate">
./script/plugin source http://mattmccray.com/svn/rails/plugins
./script/plugin install comatose
./script/generate comatose_migration
rake migrate
</pre>
<p>Then you need to install fckEditor. To do so go to the root of your app in terminal and type the following</p>
<pre class="brush: ruby; title: ; notranslate">
ruby script/plugin install svn://rubyforge.org//var/svn/fckeditorp/trunk/fckeditor
</pre>
<p>In the Comatose _form.html.erb page you need to change</p>
<pre class="brush: ruby; title: ; notranslate">
&lt;%= f.text_area :body, :rows=&gt;20, :tabindex=&gt;2 %&gt;
</pre>
<p>to this so that the fckeditor appears when creating and editing pages.</p>
<pre class="brush: ruby; title: ; notranslate">
&lt;%= fckeditor_textarea('page', 'body', :width =&gt; '100%', :height =&gt; '500px') %&gt;
</pre>
<p>Once you have Comatose and FCKEditor installed and running the final step is to get it all working with Authlogic.</p>
<p>So in your environment.rb file you need to add the following.</p>
<pre class="brush: ruby; title: ; notranslate">
Comatose.configure do |config|
  #Custom class we wrote to handle current_user etc
  config.admin_includes &lt;&lt; :user_methodss
  # Calls :login_required as a before_filter
    config.admin_authorization = :require_user
end
</pre>
<p>This will force comatose to have require a user to be logged in to use the system. The :user_methodss class is a class we wrote to handle the login methods of Autlogic. You can replace this with your own if you want ill include the class we created below.</p>
<pre class="brush: ruby; title: ; notranslate">
module UserMethods
  module ClassMethods
    def permission_required(permission_name,actions, notice=nil)
      notice ||= &quot;You don't have access to that part of the site.&quot;
      actions = [actions].flatten
      before_filter(:only =&gt; actions) { |controller| require_or_redirect(permission_name, controller, notice) }
    end

    def require_or_redirect(permission_name, controller, notice)
      user = controller.send(:current_user)

      if !user.can?(permission_name)
        # @permission_missing is used for should_require_permission test
        controller.instance_variable_set(&quot;@permission_missing&quot;, true)
        controller.send(:redirect_back_or_to, &quot;/&quot;, notice)
      end
    end
  end

  def self.included(base)
    base.extend(ClassMethods)
  end

  protected 

  # Redirects back or if that fails, redirects to the supplied path
  # Also accepts a notice if you want to flash something
  def redirect_back_or_to(path, notice=nil)
    flash[:notice] = notice unless notice.blank?
    begin
      redirect_to :back
    rescue ActionController::RedirectBackError
      redirect_to path
    end
  end

  # Returns the param to use in a find command for objects with a
  # possible cross-db sort
  def cross_database_order(order, direction, sort_methods_allowed)
    return &quot;#{ order } #{ direction }&quot; if !cross_database_sort?(order, sort_methods_allowed)
  end

  # Returns true if the given order looks like a cross db sort
  # Allowed_methods should be an array of association objects to
  # methods allowed to be called on them.
  def cross_database_sort?(order, allowed_methods)
    return allowed_methods.include?(order)
  end

  # Performs a sort on the given objects by calling methods rather than
  # using a db lookup.
  def cross_database_sort(objects_to_sort, order, direction, sort_methods_allowed)
    if cross_database_sort?(order, sort_methods_allowed)
      methods = order.split(&quot;.&quot;)
      association_name, method = order.split(&quot;.&quot;)
      objects_to_sort = objects_to_sort.sort_by do |object|
        methods.each do |meth|
          next if object.nil?
          object = object.send(meth)
        end
        &quot;#{ object }&quot;
      end
      objects_to_sort.reverse! if direction == &quot;desc&quot;
    end

    return objects_to_sort
  end

  private

  # ActionMailer views don't have access to the request, so we need
  # to set these variables manually.
  def setup_host_for_mail
    ActionMailer::Base.default_url_options[:host] = request.host_with_port
  end

  def logout
    current_user_session.destroy if current_user_session
  end

  def current_user_session
    return @current_user_session if defined?(@current_user_session)
    @current_user_session = UserSession.find
  end

  def current_user
    return @current_user if defined?(@current_user)
    @current_user = current_user_session &amp;&amp; current_user_session.user
  end

  def require_user
    unless current_user
      store_location
      flash[:notice] = &quot;You must be logged in to access this page&quot;
      redirect_to new_user_session_url
      return false
    end
  end

  def require_no_user
    if current_user
      store_location
      flash[:notice] = &quot;You must be logged out to access this page&quot;
      redirect_to &quot;/&quot;
      return false
    end
  end

  def store_location
    session[:return_to] = request.request_uri
  end

  def redirect_back_or_default(default)
    redirect_to(session[:return_to] || default)
    session[:return_to] = nil
  end
end
</pre>
<p>Worth noting the &#8220;ss&#8221; in user_methodss is not a mistake. Because of the way Comatose handles the string/symbol you pass in it wouldn&#8217;t render :user_methods but instead looked for :users_methods which was incorrect so this was our little hack to get around that.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sentia.com.au/2009/08/comatose-authlogic-and-fckeditor/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

