Sha256: a9d94e408dba4d9288a8d0968699b7df972fc24de6bdfc1f6ed633ba36ac739c
Contents?: true
Size: 1.37 KB
Versions: 3
Compression:
Stored size: 1.37 KB
Contents
require "action_controller/metal" module ThemesForRails class AssetsController < ActionController::Base include ThemesForRails::CommonMethods include ThemesForRails::UrlHelpers def stylesheets render_asset asset_path_for(params[:asset], 'stylesheets'), mime_type_from(params[:asset]) end def javascripts render_asset asset_path_for(params[:asset], 'javascripts'), mime_type_from(params[:asset]) end def images render_asset asset_path_for(params[:asset], 'images'), mime_type_from(params[:asset]) end private def asset_path_for(asset_url, asset_prefix) File.join(theme_path_for(params[:theme]), asset_prefix, params[:asset]) end def extract_filename_and_extension_from(asset) extension = File.extname(asset) filename = params[:asset].gsub(extension, '') return filename, extension[1..-1] end def render_asset(asset, mime_type) unless File.exists?(asset) render :text => 'not found', :status => 404 else send_file asset, :type => mime_type end end def mime_type_from(asset_path) extension = extract_filename_and_extension_from(asset_path).last if extension == 'css' "text/css" elsif extension == 'js' 'text/javascript' else "image/#{extension}" end end end end
Version data entries
3 entries across 3 versions & 1 rubygems