asf_scaffold_generator 0.0.9 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/asf_scaffold_generator.rb +41 -0
- data/build.sh +2 -0
- data/templates/asf_form_scaffolding.rhtml +56 -0
- data/templates/asf_layout.rhtml +14 -14
- data/templates/asf_view_edit.rhtml +7 -0
- data/templates/asf_view_list.rhtml +1 -1
- data/templates/asf_view_show.rhtml +1 -1
- data/templates/form.rhtml +3 -0
- metadata +14 -9
data/asf_scaffold_generator.rb
CHANGED
@@ -26,7 +26,28 @@
|
|
26
26
|
# Rails::Generator::Base.sources << Rails::Generator::PathSource.new(:development, "#{Dir.user_home}/dev/activesfdc/trunk/ActiveSalesforceGenerator/")
|
27
27
|
|
28
28
|
|
29
|
+
class AsfScaffoldingSandbox
|
30
|
+
include ActionView::Helpers::ActiveRecordHelper
|
31
|
+
|
32
|
+
attr_accessor :form_action, :singular_name, :suffix, :model_instance, :model_name
|
33
|
+
|
34
|
+
def initialize(singular_name, model_instance)
|
35
|
+
@singular_name = singular_name
|
36
|
+
@model_instance = model_instance
|
37
|
+
@model_name = model_instance.class.name
|
38
|
+
@scaffold_singular_name = singular_name
|
39
|
+
end
|
40
|
+
|
41
|
+
def sandbox_binding
|
42
|
+
binding
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
|
29
48
|
class AsfScaffoldGenerator < ScaffoldGenerator
|
49
|
+
include ActionView::Helpers::ActiveRecordHelper
|
50
|
+
|
30
51
|
attr_accessor :record_type
|
31
52
|
|
32
53
|
def initialize(runtime_args, runtime_options = {})
|
@@ -37,6 +58,18 @@ class AsfScaffoldGenerator < ScaffoldGenerator
|
|
37
58
|
|
38
59
|
def manifest
|
39
60
|
record do |m|
|
61
|
+
# Scaffolded forms.
|
62
|
+
m.complex_template "form.rhtml",
|
63
|
+
File.join('app/views',
|
64
|
+
controller_class_path,
|
65
|
+
controller_file_name,
|
66
|
+
"_form.rhtml"),
|
67
|
+
:insert => 'asf_form_scaffolding.rhtml',
|
68
|
+
:sandbox => lambda { create_sandbox },
|
69
|
+
:begin_mark => 'form',
|
70
|
+
:end_mark => 'eoform',
|
71
|
+
:mark_id => singular_name
|
72
|
+
|
40
73
|
# Scaffolded views.
|
41
74
|
scaffold_views.each do |action|
|
42
75
|
m.template "asf_view_#{action}.rhtml",
|
@@ -55,6 +88,14 @@ class AsfScaffoldGenerator < ScaffoldGenerator
|
|
55
88
|
|
56
89
|
protected
|
57
90
|
|
91
|
+
def create_sandbox
|
92
|
+
sandbox = AsfScaffoldingSandbox.new(singular_name, model_instance)
|
93
|
+
sandbox.instance_variable_set("@#{singular_name}", sandbox.model_instance)
|
94
|
+
|
95
|
+
sandbox.suffix = suffix
|
96
|
+
sandbox
|
97
|
+
end
|
98
|
+
|
58
99
|
# DCHASMAN TODO Remove this when the show, new and edit templates are ready
|
59
100
|
def scaffold_views
|
60
101
|
#%w(list show new edit)
|
data/build.sh
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
<% def safe_array(value)
|
2
|
+
if value.is_a? Array
|
3
|
+
value
|
4
|
+
else
|
5
|
+
value.nil? ? [] : [ value ]
|
6
|
+
end
|
7
|
+
end
|
8
|
+
%>
|
9
|
+
<% model = model_name.constantize
|
10
|
+
connection = model.connection
|
11
|
+
entity_name = connection.entity_name_from_table(model.table_name)
|
12
|
+
entity_def = connection.get_entity_def(entity_name)
|
13
|
+
layoutMetadata = entity_def.layouts
|
14
|
+
%>
|
15
|
+
<div class="bPageBlock secondaryPalette" id="ep"><div class="pbHeader">
|
16
|
+
<div class="pbBody"><div class="pbSubsection">
|
17
|
+
<table class="detailList">
|
18
|
+
<% safe_array(layoutMetadata[:layouts]).each do |layout|
|
19
|
+
safe_array(layout[:detailLayoutSections]).each do |section|
|
20
|
+
safe_array(section[:layoutRows]).each do | row |
|
21
|
+
%>
|
22
|
+
<tr>
|
23
|
+
<% safe_array(row[:layoutItems]).each do | item | %>
|
24
|
+
<td class="labelCol"><%= item[:label] %></td>
|
25
|
+
<td class="dataCol col02">
|
26
|
+
<% safe_array(item[:layoutComponents]).each do |component|
|
27
|
+
if component[:type] == "Field"
|
28
|
+
field = component[:value]
|
29
|
+
column = entity_def.api_name_to_column[field]
|
30
|
+
|
31
|
+
col_ref = "@#{singular_name}.#{column.name}"
|
32
|
+
if column.respond_to?(:reference_to) and column.reference_to
|
33
|
+
%>
|
34
|
+
<%%= <%= col_ref %> ? link_to(<%= col_ref %>, { :controller => '<%= column.reference_to.pluralize.underscore %>', :action=> 'show', :id => <%= col_ref %> }) : ' ' %>
|
35
|
+
<% else %>
|
36
|
+
<%%= <%= col_ref %> ? <%= col_ref %> : ' ' %>
|
37
|
+
<% end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
%>
|
41
|
+
</td>
|
42
|
+
<% end %>
|
43
|
+
</tr>
|
44
|
+
<% end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
%>
|
48
|
+
</table>
|
49
|
+
</div></div>
|
50
|
+
</div></div>
|
51
|
+
|
52
|
+
|
53
|
+
<%% @id_resolver = ActiveSalesforce::IdResolver.new(<%= model_name %>.connection)
|
54
|
+
@id_resolver.add(@<%= singular_name %>)
|
55
|
+
%>
|
56
|
+
|
data/templates/asf_layout.rhtml
CHANGED
@@ -6,8 +6,16 @@
|
|
6
6
|
<%%= tag("link", { "rel" => "Stylesheet", "type" => "text/css", "media" => "screen", "href" => "#{url.scheme}://#{url.host}:#{url.port}/dCSS/Theme2/default/common.css" }) %>
|
7
7
|
<script type="text/javascript" src="http://na1.salesforce.com/js/functions.js"></script>
|
8
8
|
<%%= javascript_include_tag "prototype", "effects" %>
|
9
|
-
|
10
|
-
|
9
|
+
</head>
|
10
|
+
|
11
|
+
<body class="contact overviewPage" onload="request_id_resolve()">
|
12
|
+
|
13
|
+
<p style="color: green"><%%= flash[:notice] %></p>
|
14
|
+
|
15
|
+
<%%= @content_for_layout %>
|
16
|
+
|
17
|
+
<script>
|
18
|
+
<%% if @id_resolver %>
|
11
19
|
function update_ids(id_map) {
|
12
20
|
links = document.getElementsByTagName('a')
|
13
21
|
|
@@ -26,20 +34,12 @@
|
|
26
34
|
}
|
27
35
|
}
|
28
36
|
}
|
37
|
+
<%% end %>
|
29
38
|
|
30
|
-
</script>
|
31
|
-
|
32
|
-
</head>
|
33
|
-
|
34
|
-
<body class="contact overviewPage" onload="request_id_resolve()">
|
35
|
-
|
36
|
-
<p style="color: green"><%%= flash[:notice] %></p>
|
37
|
-
|
38
|
-
<%%= @content_for_layout %>
|
39
|
-
|
40
|
-
<script>
|
41
39
|
function request_id_resolve() {
|
42
|
-
|
40
|
+
<%% if @id_resolver %>
|
41
|
+
<%%= remote_function(:url => { :controller => 'asf_resolveids', :action => :resolve, :class => '<%= model_name %>', :ids => @id_resolver.serialize }, :complete => "update_ids(eval(request.responseText))") %>
|
42
|
+
<%% end %>
|
43
43
|
}
|
44
44
|
</script>
|
45
45
|
|
@@ -0,0 +1,7 @@
|
|
1
|
+
<h1>Editing <%= @scaffold_singular_name %></h1>
|
2
|
+
|
3
|
+
<%= error_messages_for(@scaffold_singular_name) %>
|
4
|
+
<%= form(@scaffold_singular_name, { :action => "update#{@scaffold_suffix}", :value => "Save" }) %>
|
5
|
+
|
6
|
+
<%= link_to "Show", :action => "show#{@scaffold_suffix}", :id => instance_variable_get("@#{@scaffold_singular_name}") %> |
|
7
|
+
<%= link_to "Back", :action => "list#{@scaffold_suffix}" %>
|
@@ -83,6 +83,6 @@
|
|
83
83
|
|
84
84
|
|
85
85
|
<%% @id_resolver = ActiveSalesforce::IdResolver.new(<%= model_name %>.connection)
|
86
|
-
|
86
|
+
@<%= plural_name %>.each { |<%= singular_name %>| @id_resolver.add(<%= singular_name %>, columns) }
|
87
87
|
%>
|
88
88
|
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
|
|
3
3
|
specification_version: 1
|
4
4
|
name: asf_scaffold_generator
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.0
|
7
|
-
date: 2006-03-
|
6
|
+
version: 0.1.0
|
7
|
+
date: 2006-03-05 00:00:00 -05:00
|
8
8
|
summary: ActiveSalesforce Generator provides additional salesforce aware scaffolding support.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -28,21 +28,26 @@ cert_chain:
|
|
28
28
|
authors:
|
29
29
|
- Doug Chasman
|
30
30
|
files:
|
31
|
-
- ./USAGE
|
32
31
|
- ./asf_scaffold_generator.rb
|
32
|
+
- ./build.sh
|
33
33
|
- ./templates
|
34
|
+
- ./USAGE
|
35
|
+
- ./templates/asf_form_scaffolding.rhtml
|
36
|
+
- ./templates/asf_layout.rhtml
|
34
37
|
- ./templates/asf_resolveids_controller.rb
|
35
|
-
- ./templates/asf_view_list.rhtml
|
36
|
-
- ./templates/asf_view_show.rhtml
|
37
38
|
- ./templates/asf_view_edit.rhtml
|
39
|
+
- ./templates/asf_view_list.rhtml
|
38
40
|
- ./templates/asf_view_new.rhtml
|
39
|
-
- ./templates/
|
41
|
+
- ./templates/asf_view_show.rhtml
|
42
|
+
- ./templates/form.rhtml
|
43
|
+
- templates/asf_form_scaffolding.rhtml
|
44
|
+
- templates/asf_layout.rhtml
|
40
45
|
- templates/asf_resolveids_controller.rb
|
41
|
-
- templates/asf_view_list.rhtml
|
42
|
-
- templates/asf_view_show.rhtml
|
43
46
|
- templates/asf_view_edit.rhtml
|
47
|
+
- templates/asf_view_list.rhtml
|
44
48
|
- templates/asf_view_new.rhtml
|
45
|
-
- templates/
|
49
|
+
- templates/asf_view_show.rhtml
|
50
|
+
- templates/form.rhtml
|
46
51
|
- USAGE
|
47
52
|
test_files: []
|
48
53
|
|