about summary refs log tree commit diff
path: root/app
diff options
context:
space:
mode:
authormultiple creatures <dev@multiple-creature.party>2019-07-30 16:35:53 -0500
committermultiple creatures <dev@multiple-creature.party>2019-07-30 16:36:24 -0500
commitccb84572d6300c0ed69a59653b98ced89582452a (patch)
tree23609bf14d544836f7ef5177f70a52719ae53592 /app
parent3f327a3ea75e0c635b88418e5b92454873815f9d (diff)
add a domain policy viewer at `/policies`
Diffstat (limited to 'app')
-rw-r--r--app/controllers/domain_policy_controller.rb30
-rw-r--r--app/helpers/domain_policy_helper.rb2
-rw-r--r--app/javascript/flavours/glitch/styles/monsterpit.about.scss15
-rw-r--r--app/views/domain_blocks/_domain_block.html.haml14
-rw-r--r--app/views/domain_policy/show.html.haml58
5 files changed, 119 insertions, 0 deletions
diff --git a/app/controllers/domain_policy_controller.rb b/app/controllers/domain_policy_controller.rb
new file mode 100644
index 000000000..28e676f5e
--- /dev/null
+++ b/app/controllers/domain_policy_controller.rb
@@ -0,0 +1,30 @@
+# frozen_string_literal: true
+
+class DomainPolicyController < ApplicationController
+  before_action :authenticate_user!
+
+  before_action :set_pack
+  layout 'public'
+
+  before_action :set_instance_presenter, only: [:show]
+
+  def show
+    @hide_navbar = true
+    @domain_policies = DomainBlock.all
+  end
+
+  private
+
+  def set_pack
+    use_pack 'common'
+  end
+
+  def set_instance_presenter
+    @instance_presenter = InstancePresenter.new
+  end
+
+  def authenticate_user!
+    return if user_signed_in?
+    not_found
+  end
+end
diff --git a/app/helpers/domain_policy_helper.rb b/app/helpers/domain_policy_helper.rb
new file mode 100644
index 000000000..27ebe7c2a
--- /dev/null
+++ b/app/helpers/domain_policy_helper.rb
@@ -0,0 +1,2 @@
+module DomainPolicyHelper
+end
diff --git a/app/javascript/flavours/glitch/styles/monsterpit.about.scss b/app/javascript/flavours/glitch/styles/monsterpit.about.scss
index ddbaab9b3..e6c108d03 100644
--- a/app/javascript/flavours/glitch/styles/monsterpit.about.scss
+++ b/app/javascript/flavours/glitch/styles/monsterpit.about.scss
@@ -1 +1,16 @@
 .landing .box-widget { text-align: center; }
+.rich-formatting td {
+  ul {
+    list-style: none;
+    margin: 0;
+
+    li {
+      margin: 0;
+      padding: 0;
+      line-height: 18px;
+    }
+
+    li:after { content: "," }
+    li:last-child:after { content: "" }
+  }
+}
diff --git a/app/views/domain_blocks/_domain_block.html.haml b/app/views/domain_blocks/_domain_block.html.haml
new file mode 100644
index 000000000..fae707c82
--- /dev/null
+++ b/app/views/domain_blocks/_domain_block.html.haml
@@ -0,0 +1,14 @@
+%tr
+  %td
+    %samp= domain_block.domain
+  %td= domain_block.severity.gsub('_', ' ').capitalize
+  %td
+    %ul
+      -if domain_block.reject_media?
+        %li= "Rejecting media"
+      -if domain_block.force_sensitive?
+        %li= "Media marked sensitive"
+      -if domain_block.reject_reports?
+        %li= "Rejecting reports"
+  %td= "None"
+
diff --git a/app/views/domain_policy/show.html.haml b/app/views/domain_policy/show.html.haml
new file mode 100644
index 000000000..4b4b121fd
--- /dev/null
+++ b/app/views/domain_policy/show.html.haml
@@ -0,0 +1,58 @@
+- content_for :page_title do
+  = "#{site_hostname} Domain Policies"
+
+- content_for :header_tags do
+  = render partial: 'shared/og'
+
+.grid-3
+  .column-0
+    .public-account-header.public-account-header--no-bar
+      .public-account-header__image
+        = image_tag @instance_presenter.hero&.file&.url || @instance_presenter.thumbnail&.file&.url || asset_pack_path('media/images/preview.jpg'), alt: @instance_presenter.site_title, class: 'parallax'
+
+  .column-1
+    .landing-page__call-to-action{ dir: 'ltr' }
+      .row
+        .row__information-board
+          .information-board__section
+            %span= t 'about.user_count_before'
+            %strong= number_with_delimiter @instance_presenter.user_count
+            %span= t 'about.user_count_after', count: @instance_presenter.user_count
+          .information-board__section
+            %span= t 'about.status_count_before'
+            %strong= number_with_delimiter @instance_presenter.status_count
+            %span= t 'about.status_count_after', count: @instance_presenter.status_count
+        .row__mascot
+          .landing-page__mascot
+            = image_tag @instance_presenter.mascot&.file&.url || asset_pack_path('media/images/elephant_ui_plane.svg'), alt: ''
+
+  .column-2
+    .landing-page__information.contact-widget
+      %p
+        %strong= t 'about.administered_by'
+
+      = account_link_to(@instance_presenter.contact_account)
+
+      - if @instance_presenter.site_contact_email.present?
+        %p.contact-widget__mail
+          %strong
+            = succeed ':' do
+              = t 'about.contact'
+          %br/
+          = mail_to @instance_presenter.site_contact_email, nil, title: @instance_presenter.site_contact_email
+
+  .column-3
+    .box-widget
+      .rich-formatting
+        %h1= "#{@instance_presenter.site_title} Domain Policies"
+
+        .table-wrapper
+          %table.table
+            %thead
+              %tr
+                %th= "Domain"
+                %th= "Policy"
+                %th= "Additional"
+                %th= "Reason"
+            %tbody
+              = render @domain_policies