togo 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -23,20 +23,20 @@ module Helpers
23
23
  end
24
24
 
25
25
  def column_head_link(property, current_order, qs = {})
26
- qs = hash_to_qs(qs)
27
- new_order = (current_order[0] == property.name.to_sym ? (current_order[1] == :asc ? "desc" : "asc") : "asc")
28
- link_class = current_order[0] == property.name.to_sym ? new_order : ''
29
- "<a href=\"?o=#{[(property.name.to_s+'.'+new_order.to_s),qs].compact.join('&')}\" class=\"#{link_class}\">#{property.name.to_s.humanize.titleize}</a>"
26
+ if property.sortable
27
+ qs = hash_to_qs(qs)
28
+ new_order = (current_order[0] == property.name ? (current_order[1] == :asc ? "desc" : "asc") : "asc")
29
+ link_class = current_order[0] == property.name ? new_order : ''
30
+ "<a href=\"?o=#{[(property.name.to_s+'.'+new_order.to_s),qs].compact.join('&')}\" class=\"#{link_class}\">#{property.label}</a>"
31
+ else
32
+ property.label
33
+ end
30
34
  end
31
35
 
32
36
  def partial(template, options={})
33
37
  erb template, options.merge(:layout => false)
34
38
  end
35
39
 
36
- def active_menu(name)
37
- request.path =~ /#{name}/ ? 'active' : ''
38
- end
39
-
40
40
  def logged_in?
41
41
  return true if not config[:auth_model] or not config[:sessions]
42
42
  config[:auth_model] and session[:user] and session[:user].authenticated?
@@ -34,7 +34,8 @@
34
34
  <tr>
35
35
  <td class="checkbox"><input type="checkbox" name="selection[<%= c.id %>]" value="1" id="selection_<%= c.id %>" /></td>
36
36
  <% @model.get_list_properties.each_with_index do |p,i| %>
37
- <td><% if i == 0 %><a href="/edit/<%= @model.name %>/<%= c.id %>"><%= c.send(p.name.to_sym) || '-' %></a><% else %><%= c.send(p.name.to_sym) %><% end %></td>
37
+ <% v = c.send(p.name.to_sym) || '-' %>
38
+ <td><% if i == 0 %><a href="/edit/<%= @model.name %>/<%= c.id %>"><%= v %></a><% else %><%= v %><% end %></td>
38
39
  <% end %>
39
40
  </tr>
40
41
  <% end %>
@@ -2,6 +2,7 @@ require 'erubis/tiny'
2
2
  %w( relationship_manager many_to_one one_to_many ).each{|l|
3
3
  require "togo/model/relationship_manager/#{l}"
4
4
  }
5
+ require 'togo/model/property_wrapper/property_wrapper'
5
6
 
6
7
  module Togo
7
8
  module DataMapper
@@ -44,7 +45,7 @@ module Togo
44
45
 
45
46
  # Display the form template for a property
46
47
  def form_for(property,content)
47
- template = class_variable_get(:@@custom_form_templates)[property.name] || File.join(File.dirname(__FILE__),'types',"#{type_from_property(property)}.erb")
48
+ template = class_variable_get(:@@custom_form_templates)[property.name] || File.join(File.dirname(__FILE__),'types',"#{property.type}.erb")
48
49
  Erubis::TinyEruby.new(File.open(template).read).result(binding)
49
50
  end
50
51
 
@@ -95,7 +96,7 @@ module Togo
95
96
  end
96
97
 
97
98
  def field_class_for(property)
98
- type_from_property(property)
99
+ property.type
99
100
  end
100
101
 
101
102
  def get_list_properties
@@ -131,10 +132,32 @@ module Togo
131
132
  end
132
133
  end
133
134
 
135
+ def model_from_property(property)
136
+ case property
137
+ when ::DataMapper::Property
138
+ property.model
139
+ when ::DataMapper::Associations::ManyToMany::Relationship
140
+ property.child_model
141
+ when ::DataMapper::Associations::ManyToOne::Relationship
142
+ property.parent_model
143
+ when ::DataMapper::Associations::OneToMany::Relationship
144
+ property.child_model
145
+ else
146
+ self
147
+ end
148
+ end
149
+
150
+ def sorting_from_property(property)
151
+ property.is_a?(::DataMapper::Property)
152
+ end
153
+
134
154
  def pick_properties(selection, args)
135
155
  if class_variable_get(:"@@#{selection}_properties").empty?
136
156
  args = shown_properties.map{|p| p.name} if args.empty?
