94 lines
3.1 KiB
Ruby
94 lines
3.1 KiB
Ruby
class ProductsController < ApplicationController
|
|
|
|
skip_before_filter :verify_authenticity_token, :only => [:generate_license, :download]
|
|
before_filter :verify_api_token, :only => :generate_license
|
|
|
|
before_filter(:only => [:show]){ |c| c.find_product("product_url", UrlDestination['product-detail']) }
|
|
before_filter :init_objects, :only => [:show]
|
|
|
|
caches_page :index, :show, :if => Proc.new { |c| c.params[:detail] != Settings.releases_code }
|
|
|
|
def index
|
|
@categories = ProductCategory.all_but_featured
|
|
@all_categories = ProductCategory.find :all
|
|
@testimonials = Testimonial.for_products_page
|
|
end
|
|
|
|
def show
|
|
@special_menu_hl = true if @product.code == Settings.featured_product
|
|
@release = @product.current_release
|
|
@screenshots = @product.screenshots.featured
|
|
# future? pro ajaxove taby
|
|
#if params[:ajax]
|
|
# render :text => @detail.html
|
|
#end
|
|
end
|
|
|
|
def download
|
|
params[:filename] = featured_product.setup_file.original_filename.split(".").first if params[:filename] == "swifttodolist7-beta12"
|
|
@product = Product.find_by_file(params[:filename])
|
|
if @product
|
|
DownloadLog.log(@product, request)
|
|
if Rails.env.preproduction? || Rails.env.production?
|
|
redirect_to "http://#{Settings.download_host}/#{@product.setup_file.path}"
|
|
else
|
|
send_file @product.setup_file.path, :type => 'application/binary'
|
|
end
|
|
else
|
|
render_404
|
|
end
|
|
end
|
|
|
|
def detail
|
|
render :text => @detail.html
|
|
end
|
|
|
|
def generate_license
|
|
@license_key = BmtLicenseKey.new
|
|
@license_key.generate!
|
|
|
|
respond_to do |format|
|
|
format.xml { render :xml => @license_key }
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def verify_generate_license_token
|
|
if !params[:t] || params[:t] != Settings.generate_license_token
|
|
render :nothing => true
|
|
end
|
|
end
|
|
|
|
def init_objects
|
|
if params[:detail]
|
|
case params[:detail]
|
|
when "features"
|
|
redirect_to(@product, :status => 301)
|
|
when "thumbnails"
|
|
redirect_to(Product['better-thumbnail-browser'], :status => 301)
|
|
when Settings.documentation_code
|
|
#redirect_to(product_page_url(@product, @product.product_pages.find_by_code("resources")))
|
|
redirect_to("/documentation/#{@product.code}/index.html")
|
|
when Settings.class_reference_code
|
|
redirect_to("/class-reference/#{@product.code}/index.html")
|
|
when Settings.quick_start_guide_code
|
|
redirect_to("/documentation/#{@product.code}/data/chapter-quickstart.html")
|
|
when Settings.releases_code
|
|
@since_release = @product.releases.find_by_version(params[:since]) if params[:since].present?
|
|
@since_release = @product.current_release unless @since_release
|
|
@releases = @product.releases.find_since(@since_release.version)
|
|
else
|
|
@detail = @product.product_pages.find_by_code(params[:detail])
|
|
render_404 unless @detail
|
|
end
|
|
else
|
|
@detail = @product.default_page
|
|
end
|
|
|
|
@support_request = SupportRequest.new
|
|
@support_request.support_request_origin = SupportRequestOrigin['product']
|
|
@support_request.product = @product
|
|
end
|
|
end
|