diff --git a/app/controllers/pageflow/application_controller.rb b/app/controllers/pageflow/application_controller.rb index 33b893cbf9..400ca25efa 100644 --- a/app/controllers/pageflow/application_controller.rb +++ b/app/controllers/pageflow/application_controller.rb @@ -21,8 +21,14 @@ class ApplicationController < ActionController::Base rescue_from ActiveRecord::RecordNotFound do respond_to do |format| - format.html { render :file => Rails.root.join('public/404.html'), :status => :not_found } - format.any(:json, :css) { head :not_found } + format.html do + begin + render file: Rails.public_path.join('pageflow', 'error_pages', '404.html'), status: :not_found + rescue ActionView::MissingTemplate + head :not_found + end + end + format.any { head :not_found } end end diff --git a/app/controllers/pageflow/entries_controller.rb b/app/controllers/pageflow/entries_controller.rb index eec03b8865..96f37abb5b 100644 --- a/app/controllers/pageflow/entries_controller.rb +++ b/app/controllers/pageflow/entries_controller.rb @@ -41,9 +41,6 @@ def show @entry = DraftEntry.find(params[:id]) authorize!(:show, @entry.to_model) end - format.any do - render(:file => 'public/pageflow/404.html', :status => :not_found) - end end end diff --git a/lib/generators/pageflow/error_pages/error_pages_generator.rb b/lib/generators/pageflow/error_pages/error_pages_generator.rb new file mode 100644 index 0000000000..6a97e4d178 --- /dev/null +++ b/lib/generators/pageflow/error_pages/error_pages_generator.rb @@ -0,0 +1,27 @@ +require 'rails/generators' + +module Pageflow + module Generators + class ErrorPagesGenerator < Rails::Generators::Base + desc 'Generate error pages.' + + source_root File.expand_path('../templates', __FILE__) + + def create_not_found + copy_file '404.html', 'public/pageflow/error_pages/404.html' + end + + def copy_fonts + directory 'fonts', 'public/pageflow/error_pages/fonts' + end + + def copy_stylesheets + directory 'stylesheets', 'public/pageflow/error_pages/stylesheets' + end + + def copy_images + directory 'images', 'public/pageflow/error_pages/images' + end + end + end +end diff --git a/lib/generators/pageflow/error_pages/templates/404.html b/lib/generators/pageflow/error_pages/templates/404.html new file mode 100644 index 0000000000..eac9f38384 --- /dev/null +++ b/lib/generators/pageflow/error_pages/templates/404.html @@ -0,0 +1,15 @@ + + + + + Not Found (404) + + + + +
+

Not Found

+

The page you've requested cannot be found.

