maiha-merb_inspector 0.1 → 0.2

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -4,12 +4,12 @@ require 'rake/gempackagetask'
4
4
  require 'merb-core'
5
5
  require 'merb-core/tasks/merb'
6
6
 
7
- GEM_NAME = "merb_inspector"
8
- GEM_VERSION = "0.0.1"
9
- AUTHOR = "Your Name"
10
- EMAIL = "Your Email"
11
- HOMEPAGE = "http://merbivore.com/"
12
- SUMMARY = "Merb plugin that provides ..."
7
+ GEM_NAME = "merb_inspector"
8
+ GEM_VERSION = "0.2"
9
+ AUTHOR = "Maiha"
10
+ EMAIL = "maiha@wota.jp"
11
+ HOMEPAGE = "http://github.com/maiha/merb_inspector"
12
+ SUMMARY = "Merb plugin that provides powerful 'inspect' helper method"
13
13
 
14
14
  spec = Gem::Specification.new do |s|
15
15
  s.rubyforge_project = 'merb'
@@ -23,7 +23,7 @@ spec = Gem::Specification.new do |s|
23
23
  s.author = AUTHOR
24
24
  s.email = EMAIL
25
25
  s.homepage = HOMEPAGE
26
- s.add_dependency('merb', '>= 1.0.6.1')
26
+ s.add_dependency('merb', '>= 1.0.7')
27
27
  s.require_path = 'lib'
28
28
  s.files = %w(LICENSE README Rakefile TODO) + Dir.glob("{lib,spec}/**/*")
29
29
 
@@ -1,10 +1,19 @@
1
1
  module Merb
2
- module Inspector
2
+ class Inspector
3
3
  module Helper
4
4
  def inspect(object = nil, options = {})
5
5
  return super() unless object
6
- inspector = Merb::Inspector.lookup(object) || Merb::Inspector.default
7
- inspector.new(object, self, options).execute
6
+
7
+ options = {:action=>options} if options.is_a?(Symbol)
8
+ action = options[:action] || :show
9
+ inspector = (Manager.lookup(object) || Merb::Inspector.default).new(Merb::Request.new({}))
10
+
11
+ if inspector.respond_to?(action)
12
+ inspector.send action, object, options
13
+ else
14
+ message = "%s doesn't recognize '%s' action" % [inspector.class, action]
15
+ raise Merb::Inspector::ActionNotFound, message
16
+ end
8
17
  end
9
18
 
10
19
  def column_header(p)
@@ -19,7 +28,7 @@ module Merb
19
28
 
20
29
  def column_form(record, p)
21
30
  # first, search class prefixed method that user override
22
- method = "#{record.class.name.demodulize}_#{p.name}_form"
31
+ method = "#{Extlib::Inflection.demodulize(record.class.name)}_#{p.name}_form"
23
32
  return send(method, record, p) if respond_to?(method, true)
24
33
 
25
34
  # second, search method that user override
@@ -27,29 +36,14 @@ module Merb
27
36
  return send(method, record, p) if respond_to?(method, true)
28
37
 
29
38
  # second, guess form from property type
30
- if p.type == DataMapper::Types::Serial
39
+ if p.type == ::DataMapper::Types::Serial
31
40
  record.send p.name
32
- elsif p.type == DataMapper::Types::Text
41
+ elsif p.type == ::DataMapper::Types::Text
33
42
  text_area p.name
34
43
  else
35
44
  text_field p.name
36
45
  end
37
46
  end
38
-
39
- ######################################################################
40
- ### Patch for broken merb methods
41
-
42
- def xxx_form_for(name, attrs = {}, &blk)
43
- if !attrs[:action] and defined?(DataMapper::Resource) and name.is_a?(DataMapper::Resource)
44
- if name.new_record?
45
- model = name.class.name.demodulize.snake_case.pluralize.intern
46
- attrs[:action] = resource(model, :new)
47
- else
48
- attrs[:action] = resource(name)
49
- end
50
- end
51
- super(name, attrs, &blk)
52
- end
53
47
  end
54
48
  end
55
49
  end
@@ -1,87 +1,77 @@
1
1
  module Merb
2
- # A convinient way to get at Merb::Cache
3
- def self.inspector
4
- Merb::Inspector
5
- end
2
+ class Inspector < Application
3
+ ######################################################################
4
+ ### for exceptins
6
5
 
7
- module Inspector
6
+ class Merb::Inspector::ActionNotFound < Merb::ControllerExceptions::ActionNotFound; end
7
+
8
+ ######################################################################
9
+ ### for module
8
10
 
9
11
  def self.root
10
- @root ||= File.expand_path(File.dirname(__FILE__) + "/../../")
12
+ @root ||= Pathname(File.expand_path(File.dirname(__FILE__) + "/../../"))
11
13
  end
12
14
 
13
15
  def self.default
14
- Merb::Inspectors::Base
16
+ Inspector
15
17
  end
16
18
 
17
- class << self
18
- attr_accessor :stores
19
- attr_accessor :caches
19
+ def self.log(message)
20
+ path = Merb.root / "log" / "inspector.log"
21
+ message = "[Inspector] %s" % message.to_s.strip
22
+ File.open(path, "a+") {|f| f.puts message}
20
23
  end
21
24
 
22
- self.stores = Hash.new
23
- self.caches = Hash.new
24
-
25
- def self.reset
26
- @caches = Hash.new
25
+ def self.model(model, inspector = self)
26
+ Merb::Inspector::Manager.register(model, inspector)
27
27
  end
28
28
 
29
- def self.register(klass, inspector)
30
- raise "#{klass} inspector already setup" if @stores.has_key?(klass)
31
- @stores[klass] = inspector
32
- log "registered %s -> %s" % [klass, inspector]
29
+ ######################################################################
30
+ ### for class
31
+
32
+ def show(object, options = {})
33
+ @object = object
34
+ @options = options
35
+
36
+ execute
33
37
  end
34
38
 
35
- def self.lookup(object)
36
- if @caches.has_key?(object.class)
37
- log "lookup: %s => %s (cached)" % [object.class, @caches[object.class] || 'nil']
38
- return @caches[object.class]
39
+ private
40
+ def name
41
+ self.class.name.sub(/^Merb::/,'').sub(/Inspector$/,'').snake_case.gsub(/::/, '/')
39
42
  end
40
- klass = object.class.ancestors.find{|klass|
41
- log "lookup: %s = %s ... %s" % [object.class, klass, @stores[klass]]
42
- @stores.has_key?(klass)
43
- }
44
- @caches[object.class] = @stores[klass]
45
- if klass
46
- log "lookup: %s => %s (registered)" % [object.class, @caches[object.class]]
47
- else
48
- log "lookup: %s => nil (registered as negative cache)" % [object.class]
43
+
44
+ def dir
45
+ Merb::Inspector.root + "templates" + name
49
46
  end
50
- return @stores[klass]
51
- end
52
47
 
53
- def self.log(message)
54
- path = Merb.root / "log" / "inspector.log"
55
- message = "[Inspector] %s" % message.to_s.strip
56
- File.open(path, "a+") {|f| f.puts message}
57
- end
48
+ def template_for(name)
49
+ dir + name.to_s
50
+ end
58
51
 
59
- ######################################################################
60
- ### Install
52
+ def execute
53
+ partial template_for(template), current_options
54
+ end
61
55
 
62
- def self.install
63
- mirror("public/stylesheets")
64
- end
56
+ def template
57
+ :default
58
+ end
65
59
 
66
- def self.mirror(dir)
67
- source_dir = File.join(File.dirname(__FILE__), '..', '..', 'mirror', dir)
68
- target_dir = File.join(Merb.root, dir)
69
- FileUtils.mkdir_p(target_dir) unless File.exist?(target_dir)
70
-
71
- Dir[source_dir + "/*"].each do |src|
72
- time = File.mtime(src)
73
- file = File.basename(src)
74
- dst = File.join(target_dir, file)
75
-
76
- next if File.directory?(src)
77
- next if File.exist?(dst) and File.mtime(dst) >= time
78
- FileUtils.copy(src, dst)
79
- File.utime(time, time, dst)
80
- command = File.exist?(dst) ? "update" : "install"
81
- log "#{command}: #{dir}/#{file}"
60
+ def current_options
61
+ basic_options.merge(options)
82
62
  end
83
- end
84
63
 
64
+ def options
65
+ {}
66
+ end
67
+
68
+ def basic_options
69
+ {:inspector=>self, :options=>@options, :dir=>dir, :id=>@object.object_id}
70
+ end
71
+ end
72
+
73
+ def self.inspector
74
+ Merb::Inspector
85
75
  end
86
76
  end
87
77
 
@@ -0,0 +1,76 @@
1
+ module Merb
2
+ class Inspector
3
+ module Manager
4
+ ######################################################################
5
+ ### for module
6
+
7
+ class << self
8
+ attr_accessor :stores
9
+ attr_accessor :caches
10
+ end
11
+
12
+ self.stores = Hash.new
13
+ self.caches = Hash.new
14
+
15
+ def self.reset
16
+ self.caches = Hash.new
17
+ end
18
+
19
+ def self.register(klass, inspector)
20
+ raise "#{klass} inspector already setup" if stores.has_key?(klass)
21
+ stores[klass] = inspector
22
+ log "registered %s -> %s" % [klass, inspector]
23
+ end
24
+
25
+ def self.lookup(object)
26
+ if caches.has_key?(object.class)
27
+ log "lookup: %s => %s (cached)" % [object.class, caches[object.class] || 'nil']
28
+ return caches[object.class]
29
+ end
30
+ klass = object.class.ancestors.find{|klass|
31
+ log "lookup: %s = %s ... %s" % [object.class, klass, stores[klass]]
32
+ stores.has_key?(klass)
33
+ }
34
+ caches[object.class] = stores[klass]
35
+ if klass
36
+ log "lookup: %s => %s (registered)" % [object.class, caches[object.class]]
37
+ else
38
+ log "lookup: %s => nil (registered as negative cache)" % [object.class]
39
+ end
40
+ return stores[klass]
41
+ end
42
+
43
+ def self.log(message)
44
+ path = Merb.root / "log" / "inspector.log"
45
+ message = "[Inspector] %s" % message.to_s.strip
46
+ File.open(path, "a+") {|f| f.puts message}
47
+ end
48
+
49
+ ######################################################################
50
+ ### Install
51
+
52
+ def self.install
53
+ mirror("public/stylesheets")
54
+ end
55
+
56
+ def self.mirror(dir)
57
+ source_dir = File.join(File.dirname(__FILE__), '..', '..', 'mirror', dir)
58
+ target_dir = File.join(Merb.root, dir)
59
+ FileUtils.mkdir_p(target_dir) unless File.exist?(target_dir)
60
+
61
+ Dir[source_dir + "/*"].each do |src|
62
+ time = File.mtime(src)
63
+ file = File.basename(src)
64
+ dst = File.join(target_dir, file)
65
+
66
+ next if File.directory?(src)
67
+ next if File.exist?(dst) and File.mtime(dst) >= time
68
+ FileUtils.copy(src, dst)
69
+ File.utime(time, time, dst)
70
+ command = File.exist?(dst) ? "update" : "install"
71
+ log "#{command}: #{dir}/#{file}"
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -3,15 +3,6 @@ if defined?(Merb::Plugins)
3
3
 
4
4
  $: << File.dirname(__FILE__) unless $:.include?(File.dirname(__FILE__))
5
5
 
6
- require "merb_inspector" / "inspector"
7
- require "merb_inspector" / "helper"
8
- require "merb_inspector" / "inspectors" / "base"
9
- require "merb_inspector" / "inspectors" / "data_mapper" if defined?(DataMapper)
10
-
11
- module Merb::GlobalHelpers
12
- include Merb::Inspector::Helper
13
- end
14
-
15
6
  # Merb gives you a Merb::Plugins.config hash...feel free to put your stuff in your piece of it
16
7
  Merb::Plugins.config[:merb_inspector] = {
17
8
  :chickens => false
@@ -19,10 +10,29 @@ if defined?(Merb::Plugins)
19
10
 
20
11
  Merb::BootLoader.before_app_loads do
21
12
  # require code that must be loaded before the application
22
- Merb::Inspector.install
23
13
  end
24
14
 
25
15
  Merb::BootLoader.after_app_loads do
16
+ inspector_dir = File.dirname(__FILE__) / "../inspectors"
17
+
18
+ require "merb_inspector" / "inspector"
19
+ require "merb_inspector" / "manager"
20
+ require "merb_inspector" / "helper"
21
+
22
+ Dir["#{inspector_dir}/*.rb"].sort.each do |file|
23
+ begin
24
+ require file
25
+ rescue Exeption => error
26
+ message = "[MerbInspector] load error: #{error} (#{error.class})"
27
+ Merb.logger.error message
28
+ end
29
+ end
30
+
31
+ class ::Application
32
+ include Merb::Inspector::Helper
33
+ end
34
+
35
+ Merb::Inspector::Manager.install
26
36
  end
27
37
 
28
38
  Merb::Plugins.add_rakefiles "merb_inspector/merbtasks"
metadata CHANGED
@@ -1,19 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: maiha-merb_inspector
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.1"
4
+ version: "0.2"
5
5
  platform: ruby
6
6
  authors:
7
- - maiha
7
+ - Maiha
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-12-27 00:00:00 -08:00
12
+ date: 2008-12-29 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
- name: merb-core
16
+ name: merb
17
17
  version_requirement:
18
18
  version_requirements: !ruby/object:Gem::Requirement
19
19
  requirements:
@@ -21,35 +21,29 @@ dependencies:
21
21
  - !ruby/object:Gem::Version
22
22
  version: 1.0.7
23
23
  version:
24
- description: ""
24
+ description: Merb plugin that provides powerful 'inspect' helper method
25
25
  email: maiha@wota.jp
26
26
  executables: []
27
27
 
28
28
  extensions: []
29
29
 
30
- extra_rdoc_files: []
31
-
30
+ extra_rdoc_files:
31
+ - README
32
+ - LICENSE
33
+ - TODO
32
34
  files:
33
35
  - LICENSE
34
36
  - README
35
37
  - Rakefile
36
38
  - TODO
37
- - lib/merb_inspector.rb
39
+ - lib/merb_inspector
38
40
  - lib/merb_inspector/helper.rb
39
- - lib/merb_inspector/inspector.rb
40
- - lib/merb_inspector/inspectors/base.rb
41
- - lib/merb_inspector/inspectors/data_mapper.rb
42
41
  - lib/merb_inspector/merbtasks.rb
43
- - mirror/public/stylesheets/merb_inspector.css
44
- - spec/merb_inspector_spec.rb
42
+ - lib/merb_inspector/manager.rb
43
+ - lib/merb_inspector/inspector.rb
44
+ - lib/merb_inspector.rb
45
45
  - spec/spec_helper.rb
46
- - templates/data_mapper/collection/_records.html.erb
47
- - templates/data_mapper/resource/_edit.html.erb
48
- - templates/data_mapper/resource/_new.html.erb
49
- - templates/data_mapper/resource/_record.html.erb
50
- - templates/data_mapper/resource/_show.html.erb
51
- - test/merb_inspector_test.rb
52
- - test/test_helper.rb
46
+ - spec/merb_inspector_spec.rb
53
47
  has_rdoc: true
54
48
  homepage: http://github.com/maiha/merb_inspector
55
49
  post_install_message:
@@ -71,10 +65,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
71
65
  version:
72
66
  requirements: []
73
67
 
74
- rubyforge_project:
68
+ rubyforge_project: merb
75
69
  rubygems_version: 1.2.0
76
70
  signing_key:
77
71
  specification_version: 2
78
- summary: ""
72
+ summary: Merb plugin that provides powerful 'inspect' helper method
79
73
  test_files: []
80
74
 
@@ -1,60 +0,0 @@
1
- module Merb
2
- module Inspectors
3
- class Base
4
- class << self
5
- def register(klass)
6
- Merb::Inspector.register(klass, self)
7
- end
8
- end
9
-
10
- def initialize(object, caller, options = {})
11
- @object = object
12
- @caller = caller
13
- @options = options
14
- @options = {:action=>@options} unless @options.is_a?(Hash)
15
- # @context = context || binding # not used yet
16
- end
17
-
18
- def execute
19
- @object.inspect
20
- end
21
-
22
- private
23
- def name
24
- self.class.name.sub(/^Merb::Inspectors::/,'').sub(/Inspector$/,'').snake_case.gsub(/::/, '/')
25
- end
26
-
27
- def dir
28
- File.join Merb::Inspector.root, "templates", name
29
- end
30
-
31
- def id
32
- @object.object_id
33
- end
34
-
35
- def template_for(name)
36
- File.join dir, name
37
- end
38
-
39
- def partial(name)
40
- @caller.send :partial, template_for(name), current_options
41
- end
42
-
43
- def current_options
44
- basic_options.merge(options)
45
- end
46
-
47
- def options
48
- {}
49
- end
50
-
51
- def basic_options
52
- {:inspector=>self, :options=>@options, :dir=>dir, :id=>id}
53
- end
54
-
55
- def method_missing(*args, &block)
56
- @caller.send(*args, &block)
57
- end
58
- end
59
- end
60
- end
@@ -1,103 +0,0 @@
1
- module Merb
2
- module Inspectors
3
- module DataMapper
4
- module Resourceful
5
- def resource_name
6
- model.name.demodulize.plural.snake_case
7
- end
8
-
9
- def link_to_new(label = 'New', opts = {})
10
- @caller.link_to label, @caller.resource(resource_name, :new), opts
11
- rescue Merb::Router::GenerationError
12
- end
13
-
14
- def link_to_show(record = @object, label = 'Show', opts = {})
15
- @caller.link_to label, @caller.resource(record), opts
16
- rescue Merb::Router::GenerationError
17
- end
18
-
19
- def link_to_edit(record = @object, label = 'Edit', opts = {})
20
- @caller.link_to label, @caller.resource(record, :edit), opts
21
- rescue Merb::Router::GenerationError
22
- end
23
- end
24
-
25
- class CollectionInspector < Base
26
- register ::DataMapper::Collection
27
- include Resourceful
28
-
29
- def execute
30
- partial "records"
31
- end
32
-
33
- def columns
34
- @object.properties
35
- end
36
-
37
- private
38
- def model
39
- @object.query.model
40
- end
41
-
42
- def options
43
- {:model=>model, :records=>@object}
44
- end
45
- end
46
-
47
- class ResourceInspector < Base
48
- register ::DataMapper::Resource
49
- include Resourceful
50
-
51
- def execute
52
- partial template
53
- end
54
-
55
- def columns
56
- model.properties
57
- end
58
-
59
- def edit_columns
60
- columns.reject{|p| p.type == ::DataMapper::Types::Serial}
61
- end
62
-
63
- private
64
- def id
65
- oid = @object.new_record? ? "new" : @object.id
66
- "#{resource_name}_#{oid}"
67
- end
68
-
69
- def model
70
- @object.class
71
- end
72
-
73
- def template
74
- if @options[:action].to_s == 'new'
75
- "new"
76
- else
77
- "record"
78
- end
79
- end
80
-
81
- def edit
82
- %w( new edit ).include?(@options[:action].to_s)
83
- end
84
-
85
- def toggle
86
- "$('##{id} .record').toggle();return false;"
87
- end
88
-
89
- def save_action
90
- if @object.new_record?
91
- "/" + resource_name
92
- else
93
- resource(@object)
94
- end
95
- end
96
-
97
- def options
98
- {:model=>model, :record=>@object, :edit=>edit, :save_action=>save_action, :toggle=>toggle}
99
- end
100
- end
101
- end
102
- end
103
- end
@@ -1,87 +0,0 @@
1
- table.data-mapper-collection {
2
- border-collapse:collapse;
3
- }
4
-
5
-
6
- table.data-mapper-collection th {
7
- background-color: #555;
8
- text-align: left;
9
- }
10
-
11
- table.data-mapper-collection th a,
12
- table.data-mapper-collection th p {
13
- font: bold 11px arial, sans-serif;
14
- display: block;
15
- background-color: #555;
16
- }
17
-
18
- table.data-mapper-collection th a {
19
- color: #fff;
20
- padding: 2px 15px 2px 5px;
21
- }
22
-
23
- table.data-mapper-collection th p {
24
- color: #eee;
25
- padding: 2px 5px;
26
- }
27
-
28
- table.data-mapper-collection th a:hover {
29
- background-color: #000;
30
- color: #ff8;
31
- }
32
-
33
- table.data-mapper-collection > tbody > tr.record td {
34
- background-color: #E6F2FF;
35
- }
36
-
37
- table.data-mapper-collection > tbody > tr.record > td {
38
- padding: 5px 4px;
39
- color: #333;
40
- font-family: Verdana, sans-serif;
41
- font-size: 11px;
42
- border-bottom: solid 1px #C5DBF7;
43
- border-left: solid 1px #C5DBF7;
44
- }
45
-
46
- table.data-mapper-collection > tbody > tr.even-record td {
47
- background-color: #fff;
48
- }
49
-
50
- table.data-mapper-collection > tbody > tr.even-record > td {
51
- border-left: solid 1px #ddd;
52
- }
53
-
54
- table.data-mapper-collection > tbody > tr.record > td.sorted {
55
- background-color: #B9DCFF;
56
- border-bottom: solid 1px #AFD0F5;
57
- }
58
-
59
- table.data-mapper-collection > tbody > tr.even-record > td.sorted {
60
- background-color: #E6F2FF;
61
- border-bottom: solid 1px #AFD0F5;
62
- }
63
-
64
-
65
-
66
- .record table
67
- {
68
- background-color: #fff;
69
- border-collapse: collapse;
70
- border-spacing: 0px;
71
- }
72
- .record table th
73
- {
74
- background-color: #dee7ec;
75
- border: 1px solid #8cacbb;
76
- padding: 3px;
77
- }
78
- .record table td
79
- {
80
- border: 1px solid #8cacbb;
81
- padding: 3px;
82
- }
83
-
84
- table.logical th,
85
- table.logical td {
86
- border: 0px;
87
- }
@@ -1,38 +0,0 @@
1
- <div>
2
- <table class="data-mapper-collection">
3
- <thead>
4
- <tr>
5
- <%- inspector.columns.each do |p| -%>
6
- <th><p><%= column_header(p) %></p></th>
7
- <%- end -%>
8
- <th></th>
9
- </tr>
10
- </thead>
11
- <tbody class="records">
12
- <%- records.each_with_index do |record, i| -%>
13
- <%-
14
- tr_class = (i % 2 == 0) ? "even-record" : ""
15
- tr_class += " #{list_row_class(record)}" if respond_to? :list_row_class
16
- -%>
17
- <tr class="record <%=tr_class%>">
18
- <%- inspector.columns.each do |p| -%>
19
- <td><%=h column_value(record, p) %></td>
20
- <%- end -%>
21
- <td>
22
- <table class="logical">
23
- <tr>
24
- <td><%= inspector.link_to_show(record) %></td>
25
- <td><%= inspector.link_to_edit(record) %></td>
26
- <td><%# delete_button(article, "Delete #{article.title}") %></td>
27
- </tr>
28
- </table>
29
- </td>
30
- </tr>
31
- <%- end -%>
32
- </tbody>
33
- </table>
34
-
35
- <%= inspector.link_to_new 'New' %>
36
-
37
- </div>
38
-
@@ -1,15 +0,0 @@
1
- <div>
2
- <%= form_for record do %>
3
- <table class="record show">
4
- <tbody>
5
- <%- columns.each do |p| -%>
6
- <tr>
7
- <th><%= column_header(p) %></th>
8
- <td><%=h column_form(record, p) %></td>
9
- </tr>
10
- <%- end -%>
11
- </tbody>
12
- </table>
13
- <% end =%>
14
- </div>
15
-
@@ -1,24 +0,0 @@
1
- <div id="<%=id%>" style="display:block;">
2
-
3
- <div id="<%=id%>_edit" class="record edit" style="display:block;">
4
- <%= form_for record, :action=>save_action do %>
5
- <table>
6
- <tbody>
7
- <%- inspector.columns.each do |p| -%>
8
- <tr>
9
- <th><%= column_header(p) %></th>
10
- <td><%= column_form(record, p) %></td>
11
- </tr>
12
- <%- end -%>
13
- <tr>
14
- <td colspan=2 align=center>
15
- <%= submit "create".t %>
16
- <%= link_to "cancel".t, "#", :onclick=>"$('##{id}').hide();return false;" %>
17
- </td>
18
- </tr>
19
- </tbody>
20
- </table>
21
- <% end =%>
22
- </div>
23
- </div>
24
-
@@ -1,42 +0,0 @@
1
- <div id="<%=id%>">
2
-
3
- <div id="<%=id%>_show" class="record show" style="display:<%= edit ? 'none' : 'display' %>">
4
- <table>
5
- <tbody>
6
- <%- inspector.columns.each do |p| -%>
7
- <tr>
8
- <th><%= column_header(p) %></th>
9
- <td><%=h column_value(record, p) %></td>
10
- </tr>
11
- <%- end -%>
12
- <tr>
13
- <td colspan=2 align=center>
14
- <%= link_to "edit", "#", :onclick=>toggle %>
15
- </td>
16
- </tr>
17
- </tbody>
18
- </table>
19
- </div>
20
-
21
- <div id="<%=id%>_edit" class="record edit" style="display:<%= edit ? 'display' : 'none' %>">
22
- <%= form_for record, :action=>save_action do %>
23
- <table>
24
- <tbody>
25
- <%- inspector.columns.each do |p| -%>
26
- <tr>
27
- <th><%= column_header(p) %></th>
28
- <td><%= column_form(record, p) %></td>
29
- </tr>
30
- <%- end -%>
31
- <tr>
32
- <td colspan=2 align=center>
33
- <%= submit (record.new_record? ? "create" : "update").t %>
34
- <%= link_to "cancel", "#", :onclick=>toggle %>
35
- </td>
36
- </tr>
37
- </tbody>
38
- </table>
39
- <% end =%>
40
- </div>
41
- </div>
42
-
@@ -1,13 +0,0 @@
1
- <div>
2
- <table class="record show">
3
- <tbody>
4
- <%- columns.each do |p| -%>
5
- <tr>
6
- <th><%= column_header(p) %></th>
7
- <td><%=h column_value(record, p) %></td>
8
- </tr>
9
- <%- end -%>
10
- </tbody>
11
- </table>
12
- </div>
13
-
File without changes
data/test/test_helper.rb DELETED
@@ -1 +0,0 @@
1
- $:.push File.join(File.dirname(__FILE__), '..', 'lib')