From c04405db6859abf040c83f129ed39921dc44c73e Mon Sep 17 00:00:00 2001
From: ArtOfCode- <hello@artofcode.co.uk>
Date: Sun, 10 May 2020 17:21:53 +0100
Subject: [PATCH] Fix categories and tags

---
 app/models/tag.rb                               | 8 ++++++--
 app/views/categories/_form.html.erb             | 2 +-
 app/views/categories/index.html.erb             | 1 +
 app/views/errors/internal_server_error.html.erb | 2 +-
 app/views/posts/_expanded.html.erb              | 2 +-
 app/views/posts/_list.html.erb                  | 2 +-
 config/environments/development.rb              | 4 ----
 7 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/app/models/tag.rb b/app/models/tag.rb
index b3b528544..830f39817 100644
--- a/app/models/tag.rb
+++ b/app/models/tag.rb
@@ -2,11 +2,15 @@ class Tag < ApplicationRecord
   include CommunityRelated
 
   scope :category_order, lambda { |required_ids, topic_ids|
-    order(Arel.sql("id IN #{sanitize_sql_in(required_ids)} DESC"),
-          Arel.sql("id IN #{sanitize_sql_in(topic_ids)} DESC"),
+    order(Arel.sql("tags.id IN #{sanitize_sql_in(required_ids)} DESC"),
+          Arel.sql("tags.id IN #{sanitize_sql_in(topic_ids)} DESC"),
           name: :asc)
   }
 
+  scope :category_sort_by, lambda { |required_ids, topic_ids|
+    sort_by { |t| [required_ids.include?(t.id) ? 0 : 1, topic_ids.include?(t.id) ? 0 : 1, t.id] }
+  }
+
   has_and_belongs_to_many :posts
   belongs_to :tag_set
 
diff --git a/app/views/categories/_form.html.erb b/app/views/categories/_form.html.erb
index 7a5465b72..72a582b49 100644
--- a/app/views/categories/_form.html.erb
+++ b/app/views/categories/_form.html.erb
@@ -49,7 +49,7 @@
       Users under this trust level cannot see that this category exists. Leave blank to leave the category public.
       This can be different (higher or lower) than the minimum posting trust level.
     </span>
-    <%= f.number_field :min_trust_level, class: 'form-element', min: 0, max: 10, step: 1 %>
+    <%= f.number_field :min_view_trust_level, class: 'form-element', min: 0, max: 10, step: 1 %>
   </div>
 
   <div class="form-group">
diff --git a/app/views/categories/index.html.erb b/app/views/categories/index.html.erb
index 2b9858996..7db6fb6e9 100644
--- a/app/views/categories/index.html.erb
+++ b/app/views/categories/index.html.erb
@@ -1,6 +1,7 @@
 <h1>Categories</h1>
 
 <% @categories.each do |cat| %>
+  <% next unless (current_user&.trust_level || 0) >= (cat.min_view_trust_level || -1) %>
   <div class="widget">
     <div class="widget--body">
       <h3><%= cat.name %></h3>
diff --git a/app/views/errors/internal_server_error.html.erb b/app/views/errors/internal_server_error.html.erb
index b3979ae0b..7d8696b50 100644
--- a/app/views/errors/internal_server_error.html.erb
+++ b/app/views/errors/internal_server_error.html.erb
@@ -35,5 +35,5 @@
 
   <pre class="error-trace raw-markdown"><%= @exception.backtrace.select { |l| l.include? Rails.root.to_s }.join("\n") %></pre>
 
-  <%= console %>
+  <% console %>
 <% end %>
diff --git a/app/views/posts/_expanded.html.erb b/app/views/posts/_expanded.html.erb
index a2b45b809..08e20ebe4 100644
--- a/app/views/posts/_expanded.html.erb
+++ b/app/views/posts/_expanded.html.erb
@@ -100,7 +100,7 @@
               <% tag_set = post.tag_set %>
               <% required_ids = post.category&.required_tag_ids %>
               <% topic_ids = post.category&.topic_tag_ids %>
-              <% post.tags.category_order(required_ids, topic_ids).each do |tag| %>
+              <% post.tags.category_sort_by(required_ids, topic_ids).each do |tag| %>
                 <% next if tag.nil? %>
                 <% required = required_ids&.include? tag.id %>
                 <% topic = topic_ids&.include? tag.id %>
diff --git a/app/views/posts/_list.html.erb b/app/views/posts/_list.html.erb
index 5703b4e84..2d205ea84 100644
--- a/app/views/posts/_list.html.erb
+++ b/app/views/posts/_list.html.erb
@@ -29,7 +29,7 @@
         <% tag_set = post.tag_set %>
         <% required_ids = post.category&.required_tag_ids %>
         <% topic_ids = post.category&.topic_tag_ids %>
-        <% post.tags.category_order(required_ids, topic_ids).each do |tag| %>
+        <% post.tags.category_sort_by(required_ids, topic_ids).each do |tag| %>
           <% required = required_ids&.include? tag.id %>
           <% topic = topic_ids&.include? tag.id %>
           <%= link_to tag.name, questions_tagged_path(tag_set: tag_set.id, tag: tag.name),
diff --git a/config/environments/development.rb b/config/environments/development.rb
index 08b8d8251..82f96a5a4 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -40,10 +40,6 @@ Rails.application.configure do
   # Raises error for missing translations
   # config.action_view.raise_on_missing_translations = true
 
-  # Configure web console
-  config.web_console.whitelisted_ips = "82.69.87.121"
-  config.web_console.whiny_requests  = false
-
   config.action_mailer.delivery_method = :ses
   config.action_mailer.default_url_options = { host: 'writing.codidact.com', port: 80 }
 
-- 
GitLab