theme_controller.rb
上传用户:netsea168
上传日期:2022-07-22
资源大小:4652k
文件大小:1k
源码类别:

Ajax

开发平台:

Others

  1. class ThemeController < ContentController
  2.   def stylesheets
  3.     render_theme_item(:stylesheets, params[:filename], 'text/css; charset=utf-8')
  4.   end
  5.   def javascript
  6.     render_theme_item(:javascript, params[:filename], 'text/javascript; charset=utf-8')
  7.   end
  8.   def images
  9.     render_theme_item(:images, params[:filename])
  10.   end
  11.   def error
  12.     render :nothing => true, :status => 404
  13.   end
  14.   def static_view_test
  15.   end
  16.   private
  17.   def render_theme_item(type, file, mime = nil)
  18.     mime ||= mime_for(file)
  19.     if file.split(%r{[\/]}).include?("..")
  20.       return (render :text => "Not Found", :status => 404)
  21.     end
  22.     src = this_blog.current_theme.path + "/#{type}/#{file}"
  23.     return (render :text => "Not Found", :status => 404) unless File.exists? src
  24.     if perform_caching
  25.       dst = "#{page_cache_directory}/#{type}/theme/#{file}"
  26.       FileUtils.makedirs(File.dirname(dst))
  27.       FileUtils.cp(src, "#{dst}.#{$$}")
  28.       FileUtils.ln("#{dst}.#{$$}", dst) rescue nil
  29.       FileUtils.rm("#{dst}.#{$$}", :force => true)
  30.     end 
  31.     send_file(src, :type => mime, :disposition => 'inline', :stream => true)
  32.   end
  33.   def mime_for(filename)
  34.     case filename.downcase
  35.     when /.js$/
  36.       'text/javascript'
  37.     when /.css$/
  38.       'text/css'
  39.     when /.gif$/
  40.       'image/gif'
  41.     when /(.jpg|.jpeg)$/
  42.       'image/jpeg'
  43.     when /.png$/
  44.       'image/png'
  45.     when /.swf$/
  46.       'application/x-shockwave-flash'
  47.     else
  48.       'application/binary'
  49.     end
  50.   end
  51. end