diff options
-rw-r--r-- | app/controllers/events_controller.rb | 20 | ||||
-rw-r--r-- | app/controllers/projects_controller.rb | 4 | ||||
-rw-r--r-- | app/models/event.rb | 7 | ||||
-rw-r--r-- | app/models/project.rb | 1 | ||||
-rw-r--r-- | app/views/events/index.html.haml | 19 | ||||
-rw-r--r-- | app/views/layouts/_nav_project.html.haml | 4 | ||||
-rw-r--r-- | config/routes.rb | 4 | ||||
-rw-r--r-- | db/migrate/20150320001810_create_event_table.rb | 11 | ||||
-rw-r--r-- | db/schema.rb | 10 |
9 files changed, 78 insertions, 2 deletions
diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb new file mode 100644 index 0000000..6bfe280 --- /dev/null +++ b/app/controllers/events_controller.rb @@ -0,0 +1,20 @@ +class EventsController < ApplicationController + EVENTS_PER_PAGE = 50 + + before_filter :authenticate_user! + before_filter :project + before_filter :authorize_manage_project! + + layout 'project' + + def index + page = (params[:page] || 1).to_i + @events = project.events.order("created_at DESC").page(page).per(EVENTS_PER_PAGE) + end + + private + + def project + @project ||= Project.find(params[:project_id]) + end +end diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 9e7e44c..84481b7 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -63,6 +63,10 @@ class ProjectsController < ApplicationController def update if project.update_attributes(params[:project]) + project.events.create( + user_id: current_user.id, + description: "User #{current_user.username} updated projects settings" + ) redirect_to project, notice: 'Project was successfully updated.' else render action: "edit" diff --git a/app/models/event.rb b/app/models/event.rb new file mode 100644 index 0000000..27413d1 --- /dev/null +++ b/app/models/event.rb @@ -0,0 +1,7 @@ +class Event < ActiveRecord::Base + belongs_to :project + + validates :description, + presence: true, + length: { in: 5..200 } +end diff --git a/app/models/project.rb b/app/models/project.rb index cb1258e..0d4d2a0 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -39,6 +39,7 @@ class Project < ActiveRecord::Base has_many :runners, through: :runner_projects has_many :web_hooks, dependent: :destroy has_many :jobs, dependent: :destroy + has_many :events, dependent: :destroy # Project services has_many :services, dependent: :destroy diff --git a/app/views/events/index.html.haml b/app/views/events/index.html.haml new file mode 100644 index 0000000..779f49b --- /dev/null +++ b/app/views/events/index.html.haml @@ -0,0 +1,19 @@ +%h3.page-title Events + +%table.table + %thead + %tr + %th User ID + %th Description + %th When + - @events.each do |event| + %tr + %td + = event.user_id + %td + = event.description + %td.light + = time_ago_in_words event.updated_at + ago + += paginate @events
\ No newline at end of file diff --git a/app/views/layouts/_nav_project.html.haml b/app/views/layouts/_nav_project.html.haml index a1e221d..063f54e 100644 --- a/app/views/layouts/_nav_project.html.haml +++ b/app/views/layouts/_nav_project.html.haml @@ -28,3 +28,7 @@ = link_to edit_project_path(@project) do %i.icon-cogs Settings + = nav_link path: 'events#index' do + = link_to project_events_path(@project) do + %i.icon-book + Events diff --git a/config/routes.rb b/config/routes.rb index 1ee64ba..9ff6c5d 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -28,7 +28,7 @@ Rails.application.routes.draw do end resource :charts, only: [:show] - + resources :refs, constraints: { ref_id: /.*/ }, only: [] do resources :commits, only: [:show] do member do @@ -63,6 +63,8 @@ Rails.application.routes.draw do get :deploy_jobs end end + + resources :events, only: [:index] end resource :user_sessions do diff --git a/db/migrate/20150320001810_create_event_table.rb b/db/migrate/20150320001810_create_event_table.rb new file mode 100644 index 0000000..ea4f93c --- /dev/null +++ b/db/migrate/20150320001810_create_event_table.rb @@ -0,0 +1,11 @@ +class CreateEventTable < ActiveRecord::Migration + def change + create_table :events do |t| + t.integer :project_id + t.integer :user_id + t.text :description + + t.timestamps + end + end +end diff --git a/db/schema.rb b/db/schema.rb index a0b007c..d488ce1 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20150324001227) do +ActiveRecord::Schema.define(version: 20150320001810) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -57,6 +57,14 @@ ActiveRecord::Schema.define(version: 20150324001227) do add_index "commits", ["project_id"], name: "index_commits_on_project_id", using: :btree add_index "commits", ["sha"], name: "index_commits_on_sha", using: :btree + create_table "events", force: true do |t| + t.integer "project_id" + t.integer "user_id" + t.text "description" + t.datetime "created_at" + t.datetime "updated_at" + end + create_table "jobs", force: true do |t| t.integer "project_id", null: false t.text "commands" |