kitsune 0.1.3 → 0.1.4
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/VERSION +1 -1
- data/app/controllers/kitsune_controller.rb +2 -1
- data/app/views/admin/kitsune/records/_form.html.haml +1 -1
- data/app/views/admin/kitsune/records/_list.html.haml +17 -15
- data/app/views/admin/kitsune/records/edit.html.haml +0 -6
- data/app/views/admin/kitsune/records/show.html.haml +11 -0
- data/kitsune.gemspec +3 -2
- data/lib/kitsune/active_record.rb +1 -0
- data/lib/kitsune/builder.rb +28 -0
- data/lib/kitsune/inspector.rb +26 -1
- data/lib/kitsune/page.rb +18 -5
- data/test/test_helper.rb +1 -1
- metadata +3 -2
data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.1.
|
|
1
|
+
0.1.4
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
class KitsuneController < ApplicationController
|
|
2
2
|
def show
|
|
3
|
-
@page = ::Page.find_by_url([params[:url]].flatten.join('/'))
|
|
3
|
+
@page = ::Page.find_by_url('/'+[params[:url]].flatten.join('/'))
|
|
4
|
+
raise ::ActionController::RoutingError, "No route matches #{request.path.inspect}" unless @page.present?
|
|
4
5
|
@title = @page.title
|
|
5
6
|
end
|
|
6
7
|
end
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
= link_to 'Current Version →', :version => nil
|
|
16
16
|
- @model.columns(:edit).each do |column|
|
|
17
17
|
.field
|
|
18
|
-
- unless params[column.name]
|
|
18
|
+
- unless params[column.name] && !@model.always?(column)
|
|
19
19
|
= form.label column.name
|
|
20
20
|
= form.send(@model.form_type(column), column.name, *@model.options_for(column))
|
|
21
21
|
= additional_content_for(@model, @record, column)
|
|
@@ -3,22 +3,24 @@
|
|
|
3
3
|
%tr
|
|
4
4
|
- model.columns(:display).each do |column|
|
|
5
5
|
%th= sort_link_to(model, column)
|
|
6
|
-
|
|
6
|
+
- unless model.disabled?(:edit) && model.disabled?(:delete)
|
|
7
|
+
%th Actions
|
|
7
8
|
%tbody
|
|
8
9
|
- records.each do |record|
|
|
9
10
|
%tr{:class=>cycle('odd', 'even')}
|
|
10
11
|
- model.columns(:display).each do |column|
|
|
11
|
-
%td= sanitize(model.display_for(record, column.name).to_s)
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
12
|
+
%td= model.column_linked?(column) ? link_to(sanitize(model.display_for(record, column.name).to_s), url_for(:controller => 'admin/kitsune/records', :action => :show, :model_id => model.object_class, :id => record.id)): sanitize(model.display_for(record, column.name).to_s)
|
|
13
|
+
- unless model.disabled?(:edit) && model.disabled?(:delete)
|
|
14
|
+
%td
|
|
15
|
+
- unless model.disabled?(:edit)
|
|
16
|
+
- if parent
|
|
17
|
+
= link_to 'Edit', :controller => 'admin/kitsune/records', :action => :edit, :model_id => model.object_class, :id => record.id, (parent.class.to_s.underscore+'_id').to_sym => parent.id
|
|
18
|
+
- else
|
|
19
|
+
= link_to 'Edit', :controller => 'admin/kitsune/records', :action => :edit, :model_id => model.object_class, :id => record.id
|
|
20
|
+
- unless model.disabled?(:edit) || model.disabled?(:delete)
|
|
21
|
+
\-
|
|
22
|
+
- unless model.disabled?(:delete)
|
|
23
|
+
- if parent
|
|
24
|
+
= link_to('Delete', url_for(:controller => 'admin/kitsune/records', :model_id => model.object_class, :id => record.id, :action => :destroy, :redirect => (parent.class.to_s.underscore+'_id'), :redirect_id => parent.id), :method => :delete, :confirm => "Are you sure?")
|
|
25
|
+
- else
|
|
26
|
+
= link_to('Delete', url_for(:controller => 'admin/kitsune/records', :model_id => model.object_class, :id => record.id, :action => :destroy), :method => :delete, :confirm => "Are you sure?")
|
|
@@ -4,9 +4,3 @@
|
|
|
4
4
|
= link_to 'Back', :controller => 'admin/kitsune/records', :model_id => params[:model_id]
|
|
5
5
|
|
|
6
6
|
= render 'form'
|
|
7
|
-
|
|
8
|
-
- @model.columns(:reflections).each do |column|
|
|
9
|
-
.reflection
|
|
10
|
-
%h3= column.name.to_s.titleize
|
|
11
|
-
= link_to 'New', :controller => 'admin/kitsune/records', :action => :new, :model_id => column.name.to_s.classify, (@record.class.to_s.underscore+'_id').to_sym => @record.id
|
|
12
|
-
= render :partial => 'list', :locals => { :model => Kitsune::Inspector.new(column.name.to_s.classify.constantize), :records => @record.send(column.name), :parent => @record }
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#kitsune_record_header
|
|
2
|
+
%h2.legend Show #{params[:model_id]}
|
|
3
|
+
%dl
|
|
4
|
+
- @model.columns(:show).each do |column|
|
|
5
|
+
%dt= column.name.capitalize
|
|
6
|
+
%dd= @record.send(column.name)
|
|
7
|
+
- @model.columns(:reflections).each do |column|
|
|
8
|
+
.reflection
|
|
9
|
+
%h3= column.name.to_s.titleize
|
|
10
|
+
= link_to 'New', :controller => 'admin/kitsune/records', :action => :new, :model_id => column.name.to_s.classify, (@record.class.to_s.underscore+'_id').to_sym => @record.id
|
|
11
|
+
= render :partial => 'list', :locals => { :model => Kitsune::Inspector.new(column.name.to_s.classify.constantize), :records => @record.send(column.name), :parent => @record }
|
data/kitsune.gemspec
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
|
|
6
6
|
Gem::Specification.new do |s|
|
|
7
7
|
s.name = %q{kitsune}
|
|
8
|
-
s.version = "0.1.
|
|
8
|
+
s.version = "0.1.4"
|
|
9
9
|
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
11
11
|
s.authors = ["toastyapps", "<matt@toastyapps.com>"]
|
|
12
|
-
s.date = %q{2010-01-
|
|
12
|
+
s.date = %q{2010-01-15}
|
|
13
13
|
s.description = %q{Integrated Rails Content Management System.}
|
|
14
14
|
s.email = %q{matt@toastyapps.com}
|
|
15
15
|
s.extra_rdoc_files = [
|
|
@@ -44,6 +44,7 @@ Gem::Specification.new do |s|
|
|
|
44
44
|
"app/views/admin/kitsune/records/edit.html.haml",
|
|
45
45
|
"app/views/admin/kitsune/records/index.html.haml",
|
|
46
46
|
"app/views/admin/kitsune/records/new.html.haml",
|
|
47
|
+
"app/views/admin/kitsune/records/show.html.haml",
|
|
47
48
|
"app/views/admin/kitsune/sessions/new.html.haml",
|
|
48
49
|
"app/views/admin/kitsune/shared/_flashes.html.haml",
|
|
49
50
|
"app/views/kitsune/show.html.erb",
|
data/lib/kitsune/builder.rb
CHANGED
|
@@ -25,6 +25,7 @@ module Kitsune
|
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def order_by(order)
|
|
28
|
+
order = {order => :asc} unless order.is_a?(Hash)
|
|
28
29
|
@resource.kitsune_admin[:order_by] = order
|
|
29
30
|
end
|
|
30
31
|
|
|
@@ -67,6 +68,20 @@ module Kitsune
|
|
|
67
68
|
end
|
|
68
69
|
end
|
|
69
70
|
|
|
71
|
+
def always(*fields)
|
|
72
|
+
@resource.kitsune_admin[:always] ||= []
|
|
73
|
+
fields.each do |field|
|
|
74
|
+
@resource.kitsune_admin[:always] << field.to_sym
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def linked(*fields) # link to resource
|
|
79
|
+
@resource.kitsune_admin[:linked] ||= []
|
|
80
|
+
fields.each do |field|
|
|
81
|
+
@resource.kitsune_admin[:linked] << field.to_sym
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
70
85
|
def file(field)
|
|
71
86
|
add :file_field, field
|
|
72
87
|
multipart
|
|
@@ -121,6 +136,19 @@ module Kitsune
|
|
|
121
136
|
end
|
|
122
137
|
end
|
|
123
138
|
|
|
139
|
+
def show(*fields)
|
|
140
|
+
fields.each do |field|
|
|
141
|
+
if field.is_a?(Hash)
|
|
142
|
+
field.each do |key, value|
|
|
143
|
+
set :show, key
|
|
144
|
+
set_attributes(key, value)
|
|
145
|
+
end
|
|
146
|
+
else
|
|
147
|
+
set :show, field
|
|
148
|
+
end
|
|
149
|
+
end
|
|
150
|
+
end
|
|
151
|
+
|
|
124
152
|
def set_attributes(field, attributes)
|
|
125
153
|
[attributes].flatten.each do |attribute|
|
|
126
154
|
send(attribute.to_sym, field)
|
data/lib/kitsune/inspector.rb
CHANGED
|
@@ -67,7 +67,7 @@ module Kitsune
|
|
|
67
67
|
else
|
|
68
68
|
kolumns = send("columns_for_#{type}") if respond_to?("columns_for_#{type}")
|
|
69
69
|
end
|
|
70
|
-
include_pk ? kolumns : kolumns.reject{|c| c.primary }
|
|
70
|
+
include_pk ? kolumns : (kolumns || []).reject{|c| c.primary }
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
def columns_for_edit
|
|
@@ -102,6 +102,21 @@ module Kitsune
|
|
|
102
102
|
end
|
|
103
103
|
end
|
|
104
104
|
|
|
105
|
+
def columns_for_show
|
|
106
|
+
columns = @object.columns.dup
|
|
107
|
+
if kitsune_admin[:show] && kitsune_admin[:show][:fields]
|
|
108
|
+
columns = columns.select{|c| kitsune_admin[:show][:fields].include?(c.name.to_sym)}
|
|
109
|
+
column_names = columns.map{|c| c.name.to_sym}
|
|
110
|
+
fields_to_add = kitsune_admin[:show][:fields].reject{|f| column_names.include?(f)}
|
|
111
|
+
fields_to_add.each do |field|
|
|
112
|
+
columns << Kitsune::FauxColumn.new(field, :string)
|
|
113
|
+
end
|
|
114
|
+
columns
|
|
115
|
+
else
|
|
116
|
+
columns
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
|
|
105
120
|
def columns_for_reflections
|
|
106
121
|
if kitsune_admin[:reflections] && kitsune_admin[:reflections][:fields]
|
|
107
122
|
kitsune_admin[:reflections][:fields].map do |field|
|
|
@@ -117,6 +132,16 @@ module Kitsune
|
|
|
117
132
|
kitsune_admin[:sortable] && kitsune_admin[:sortable].include?(column.name.to_sym)
|
|
118
133
|
end
|
|
119
134
|
|
|
135
|
+
def always?(column)
|
|
136
|
+
# move to column proxy
|
|
137
|
+
kitsune_admin[:always] && kitsune_admin[:always].include?(column.name.to_sym)
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def column_linked?(column)
|
|
141
|
+
# move to column proxy
|
|
142
|
+
kitsune_admin[:linked] && kitsune_admin[:linked].include?(column.name.to_sym)
|
|
143
|
+
end
|
|
144
|
+
|
|
120
145
|
def method_missing(method, *args, &block)
|
|
121
146
|
@object.send(method, *args, &block)
|
|
122
147
|
end
|
data/lib/kitsune/page.rb
CHANGED
|
@@ -3,19 +3,32 @@ module Kitsune
|
|
|
3
3
|
def self.included(model)
|
|
4
4
|
model.class_eval do
|
|
5
5
|
admin do
|
|
6
|
+
display :title, :layout, :parent_id, :url
|
|
6
7
|
wysiwyg :body
|
|
7
|
-
select :layout, Proc.new {Dir.glob(File.join(RAILS_ROOT, 'app', 'views', 'layouts', '*.html
|
|
8
|
+
select :layout, Proc.new {Dir.glob(File.join(RAILS_ROOT, 'app', 'views', 'layouts', '*.html.*')).map{|f| File.basename(f).split('.').first}}
|
|
8
9
|
end
|
|
9
10
|
|
|
10
11
|
before_save :update_url
|
|
11
12
|
belongs_to :page, :foreign_key => "parent_id"
|
|
12
13
|
belongs_to :parent, :class_name => 'Page'
|
|
14
|
+
validate :must_be_kitsune_route
|
|
15
|
+
validates_uniqueness_of :url
|
|
16
|
+
|
|
17
|
+
def title_for_url
|
|
18
|
+
CGI.escape(title.downcase.gsub(/\s+/, '-')).squeeze('-')
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def url_for_page
|
|
22
|
+
parent ? parent.url_for_page + '/' + title_for_url : '/' + title_for_url
|
|
23
|
+
end
|
|
13
24
|
|
|
14
25
|
def update_url
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
26
|
+
write_attribute :url, (url.present? ? url : url_for_page)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def must_be_kitsune_route
|
|
30
|
+
unless ActionController::Routing::Routes.recognize_path(url.present? ? url : url_for_page)[:controller] == 'kitsune'
|
|
31
|
+
errors.add_to_base("URL is already being used")
|
|
19
32
|
end
|
|
20
33
|
end
|
|
21
34
|
end
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: kitsune
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- toastyapps
|
|
@@ -10,7 +10,7 @@ autorequire:
|
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
12
|
|
|
13
|
-
date: 2010-01-
|
|
13
|
+
date: 2010-01-15 00:00:00 -05:00
|
|
14
14
|
default_executable:
|
|
15
15
|
dependencies:
|
|
16
16
|
- !ruby/object:Gem::Dependency
|
|
@@ -70,6 +70,7 @@ files:
|
|
|
70
70
|
- app/views/admin/kitsune/records/edit.html.haml
|
|
71
71
|
- app/views/admin/kitsune/records/index.html.haml
|
|
72
72
|
- app/views/admin/kitsune/records/new.html.haml
|
|
73
|
+
- app/views/admin/kitsune/records/show.html.haml
|
|
73
74
|
- app/views/admin/kitsune/sessions/new.html.haml
|
|
74
75
|
- app/views/admin/kitsune/shared/_flashes.html.haml
|
|
75
76
|
- app/views/kitsune/show.html.erb
|