Added badge system
This commit is contained in:
@@ -437,18 +437,14 @@ blockquote p {
|
||||
color: #ddd !important;
|
||||
}
|
||||
}
|
||||
|
||||
.donor {
|
||||
color: #fff;
|
||||
background: #f60 !important;
|
||||
margin-left: 2px !important;
|
||||
}
|
||||
|
||||
.ign {
|
||||
display: block;
|
||||
color: #000;
|
||||
font-style: italic;
|
||||
}
|
||||
.badge {
|
||||
margin-left: 2px !important;
|
||||
}
|
||||
}
|
||||
|
||||
#online-users {
|
||||
|
||||
@@ -10,8 +10,6 @@ class UsersController < ApplicationController
|
||||
if params[:role]
|
||||
if params[:role].downcase == "staff"
|
||||
@users = User.joins(:role).where("roles.value >= ?", Role.get(:mod).to_i)
|
||||
elsif params[:role].downcase == "donor"
|
||||
@users = User.joins(:role).where(donor: true)
|
||||
else
|
||||
if role = Role.get(params[:role])
|
||||
@users = User.joins(:role).where(role: role)
|
||||
@@ -21,10 +19,18 @@ class UsersController < ApplicationController
|
||||
return
|
||||
end
|
||||
end
|
||||
elsif params[:badge]
|
||||
if badge = Badge.get(params[:badge])
|
||||
@users = User.joins(:badge).where(badge: badge)
|
||||
else
|
||||
flash[:alert] = "badge '#{params[:badge]}' does not exist!"
|
||||
redirect_to users_path
|
||||
return
|
||||
end
|
||||
else
|
||||
@users = User.joins(:role).where.not(id: User.first.id) #Remove first user
|
||||
end
|
||||
@users = @users.order("roles.value desc", "confirmed desc", :name)
|
||||
@users = @users.order("roles.value desc", "confirmed desc", :name) unless params[:badge]
|
||||
@count = @users.size
|
||||
@users = @users.page(params[:page]).per(100)
|
||||
end
|
||||
@@ -151,7 +157,7 @@ class UsersController < ApplicationController
|
||||
def update
|
||||
if (mod? && current_user.role >= @user.role ) || (@user.is?(current_user) && confirmed?)
|
||||
if mod?
|
||||
userdata = user_params([:name, :skype, :skype_public, :youtube, :twitter, :about, :role, :confirmed, :donor])
|
||||
userdata = user_params([:name, :skype, :skype_public, :youtube, :twitter, :about, :role, :badge, :confirmed])
|
||||
else
|
||||
userdata = user_params([:name, :skype, :skype_public, :youtube, :twitter, :about])
|
||||
end
|
||||
@@ -164,6 +170,9 @@ class UsersController < ApplicationController
|
||||
userdata.delete(:role)
|
||||
end
|
||||
end
|
||||
if userdata[:badge]
|
||||
userdata[:badge] = Badge.get(userdata[:badge])
|
||||
end
|
||||
if @user.youtube != userdata[:youtube]
|
||||
youtube = get_youtube(userdata[:youtube])
|
||||
userdata[:youtube] = youtube[:channel]
|
||||
|
||||
18
app/models/badge.rb
Normal file
18
app/models/badge.rb
Normal file
@@ -0,0 +1,18 @@
|
||||
class Badge < ActiveRecord::Base
|
||||
include Comparable
|
||||
has_many :users
|
||||
|
||||
def self.get (input)
|
||||
if input.is_a?(String) || input.is_a?(Symbol)
|
||||
Badge.find_by_name(input)
|
||||
elsif input.is_a?(Fixnum)
|
||||
Badge.find_by_id(input)
|
||||
elsif input.is_a?(Badge)
|
||||
return input
|
||||
end
|
||||
end
|
||||
|
||||
def to_s
|
||||
self.name
|
||||
end
|
||||
end
|
||||
@@ -5,6 +5,7 @@ class User < ActiveRecord::Base
|
||||
strip_attributes
|
||||
|
||||
belongs_to :role
|
||||
belongs_to :badge
|
||||
|
||||
has_secure_password
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<li>Donator+ ($20 or more)
|
||||
</ul>
|
||||
|
||||
<p>We also have <%= link_to "list of users who donated", users_path(role: "donor") %> already!</p>
|
||||
<p>We also have <%= link_to "list of users who donated", users_path(badge: "donor") %> already!</p>
|
||||
|
||||
<h3>Perks for you</h3>
|
||||
<p>For <i>Donator</i> and <i>Donator+</i></p>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<div class="user">
|
||||
<%= link_to user.name, user, class: "role #{user.role.name} #{"banned" if user.banned?} #{"disabled" if user.disabled?} #{"unconfirmed" unless user.confirmed?}", title: "#{user.ign} – #{user.role}", style: "color: #{fcolor(user.role.color)}; background-color: #{user.role.color}" %>
|
||||
<%= link_to "$", donate_statics_path, class: "role donor", title: "Donator" if user.donor? %>
|
||||
<%= link_to user.badge.symbol, users_path(badge: user.badge.name), class: "role badge", title: user.badge.name, style: "color: #{fcolor(user.badge.color)}; background-color: #{user.badge.color}" unless user.badge.value == 0 %>
|
||||
</div>
|
||||
@@ -28,15 +28,17 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Confirmed email address</td>
|
||||
<td>Badge</td>
|
||||
<td>
|
||||
<%= f.select :confirmed, [["No", false], ["Yes", true]], {}, { disabled: !can_edit? } %>
|
||||
<% if current_user.role >= Role.get(:mod) %>
|
||||
<%= f.select :badge, Badge.all %>
|
||||
<% end %>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Donator</td>
|
||||
<td>Confirmed email address</td>
|
||||
<td>
|
||||
<%= f.select :donor, [["No", false], ["Yes", true]], {}, { disabled: !can_edit? } %>
|
||||
<%= f.select :confirmed, [["No", false], ["Yes", true]], {}, { disabled: !can_edit? } %>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
<h1>
|
||||
<% if params[:role] %>
|
||||
<% if params[:role] && !params[:badge]%>
|
||||
<%= title "All '#{params[:role]}' users" %>
|
||||
<% elsif params[:badge] && !params[:role] %>
|
||||
<%= title "All '#{params[:badge]}' users" %>
|
||||
<% elsif params[:role] && params[:badge] %>
|
||||
<%= title "All '#{params[:role]}' and '#{params[:badge]}' users" %>
|
||||
<% else %>
|
||||
<%= title "All Users" %>
|
||||
<% end %>
|
||||
(<%= @count %>)
|
||||
</h1>
|
||||
<%= link_to "show all", users_path if params[:role] %>
|
||||
<%= link_to "show all", users_path if params[:role] || params[:badge] %>
|
||||
|
||||
<div id="userlist">
|
||||
<% @users.each do |u| %>
|
||||
|
||||
8
db/migrate/20170319193517_add_badge_id_to_users.rb
Normal file
8
db/migrate/20170319193517_add_badge_id_to_users.rb
Normal file
@@ -0,0 +1,8 @@
|
||||
class AddBadgeIdToUsers < ActiveRecord::Migration
|
||||
def change
|
||||
add_column :users, :badge_id, :integer
|
||||
add_column :users, :badge_id, :integer, default: 0
|
||||
User.where(donor: true).update_all(badge_id: 1)
|
||||
remove_column :users, :donor
|
||||
end
|
||||
end
|
||||
10
db/schema.rb
10
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: 20160926220738) do
|
||||
ActiveRecord::Schema.define(version: 20170319193517) do
|
||||
|
||||
create_table "blogposts", force: :cascade do |t|
|
||||
t.string "title"
|
||||
@@ -90,6 +90,12 @@ ActiveRecord::Schema.define(version: 20160926220738) do
|
||||
t.string "color"
|
||||
end
|
||||
|
||||
create_table "badges", force: :cascade do |t|
|
||||
t.string "name"
|
||||
t.string "symbol"
|
||||
t.string "color"
|
||||
end
|
||||
|
||||
create_table "sessions", force: :cascade do |t|
|
||||
t.string "session_id", null: false
|
||||
t.text "data", limit: 65535
|
||||
@@ -122,7 +128,6 @@ ActiveRecord::Schema.define(version: 20160926220738) do
|
||||
t.string "youtube"
|
||||
t.string "youtube_channelname"
|
||||
t.string "twitter"
|
||||
t.boolean "donor", default: false
|
||||
t.string "email_token"
|
||||
t.boolean "confirmed", default: false
|
||||
t.datetime "last_seen"
|
||||
@@ -134,6 +139,7 @@ ActiveRecord::Schema.define(version: 20160926220738) do
|
||||
t.boolean "mail_own_blogpost_comment", default: true
|
||||
t.boolean "mail_other_blogpost_comment", default: true
|
||||
t.boolean "mail_mention", default: true
|
||||
t.integer "badge_id"
|
||||
end
|
||||
|
||||
add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree
|
||||
|
||||
53
db/seeds.rb
53
db/seeds.rb
@@ -10,6 +10,14 @@ Role.create!([
|
||||
{name: "superadmin", value: 500, color: "#d22"}
|
||||
])
|
||||
|
||||
Badge.create!([
|
||||
{name: "none", symbol: "", color: "#000"},
|
||||
{name: "donor", symbol: "$", color: "#f60"},
|
||||
{name: "developer", symbol: "D", color: "#a0a"},
|
||||
{name: "retired", symbol: "R", color: "#0aa"},
|
||||
{name: "lead", symbol: "L", color: "#a00"}
|
||||
])
|
||||
|
||||
userpw = SecureRandom.hex(36)
|
||||
|
||||
|
||||
@@ -23,6 +31,7 @@ deleted_user = User.create!(
|
||||
password: userpw,
|
||||
password_confirmation: userpw,
|
||||
role: Role.get(:disabled),
|
||||
badge: Badge.get(:none),
|
||||
skype: "echo123",
|
||||
skype_public: true,
|
||||
last_ip: "0.0.0.0",
|
||||
@@ -37,5 +46,47 @@ User.create!(
|
||||
email: "jomo@example.com",
|
||||
password: "123456789", # high seructity!
|
||||
password_confirmation: "123456789",
|
||||
role: Role.get(:superadmin)
|
||||
role: Role.get(:superadmin),
|
||||
badge: Badge.get(:donor),
|
||||
confirmed: true
|
||||
)
|
||||
User.create!(
|
||||
uuid: "7f52491ab5d64c11b4a43806db47a101",
|
||||
ign: "YummyRedstone",
|
||||
email: "yummy@example.com",
|
||||
password: "123456789", # high seructity!
|
||||
password_confirmation: "123456789",
|
||||
role: Role.get(:admin),
|
||||
badge: Badge.get(:lead),
|
||||
confirmed: true
|
||||
)
|
||||
User.create!(
|
||||
uuid: "d2693e9193e14e3f929ff38e1ce8df03",
|
||||
ign: "Pepich1851",
|
||||
email: "pepe@example.com",
|
||||
password: "123456789", # high seructity!
|
||||
password_confirmation: "123456789",
|
||||
role: Role.get(:superadmin),
|
||||
badge: Badge.get(:retired),
|
||||
confirmed: true
|
||||
)
|
||||
User.create!(
|
||||
uuid: "c69f8316c60a4f8ca922bda933e01acd",
|
||||
ign: "Doomblah",
|
||||
email: "doom@example.com",
|
||||
password: "123456789", # high seructity!
|
||||
password_confirmation: "123456789",
|
||||
role: Role.get(:normal),
|
||||
badge: Badge.get(:developer),
|
||||
confirmed: true
|
||||
)
|
||||
User.create!(
|
||||
uuid: "b85a91b558b0474da2a42d5dd025f9e5",
|
||||
ign: "Futsy",
|
||||
email: "futsy@example.com",
|
||||
password: "123456789", # high seructity!
|
||||
password_confirmation: "123456789",
|
||||
role: Role.get(:mod),
|
||||
badge: Badge.get(:none),
|
||||
confirmed: true
|
||||
)
|
||||
Reference in New Issue
Block a user