diff options
author | Kamil Trzcinski <ayufan@ayufan.eu> | 2015-07-30 12:16:08 +0200 |
---|---|---|
committer | Kamil Trzcinski <ayufan@ayufan.eu> | 2015-07-30 12:23:25 +0200 |
commit | 861dd8ff0010436c882ebe1ccfa448a0a3029116 (patch) | |
tree | 20261417b95703395b313faa574595105e7e46ab /app | |
parent | 6ec3f9873a61449e50521face3a1b32b03eb9feb (diff) | |
download | gitlab-ci-861dd8ff0010436c882ebe1ccfa448a0a3029116.tar.gz |
Added Application Settings
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/admin/application_settings_controller.rb | 29 | ||||
-rw-r--r-- | app/models/application_setting.rb | 25 | ||||
-rw-r--r-- | app/models/project.rb | 15 | ||||
-rw-r--r-- | app/views/admin/application_settings/_form.html.haml | 24 | ||||
-rw-r--r-- | app/views/admin/application_settings/show.html.haml | 3 | ||||
-rw-r--r-- | app/views/layouts/_nav_admin.html.haml | 8 |
6 files changed, 96 insertions, 8 deletions
diff --git a/app/controllers/admin/application_settings_controller.rb b/app/controllers/admin/application_settings_controller.rb new file mode 100644 index 0000000..8f673b9 --- /dev/null +++ b/app/controllers/admin/application_settings_controller.rb @@ -0,0 +1,29 @@ +class Admin::ApplicationSettingsController < Admin::ApplicationController + before_action :set_application_setting + + def show + end + + def update + if @application_setting.update_attributes(application_setting_params) + redirect_to admin_application_settings_path, + notice: 'Application settings saved successfully' + else + render :show + end + end + + private + + def set_application_setting + @application_setting = ApplicationSetting.current + @application_setting ||= ApplicationSetting.create_from_defaults + end + + def application_setting_params + params.require(:application_setting).permit( + :all_broken_builds, + :add_pusher, + ) + end +end diff --git a/app/models/application_setting.rb b/app/models/application_setting.rb new file mode 100644 index 0000000..f68f10a --- /dev/null +++ b/app/models/application_setting.rb @@ -0,0 +1,25 @@ +# == Schema Information +# +# Table name: application_settings +# +# id :integer not null, primary key +# all_broken_builds :boolean +# add_pusher :boolean +# created_at :datetime +# updated_at :datetime +# + +class ApplicationSetting < ActiveRecord::Base + + def self.current + ApplicationSetting.last + end + + def self.create_from_defaults + create( + all_broken_builds: Settings.gitlab_ci['all_broken_builds'], + add_pusher: Settings.gitlab_ci['add_pusher'], + ) + end + +end diff --git a/app/models/project.rb b/app/models/project.rb index 4e3e966..1b98e19 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -27,6 +27,7 @@ class Project < ActiveRecord::Base include ProjectStatus + include CurrentSettings has_many :commits, dependent: :destroy has_many :builds, through: :commits, dependent: :destroy @@ -70,13 +71,13 @@ ls -la def parse(project) params = { - name: project.name_with_namespace, - gitlab_id: project.id, - path: project.path_with_namespace, - default_ref: project.default_branch || 'master', - ssh_url_to_repo: project.ssh_url_to_repo, - email_add_pusher: GitlabCi.config.gitlab_ci.add_pusher, - email_only_broken_builds: GitlabCi.config.gitlab_ci.all_broken_builds, + name: project.name_with_namespace, + gitlab_id: project.id, + path: project.path_with_namespace, + default_ref: project.default_branch || 'master', + ssh_url_to_repo: project.ssh_url_to_repo, + email_add_pusher: current_application_settings.add_pusher, + email_only_broken_builds: current_application_settings.all_broken_builds, } project = Project.new(params) diff --git a/app/views/admin/application_settings/_form.html.haml b/app/views/admin/application_settings/_form.html.haml new file mode 100644 index 0000000..a767257 --- /dev/null +++ b/app/views/admin/application_settings/_form.html.haml @@ -0,0 +1,24 @@ += form_for @application_setting, url: admin_application_settings_path, html: { class: 'form-horizontal fieldset-form' } do |f| + - if @application_setting.errors.any? + #error_explanation + .alert.alert-danger + - @application_setting.errors.full_messages.each do |msg| + %p= msg + + %fieldset + %legend Default Project Settings + .form-group + .col-sm-offset-2.col-sm-10 + .checkbox + = f.label :all_broken_builds do + = f.check_box :all_broken_builds + Send emails only on broken builds + .form-group + .col-sm-offset-2.col-sm-10 + .checkbox + = f.label :add_pusher do + = f.check_box :add_pusher + Add pusher to recipients list + + .form-actions + = f.submit 'Save', class: 'btn btn-primary' diff --git a/app/views/admin/application_settings/show.html.haml b/app/views/admin/application_settings/show.html.haml new file mode 100644 index 0000000..7ef0aa8 --- /dev/null +++ b/app/views/admin/application_settings/show.html.haml @@ -0,0 +1,3 @@ +%h3.page-title Settings +%hr += render 'form' diff --git a/app/views/layouts/_nav_admin.html.haml b/app/views/layouts/_nav_admin.html.haml index 12bfb80..94b5468 100644 --- a/app/views/layouts/_nav_admin.html.haml +++ b/app/views/layouts/_nav_admin.html.haml @@ -19,4 +19,10 @@ Builds %small.pull-right = Build.count(:all) - + %li + %hr + = nav_link(controller: :application_settings, html_options: { class: 'separate-item'}) do + = link_to admin_application_settings_path do + %i.icon-cogs + %span + Settings |