From 729088a7af7ef7b585066b408542b54f1a1999c5 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Wed, 16 Jan 2013 16:54:01 +0200 Subject: [PATCH] Owner can enable public mode for project --- app/contexts/project_update_context.rb | 1 + app/models/ability.rb | 1 + app/models/project.rb | 4 ++-- app/views/admin/projects/index.html.haml | 2 +- app/views/projects/_form.html.haml | 13 +++++++++++++ app/views/public/projects/index.html.haml | 2 +- 6 files changed, 19 insertions(+), 4 deletions(-) diff --git a/app/contexts/project_update_context.rb b/app/contexts/project_update_context.rb index 5b77d0a7964..f6d69e7b62d 100644 --- a/app/contexts/project_update_context.rb +++ b/app/contexts/project_update_context.rb @@ -1,6 +1,7 @@ class ProjectUpdateContext < BaseContext def execute(role = :default) namespace_id = params[:project].delete(:namespace_id) + params[:project].delete(:public) unless can?(current_user, :change_public_mode, project) allowed_transfer = can?(current_user, :change_namespace, project) || role == :admin diff --git a/app/models/ability.rb b/app/models/ability.rb index 256af1e800b..362877f0b22 100644 --- a/app/models/ability.rb +++ b/app/models/ability.rb @@ -90,6 +90,7 @@ class Ability def project_admin_rules project_master_rules + [ :change_namespace, + :change_public_mode, :rename_project, :remove_project ] diff --git a/app/models/project.rb b/app/models/project.rb index ac32352837a..62f89e2cd1b 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -26,9 +26,9 @@ class Project < ActiveRecord::Base class TransferError < StandardError; end attr_accessible :name, :path, :description, :default_branch, :issues_enabled, - :wall_enabled, :merge_requests_enabled, :wiki_enabled, as: [:default, :admin] + :wall_enabled, :merge_requests_enabled, :wiki_enabled, :public, as: [:default, :admin] - attr_accessible :namespace_id, :creator_id, :public, as: :admin + attr_accessible :namespace_id, :creator_id, as: :admin attr_accessor :error_code diff --git a/app/views/admin/projects/index.html.haml b/app/views/admin/projects/index.html.haml index a3c806bc913..e47cda76636 100644 --- a/app/views/admin/projects/index.html.haml +++ b/app/views/admin/projects/index.html.haml @@ -47,7 +47,7 @@ - @projects.each do |project| %li - if project.public - %i.icon-unlock.cred + %i.icon-share - else %i.icon-lock.cgreen = link_to project.name_with_namespace, [:admin, project] diff --git a/app/views/projects/_form.html.haml b/app/views/projects/_form.html.haml index c8eacdc2a46..8bf96f399f8 100644 --- a/app/views/projects/_form.html.haml +++ b/app/views/projects/_form.html.haml @@ -50,6 +50,19 @@ = f.check_box :wiki_enabled %span.descr Pages for project documentation + - if can? current_user, :change_public_mode, @project + %fieldset.features + %legend + %i.icon-share + Public mode: + .control-group + = f.label :public, class: 'control-label' do + %span Public http clone + .controls + = f.check_box :public + %span.descr + If checked this project will be available for clone without any authentification. Also it will appears on #{link_to "Public page", public_root_path} + - if can? current_user, :change_namespace, @project %fieldset.features diff --git a/app/views/public/projects/index.html.haml b/app/views/public/projects/index.html.haml index f60a0898821..3f5c81181d8 100644 --- a/app/views/public/projects/index.html.haml +++ b/app/views/public/projects/index.html.haml @@ -7,7 +7,7 @@ - @projects.each do |project| %li.clearfix %h5 - %i.icon-star.cgreen + %i.icon-share = project.name_with_namespace .right %span.monospace.tiny