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