From 20ef79278f890d42a5cd0bd6c077b257398de6c2 Mon Sep 17 00:00:00 2001 From: Futseh Date: Sun, 24 Feb 2019 18:14:34 +0100 Subject: Doesn't work yet, but are close --- app/controllers/forumthreads_controller.rb | 1 + app/views/forums/edit.html.erb | 4 ++++ app/views/forums/new.html.erb | 4 ++++ app/views/forumthreads/edit.html.erb | 6 +++++- db/migrate/20190224093907_disable_deletion_forums.rb | 5 +++++ db/schema.rb | 16 ++++++++-------- db/seeds.rb | 2 +- 7 files changed, 28 insertions(+), 10 deletions(-) create mode 100644 db/migrate/20190224093907_disable_deletion_forums.rb diff --git a/app/controllers/forumthreads_controller.rb b/app/controllers/forumthreads_controller.rb index d40ce58..4b72bc7 100644 --- a/app/controllers/forumthreads_controller.rb +++ b/app/controllers/forumthreads_controller.rb @@ -10,6 +10,7 @@ class ForumthreadsController < ApplicationController @threads = Forumthread.filter(current_user, params[:title].try(:slice, 0..255), params[:content].try(:slice, 0..255), params[:reply].try(:slice, 0..255), params[:label], User.find_by(ign: params[:author].to_s.strip) || params[:author], params[:query].try(:slice, 0..255), Forum.find_by(id: params[:forum])) .page(params[:page]).per(30) end + def show if params[:reverse] == "true" @replies = @thread.replies.order(id: :desc).page(params[:page]) diff --git a/app/views/forums/edit.html.erb b/app/views/forums/edit.html.erb index b1a5a2e..bb4a853 100644 --- a/app/views/forums/edit.html.erb +++ b/app/views/forums/edit.html.erb @@ -25,6 +25,10 @@ <%= f.label :necro_length, "Necropost warning delay (in days)" %> <%= f.number_field :necro_length, placeholder: "Warning Delay (leave blank for no warning)" %> + + <%= f.label :disable_deletion, "Disable deletion of threads for non-staff" %> + <%= f.check_box :disable_deletion %> +

<%= f.submit "Update Forum", class: "btn blue left" %>

<% end %> diff --git a/app/views/forums/new.html.erb b/app/views/forums/new.html.erb index 3640fd7..02eacaf 100644 --- a/app/views/forums/new.html.erb +++ b/app/views/forums/new.html.erb @@ -25,6 +25,10 @@ <%= f.label :necro_length, "Necropost warning delay (in days)" %> <%= f.number_field :necro_length, placeholder: "Warning Delay (leave blank for no warning)" %> + + <%= f.label :disable_deletion %> + <%= f.check_box :disable_deletion %> + <%= f.hidden_field :forumgroup_id %>

<%= f.submit "Create Forum", class: "btn blue left" %>

diff --git a/app/views/forumthreads/edit.html.erb b/app/views/forumthreads/edit.html.erb index 5667cf2..30c9b08 100644 --- a/app/views/forumthreads/edit.html.erb +++ b/app/views/forumthreads/edit.html.erb @@ -11,6 +11,8 @@ end %> +<% forum = Forum.find(@thread.forum_id) %> +

Edit Thread

<%= link_to @thread.forum.group, forumgroup_path(@thread.forum.group) %> → <%= link_to @thread.forum, @thread.forum %> → <%= link_to @thread, @thread %> → Edit thread <%= form_for @thread do |f|%> @@ -37,5 +39,7 @@ <%= render partial: "md_editor", locals: {name: "forumthread[content]", content: @thread.content} %>

<%= f.submit "Update Thread", class: "btn blue left" %>

