Skip to content
Snippets Groups Projects
Commit d55ade16 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets
Browse files

notification scaffold

parent 5f14a6bc
No related branches found
No related tags found
No related merge requests found
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
Loading
Loading
@@ -54,13 +54,6 @@ class User < ActiveRecord::Base
attr_accessible :login
 
 
#
# Notification levels
#
N_DISABLED = 0
N_PARTICIPATING = 1
N_WATCH = 2
#
# Relations
#
Loading
Loading
@@ -116,6 +109,9 @@ class User < ActiveRecord::Base
format: { with: Gitlab::Regex.username_regex,
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? }
 
Loading
Loading
@@ -216,6 +212,10 @@ class User < ActiveRecord::Base
username
end
 
def notification
@notification ||= Notification.new(self)
end
def generate_password
if self.force_random_password
self.password = self.password_confirmation = Devise.friendly_token.first(8)
Loading
Loading
Loading
Loading
@@ -11,6 +11,8 @@
%i.icon-home
= nav_link(path: 'profiles#account') do
= link_to "Account", account_profile_path
= nav_link(controller: :notifications) do
= link_to "Notifications", profile_notifications_path
= nav_link(controller: :keys) do
= link_to keys_path do
SSH Keys
Loading
Loading
%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'
Loading
Loading
@@ -110,6 +110,8 @@ Gitlab::Application.routes.draw do
put :reset_private_token
put :update_username
end
resource :notifications
end
 
resources :keys
Loading
Loading
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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment