simple-pages-rails 0.0.1 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -0
- data/Gemfile +22 -4
- data/Guardfile +47 -0
- data/app/assets/javascripts/simple_pages/application.js +0 -2
- data/app/assets/javascripts/simple_pages/pages.js.coffee +4 -0
- data/app/controllers/simple_pages/application_controller.rb +5 -4
- data/app/controllers/simple_pages/pages_controller.rb +6 -1
- data/app/helpers/simple_pages/application_helper.rb +0 -3
- data/app/helpers/simple_pages/pages_helper.rb +1 -1
- data/app/models/simple_pages/page.rb +6 -17
- data/lib/generators/simple_pages/USAGE +11 -0
- data/lib/generators/simple_pages/install_generator.rb +40 -0
- data/lib/generators/simple_pages/templates/cancan_ext.rb +25 -0
- data/lib/generators/simple_pages/templates/devise_ext.rb +25 -0
- data/lib/generators/simple_pages/templates/simple_pages.rb +19 -0
- data/lib/simple-pages-rails/version.rb +1 -1
- data/lib/simple_pages.rb +22 -11
- data/lib/simple_pages/controllers/page_layout_at.rb +34 -0
- data/lib/simple_pages/engine.rb +12 -0
- data/lib/simple_pages/models/page_attachment.rb +15 -0
- data/lib/simple_pages/models/page_author.rb +19 -0
- data/lib/simple_pages/models/page_locale.rb +28 -0
- data/lib/simple_pages/models/page_owner.rb +23 -0
- data/simple-pages-rails.gemspec +9 -1
- data/spec/configuration_spec.rb +39 -0
- data/spec/dummy/.rspec +1 -0
- data/spec/dummy/app/models/ability.rb +7 -0
- data/spec/dummy/app/models/user.rb +17 -0
- data/spec/dummy/config/environments/development.rb +2 -0
- data/spec/dummy/config/initializers/devise.rb +232 -0
- data/spec/dummy/config/initializers/simple_form.rb +142 -0
- data/spec/dummy/config/initializers/simple_form_bootstrap.rb +45 -0
- data/spec/dummy/config/initializers/simple_pages.rb +19 -0
- data/spec/dummy/config/locales/devise.en.yml +58 -0
- data/spec/dummy/config/locales/simple_form.en.yml +26 -0
- data/spec/dummy/config/routes.rb +3 -2
- data/spec/dummy/db/migrate/20121214105317_devise_create_users.rb +46 -0
- data/spec/dummy/db/migrate/20121214105802_create_simple_pages.simple_pages.rb +19 -0
- data/spec/dummy/db/schema.rb +51 -0
- data/spec/dummy/lib/cancan_ext.rb +25 -0
- data/spec/dummy/lib/devise_ext.rb +25 -0
- data/spec/dummy/lib/templates/erb/scaffold/_form.html.erb +13 -0
- data/spec/spec_helper.rb +54 -0
- metadata +193 -8
- data/lib/simple_pages/page_author.rb +0 -17
- data/lib/simple_pages/page_layout_at.rb +0 -32
- data/spec/dummy/README.rdoc +0 -261
data/.gitignore
CHANGED
data/Gemfile
CHANGED
@@ -1,13 +1,10 @@
|
|
1
|
-
source
|
1
|
+
source 'http://rubygems.org'
|
2
2
|
|
3
3
|
# Declare your gem's dependencies in simple_pages.gemspec.
|
4
4
|
# Bundler will treat runtime dependencies like base dependencies, and
|
5
5
|
# development dependencies will be added by default to the :development group.
|
6
6
|
gemspec
|
7
7
|
|
8
|
-
# jquery-rails is used by the dummy application
|
9
|
-
gem "jquery-rails"
|
10
|
-
|
11
8
|
# Declare any dependencies that are still in development here instead of in
|
12
9
|
# your gemspec. These might include edge Rails or gems from your path or
|
13
10
|
# Git. Remember to move these dependencies to your gemspec before releasing
|
@@ -15,3 +12,24 @@ gem "jquery-rails"
|
|
15
12
|
|
16
13
|
# To use debugger
|
17
14
|
# gem 'debugger'
|
15
|
+
|
16
|
+
# gems used by the dummy application
|
17
|
+
gem 'sass-rails', '~> 3.2.3'
|
18
|
+
gem 'coffee-rails', '~> 3.2.1'
|
19
|
+
|
20
|
+
gem 'devise'
|
21
|
+
gem 'cancan'
|
22
|
+
gem 'simple_form'
|
23
|
+
gem 'anjlab-bootstrap-rails', require: 'bootstrap-rails'
|
24
|
+
|
25
|
+
group :test do
|
26
|
+
if RUBY_PLATFORM =~ /darwin/i
|
27
|
+
gem 'rb-fsevent', '~> 0.9.1'
|
28
|
+
gem 'growl'
|
29
|
+
end
|
30
|
+
|
31
|
+
if RUBY_PLATFORM =~ /linux/i
|
32
|
+
gem 'rb-inotify'
|
33
|
+
gem 'libnotify'
|
34
|
+
end
|
35
|
+
end
|
data/Guardfile
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
# A sample Guardfile
|
2
|
+
# More info at https://github.com/guard/guard#readme
|
3
|
+
|
4
|
+
guard 'spork', cucumber_env: { 'RAILS_ENV' => 'test' }, rspec_env: { 'RAILS_ENV' => 'test' } do
|
5
|
+
watch('config/application.rb')
|
6
|
+
watch('config/environment.rb')
|
7
|
+
watch('config/environments/test.rb')
|
8
|
+
watch(%r{^config/initializers/.+\.rb$})
|
9
|
+
watch('Gemfile')
|
10
|
+
watch('Gemfile.lock')
|
11
|
+
watch('spec/spec_helper.rb') { :rspec }
|
12
|
+
watch('test/test_helper.rb') { :test_unit }
|
13
|
+
watch(%r{features/support/}) { :cucumber }
|
14
|
+
end
|
15
|
+
|
16
|
+
guard 'rspec', cli: '--color --drb' do
|
17
|
+
watch(%r{^spec/.+_spec\.rb$})
|
18
|
+
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
|
19
|
+
watch('spec/spec_helper.rb') { 'spec' }
|
20
|
+
|
21
|
+
# Rails example
|
22
|
+
watch(%r{^spec/dummy/app/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
|
23
|
+
watch(%r{^spec/dummy/app/(.*)(\.erb|\.haml)$}) { |m|
|
24
|
+
"spec/#{m[1]}#{m[2]}_spec.rb"
|
25
|
+
}
|
26
|
+
watch(%r{^spec/dummy/app/controllers/(.+)_(controller)\.rb$}) { |m|
|
27
|
+
[
|
28
|
+
"spec/routing/#{m[1]}_routing_spec.rb",
|
29
|
+
"spec/#{m[2]}s/#{m[1]}_#{m[2]}_spec.rb",
|
30
|
+
"spec/acceptance/#{m[1]}_spec.rb"
|
31
|
+
]
|
32
|
+
}
|
33
|
+
watch(%r{^spec/support/(.+)\.rb$}) { 'spec' }
|
34
|
+
watch('spec/dummy/config/routes.rb') { 'spec/routing' }
|
35
|
+
watch('spec/dummy/app/controllers/application_controller.rb') { 'spec/controllers' }
|
36
|
+
|
37
|
+
# Capybara features specs
|
38
|
+
watch(%r{^spec/dummy/app/views/(.+)/.*\.(erb|haml)$}) { |m|
|
39
|
+
"spec/features/#{m[1]}_spec.rb"
|
40
|
+
}
|
41
|
+
|
42
|
+
# Turnip features and steps
|
43
|
+
watch(%r{^spec/acceptance/(.+)\.feature$})
|
44
|
+
watch(%r{^spec/acceptance/steps/(.+)_steps\.rb$}) { |m|
|
45
|
+
Dir[File.join("**/#{m[1]}.feature")][0] || 'spec/acceptance'
|
46
|
+
}
|
47
|
+
end
|
@@ -1,11 +1,12 @@
|
|
1
1
|
module SimplePages
|
2
2
|
class ApplicationController < ActionController::Base
|
3
|
-
include SimplePages::PageLayoutAt
|
4
|
-
|
5
3
|
respond_to :html
|
6
4
|
|
7
|
-
|
8
|
-
|
5
|
+
helper ::RailsTheme::Engine.helpers
|
6
|
+
helper SimplePages.helper_modules
|
7
|
+
|
8
|
+
SimplePages.controller_modules.each do |module_class|
|
9
|
+
include module_class
|
9
10
|
end
|
10
11
|
end
|
11
12
|
end
|
@@ -3,6 +3,7 @@ require_dependency 'simple_pages/application_controller'
|
|
3
3
|
module SimplePages
|
4
4
|
class PagesController < ApplicationController
|
5
5
|
before_filter :authenticate_session!, except: [:show]
|
6
|
+
|
6
7
|
load_resource class: 'SimplePages::Page', only: [:index]
|
7
8
|
before_filter :new_page, only: [:new, :create]
|
8
9
|
load_resource class: 'SimplePages::Page', find_by: :url, only: [:show, :edit, :update, :destroy]
|
@@ -10,7 +11,7 @@ module SimplePages
|
|
10
11
|
authorize_resource class: 'SimplePages::Page', except: [:show]
|
11
12
|
|
12
13
|
def index
|
13
|
-
@pages = @pages.paginate
|
14
|
+
@pages = @pages.paginate pagination_options
|
14
15
|
respond_with @pages
|
15
16
|
end
|
16
17
|
|
@@ -68,5 +69,9 @@ module SimplePages
|
|
68
69
|
[author.name, author.simple_page_owner_option]
|
69
70
|
end
|
70
71
|
end
|
72
|
+
|
73
|
+
def pagination_options
|
74
|
+
{ page: params[:page], per_page: SimplePages.pages_per_page }
|
75
|
+
end
|
71
76
|
end
|
72
77
|
end
|
@@ -8,7 +8,7 @@ module SimplePages
|
|
8
8
|
:'data-updated' => (updated_at != published_at ? 'true' : nil ),
|
9
9
|
class: 'published_at'
|
10
10
|
}
|
11
|
-
content_tag
|
11
|
+
content_tag :time, ::I18n.l(published_at, format: :long), options
|
12
12
|
end
|
13
13
|
|
14
14
|
def author_vcard(author)
|
@@ -2,25 +2,20 @@ module SimplePages
|
|
2
2
|
class Page < ActiveRecord::Base
|
3
3
|
self.table_name = SimplePages.page_table_name
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
attr_accessible :title, :excerpt, :content, :published_at, :owner, :layout_at
|
5
|
+
attr_accessible :title, :excerpt, :content, :published_at, :layout_at
|
8
6
|
|
9
7
|
validates :url, presence: true
|
10
8
|
validates :title, presence: true
|
11
9
|
|
12
|
-
belongs_to :author, polymorphic: true
|
13
|
-
|
14
|
-
has_many :attachments, as: :resource
|
15
|
-
|
16
10
|
acts_as_url :title
|
17
11
|
|
18
12
|
scope :published, lambda { where('published_at <= ?', Time.zone.now) }
|
13
|
+
scope :layout_at, lambda { |location| where(layout_at: location) }
|
19
14
|
|
20
15
|
class << self
|
21
16
|
def find_or_create_by_url(attrs)
|
22
|
-
url = attrs.delete
|
23
|
-
page =
|
17
|
+
url = attrs.delete :url
|
18
|
+
page = where(url: url).first
|
24
19
|
if page.nil?
|
25
20
|
page = create(attrs)
|
26
21
|
page.url = url
|
@@ -34,14 +29,8 @@ module SimplePages
|
|
34
29
|
url
|
35
30
|
end
|
36
31
|
|
37
|
-
|
38
|
-
|
39
|
-
self.author_type = owner_attrs.first
|
40
|
-
self.author_id = owner_attrs.last
|
41
|
-
end
|
42
|
-
|
43
|
-
SimplePages.page_modules.each do |module_name|
|
44
|
-
include module_name
|
32
|
+
SimplePages.page_modules.each do |module_class|
|
33
|
+
include module_class
|
45
34
|
end
|
46
35
|
end
|
47
36
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module SimplePages
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
desc 'Copies SimplePages configuration file and libraries.'
|
5
|
+
source_root File.expand_path('../templates', __FILE__)
|
6
|
+
class_option :user_model, default: 'user', desc: 'User model used in application.'
|
7
|
+
|
8
|
+
def copy_libraries
|
9
|
+
template 'devise_ext.rb', 'lib/devise_ext.rb'
|
10
|
+
template 'cancan_ext.rb', 'lib/cancan_ext.rb'
|
11
|
+
end
|
12
|
+
|
13
|
+
def copy_config_file
|
14
|
+
template 'simple_pages.rb', 'config/initializers/simple_pages.rb'
|
15
|
+
end
|
16
|
+
|
17
|
+
def append_user_mixin
|
18
|
+
user_model = "app/models/#{options[:user_model].downcase}.rb"
|
19
|
+
unless File.exist? user_model
|
20
|
+
raise 'You need to specify an user model. Try --user-model option'
|
21
|
+
end
|
22
|
+
insert_into_file user_model, before: /^end\n/ do
|
23
|
+
<<-CODE
|
24
|
+
def name
|
25
|
+
email
|
26
|
+
end
|
27
|
+
|
28
|
+
include SimplePages::Models::PageAuthor
|
29
|
+
CODE
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def mount_routes
|
34
|
+
insert_into_file 'config/routes.rb', after: "routes.draw do\n" do
|
35
|
+
" mount SimplePages::Engine, at: '/'\n"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'active_support/concern'
|
2
|
+
|
3
|
+
module CanCanExt
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
included do
|
6
|
+
rescue_from ::CanCan::AccessDenied do |exception|
|
7
|
+
redirect_to secure_root_url, alert: exception.message
|
8
|
+
end
|
9
|
+
|
10
|
+
helper_method :secure_root_url
|
11
|
+
end
|
12
|
+
|
13
|
+
module ClassMethods
|
14
|
+
end
|
15
|
+
|
16
|
+
protected
|
17
|
+
|
18
|
+
def current_ability
|
19
|
+
@current_ability ||= Ability.new session_user
|
20
|
+
end
|
21
|
+
|
22
|
+
def secure_root_url
|
23
|
+
main_app.root_url
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'active_support/concern'
|
2
|
+
|
3
|
+
module DeviseExt
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
included do
|
6
|
+
helper_method :session_user
|
7
|
+
end
|
8
|
+
|
9
|
+
module ClassMethods
|
10
|
+
end
|
11
|
+
|
12
|
+
protected
|
13
|
+
|
14
|
+
def authenticate_session!
|
15
|
+
authenticate_user!
|
16
|
+
end
|
17
|
+
|
18
|
+
def session_user
|
19
|
+
current_user
|
20
|
+
end
|
21
|
+
|
22
|
+
def load_authors
|
23
|
+
@authors = User.all
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'devise_ext'
|
2
|
+
require 'cancan_ext'
|
3
|
+
|
4
|
+
SimplePages.configure do |config|
|
5
|
+
# mixin controller modules.
|
6
|
+
config.controller_modules += [DeviseExt, CanCanExt]
|
7
|
+
|
8
|
+
# mixin helper modules.
|
9
|
+
# config.helper_modules += []
|
10
|
+
|
11
|
+
# set table name of Page, default to simple_pages.
|
12
|
+
# config.page_table_name = 'simple_pages'
|
13
|
+
|
14
|
+
# mixin modules for Page.
|
15
|
+
# config.page_modules += []
|
16
|
+
|
17
|
+
# set per page of pagination for page controller, default to 30.
|
18
|
+
# config.pages_per_page = 30
|
19
|
+
end
|
data/lib/simple_pages.rb
CHANGED
@@ -1,22 +1,33 @@
|
|
1
|
-
require 'rails-theme-helper/app_helpers'
|
2
|
-
|
3
1
|
require 'simple_pages/engine'
|
4
|
-
require 'simple_pages/
|
5
|
-
require 'simple_pages/
|
2
|
+
require 'simple_pages/controllers/page_layout_at'
|
3
|
+
require 'simple_pages/models/page_attachment'
|
4
|
+
require 'simple_pages/models/page_author'
|
5
|
+
require 'simple_pages/models/page_locale'
|
6
|
+
require 'simple_pages/models/page_owner'
|
6
7
|
|
7
8
|
module SimplePages
|
8
|
-
mattr_accessor :
|
9
|
-
@@
|
9
|
+
mattr_accessor :controller_modules
|
10
|
+
@@controller_modules = [
|
11
|
+
SimplePages::Controllers::PageLayoutAt
|
12
|
+
]
|
10
13
|
|
11
14
|
mattr_accessor :helper_modules
|
12
|
-
@@helper_modules = [
|
13
|
-
RailsTheme::LayoutHelper,
|
14
|
-
RailsTheme::BootstrapHelper
|
15
|
-
]
|
15
|
+
@@helper_modules = []
|
16
16
|
|
17
17
|
mattr_accessor :page_table_name
|
18
18
|
@@page_table_name = 'simple_pages'
|
19
19
|
|
20
20
|
mattr_accessor :page_modules
|
21
|
-
@@page_modules = [
|
21
|
+
@@page_modules = [
|
22
|
+
SimplePages::Models::PageOwner,
|
23
|
+
SimplePages::Models::PageLocale,
|
24
|
+
SimplePages::Models::PageAttachment
|
25
|
+
]
|
26
|
+
|
27
|
+
mattr_accessor :pages_per_page
|
28
|
+
@@pages_per_page = 30
|
29
|
+
|
30
|
+
def self.configure
|
31
|
+
yield self
|
32
|
+
end
|
22
33
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'active_support/concern'
|
2
|
+
|
3
|
+
module SimplePages
|
4
|
+
module Controllers
|
5
|
+
module PageLayoutAt
|
6
|
+
extend ActiveSupport::Concern
|
7
|
+
included do
|
8
|
+
cattr_accessor :page_layout_at
|
9
|
+
self.page_layout_at = %w{header footer}
|
10
|
+
|
11
|
+
helper_method :pages_layout_at
|
12
|
+
end
|
13
|
+
|
14
|
+
module ClassMethods
|
15
|
+
def has_page_layout_at=(layouts = [])
|
16
|
+
self.page_layout_at += layouts unless layouts.blank?
|
17
|
+
end
|
18
|
+
alias :has_page_layout_at :has_page_layout_at=
|
19
|
+
end
|
20
|
+
|
21
|
+
protected
|
22
|
+
|
23
|
+
def pages_layout_at(location)
|
24
|
+
SimplePages::Page.layout_at(location).published
|
25
|
+
end
|
26
|
+
|
27
|
+
def load_page_layout_at_options
|
28
|
+
@layout_at_options = page_layout_at.map do |key|
|
29
|
+
[t(key, scope: 'simple_pages.layout_at'), key]
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/lib/simple_pages/engine.rb
CHANGED
@@ -1,5 +1,17 @@
|
|
1
1
|
module SimplePages
|
2
2
|
class Engine < ::Rails::Engine
|
3
3
|
isolate_namespace SimplePages
|
4
|
+
|
5
|
+
config.generators.stylesheet_engine :sass
|
6
|
+
config.generators.integration_tool :rspec
|
7
|
+
config.generators.test_framework :rspec
|
8
|
+
config.generators.fixture_replacement :factory_girl, dir: 'spec/factories'
|
4
9
|
end
|
5
10
|
end
|
11
|
+
|
12
|
+
require 'jquery-rails'
|
13
|
+
require 'will_paginate'
|
14
|
+
require 'rails-theme-helper'
|
15
|
+
require 'chosen-rails'
|
16
|
+
require 'ckeditor_rails'
|
17
|
+
require 'stringex'
|