<% end %> -<%= button_to "Delete Thread", @thread, :method => "delete", data: {confirm: "Delete thread & comments forever?"}, class: "btn red right" %> +<% if mod? || !forum.disable_deletion %> + <%= button_to "Delete Thread", @thread, :method => "delete", data: {confirm: "Delete thread & comments forever?"}, class: "btn red right" %> +<% end %>
diff --git a/db/migrate/20190224093907_disable_deletion_forums.rb b/db/migrate/20190224093907_disable_deletion_forums.rb new file mode 100644 index 0000000..d0d0fbe --- /dev/null +++ b/db/migrate/20190224093907_disable_deletion_forums.rb @@ -0,0 +1,5 @@ +class DisableDeletionForums < ActiveRecord::Migration + def change + add_column :forums, :disable_deletion, :boolean + end +end diff --git a/db/schema.rb b/db/schema.rb index dba9247..fedb4a8 100644 --- a/db/schema.rb +++ b/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: 20190222152638) do +ActiveRecord::Schema.define(version: 20190224093907) do create_table "badges", force: :cascade do |t| t.string "name", limit: 191 @@ -46,12 +46,13 @@ ActiveRecord::Schema.define(version: 20190222152638) do end create_table "forums", force: :cascade do |t| - t.string "name", limit: 255 - t.integer "position", limit: 4 - t.integer "role_read_id", limit: 4 - t.integer "role_write_id", limit: 4 - t.integer "forumgroup_id", limit: 4 - t.integer "necro_length", limit: 4 + t.string "name", limit: 255 + t.integer "position", limit: 4 + t.integer "role_read_id", limit: 4 + t.integer "role_write_id", limit: 4 + t.integer "forumgroup_id", limit: 4 + t.integer "necro_length", limit: 4 + t.boolean "disable_deletion", default: false end create_table "forumthreads", force: :cascade do |t| @@ -156,7 +157,6 @@ ActiveRecord::Schema.define(version: 20190222152638) do add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree add_index "users", ["ign"], name: "index_users_on_ign", unique: true, using: :btree add_index "users", ["name"], name: "index_users_on_name", unique: true, using: :btree - add_index "users", ["discord"], name: "index_users_on_discord", unique: true, using: :btree add_index "users", ["twitter"], name: "index_users_on_twitter", unique: true, using: :btree add_index "users", ["uuid"], name: "index_users_on_uuid", unique: true, using: :btree add_index "users", ["youtube"], name: "index_users_on_youtube", unique: true, using: :btree diff --git a/db/seeds.rb b/db/seeds.rb index 7ecb6de..25dbfed 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -32,7 +32,7 @@ deleted_user = User.create!( password_confirmation: userpw, role: Role.get(:disabled), badge: Badge.get(:none), - discord: "echo123", + discord: "echo123#9804", last_ip: "0.0.0.0", confirmed: true, last_seen: Time.utc(0).to_datetime, -- cgit v1.2.3 From f6cb866b854f661152601d195901360b73aeb8eb Mon Sep 17 00:00:00 2001 From: Futseh Date: Sun, 24 Feb 2019 18:17:46 +0100 Subject: Can disable the oppurtunity to delete threads in the forums --- app/controllers/forums_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/forums_controller.rb b/app/controllers/forums_controller.rb index 206f01f..16ea5b2 100644 --- a/app/controllers/forums_controller.rb +++ b/app/controllers/forums_controller.rb @@ -89,7 +89,7 @@ class ForumsController < ApplicationController end def forum_params(add = []) - a = [:name, :position, :role_read_id, :role_write_id, :necro_length] + add + a = [:name, :position, :role_read_id, :role_write_id, :necro_length, :disable_deletion] + add params.require(:forum).permit(a) end end -- cgit v1.2.3 From d52bf6d586960900fbc556d6d51b071961f42e26 Mon Sep 17 00:00:00 2001 From: Futseh Date: Sun, 24 Feb 2019 18:27:09 +0100 Subject: This got removed for some reason, will look into it --- db/schema.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/db/schema.rb b/db/schema.rb index fedb4a8..aae5789 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -157,6 +157,7 @@ ActiveRecord::Schema.define(version: 20190224093907) do add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree add_index "users", ["ign"], name: "index_users_on_ign", unique: true, using: :btree add_index "users", ["name"], name: "index_users_on_name", unique: true, using: :btree + add_index "users", ["discord"], name: "index_users_on_discord", unique: true, using: :btree add_index "users", ["twitter"], name: "index_users_on_twitter", unique: true, using: :btree add_index "users", ["uuid"], name: "index_users_on_uuid", unique: true, using: :btree add_index "users", ["youtube"], name: "index_users_on_youtube", unique: true, using: :btree -- cgit v1.2.3 From 2fe1cead68d3f66be5a9c6003990362e99bc1307 Mon Sep 17 00:00:00 2001 From: Futseh Date: Sun, 24 Feb 2019 18:55:33 +0100 Subject: Added an extra layer of security towards not deleting threads --- app/controllers/forumthreads_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/forumthreads_controller.rb b/app/controllers/forumthreads_controller.rb index 4b72bc7..4a3a5c1 100644 --- a/app/controllers/forumthreads_controller.rb +++ b/app/controllers/forumthreads_controller.rb @@ -73,7 +73,7 @@ class ForumthreadsController < ApplicationController end def destroy - if mod? || @thread.author.is?(current_user) + if mod? || (@thread.author.is?(current_user) && !@thread.forum.disable_deletion) if @thread.destroy flash[:notice] = "Thread deleted!" else -- cgit v1.2.3