class PageLinkResolver def self.link page_name, web_address, view @page = Page.find_by_name page_name url = if @page.nil? @page_alias = Alias.find :first, :conditions => "text = '#{page_name}'" if @page_alias.nil? view.url_for :controller => 'wiki', :action => 'new', :id => page_name, :web_address => web_address else @page_alias.page.link(view) end else case @page.usage when Page::WIKI view.url_for :controller => 'wiki', :action => 'show', :id => @page.name, :web_address => web_address when Page::BLIKI view.url_for :controller => 'bliki', :action => 'show', :id => @page.name, :web_address => web_address when Page::TASK view.url_for :controller => 'tracker', :action => 'view', :id => @page.name, :web_address => web_address else raise "Don't know how to handle a #{@page.usage} page" end end %{#{WikiWords.separate((@page || @page_alias) ? (@page || @page_alias).name : page_name)}} end end