5 Commits

Author SHA1 Message Date
Logan Fick
e0ca823245 Combined Mastodon username and instance fields into one field. 2017-10-15 17:07:51 -04:00
Logan Fick
b07830fc7a Made Mastodon field optional. 2017-10-15 16:41:57 -04:00
Logan Fick
1be5acb86f Added Mastodon handle validation. 2017-10-11 22:34:30 -04:00
MrYummy
2289d37e69 combined mastodon and mastodon_instance columns into a single mastodon column 2017-07-07 19:42:37 +02:00
MrYummy
668c9a2960 Added mastodon and mastodon_instance settings to user profiles 2017-07-07 05:41:22 +02:00
6 changed files with 64 additions and 40 deletions

View File

@@ -137,9 +137,9 @@ class UsersController < ApplicationController
def update def update
if (mod? && current_user.role >= @user.role ) || (@user.is?(current_user) && confirmed?) if (mod? && current_user.role >= @user.role ) || (@user.is?(current_user) && confirmed?)
if mod? if mod?
userdata = user_params([:name, :skype, :skype_public, :youtube, :twitter, :about, :role, :badge, :confirmed, :header_scroll, :utc_time, :dark]) userdata = user_params([:name, :skype, :skype_public, :youtube, :twitter, :mastodon, :about, :role, :badge, :confirmed, :header_scroll, :utc_time, :dark])
else else
userdata = user_params([:name, :skype, :skype_public, :youtube, :twitter, :about, :header_scroll, :utc_time, :dark]) userdata = user_params([:name, :skype, :skype_public, :youtube, :twitter, :mastodon, :about, :header_scroll, :utc_time, :dark])
end end
if userdata[:role] if userdata[:role]
role = Role.get(userdata[:role]) role = Role.get(userdata[:role])

View File

@@ -22,6 +22,8 @@ class User < ActiveRecord::Base
validates :email, uniqueness: {case_sensitive: false}, format: {with: /\A.+@(.+\..{2,}|\[(IPv6)?[0-9a-f:.]+\])\z/i, message: "That doesn't look like an email address."} validates :email, uniqueness: {case_sensitive: false}, format: {with: /\A.+@(.+\..{2,}|\[(IPv6)?[0-9a-f:.]+\])\z/i, message: "That doesn't look like an email address."}
validates :ign, uniqueness: {case_sensitive: false}, format: {with: /\A[a-z\d_]+\z/i, message: "Username is invalid (a-z, 0-9, _)."} validates :ign, uniqueness: {case_sensitive: false}, format: {with: /\A[a-z\d_]+\z/i, message: "Username is invalid (a-z, 0-9, _)."}
validates :mastodon, uniqueness: {case_sensitive: false}, format: {with: /\A(.+@(.+\..{2,}|\[(IPv6)?[0-9a-f:.]+\]))?\z/i, message: "That doesn't look like a valid Mastodon handle."}
has_many :blogposts has_many :blogposts
has_many :comments has_many :comments
@@ -167,6 +169,7 @@ class User < ActiveRecord::Base
self.email.strip! if self.email self.email.strip! if self.email
self.about.strip! if self.about self.about.strip! if self.about
self.skype.strip! if self.skype self.skype.strip! if self.skype
self.mastodon.strip! if self.mastodon
self.youtube.strip! if self.youtube self.youtube.strip! if self.youtube
self.twitter.strip! if self.twitter self.twitter.strip! if self.twitter
end end

View File

@@ -54,6 +54,12 @@
<%= f.select :skype_public, [["Staff only", false], ["All users", true]], {}, { disabled: !can_edit? } %> <%= f.select :skype_public, [["Staff only", false], ["All users", true]], {}, { disabled: !can_edit? } %>
</td> </td>
</tr> </tr>
<tr>
<td>Mastodon</td>
<td>
<%= f.text_field :mastodon, placeholder: "Mastodon username", disabled: !(@user.is?(current_user) && confirmed? || (mod? && current_user.role >= @user.role)) %>
</td>
</tr>
<tr> <tr>
<td>YouTube Channel ID</td> <td>YouTube Channel ID</td>
<td> <td>

View File

@@ -58,6 +58,18 @@
<td><%= link_to @user.skype, "skype:#{@user.skype}?chat", target: "_blank" %></a></td> <td><%= link_to @user.skype, "skype:#{@user.skype}?chat", target: "_blank" %></a></td>
</tr> </tr>
<% end %> <% end %>
<% if !@user.mastodon.blank? %>
<tr>
<td><b>Mastodon</b></td>
<td>
<% mstdn_array = @user.mastodon.split("@") %>
<% if mstdn_array.length > 1 %>
<%= link_to "@#{mstdn_array[0]}", "https://#{CGI.escape(mstdn_array[1])}/@#{CGI.escape(mstdn_array[0])}", :target => "_blank" %></td>
<% else %>
<%= "@" + @user.mastodon %>
<% end %>
</tr>
<% end %>
<% if !@user.youtube.blank? && !@user.youtube_channelname.blank? %> <% if !@user.youtube.blank? && !@user.youtube_channelname.blank? %>
<tr> <tr>
<td><b>YouTube</b></td> <td><b>YouTube</b></td>

