Commit d55ade16 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

notification scaffold

parent 5f14a6bc
class NotificationsController < ApplicationController
layout 'profile'
def show
@notification = current_user.notification
end
def update
@notification = current_user.notification
end
end
module NotificationsHelper
end
class Notification
#
# Notification levels
#
N_DISABLED = 0
N_PARTICIPATING = 1
N_WATCH = 2
attr_accessor :user
def self.notification_levels
[N_DISABLED, N_PARTICIPATING, N_WATCH]
end
def initialize(user)
@user = user
end
def disabled?
user.notification_level == N_DISABLED
end
def participating?
user.notification_level == N_PARTICIPATING
end
def watch?
user.notification_level == N_WATCH
end
end
...@@ -54,13 +54,6 @@ class User < ActiveRecord::Base ...@@ -54,13 +54,6 @@ class User < ActiveRecord::Base
attr_accessible :login attr_accessible :login
#
# Notification levels
#
N_DISABLED = 0
N_PARTICIPATING = 1
N_WATCH = 2
# #
# Relations # Relations
# #
...@@ -116,6 +109,9 @@ class User < ActiveRecord::Base ...@@ -116,6 +109,9 @@ class User < ActiveRecord::Base
format: { with: Gitlab::Regex.username_regex, format: { with: Gitlab::Regex.username_regex,
message: "only letters, digits & '_' '-' '.' allowed. Letter should be first" } message: "only letters, digits & '_' '-' '.' allowed. Letter should be first" }
validates :notification_level,
inclusion: { in: Notification.notification_levels },
presence: true
validate :namespace_uniq, if: ->(user) { user.username_changed? } validate :namespace_uniq, if: ->(user) { user.username_changed? }
...@@ -216,6 +212,10 @@ class User < ActiveRecord::Base ...@@ -216,6 +212,10 @@ class User < ActiveRecord::Base
username username
end end
def notification
@notification ||= Notification.new(self)
end
def generate_password def generate_password
if self.force_random_password if self.force_random_password
self.password = self.password_confirmation = Devise.friendly_token.first(8) self.password = self.password_confirmation = Devise.friendly_token.first(8)
......
...@@ -11,6 +11,8 @@ ...@@ -11,6 +11,8 @@
%i.icon-home %i.icon-home
= nav_link(path: 'profiles#account') do = nav_link(path: 'profiles#account') do
= link_to "Account", account_profile_path = link_to "Account", account_profile_path
= nav_link(controller: :notifications) do
= link_to "Notifications", profile_notifications_path
= nav_link(controller: :keys) do = nav_link(controller: :keys) do
= link_to keys_path do = link_to keys_path do
SSH Keys SSH Keys
......
%h3.page_title Setup your notification level
%hr
= form_tag profile_notifications_path do
%ul.unstyled
%li
.row
.span3
%h5 Global
.span9
= label_tag do
= radio_button_tag :notification_level, Notification::N_DISABLED, @notification.disabled?
%span Disabled
= label_tag do
= radio_button_tag :notification_level, Notification::N_PARTICIPATING, @notification.participating?
%span Participating
= label_tag do
= radio_button_tag :notification_level, Notification::N_WATCH, @notification.watch?
%span Watch
.form-actions
= submit_tag 'Save', class: 'btn btn-save'
...@@ -110,6 +110,8 @@ Gitlab::Application.routes.draw do ...@@ -110,6 +110,8 @@ Gitlab::Application.routes.draw do
put :reset_private_token put :reset_private_token
put :update_username put :update_username
end end
resource :notifications
end end
resources :keys resources :keys
......
require 'spec_helper'
# Specs in this file have access to a helper object that includes
# the NotificationsHelper. For example:
#
# describe NotificationsHelper do
# describe "string concat" do
# it "concats two strings with spaces" do
# helper.concat_strings("this","that").should == "this that"
# end
# end
# end
describe NotificationsHelper do
pending "add some examples to (or delete) #{__FILE__}"
end
require 'spec_helper'
describe "Notifications" do
describe "GET /notifications" do
it "works! (now write some real specs)" do
# Run the generator again with the --webrat flag if you want to use webrat methods/matchers
get notifications_path
response.status.should be(200)
end
end
end
require "spec_helper"
describe NotificationsController do
describe "routing" do
it "routes to #show" do
get("/profile/notifications").should route_to("notifications#show")
end
it "routes to #update" do
put("/profile/notifications").should route_to("notifications#update")
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment