togo 0.6.1 → 0.6.2

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.
@@ -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