137
- class_variable_set(:"@@#{selection}_properties", args.collect{|a| shown_properties.select{|s| s.name == a}.first}.compact)
157
+ class_variable_set(:"@@#{selection}_properties", args.collect{|a|
158
+ p = shown_properties.select{|s| s.name == a}.first
159
+ PropertyWrapper.new({:property => p, :name => a, :type => type_from_property(p), :model => model_from_property(p), :sortable => sorting_from_property(p)})
160
+ }.compact)
138
161
  end
139
162
  class_variable_get(:"@@#{selection}_properties")
140
163
  end
@@ -0,0 +1,21 @@
1
+ class PropertyWrapper
2
+
3
+ attr_reader :name, :type, :model, :sortable
4
+
5
+ def initialize(opts = {})
6
+ @name = (opts[:property] ? opts[:property].name : opts[:name]).to_sym
7
+ @model = opts[:model]
8
+ @type = opts[:type]
9
+ @sortable = opts[:sortable] || false
10
+ end
11
+
12
+ def humanized_name
13
+ @name.to_s.humanize.titleize rescue @name
14
+ end
15
+
16
+ def label
17
+ puts @model.property_options.inspect
18
+ @model.property_options[@name][:label] rescue humanized_name
19
+ end
20
+
21
+ end
@@ -1,7 +1,7 @@
1
- <% content_count = content.send(property.name.to_sym).blank? ? 0 : 1 %>
2
- <% related_content = [content.send(property.name.to_sym)].compact %>
1
+ <% content_count = content.send(property.name).blank? ? 0 : 1 %>
2
+ <% related_content = [content.send(property.name)].compact %>
3
3
  <% related_ids = related_content.map(&:id) %>
4
- <% related_model = property.parent_model %>
4
+ <% related_model = property.model %>
5
5
  <input type="hidden" name="related_<%= property.name %>" class="related_ids" value="unset" />
6
6
  <label for="<%= property.name %>"><%= related_model.display_name %></label>
7
7
  <div class="search" id="search-<%= related_model.name %>">
@@ -17,7 +17,7 @@
17
17
  <tr>
18
18
  <th class="checkbox">&nbsp;</th>
19
19
  <% related_model.get_list_properties.each do |p| %>
20
- <th><%= p.name.to_s.humanize.titleize %></th>
20
+ <th><%= p.humanized_name %></th>
21
21
  <% end %>
22
22
  </tr>
23
23
  </thead>
@@ -42,7 +42,8 @@
42
42
  <tr>
43
43
  <td class="checkbox"><input type="radio" name="selection[<%= c.id %>]" value="<%= c.id %>" id="selection_<%= related_model.name %>_<%= c.id %>" checked="checked" /></td>
44
44
  <% related_model.get_list_properties.each_with_index do |p,i| %>
45
- <td><% if i == 0 %><a href="/edit/<%= related_model.name %>/<%= c.id %>"><%= c.send(p.name.to_sym) || '-' %></a><% else %><%= c.send(p.name.to_sym) %><% end %></td>
45
+ <% v = c.send(p.name) || '-' %>
46
+ <td><% if i == 0 %><a href="/edit/<%= related_model.name %>/<%= c.id %>"><%= v || '-' %></a><% else %><%= v %><% end %></td>
46
47
  <% end %>
47
48
  </tr>
48
49
  <% end %>