+
+ + diff --git a/public/pageflow/error_assets/fonts/sourcesanspro-bold-webfont.eot b/lib/generators/pageflow/error_pages/templates/fonts/sourcesanspro-bold-webfont.eot similarity index 100% rename from public/pageflow/error_assets/fonts/sourcesanspro-bold-webfont.eot rename to lib/generators/pageflow/error_pages/templates/fonts/sourcesanspro-bold-webfont.eot diff --git a/public/pageflow/error_assets/fonts/sourcesanspro-bold-webfont.svg b/lib/generators/pageflow/error_pages/templates/fonts/sourcesanspro-bold-webfont.svg similarity index 100% rename from public/pageflow/error_assets/fonts/sourcesanspro-bold-webfont.svg rename to lib/generators/pageflow/error_pages/templates/fonts/sourcesanspro-bold-webfont.svg diff --git a/public/pageflow/error_assets/fonts/sourcesanspro-bold-webfont.ttf b/lib/generators/pageflow/error_pages/templates/fonts/sourcesanspro-bold-webfont.ttf similarity index 100% rename from public/pageflow/error_assets/fonts/sourcesanspro-bold-webfont.ttf rename to lib/generators/pageflow/error_pages/templates/fonts/sourcesanspro-bold-webfont.ttf diff --git a/public/pageflow/error_assets/fonts/sourcesanspro-bold-webfont.woff b/lib/generators/pageflow/error_pages/templates/fonts/sourcesanspro-bold-webfont.woff similarity index 100% rename from public/pageflow/error_assets/fonts/sourcesanspro-bold-webfont.woff rename to lib/generators/pageflow/error_pages/templates/fonts/sourcesanspro-bold-webfont.woff diff --git a/public/pageflow/error_assets/fonts/sourcesanspro-regular-webfont.eot b/lib/generators/pageflow/error_pages/templates/fonts/sourcesanspro-regular-webfont.eot similarity index 100% rename from public/pageflow/error_assets/fonts/sourcesanspro-regular-webfont.eot rename to lib/generators/pageflow/error_pages/templates/fonts/sourcesanspro-regular-webfont.eot diff --git a/public/pageflow/error_assets/fonts/sourcesanspro-regular-webfont.svg b/lib/generators/pageflow/error_pages/templates/fonts/sourcesanspro-regular-webfont.svg similarity index 100% rename from public/pageflow/error_assets/fonts/sourcesanspro-regular-webfont.svg rename to lib/generators/pageflow/error_pages/templates/fonts/sourcesanspro-regular-webfont.svg diff --git a/public/pageflow/error_assets/fonts/sourcesanspro-regular-webfont.ttf b/lib/generators/pageflow/error_pages/templates/fonts/sourcesanspro-regular-webfont.ttf similarity index 100% rename from public/pageflow/error_assets/fonts/sourcesanspro-regular-webfont.ttf rename to lib/generators/pageflow/error_pages/templates/fonts/sourcesanspro-regular-webfont.ttf diff --git a/public/pageflow/error_assets/fonts/sourcesanspro-regular-webfont.woff b/lib/generators/pageflow/error_pages/templates/fonts/sourcesanspro-regular-webfont.woff similarity index 100% rename from public/pageflow/error_assets/fonts/sourcesanspro-regular-webfont.woff rename to lib/generators/pageflow/error_pages/templates/fonts/sourcesanspro-regular-webfont.woff diff --git a/public/pageflow/error_assets/images/bg.jpg b/lib/generators/pageflow/error_pages/templates/images/bg.jpg similarity index 100% rename from public/pageflow/error_assets/images/bg.jpg rename to lib/generators/pageflow/error_pages/templates/images/bg.jpg diff --git a/lib/generators/pageflow/error_pages/templates/stylesheets/main.css b/lib/generators/pageflow/error_pages/templates/stylesheets/main.css new file mode 100644 index 0000000000..2a51b56f50 --- /dev/null +++ b/lib/generators/pageflow/error_pages/templates/stylesheets/main.css @@ -0,0 +1,40 @@ +@font-face { + font-family: SourceSansPro; + font-weight: normal; + font-style: normal; + src: url(/pageflow/error_pages/fonts/sourcesanspro-regular-webfont.eot); + src: url(/pageflow/error_pages/fonts/sourcesanspro-regular-webfont.eot?#iefix) format("embedded-opentype"), url(/pageflow/error_pages/fonts/sourcesanspro-regular-webfont.woff) format("woff"), url(/pageflow/error_pages/fonts/sourcesanspro-regular-webfont.ttf) format("truetype"), url(/pageflow/error_pages/fonts/sourcesanspro-regular-webfont.svg#SourceSansPro) format("svg"); +} + +@font-face { + font-family: SourceSansPro; + font-weight: bold; + font-style: normal; + src: url(/pageflow/error_pages/fonts/sourcesanspro-bold-webfont.eot); + src: url(/pageflow/error_pages/fonts/sourcesanspro-bold-webfont.eot?#iefix) format("embedded-opentype"), url(/pageflow/error_pages/fonts/sourcesanspro-bold-webfont.woff) format("woff"), url(/pageflow/error_pages/fonts/sourcesanspro-bold-webfont.ttf) format("truetype"), url(/pageflow/error_pages/fonts/sourcesanspro-bold-webfont.svg#SourceSansPro) format("svg"); +} + +html { + background-color: #252526; + background-image: url('/pageflow/error_pages/images/bg.jpg'); + background-repeat: no-repeat; + background-position: center center; + height: 100%; +} + +body { + font-size: 21px; + color: #fff; + font-family: "SourceSansPro"; +} + +div { + position: absolute; + top: 30%; + left: 30%; + max-width: 500px; +} + +a { + color: #fff; +} diff --git a/lib/generators/pageflow/install/install_generator.rb b/lib/generators/pageflow/install/install_generator.rb index 87dbe7f2b5..15ccf42e0b 100644 --- a/lib/generators/pageflow/install/install_generator.rb +++ b/lib/generators/pageflow/install/install_generator.rb @@ -18,6 +18,7 @@ def generate_all invoke 'pageflow:user' invoke 'pageflow:seeds' invoke 'pageflow:active_admin_initializer' + invoke 'pageflow:error_pages' rake 'pageflow:install:migrations' end diff --git a/public/pageflow/404.html b/public/pageflow/404.html deleted file mode 100644 index b354436031..0000000000 --- a/public/pageflow/404.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - Beitrag nicht gefunden (404) - - - - -
-

Beitrag nicht gefunden

-

Die Seite wurde entweder verschoben oder es befindet sich ein Tippfehler in der URL.

-
- - diff --git a/public/pageflow/500.html b/public/pageflow/500.html deleted file mode 100644 index 3b69d530c6..0000000000 --- a/public/pageflow/500.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - Interner Fehler (500) - - - - -
-

Interner Fehler

-

Das hätte nicht passieren dürfen: Es ist ein Fehler aufgetreten. Wir wurden darüber bereits automatisch informiert und geloben Besserung.

-
- - diff --git a/public/pageflow/error_assets/stylesheets/main.css b/public/pageflow/error_assets/stylesheets/main.css deleted file mode 100644 index 68da1260d2..0000000000 --- a/public/pageflow/error_assets/stylesheets/main.css +++ /dev/null @@ -1,40 +0,0 @@ -@font-face { - font-family: SourceSansPro; - font-weight: normal; - font-style: normal; - src: url(/error_assets/fonts/sourcesanspro-regular-webfont.eot); - src: url(/error_assets/fonts/sourcesanspro-regular-webfont.eot?#iefix) format("embedded-opentype"), url(/error_assets/fonts/sourcesanspro-regular-webfont.woff) format("woff"), url(/error_assets/fonts/sourcesanspro-regular-webfont.ttf) format("truetype"), url(/error_assets/fonts/sourcesanspro-regular-webfont.svg#SourceSansPro) format("svg"); -} - -@font-face { - font-family: SourceSansPro; - font-weight: bold; - font-style: normal; - src: url(/error_assets/fonts/sourcesanspro-bold-webfont.eot); - src: url(/error_assets/fonts/sourcesanspro-bold-webfont.eot?#iefix) format("embedded-opentype"), url(/error_assets/fonts/sourcesanspro-bold-webfont.woff) format("woff"), url(/error_assets/fonts/sourcesanspro-bold-webfont.ttf) format("truetype"), url(/error_assets/fonts/sourcesanspro-bold-webfont.svg#SourceSansPro) format("svg"); -} - -html { - background-color: #252526; - background-image: url('/error_assets/images/bg.jpg'); - background-repeat: no-repeat; - background-position: center center; - height: 100%; -} - -body { - font-size: 21px; - color: #fff; - font-family: "SourceSansPro"; -} - -div { - position: absolute; - top: 30%; - left: 30%; - max-width: 500px; -} - -a { - color: #fff; -} \ No newline at end of file diff --git a/spec/generators/pageflow/error_pages/error_pages_generator_spec.rb b/spec/generators/pageflow/error_pages/error_pages_generator_spec.rb new file mode 100644 index 0000000000..b2fed67953 --- /dev/null +++ b/spec/generators/pageflow/error_pages/error_pages_generator_spec.rb @@ -0,0 +1,45 @@ +require 'spec_helper' +require 'support/shared_contexts/generator' +require 'generators/pageflow/error_pages/error_pages_generator' + +module Pageflow + module Generators + describe ErrorPagesGenerator, type: :generator do + it "generates 'public/pageflow/error_pages/404.html'" do + run_generator + + expect(file('public/pageflow/error_pages/404.html')).to exist + end + + it 'copies the fonts' do + run_generator + + %w( + sourcesanspro-bold-webfont.eot + sourcesanspro-bold-webfont.svg + sourcesanspro-bold-webfont.ttf + sourcesanspro-bold-webfont.woff + + sourcesanspro-regular-webfont.eot + sourcesanspro-regular-webfont.svg + sourcesanspro-regular-webfont.ttf + sourcesanspro-regular-webfont.woff + ).each do |font_file| + expect(file("public/pageflow/error_pages/fonts/#{font_file}")).to exist + end + end + + it 'copies the stylesheets' do + run_generator + + expect(file('public/pageflow/error_pages/stylesheets/main.css')).to exist + end + + it 'copies the images' do + run_generator + + expect(file('public/pageflow/error_pages/images/bg.jpg')).to exist + end + end + end +end