geri 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.
- checksums.yaml +4 -4
- data/app/assets/stylesheets/geri/admin.css.less +1 -0
- data/app/controllers/geri/admin/editor_controller.rb +1 -1
- data/app/controllers/geri/pages_controller.rb +3 -9
- data/app/helpers/geri/{admin/pages_helper.rb → pages_helper.rb} +21 -1
- data/app/models/geri/page.rb +54 -0
- data/app/views/geri/admin/shared/_aside.html.erb +1 -1
- data/config/initializers/geri_template_handler.rb +14 -0
- data/lib/generators/geri/install/install_generator.rb +1 -1
- data/lib/generators/geri/install/templates/index.html.erb +12 -6
- data/lib/generators/geri/install/templates/initializer.rb +1 -3
- data/lib/generators/geri/install/templates/layout.html.erb +1 -1
- data/lib/geri/config.rb +2 -3
- data/lib/geri/engine.rb +6 -0
- data/lib/geri/version.rb +1 -1
- metadata +5 -4
- data/app/helpers/geri/meta_helper.rb +0 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 25a454f644b7531546f5812327df98695da4ad51
|
4
|
+
data.tar.gz: 89ca8936b4d0140ab659849b5185c0c45ab22854
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ecb4a4bb6c4b4ca7f6bebae8fa965e781ce1e20fc3b5003a308ababe3a09835f3f592928d57a639a16dcb4330668afca98c7f5cdba7dce5e9126720620b96bc3
|
7
|
+
data.tar.gz: 41d8425317b99fee0b023a2428d3fe1d2c9b98e3c0c5d0a155792cf8655c6c53c1ccf3657d38de777b9d5a6198d6f16a42f2a727b053bcf6667c6403b61193d4
|
@@ -3,19 +3,13 @@ module Geri
|
|
3
3
|
before_action :set_view_path
|
4
4
|
|
5
5
|
def show
|
6
|
-
|
6
|
+
page = Page.find(params[:path])
|
7
|
+
@metadata = page.metadata
|
8
|
+
render(file: page.file, layout: 'layout.html.erb', locals: {foo: 'bar'})
|
7
9
|
end
|
8
10
|
|
9
11
|
private
|
10
12
|
|
11
|
-
def render_options_for_path(path)
|
12
|
-
return { file: 'index.html.erb', layout: 'layout.html.erb' } unless path
|
13
|
-
if File.exists?(page_root.join("#{path.underscore}.html.erb"))
|
14
|
-
{ file: path.underscore, layout: 'layout.html.erb' }
|
15
|
-
else
|
16
|
-
{ file: "#{path.underscore}/index", layout: 'layout.html.erb' }
|
17
|
-
end
|
18
|
-
end
|
19
13
|
|
20
14
|
def _normalize_layout(name)
|
21
15
|
name
|
@@ -1,5 +1,14 @@
|
|
1
1
|
module Geri
|
2
|
-
module
|
2
|
+
module PagesHelper
|
3
|
+
|
4
|
+
def title
|
5
|
+
@metadata[:title]
|
6
|
+
end
|
7
|
+
|
8
|
+
def link_to_with_active(name, options = {}, html_options = {}, &block)
|
9
|
+
html_options[:class] = html_options[:class] ? html_options[:class] + ' active' : 'active' if current_page?(options)
|
10
|
+
link_to name, options, html_options, &block
|
11
|
+
end
|
3
12
|
|
4
13
|
def geri_sanitize(content)
|
5
14
|
ActionController::Base.helpers.sanitize(content, {
|
@@ -8,6 +17,17 @@ module Geri
|
|
8
17
|
})
|
9
18
|
end
|
10
19
|
|
20
|
+
def meta_tags
|
21
|
+
concat(content_tag(:meta, '', name: :copyright, content: @metadata[:copyright])) if @metadata[:copyright]
|
22
|
+
concat(content_tag(:meta, '', name: :description, content: @metadata[:description])) if @metadata[:description]
|
23
|
+
concat(content_tag(:meta, '', name: :keywords, content: @metadata[:keywords].join(','))) if @metadata[:keywords]
|
24
|
+
concat(content_tag(:meta, '', name: :robots, content: @metadata[:robots])) if @metadata[:robots]
|
25
|
+
end
|
26
|
+
|
27
|
+
def site_name
|
28
|
+
Geri::Config.site_name
|
29
|
+
end
|
30
|
+
|
11
31
|
def editable(name, &block)
|
12
32
|
name = "#{current_page}_#{name}"
|
13
33
|
content = Content.find_by(name: name) && geri_sanitize(Content.find_by(name: name).body)
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module Geri
|
2
|
+
|
3
|
+
# Page encapsulates a site page and it's metadata
|
4
|
+
class Page
|
5
|
+
attr_reader :page_index, :file
|
6
|
+
|
7
|
+
META_CAPTURE = /\A---(.*)\n---\B/m
|
8
|
+
|
9
|
+
# Finds a page within the site and returns a new Page instance
|
10
|
+
#
|
11
|
+
# @param path[string|NilClass] the url path for which to look for the page
|
12
|
+
# @return [Page] a page object
|
13
|
+
def self.find(path)
|
14
|
+
path = '/' unless path
|
15
|
+
new(path)
|
16
|
+
end
|
17
|
+
|
18
|
+
# @private
|
19
|
+
def initialize(path)
|
20
|
+
@path = path
|
21
|
+
@file = index_or_name
|
22
|
+
end
|
23
|
+
|
24
|
+
# Returns the metadata found in the metadata section of the page as a symbolized hash
|
25
|
+
#
|
26
|
+
# @return [Hash] the page metadata
|
27
|
+
def metadata
|
28
|
+
unless @metadata && capture_metadata
|
29
|
+
@metadata ||= YAML.load(capture_metadata)
|
30
|
+
end
|
31
|
+
@metadata.symbolize_keys!
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def capture_metadata
|
37
|
+
@captured_metadata ||= META_CAPTURE.match(raw)[1]
|
38
|
+
end
|
39
|
+
|
40
|
+
def raw
|
41
|
+
@raw ||= File.read(file)
|
42
|
+
end
|
43
|
+
|
44
|
+
def index_or_name
|
45
|
+
return site_root + @path + '/index.html.erb' unless File.exists?(site_root + @path + '.html.erb')
|
46
|
+
site_root + @path + '.html.erb'
|
47
|
+
end
|
48
|
+
|
49
|
+
def site_root
|
50
|
+
Rails.root.join('site').to_s
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class GeriTemplateHandler
|
2
|
+
def self.call(template)
|
3
|
+
options = {
|
4
|
+
locals: template.locals,
|
5
|
+
virtual_path: template.virtual_path,
|
6
|
+
updated_at: template.updated_at
|
7
|
+
}
|
8
|
+
source = template.source.gsub(Geri::Page::META_CAPTURE, '')
|
9
|
+
template = ActionView::Template.new(source, template.identifier, template.handler, options)
|
10
|
+
ActionView::Template::Handlers::ERB.call(template)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
ActionView::Template.register_template_handler(:erb, GeriTemplateHandler)
|
@@ -9,7 +9,7 @@ class Geri::InstallGenerator < Rails::Generators::Base
|
|
9
9
|
gsub_file('config/routes.rb', 'Rails.application.routes.draw do', <<-EOF
|
10
10
|
Rails.application.routes.draw do
|
11
11
|
# Sets the mounted location of the Geri CMS, if you wish to mount this elsewhere simply update this line.
|
12
|
-
mount Geri::Engine =>
|
12
|
+
mount Geri::Engine => /
|
13
13
|
EOF
|
14
14
|
)
|
15
15
|
end
|
@@ -1,9 +1,15 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
1
|
+
---
|
2
|
+
title: GeriCMS
|
3
|
+
keywords:
|
4
|
+
- cms
|
5
|
+
- geri cms
|
6
|
+
- geri digital
|
7
|
+
- rails cms
|
8
|
+
- ruby on rails cms
|
9
|
+
- ruby cms
|
10
|
+
description: GeriCMS is an estensible open source content managment system built from the ground up with developers and
|
11
|
+
extensibility in mind.
|
12
|
+
---
|
7
13
|
<nav class="navbar navbar-default">
|
8
14
|
<div class="container">
|
9
15
|
<div class="navbar-header">
|
data/lib/geri/config.rb
CHANGED
@@ -3,14 +3,13 @@ module Geri
|
|
3
3
|
module Config
|
4
4
|
include ActiveSupport::Configurable
|
5
5
|
config_accessor :admin_path # route to the administrative backend
|
6
|
-
config_accessor :menu_items
|
6
|
+
config_accessor :menu_items # menu item registry
|
7
7
|
config_accessor :site_name # name of the site
|
8
|
-
config_accessor :mount_point # sets the mount point for the Geri::Engine
|
9
8
|
|
10
9
|
# Defaults
|
11
10
|
self.admin_path = '/admin'
|
12
11
|
self.menu_items = []
|
13
|
-
self.
|
12
|
+
self.site_name = 'GeriCMS'
|
14
13
|
|
15
14
|
def self.register_menu_item(title, path_or_options=nil, options={})
|
16
15
|
self.menu_items << item = MenuItem.new(title, path_or_options, options)
|
data/lib/geri/engine.rb
CHANGED
@@ -29,6 +29,12 @@ module Geri
|
|
29
29
|
%w{ geri/admin/editor.css geri/admin/editor.js }
|
30
30
|
end
|
31
31
|
|
32
|
+
initializer :add_all_site_images_to_assets do
|
33
|
+
Dir.glob(Rails.root.join('app', 'site', 'assets', 'images', '**').to_s).each do |asset|
|
34
|
+
config.assets.precompile << File.basename(asset)
|
35
|
+
end
|
36
|
+
end
|
32
37
|
|
33
38
|
end
|
39
|
+
|
34
40
|
end
|
data/lib/geri/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: geri
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- fugufish
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -366,18 +366,18 @@ files:
|
|
366
366
|
- app/controllers/geri/pages_controller.rb
|
367
367
|
- app/helpers/geri/admin/dashboard_helper.rb
|
368
368
|
- app/helpers/geri/admin/editor_helper.rb
|
369
|
-
- app/helpers/geri/admin/pages_helper.rb
|
370
369
|
- app/helpers/geri/admin/partials_helper.rb
|
371
370
|
- app/helpers/geri/admin/password_resets_helper.rb
|
372
371
|
- app/helpers/geri/admin/sessions_helper.rb
|
373
372
|
- app/helpers/geri/admin_helper.rb
|
374
373
|
- app/helpers/geri/admin_users_helper.rb
|
375
374
|
- app/helpers/geri/application_helper.rb
|
376
|
-
- app/helpers/geri/
|
375
|
+
- app/helpers/geri/pages_helper.rb
|
377
376
|
- app/mailers/application_mailer.rb
|
378
377
|
- app/mailers/geri/admin_user_mailer.rb
|
379
378
|
- app/models/geri/admin_user.rb
|
380
379
|
- app/models/geri/content.rb
|
380
|
+
- app/models/geri/page.rb
|
381
381
|
- app/models/geri/password_reset.rb
|
382
382
|
- app/models/geri/session.rb
|
383
383
|
- app/views/geri/admin/admin_users/_form.html.erb
|
@@ -397,6 +397,7 @@ files:
|
|
397
397
|
- app/views/layouts/mailer.html.erb
|
398
398
|
- app/views/layouts/mailer.text.erb
|
399
399
|
- config/initializers/geri.rb
|
400
|
+
- config/initializers/geri_template_handler.rb
|
400
401
|
- config/initializers/sorcery.rb
|
401
402
|
- config/locales/devise.en.yml
|
402
403
|
- config/locales/en.yml
|
@@ -1,32 +0,0 @@
|
|
1
|
-
module Geri
|
2
|
-
module MetaHelper
|
3
|
-
attr_reader :page_title
|
4
|
-
|
5
|
-
def title(text)
|
6
|
-
@page_title = text
|
7
|
-
end
|
8
|
-
|
9
|
-
def description(text)
|
10
|
-
meta description: text
|
11
|
-
end
|
12
|
-
|
13
|
-
def keywords(*keywords)
|
14
|
-
meta keywords: keywords
|
15
|
-
end
|
16
|
-
|
17
|
-
def meta(options=nil)
|
18
|
-
@meta ||= {}
|
19
|
-
@meta.reverse_merge!(options) if options
|
20
|
-
@meta
|
21
|
-
end
|
22
|
-
|
23
|
-
def meta_tags
|
24
|
-
html = ''.html_safe
|
25
|
-
meta.each do |name, content|
|
26
|
-
html << content_tag(:meta, '', name: name, content: (content.is_a?(Array) ? content.join(', ') : content))
|
27
|
-
end
|
28
|
-
html
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
32
|
-
end
|