Added mastodon and mastodon_instance settings to user profiles #33

Closed
bruncbrunc wants to merge 5 commits from mastodon into master
6 changed files with 64 additions and 40 deletions
+2 -2
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])
+3
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
+6
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>
+12
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>
@@ -0,0 +1,5 @@
class AddMastodonToUsers < ActiveRecord::Migration
def change
add_column :users, :mastodon, :string
end
end
+36 -38
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,10 +59,10 @@ 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
t.integer "user_editor_id", limit: 4 t.integer "user_editor_id", limit: 4
t.integer "forum_id", limit: 4 t.integer "forum_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