@@ -1,3 +1,3 @@
1
- <label><%= property.name.to_s.humanize.titleize %></label>
2
- <input type="radio" name="<%= property.name %>" id="<%= property.name %>_true" value="1" <% if content.send(property.name.to_sym) %> checked="checked"<% end %>/> <label class="inline" for="<%= property.name %>_true">Yes</label>
3
- <input type="radio" name="<%= property.name %>" id="<%= property.name %>_false" value="0" <% if not content.send(property.name.to_sym) %> checked="checked"<% end %>/> <label class="inline" for="<%= property.name %>_false">No</label>
1
+ <label><%= property.label %></label>
2
+ <input type="radio" name="<%= property.name %>" id="<%= property.name %>_true" value="1" <% if content.send(property.name) %> checked="checked"<% end %>/> <label class="inline" for="<%= property.name %>_true">Yes</label>
3
+ <input type="radio" name="<%= property.name %>" id="<%= property.name %>_false" value="0" <% if not content.send(property.name) %> checked="checked"<% end %>/> <label class="inline" for="<%= property.name %>_false">No</label>
@@ -1,2 +1,2 @@
1
- <label for="<%= property.name %>"><%= property.model.property_options[property.name][:label] rescue property.name.to_s.humanize.titleize %></label>
2
- <input type="text" name="<%= property.name %>" id="<%= property.name %>" value="<%= (content.send(property.name.to_sym) || Time.now).strftime("%B %d, %Y %I:%M%p") %>" />
1
+ <label for="<%= property.name %>"><%= property.label %></label>
2
+ <input type="text" name="<%= property.name %>" id="<%= property.name %>" value="<%= (content.send(property.name) || Time.now).strftime("%B %d, %Y %I:%M%p") %>" />
@@ -1,2 +1,2 @@
1
- <label for="<%= property.name %>"><%= property.model.property_options[property.name][:label] rescue property.name.to_s.humanize.titleize %></label>
2
- <input type="text" name="<%= property.name %>" id="<%= property.name %>" value="<%= content.send(property.name.to_sym) %>" />
1
+ <label for="<%= property.name %>"><%= property.label %></label>
2
+ <input type="text" name="<%= property.name %>" id="<%= property.name %>" value="<%= content.send(property.name) %>" />
@@ -1,7 +1,7 @@
1
- <% content_count = content.send(property.name.to_sym).size %>
2
- <% related_ids = content.send(property.name.to_sym).map(&:id) %>
3
- <% related_content = content.send(property.name.to_sym)[0...10] %>
4
- <% related_model = property.child_model %>
1
+ <% content_count = content.send(property.name).size %>
2
+ <% related_ids = content.send(property.name).map(&:id) %>
3
+ <% related_content = content.send(property.name)[0...10] %>
4
+ <% related_model = property.model %>
5
5
  <input type="hidden" name="related_<%= property.name %>" class="related_ids" value="unset" />
6
6
  <label for="<%= property.name %>"><%= related_model.display_name %></label>
7
7
  <div class="search" id="search-<%= related_model.name %>">
@@ -17,7 +17,7 @@
17
17
  <tr>
18
18
  <th class="checkbox">&nbsp;</th>
19
19
  <% related_model.get_list_properties.each do |p| %>
20
- <th><%= p.name.to_s.humanize.titleize %></th>
20
+ <th><%= p.humanized_name %></th>
21
21
  <% end %>
22
22
  </tr>
23
23
  </thead>
@@ -44,7 +44,8 @@
44
44
  <tr>
45
45
  <td class="checkbox"><input type="checkbox" name="selection[<%= c.id %>]" value="<%= c.id %>" id="selection_<%= related_model.name %>_<%= c.id %>" checked="checked" /></td>
46
46
  <% related_model.get_list_properties.each_with_index do |p,i| %>
47
- <td><% if i == 0 %><a href="/edit/<%= related_model.name %>/<%= c.id %>"><%= c.send(p.name.to_sym) || '-' %></a><% else %><%= c.send(p.name.to_sym) %><% end %></td>
47
+ <% v = c.send(p.name) || '-' %>
48
+ <td><% if i == 0 %><a href="/edit/<%= related_model.name %>/<%= c.id %>"><%= v %></a><% else %><%= v %><% end %></td>
48
49
  <% end %>
49
50
  </tr>
50
51
  <% end %>
@@ -1,2 +1,2 @@
1
- <label for="<%= property.name %>"><%= property.model.property_options[property.name][:label] rescue property.name.to_s.humanize.titleize %></label>
2
- <input type="text" name="<%= property.name %>" id="<%= property.name %>" value="<%= content.send(property.name.to_sym) %>" />
1
+ <label for="<%= property.name %>"><%= property.label %></label>
2
+ <input type="text" name="<%= property.name %>" id="<%= property.name %>" value="<%= content.send(property.name) %>" />
@@ -1,7 +1,7 @@
1
- <% content_count = content.send(property.name.to_sym).size %>
2
- <% related_ids = content.send(property.name.to_sym).map(&:id) %>
3
- <% related_content = content.send(property.name.to_sym)[0...10] %>
4
- <% related_model = property.child_model %>
1
+ <% content_count = content.send(property.name).size %>
2
+ <% related_ids = content.send(property.name).map(&:id) %>
3
+ <% related_content = content.send(property.name)[0...10] %>
4
+ <% related_model = property.model %>
5
5
  <input type="hidden" name="related_<%= property.name %>" class="related_ids" value="unset" />
6
6
  <label for="<%= property.name %>"><%= related_model.display_name %></label>
7
7
  <div class="search" id="search-<%= related_model.name %>">
@@ -17,7 +17,7 @@
17
17
  <tr>
18
18
  <th class="checkbox">&nbsp;</th>
19
19
  <% related_model.get_list_properties.each do |p| %>
