merbiful-release 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +4 -5
- data/lib/merbiful-release/admin.rb +4 -17
- data/lib/merbiful-release/admin.rb~ +284 -3
- data/lib/merbiful-release/body.rb~ +27 -6
- data/lib/merbiful-release/css.rb +10 -3
- data/lib/merbiful-release/css.rb~ +10 -2
- data/lib/merbiful-release/erubis.rb~ +4 -2
- data/lib/merbiful-release/filters.rb~ +14 -0
- data/lib/merbiful-release/haml.rb~ +13 -1
- data/lib/merbiful-release/images.rb~ +14 -0
- data/lib/merbiful-release/js.rb +10 -3
- data/lib/merbiful-release/js.rb~ +17 -10
- data/lib/merbiful-release/layout.rb +8 -0
- data/lib/merbiful-release/layout.rb~ +46 -18
- data/lib/merbiful-release/page.rb +15 -4
- data/lib/merbiful-release/page.rb~ +65 -24
- data/lib/merbiful-release.rb~ +39 -1
- data/templates/admin.css~ +13 -2
- data/templates/admin_layout.html.haml~ +6 -5
- data/templates/css.html.haml~ +1 -1
- data/templates/{js.html.haml~ → images.html.haml~} +3 -4
- data/templates/page_form.html.haml~ +41 -1
- metadata +28 -36
- data/lib/merbiful-release/controller.rb~ +0 -12
- data/lib/merbiful-release/eruby.rb~ +0 -11
- data/lib/merbiful-release/merbiful.rb~ +0 -8
- data/lib/merbiful-release/relative_time.rb~ +0 -78
- data/lib/merbiful-release/routes.rb~ +0 -4
- data/lib/merbiful-release/version.rb~ +0 -45
- data/templates/admin_layout.html.rhtml~ +0 -10
- data/templates/index.html.haml~ +0 -2
- data/templates/layouts.html.haml~ +0 -0
- data/templates/pages.html.haml~ +0 -3
@@ -1,21 +1,49 @@
|
|
1
1
|
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
2
|
+
module Merbiful
|
3
|
+
|
4
|
+
class Layout
|
5
|
+
|
6
|
+
include DataMapper::Resource
|
7
|
+
include DataMapper::Validate
|
8
|
+
extend Forwardable
|
9
|
+
|
10
|
+
property :id, Serial
|
11
|
+
|
12
|
+
property :name, DataMapper::Types::Text, :nullable => false
|
13
|
+
|
14
|
+
property :created_at, DateTime
|
15
|
+
property :updated_at, DateTime
|
16
|
+
|
17
|
+
has n, :layout_versions, :class_name => "Merbiful::Layout::Version"
|
18
|
+
has n, :page_versions, :class_name => "Merbiful::Page::Version"
|
19
|
+
|
20
|
+
def latest
|
21
|
+
layout_versions.first(:layout_id => self.id, :order => [:id.desc])
|
22
|
+
end
|
23
|
+
|
24
|
+
def_delegators :latest, :render, :body, :filter
|
25
|
+
|
26
|
+
class Version
|
27
|
+
|
28
|
+
include DataMapper::Resource
|
29
|
+
include DataMapper::Validate
|
30
|
+
include Merbiful::Body
|
31
|
+
|
32
|
+
property :id, Serial
|
33
|
+
|
34
|
+
property :layout_id, Integer, :index => true, :nullable => false
|
35
|
+
|
36
|
+
property :body, DataMapper::Types::Text
|
37
|
+
property :filter, DataMapper::Types::Text
|
38
|
+
|
39
|
+
property :created_at, DateTime
|
40
|
+
property :updated_at, DateTime
|
41
|
+
|
42
|
+
belongs_to :layout, :class_name => "Merbiful::Layout"
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
20
48
|
|
21
49
|
end
|
@@ -26,6 +26,12 @@ module Merbiful
|
|
26
26
|
|
27
27
|
validates_is_unique :path
|
28
28
|
|
29
|
+
before :destroy do
|
30
|
+
versions.each do |version|
|
31
|
+
version.destroy
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
29
35
|
before :save do
|
30
36
|
if self.position.nil?
|
31
37
|
last_position = self.class.first(:parent_id => self.parent_id, :id.not => self.id)
|
@@ -66,17 +72,22 @@ module Merbiful
|
|
66
72
|
belongs_to :layout, :class_name => "Merbiful::Layout"
|
67
73
|
|
68
74
|
has n, :css_nesses, :class_name => "Merbiful::Css::Ness"
|
69
|
-
has n, :csses, :through => :css_nesses, :class_name => "Merbiful::Css", :remote_name => :css
|
75
|
+
has n, :csses, :through => :css_nesses, :class_name => "Merbiful::Css", :remote_name => :css, :child_key => [:page_version_id]
|
70
76
|
|
71
77
|
has n, :js_nesses, :class_name => "Merbiful::Js::Ness"
|
72
|
-
has n, :jses, :through => :js_nesses, :class_name => "Merbiful::Js", :remote_name => :js
|
78
|
+
has n, :jses, :through => :js_nesses, :class_name => "Merbiful::Js", :remote_name => :js, :child_key => [:page_version_id]
|
79
|
+
|
80
|
+
before :destroy do
|
81
|
+
css_nesses.destroy!
|
82
|
+
js_nesses.destroy!
|
83
|
+
end
|
73
84
|
|
74
85
|
before :save do
|
75
86
|
clear_cache(page.path) if page.latest
|
76
87
|
end
|
77
88
|
|
78
89
|
def add_css(css)
|
79
|
-
Merbiful::Css::Ness.
|
90
|
+
Merbiful::Css::Ness.create(:css => css, :page_version => self)
|
80
91
|
end
|
81
92
|
|
82
93
|
def remove_css(css)
|
@@ -84,7 +95,7 @@ module Merbiful
|
|
84
95
|
end
|
85
96
|
|
86
97
|
def add_js(js)
|
87
|
-
Merbiful::Js::Ness.
|
98
|
+
Merbiful::Js::Ness.create(:js => js, :page_version => self)
|
88
99
|
end
|
89
100
|
|
90
101
|
def remove_js(js)
|
@@ -8,48 +8,89 @@ module Merbiful
|
|
8
8
|
|
9
9
|
include DataMapper::Resource
|
10
10
|
include DataMapper::Validate
|
11
|
-
|
12
|
-
|
13
|
-
validates_is_unique :version, :scope => [:path]
|
11
|
+
extend Forwardable
|
14
12
|
|
15
13
|
property :id, Serial
|
16
|
-
property :
|
17
|
-
|
18
|
-
property :
|
19
|
-
property :path, DataMapper::Types::Text, :index => true
|
14
|
+
property :parent_id, Integer, :index => true
|
15
|
+
|
16
|
+
property :path, DataMapper::Types::Text, :unique_index => true, :nullable => false
|
20
17
|
property :position, Integer
|
18
|
+
property :cached, Boolean, :default => true, :nullable => false
|
19
|
+
|
21
20
|
property :created_at, DateTime
|
22
21
|
property :updated_at, DateTime
|
23
|
-
property :title, DataMapper::Types::Text
|
24
|
-
property :keywords, DataMapper::Types::Text
|
25
|
-
property :parent_path, DataMapper::Types::Text
|
26
|
-
property :layout_id, Integer
|
27
22
|
|
28
|
-
belongs_to :
|
23
|
+
belongs_to :parent, :class_name => "Merbiful::Page", :child_key => [:parent_id]
|
24
|
+
has n, :children, :class_name => "Merbiful::Page", :child_key => [:parent_id]
|
25
|
+
has n, :versions, :class_name => "Merbiful::Page::Version"
|
26
|
+
|
27
|
+
validates_is_unique :path
|
29
28
|
|
30
29
|
before :save do
|
31
|
-
last_version = self.class.first(:path => self.path, :order => [:version.desc])
|
32
|
-
if last_version.nil?
|
33
|
-
self.version = 0
|
34
|
-
else
|
35
|
-
self.version = last_version.version + 1
|
36
|
-
end
|
37
30
|
if self.position.nil?
|
38
|
-
last_position = self.class.first(:
|
31
|
+
last_position = self.class.first(:parent_id => self.parent_id, :id.not => self.id)
|
39
32
|
if last_position.nil?
|
40
33
|
self.position = 0
|
41
34
|
else
|
42
35
|
self.position = last_position.position + 1
|
43
36
|
end
|
44
37
|
end
|
45
|
-
|
46
|
-
self.path = "/"
|
47
|
-
end
|
38
|
+
end
|
48
39
|
|
40
|
+
def latest
|
41
|
+
versions.first(:page_id => self.id, :order => [:id.desc])
|
49
42
|
end
|
50
43
|
|
51
|
-
|
52
|
-
|
44
|
+
def_delegators :latest, :render, :layout, :csses, :add_css, :remove_css, :jses, :add_js, :remove_js, :body, :filter, :title, :keywords
|
45
|
+
|
46
|
+
class Version
|
47
|
+
|
48
|
+
include DataMapper::Resource
|
49
|
+
include DataMapper::Validate
|
50
|
+
include Merbiful::Body
|
51
|
+
|
52
|
+
property :id, Serial
|
53
|
+
|
54
|
+
property :page_id, Integer, :nullable => false, :index => true
|
55
|
+
property :layout_id, Integer, :index => true
|
56
|
+
|
57
|
+
property :body, DataMapper::Types::Text
|
58
|
+
property :filter, DataMapper::Types::Text
|
59
|
+
property :title, DataMapper::Types::Text
|
60
|
+
property :keywords, DataMapper::Types::Text
|
61
|
+
|
62
|
+
property :created_at, DateTime
|
63
|
+
property :updated_at, DateTime
|
64
|
+
|
65
|
+
belongs_to :page, :class_name => "Merbiful::Page"
|
66
|
+
belongs_to :layout, :class_name => "Merbiful::Layout"
|
67
|
+
|
68
|
+
has n, :css_nesses, :class_name => "Merbiful::Css::Ness"
|
69
|
+
has n, :csses, :through => :css_nesses, :class_name => "Merbiful::Css", :remote_name => :css
|
70
|
+
|
71
|
+
has n, :js_nesses, :class_name => "Merbiful::Js::Ness"
|
72
|
+
has n, :jses, :through => :js_nesses, :class_name => "Merbiful::Js", :remote_name => :js
|
73
|
+
|
74
|
+
before :save do
|
75
|
+
clear_cache(page.path) if page.latest
|
76
|
+
end
|
77
|
+
|
78
|
+
def add_css(css)
|
79
|
+
Merbiful::Css::Ness.new(:css => css, :page_version => self).save
|
80
|
+
end
|
81
|
+
|
82
|
+
def remove_css(css)
|
83
|
+
css_nesses.first(:css_id => css.id).destroy
|
84
|
+
end
|
85
|
+
|
86
|
+
def add_js(js)
|
87
|
+
Merbiful::Js::Ness.new(:js => js, :page_version => self).save
|
88
|
+
end
|
89
|
+
|
90
|
+
def remove_js(js)
|
91
|
+
js_nesses.first(:js_id => js.id).destroy
|
92
|
+
end
|
93
|
+
|
53
94
|
end
|
54
95
|
|
55
96
|
end
|
data/lib/merbiful-release.rb~
CHANGED
@@ -1,2 +1,40 @@
|
|
1
1
|
|
2
|
-
require
|
2
|
+
require 'merb-core'
|
3
|
+
require 'merb-action-args'
|
4
|
+
require 'merb_helpers'
|
5
|
+
require 'merb-assets'
|
6
|
+
require 'dm-core'
|
7
|
+
require 'dm-validations'
|
8
|
+
require 'dm-timestamps'
|
9
|
+
require 'dm-aggregates'
|
10
|
+
require 'haml'
|
11
|
+
require 'forwardable'
|
12
|
+
require 'pathname'
|
13
|
+
require 'erubis'
|
14
|
+
require 'pp'
|
15
|
+
require 'digest/sha1'
|
16
|
+
|
17
|
+
module Merbiful
|
18
|
+
|
19
|
+
FILTERS = []
|
20
|
+
|
21
|
+
def self.filters
|
22
|
+
FILTERS.inject([[nil, "Verbatim"]]) do |sum, filter|
|
23
|
+
filter_name = filter.name.gsub(/^Merbiful::/, "")
|
24
|
+
sum + [[filter_name, filter_name]]
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
require File.join(File.dirname(__FILE__), 'merbiful-release', 'relative_time.rb')
|
31
|
+
require File.join(File.dirname(__FILE__), 'merbiful-release', 'controller.rb')
|
32
|
+
require File.join(File.dirname(__FILE__), 'merbiful-release', 'body.rb')
|
33
|
+
require File.join(File.dirname(__FILE__), 'merbiful-release', 'admin.rb')
|
34
|
+
require File.join(File.dirname(__FILE__), 'merbiful-release', 'routes.rb')
|
35
|
+
require File.join(File.dirname(__FILE__), 'merbiful-release', 'css.rb')
|
36
|
+
require File.join(File.dirname(__FILE__), 'merbiful-release', 'js.rb')
|
37
|
+
require File.join(File.dirname(__FILE__), 'merbiful-release', 'page.rb')
|
38
|
+
require File.join(File.dirname(__FILE__), 'merbiful-release', 'layout.rb')
|
39
|
+
require File.join(File.dirname(__FILE__), 'merbiful-release', 'haml.rb')
|
40
|
+
require File.join(File.dirname(__FILE__), 'merbiful-release', 'erubis.rb')
|
data/templates/admin.css~
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
%html
|
2
|
+
%link{:href => url(:merbiful_admin_css), :rel => 'Stylesheet', :type => 'text/css'}
|
2
3
|
%body
|
3
|
-
%h1 Merbiful Release Administration Interface
|
4
|
+
%h1= link_to("Merbiful Release Administration Interface", url(:merbiful_admin_index))
|
4
5
|
%ul.menu
|
5
|
-
%li Pages
|
6
|
-
%li Layouts
|
7
|
-
%li Css
|
8
|
-
%li Js
|
6
|
+
%li= link_to("Pages", url(:merbiful_admin, :action => "pages"))
|
7
|
+
%li= link_to("Layouts", url(:merbiful_admin, :action => "layouts"))
|
8
|
+
%li= link_to("Css", url(:merbiful_admin, :action => "css"))
|
9
|
+
%li= link_to("Js", url(:merbiful_admin, :action => "js"))
|
9
10
|
= catch_content :for_layout
|
data/templates/css.html.haml~
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
%td= text_field(:name => "css[name]", :value => @form_css.name) + errors(@form_css, :name)
|
16
16
|
%tr
|
17
17
|
%td Body
|
18
|
-
%td~ text_area(@form_css.body, :name => "version[body]", :cols => 80, :rows =>
|
18
|
+
%td~ text_area(@form_css.body, :name => "version[body]", :cols => 80, :rows => text_area_rows) + errors(@form_version, :body)
|
19
19
|
%tr{:class => "filter"}
|
20
20
|
%td Filter
|
21
21
|
%td= select(:name => "version[filter]", :collection => Merbiful::filters, :selected => @form_css.latest.filter) + errors(@form_version, :filter)
|
@@ -1,6 +1,5 @@
|
|
1
|
-
%
|
2
|
-
|
3
|
-
- Merbiful::Css.all.each do |css|
|
1
|
+
%ul{:class => "images"}
|
2
|
+
- Merbiful::Images.all.each do |css|
|
4
3
|
%li{:class => "css"}
|
5
4
|
%ul{:class => "css_info info"}
|
6
5
|
%a{:href => url(:merbiful_admin, :action => "css", :css_id => css.id)}
|
@@ -15,7 +14,7 @@
|
|
15
14
|
%td= text_field(:name => "css[name]", :value => @form_css.name) + errors(@form_css, :name)
|
16
15
|
%tr
|
17
16
|
%td Body
|
18
|
-
%td~ text_area(@form_css.body, :name => "version[body]", :cols => 80, :rows =>
|
17
|
+
%td~ text_area(@form_css.body, :name => "version[body]", :cols => 80, :rows => text_area_rows) + errors(@form_version, :body)
|
19
18
|
%tr{:class => "filter"}
|
20
19
|
%td Filter
|
21
20
|
%td= select(:name => "version[filter]", :collection => Merbiful::filters, :selected => @form_css.latest.filter) + errors(@form_version, :filter)
|
@@ -1 +1,41 @@
|
|
1
|
-
%
|
1
|
+
%table.page
|
2
|
+
%form{:action => url(:merbiful_admin, :action => "pages", :page_id => @form_page.id), :method => "post"}
|
3
|
+
%tr{:class => "path"}
|
4
|
+
%td Path
|
5
|
+
%td= text_field(:name => "page[path]", :value => @form_page.path) + errors(@form_page, :path)
|
6
|
+
%tr{:class => "title"}
|
7
|
+
%td Title
|
8
|
+
%td= text_field(:name => "version[title]", :value => @form_page.title) + errors(@form_version, :title)
|
9
|
+
%tr{:class => "keywords"}
|
10
|
+
%td Keywords
|
11
|
+
%td= text_field(:name => "version[keywords]", :value => @form_page.keywords) + errors(@form_version, :keywords)
|
12
|
+
%tr{:class => "body"}
|
13
|
+
%td Body
|
14
|
+
%td~ text_area(@form_page.body, :name => "version[body]", :cols => 80, :rows => text_area_rows) + errors(@form_version, :body)
|
15
|
+
%tr{:class => "filter"}
|
16
|
+
%td Filter
|
17
|
+
%td= select(:name => "version[filter]", :collection => Merbiful::filters, :selected => @form_page.latest.filter) + errors(@form_version, :filter)
|
18
|
+
%tr{:class => "layout"}
|
19
|
+
%td Layout
|
20
|
+
%td= select(:name => "version[layout_id]", :collection => Merbiful::Layout.all, :include_blank => true, :text_method => :name, :value_method => :id, :selected => @form_page.latest.layout_id) + errors(@form_version, :layout)
|
21
|
+
%tr{:class => "cached"}
|
22
|
+
%td Cached
|
23
|
+
%td= check_box(:name => "page[cached]", :checked => @form_page.cached) + errors(@form_page, :cached)
|
24
|
+
- Merbiful::Css.all.each_with_index do |css, index|
|
25
|
+
- if index == 0
|
26
|
+
%tr{:class => "css"}
|
27
|
+
%td{:rowspan => Merbiful::Css.count, :valign => "top"} Css
|
28
|
+
%td= check_box(:name => "version[css][]", :value => css.id, :checked => @form_page.csses.include?(css)) + css.name
|
29
|
+
- else
|
30
|
+
%tr{:class => "css"}
|
31
|
+
%td= check_box(:name => "version[css][]", :value => css.id, :checked => @form_page.csses.include?(css)) + css.name
|
32
|
+
- Merbiful::Js.all.each_with_index do |js, index|
|
33
|
+
- if index == 0
|
34
|
+
%tr{:class => "js"}
|
35
|
+
%td{:rowspan => Merbiful::Js.count, :valign => "top"} Js
|
36
|
+
%td= check_box(:name => "version[js][]", :value => js.id, :checked => @form_page.jses.include?(js)) + js.name
|
37
|
+
- else
|
38
|
+
%tr{:class => "js"}
|
39
|
+
%td= check_box(:name => "version[js][]", :value => js.id, :checked => @form_page.jses.include?(js)) + js.name
|
40
|
+
%tr{:class => "submit"}
|
41
|
+
%td{:colspan => 2}= submit("Save")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: merbiful-release
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Martin Kihlgren
|
@@ -9,7 +9,7 @@ autorequire: merbiful-release
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-09-
|
12
|
+
date: 2008-09-13 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -43,53 +43,45 @@ extra_rdoc_files: []
|
|
43
43
|
files:
|
44
44
|
- Rakefile
|
45
45
|
- lib/merbiful-release
|
46
|
-
- lib/merbiful-release/
|
47
|
-
- lib/merbiful-release/layout.rb~
|
48
|
-
- lib/merbiful-release/layout.rb
|
49
|
-
- lib/merbiful-release/merbiful.rb~
|
50
|
-
- lib/merbiful-release/routes.rb~
|
51
|
-
- lib/merbiful-release/routes.rb
|
46
|
+
- lib/merbiful-release/admin.rb
|
52
47
|
- lib/merbiful-release/admin.rb~
|
53
|
-
- lib/merbiful-release/controller.rb~
|
54
|
-
- lib/merbiful-release/controller.rb
|
55
|
-
- lib/merbiful-release/haml.rb~
|
56
|
-
- lib/merbiful-release/page.rb
|
57
|
-
- lib/merbiful-release/version.rb~
|
58
|
-
- lib/merbiful-release/body.rb~
|
59
48
|
- lib/merbiful-release/body.rb
|
60
|
-
- lib/merbiful-release/
|
61
|
-
- lib/merbiful-release/
|
62
|
-
- lib/merbiful-release/js.rb
|
63
|
-
- lib/merbiful-release/eruby.rb~
|
64
|
-
- lib/merbiful-release/erubis.rb~
|
65
|
-
- lib/merbiful-release/relative_time.rb~
|
66
|
-
- lib/merbiful-release/relative_time.rb
|
49
|
+
- lib/merbiful-release/body.rb~
|
50
|
+
- lib/merbiful-release/controller.rb
|
67
51
|
- lib/merbiful-release/css.rb
|
68
|
-
- lib/merbiful-release/
|
52
|
+
- lib/merbiful-release/css.rb~
|
69
53
|
- lib/merbiful-release/erubis.rb
|
54
|
+
- lib/merbiful-release/erubis.rb~
|
70
55
|
- lib/merbiful-release/filters.rb
|
56
|
+
- lib/merbiful-release/filters.rb~
|
71
57
|
- lib/merbiful-release/haml.rb
|
58
|
+
- lib/merbiful-release/haml.rb~
|
72
59
|
- lib/merbiful-release/images.rb
|
73
|
-
- lib/merbiful-release.rb~
|
60
|
+
- lib/merbiful-release/images.rb~
|
61
|
+
- lib/merbiful-release/js.rb
|
62
|
+
- lib/merbiful-release/js.rb~
|
63
|
+
- lib/merbiful-release/layout.rb
|
64
|
+
- lib/merbiful-release/layout.rb~
|
65
|
+
- lib/merbiful-release/page.rb
|
66
|
+
- lib/merbiful-release/page.rb~
|
67
|
+
- lib/merbiful-release/relative_time.rb
|
68
|
+
- lib/merbiful-release/routes.rb
|
74
69
|
- lib/merbiful-release.rb
|
75
|
-
-
|
76
|
-
- templates/index.html.haml
|
77
|
-
- templates/admin_layout.html.haml~
|
78
|
-
- templates/pages.html.haml~
|
79
|
-
- templates/admin.css~
|
80
|
-
- templates/page_form.html.haml~
|
81
|
-
- templates/layouts.html.haml~
|
82
|
-
- templates/layouts.html.haml
|
83
|
-
- templates/admin_layout.html.rhtml~
|
84
|
-
- templates/css.html.haml~
|
85
|
-
- templates/js.html.haml~
|
86
|
-
- templates/js.html.haml
|
87
|
-
- templates/css.html.haml
|
70
|
+
- lib/merbiful-release.rb~
|
88
71
|
- templates/admin.css
|
72
|
+
- templates/admin.css~
|
89
73
|
- templates/admin_layout.html.haml
|
74
|
+
- templates/admin_layout.html.haml~
|
75
|
+
- templates/css.html.haml
|
90
76
|
- templates/css.html.haml.orig
|
77
|
+
- templates/css.html.haml~
|
91
78
|
- templates/images.html.haml
|
79
|
+
- templates/images.html.haml~
|
80
|
+
- templates/index.html.haml
|
81
|
+
- templates/js.html.haml
|
82
|
+
- templates/layouts.html.haml
|
92
83
|
- templates/page_form.html.haml
|
84
|
+
- templates/page_form.html.haml~
|
93
85
|
has_rdoc: true
|
94
86
|
homepage: ""
|
95
87
|
post_install_message:
|
@@ -1,78 +0,0 @@
|
|
1
|
-
module Merbiful
|
2
|
-
|
3
|
-
module RelativeTimeHelpers
|
4
|
-
mattr_accessor :time_class
|
5
|
-
mattr_accessor :time_output
|
6
|
-
|
7
|
-
self.time_class = Time
|
8
|
-
self.time_output = {
|
9
|
-
:today => 'today',
|
10
|
-
:yesterday => 'yesterday',
|
11
|
-
:tomorrow => 'tomorrow',
|
12
|
-
:initial_format => '%b %d',
|
13
|
-
:year_format => ', %Y'
|
14
|
-
}
|
15
|
-
|
16
|
-
def relative_date(time)
|
17
|
-
date = time.to_date
|
18
|
-
today = time_class.now.to_date
|
19
|
-
if date == today
|
20
|
-
time_output[:today]
|
21
|
-
elsif date == (today - 1)
|
22
|
-
time_output[:yesterday]
|
23
|
-
elsif date == (today + 1)
|
24
|
-
time_output[:tomorrow]
|
25
|
-
else
|
26
|
-
fmt = time_output[:initial_format].dup
|
27
|
-
fmt << time_output[:year_format] unless date.year == today.year
|
28
|
-
time.strftime_ordinalized(fmt)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def relative_date_span(times)
|
33
|
-
times = [times.first, times.last].collect!(&:to_date)
|
34
|
-
times.sort!
|
35
|
-
if times.first == times.last
|
36
|
-
relative_date(times.first)
|
37
|
-
else
|
38
|
-
first = times.first; last = times.last; now = time_class.now
|
39
|
-
[first.strftime_ordinalized('%b %d')].tap do |arr|
|
40
|
-
arr << ", #{first.year}" unless first.year == last.year
|
41
|
-
arr << ' - '
|
42
|
-
arr << last.strftime('%b') << ' ' unless first.year == last.year && first.month == last.month
|
43
|
-
arr << last.day.ordinalize
|
44
|
-
arr << ", #{last.year}" unless first.year == last.year && last.year == now.year
|
45
|
-
end.to_s
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
def relative_time_span(times)
|
50
|
-
times = [times.first, times.last].collect!(&:to_time)
|
51
|
-
times.sort!
|
52
|
-
if times.first == times.last
|
53
|
-
"#{prettier_time(times.first)} #{relative_date(times.first)}"
|
54
|
-
elsif times.first.to_date == times.last.to_date
|
55
|
-
same_half = (times.first.hour/12 == times.last.hour/12)
|
56
|
-
"#{prettier_time(times.first, !same_half)} - #{prettier_time(times.last)} #{relative_date(times.first)}"
|
57
|
-
|
58
|
-
else
|
59
|
-
first = times.first; last = times.last; now = time_class.now
|
60
|
-
[prettier_time(first)].tap do |arr|
|
61
|
-
arr << ' '
|
62
|
-
arr << first.strftime_ordinalized('%b %d')
|
63
|
-
arr << ", #{first.year}" unless first.year == last.year
|
64
|
-
arr << ' - '
|
65
|
-
arr << prettier_time(last)
|
66
|
-
arr << ' '
|
67
|
-
arr << last.strftime('%b') << ' ' unless first.year == last.year && first.month == last.month
|
68
|
-
arr << last.day.ordinalize
|
69
|
-
arr << ", #{last.year}" unless first.year == last.year && last.year == now.year
|
70
|
-
end.to_s
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
def prettier_time(time, ampm=true)
|
75
|
-
time.strftime("%I:%M#{" %p" if ampm}").sub(/^0/, '')
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
|
2
|
-
module Merbiful
|
3
|
-
|
4
|
-
class Page
|
5
|
-
|
6
|
-
class NoSuchFilterError < RuntimeError
|
7
|
-
end
|
8
|
-
|
9
|
-
include DataMapper::Resource
|
10
|
-
include DataMapper::Validate
|
11
|
-
include Merbiful::Body
|
12
|
-
|
13
|
-
validates_is_unique :version, :scope => [:path]
|
14
|
-
|
15
|
-
property :id, Serial
|
16
|
-
property :version, Integer, :index => true
|
17
|
-
property :body, DataMapper::Types::Text
|
18
|
-
property :filter, DataMapper::Types::Text
|
19
|
-
property :path, DataMapper::Types::Text, :index => true
|
20
|
-
property :position, Integer
|
21
|
-
property :created_at, DateTime
|
22
|
-
property :updated_at, DateTime
|
23
|
-
property :title, DataMapper::Types::Text
|
24
|
-
property :keywords, DataMapper::Types::Text
|
25
|
-
property :parent_path, DataMapper::Types::Text
|
26
|
-
property :layout_id, Integer
|
27
|
-
|
28
|
-
before :save do
|
29
|
-
if self.position.nil?
|
30
|
-
last_position = self.class.first(:parent_path => self.parent_path, :path.not => self.path)
|
31
|
-
if last_position.nil?
|
32
|
-
self.position = 0
|
33
|
-
else
|
34
|
-
self.position = last_position.position + 1
|
35
|
-
end
|
36
|
-
end
|
37
|
-
if self.path.nil?
|
38
|
-
self.path = "/"
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
42
|
-
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|
@@ -1,10 +0,0 @@
|
|
1
|
-
%html
|
2
|
-
%link{:href => url(:merbiful_admin_css), :rel => 'Stylesheet', :type => 'text/css'}
|
3
|
-
%body
|
4
|
-
%h1= link_to("Merbiful Release Administration Interface", url(:merbiful_admin_index))
|
5
|
-
%ul.menu
|
6
|
-
%li= link_to("Pages", url(:merbiful_admin, :action => "pages"))
|
7
|
-
%li= link_to("Layouts", url(:merbiful_admin, :action => "layouts"))
|
8
|
-
%li= link_to("Css", url(:merbiful_admin, :action => "css"))
|
9
|
-
%li= link_to("Js", url(:merbiful_admin, :action => "js"))
|
10
|
-
= catch_content :for_layout
|
data/templates/index.html.haml~
DELETED
File without changes
|
data/templates/pages.html.haml~
DELETED