geri 0.1.1 → 0.1.3
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/editor.css.less +4 -1
- data/app/controllers/geri/pages_controller.rb +21 -5
- data/app/helpers/geri/pages_helper.rb +8 -4
- data/app/models/geri/page.rb +35 -19
- data/app/views/geri/admin/editor/template.html.erb +2 -0
- data/lib/generators/geri/install/install_generator.rb +2 -1
- data/lib/generators/geri/install/templates/index.html.erb +1 -2
- data/lib/generators/geri/install/templates/site.js +2 -1
- data/lib/geri/config.rb +20 -4
- data/lib/geri/config/site.rb +19 -0
- data/lib/geri/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4bd21a0f527359b20935d17812b188c81a1e5039
|
4
|
+
data.tar.gz: c577ba2ef036e0f54f0b78e079cee048b4ef1759
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5a354bff2653c2ee996060db23cce15fce4b7f797e513876715af2d291ab87436e72ad4f8b98543345abe4f3d6e2b3323a0dd2c9bd07bf7197e7002de77653f5
|
7
|
+
data.tar.gz: d8690125483c74f82ecf4190c478415e39867013369abe3ac1b1a41259dc8b2e6cc2b91c9d818929274d66cf33fb0f2af0845b838b0fad8fd7d5ea0f2dd375c0
|
@@ -1,26 +1,42 @@
|
|
1
1
|
module Geri
|
2
2
|
class PagesController < ApplicationController
|
3
3
|
before_action :set_view_path
|
4
|
+
helper_method :current_site
|
4
5
|
|
5
6
|
def show
|
6
|
-
page
|
7
|
+
page = Page.find(params[:path], current_site, lookup_context)
|
7
8
|
@metadata = page.metadata
|
8
|
-
render
|
9
|
+
render inline: page.content, layout: 'layout.html.erb'
|
9
10
|
end
|
10
11
|
|
11
12
|
private
|
12
13
|
|
14
|
+
def current_site
|
15
|
+
Geri::Config.sites[request.host] || Geri::Config.sites[:default]
|
16
|
+
end
|
17
|
+
|
13
18
|
|
14
19
|
def _normalize_layout(name)
|
15
20
|
name
|
16
21
|
end
|
17
22
|
|
18
|
-
def
|
19
|
-
|
23
|
+
def site_root
|
24
|
+
current_site.root
|
20
25
|
end
|
21
26
|
|
22
27
|
def set_view_path
|
23
|
-
prepend_view_path(
|
28
|
+
prepend_view_path(Rails.root.join('app', 'site').to_s)
|
29
|
+
prepend_view_path(site_root.to_s) # base path
|
30
|
+
if params[:path]
|
31
|
+
parts = params[:path].split('/')
|
32
|
+
parts.each_index do |index|
|
33
|
+
if index == 0
|
34
|
+
prepend_view_path(site_root.join(parts[index]).to_s)
|
35
|
+
else
|
36
|
+
prepend_view_path(site_root.join(*parts[0..index]).to_s)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
24
40
|
end
|
25
41
|
|
26
42
|
end
|
@@ -5,6 +5,14 @@ module Geri
|
|
5
5
|
@metadata[:title]
|
6
6
|
end
|
7
7
|
|
8
|
+
def site_name
|
9
|
+
current_site.name
|
10
|
+
end
|
11
|
+
|
12
|
+
def current_site
|
13
|
+
Geri::Config.sites[request.host] || Geri::Config.sites[:default]
|
14
|
+
end
|
15
|
+
|
8
16
|
def link_to_with_active(name, options = {}, html_options = {}, &block)
|
9
17
|
html_options[:class] = html_options[:class] ? html_options[:class] + ' active' : 'active' if current_page?(options)
|
10
18
|
link_to name, options, html_options, &block
|
@@ -24,10 +32,6 @@ module Geri
|
|
24
32
|
concat(content_tag(:meta, '', name: :robots, content: @metadata[:robots])) if @metadata[:robots]
|
25
33
|
end
|
26
34
|
|
27
|
-
def site_name
|
28
|
-
Geri::Config.site_name
|
29
|
-
end
|
30
|
-
|
31
35
|
def editable(name, &block)
|
32
36
|
name = "#{current_page}_#{name}"
|
33
37
|
content = Content.find_by(name: name) && geri_sanitize(Content.find_by(name: name).body)
|
data/app/models/geri/page.rb
CHANGED
@@ -2,7 +2,10 @@ module Geri
|
|
2
2
|
|
3
3
|
# Page encapsulates a site page and it's metadata
|
4
4
|
class Page
|
5
|
-
|
5
|
+
|
6
|
+
class PageNotFoundError < ActionController::RoutingError;
|
7
|
+
end
|
8
|
+
attr_reader :page_index
|
6
9
|
|
7
10
|
META_CAPTURE = /\A---(.*)\n---\B/m
|
8
11
|
|
@@ -10,44 +13,57 @@ module Geri
|
|
10
13
|
#
|
11
14
|
# @param path[string|NilClass] the url path for which to look for the page
|
12
15
|
# @return [Page] a page object
|
13
|
-
def self.find(path)
|
14
|
-
path = '
|
15
|
-
new(path)
|
16
|
+
def self.find(path, current_site, lookup_context)
|
17
|
+
path = '' unless path
|
18
|
+
new(path, current_site, lookup_context)
|
16
19
|
end
|
17
20
|
|
18
21
|
# @private
|
19
|
-
def initialize(path)
|
20
|
-
@path
|
21
|
-
@
|
22
|
+
def initialize(path, current_site, lookup_context)
|
23
|
+
@path = path
|
24
|
+
@current_site = current_site
|
25
|
+
@lookup_context = lookup_context
|
22
26
|
end
|
23
27
|
|
24
28
|
# Returns the metadata found in the metadata section of the page as a symbolized hash
|
25
29
|
#
|
26
30
|
# @return [Hash] the page metadata
|
27
31
|
def metadata
|
28
|
-
|
29
|
-
@metadata ||= YAML.load(
|
32
|
+
if !@metadata && captured_metadata
|
33
|
+
@metadata ||= YAML.load(captured_metadata)
|
34
|
+
@metadata.symbolize_keys!
|
30
35
|
end
|
31
|
-
@metadata
|
36
|
+
@metadata || {}
|
32
37
|
end
|
33
38
|
|
34
|
-
|
39
|
+
def content
|
40
|
+
@content ||= raw.gsub(META_CAPTURE, '')
|
41
|
+
end
|
35
42
|
|
36
|
-
def
|
37
|
-
@
|
43
|
+
def file
|
44
|
+
@file ||=
|
45
|
+
(@lookup_context.find(@path + '.html.erb') rescue false) ||
|
46
|
+
(@lookup_context.find(@path + '/' + 'index.html.erb') rescue false)
|
47
|
+
raise PageNotFoundError.new "Page not found '/#{@path}'" unless @file
|
48
|
+
@file
|
38
49
|
end
|
39
50
|
|
40
|
-
|
41
|
-
|
51
|
+
private
|
52
|
+
|
53
|
+
def captured_metadata
|
54
|
+
unless @captured_metadata
|
55
|
+
capture = META_CAPTURE.match(raw)
|
56
|
+
@captured_metadata = capture ? capture[1] : nil
|
57
|
+
end
|
58
|
+
@captured_metadata
|
42
59
|
end
|
43
60
|
|
44
|
-
def
|
45
|
-
|
46
|
-
site_root + @path + '.html.erb'
|
61
|
+
def raw
|
62
|
+
file.source
|
47
63
|
end
|
48
64
|
|
49
65
|
def site_root
|
50
|
-
|
66
|
+
@current_site.root
|
51
67
|
end
|
52
68
|
|
53
69
|
end
|
@@ -9,6 +9,8 @@
|
|
9
9
|
<ul class="nav navbar-nav navbar-right">
|
10
10
|
<li><a id="geri-editor-save" class="btn btn-success disabled navbar-btn editor-link" href="">Save Changes</a></li>
|
11
11
|
<li><a id="geri-editor-revert" class="btn btn-danger disabled navbar-btn editor-link" href="">Revert</a></li>
|
12
|
+
<li><%= link_to 'Admin', '/admin', class: 'btn btn-warning navbar-btn editor-link', data: {
|
13
|
+
confirm: 'All unsaved progress will be lost. Are you sure?' } %></li>
|
12
14
|
</ul>
|
13
15
|
</div>
|
14
16
|
</nav>
|
@@ -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
|
@@ -29,6 +29,7 @@ Rails.application.routes.draw do
|
|
29
29
|
def create_assets_directory
|
30
30
|
empty_directory('app/site/assets')
|
31
31
|
empty_directory('app/site/assets/vendor')
|
32
|
+
empty_directory('app/site/assets/images')
|
32
33
|
end
|
33
34
|
|
34
35
|
def setup_bower
|
@@ -7,8 +7,7 @@ keywords:
|
|
7
7
|
- rails cms
|
8
8
|
- ruby on rails cms
|
9
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.
|
10
|
+
description: GeriCMS is an estensible open source content managment system built from the ground up with developers and extensibility in mind.
|
12
11
|
---
|
13
12
|
<nav class="navbar navbar-default">
|
14
13
|
<div class="container">
|
@@ -1 +1,2 @@
|
|
1
|
-
//= require jquery/dist/jquery
|
1
|
+
//= require jquery/dist/jquery
|
2
|
+
//= require bootstrap/dist/js/bootstrap::
|
data/lib/geri/config.rb
CHANGED
@@ -1,15 +1,16 @@
|
|
1
1
|
require_relative './config/menu_item'
|
2
|
+
require_relative './config/site'
|
2
3
|
module Geri
|
3
4
|
module Config
|
4
5
|
include ActiveSupport::Configurable
|
5
|
-
config_accessor :admin_path
|
6
|
-
config_accessor :menu_items
|
7
|
-
config_accessor :
|
6
|
+
config_accessor :admin_path # route to the administrative backend
|
7
|
+
config_accessor :menu_items # menu item registry
|
8
|
+
config_accessor :sites
|
8
9
|
|
9
10
|
# Defaults
|
10
11
|
self.admin_path = '/admin'
|
11
12
|
self.menu_items = []
|
12
|
-
self.
|
13
|
+
self.sites = {}
|
13
14
|
|
14
15
|
def self.register_menu_item(title, path_or_options=nil, options={})
|
15
16
|
self.menu_items << item = MenuItem.new(title, path_or_options, options)
|
@@ -17,12 +18,27 @@ module Geri
|
|
17
18
|
self.menu_items.sort! { |a,b| a.priority <=> b.priority }
|
18
19
|
end
|
19
20
|
|
21
|
+
def self.register_site(domain, mount_point, &block)
|
22
|
+
site = Site.new(domain, mount_point)
|
23
|
+
yield site
|
24
|
+
sites[domain] = site
|
25
|
+
end
|
26
|
+
|
20
27
|
# configure override
|
21
28
|
def self.configure(&block)
|
29
|
+
register_default_site
|
22
30
|
begin
|
23
31
|
yield self
|
24
32
|
end
|
25
33
|
end
|
26
34
|
|
35
|
+
private
|
36
|
+
|
37
|
+
def self.register_default_site
|
38
|
+
register_site :default, '/' do |site|
|
39
|
+
site.name = 'GeriCMS'
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
27
43
|
end
|
28
44
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Geri
|
2
|
+
module Config
|
3
|
+
class Site
|
4
|
+
attr_reader :domain, :mount_point, :root
|
5
|
+
attr_accessor :name
|
6
|
+
|
7
|
+
def initialize(domain, mount_point)
|
8
|
+
@domain = domain
|
9
|
+
@mount_point = mount_point
|
10
|
+
if @mount_point == '/'
|
11
|
+
@root = Rails.root.join('app', 'site')
|
12
|
+
else
|
13
|
+
@root = Rails.root.join('app', 'site', *@mount_point.split('/'))
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
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.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- fugufish
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -419,6 +419,7 @@ files:
|
|
419
419
|
- lib/geri/cli/extension.rb
|
420
420
|
- lib/geri/config.rb
|
421
421
|
- lib/geri/config/menu_item.rb
|
422
|
+
- lib/geri/config/site.rb
|
422
423
|
- lib/geri/engine.rb
|
423
424
|
- lib/geri/tasks.rb
|
424
425
|
- lib/geri/tasks/create_admin_user.rb
|