20
- <th><%= p.name.to_s.humanize.titleize %></th>
20
+ <th><%= p.humanized_name %></th>
21
21
  <% end %>
22
22
  </tr>
23
23
  </thead>
@@ -44,7 +44,8 @@
44
44
  <tr>
45
45
  <td class="checkbox"><input type="checkbox" name="selection[<%= c.id %>]" value="<%= c.id %>" id="selection_<%= related_model.name %>_<%= c.id %>" checked="checked" /></td>
46
46
  <% related_model.get_list_properties.each_with_index do |p,i| %>
47
- <td><% if i == 0 %><a href="/edit/<%= related_model.name %>/<%= c.id %>"><%= c.send(p.name.to_sym) || '-' %></a><% else %><%= c.send(p.name.to_sym) %><% end %></td>
47
+ <% v = c.send(p.name) || '-' %>
48
+ <td><% if i == 0 %><a href="/edit/<%= related_model.name %>/<%= c.id %>"><%= v %></a><% else %><%= v %><% end %></td>
48
49
  <% end %>
49
50
  </tr>
50
51
  <% end %>
@@ -1,2 +1,2 @@
1
- <label for="<%= property.name %>"><%= property.model.property_options[property.name][:label] rescue property.name.to_s.humanize.titleize %></label>
2
- <input type="text" name="<%= property.name %>" id="<%= property.name %>" value="<%= content.send(property.name.to_sym) %>" />
1
+ <label for="<%= property.name %>"><%= property.label %></label>
2
+ <input type="text" name="<%= property.name %>" id="<%= property.name %>" value="<%= content.send(property.name) %>" />
@@ -1,2 +1,2 @@
1
- <label for="<%= property.name %>"><%= property.model.property_options[property.name][:label] rescue property.name.to_s.humanize.titleize %></label>
2
- <textarea name="<%= property.name %>" id="<%= property.name %>" rows="10" cols="50"><%= content.send(property.name.to_sym) %></textarea>
1
+ <label for="<%= property.name %>"><%= property.label %></label>
2
+ <textarea name="<%= property.name %>" id="<%= property.name %>" rows="10" cols="50"><%= content.send(property.name) %></textarea>
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: togo
3
3
  version: !ruby/object:Gem::Version
4
- hash: 5
4
+ hash: 3
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 6
9
- - 1
10
- version: 0.6.1
9
+ - 2
10
+ version: 0.6.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Matt King
@@ -15,29 +15,13 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-11-17 00:00:00 -08:00
18
+ date: 2010-11-18 00:00:00 -08:00
19
19
  default_executable:
20
20
  dependencies:
21
- - !ruby/object:Gem::Dependency
22
- name: dm-core
23
- prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ">"
28
- - !ruby/object:Gem::Version
29
- hash: 53
30
- segments:
31
- - 0
32
- - 10
33
- - 1
34
- version: 0.10.1
35
- type: :runtime
36
- version_requirements: *id001
37
21
  - !ruby/object:Gem::Dependency
38
22
  name: erubis
39
23
  prerelease: false
40
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ requirement: &id001 !ruby/object:Gem::Requirement
41
25
  none: false
42
26
  requirements:
43
27
  - - ">"
@@ -49,8 +33,8 @@ dependencies:
49
33
  - 0
50
34
  version: 0.0.0
51
35
  type: :runtime
52
- version_requirements: *id002
53
- description: With a few lines of code in your Ruby ORMs, you get a highly configurable and extensive content administration tool.
36
+ version_requirements: *id001
37
+ description: With a few lines of code in your Ruby ORMs, you get a highly configurable and extensive content management tool (CMS).
54
38
  email: matt@mking.me
55
39
  executables:
56
40
  - togo-admin
@@ -95,6 +79,7 @@ files:
95
79
  - lib/togo/dispatch/dispatch.rb
96
80
  - lib/togo/dispatch.rb
97
81
  - lib/togo/model/model.rb
82
+ - lib/togo/model/property_wrapper/property_wrapper.rb
98
83
  - lib/togo/model/relationship_manager/many_to_one.rb
99
84
  - lib/togo/model/relationship_manager/one_to_many.rb
100
85
  - lib/togo/model/relationship_manager/relationship_manager.rb
@@ -147,6 +132,6 @@ rubyforge_project:
147
132
  rubygems_version: 1.3.7
148
133
  signing_key:
149
134
  specification_version: 3
150
- summary: Automatic Content Admin Tool for Ruby ORMs
135
+ summary: CMS Framework for Ruby ORMs
151
136
  test_files: []
152
137