flex_egenial_scaffold 0.0.1
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/CHANGELOG +3 -0
- data/MIT-LICENSE +20 -0
- data/README +121 -0
- data/flex_egenial_scaffold_generator.rb +184 -0
- data/templates/AC_OETags.js +269 -0
- data/templates/_listaGrid.mxml +11 -0
- data/templates/aplicacao.mxml +77 -0
- data/templates/comp.rake +44 -0
- data/templates/controller.rb +31 -0
- data/templates/cria_report.gif +0 -0
- data/templates/crossdomain.xml +6 -0
- data/templates/deleta_report.gif +0 -0
- data/templates/edita_report.gif +0 -0
- data/templates/flex_egenial.css +37 -0
- data/templates/form_scaffolding.rhtml +1 -0
- data/templates/functional_test.rb +102 -0
- data/templates/helper.rb +6 -0
- data/templates/history.htm +21 -0
- data/templates/history.js +48 -0
- data/templates/history.swf +0 -0
- data/templates/index.html +112 -0
- data/templates/model.rb +7 -0
- data/templates/pesquisar.gif +0 -0
- data/templates/playerProductInstall.swf +0 -0
- data/templates/table_16x16.gif +0 -0
- data/templates/view_list.rhtml +1 -0
- metadata +72 -0
data/CHANGELOG
ADDED
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2007 Carlos Eduardo Gonçalves Franco
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README
ADDED
@@ -0,0 +1,121 @@
|
|
1
|
+
Flex e-Genial Scaffold :::::::::::::::::::::::::::::
|
2
|
+
|
3
|
+
Este scaffold vai te ajudar a dar um ponta-p� inicial no mundo Ruby on Rails, ele leva junto algo que vai fazer a diferen�a,
|
4
|
+
gra�as a Web 2.0 aplica��es RIA esta em alta e se voc� instalou o Flex e-Genial Scaffold ou � porque j� entende do assunto
|
5
|
+
ou esta querendo fazer a diferen�a em suas aplica��es, ent�o seja bem vindo, ao mundo da produtividade !!!
|
6
|
+
|
7
|
+
Abaixo segue alguns pontos que devem ser levados ao p� da letra para o devido funcionamento do Flex e-Genial Scaffold:
|
8
|
+
|
9
|
+
****** ESTAS DUAS CONFIGURA��ES S�O FEITAS SOMENTE UMA VEZ ******
|
10
|
+
|
11
|
+
1� - A primeira vez que vocc� rodar
|
12
|
+
rails sua_aplica��o
|
13
|
+
cd sua_aplica��o
|
14
|
+
sua_aplica��o>ruby script/generate flex_egenial_scaffold Tabela(singular)
|
15
|
+
|
16
|
+
Ser� criado um arquivo chamado comp.rake dentro da pasta lib/tasks da sua aplica��o, edite este arquivo.
|
17
|
+
O primeiro passo � mostrar o caminho de onde voc� instalou ou extraiu o flex SDK
|
18
|
+
no exemplo estar�:
|
19
|
+
|
20
|
+
home = "F:/FAMILIA_ADOBE/FLEX_SDK_2"
|
21
|
+
|
22
|
+
Troque ent�o para:
|
23
|
+
|
24
|
+
home = "Caminho/de/onde/esta/a/instala��oo/do/Flex/SDK"
|
25
|
+
|
26
|
+
Observa��o: Lembrando que para compilar os fontes .mxml das aplica��es geradas pelo Flex SDK � preciso
|
27
|
+
ter instalado o JVM da Sun, e configurado as variaveis de ambiente corretamente, porque ao rodar ele ir� realizar a seguinte tarefa
|
28
|
+
quando voc� fizer: sua_aplica��o>rake comp:flex arq=Model
|
29
|
+
|
30
|
+
[ Tarefa realizada ]
|
31
|
+
java -jar ../lib/mxmlc.jar -load-config ../frameworks/flex-config.xml -file-specs public/sis/tabela/tabela.mxml
|
32
|
+
|
33
|
+
2� - Como vamos usar o proprio compilador java do Flex, precisamos fazer a seguinte mudan�a
|
34
|
+
|
35
|
+
Dentro da pasta Caminho/de/onde/esta/a/instala��o/do/Flex/SDK/frameworks
|
36
|
+
Existe um arquivo chamado flex-config.xml encontre as linhas abaixo, e deixe descomentado conforme abaixo
|
37
|
+
|
38
|
+
<!-- File containing cached system font licensing information
|
39
|
+
produced via
|
40
|
+
java -cp mxmlc.jar flex2.tools.FontsSnapshot (fontpath)
|
41
|
+
Will default to winFonts.ser on Windows XP and
|
42
|
+
macFonts.ser on Mac OS X, so is commented out by default.
|
43
|
+
-->
|
44
|
+
|
45
|
+
<local-fonts-snapshot>localFonts.ser</local-fonts-snapshot>
|
46
|
+
|
47
|
+
|
48
|
+
3� - Agora se voc� j� tem tudo acertado com o os dois simples passos acima, e j� criou seu primeiro scaffold com o flex_egenial_scaffold � hora de
|
49
|
+
colocar o touro para pular, agora fa�a:
|
50
|
+
|
51
|
+
sua_aplica��o>rake comp:flex arq=Model
|
52
|
+
|
53
|
+
Ele ir� criar o arquivo tabela.swf dentro de public/sis/tabela/
|
54
|
+
Levante o servidor da aplica��o e acesse http://localhost:porta/sis/tabela
|
55
|
+
|
56
|
+
Bem vindo ao mundo Web 2.0 de aplica��es RIA com desenvolvimento produtivo e criativo ;-)
|
57
|
+
|
58
|
+
Qualquer d�vida, bugs ou melhoria envie um email para carloseduardo@egenial.com.br
|
59
|
+
|
60
|
+
Boa sorte e grande abra�o.
|
61
|
+
|
62
|
+
----
|
63
|
+
Flex e-Genial Scaffold :::::::::::::::::::::::::::::
|
64
|
+
|
65
|
+
This scaffold will help you enter in the Ruby on Rail world, it has something that's make difference.
|
66
|
+
Due Web 2.0, RIA applications are in the mainstream and if you installed the Flex e-Genial Scaffold that's
|
67
|
+
because you know it or you are trying to make your applications better. Welcome to the world of productivity!!!
|
68
|
+
|
69
|
+
Bellow are instructions to make Flex e-Genial Scaffold works as expected:
|
70
|
+
|
71
|
+
1st - First time you run:
|
72
|
+
rails your_application
|
73
|
+
cd your_application
|
74
|
+
your_application> ruby script/generate flex_egenial_scaffold Table(singular)
|
75
|
+
|
76
|
+
That creates a file called "comp.rake" in your application forlder inside "lib/tasks". You need to edit this file.
|
77
|
+
First, point to Flex SDK path. The file has the following example:
|
78
|
+
|
79
|
+
home = "F:/FAMILIA_ADOBE/FLEX_SDK_2"
|
80
|
+
|
81
|
+
Change it to:
|
82
|
+
|
83
|
+
home = "path/where/you/installed/Flex/SDK"
|
84
|
+
|
85
|
+
To compile the .mxml source code generated by Flex SDK you need the Sun JVM installed and
|
86
|
+
its environment variables configured. That's because, when you run:
|
87
|
+
|
88
|
+
your_application> rake comp:flex arq=Model
|
89
|
+
|
90
|
+
It will do:
|
91
|
+
|
92
|
+
java -jar ../lib/mxmlc.jar -load-config ../frameworks/flex-config.xml -file-specs public/sis/table/table.mxml
|
93
|
+
|
94
|
+
2nd - We are going to use the Flex java compiler. To do so, we need the following change:
|
95
|
+
|
96
|
+
Inside the folder "path/where/you/installed/Flex/SDK/frameworks" there is a file "flex-config.xml".
|
97
|
+
Find the lines bellow on it and remove the comment marks as indicated:
|
98
|
+
|
99
|
+
<!-- File containing cached system font licensing information
|
100
|
+
produced via
|
101
|
+
java -cp mxmlc.jar flex2.tools.FontsSnapshot (fontpath)
|
102
|
+
Will default to winFonts.ser on Windows XP and
|
103
|
+
macFonts.ser on Mac OS X, so is commented out by default.
|
104
|
+
-->
|
105
|
+
|
106
|
+
<local-fonts-snapshot>localFonts.ser</local-fonts-snapshot>
|
107
|
+
|
108
|
+
3rd - Now that you did the steps above and you have your first sccafold created with flex_egenial_scaffold, it's time
|
109
|
+
to compile it.
|
110
|
+
|
111
|
+
your_application> rake comp:flex arq=Model
|
112
|
+
|
113
|
+
It will create the file table.swf inside the public/sis/table/ folder
|
114
|
+
Start the web server and go to http://localhost:port/sis/table
|
115
|
+
|
116
|
+
Welcome to the world of Web 2.0 of RIA applications with creative and productive development!
|
117
|
+
|
118
|
+
Any questions, bugs or improvements, please send an e-mail to carloseduardo@egenial.com.br
|
119
|
+
|
120
|
+
Good luck and a big hug.
|
121
|
+
|
@@ -0,0 +1,184 @@
|
|
1
|
+
require 'rails_generator/generators/components/scaffold/scaffold_generator'
|
2
|
+
|
3
|
+
class FlexEgenialScaffoldingSandbox < ScaffoldingSandbox
|
4
|
+
|
5
|
+
|
6
|
+
def default_input_block
|
7
|
+
Proc.new { |record, column| <<-END_ROW
|
8
|
+
<mx:FormItem label="#{column.human_name}" width="339" id="#{singular_name}_#{column.name}">
|
9
|
+
<mx:TextInput width="274" text="{ #{singular_name}_grid.selectedItem.#{column.name} }" id="#{column.name}" />
|
10
|
+
</mx:FormItem>
|
11
|
+
END_ROW
|
12
|
+
}
|
13
|
+
end # default_input_block
|
14
|
+
|
15
|
+
def default_grid_block
|
16
|
+
Proc.new { |record, column| <<-END_ROW
|
17
|
+
<mx:DataGridColumn headerText="#{column.human_name}" dataField="#{column.name}"/>
|
18
|
+
END_ROW
|
19
|
+
}
|
20
|
+
|
21
|
+
end # default_grid_block
|
22
|
+
|
23
|
+
|
24
|
+
def grid_tags(record, record_name, options)
|
25
|
+
input_block = options[:input_block] || default_grid_block
|
26
|
+
|
27
|
+
if !options[:exclude].blank?
|
28
|
+
filtered_content_columns = record.class.content_columns.reject { |column| options[:exclude].include?(column.name) }
|
29
|
+
else
|
30
|
+
filtered_content_columns = record.class.content_columns
|
31
|
+
end
|
32
|
+
|
33
|
+
filtered_content_columns.collect{ |column| input_block.call(record_name, column) }.join("\n")
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
def self.default_fields_block_as(record, record_name, options)
|
38
|
+
input_block = options[:input_block] || Proc.new { |record, column| <<-END_ROW
|
39
|
+
#{column.name}.text = "";
|
40
|
+
END_ROW
|
41
|
+
}
|
42
|
+
if !options[:exclude].blank?
|
43
|
+
filtered_content_columns = record.class.content_columns.reject { |column| options[:exclude].include?(column.name) }
|
44
|
+
else
|
45
|
+
filtered_content_columns = record.class.content_columns
|
46
|
+
end
|
47
|
+
filtered_content_columns.collect{ |column| input_block.call(record_name, column) }.join("\n")
|
48
|
+
|
49
|
+
end # default_fields_block_as
|
50
|
+
|
51
|
+
|
52
|
+
def self.default_fields_block_as_up(record, record_name, options)
|
53
|
+
input_block = options[:input_block] || Proc.new { |record, column|<<-END_ROW
|
54
|
+
#{record_name}['#{record_name}[#{column.name}]'] = #{column.name}.text;
|
55
|
+
END_ROW
|
56
|
+
}
|
57
|
+
if !options[:exclude].blank?
|
58
|
+
filtered_content_columns = record.class.content_columns.reject { |column| options[:exclude].include?(column.name) }
|
59
|
+
else
|
60
|
+
filtered_content_columns = record.class.content_columns
|
61
|
+
end
|
62
|
+
filtered_content_columns.collect{ |column| input_block.call(record_name, column) }.join("\n")
|
63
|
+
|
64
|
+
end # default_fields_block_as_up
|
65
|
+
|
66
|
+
|
67
|
+
def self.default_fields_block(record, record_name, options)
|
68
|
+
input_block = options[:input_block] || Proc.new { |record, column| <<-END_ROW
|
69
|
+
<#{column.name}>{#{column.name}.text}</#{column.name}>
|
70
|
+
END_ROW
|
71
|
+
}
|
72
|
+
|
73
|
+
if !options[:exclude].blank?
|
74
|
+
filtered_content_columns = record.class.content_columns.reject { |column| options[:exclude].include?(column.name) }
|
75
|
+
else
|
76
|
+
filtered_content_columns = record.class.content_columns
|
77
|
+
end
|
78
|
+
filtered_content_columns.collect{ |column| input_block.call(record_name, column) }.join("\n")
|
79
|
+
|
80
|
+
end # default_fields_block
|
81
|
+
|
82
|
+
|
83
|
+
|
84
|
+
end # class TableScaffoldingSandbox
|
85
|
+
|
86
|
+
class FlexEgenialScaffoldGenerator < ScaffoldGenerator
|
87
|
+
|
88
|
+
def create_sandbox
|
89
|
+
sandbox = FlexEgenialScaffoldingSandbox.new
|
90
|
+
sandbox.singular_name = singular_name
|
91
|
+
begin
|
92
|
+
sandbox.model_instance = model_instance
|
93
|
+
sandbox.instance_variable_set("@#{singular_name}", sandbox.model_instance)
|
94
|
+
rescue ActiveRecord::StatementInvalid => e
|
95
|
+
logger.error "Before updating scaffolding from new DB schema, try creating a table for your model (#{class_name})"
|
96
|
+
raise SystemExit
|
97
|
+
end
|
98
|
+
sandbox.suffix = suffix
|
99
|
+
sandbox
|
100
|
+
end # create_sandbox
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
def controller_file_path
|
105
|
+
"/" + base_controller_file_path
|
106
|
+
end
|
107
|
+
|
108
|
+
alias_method :base_controller_file_path, :controller_file_path
|
109
|
+
|
110
|
+
def manifest
|
111
|
+
record do |m|
|
112
|
+
|
113
|
+
# Check for class naming collisions.
|
114
|
+
m.class_collisions controller_class_path, "#{controller_class_name}Controller", "#{controller_class_name}ControllerTest", "#{controller_class_name}Helper"
|
115
|
+
m.class_collisions class_path, class_name, "#{singular_name}Test"
|
116
|
+
|
117
|
+
# Copia a tarefa para compilar os fontes xml.
|
118
|
+
m.template 'comp.rake',
|
119
|
+
File.join("lib/tasks", "comp.rake"),
|
120
|
+
:sandbox => lambda { create_sandbox }
|
121
|
+
|
122
|
+
m.directory File.join("public/sis")
|
123
|
+
|
124
|
+
# Templates do Flex
|
125
|
+
m.template 'crossdomain.xml', File.join('public/', "crossdomain.xml")
|
126
|
+
m.template 'AC_OETags.js', File.join('public/sis/', "AC_OETags.js")
|
127
|
+
m.template 'history.js', File.join('public/sis/', "history.js")
|
128
|
+
m.template 'history.swf', File.join('public/sis/', "history.swf")
|
129
|
+
m.template 'history.htm', File.join('public/sis/', "history.htm")
|
130
|
+
m.template 'playerProductInstall.swf', File.join('public/sis/', "playerProductInstall.swf")
|
131
|
+
|
132
|
+
# Model class, unit test, and fixtures.
|
133
|
+
m.template 'model.rb', File.join('app/models', "#{singular_name}.rb")
|
134
|
+
|
135
|
+
m.directory File.join("public/sis/#{plural_name}")
|
136
|
+
m.template 'index.html', File.join("public/sis/#{plural_name}", "index.html")
|
137
|
+
|
138
|
+
# Scaffolded forms Flex.
|
139
|
+
m.complex_template 'aplicacao.mxml',
|
140
|
+
File.join("public/sis/#{plural_name}", "#{plural_name}.mxml"),
|
141
|
+
:insert => 'form_scaffolding.rhtml',
|
142
|
+
:sandbox => lambda { create_sandbox },
|
143
|
+
:begin_mark => 'ScaffoldAdd',
|
144
|
+
:end_mark => 'ScaffoldAddEnd',
|
145
|
+
:mark_id => singular_name,
|
146
|
+
:assigns => {:campos_parametros => lambda {FlexEgenialScaffoldingSandbox.default_fields_block(model_instance, singular_name, {})},
|
147
|
+
:campos_as => lambda {FlexEgenialScaffoldingSandbox.default_fields_block_as(model_instance, singular_name, {})},
|
148
|
+
:campos_as_up => lambda {FlexEgenialScaffoldingSandbox.default_fields_block_as_up(model_instance, singular_name, {})}
|
149
|
+
}
|
150
|
+
|
151
|
+
# Scaffolded grid Flex.
|
152
|
+
m.complex_template '_listaGrid.mxml',
|
153
|
+
File.join("public/sis/#{plural_name}", "_listaGrid.mxml"),
|
154
|
+
:insert => 'view_list.rhtml',
|
155
|
+
:sandbox => lambda { create_sandbox },
|
156
|
+
:begin_mark => 'ScaffoldAdd',
|
157
|
+
:end_mark => 'ScaffoldAddEnd',
|
158
|
+
:mark_id => singular_name
|
159
|
+
|
160
|
+
|
161
|
+
# Controller class, functional test, helper, and views.
|
162
|
+
m.template 'controller.rb',
|
163
|
+
File.join('app/controllers', controller_class_path, "#{controller_file_name}_controller.rb")
|
164
|
+
|
165
|
+
m.template 'helper.rb',
|
166
|
+
File.join('app/helpers', controller_class_path, "#{controller_file_name}_helper.rb")
|
167
|
+
|
168
|
+
m.directory File.join("public/sis/css")
|
169
|
+
m.template 'flex_egenial.css', File.join("public/sis/css", "flex_egenial.css")
|
170
|
+
|
171
|
+
m.directory File.join("public/sis/assets")
|
172
|
+
scaffold_images.each do |image|
|
173
|
+
m.template image, "public/sis/assets/#{image}"
|
174
|
+
end
|
175
|
+
|
176
|
+
end
|
177
|
+
|
178
|
+
end
|
179
|
+
|
180
|
+
def scaffold_images
|
181
|
+
%w(cria_report.gif deleta_report.gif edita_report.gif pesquisar.gif table_16x16.gif)
|
182
|
+
end
|
183
|
+
|
184
|
+
end #class TableScaffoldGenerator
|
@@ -0,0 +1,269 @@
|
|
1
|
+
// Flash Player Version Detection - Rev 1.5
|
2
|
+
// Detect Client Browser type
|
3
|
+
// Copyright(c) 2005-2006 Adobe Macromedia Software, LLC. All rights reserved.
|
4
|
+
var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
|
5
|
+
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
|
6
|
+
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;
|
7
|
+
|
8
|
+
function ControlVersion()
|
9
|
+
{
|
10
|
+
var version;
|
11
|
+
var axo;
|
12
|
+
var e;
|
13
|
+
|
14
|
+
// NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry
|
15
|
+
|
16
|
+
try {
|
17
|
+
// version will be set for 7.X or greater players
|
18
|
+
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
|
19
|
+
version = axo.GetVariable("$version");
|
20
|
+
} catch (e) {
|
21
|
+
}
|
22
|
+
|
23
|
+
if (!version)
|
24
|
+
{
|
25
|
+
try {
|
26
|
+
// version will be set for 6.X players only
|
27
|
+
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
|
28
|
+
|
29
|
+
// installed player is some revision of 6.0
|
30
|
+
// GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
|
31
|
+
// so we have to be careful.
|
32
|
+
|
33
|
+
// default to the first public version
|
34
|
+
version = "WIN 6,0,21,0";
|
35
|
+
|
36
|
+
// throws if AllowScripAccess does not exist (introduced in 6.0r47)
|
37
|
+
axo.AllowScriptAccess = "always";
|
38
|
+
|
39
|
+
// safe to call for 6.0r47 or greater
|
40
|
+
version = axo.GetVariable("$version");
|
41
|
+
|
42
|
+
} catch (e) {
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
46
|
+
if (!version)
|
47
|
+
{
|
48
|
+
try {
|
49
|
+
// version will be set for 4.X or 5.X player
|
50
|
+
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
|
51
|
+
version = axo.GetVariable("$version");
|
52
|
+
} catch (e) {
|
53
|
+
}
|
54
|
+
}
|
55
|
+
|
56
|
+
if (!version)
|
57
|
+
{
|
58
|
+
try {
|
59
|
+
// version will be set for 3.X player
|
60
|
+
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
|
61
|
+
version = "WIN 3,0,18,0";
|
62
|
+
} catch (e) {
|
63
|
+
}
|
64
|
+
}
|
65
|
+
|
66
|
+
if (!version)
|
67
|
+
{
|
68
|
+
try {
|
69
|
+
// version will be set for 2.X player
|
70
|
+
axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
|
71
|
+
version = "WIN 2,0,0,11";
|
72
|
+
} catch (e) {
|
73
|
+
version = -1;
|
74
|
+
}
|
75
|
+
}
|
76
|
+
|
77
|
+
return version;
|
78
|
+
}
|
79
|
+
|
80
|
+
// JavaScript helper required to detect Flash Player PlugIn version information
|
81
|
+
function GetSwfVer(){
|
82
|
+
// NS/Opera version >= 3 check for Flash plugin in plugin array
|
83
|
+
var flashVer = -1;
|
84
|
+
|
85
|
+
if (navigator.plugins != null && navigator.plugins.length > 0) {
|
86
|
+
if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
|
87
|
+
var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
|
88
|
+
var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
|
89
|
+
var descArray = flashDescription.split(" ");
|
90
|
+
var tempArrayMajor = descArray[2].split(".");
|
91
|
+
var versionMajor = tempArrayMajor[0];
|
92
|
+
var versionMinor = tempArrayMajor[1];
|
93
|
+
if ( descArray[3] != "" ) {
|
94
|
+
tempArrayMinor = descArray[3].split("r");
|
95
|
+
} else {
|
96
|
+
tempArrayMinor = descArray[4].split("r");
|
97
|
+
}
|
98
|
+
var versionRevision = tempArrayMinor[1] > 0 ? tempArrayMinor[1] : 0;
|
99
|
+
var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
|
100
|
+
}
|
101
|
+
}
|
102
|
+
// MSN/WebTV 2.6 supports Flash 4
|
103
|
+
else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
|
104
|
+
// WebTV 2.5 supports Flash 3
|
105
|
+
else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
|
106
|
+
// older WebTV supports Flash 2
|
107
|
+
else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
|
108
|
+
else if ( isIE && isWin && !isOpera ) {
|
109
|
+
flashVer = ControlVersion();
|
110
|
+
}
|
111
|
+
return flashVer;
|
112
|
+
}
|
113
|
+
|
114
|
+
// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
|
115
|
+
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
|
116
|
+
{
|
117
|
+
versionStr = GetSwfVer();
|
118
|
+
if (versionStr == -1 ) {
|
119
|
+
return false;
|
120
|
+
} else if (versionStr != 0) {
|
121
|
+
if(isIE && isWin && !isOpera) {
|
122
|
+
// Given "WIN 2,0,0,11"
|
123
|
+
tempArray = versionStr.split(" "); // ["WIN", "2,0,0,11"]
|
124
|
+
tempString = tempArray[1]; // "2,0,0,11"
|
125
|
+
versionArray = tempString.split(","); // ['2', '0', '0', '11']
|
126
|
+
} else {
|
127
|
+
versionArray = versionStr.split(".");
|
128
|
+
}
|
129
|
+
var versionMajor = versionArray[0];
|
130
|
+
var versionMinor = versionArray[1];
|
131
|
+
var versionRevision = versionArray[2];
|
132
|
+
|
133
|
+
// is the major.revision >= requested major.revision AND the minor version >= requested minor
|
134
|
+
if (versionMajor > parseFloat(reqMajorVer)) {
|
135
|
+
return true;
|
136
|
+
} else if (versionMajor == parseFloat(reqMajorVer)) {
|
137
|
+
if (versionMinor > parseFloat(reqMinorVer))
|
138
|
+
return true;
|
139
|
+
else if (versionMinor == parseFloat(reqMinorVer)) {
|
140
|
+
if (versionRevision >= parseFloat(reqRevision))
|
141
|
+
return true;
|
142
|
+
}
|
143
|
+
}
|
144
|
+
return false;
|
145
|
+
}
|
146
|
+
}
|
147
|
+
|
148
|
+
function AC_AddExtension(src, ext)
|
149
|
+
{
|
150
|
+
if (src.indexOf('?') != -1)
|
151
|
+
return src.replace(/\?/, ext+'?');
|
152
|
+
else
|
153
|
+
return src + ext;
|
154
|
+
}
|
155
|
+
|
156
|
+
function AC_Generateobj(objAttrs, params, embedAttrs)
|
157
|
+
{
|
158
|
+
var str = '';
|
159
|
+
if (isIE && isWin && !isOpera)
|
160
|
+
{
|
161
|
+
str += '<object ';
|
162
|
+
for (var i in objAttrs)
|
163
|
+
str += i + '="' + objAttrs[i] + '" ';
|
164
|
+
for (var i in params)
|
165
|
+
str += '><param name="' + i + '" value="' + params[i] + '" /> ';
|
166
|
+
str += '></object>';
|
167
|
+
} else {
|
168
|
+
str += '<embed ';
|
169
|
+
for (var i in embedAttrs)
|
170
|
+
str += i + '="' + embedAttrs[i] + '" ';
|
171
|
+
str += '> </embed>';
|
172
|
+
}
|
173
|
+
|
174
|
+
document.write(str);
|
175
|
+
}
|
176
|
+
|
177
|
+
function AC_FL_RunContent(){
|
178
|
+
var ret =
|
179
|
+
AC_GetArgs
|
180
|
+
( arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
|
181
|
+
, "application/x-shockwave-flash"
|
182
|
+
);
|
183
|
+
AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
|
184
|
+
}
|
185
|
+
|
186
|
+
function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
|
187
|
+
var ret = new Object();
|
188
|
+
ret.embedAttrs = new Object();
|
189
|
+
ret.params = new Object();
|
190
|
+
ret.objAttrs = new Object();
|
191
|
+
for (var i=0; i < args.length; i=i+2){
|
192
|
+
var currArg = args[i].toLowerCase();
|
193
|
+
|
194
|
+
switch (currArg){
|
195
|
+
case "classid":
|
196
|
+
break;
|
197
|
+
case "pluginspage":
|
198
|
+
ret.embedAttrs[args[i]] = args[i+1];
|
199
|
+
break;
|
200
|
+
case "src":
|
201
|
+
case "movie":
|
202
|
+
args[i+1] = AC_AddExtension(args[i+1], ext);
|
203
|
+
ret.embedAttrs["src"] = args[i+1];
|
204
|
+
ret.params[srcParamName] = args[i+1];
|
205
|
+
break;
|
206
|
+
case "onafterupdate":
|
207
|
+
case "onbeforeupdate":
|
208
|
+
case "onblur":
|
209
|
+
case "oncellchange":
|
210
|
+
case "onclick":
|
211
|
+
case "ondblClick":
|
212
|
+
case "ondrag":
|
213
|
+
case "ondragend":
|
214
|
+
case "ondragenter":
|
215
|
+
case "ondragleave":
|
216
|
+
case "ondragover":
|
217
|
+
case "ondrop":
|
218
|
+
case "onfinish":
|
219
|
+
case "onfocus":
|
220
|
+
case "onhelp":
|
221
|
+
case "onmousedown":
|
222
|
+
case "onmouseup":
|
223
|
+
case "onmouseover":
|
224
|
+
case "onmousemove":
|
225
|
+
case "onmouseout":
|
226
|
+
case "onkeypress":
|
227
|
+
case "onkeydown":
|
228
|
+
case "onkeyup":
|
229
|
+
case "onload":
|
230
|
+
case "onlosecapture":
|
231
|
+
case "onpropertychange":
|
232
|
+
case "onreadystatechange":
|
233
|
+
case "onrowsdelete":
|
234
|
+
case "onrowenter":
|
235
|
+
case "onrowexit":
|
236
|
+
case "onrowsinserted":
|
237
|
+
case "onstart":
|
238
|
+
case "onscroll":
|
239
|
+
case "onbeforeeditfocus":
|
240
|
+
case "onactivate":
|
241
|
+
case "onbeforedeactivate":
|
242
|
+
case "ondeactivate":
|
243
|
+
case "type":
|
244
|
+
case "codebase":
|
245
|
+
case "id":
|
246
|
+
ret.objAttrs[args[i]] = args[i+1];
|
247
|
+
break;
|
248
|
+
case "width":
|
249
|
+
case "height":
|
250
|
+
case "align":
|
251
|
+
case "vspace":
|
252
|
+
case "hspace":
|
253
|
+
case "class":
|
254
|
+
case "title":
|
255
|
+
case "accesskey":
|
256
|
+
case "name":
|
257
|
+
case "tabindex":
|
258
|
+
ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
|
259
|
+
break;
|
260
|
+
default:
|
261
|
+
ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
|
262
|
+
}
|
263
|
+
}
|
264
|
+
ret.objAttrs["classid"] = classid;
|
265
|
+
if (mimeType) ret.embedAttrs["type"] = mimeType;
|
266
|
+
return ret;
|
267
|
+
}
|
268
|
+
|
269
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<!--
|
3
|
+
# Author:: Carlos Eduardo G. Franco
|
4
|
+
# Copyright:: Copyright (c) 2007 Carlos Eduardo G. Franco. All rights reserved.
|
5
|
+
# License:: MIT License.
|
6
|
+
-->
|
7
|
+
<mx:DataGrid xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="50%" cornerRadius="6" borderColor="#ffffff">
|
8
|
+
<mx:columns>
|
9
|
+
<%= template_for_inclusion %>
|
10
|
+
</mx:columns>
|
11
|
+
</mx:DataGrid>
|
@@ -0,0 +1,77 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
|
3
|
+
<!--
|
4
|
+
# Author:: Carlos Eduardo G. Franco
|
5
|
+
# Copyright:: Copyright (c) 2007 Carlos Eduardo G. Franco. All rights reserved.
|
6
|
+
# License:: MIT License.
|
7
|
+
-->
|
8
|
+
|
9
|
+
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
|
10
|
+
layout="absolute"
|
11
|
+
width="100%"
|
12
|
+
height="100%"
|
13
|
+
creationComplete="{listaRegistros.send();}"
|
14
|
+
xmlns:egenial="*"
|
15
|
+
backgroundColor="#808080"
|
16
|
+
backgroundGradientColors="[#808080, #ffffff]">
|
17
|
+
|
18
|
+
<mx:Style source="../css/flex_egenial.css"/>
|
19
|
+
|
20
|
+
<!-- HTTPServices -->
|
21
|
+
|
22
|
+
<mx:HTTPService id="listaRegistros" url="/<%= plural_name %>/getRegistros" useProxy="false" method="GET"/>
|
23
|
+
<mx:HTTPService id="update<%= singular_name %>" url="/<%= plural_name %>/update" useProxy="false" method="POST" result="listaRegistros.send()"/>
|
24
|
+
<mx:HTTPService id="delete<%= singular_name %>" url="/<%= plural_name %>/delete" useProxy="false" method="POST" result="listaRegistros.send()"/>
|
25
|
+
<mx:HTTPService id="create<%= singular_name %>" url="/<%= plural_name %>/create" useProxy="false" method="POST" result="listaRegistros.send()" contentType="application/xml">
|
26
|
+
<mx:request xmlns="">
|
27
|
+
<<%= singular_name %>>
|
28
|
+
<%= campos_parametros.call -%>
|
29
|
+
</<%= singular_name %>>
|
30
|
+
</mx:request>
|
31
|
+
</mx:HTTPService>
|
32
|
+
|
33
|
+
<!-- Fim -->
|
34
|
+
|
35
|
+
<mx:Script>
|
36
|
+
<![CDATA[
|
37
|
+
|
38
|
+
private function clearForm():void {
|
39
|
+
<%= campos_as.call -%>
|
40
|
+
}
|
41
|
+
|
42
|
+
private function send<%= singular_name %>Update():void {
|
43
|
+
var <%= singular_name %>:Object = new Object();
|
44
|
+
<%= singular_name %>['id'] = <%= singular_name %>_grid.selectedItem.id;
|
45
|
+
<%= campos_as_up.call -%>
|
46
|
+
update<%= singular_name %>.send(<%= singular_name %>);
|
47
|
+
}
|
48
|
+
|
49
|
+
]]>
|
50
|
+
</mx:Script>
|
51
|
+
|
52
|
+
<mx:TitleWindow width="500" layout="absolute" title="Window: <%= plural_name.capitalize %>" cornerRadius="9" x="20" top="10" bottom="10">
|
53
|
+
|
54
|
+
<!-- Inicia o formulario -->
|
55
|
+
<mx:Form width="100%" height="50%" backgroundColor="#fcfcfc">
|
56
|
+
|
57
|
+
<%= template_for_inclusion%>
|
58
|
+
|
59
|
+
</mx:Form>
|
60
|
+
<!-- Fim -->
|
61
|
+
|
62
|
+
|
63
|
+
<!-- Inicia a Grid que lista os registros -->
|
64
|
+
<egenial:_listaGrid id="<%= singular_name %>_grid" dataProvider="{listaRegistros.lastResult.<%= plural_name %>.<%= singular_name %>}" height="50%" cornerRadius="6" borderColor="#808080" bottom="0" left="0" right="0"/>
|
65
|
+
<!-- Fim da grid -->
|
66
|
+
|
67
|
+
<mx:ApplicationControlBar x="0" y="705" dock="true" width="100%">
|
68
|
+
<mx:Button label="Cadastrar" id="btn_cadastrar" icon="@Embed('../assets/cria_report.gif')" click="create<%= singular_name %>.send(); clearForm()"/>
|
69
|
+
<mx:Button label="Atualizar" id="btn_atualizar" icon="@Embed('../assets/edita_report.gif')" click="send<%= singular_name %>Update(); clearForm()"/>
|
70
|
+
<mx:Button label="Deletar" id="btn_deletar" icon="@Embed('../assets/deleta_report.gif')" click="delete<%= singular_name %>.send({id:<%= singular_name %>_grid.selectedItem.id}); "/>
|
71
|
+
<!-- <mx:Button label="Pesquisar" id="btn_pesquisar" icon="@Embed('../assets/pesquisar.gif')"/>-->
|
72
|
+
<mx:Button label="Limpar" id="btn_limpar" icon="@Embed('../assets/table_16x16.gif')" click="clearForm()"/>
|
73
|
+
</mx:ApplicationControlBar>
|
74
|
+
|
75
|
+
</mx:TitleWindow>
|
76
|
+
|
77
|
+
</mx:Application>
|
data/templates/comp.rake
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
# Tarefa responsavel por compilar os fontes mxml gerado pelo flex_egenial_scaffold
|
2
|
+
|
3
|
+
# Author:: Carlos Eduardo G. Franco
|
4
|
+
# Copyright:: Copyright (c) 2007 Carlos Eduardo G. Franco. All rights reserved.
|
5
|
+
# License:: MIT License.
|
6
|
+
|
7
|
+
home = "F:/FAMILIA_ADOBE/FLEX_SDK_2"
|
8
|
+
bin = "#{home}/bin"
|
9
|
+
lib = "#{home}/lib"
|
10
|
+
frameworks = "#{home}/frameworks"
|
11
|
+
compilador = "java -jar #{lib}/mxmlc.jar -load-config #{frameworks}/flex-config.xml -compiler.optimize -file-specs"
|
12
|
+
|
13
|
+
#java -jar ../lib/mxmlc.jar -load-config ../frameworks/flex-config.xml -file-specs c:/flex2/MyApp.mxml
|
14
|
+
|
15
|
+
namespace :comp do
|
16
|
+
|
17
|
+
task :flex => :environment do
|
18
|
+
|
19
|
+
puts ''
|
20
|
+
puts 'Executando tarefa de compilacao flex_egenial_scaffold'
|
21
|
+
puts ''
|
22
|
+
puts ENV['arq']
|
23
|
+
|
24
|
+
if File.exist?("public/sis/#{ENV['arq']}/#{ENV['arq']}.mxml")
|
25
|
+
puts 'Arquivo encontrado, preparando para a compilacao, aguarde...'
|
26
|
+
arquivo = "public/sis/#{ENV['arq']}/#{ENV['arq']}.mxml"
|
27
|
+
result = system("#{compilador} #{arquivo}")
|
28
|
+
puts 'Tarefa concluida ;-)'
|
29
|
+
raise("Houve uma falha na compilacao... msg: #{$?}") unless result
|
30
|
+
else
|
31
|
+
puts ' '
|
32
|
+
puts 'Arquivo nao encontrado'
|
33
|
+
puts '1 - Verifique se o nome do arquivo esta correto'
|
34
|
+
puts '2 - Verifique se realmente o arquivo foi gerado pelo flex_egenial_scaffold.'
|
35
|
+
end
|
36
|
+
|
37
|
+
puts ''
|
38
|
+
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# Author:: Carlos Eduardo G. Franco
|
2
|
+
# Copyright:: Copyright (c) 2007 Carlos Eduardo G. Franco. All rights reserved.
|
3
|
+
# License:: MIT License.
|
4
|
+
|
5
|
+
class <%= controller_class_name %>Controller < ApplicationController
|
6
|
+
|
7
|
+
# Lista os dados da Grid
|
8
|
+
def getRegistros
|
9
|
+
result = <%= model_name %>.find(:all)
|
10
|
+
render :xml => result.to_xml
|
11
|
+
end
|
12
|
+
|
13
|
+
def create
|
14
|
+
@<%= model_name %> = <%= model_name %>.new(params[:<%= singular_name %>])
|
15
|
+
@<%= model_name %>.save
|
16
|
+
render :xml => @<%= model_name %>.to_xml
|
17
|
+
end
|
18
|
+
|
19
|
+
def update
|
20
|
+
@<%= model_name %> = <%= model_name %>.find(params[:id])
|
21
|
+
@<%= model_name %>.update_attributes(params[:<%= singular_name %>])
|
22
|
+
render :xml => @<%= model_name %>.to_xml
|
23
|
+
end
|
24
|
+
|
25
|
+
def delete
|
26
|
+
@<%= model_name %> = <%= model_name %>.find(params[:id])
|
27
|
+
@<%= model_name %>.destroy
|
28
|
+
render :xml => @<%= model_name %>.to_xml
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,37 @@
|
|
1
|
+
/*
|
2
|
+
# Author:: Carlos Eduardo G. Franco
|
3
|
+
# Copyright:: Copyright (c) 2007 Carlos Eduardo G. Franco. All rights reserved.
|
4
|
+
# License:: MIT License.
|
5
|
+
*/
|
6
|
+
|
7
|
+
/*
|
8
|
+
Folha de estilo da aplicacao
|
9
|
+
Para maiores informações consulte a documentacao do flex.
|
10
|
+
*/
|
11
|
+
|
12
|
+
Application {
|
13
|
+
themeColor:#808080;
|
14
|
+
color: #000000;
|
15
|
+
backgroundColor: #808080 ;
|
16
|
+
}
|
17
|
+
|
18
|
+
Panel {
|
19
|
+
cornerRadius: 9;
|
20
|
+
shadowDistance: 2;
|
21
|
+
headerColors: #ffffff, #cccccc;
|
22
|
+
footerColors: #e7e7e7, #c7c7c7;
|
23
|
+
}
|
24
|
+
|
25
|
+
DataGrid {
|
26
|
+
rollOverColor: #f5f5f5;
|
27
|
+
selectionColor: #808080;
|
28
|
+
}
|
29
|
+
|
30
|
+
TextInput {
|
31
|
+
backgroundAlpha: 1;
|
32
|
+
}
|
33
|
+
|
34
|
+
Button {
|
35
|
+
cornerRadius: 5;
|
36
|
+
}
|
37
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= all_input_tags(@model_instance, @singular_name, {}) %>
|
@@ -0,0 +1,102 @@
|
|
1
|
+
# Author:: Carlos Eduardo G. Franco
|
2
|
+
# Copyright:: Copyright (c) 2007 Carlos Eduardo G. Franco. All rights reserved.
|
3
|
+
# License:: MIT License.
|
4
|
+
|
5
|
+
require File.dirname(__FILE__) + '<%= "/.." * controller_class_nesting_depth %>/../test_helper'
|
6
|
+
require '<%= controller_file_path %>_controller'
|
7
|
+
|
8
|
+
# Re-raise errors caught by the controller.
|
9
|
+
class <%= controller_class_name %>Controller; def rescue_action(e) raise e end; end
|
10
|
+
|
11
|
+
class <%= controller_class_name %>ControllerTest < Test::Unit::TestCase
|
12
|
+
fixtures :<%= table_name %>
|
13
|
+
|
14
|
+
def setup
|
15
|
+
@controller = <%= controller_class_name %>Controller.new
|
16
|
+
@request = ActionController::TestRequest.new
|
17
|
+
@response = ActionController::TestResponse.new
|
18
|
+
end
|
19
|
+
|
20
|
+
<% for action in unscaffolded_actions -%>
|
21
|
+
def test_<%= action %>
|
22
|
+
get :<%= action %>
|
23
|
+
assert_response :success
|
24
|
+
assert_template '<%= action %>'
|
25
|
+
end
|
26
|
+
|
27
|
+
<% end -%>
|
28
|
+
<% unless suffix -%>
|
29
|
+
def test_index
|
30
|
+
get :index
|
31
|
+
assert_response :success
|
32
|
+
assert_template 'list'
|
33
|
+
end
|
34
|
+
|
35
|
+
<% end -%>
|
36
|
+
def test_list<%= suffix %>
|
37
|
+
get :list<%= suffix %>
|
38
|
+
|
39
|
+
assert_response :success
|
40
|
+
assert_template 'list<%= suffix %>'
|
41
|
+
|
42
|
+
assert_not_nil assigns(:<%= plural_name %>)
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_show<%= suffix %>
|
46
|
+
get :show<%= suffix %>, :id => 1
|
47
|
+
|
48
|
+
assert_response :success
|
49
|
+
assert_template 'show'
|
50
|
+
|
51
|
+
assert_not_nil assigns(:<%= singular_name %>)
|
52
|
+
assert assigns(:<%= singular_name %>).valid?
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_new<%= suffix %>
|
56
|
+
get :new<%= suffix %>
|
57
|
+
|
58
|
+
assert_response :success
|
59
|
+
assert_template 'new<%= suffix %>'
|
60
|
+
|
61
|
+
assert_not_nil assigns(:<%= singular_name %>)
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_create
|
65
|
+
num_<%= plural_name %> = <%= model_name %>.count
|
66
|
+
|
67
|
+
post :create<%= suffix %>, :<%= singular_name %> => {}
|
68
|
+
|
69
|
+
assert_response :redirect
|
70
|
+
assert_redirected_to :action => 'list<%= suffix %>'
|
71
|
+
|
72
|
+
assert_equal num_<%= plural_name %> + 1, <%= model_name %>.count
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_edit<%= suffix %>
|
76
|
+
get :edit<%= suffix %>, :id => 1
|
77
|
+
|
78
|
+
assert_response :success
|
79
|
+
assert_template 'edit<%= suffix %>'
|
80
|
+
|
81
|
+
assert_not_nil assigns(:<%= singular_name %>)
|
82
|
+
assert assigns(:<%= singular_name %>).valid?
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_update<%= suffix %>
|
86
|
+
post :update<%= suffix %>, :id => 1
|
87
|
+
assert_response :redirect
|
88
|
+
assert_redirected_to :action => 'show<%= suffix %>', :id => 1
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_destroy<%= suffix %>
|
92
|
+
assert_not_nil <%= model_name %>.find(1)
|
93
|
+
|
94
|
+
post :destroy, :id => 1
|
95
|
+
assert_response :redirect
|
96
|
+
assert_redirected_to :action => 'list<%= suffix %>'
|
97
|
+
|
98
|
+
assert_raise(ActiveRecord::RecordNotFound) {
|
99
|
+
<%= model_name %>.find(1)
|
100
|
+
}
|
101
|
+
end
|
102
|
+
end
|
data/templates/helper.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
4
|
+
<script type='text/javascript' language='JavaScript1.2' charset='utf-8'>
|
5
|
+
var v = new top.Vars(top.getSearch(window));
|
6
|
+
var fv = v.toString('$_');
|
7
|
+
</script>
|
8
|
+
</head>
|
9
|
+
<body >
|
10
|
+
<script type='text/javascript' language='JavaScript1.2' charset='utf-8'>
|
11
|
+
document.writeln('<object id=\"utility\" name=\" \" classid=\"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000\" codebase=\"" + activexDownloadURL + "#version=7,0,14,0\" width=\"100\" height=\"50\">');
|
12
|
+
document.writeln('<param name=\"movie\" value=\"history.swf\" />');
|
13
|
+
document.writeln('<param name=\"FlashVars\" value=\"'+fv+'&$_lconid='+top.lc_id+'\"/>');
|
14
|
+
document.writeln('<param name=\"quality\" value=\"high\" />');
|
15
|
+
document.writeln('<param name=\"bgcolor\" value=\"#FFFFFF\" />');
|
16
|
+
document.writeln('<param name=\"profile\" value=\"false\" />');
|
17
|
+
document.writeln('<embed id=\"utilityEmbed\" name=\"history.swf\" src=\"history.swf\" type=\"application/x-shockwave-flash\" flashvars=\"'+fv+'&$_lconid='+top.lc_id+'\" profile=\"false\" quality=\"high\" bgcolor=\"#FFFFFF\" width=\"100\" height=\"50\" align=\"\" pluginspage=\"" + pluginDownloadURL + "\"></embed>');
|
18
|
+
document.writeln('</object>');
|
19
|
+
</script>
|
20
|
+
</body>
|
21
|
+
</html>
|
@@ -0,0 +1,48 @@
|
|
1
|
+
// $Revision: 1.49 $
|
2
|
+
// Vars
|
3
|
+
Vars = function(qStr) {
|
4
|
+
this.numVars = 0;
|
5
|
+
if(qStr != null) {
|
6
|
+
var nameValue, name;
|
7
|
+
var pairs = qStr.split('&');
|
8
|
+
var pairLen = pairs.length;
|
9
|
+
for(var i = 0; i < pairLen; i++) {
|
10
|
+
var pair = pairs[i];
|
11
|
+
if( (pair.indexOf('=')!= -1) && (pair.length > 3) ) {
|
12
|
+
var nameValue = pair.split('=');
|
13
|
+
var name = nameValue[0];
|
14
|
+
var value = nameValue[1];
|
15
|
+
if(this[name] == null && name.length > 0 && value.length > 0) {
|
16
|
+
this[name] = value;
|
17
|
+
this.numVars++;
|
18
|
+
}
|
19
|
+
}
|
20
|
+
}
|
21
|
+
}
|
22
|
+
}
|
23
|
+
Vars.prototype.toString = function(pre) {
|
24
|
+
var result = '';
|
25
|
+
if(pre == null) { pre = ''; }
|
26
|
+
for(var i in this) {
|
27
|
+
if(this[i] != null && typeof(this[i]) != 'object' && typeof(this[i]) != 'function' && i != 'numVars') {
|
28
|
+
result += pre + i + '=' + this[i] + '&';
|
29
|
+
}
|
30
|
+
}
|
31
|
+
if(result.length > 0) result = result.substr(0, result.length-1);
|
32
|
+
return result;
|
33
|
+
}
|
34
|
+
function getSearch(wRef) {
|
35
|
+
var searchStr = '';
|
36
|
+
if(wRef.location.search.length > 1) {
|
37
|
+
searchStr = new String(wRef.location.search);
|
38
|
+
searchStr = searchStr.substring(1, searchStr.length);
|
39
|
+
}
|
40
|
+
return searchStr;
|
41
|
+
}
|
42
|
+
var lc_id = Math.floor(Math.random() * 100000).toString(16);
|
43
|
+
if (this != top)
|
44
|
+
{
|
45
|
+
top.Vars = Vars;
|
46
|
+
top.getSearch = getSearch;
|
47
|
+
top.lc_id = lc_id;
|
48
|
+
}
|
Binary file
|
@@ -0,0 +1,112 @@
|
|
1
|
+
<!-- saved from url=(0014)about:internet -->
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
5
|
+
<title></title>
|
6
|
+
<script src="/sis/AC_OETags.js" language="javascript"></script>
|
7
|
+
<style>
|
8
|
+
body { margin: 0px; overflow:hidden }
|
9
|
+
</style>
|
10
|
+
<script language="JavaScript" type="text/javascript">
|
11
|
+
<!--
|
12
|
+
// -----------------------------------------------------------------------------
|
13
|
+
// Globals
|
14
|
+
// Major version of Flash required
|
15
|
+
var requiredMajorVersion = 9;
|
16
|
+
// Minor version of Flash required
|
17
|
+
var requiredMinorVersion = 0;
|
18
|
+
// Minor version of Flash required
|
19
|
+
var requiredRevision = 0;
|
20
|
+
// -----------------------------------------------------------------------------
|
21
|
+
// -->
|
22
|
+
</script>
|
23
|
+
</head>
|
24
|
+
|
25
|
+
<body scroll="no">
|
26
|
+
<script language="JavaScript" type="text/javascript" src="/sis/history.js"></script>
|
27
|
+
<script language="JavaScript" type="text/javascript">
|
28
|
+
<!--
|
29
|
+
// Version check for the Flash Player that has the ability to start Player Product Install (6.0r65)
|
30
|
+
var hasProductInstall = DetectFlashVer(6, 0, 65);
|
31
|
+
|
32
|
+
// Version check based upon the values defined in globals
|
33
|
+
var hasRequestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
|
34
|
+
|
35
|
+
|
36
|
+
// Check to see if a player with Flash Product Install is available and the version does not meet the requirements for playback
|
37
|
+
if ( hasProductInstall && !hasRequestedVersion ) {
|
38
|
+
// MMdoctitle is the stored document.title value used by the installation process to close the window that started the process
|
39
|
+
// This is necessary in order to close browser windows that are still utilizing the older version of the player after installation has completed
|
40
|
+
// DO NOT MODIFY THE FOLLOWING FOUR LINES
|
41
|
+
// Location visited after installation is complete if installation is required
|
42
|
+
var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";
|
43
|
+
var MMredirectURL = window.location;
|
44
|
+
document.title = document.title.slice(0, 47) + " - Flash Player Installation";
|
45
|
+
var MMdoctitle = document.title;
|
46
|
+
|
47
|
+
AC_FL_RunContent(
|
48
|
+
"src", "playerProductInstall",
|
49
|
+
"FlashVars", "MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle+"",
|
50
|
+
"width", "100%",
|
51
|
+
"height", "100%",
|
52
|
+
"align", "middle",
|
53
|
+
"id", "<%= plural_name %>",
|
54
|
+
"quality", "high",
|
55
|
+
"bgcolor", "#666666",
|
56
|
+
"name", "<%= plural_name %>",
|
57
|
+
"allowScriptAccess","sameDomain",
|
58
|
+
"type", "application/x-shockwave-flash",
|
59
|
+
"pluginspage", "http://www.adobe.com/go/getflashplayer"
|
60
|
+
);
|
61
|
+
} else if (hasRequestedVersion) {
|
62
|
+
// if we've detected an acceptable version
|
63
|
+
// embed the Flash Content SWF when all tests are passed
|
64
|
+
AC_FL_RunContent(
|
65
|
+
"src", "/sis/<%= plural_name %>/<%= plural_name %>",
|
66
|
+
"width", "100%",
|
67
|
+
"height", "100%",
|
68
|
+
"align", "middle",
|
69
|
+
"id", "<%= plural_name %>",
|
70
|
+
"quality", "high",
|
71
|
+
"bgcolor", "#666666",
|
72
|
+
"name", "<%= plural_name %>",
|
73
|
+
"flashvars",'historyUrl=/sis/history.htm%3F&lconid=' + lc_id + '',
|
74
|
+
"allowScriptAccess","sameDomain",
|
75
|
+
"type", "application/x-shockwave-flash",
|
76
|
+
"pluginspage", "http://www.adobe.com/go/getflashplayer"
|
77
|
+
);
|
78
|
+
} else { // flash is too old or we can't detect the plugin
|
79
|
+
var alternateContent = 'Alternate HTML content should be placed here. '
|
80
|
+
+ 'This content requires the Adobe Flash Player. '
|
81
|
+
+ '<a href=http://www.adobe.com/go/getflash/>Get Flash</a>';
|
82
|
+
document.write(alternateContent); // insert non-flash content
|
83
|
+
}
|
84
|
+
// -->
|
85
|
+
</script>
|
86
|
+
<noscript>
|
87
|
+
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
|
88
|
+
id="aplicacao" width="100%" height="100%"
|
89
|
+
codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
|
90
|
+
<param name="movie" value="/sis/<%= plural_name %>/<%= plural_name %>" />
|
91
|
+
<param name="quality" value="high" />
|
92
|
+
<param name="bgcolor" value="#666666" />
|
93
|
+
<param name="allowScriptAccess" value="sameDomain" />
|
94
|
+
<embed src="/sis/<%= plural_name %>/<%= plural_name %>" quality="high" bgcolor="#869ca7"
|
95
|
+
width="100%" height="100%" name="aplicacao" align="middle"
|
96
|
+
play="true"
|
97
|
+
loop="false"
|
98
|
+
quality="high"
|
99
|
+
allowScriptAccess="sameDomain"
|
100
|
+
type="application/x-shockwave-flash"
|
101
|
+
pluginspage="http://www.adobe.com/go/getflashplayer">
|
102
|
+
</embed>
|
103
|
+
</object>
|
104
|
+
</noscript>
|
105
|
+
<iframe name="_history" src="/sis/history.htm" frameborder="0" scrolling="no" width="22" height="0"></iframe>
|
106
|
+
</body>
|
107
|
+
<!--
|
108
|
+
# Author:: Carlos Eduardo G. Franco
|
109
|
+
# Copyright:: Copyright (c) 2007 Carlos Eduardo G. Franco. All rights reserved.
|
110
|
+
# License:: MIT License.
|
111
|
+
-->
|
112
|
+
</html>
|
data/templates/model.rb
ADDED
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= grid_tags(@model_instance, @singular_name, {}) %>
|
metadata
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
rubygems_version: 0.9.0
|
3
|
+
specification_version: 1
|
4
|
+
name: flex_egenial_scaffold
|
5
|
+
version: !ruby/object:Gem::Version
|
6
|
+
version: 0.0.1
|
7
|
+
date: 2007-01-09 00:00:00 -02:00
|
8
|
+
summary: Flex e-Genial Scaffol Generators
|
9
|
+
require_paths:
|
10
|
+
- lib
|
11
|
+
email: carloseduardo@egenial.com.br
|
12
|
+
homepage: http://blog.egenial.com.br
|
13
|
+
rubyforge_project:
|
14
|
+
description: Flex e-Genial Scaffold generator is a rails generator for Flexfied scaffolds
|
15
|
+
autorequire: rails_generator/generators/components/scaffold/scaffold_generator
|
16
|
+
default_executable:
|
17
|
+
bindir: bin
|
18
|
+
has_rdoc: false
|
19
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.0
|
24
|
+
version:
|
25
|
+
platform: ruby
|
26
|
+
signing_key:
|
27
|
+
cert_chain:
|
28
|
+
post_install_message:
|
29
|
+
authors:
|
30
|
+
- Carlos Eduardo G. Franco
|
31
|
+
files:
|
32
|
+
- README
|
33
|
+
- CHANGELOG
|
34
|
+
- MIT-LICENSE
|
35
|
+
- flex_egenial_scaffold_generator.rb
|
36
|
+
- templates/
|
37
|
+
- templates/_listaGrid.mxml
|
38
|
+
- templates/AC_OETags.js
|
39
|
+
- templates/aplicacao.mxml
|
40
|
+
- templates/comp.rake
|
41
|
+
- templates/controller.rb
|
42
|
+
- templates/cria_report.gif
|
43
|
+
- templates/edita_report.gif
|
44
|
+
- templates/flex_egenial.css
|
45
|
+
- templates/form_scaffolding.rhtml
|
46
|
+
- templates/functional_test.rb
|
47
|
+
- templates/helper.rb
|
48
|
+
- templates/history.htm
|
49
|
+
- templates/history.js
|
50
|
+
- templates/history.swf
|
51
|
+
- templates/index.html
|
52
|
+
- templates/model.rb
|
53
|
+
- templates/pesquisar.gif
|
54
|
+
- templates/deleta_report.gif
|
55
|
+
- templates/playerProductInstall.swf
|
56
|
+
- templates/table_16x16.gif
|
57
|
+
- templates/view_list.rhtml
|
58
|
+
- templates/crossdomain.xml
|
59
|
+
test_files: []
|
60
|
+
|
61
|
+
rdoc_options: []
|
62
|
+
|
63
|
+
extra_rdoc_files: []
|
64
|
+
|
65
|
+
executables: []
|
66
|
+
|
67
|
+
extensions: []
|
68
|
+
|
69
|
+
requirements:
|
70
|
+
- none
|
71
|
+
dependencies: []
|
72
|
+
|