From b7c1b12367b307d07303ce99f2c27bf255ecd56a Mon Sep 17 00:00:00 2001 From: Eugen Rochko <eugen@zeonfederated.com> Date: Mon, 3 Apr 2017 18:55:06 +0200 Subject: [PATCH] Make default admin UI page reports. Add admin UI for creating a domain block --- .../admin/domain_blocks_controller.rb | 18 ++ app/services/block_domain_service.rb | 10 +- app/views/admin/domain_blocks/index.html.haml | 1 + app/views/admin/domain_blocks/new.html.haml | 18 ++ app/workers/domain_block_worker.rb | 11 ++ config/locales/devise.no.yml | 62 +------ config/locales/doorkeeper.no.yml | 114 +----------- config/locales/no.yml | 165 +----------------- config/locales/simple_form.no.yml | 47 +---- config/navigation.rb | 4 +- config/routes.rb | 2 +- 11 files changed, 59 insertions(+), 393 deletions(-) create mode 100644 app/views/admin/domain_blocks/new.html.haml create mode 100644 app/workers/domain_block_worker.rb diff --git a/app/controllers/admin/domain_blocks_controller.rb b/app/controllers/admin/domain_blocks_controller.rb index e362957e73..1f44328478 100644 --- a/app/controllers/admin/domain_blocks_controller.rb +++ b/app/controllers/admin/domain_blocks_controller.rb @@ -9,6 +9,24 @@ class Admin::DomainBlocksController < ApplicationController @blocks = DomainBlock.paginate(page: params[:page], per_page: 40) end + def new + @domain_block = DomainBlock.new + end + def create + @domain_block = DomainBlock.new(resource_params) + + if @domain_block.save + DomainBlockWorker.perform_async(@domain_block.id) + redirect_to admin_domain_blocks_path, notice: 'Domain block is now being processed' + else + render action: :new + end + end + + private + + def resource_params + params.require(:domain_block).permit(:domain, :severity) end end diff --git a/app/services/block_domain_service.rb b/app/services/block_domain_service.rb index 9518b1fcf2..6c131bd341 100644 --- a/app/services/block_domain_service.rb +++ b/app/services/block_domain_service.rb @@ -1,13 +1,11 @@ # frozen_string_literal: true class BlockDomainService < BaseService - def call(domain, severity) - DomainBlock.where(domain: domain).first_or_create!(domain: domain, severity: severity) - - if severity == :silence - Account.where(domain: domain).update_all(silenced: true) + def call(domain_block) + if domain_block.silence? + Account.where(domain: domain_block.domain).update_all(silenced: true) else - Account.where(domain: domain).find_each do |account| + Account.where(domain: domain_block.domain).find_each do |account| account.subscription(api_subscription_url(account.id)).unsubscribe if account.subscribed? SuspendAccountService.new.call(account) end diff --git a/app/views/admin/domain_blocks/index.html.haml b/app/views/admin/domain_blocks/index.html.haml index dbaeb47164..eb7894b86c 100644 --- a/app/views/admin/domain_blocks/index.html.haml +++ b/app/views/admin/domain_blocks/index.html.haml @@ -14,3 +14,4 @@ %td= block.severity = will_paginate @blocks, pagination_options += link_to 'Add new', new_admin_domain_block_path, class: 'button' diff --git a/app/views/admin/domain_blocks/new.html.haml b/app/views/admin/domain_blocks/new.html.haml new file mode 100644 index 0000000000..fbd39d6cfa --- /dev/null +++ b/app/views/admin/domain_blocks/new.html.haml @@ -0,0 +1,18 @@ +- content_for :page_title do + New domain block + += simple_form_for @domain_block, url: admin_domain_blocks_path do |f| + = render 'shared/error_messages', object: @domain_block + + %p.hint The domain block will not prevent creation of account entries in the database, but will retroactively and automatically apply specific moderation methods on those accounts. + + = f.input :domain, placeholder: 'Domain' + = f.input :severity, collection: DomainBlock.severities.keys, wrapper: :with_label, include_blank: false + + %p.hint + %strong Silence + will make the account's posts invisible to anyone who isn't following them. + %strong Suspend + will remove all of the account's content, media, and profile data. + .actions + = f.button :button, 'Create block', type: :submit diff --git a/app/workers/domain_block_worker.rb b/app/workers/domain_block_worker.rb new file mode 100644 index 0000000000..8844778291 --- /dev/null +++ b/app/workers/domain_block_worker.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class DomainBlockWorker + include Sidekiq::Worker + + def perform(domain_block_id) + BlockDomainService.new.call(DomainBlock.find(domain_block_id)) + rescue ActiveRecord::RecordNotFound + true + end +end diff --git a/config/locales/devise.no.yml b/config/locales/devise.no.yml index 7c665f0dad..2fbf0ffd71 100644 --- a/config/locales/devise.no.yml +++ b/config/locales/devise.no.yml @@ -1,61 +1 @@ ---- -no: - devise: - confirmations: - confirmed: Epostaddressen din er blitt bekreftet. - send_instructions: Du vil motta en epost med instruksjoner for hvordan bekrefte din epostaddresse om noen fÃ¥ minutter. - send_paranoid_instructions: Hvis din epostaddresse finnes i vÃ¥r database vil du motta en epost med instruksjoner for hvordan bekrefte din epost om noen fÃ¥ minutter. - failure: - already_authenticated: Du er allerede innlogget. - inactive: Din konto er ikke blitt aktivert ennÃ¥. - invalid: Ugyldig %{authentication_keys} eller passord. - last_attempt: Du har ett forsøk igjen før kontoen din bli lÃ¥st. - locked: Din konto er lÃ¥st. - not_found_in_database: Ugyldig %{authentication_keys} eller passord. - timeout: Sesjonen din løp ut pÃ¥ tid. Logg inn pÃ¥ nytt for Ã¥ fortsette. - unauthenticated: Du mÃ¥ logge inn eller registrere deg før du kan fortsette. - unconfirmed: Du mÃ¥ bekrefte epostadressen din før du kan fortsette. - mailer: - confirmation_instructions: - subject: 'Mastodon: Instruksjoner for Ã¥ bekrefte epostadresse' - password_change: - subject: 'Mastodon: Passord endret' - reset_password_instructions: - subject: 'Mastodon: Hvordan nullstille passord?' - unlock_instructions: - subject: 'Mastodon: Instruksjoner for Ã¥ gjenÃ¥pne konto' - omniauth_callbacks: - failure: Kunne ikke autentisere deg fra %{kind} fordi "%{reason}". - success: Vellykket autentisering fra %{kind}. - passwords: - no_token: Du har ingen tilgang til denne siden sÃ¥ lenge du ikke kommer fra en epost om nullstilling av passord. Hvis du kommer fra en passordnullstilling epost, dobbelsjekk at du brukte hele URLen. - send_instructions: Du vil motta en epost med instruksjoner for Ã¥ nullstille passordet ditt om noen fÃ¥ minutter. - send_paranoid_instructions: Hvis epostadressen din finnes i databasen vÃ¥r vil du motta en instruksjonsmail om passord nullstilling om noen fÃ¥ minutter. - updated: Passordet ditt har blitt endret. Du er nÃ¥ logget inn. - updated_not_active: Passordet ditt har blitt endret. - registrations: - destroyed: Adjø! Kontoen din har blitt avsluttet. Vi hÃ¥per at vi ser deg igjen snart. - signed_up: Velkommen! Registrasjonen var vellykket. - signed_up_but_inactive: Registrasjonen var vellykket. Vi kunne dessverre ikke logge deg inn fordi kontoen din ennÃ¥ ikke har blitt aktivert. - signed_up_but_locked: Registrasjonen var vellykket. Vi kunne dessverre ikke logge deg inn fordi kontoen din har blitt lÃ¥st. - signed_up_but_unconfirmed: En epostmelding med en bekreftelseslink har blitt sendt til din adresse. Klikk pÃ¥ linken i eposten for Ã¥ aktivere kontoen din. - update_needs_confirmation: Du har oppdatert kontoen din, men vi mÃ¥ bekrefte din nye epostadresse. Sjekk eposten din og følg bekreftelseslinken for Ã¥ bekrefte din nye epostadresse. - updated: Kontoen din ble oppdatert. - sessions: - already_signed_out: Logget ut. - signed_in: Logget inn. - signed_out: Logget ut. - unlocks: - send_instructions: Du vil motta en epost med instruksjoner for Ã¥ Ã¥pne kontoen din om noen fÃ¥ minutter. - send_paranoid_instructions: Hvis kontoen din eksisterer vil du motta en epost med instruksjoner for Ã¥ Ã¥pne kontoen din om noen fÃ¥ minutter. - unlocked: Kontoen din ble Ã¥pnet uten problemer. Logg pÃ¥ for Ã¥ fortsette. - errors: - messages: - already_confirmed: har allerede blitt bekreftet, prøv Ã¥ logg pÃ¥ istedet. - confirmation_period_expired: mÃ¥ bekreftes innen %{period}. Spør om en ny bekreftelsesmail istedet. - expired: har utløpt, spør om en ny en istedet - not_found: ikke funnet - not_locked: var ikke lÃ¥st - not_saved: - one: '1 feil hindret denne %{resource} fra Ã¥ bli lagret:' - other: "%{count} feil hindret denne %{resource} fra Ã¥ bli lagret:" +--- {} diff --git a/config/locales/doorkeeper.no.yml b/config/locales/doorkeeper.no.yml index 7b51289aa9..2fbf0ffd71 100644 --- a/config/locales/doorkeeper.no.yml +++ b/config/locales/doorkeeper.no.yml @@ -1,113 +1 @@ ---- -no: - activerecord: - attributes: - doorkeeper/application: - name: Navn - redirect_uri: Omdirigerings-URI - errors: - models: - doorkeeper/application: - attributes: - redirect_uri: - fragment_present: kan ikke inneholde ett fragment. - invalid_uri: mÃ¥ være en gyldig URI. - relative_uri: mÃ¥ være en absolutt URI. - secured_uri: mÃ¥ være en HTTPS/SSL URI. - doorkeeper: - applications: - buttons: - authorize: Autoriser - cancel: Avbryt - destroy: Ødelegg - edit: Endre - submit: Send inn - confirmations: - destroy: Er du sikker? - edit: - title: Endre applikasjon - form: - error: Whoops! Sjekk skjemaet ditt for mulige feil - help: - native_redirect_uri: Bruk %{native_redirect_uri} for lokale tester - redirect_uri: Bruk en linje per URI - scopes: Adskill omfang med mellomrom. La det være blankt for Ã¥ bruke standard omfang. - index: - callback_url: Callback URL - name: Navn - new: Ny Applikasjon - title: Dine applikasjoner - new: - title: Ny Applikasjoner - show: - actions: Operasjoner - application_id: Applikasjon Id - callback_urls: Callback urls - scopes: Omfang - secret: Hemmelighet - title: 'Applikasjon: %{name}' - authorizations: - buttons: - authorize: Autoriser - deny: Avvis - error: - title: En feil oppsto - new: - able_to: Den vil ha mulighet til - prompt: Applikasjon %{client_name} spør om tilgang til din konto - title: Autorisasjon pÃ¥krevd - show: - title: Autoriserings kode - authorized_applications: - buttons: - revoke: Opphev - confirmations: - revoke: Opphev? - index: - application: Applikasjon - created_at: Autorisert - date_format: "%Y-%m-%d %H:%M:%S" - scopes: Omfang - title: Dine autoriserte applikasjoner - errors: - messages: - access_denied: Ressurseieren eller autoriserings tjeneren avviste forespørslen. - credential_flow_not_configured: Ressurseiers passord flyt feilet pÃ¥ grunn av at Doorkeeper.configure.resource_owner_from_credentials ikke var konfigurert. - invalid_client: Klient autentisering feilet pÃ¥ grunn av ukjent klient, ingen autentisering inkludert eller autentiserings metode som ikke er støttet. - invalid_grant: Autoriseringen er ugyldig, utløpt, opphevet, stemmer ikke overens med omdirigerings-URIen eller var utstedt til en annen klient. - invalid_redirect_uri: redirect urien som var inkludert er ikke gyldig. - invalid_request: Forespørslen mangler ett eller flere parametere, inkluderte ett parameter som ikke støttes eller har feil struktur. - invalid_resource_owner: Ressurseierens detaljer er ikke gyldig, eller sÃ¥ kan ikke eieren finnes. - invalid_scope: Det etterspurte omfanget er ugyldig, ukjent eller har feil struktur. - invalid_token: - expired: Tilgangsbeviset har utløpt - revoked: Tilgangsbeviset har blitt opphevet - unknown: Tilgangsbeviset er ugyldig - resource_owner_authenticator_not_configured: Ressurseier kunne ikke finnes fordi Doorkeeper.configure.resource_owner_authenticator ikke er konfigurert. - server_error: Autoriserings tjeneren støtte pÃ¥ en uventet hendelse som hindret den i Ã¥ svare pÃ¥ forespørslen. - temporarily_unavailable: Autoriserings tjeneren kan ikke hÃ¥ndtere forespørslen grunnet en midlertidig overbelastning eller tjenervedlikehold. - unauthorized_client: Klienten har ikke autorisasjon for Ã¥ utføre denne forespørslen med denne metoden. - unsupported_grant_type: Autorisasjons tildelings typen er ikke støttet av denne autoriserings tjeneren. - unsupported_response_type: Autorisasjons serveren støtter ikke denne typen av forespørsler. - flash: - applications: - create: - notice: Applikasjon opprettet. - destroy: - notice: Applikasjon slettet. - update: - notice: Applikasjon oppdatert. - authorized_applications: - destroy: - notice: Applikasjon opphevet. - layouts: - admin: - nav: - applications: Applikasjoner - oauth2_provider: OAuth2 tilbyder - application: - title: OAuth autorisering pÃ¥krevet - scopes: - follow: følg, blokker, avblokker, avfølg kontoer - read: lese dine data - write: poste pÃ¥ dine vegne +--- {} diff --git a/config/locales/no.yml b/config/locales/no.yml index d4514d5e49..2fbf0ffd71 100644 --- a/config/locales/no.yml +++ b/config/locales/no.yml @@ -1,164 +1 @@ ---- -no: - about: - about_mastodon: Mastodon er et <em>gratis, Ã¥pen kildekode</em> sosialt nettverk. Et <em>desentralisert</em> alternativ til kommersielle plattformer. Slik kan det unngÃ¥ risikoene ved Ã¥ ha et enkelt selskap med monopol pÃ¥ din kommunikasjon. Velg en tjener du stoler pÃ¥ — uansett hvilken du velger sÃ¥ kan du interagere med alle andre. Alle kan kjøre sin egen Mastodon og delta sømløst i det sosiale nettverket. - about_this: Om denne instansen - apps: Applikasjoner - business_email: 'Bedriftsepost:' - contact: Kontakt - description_headline: Hva er %{domain}? - domain_count_after: andre instanser - domain_count_before: Koblet til - features: - api: Ã…pent api for applikasjoner og tjenester - blocks: Rikholdige blokkerings verktøy - characters: 500 tegn per post - chronology: Tidslinjer er kronologiske - ethics: 'Etisk design: Ingen reklame, ingen sporing' - gifv: GIFV sett og korte videoer - privacy: Finmaskete personvernsinnstillinger - public: Offentlige tidslinjer - features_headline: Hva skiller Mastodon fra andre sosiale nettverk - get_started: Kom i gang - links: Lenker - other_instances: Andre instanser - source_code: Kildekode - status_count_after: statuser - status_count_before: Hvem skrev - terms: Betingelser - user_count_after: brukere - user_count_before: Hjem til - accounts: - follow: Følg - followers: Følgere - following: Følger - nothing_here: Det er ingenting her! - people_followed_by: Folk som %{name} følger - people_who_follow: Folk som følger %{name} - posts: Poster - remote_follow: Følg fra andre instanser - unfollow: Avfølg - application_mailer: - settings: 'Endre foretrukne epost innstillinger: %{link}' - signature: Mastodon notiser fra %{instance} - view: 'Se:' - applications: - invalid_url: Den oppgitte URLen er ugyldig - auth: - change_password: Brukerdetaljer - didnt_get_confirmation: Fikk du ikke bekreftelsesmailen din? - forgot_password: Har du glemt passordet ditt? - login: Innlogging - logout: Logg ut - register: Bli med - resend_confirmation: Send bekreftelsesinstruksjoner pÃ¥ nytt - reset_password: Nullstill passord - set_new_password: Sett nytt passord - authorize_follow: - error: Uheldigvis sÃ¥ skjedde det en feil nÃ¥r vi prøvde Ã¥ fÃ¥ tak i en konto fra en annen instans. - follow: Følg - prompt_html: 'Du (<strong>%{self}</strong>) har spurt om Ã¥ følge:' - title: Følg %{acct} - datetime: - distance_in_words: - about_x_hours: "%{count}t" - about_x_months: "%{count}m" - about_x_years: "%{count}Ã¥" - almost_x_years: "%{count}Ã¥" - half_a_minute: Nylig - less_than_x_minutes: "%{count}min" - less_than_x_seconds: Nylig - over_x_years: "%{count}Ã¥" - x_days: "%{count}d" - x_minutes: "%{count}min" - x_months: "%{count}mo" - x_seconds: "%{count}s" - exports: - blocks: Du blokkerer - csv: CSV - follows: Du følger - storage: Media lagring - generic: - changes_saved_msg: Vellykket lagring av endringer! - powered_by: drevet av %{link} - save_changes: Lagre endringer - validation_errors: - one: Noe er ikke helt riktig ennÃ¥. Vær snill Ã¥ se etter en gang til - other: Noe er ikke helt riktig ennÃ¥. Det er ennÃ¥ %{count} feil Ã¥ rette pÃ¥ - imports: - preface: Du kan importere data om mennesker du følger eller blokkerer inn til kontoen din pÃ¥ denne instansen, fra filer opprettet av eksporter fra andre instanser. - success: Din data ble mottatt og vil bli prosessert sÃ¥ fort som mulig. - types: - blocking: Blokkeringsliste - following: Følgeliste - upload: Opplastning - landing_strip_html: <strong>%{name}</strong> er en bruker pÃ¥ <strong>%{domain}</strong>. Du kan følge dem eller interagere med dem hvis du har en konto hvor som helst i fediverset. Hvis du ikke har en konto sÃ¥ kan du <a href="%{sign_up_path}">registrere deg her</a>. - notification_mailer: - digest: - body: 'Her er en kort oppsummering av hva du har gÃ¥tt glipp av pÃ¥ %{instance} siden du logget deg inn sist den %{since}:' - mention: "%{name} nevnte deg i:" - new_followers_summary: - one: Du har fÃ¥tt en ny følger. Jippi! - other: Du har fÃ¥tt %{count} nye følgere! Imponerende! - subject: - one: "1 ny hendelse siden ditt siste besøk \U0001F418" - other: "%{count} nye hendelser siden ditt siste besøk \U0001F418" - favourite: - body: 'Din status ble satt som favoritt av %{name}' - subject: "%{name} satte din status som favoritt." - follow: - body: "%{name} følger deg!" - subject: "%{name} følger deg" - follow_request: - body: "%{name} har spurt om Ã¥ fÃ¥ lov til Ã¥ følge deg" - subject: 'Ventende følger: %{name}' - mention: - body: 'Du ble nevnt av %{name} i:' - subject: Du ble nevnt av %{name} - reblog: - body: 'Din status fikk en boost av %{name}:' - subject: "%{name} ga din status en boost" - pagination: - next: Neste - prev: Forrige - remote_follow: - acct: Tast inn brukernavn@domene som du vil følge fra - missing_resource: Kunne ikke finne URLen for din konto - proceed: Fortsett med følging - prompt: 'Du kommer til Ã¥ følge:' - settings: - authorized_apps: Autoriserte applikasjoner - back: Tilbake til Mastodon - edit_profile: Endre profil - export: Data eksport - import: Importer - preferences: Foretrukne valg - settings: Innstillinger - two_factor_auth: To-faktor autentisering - statuses: - open_in_web: Ã…pne i nettleser - over_character_limit: tegngrense pÃ¥ %{max} overskredet - show_more: Vis mer - visibilities: - private: Vis kun til følgere - public: Offentlig - unlisted: Offentlig, men vis ikke pÃ¥ offentlig tidslinje - stream_entries: - click_to_show: Klikk for Ã¥ vise - reblogged: boostet - sensitive_content: Sensitivt innhold - time: - formats: - default: "%d, %b %Y, %H:%M" - two_factor_auth: - description_html: Hvis du skru pÃ¥ <strong>tofaktor autentisering</strong> vil innlogging kreve at du har telefonen din, som vil generere koder som du mÃ¥ taste inn. - disable: Skru av - enable: Skru pÃ¥ - instructions_html: "<strong>Scan denne QR-koden i Google Authenticator eller en lignende app pÃ¥ telefonen din</strong>. Fra nÃ¥ av sÃ¥ vil denne applikasjonen generere koder for deg som skal brukes under innlogging" - plaintext_secret_html: 'Plain-text secret: <samp>%{secret}</samp>' - warning: Hvis du ikke kan konfigurere en autentikatorapp nÃ¥, sÃ¥ bør du trykke "Skru av"; ellers vil du ikke kunne logge inn. - users: - invalid_email: E-post addressen er ugyldig - invalid_otp_token: Ugyldig two-faktor kode - will_paginate: - page_gap: "…" +--- {} diff --git a/config/locales/simple_form.no.yml b/config/locales/simple_form.no.yml index 6829e6a244..2fbf0ffd71 100644 --- a/config/locales/simple_form.no.yml +++ b/config/locales/simple_form.no.yml @@ -1,46 +1 @@ ---- -no: - simple_form: - hints: - defaults: - avatar: PNG, GIF eller JPG. Maksimalt 2MB. Vil bli nedskalert til 120x120px - display_name: Maksimalt 30 tegn - header: PNG, GIF eller JPG. Maksimalt 2MB. Vil bli nedskalert til 700x335px - locked: Krever at du manuelt godkjenner følgere og setter standard beskyttelse av poster til kun-følgere - note: Maksimalt 160 tegn - imports: - data: CSV fil eksportert fra en annen Mastodon instans - labels: - defaults: - avatar: Avatar - confirm_new_password: Bekreft nytt passord - confirm_password: Bekreft passord - current_password: NÃ¥værende passord - data: Data - display_name: Visningsnavn - email: E-post adresse - header: Header - locale: SprÃ¥k - locked: Endre konto til privat - new_password: Nytt passord - note: Biografi - otp_attempt: To-faktor kode - password: Passord - setting_default_privacy: Leserettigheter for poster - type: Importeringstype - username: Brukernavn - interactions: - must_be_follower: Blokker meldinger fra ikke-følgere - must_be_following: Blokker meldinger fra folk du ikke følger - notification_emails: - digest: Send oppsummerings eposter - favourite: Send e-post nÃ¥r noen setter din status som favoritt - follow: Send e-post nÃ¥r noen følger deg - follow_request: Send e-post nÃ¥r noen spør om Ã¥ fÃ¥ følge deg - mention: Send e-post nÃ¥r noen nevner deg - reblog: Send e-post nÃ¥r noen reblogger din status - 'no': 'Nei' - required: - mark: "*" - text: pÃ¥krevd - 'yes': 'Ja' +--- {} diff --git a/config/navigation.rb b/config/navigation.rb index 77556e5aa3..c6b7b97678 100644 --- a/config/navigation.rb +++ b/config/navigation.rb @@ -14,11 +14,11 @@ SimpleNavigation::Configuration.run do |navigation| settings.item :authorized_apps, safe_join([fa_icon('list fw'), t('settings.authorized_apps')]), oauth_authorized_applications_url end - primary.item :admin, safe_join([fa_icon('cogs fw'), 'Administration']), admin_accounts_url, if: proc { current_user.admin? } do |admin| + primary.item :admin, safe_join([fa_icon('cogs fw'), 'Administration']), admin_reports_url, if: proc { current_user.admin? } do |admin| admin.item :reports, safe_join([fa_icon('flag fw'), 'Reports']), admin_reports_url, highlights_on: %r{/admin/reports} admin.item :accounts, safe_join([fa_icon('users fw'), 'Accounts']), admin_accounts_url, highlights_on: %r{/admin/accounts} admin.item :pubsubhubbubs, safe_join([fa_icon('paper-plane-o fw'), 'PubSubHubbub']), admin_pubsubhubbub_index_url - admin.item :domain_blocks, safe_join([fa_icon('lock fw'), 'Domain Blocks']), admin_domain_blocks_url + admin.item :domain_blocks, safe_join([fa_icon('lock fw'), 'Domain Blocks']), admin_domain_blocks_url, highlights_on: %r{/admin/domain_blocks} admin.item :sidekiq, safe_join([fa_icon('diamond fw'), 'Sidekiq']), sidekiq_url admin.item :pghero, safe_join([fa_icon('database fw'), 'PgHero']), pghero_url admin.item :settings, safe_join([fa_icon('cogs fw'), 'Site Settings']), admin_settings_url diff --git a/config/routes.rb b/config/routes.rb index bfca5c734b..ca77191f7c 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -77,7 +77,7 @@ Rails.application.routes.draw do namespace :admin do resources :pubsubhubbub, only: [:index] - resources :domain_blocks, only: [:index, :create] + resources :domain_blocks, only: [:index, :new, :create] resources :settings, only: [:index, :update] resources :reports, only: [:index, :show] do -- GitLab