files_controller.rb revision 16967c96123e6fa29540b72b2d78bf65a100b8ee
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncclass FilesController < ApplicationController
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync helper_method :repository
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync before_filter :check_permissions, only: [:new, :create]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync # FIXME
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync #load_and_authorize_resource :except => [:index, :show]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def files
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync commit_id = repository.commit_id(params[:ref])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @oid = commit_id[:oid]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @branch_name = commit_id[:branch_name]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @path = params[:path]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @info = repository.path_info(params[:path], @oid)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync raise Repository::FileNotFoundError, params[:path] if @info.nil?
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if request.format == 'text/html' || @info[:type] != :file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync case @info[:type]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync when :file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @file = repository.read_file(@path, @oid)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync when :file_base
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync ontologies = repository.ontologies.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync where(basepath: File.real_basepath(@info[:entry][:path])).
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync order[id: :asc]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync redirect_to [repository, ontologies.first]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync end
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync render text: repository.read_file(@path, @oid)[:content],
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync content_type: Mime::Type.lookup('application/force-download')
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync end
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync end
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def entries_info
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync render json: repository.entries_info(@oid, params[:path])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync end
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def diff
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @oid = repository.commit_id(params[:ref])[:oid]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @message = repository.commit_message(@oid)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @changed_files = repository.changed_files(@oid)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync end
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def history
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @path = params[:path]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if repository.empty?
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @commits = []
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @oid = repository.commit_id(params[:ref])[:oid]
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @current_file = repository.read_file(@path, @oid) if @path
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @commits = repository.commits(start_oid: @oid, path: @path)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync end
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync end
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def new
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync build_file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync end
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def create
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync if build_file.valid?
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync repository.save_file @file.file.path, @file.filepath, @file.message, current_user
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync flash[:success] = "Successfully saved uploaded file."
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync redirect_to fancy_repository_path(repository, path: @file.path)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync else
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync render :new
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync end
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync end
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync protected
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def repository
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @repository ||= Repository.find_by_path!(params[:repository_id])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync end
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def build_file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @file ||= UploadFile.new(params[:upload_file])
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync end
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync def check_permissions
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync authorize! :write, repository
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync end
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncend
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync