diff options
Diffstat (limited to 'app/controllers/projects')
29 files changed, 0 insertions, 2008 deletions
diff --git a/app/controllers/projects/application_controller.rb b/app/controllers/projects/application_controller.rb deleted file mode 100644 index 4719933394f..00000000000 --- a/app/controllers/projects/application_controller.rb +++ /dev/null @@ -1,36 +0,0 @@ -class Projects::ApplicationController < ApplicationController - before_filter :project - before_filter :repository - layout :determine_layout - - def authenticate_user! - # Restrict access to Projects area only - # for non-signed users - if !current_user - id = params[:project_id] || params[:id] - project_with_namespace = "#{params[:namespace_id]}/#{id}" - @project = Project.find_with_namespace(project_with_namespace) - - return if @project && @project.public? - end - - super - end - - def determine_layout - if current_user - 'projects' - else - 'public_projects' - end - end - - def require_branch_head - unless @repository.branch_names.include?(@ref) - redirect_to( - namespace_project_tree_path(@project.namespace, @project, @ref), - notice: "This action is not allowed unless you are on top of a branch" - ) - end - end -end diff --git a/app/controllers/projects/avatars_controller.rb b/app/controllers/projects/avatars_controller.rb deleted file mode 100644 index a482b90880d..00000000000 --- a/app/controllers/projects/avatars_controller.rb +++ /dev/null @@ -1,29 +0,0 @@ -class Projects::AvatarsController < Projects::ApplicationController - layout 'project' - - before_filter :project - - def show - @blob = @project.repository.blob_at_branch('master', @project.avatar_in_git) - if @blob - headers['X-Content-Type-Options'] = 'nosniff' - send_data( - @blob.data, - type: @blob.mime_type, - disposition: 'inline', - filename: @blob.name - ) - else - not_found! - end - end - - def destroy - @project.remove_avatar! - - @project.save - @project.reset_events_cache - - redirect_to edit_project_path(@project) - end -end diff --git a/app/controllers/projects/blame_controller.rb b/app/controllers/projects/blame_controller.rb deleted file mode 100644 index a87b8270a22..00000000000 --- a/app/controllers/projects/blame_controller.rb +++ /dev/null @@ -1,13 +0,0 @@ -# Controller for viewing a file's blame -class Projects::BlameController < Projects::ApplicationController - include ExtractsPath - - before_filter :require_non_empty_project - before_filter :assign_ref_vars - before_filter :authorize_download_code! - - def show - @blame = Gitlab::Git::Blame.new(@repository, @commit.id, @path) - @blob = @blame.blob - end -end diff --git a/app/controllers/projects/blob_controller.rb b/app/controllers/projects/blob_controller.rb deleted file mode 100644 index 4b7eb4df298..00000000000 --- a/app/controllers/projects/blob_controller.rb +++ /dev/null @@ -1,163 +0,0 @@ -# Controller for viewing a file's blame -class Projects::BlobController < Projects::ApplicationController - include ExtractsPath - include ActionView::Helpers::SanitizeHelper - - # Raised when given an invalid file path - class InvalidPathError < StandardError; end - - before_filter :require_non_empty_project, except: [:new, :create] - before_filter :authorize_download_code! - before_filter :authorize_push_code!, only: [:destroy] - before_filter :assign_blob_vars - before_filter :commit, except: [:new, :create] - before_filter :blob, except: [:new, :create] - before_filter :from_merge_request, only: [:edit, :update] - before_filter :after_edit_path, only: [:edit, :update] - before_filter :require_branch_head, only: [:edit, :update] - - def new - commit unless @repository.empty? - end - - def create - file_path = File.join(@path, File.basename(params[:file_name])) - result = Files::CreateService.new( - @project, - current_user, - params.merge(new_branch: sanitized_new_branch_name), - @ref, - file_path - ).execute - - if result[:status] == :success - flash[:notice] = "Your changes have been successfully committed" - ref = sanitized_new_branch_name.presence || @ref - redirect_to namespace_project_blob_path(@project.namespace, @project, File.join(ref, file_path)) - else - flash[:alert] = result[:message] - render :new - end - end - - def show - end - - def edit - @last_commit = Gitlab::Git::Commit.last_for_path(@repository, @ref, @path).sha - end - - def update - result = Files::UpdateService. - new( - @project, - current_user, - params.merge(new_branch: sanitized_new_branch_name), - @ref, - @path - ).execute - - if result[:status] == :success - flash[:notice] = "Your changes have been successfully committed" - - if from_merge_request - from_merge_request.reload_code - end - - redirect_to after_edit_path - else - flash[:alert] = result[:message] - render :edit - end - end - - def preview - @content = params[:content] - diffy = Diffy::Diff.new(@blob.data, @content, diff: '-U 3', include_diff_info: true) - @diff_lines = Gitlab::Diff::Parser.new.parse(diffy.diff.scan(/.*\n/)) - - render layout: false - end - - def destroy - result = Files::DeleteService.new(@project, current_user, params, @ref, @path).execute - - if result[:status] == :success - flash[:notice] = "Your changes have been successfully committed" - redirect_to namespace_project_tree_path(@project.namespace, @project, - @ref) - else - flash[:alert] = result[:message] - render :show - end - end - - def diff - @form = UnfoldForm.new(params) - @lines = @blob.data.lines[@form.since - 1..@form.to - 1] - - if @form.bottom? - @match_line = '' - else - lines_length = @lines.length - 1 - line = [@form.since, lines_length].join(',') - @match_line = "@@ -#{line}+#{line} @@" - end - - render layout: false - end - - private - - def blob - @blob ||= @repository.blob_at(@commit.id, @path) - - if @blob - @blob - else - if tree = @repository.tree(@commit.id, @path) - if tree.entries.any? - redirect_to namespace_project_tree_path(@project.namespace, @project, File.join(@ref, @path)) and return - end - end - - return not_found! - end - end - - def commit - @commit = @repository.commit(@ref) - - return not_found! unless @commit - end - - def assign_blob_vars - @id = params[:id] - @ref, @path = extract_ref(@id) - - - rescue InvalidPathError - not_found! - end - - def after_edit_path - @after_edit_path ||= - if from_merge_request - diffs_namespace_project_merge_request_path(from_merge_request.target_project.namespace, from_merge_request.target_project, from_merge_request) + - "#file-path-#{hexdigest(@path)}" - elsif sanitized_new_branch_name.present? - namespace_project_blob_path(@project.namespace, @project, File.join(sanitized_new_branch_name, @path)) - else - namespace_project_blob_path(@project.namespace, @project, @id) - end - end - - def from_merge_request - # If blob edit was initiated from merge request page - @from_merge_request ||= MergeRequest.find_by(id: params[:from_merge_request_id]) - end - - def sanitized_new_branch_name - @new_branch ||= sanitize(strip_tags(params[:new_branch])) - end -end diff --git a/app/controllers/projects/branches_controller.rb b/app/controllers/projects/branches_controller.rb deleted file mode 100644 index f049e96e61d..00000000000 --- a/app/controllers/projects/branches_controller.rb +++ /dev/null @@ -1,46 +0,0 @@ -class Projects::BranchesController < Projects::ApplicationController - include ActionView::Helpers::SanitizeHelper - # Authorize - before_filter :require_non_empty_project - before_filter :authorize_download_code! - before_filter :authorize_push_code!, only: [:create, :destroy] - - def index - @sort = params[:sort] || 'name' - @branches = @repository.branches_sorted_by(@sort) - @branches = Kaminari.paginate_array(@branches).page(params[:page]).per(PER_PAGE) - end - - def recent - @branches = @repository.recent_branches - end - - def create - branch_name = sanitize(strip_tags(params[:branch_name])) - ref = sanitize(strip_tags(params[:ref])) - result = CreateBranchService.new(project, current_user). - execute(branch_name, ref) - - if result[:status] == :success - @branch = result[:branch] - redirect_to namespace_project_tree_path(@project.namespace, @project, - @branch.name) - else - @error = result[:message] - render action: 'new' - end - end - - def destroy - DeleteBranchService.new(project, current_user).execute(params[:id]) - @branch_name = params[:id] - - respond_to do |format| - format.html do - redirect_to namespace_project_branches_path(@project.namespace, - @project) - end - format.js - end - end -end diff --git a/app/controllers/projects/commit_controller.rb b/app/controllers/projects/commit_controller.rb deleted file mode 100644 index 87e39f1363a..00000000000 --- a/app/controllers/projects/commit_controller.rb +++ /dev/null @@ -1,41 +0,0 @@ -# Controller for a specific Commit -# -# Not to be confused with CommitsController, plural. -class Projects::CommitController < Projects::ApplicationController - # Authorize - before_filter :require_non_empty_project - before_filter :authorize_download_code! - before_filter :commit - - def show - return git_not_found! unless @commit - - @line_notes = @project.notes.for_commit_id(commit.id).inline - @diffs = @commit.diffs - @note = @project.build_commit_note(commit) - @notes_count = @project.notes.for_commit_id(commit.id).count - @notes = @project.notes.for_commit_id(@commit.id).not_inline.fresh - @noteable = @commit - @comments_allowed = @reply_allowed = true - @comments_target = { - noteable_type: 'Commit', - commit_id: @commit.id - } - - respond_to do |format| - format.html - format.diff { render text: @commit.to_diff } - format.patch { render text: @commit.to_patch } - end - end - - def branches - @branches = @project.repository.branch_names_contains(commit.id) - @tags = @project.repository.tag_names_contains(commit.id) - render layout: false - end - - def commit - @commit ||= @project.repository.commit(params[:id]) - end -end diff --git a/app/controllers/projects/commits_controller.rb b/app/controllers/projects/commits_controller.rb deleted file mode 100644 index 4b6ab437476..00000000000 --- a/app/controllers/projects/commits_controller.rb +++ /dev/null @@ -1,24 +0,0 @@ -require "base64" - -class Projects::CommitsController < Projects::ApplicationController - include ExtractsPath - - before_filter :require_non_empty_project - before_filter :assign_ref_vars - before_filter :authorize_download_code! - - def show - @repo = @project.repository - @limit, @offset = (params[:limit] || 40), (params[:offset] || 0) - - @commits = @repo.commits(@ref, @path, @limit, @offset) - @note_counts = Note.where(commit_id: @commits.map(&:id)). - group(:commit_id).count - - respond_to do |format| - format.html - format.json { pager_json("projects/commits/_commits", @commits.size) } - format.atom { render layout: false } - end - end -end diff --git a/app/controllers/projects/compare_controller.rb b/app/controllers/projects/compare_controller.rb deleted file mode 100644 index 146808fa562..00000000000 --- a/app/controllers/projects/compare_controller.rb +++ /dev/null @@ -1,31 +0,0 @@ -class Projects::CompareController < Projects::ApplicationController - # Authorize - before_filter :require_non_empty_project - before_filter :authorize_download_code! - - def index - end - - def show - base_ref = params[:from] - head_ref = params[:to] - - compare_result = CompareService.new.execute( - current_user, - @project, - head_ref, - @project, - base_ref - ) - - @commits = compare_result.commits - @diffs = compare_result.diffs - @commit = @commits.last - @line_notes = [] - end - - def create - redirect_to namespace_project_compare_path(@project.namespace, @project, - params[:from], params[:to]) - end -end diff --git a/app/controllers/projects/deploy_keys_controller.rb b/app/controllers/projects/deploy_keys_controller.rb deleted file mode 100644 index 6fba3ce299b..00000000000 --- a/app/controllers/projects/deploy_keys_controller.rb +++ /dev/null @@ -1,65 +0,0 @@ -class Projects::DeployKeysController < Projects::ApplicationController - respond_to :html - - # Authorize - before_filter :authorize_admin_project! - - layout "project_settings" - - def index - @enabled_keys = @project.deploy_keys - - @available_keys = accessible_keys - @enabled_keys - @available_project_keys = current_user.project_deploy_keys - @enabled_keys - @available_public_keys = DeployKey.are_public - @enabled_keys - - # Public keys that are already used by another accessible project are already - # in @available_project_keys. - @available_public_keys -= @available_project_keys - end - - def show - @key = @project.deploy_keys.find(params[:id]) - end - - def new - @key = @project.deploy_keys.new - - respond_with(@key) - end - - def create - @key = DeployKey.new(deploy_key_params) - - if @key.valid? && @project.deploy_keys << @key - redirect_to namespace_project_deploy_keys_path(@project.namespace, - @project) - else - render "new" - end - end - - def enable - @key = accessible_keys.find(params[:id]) - @project.deploy_keys << @key - - redirect_to namespace_project_deploy_keys_path(@project.namespace, - @project) - end - - def disable - @project.deploy_keys_projects.find_by(deploy_key_id: params[:id]).destroy - - redirect_to :back - end - - protected - - def accessible_keys - @accessible_keys ||= current_user.accessible_deploy_keys - end - - def deploy_key_params - params.require(:deploy_key).permit(:key, :title) - end -end diff --git a/app/controllers/projects/forks_controller.rb b/app/controllers/projects/forks_controller.rb deleted file mode 100644 index 21a151a426e..00000000000 --- a/app/controllers/projects/forks_controller.rb +++ /dev/null @@ -1,25 +0,0 @@ -class Projects::ForksController < Projects::ApplicationController - # Authorize - before_filter :require_non_empty_project - before_filter :authorize_download_code! - - def new - @namespaces = current_user.manageable_namespaces - @namespaces.delete(@project.namespace) - end - - def create - namespace = Namespace.find(params[:namespace_key]) - @forked_project = ::Projects::ForkService.new(project, current_user, namespace: namespace).execute - - if @forked_project.saved? && @forked_project.forked? - redirect_to( - namespace_project_path(@forked_project.namespace, @forked_project), - notice: 'Project was successfully forked.' - ) - else - @title = 'Fork project' - render :error - end - end -end diff --git a/app/controllers/projects/graphs_controller.rb b/app/controllers/projects/graphs_controller.rb deleted file mode 100644 index 6e54af356e0..00000000000 --- a/app/controllers/projects/graphs_controller.rb +++ /dev/null @@ -1,39 +0,0 @@ -class Projects::GraphsController < Projects::ApplicationController - # Authorize - before_filter :require_non_empty_project - before_filter :authorize_download_code! - - def show - respond_to do |format| - format.html - format.json do - fetch_graph - end - end - end - - def commits - @commits = @project.repository.commits(nil, nil, 2000, 0, true) - @commits_graph = Gitlab::Graphs::Commits.new(@commits) - @commits_per_week_days = @commits_graph.commits_per_week_days - @commits_per_time = @commits_graph.commits_per_time - @commits_per_month = @commits_graph.commits_per_month - end - - private - - def fetch_graph - @commits = @project.repository.commits(nil, nil, 6000, 0, true) - @log = [] - - @commits.each do |commit| - @log << { - author_name: commit.author_name, - author_email: commit.author_email, - date: commit.committed_date.strftime("%Y-%m-%d") - } - end - - render json: @log.to_json - end -end diff --git a/app/controllers/projects/hooks_controller.rb b/app/controllers/projects/hooks_controller.rb deleted file mode 100644 index ba95bb13e1f..00000000000 --- a/app/controllers/projects/hooks_controller.rb +++ /dev/null @@ -1,58 +0,0 @@ -class Projects::HooksController < Projects::ApplicationController - # Authorize - before_filter :authorize_admin_project! - - respond_to :html - - layout "project_settings" - - def index - @hooks = @project.hooks - @hook = ProjectHook.new - end - - def create - @hook = @project.hooks.new(hook_params) - @hook.save - - if @hook.valid? - redirect_to namespace_project_hooks_path(@project.namespace, @project) - else - @hooks = @project.hooks.select(&:persisted?) - render :index - end - end - - def test - if !@project.empty_repo? - status = TestHookService.new.execute(hook, current_user) - - if status - flash[:notice] = 'Hook successfully executed.' - else - flash[:alert] = 'Hook execution failed. '\ - 'Ensure hook URL is correct and service is up.' - end - else - flash[:alert] = 'Hook execution failed. Ensure the project has commits.' - end - - redirect_to :back - end - - def destroy - hook.destroy - - redirect_to namespace_project_hooks_path(@project.namespace, @project) - end - - private - - def hook - @hook ||= @project.hooks.find(params[:id]) - end - - def hook_params - params.require(:hook).permit(:url, :push_events, :issues_events, :merge_requests_events, :tag_push_events) - end -end diff --git a/app/controllers/projects/imports_controller.rb b/app/controllers/projects/imports_controller.rb deleted file mode 100644 index b64491b4666..00000000000 --- a/app/controllers/projects/imports_controller.rb +++ /dev/null @@ -1,51 +0,0 @@ -class Projects::ImportsController < Projects::ApplicationController - # Authorize - before_filter :authorize_admin_project! - before_filter :require_no_repo - before_filter :redirect_if_progress, except: :show - - def new - end - - def create - @project.import_url = params[:project][:import_url] - - if @project.save - @project.reload - - if @project.import_failed? - @project.import_retry - else - @project.import_start - end - end - - redirect_to namespace_project_import_path(@project.namespace, @project) - end - - def show - unless @project.import_in_progress? - if @project.import_finished? - redirect_to(project_path(@project)) and return - else - redirect_to new_namespace_project_import_path(@project.namespace, - @project) && return - end - end - end - - private - - def require_no_repo - if @project.repository_exists? && !@project.import_in_progress? - redirect_to(namespace_project_path(@project.namespace, @project)) and return - end - end - - def redirect_if_progress - if @project.import_in_progress? - redirect_to namespace_project_import_path(@project.namespace, @project) && - return - end - end -end diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb deleted file mode 100644 index 88302276b5e..00000000000 --- a/app/controllers/projects/issues_controller.rb +++ /dev/null @@ -1,159 +0,0 @@ -class Projects::IssuesController < Projects::ApplicationController - before_filter :module_enabled - before_filter :issue, only: [:edit, :update, :show, :toggle_subscription] - - # Allow read any issue - before_filter :authorize_read_issue! - - # Allow write(create) issue - before_filter :authorize_write_issue!, only: [:new, :create] - - # Allow modify issue - before_filter :authorize_modify_issue!, only: [:edit, :update] - - # Allow issues bulk update - before_filter :authorize_admin_issues!, only: [:bulk_update] - - respond_to :html - - def index - terms = params['issue_search'] - @issues = get_issues_collection - @issues = @issues.full_search(terms) if terms.present? - @issues = @issues.page(params[:page]).per(PER_PAGE) - - respond_to do |format| - format.html - format.atom { render layout: false } - format.json do - render json: { - html: view_to_html_string("projects/issues/_issues") - } - end - end - end - - def new - params[:issue] ||= ActionController::Parameters.new( - assignee_id: "" - ) - - @issue = @project.issues.new(issue_params) - respond_with(@issue) - end - - def edit - respond_with(@issue) - end - - def show - @note = @project.notes.new(noteable: @issue) - @notes = @issue.notes.inc_author.fresh - @noteable = @issue - - respond_with(@issue) - end - - def create - @issue = Issues::CreateService.new(project, current_user, issue_params).execute - - respond_to do |format| - format.html do - if @issue.valid? - redirect_to issue_path(@issue) - else - render :new - end - end - format.js do |format| - @link = @issue.attachment.url.to_js - end - end - end - - def update - @issue = Issues::UpdateService.new(project, current_user, issue_params).execute(issue) - - respond_to do |format| - format.js - format.html do - if @issue.valid? - redirect_to issue_path(@issue) - else - render :edit - end - end - format.json do - render json: { - saved: @issue.valid?, - assignee_avatar_url: @issue.assignee.try(:avatar_url) - } - end - end - end - - def bulk_update - result = Issues::BulkUpdateService.new(project, current_user, bulk_update_params).execute - redirect_to :back, notice: "#{result[:count]} issues updated" - end - - def toggle_subscription - @issue.toggle_subscription(current_user) - - render nothing: true - end - - protected - - def issue - @issue ||= begin - @project.issues.find_by!(iid: params[:id]) - rescue ActiveRecord::RecordNotFound - redirect_old - end - end - - def authorize_modify_issue! - return render_404 unless can?(current_user, :modify_issue, @issue) - end - - def authorize_admin_issues! - return render_404 unless can?(current_user, :admin_issue, @project) - end - - def module_enabled - return render_404 unless @project.issues_enabled - end - - # Since iids are implemented only in 6.1 - # user may navigate to issue page using old global ids. - # - # To prevent 404 errors we provide a redirect to correct iids until 7.0 release - # - def redirect_old - issue = @project.issues.find_by(id: params[:id]) - - if issue - redirect_to issue_path(issue) - return - else - raise ActiveRecord::RecordNotFound.new - end - end - - def issue_params - params.require(:issue).permit( - :title, :assignee_id, :position, :description, - :milestone_id, :state_event, :task_num, label_ids: [] - ) - end - - def bulk_update_params - params.require(:update).permit( - :issues_ids, - :assignee_id, - :milestone_id, - :state_event - ) - end -end diff --git a/app/controllers/projects/labels_controller.rb b/app/controllers/projects/labels_controller.rb deleted file mode 100644 index 207a01ed3b0..00000000000 --- a/app/controllers/projects/labels_controller.rb +++ /dev/null @@ -1,82 +0,0 @@ -class Projects::LabelsController < Projects::ApplicationController - before_filter :module_enabled - before_filter :label, only: [:edit, :update, :destroy] - before_filter :authorize_labels! - before_filter :authorize_admin_labels!, except: [:index] - - respond_to :js, :html - - def index - @labels = @project.labels.page(params[:page]).per(PER_PAGE) - end - - def new - @label = @project.labels.new - end - - def create - @label = @project.labels.create(label_params) - - if @label.valid? - redirect_to namespace_project_labels_path(@project.namespace, @project) - else - render 'new' - end - end - - def edit - end - - def update - if @label.update_attributes(label_params) - redirect_to namespace_project_labels_path(@project.namespace, @project) - else - render 'edit' - end - end - - def generate - Gitlab::IssuesLabels.generate(@project) - - if params[:redirect] == 'issues' - redirect_to namespace_project_issues_path(@project.namespace, @project) - elsif params[:redirect] == 'merge_requests' - redirect_to namespace_project_merge_requests_path(@project.namespace, - @project) - else - redirect_to namespace_project_labels_path(@project.namespace, @project) - end - end - - def destroy - @label.destroy - - respond_to do |format| - format.html do - redirect_to(namespace_project_labels_path(@project.namespace, @project), - notice: 'Label was removed') - end - format.js - end - end - - protected - - def module_enabled - unless @project.issues_enabled || @project.merge_requests_enabled - return render_404 - end - end - - def label_params - params.require(:label).permit(:title, :color) - end - - def label - @label = @project.labels.find(params[:id]) - end - - def authorize_admin_labels! - return render_404 unless can?(current_user, :admin_label, @project) - end -end diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb deleted file mode 100644 index 47ce8467358..00000000000 --- a/app/controllers/projects/merge_requests_controller.rb +++ /dev/null @@ -1,270 +0,0 @@ -require 'gitlab/satellite/satellite' - -class Projects::MergeRequestsController < Projects::ApplicationController - before_filter :module_enabled - before_filter :merge_request, only: [:edit, :update, :show, :diffs, :automerge, :automerge_check, :ci_status, :toggle_subscription] - before_filter :closes_issues, only: [:edit, :update, :show, :diffs] - before_filter :validates_merge_request, only: [:show, :diffs] - before_filter :define_show_vars, only: [:show, :diffs] - - # Allow read any merge_request - before_filter :authorize_read_merge_request! - - # Allow write(create) merge_request - before_filter :authorize_write_merge_request!, only: [:new, :create] - - # Allow modify merge_request - before_filter :authorize_modify_merge_request!, only: [:close, :edit, :update, :sort] - - def index - terms = params['issue_search'] - @merge_requests = get_merge_requests_collection - @merge_requests = @merge_requests.full_search(terms) if terms.present? - @merge_requests = @merge_requests.page(params[:page]).per(PER_PAGE) - - respond_to do |format| - format.html - format.json do - render json: { - html: view_to_html_string("projects/merge_requests/_merge_requests") - } - end - end - end - - def show - @note_counts = Note.where(commit_id: @merge_request.commits.map(&:id)). - group(:commit_id).count - - respond_to do |format| - format.html - format.json { render json: @merge_request } - format.diff { render text: @merge_request.to_diff(current_user) } - format.patch { render text: @merge_request.to_patch(current_user) } - end - end - - def diffs - @commit = @merge_request.last_commit - @comments_allowed = @reply_allowed = true - @comments_target = { - noteable_type: 'MergeRequest', - noteable_id: @merge_request.id - } - @line_notes = @merge_request.notes.where("line_code is not null") - - respond_to do |format| - format.html - format.json { render json: { html: view_to_html_string("projects/merge_requests/show/_diffs") } } - end - end - - def new - params[:merge_request] ||= ActionController::Parameters.new(source_project: @project) - @merge_request = MergeRequests::BuildService.new(project, current_user, merge_request_params).execute - - @target_branches = if @merge_request.target_project - @merge_request.target_project.repository.branch_names - else - [] - end - - @target_project = merge_request.target_project - @source_project = merge_request.source_project - @commits = @merge_request.compare_commits - @commit = @merge_request.compare_commits.last - @diffs = @merge_request.compare_diffs - @note_counts = Note.where(commit_id: @commits.map(&:id)). - group(:commit_id).count - end - - def edit - @source_project = @merge_request.source_project - @target_project = @merge_request.target_project - @target_branches = @merge_request.target_project.repository.branch_names - end - - def create - @target_branches ||= [] - @merge_request = MergeRequests::CreateService.new(project, current_user, merge_request_params).execute - - if @merge_request.valid? - redirect_to(merge_request_path(@merge_request)) - else - @source_project = @merge_request.source_project - @target_project = @merge_request.target_project - render action: "new" - end - end - - def update - @merge_request = MergeRequests::UpdateService.new(project, current_user, merge_request_params).execute(@merge_request) - - if @merge_request.valid? - respond_to do |format| - format.js - format.html do - redirect_to([@merge_request.target_project.namespace.becomes(Namespace), - @merge_request.target_project, @merge_request]) - end - format.json do - render json: { - saved: @merge_request.valid?, - assignee_avatar_url: @merge_request.assignee.try(:avatar_url) - } - end - end - else - render "edit" - end - end - - def automerge_check - if @merge_request.unchecked? - @merge_request.check_if_can_be_merged - end - - render json: { merge_status: @merge_request.merge_status_name } - end - - def automerge - return access_denied! unless allowed_to_merge? - - if @merge_request.open? && @merge_request.can_be_merged? - AutoMergeWorker.perform_async(@merge_request.id, current_user.id, params) - @status = true - else - @status = false - end - end - - def branch_from - #This is always source - @source_project = @merge_request.nil? ? @project : @merge_request.source_project - @commit = @repository.commit(params[:ref]) if params[:ref].present? - end - - def branch_to - @target_project = selected_target_project - @commit = @target_project.repository.commit(params[:ref]) if params[:ref].present? - end - - def update_branches - @target_project = selected_target_project - @target_branches = @target_project.repository.branch_names - - respond_to do |format| - format.js - end - end - - def ci_status - ci_service = @merge_request.source_project.ci_service - status = ci_service.commit_status(merge_request.last_commit.sha, merge_request.source_branch) - - if ci_service.respond_to?(:commit_coverage) - coverage = ci_service.commit_coverage(merge_request.last_commit.sha, merge_request.source_branch) - end - - response = { - status: status, - coverage: coverage - } - - render json: response - end - - def toggle_subscription - @merge_request.toggle_subscription(current_user) - - render nothing: true - end - - protected - - def selected_target_project - if @project.id.to_s == params[:target_project_id] || @project.forked_project_link.nil? - @project - else - @project.forked_project_link.forked_from_project - end - end - - def merge_request - @merge_request ||= @project.merge_requests.find_by!(iid: params[:id]) - end - - def closes_issues - @closes_issues ||= @merge_request.closes_issues - end - - def authorize_modify_merge_request! - return render_404 unless can?(current_user, :modify_merge_request, @merge_request) - end - - def authorize_admin_merge_request! - return render_404 unless can?(current_user, :admin_merge_request, @merge_request) - end - - def module_enabled - return render_404 unless @project.merge_requests_enabled - end - - def validates_merge_request - # If source project was removed (Ex. mr from fork to origin) - return invalid_mr unless @merge_request.source_project - - # Show git not found page - # if there is no saved commits between source & target branch - if @merge_request.commits.blank? - # and if target branch doesn't exist - return invalid_mr unless @merge_request.target_branch_exists? - - # or if source branch doesn't exist - return invalid_mr unless @merge_request.source_branch_exists? - end - end - - def define_show_vars - # Build a note object for comment form - @note = @project.notes.new(noteable: @merge_request) - @notes = @merge_request.mr_and_commit_notes.inc_author.fresh - @discussions = Note.discussions_from_notes(@notes) - @noteable = @merge_request - - # Get commits from repository - # or from cache if already merged - @commits = @merge_request.commits - - @merge_request_diff = @merge_request.merge_request_diff - @allowed_to_merge = allowed_to_merge? - @show_merge_controls = @merge_request.open? && @commits.any? && @allowed_to_merge - @source_branch = @merge_request.source_project.repository.find_branch(@merge_request.source_branch).try(:name) - - if @merge_request.locked_long_ago? - @merge_request.unlock_mr - @merge_request.close - end - end - - def allowed_to_merge? - allowed_to_push_code?(project, @merge_request.target_branch) - end - - def invalid_mr - # Render special view for MR with removed source or target branch - render 'invalid' - end - - def allowed_to_push_code?(project, branch) - ::Gitlab::GitAccess.new(current_user, project).can_push_to_branch?(branch) - end - - def merge_request_params - params.require(:merge_request).permit( - :title, :assignee_id, :source_project_id, :source_branch, - :target_project_id, :target_branch, :milestone_id, - :state_event, :description, :task_num, label_ids: [] - ) - end -end diff --git a/app/controllers/projects/milestones_controller.rb b/app/controllers/projects/milestones_controller.rb deleted file mode 100644 index b49b549547a..00000000000 --- a/app/controllers/projects/milestones_controller.rb +++ /dev/null @@ -1,116 +0,0 @@ -class Projects::MilestonesController < Projects::ApplicationController - before_filter :module_enabled - before_filter :milestone, only: [:edit, :update, :destroy, :show, :sort_issues, :sort_merge_requests] - - # Allow read any milestone - before_filter :authorize_read_milestone! - - # Allow admin milestone - before_filter :authorize_admin_milestone!, except: [:index, :show] - - respond_to :html - - def index - @milestones = case params[:state] - when 'all'; @project.milestones.order("state, due_date DESC") - when 'closed'; @project.milestones.closed.order("due_date DESC") - else @project.milestones.active.order("due_date ASC") - end - - @milestones = @milestones.includes(:project) - @milestones = @milestones.page(params[:page]).per(PER_PAGE) - end - - def new - @milestone = @project.milestones.new - respond_with(@milestone) - end - - def edit - respond_with(@milestone) - end - - def show - @issues = @milestone.issues - @users = @milestone.participants.uniq - @merge_requests = @milestone.merge_requests - end - - def create - @milestone = Milestones::CreateService.new(project, current_user, milestone_params).execute - - if @milestone.save - redirect_to namespace_project_milestone_path(@project.namespace, - @project, @milestone) - else - render "new" - end - end - - def update - @milestone = Milestones::UpdateService.new(project, current_user, milestone_params).execute(milestone) - - respond_to do |format| - format.js - format.html do - if @milestone.valid? - redirect_to namespace_project_milestone_path(@project.namespace, - @project, @milestone) - else - render :edit - end - end - end - end - - def destroy - return access_denied! unless can?(current_user, :admin_milestone, @milestone) - - @milestone.destroy - - respond_to do |format| - format.html { redirect_to namespace_project_milestones_path } - format.js { render nothing: true } - end - end - - def sort_issues - @issues = @milestone.issues.where(id: params['sortable_issue']) - @issues.each do |issue| - issue.position = params['sortable_issue'].index(issue.id.to_s) + 1 - issue.save - end - - render json: { saved: true } - end - - def sort_merge_requests - @merge_requests = @milestone.merge_requests.where(id: params['sortable_merge_request']) - @merge_requests.each do |merge_request| - merge_request.position = params['sortable_merge_request'].index(merge_request.id.to_s) + 1 - merge_request.save - end - - render json: { saved: true } - end - - protected - - def milestone - @milestone ||= @project.milestones.find_by!(iid: params[:id]) - end - - def authorize_admin_milestone! - return render_404 unless can?(current_user, :admin_milestone, @project) - end - - def module_enabled - unless @project.issues_enabled || @project.merge_requests_enabled - return render_404 - end - end - - def milestone_params - params.require(:milestone).permit(:title, :description, :due_date, :state_event) - end -end diff --git a/app/controllers/projects/network_controller.rb b/app/controllers/projects/network_controller.rb deleted file mode 100644 index 83d1c1dacae..00000000000 --- a/app/controllers/projects/network_controller.rb +++ /dev/null @@ -1,18 +0,0 @@ -class Projects::NetworkController < Projects::ApplicationController - include ExtractsPath - include ApplicationHelper - - before_filter :require_non_empty_project - before_filter :assign_ref_vars - before_filter :authorize_download_code! - - def show - respond_to do |format| - format.html - - format.json do - @graph = Network::Graph.new(project, @ref, @commit, @options[:filter_ref]) - end - end - end -end diff --git a/app/controllers/projects/notes_controller.rb b/app/controllers/projects/notes_controller.rb deleted file mode 100644 index 868629a0bc4..00000000000 --- a/app/controllers/projects/notes_controller.rb +++ /dev/null @@ -1,125 +0,0 @@ -class Projects::NotesController < Projects::ApplicationController - # Authorize - before_filter :authorize_read_note! - before_filter :authorize_write_note!, only: [:create] - before_filter :authorize_admin_note!, only: [:update, :destroy] - before_filter :find_current_user_notes, except: [:destroy, :delete_attachment] - - def index - current_fetched_at = Time.now.to_i - - notes_json = { notes: [], last_fetched_at: current_fetched_at } - - @notes.each do |note| - notes_json[:notes] << { - id: note.id, - html: note_to_html(note) - } - end - - render json: notes_json - end - - def create - @note = Notes::CreateService.new(project, current_user, note_params).execute - - respond_to do |format| - format.json { render_note_json(@note) } - format.html { redirect_to :back } - end - end - - def update - if note.editable? - note.update_attributes(note_params) - note.reset_events_cache - end - - respond_to do |format| - format.json { render_note_json(note) } - format.html { redirect_to :back } - end - end - - def destroy - if note.editable? - note.destroy - note.reset_events_cache - end - - respond_to do |format| - format.js { render nothing: true } - end - end - - def delete_attachment - note.remove_attachment! - note.update_attribute(:attachment, nil) - - respond_to do |format| - format.js { render nothing: true } - end - end - - private - - def note - @note ||= @project.notes.find(params[:id]) - end - - def note_to_html(note) - render_to_string( - "projects/notes/_note", - layout: false, - formats: [:html], - locals: { note: note } - ) - end - - def note_to_discussion_html(note) - render_to_string( - "projects/notes/_diff_notes_with_reply", - layout: false, - formats: [:html], - locals: { notes: [note] } - ) - end - - def note_to_discussion_with_diff_html(note) - return unless note.for_diff_line? - - render_to_string( - "projects/notes/_discussion", - layout: false, - formats: [:html], - locals: { discussion_notes: [note] } - ) - end - - def render_note_json(note) - render json: { - id: note.id, - discussion_id: note.discussion_id, - html: note_to_html(note), - discussion_html: note_to_discussion_html(note), - discussion_with_diff_html: note_to_discussion_with_diff_html(note) - } - end - - def authorize_admin_note! - return access_denied! unless can?(current_user, :admin_note, note) - end - - def note_params - params.require(:note).permit( - :note, :noteable, :noteable_id, :noteable_type, :project_id, - :attachment, :line_code, :commit_id - ) - end - - private - - def find_current_user_notes - @notes = NotesFinder.new.execute(project, current_user, params) - end -end diff --git a/app/controllers/projects/project_members_controller.rb b/app/controllers/projects/project_members_controller.rb deleted file mode 100644 index 72967a26ff1..00000000000 --- a/app/controllers/projects/project_members_controller.rb +++ /dev/null @@ -1,98 +0,0 @@ -class Projects::ProjectMembersController < Projects::ApplicationController - # Authorize - before_filter :authorize_admin_project!, except: :leave - - layout "project_settings" - - def index - @project_members = @project.project_members - @project_members = @project_members.non_invite unless can?(current_user, :admin_project, @project) - - if params[:search].present? - users = @project.users.search(params[:search]).to_a - @project_members = @project_members.where(user_id: users) - end - - @project_members = @project_members.order('access_level DESC') - - @group = @project.group - if @group - @group_members = @group.group_members - @group_members = @group_members.non_invite unless can?(current_user, :admin_group, @group) - - if params[:search].present? - users = @group.users.search(params[:search]).to_a - @group_members = @group_members.where(user_id: users) - end - - @group_members = @group_members.order('access_level DESC').limit(20) - end - - @project_member = @project.project_members.new - end - - def new - @project_member = @project.project_members.new - end - - def create - @project.team.add_users(params[:user_ids].split(','), params[:access_level], current_user) - - redirect_to namespace_project_project_members_path(@project.namespace, @project) - end - - def update - @project_member = @project.project_members.find(params[:id]) - @project_member.update_attributes(member_params) - end - - def destroy - @project_member = @project.project_members.find(params[:id]) - @project_member.destroy - - respond_to do |format| - format.html do - redirect_to namespace_project_project_members_path(@project.namespace, @project) - end - format.js { render nothing: true } - end - end - - def resend_invite - redirect_path = namespace_project_project_members_path(@project.namespace, @project) - - @project_member = @project.project_members.find(params[:id]) - - if @project_member.invite? - @project_member.resend_invite - - redirect_to redirect_path, notice: 'The invitation was successfully resent.' - else - redirect_to redirect_path, alert: 'The invitation has already been accepted.' - end - end - - def leave - @project.project_members.find_by(user_id: current_user).destroy - - respond_to do |format| - format.html { redirect_to :back } - format.js { render nothing: true } - end - end - - def apply_import - giver = Project.find(params[:source_project_id]) - status = @project.team.import(giver, current_user) - notice = status ? "Successfully imported" : "Import failed" - - redirect_to(namespace_project_project_members_path(project.namespace, project), - notice: notice) - end - - protected - - def member_params - params.require(:project_member).permit(:user_id, :access_level) - end -end diff --git a/app/controllers/projects/protected_branches_controller.rb b/app/controllers/projects/protected_branches_controller.rb deleted file mode 100644 index ac36ac6fcd3..00000000000 --- a/app/controllers/projects/protected_branches_controller.rb +++ /dev/null @@ -1,51 +0,0 @@ -class Projects::ProtectedBranchesController < Projects::ApplicationController - # Authorize - before_filter :require_non_empty_project - before_filter :authorize_admin_project! - - layout "project_settings" - - def index - @branches = @project.protected_branches.to_a - @protected_branch = @project.protected_branches.new - end - - def create - @project.protected_branches.create(protected_branch_params) - redirect_to namespace_project_protected_branches_path(@project.namespace, - @project) - end - - def update - protected_branch = @project.protected_branches.find(params[:id]) - - if protected_branch && - protected_branch.update_attributes( - developers_can_push: params[:developers_can_push] - ) - - respond_to do |format| - format.json { render json: protected_branch, status: :ok } - end - else - respond_to do |format| - format.json { render json: protected_branch.errors, status: :unprocessable_entity } - end - end - end - - def destroy - @project.protected_branches.find(params[:id]).destroy - - respond_to do |format| - format.html { redirect_to namespace_project_protected_branches_path } - format.js { render nothing: true } - end - end - - private - - def protected_branch_params - params.require(:protected_branch).permit(:name, :developers_can_push) - end -end diff --git a/app/controllers/projects/raw_controller.rb b/app/controllers/projects/raw_controller.rb deleted file mode 100644 index b1a029ce696..00000000000 --- a/app/controllers/projects/raw_controller.rb +++ /dev/null @@ -1,37 +0,0 @@ -# Controller for viewing a file's raw -class Projects::RawController < Projects::ApplicationController - include ExtractsPath - - before_filter :require_non_empty_project - before_filter :assign_ref_vars - before_filter :authorize_download_code! - - def show - @blob = @repository.blob_at(@commit.id, @path) - - if @blob - type = get_blob_type - - headers['X-Content-Type-Options'] = 'nosniff' - - send_data( - @blob.data, - type: type, - disposition: 'inline', - filename: @blob.name - ) - else - not_found! - end - end - - private - - def get_blob_type - if @blob.text? - 'text/plain; charset=utf-8' - else - 'application/octet-stream' - end - end -end diff --git a/app/controllers/projects/refs_controller.rb b/app/controllers/projects/refs_controller.rb deleted file mode 100644 index ec3b2b8d75a..00000000000 --- a/app/controllers/projects/refs_controller.rb +++ /dev/null @@ -1,64 +0,0 @@ -class Projects::RefsController < Projects::ApplicationController - include ExtractsPath - - before_filter :require_non_empty_project - before_filter :assign_ref_vars - before_filter :authorize_download_code! - - def switch - respond_to do |format| - format.html do - new_path = if params[:destination] == "tree" - namespace_project_tree_path(@project.namespace, @project, - (@id)) - elsif params[:destination] == "blob" - namespace_project_blob_path(@project.namespace, @project, - (@id)) - elsif params[:destination] == "graph" - namespace_project_network_path(@project.namespace, @project, @id, @options) - else - namespace_project_commits_path(@project.namespace, @project, @id) - end - - redirect_to new_path - end - format.js do - @ref = params[:ref] - define_tree_vars - tree - render "tree" - end - end - end - - def logs_tree - @offset = if params[:offset].present? - params[:offset].to_i - else - 0 - end - - @limit = 25 - - @path = params[:path] - - contents = [] - contents.push(*tree.trees) - contents.push(*tree.blobs) - contents.push(*tree.submodules) - - @logs = contents[@offset, @limit].to_a.map do |content| - file = @path ? File.join(@path, content.name) : content.name - last_commit = @repo.last_commit_for_path(@commit.id, file) - { - file_name: content.name, - commit: last_commit - } - end - - respond_to do |format| - format.html { render_404 } - format.js - end - end -end diff --git a/app/controllers/projects/repositories_controller.rb b/app/controllers/projects/repositories_controller.rb deleted file mode 100644 index 96defb0c721..00000000000 --- a/app/controllers/projects/repositories_controller.rb +++ /dev/null @@ -1,28 +0,0 @@ -class Projects::RepositoriesController < Projects::ApplicationController - # Authorize - before_filter :require_non_empty_project, except: :create - before_filter :authorize_download_code! - before_filter :authorize_admin_project!, only: :create - - def create - @project.create_repository - - redirect_to project_path(@project) - end - - def archive - begin - file_path = ArchiveRepositoryService.new(@project, params[:ref], params[:format]).execute - rescue - return head :not_found - end - - if file_path - # Send file to user - response.headers["Content-Length"] = File.open(file_path).size.to_s - send_file file_path - else - redirect_to request.fullpath - end - end -end diff --git a/app/controllers/projects/services_controller.rb b/app/controllers/projects/services_controller.rb deleted file mode 100644 index 9a484c109ba..00000000000 --- a/app/controllers/projects/services_controller.rb +++ /dev/null @@ -1,59 +0,0 @@ -class Projects::ServicesController < Projects::ApplicationController - # Authorize - before_filter :authorize_admin_project! - before_filter :service, only: [:edit, :update, :test] - - respond_to :html - - layout "project_settings" - - def index - @project.build_missing_services - @services = @project.services.visible.reload - end - - def edit - end - - def update - if @service.update_attributes(service_params) - redirect_to( - edit_namespace_project_service_path(@project.namespace, @project, - @service.to_param, notice: - 'Successfully updated.') - ) - else - render 'edit' - end - end - - def test - data = Gitlab::PushDataBuilder.build_sample(project, current_user) - if @service.execute(data) - message = { notice: 'We sent a request to the provided URL' } - else - message = { alert: 'We tried to send a request to the provided URL but an error occured' } - end - - redirect_to :back, message - end - - private - - def service - @service ||= @project.services.find { |service| service.to_param == params[:id] } - end - - def service_params - params.require(:service).permit( - :title, :token, :type, :active, :api_key, :subdomain, - :room, :recipients, :project_url, :webhook, - :user_key, :device, :priority, :sound, :bamboo_url, :username, :password, - :build_key, :server, :teamcity_url, :build_type, - :description, :issues_url, :new_issue_url, :restrict_to_branch, :channel, - :colorize_messages, :channels, - :push_events, :issues_events, :merge_requests_events, :tag_push_events, - :note_events, :send_from_committer_email, :disable_diffs, :external_wiki_url - ) - end -end diff --git a/app/controllers/projects/snippets_controller.rb b/app/controllers/projects/snippets_controller.rb deleted file mode 100644 index ed268400373..00000000000 --- a/app/controllers/projects/snippets_controller.rb +++ /dev/null @@ -1,93 +0,0 @@ -class Projects::SnippetsController < Projects::ApplicationController - before_filter :module_enabled - before_filter :snippet, only: [:show, :edit, :destroy, :update, :raw] - - # Allow read any snippet - before_filter :authorize_read_project_snippet! - - # Allow write(create) snippet - before_filter :authorize_write_project_snippet!, only: [:new, :create] - - # Allow modify snippet - before_filter :authorize_modify_project_snippet!, only: [:edit, :update] - - # Allow destroy snippet - before_filter :authorize_admin_project_snippet!, only: [:destroy] - - respond_to :html - - def index - @snippets = SnippetsFinder.new.execute(current_user, { - filter: :by_project, - project: @project - }) - end - - def new - @snippet = @project.snippets.build - end - - def create - @snippet = CreateSnippetService.new(@project, current_user, - snippet_params).execute - respond_with(@snippet, - location: namespace_project_snippet_path(@project.namespace, - @project, @snippet)) - end - - def edit - end - - def update - UpdateSnippetService.new(project, current_user, @snippet, - snippet_params).execute - respond_with(@snippet, - location: namespace_project_snippet_path(@project.namespace, - @project, @snippet)) - end - - def show - @note = @project.notes.new(noteable: @snippet) - @notes = @snippet.notes.fresh - @noteable = @snippet - end - - def destroy - return access_denied! unless can?(current_user, :admin_project_snippet, @snippet) - - @snippet.destroy - - redirect_to namespace_project_snippets_path(@project.namespace, @project) - end - - def raw - send_data( - @snippet.content, - type: 'text/plain; charset=utf-8', - disposition: 'inline', - filename: @snippet.sanitized_file_name - ) - end - - protected - - def snippet - @snippet ||= @project.snippets.find(params[:id]) - end - - def authorize_modify_project_snippet! - return render_404 unless can?(current_user, :modify_project_snippet, @snippet) - end - - def authorize_admin_project_snippet! - return render_404 unless can?(current_user, :admin_project_snippet, @snippet) - end - - def module_enabled - return render_404 unless @project.snippets_enabled - end - - def snippet_params - params.require(:project_snippet).permit(:title, :content, :file_name, :private, :visibility_level) - end -end diff --git a/app/controllers/projects/tags_controller.rb b/app/controllers/projects/tags_controller.rb deleted file mode 100644 index 83f4937bce3..00000000000 --- a/app/controllers/projects/tags_controller.rb +++ /dev/null @@ -1,37 +0,0 @@ -class Projects::TagsController < Projects::ApplicationController - # Authorize - before_filter :require_non_empty_project - before_filter :authorize_download_code! - before_filter :authorize_push_code!, only: [:create] - before_filter :authorize_admin_project!, only: [:destroy] - - def index - sorted = VersionSorter.rsort(@repository.tag_names) - @tags = Kaminari.paginate_array(sorted).page(params[:page]).per(PER_PAGE) - end - - def create - result = CreateTagService.new(@project, current_user). - execute(params[:tag_name], params[:ref], params[:message]) - - if result[:status] == :success - @tag = result[:tag] - redirect_to namespace_project_tags_path(@project.namespace, @project) - else - @error = result[:message] - render action: 'new' - end - end - - def destroy - DeleteTagService.new(project, current_user).execute(params[:id]) - - respond_to do |format| - format.html do - redirect_to namespace_project_tags_path(@project.namespace, - @project) - end - format.js - end - end -end diff --git a/app/controllers/projects/tree_controller.rb b/app/controllers/projects/tree_controller.rb deleted file mode 100644 index b23010bf595..00000000000 --- a/app/controllers/projects/tree_controller.rb +++ /dev/null @@ -1,27 +0,0 @@ -# Controller for viewing a repository's file structure -class Projects::TreeController < Projects::ApplicationController - include ExtractsPath - - before_filter :require_non_empty_project, except: [:new, :create] - before_filter :assign_ref_vars - before_filter :authorize_download_code! - - def show - if tree.entries.empty? - if @repository.blob_at(@commit.id, @path) - redirect_to( - namespace_project_blob_path(@project.namespace, @project, - File.join(@ref, @path)) - ) and return - else - return not_found! - end - end - - respond_to do |format| - format.html - # Disable cache so browser history works - format.js { no_cache_headers } - end - end -end diff --git a/app/controllers/projects/wikis_controller.rb b/app/controllers/projects/wikis_controller.rb deleted file mode 100644 index aeb7f0699f5..00000000000 --- a/app/controllers/projects/wikis_controller.rb +++ /dev/null @@ -1,123 +0,0 @@ -require 'project_wiki' - -class Projects::WikisController < Projects::ApplicationController - before_filter :authorize_read_wiki! - before_filter :authorize_write_wiki!, only: [:edit, :create, :history] - before_filter :authorize_admin_wiki!, only: :destroy - before_filter :load_project_wiki - include WikiHelper - - def pages - @wiki_pages = Kaminari.paginate_array(@project_wiki.pages).page(params[:page]).per(PER_PAGE) - end - - def show - @page = @project_wiki.find_page(params[:id], params[:version_id]) - - if @page - render 'show' - elsif file = @project_wiki.find_file(params[:id], params[:version_id]) - if file.on_disk? - send_file file.on_disk_path, disposition: 'inline' - else - send_data( - file.raw_data, - type: file.mime_type, - disposition: 'inline', - filename: file.name - ) - end - else - return render('empty') unless can?(current_user, :write_wiki, @project) - @page = WikiPage.new(@project_wiki) - @page.title = params[:id] - - render 'edit' - end - end - - def edit - @page = @project_wiki.find_page(params[:id]) - end - - def update - @page = @project_wiki.find_page(params[:id]) - - return render('empty') unless can?(current_user, :write_wiki, @project) - - if @page.update(content, format, message) - redirect_to( - namespace_project_wiki_path(@project.namespace, @project, @page), - notice: 'Wiki was successfully updated.' - ) - else - render 'edit' - end - end - - def create - @page = WikiPage.new(@project_wiki) - - if @page.create(wiki_params) - redirect_to( - namespace_project_wiki_path(@project.namespace, @project, @page), - notice: 'Wiki was successfully updated.' - ) - else - render action: "edit" - end - end - - def history - @page = @project_wiki.find_page(params[:id]) - - unless @page - redirect_to( - namespace_project_wiki_path(@project.namespace, @project, :home), - notice: "Page not found" - ) - end - end - - def destroy - @page = @project_wiki.find_page(params[:id]) - @page.delete if @page - - redirect_to( - namespace_project_wiki_path(@project.namespace, @project, :home), - notice: "Page was successfully deleted" - ) - end - - def git_access - end - - private - - def load_project_wiki - @project_wiki = ProjectWiki.new(@project, current_user) - - # Call #wiki to make sure the Wiki Repo is initialized - @project_wiki.wiki - rescue ProjectWiki::CouldNotCreateWikiError => ex - flash[:notice] = "Could not create Wiki Repository at this time. Please try again later." - redirect_to project_path(@project) - return false - end - - def wiki_params - params[:wiki].slice(:title, :content, :format, :message) - end - - def content - params[:wiki][:content] - end - - def format - params[:wiki][:format] - end - - def message - params[:wiki][:message] - end -end |