View File

@@ -0,0 +1,5 @@
class AddMastodonToUsers < ActiveRecord::Migration
def change
add_column :users, :mastodon, :string
end
end

View File

@@ -11,18 +11,17 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20170703003647) do ActiveRecord::Schema.define(version: 20170707012441) do
create_table "badges", force: :cascade do |t| create_table "badges", force: :cascade do |t|
t.string "name", limit: 191 t.string "name", limit: 191
t.string "symbol", limit: 191 t.string "symbol", limit: 191
t.string "color", limit: 191 t.string "color", limit: 191
t.integer "value", limit: 4
end end
create_table "blogposts", force: :cascade do |t| create_table "blogposts", force: :cascade do |t|
t.string "title", limit: 255 t.string "title", limit: 191
t.text "content", limit: 16777215 t.text "content", limit: 65535
t.integer "user_author_id", limit: 4 t.integer "user_author_id", limit: 4
t.integer "user_editor_id", limit: 4 t.integer "user_editor_id", limit: 4
t.datetime "created_at" t.datetime "created_at"
@@ -30,7 +29,7 @@ ActiveRecord::Schema.define(version: 20170703003647) do
end end
create_table "comments", force: :cascade do |t| create_table "comments", force: :cascade do |t|
t.text "content", limit: 16777215 t.text "content", limit: 65535
t.integer "user_author_id", limit: 4 t.integer "user_author_id", limit: 4
t.integer "user_editor_id", limit: 4 t.integer "user_editor_id", limit: 4
t.integer "blogpost_id", limit: 4 t.integer "blogpost_id", limit: 4
@@ -39,14 +38,14 @@ ActiveRecord::Schema.define(version: 20170703003647) do
end end
create_table "forumgroups", force: :cascade do |t| create_table "forumgroups", force: :cascade do |t|
t.string "name", limit: 255 t.string "name", limit: 191
t.integer "position", limit: 4 t.integer "position", limit: 4
t.integer "role_read_id", limit: 4 t.integer "role_read_id", limit: 4
t.integer "role_write_id", limit: 4 t.integer "role_write_id", limit: 4
end end
create_table "forums", force: :cascade do |t| create_table "forums", force: :cascade do |t|
t.string "name", limit: 255 t.string "name", limit: 191
t.integer "position", limit: 4 t.integer "position", limit: 4
t.integer "role_read_id", limit: 4 t.integer "role_read_id", limit: 4
t.integer "role_write_id", limit: 4 t.integer "role_write_id", limit: 4
@@ -60,8 +59,8 @@ ActiveRecord::Schema.define(version: 20170703003647) do
end end
create_table "forumthreads", force: :cascade do |t| create_table "forumthreads", force: :cascade do |t|
t.string "title", limit: 255 t.string "title", limit: 191
t.text "content", limit: 16777215 t.text "content", limit: 65535
t.boolean "sticky", default: false t.boolean "sticky", default: false
t.boolean "locked", default: false t.boolean "locked", default: false
t.integer "user_author_id", limit: 4 t.integer "user_author_id", limit: 4
@@ -73,49 +72,47 @@ ActiveRecord::Schema.define(version: 20170703003647) do
end end
add_index "forumthreads", ["content"], name: "index_forumthreads_on_content", type: :fulltext add_index "forumthreads", ["content"], name: "index_forumthreads_on_content", type: :fulltext
add_index "forumthreads", ["title", "content"], name: "forumthreads_title_content", type: :fulltext
add_index "forumthreads", ["title", "content"], name: "index_forumthreads_on_title_and_content", type: :fulltext add_index "forumthreads", ["title", "content"], name: "index_forumthreads_on_title_and_content", type: :fulltext
add_index "forumthreads", ["title"], name: "index_forumthreads_on_title", type: :fulltext add_index "forumthreads", ["title"], name: "index_forumthreads_on_title", type: :fulltext
create_table "info", force: :cascade do |t| create_table "info", force: :cascade do |t|
t.string "title", limit: 255 t.string "title", limit: 191
t.text "content", limit: 16777215 t.text "content", limit: 65535
t.datetime "created_at" t.datetime "created_at"
t.datetime "updated_at" t.datetime "updated_at"
end end
create_table "labels", force: :cascade do |t| create_table "labels", force: :cascade do |t|
t.string "name", limit: 255 t.string "name", limit: 191
t.string "color", limit: 255 t.string "color", limit: 191
end end
create_table "register_tokens", force: :cascade do |t| create_table "register_tokens", force: :cascade do |t|
t.string "uuid", limit: 32, null: false t.string "uuid", limit: 32, null: false
t.string "token", limit: 6, null: false t.string "token", limit: 6, null: false
t.string "email", limit: 191 t.string "email", limit: 191, null: false
end end
add_index "register_tokens", ["email"], name: "index_register_tokens_on_email", unique: true, using: :btree
add_index "register_tokens", ["uuid"], name: "index_register_tokens_on_uuid", unique: true, using: :btree add_index "register_tokens", ["uuid"], name: "index_register_tokens_on_uuid", unique: true, using: :btree
create_table "roles", force: :cascade do |t| create_table "roles", force: :cascade do |t|
t.string "name", limit: 255 t.string "name", limit: 191
t.integer "value", limit: 4 t.integer "value", limit: 4
t.string "color", limit: 255 t.string "color", limit: 191
end end
create_table "sessions", force: :cascade do |t| create_table "sessions", force: :cascade do |t|
t.string "session_id", limit: 255, null: false t.string "session_id", limit: 191, null: false
t.text "data", limit: 16777215 t.text "data", limit: 65535
t.datetime "created_at" t.datetime "created_at"
t.datetime "updated_at" t.datetime "updated_at"
end end
add_index "sessions", ["session_id"], name: "index_sessions_on_session_id", length: {"session_id"=>191}, using: :btree add_index "sessions", ["session_id"], name: "index_sessions_on_session_id", using: :btree
add_index "sessions", ["updated_at"], name: "index_sessions_on_updated_at", using: :btree add_index "sessions", ["updated_at"], name: "index_sessions_on_updated_at", using: :btree
create_table "threadreplies", force: :cascade do |t| create_table "threadreplies", force: :cascade do |t|
t.text "content", limit: 16777215 t.text "content", limit: 65535
t.integer "user_author_id", limit: 4 t.integer "user_author_id", limit: 4
t.integer "user_editor_id", limit: 4 t.integer "user_editor_id", limit: 4
t.integer "forumthread_id", limit: 4 t.integer "forumthread_id", limit: 4
@@ -127,19 +124,19 @@ ActiveRecord::Schema.define(version: 20170703003647) do
add_index "threadreplies", ["forumthread_id"], name: "index_threadreplies_on_forumthread_id", using: :btree add_index "threadreplies", ["forumthread_id"], name: "index_threadreplies_on_forumthread_id", using: :btree
create_table "users", force: :cascade do |t| create_table "users", force: :cascade do |t|
t.string "uuid", limit: 255, null: false t.string "uuid", limit: 191, null: false
t.string "name", limit: 191 t.string "name", limit: 191
t.string "password_digest", limit: 255, null: false t.string "password_digest", limit: 191, null: false
t.string "ign", limit: 255, null: false t.string "ign", limit: 191, null: false
t.string "email", limit: 191 t.string "email", limit: 191, null: false
t.text "about", limit: 65535 t.text "about", limit: 65535
t.string "last_ip", limit: 255 t.string "last_ip", limit: 191
t.string "skype", limit: 255 t.string "skype", limit: 191
t.boolean "skype_public", default: false t.boolean "skype_public", default: false
t.string "youtube", limit: 255 t.string "youtube", limit: 191
t.string "youtube_channelname", limit: 255 t.string "youtube_channelname", limit: 191
t.string "twitter", limit: 255 t.string "twitter", limit: 191
t.string "email_token", limit: 255 t.string "email_token", limit: 191
t.boolean "confirmed", default: false t.boolean "confirmed", default: false
t.datetime "last_seen" t.datetime "last_seen"
t.integer "role_id", limit: 4, null: false t.integer "role_id", limit: 4, null: false
@@ -150,10 +147,11 @@ ActiveRecord::Schema.define(version: 20170703003647) do
t.boolean "mail_own_blogpost_comment", default: true t.boolean "mail_own_blogpost_comment", default: true
t.boolean "mail_other_blogpost_comment", default: true t.boolean "mail_other_blogpost_comment", default: true
t.boolean "mail_mention", default: true t.boolean "mail_mention", default: true
t.integer "badge_id", limit: 4, default: 0 t.integer "badge_id", limit: 4, default: 1
t.boolean "utc_time", default: false t.boolean "utc_time", default: false
t.boolean "header_scroll", default: false t.boolean "header_scroll", default: false
t.boolean "dark", default: false t.boolean "dark", default: false
t.string "mastodon", limit: 191
end end
add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree