frontline 0.0.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. data/CHANGELOG.md +0 -0
  2. data/LICENSE +19 -0
  3. data/README.md +92 -0
  4. data/Rakefile +21 -0
  5. data/assets/ansi_up.js +143 -0
  6. data/assets/api.js +533 -0
  7. data/assets/bootstrap/css/bootstrap-responsive.min.css +9 -0
  8. data/assets/bootstrap/css/bootstrap.min.css +9 -0
  9. data/assets/bootstrap/img/glyphicons-halflings-white.png +0 -0
  10. data/assets/bootstrap/img/glyphicons-halflings.png +0 -0
  11. data/assets/bootstrap/js/bootstrap.min.js +6 -0
  12. data/assets/jquery.cookie.js +95 -0
  13. data/assets/jquery.js +6 -0
  14. data/assets/noty/jquery.noty.js +520 -0
  15. data/assets/noty/layouts/top.js +34 -0
  16. data/assets/noty/layouts/topRight.js +43 -0
  17. data/assets/noty/promise.js +432 -0
  18. data/assets/noty/themes/default.js +156 -0
  19. data/assets/select2-bootstrap.css +86 -0
  20. data/assets/select2/select2-spinner.gif +0 -0
  21. data/assets/select2/select2.css +615 -0
  22. data/assets/select2/select2.min.js +22 -0
  23. data/assets/select2/select2.png +0 -0
  24. data/assets/select2/select2x2.png +0 -0
  25. data/assets/typeahead.js-bootstrap.css +49 -0
  26. data/assets/typeahead.min.js +7 -0
  27. data/assets/ui.css +28 -0
  28. data/assets/xhr.js +19 -0
  29. data/bin/frontline +19 -0
  30. data/frontline.gemspec +31 -0
  31. data/images/0.png +0 -0
  32. data/lib/frontline.rb +23 -0
  33. data/lib/frontline/actions.rb +15 -0
  34. data/lib/frontline/app.rb +86 -0
  35. data/lib/frontline/controllers/controllers.rb +71 -0
  36. data/lib/frontline/controllers/index.rb +167 -0
  37. data/lib/frontline/controllers/models.rb +104 -0
  38. data/lib/frontline/controllers/sources.rb +11 -0
  39. data/lib/frontline/frontline.rb +11 -0
  40. data/lib/frontline/helpers.rb +179 -0
  41. data/lib/frontline/inflect.rb +183 -0
  42. data/lib/frontline/templates/controllers/controller.slim +27 -0
  43. data/lib/frontline/templates/controllers/index.slim +56 -0
  44. data/lib/frontline/templates/controllers/route.slim +17 -0
  45. data/lib/frontline/templates/controllers/route_editor.slim +45 -0
  46. data/lib/frontline/templates/controllers/route_layout.slim +88 -0
  47. data/lib/frontline/templates/editor.slim +17 -0
  48. data/lib/frontline/templates/error.slim +36 -0
  49. data/lib/frontline/templates/index/applications.slim +123 -0
  50. data/lib/frontline/templates/layout.slim +182 -0
  51. data/lib/frontline/templates/models/index.slim +31 -0
  52. data/lib/frontline/templates/models/migration.slim +46 -0
  53. data/lib/frontline/templates/models/migration_layout.slim +159 -0
  54. data/lib/frontline/templates/models/model.slim +34 -0
  55. metadata +245 -0
@@ -0,0 +1,31 @@
1
+ javascript:
2
+ var modelCrudifier = new Frontline.CRUD('#{route :model}', '#body');
3
+
4
+ ul.nav.nav-tabs
5
+ li.dropdown.active
6
+ a href="#modelsTab" data-toggle="tab" Models
7
+ li.dropdown
8
+ a href="#newModelTab" data-toggle="tab" New Model
9
+
10
+ .tab-content
11
+ .tab-pane.active#modelsTab
12
+ #body == render_p :model
13
+
14
+ .tab-pane#newModelTab
15
+ form.form-inline#modelForm
16
+ .input-append
17
+ input.input-xxlarge name="name" type="text" placeholder="Model names, space separated"
18
+ a.btn href="#" onclick="modelCrudifier.create('#modelForm');" value="Go"
19
+ i.icon-play
20
+
21
+ hr
22
+ .lead Associations
23
+ .form-horizontal
24
+ - Enginery::ORM_ASSOCIATIONS.each do |a|
25
+ .control-group
26
+ label.control-label = a
27
+ .controls
28
+ input name=a type="text" class=association_hint_class(a)
29
+ - if [:has_one, :has_many].include?(a)
30
+ div style="margin: .2em;"
31
+ input name=('throughFor[%s]' % a) type="text" placeholder="through"
@@ -0,0 +1,46 @@
1
+ - if model = models[model]
2
+ == js_tag src: route(:assets, :xhr), suffix: Frontline::ASSETS_SUFFIX
3
+
4
+ - crudifier = 'migratorFor' + model[:dom_id]
5
+ - form_id = crudifier + 'Form'
6
+
7
+ form.form-inline.controls-row id=form_id
8
+
9
+ label.checkbox
10
+ - onclick = "$('#%s :input[name=migrations]').prop('checked', this.checked);"
11
+ input type="checkbox" onclick=(onclick % form_id)
12
+ span.text-info Toggle All
13
+ |   |  
14
+
15
+ label.checkbox
16
+ input name="forceRun" type="checkbox" value=true
17
+ span.text-warning Force Run
18
+
19
+ hr
20
+ - model[:migrations].each_pair do |name, m|
21
+ div style="display: inline-block; margin-bottom: .5em;"
22
+ - lastrunid = 'dropdownFor-%sModel-MigrationN%s' % [model[:dom_id], m[:step]]
23
+ .btn-group
24
+ a.btn href="#"
25
+ input name="migrations" type="checkbox" value=m[:step] style="margin:0;"
26
+ |  
27
+ span onclick=("fileCrudifier.toggleEditor('%s');" % m[:file])
28
+ = name
29
+ - data = [route(:last_run, file: m[:path]), lastrunid]
30
+ - oncl = "$.get('%s', function(r) { $('#%s').html(r) })" % data
31
+ button.btn.dropdown-toggle data-toggle="dropdown" onclick=oncl
32
+ span.caret
33
+ ul.dropdown-menu
34
+ li
35
+ a
36
+ div
37
+ b Last Run
38
+ small id=lastrunid unknown
39
+
40
+ li.divider
41
+ li
42
+ - confirm = 'Migration will be deleted. Continue?'
43
+ - onclick = "%s.delete('%s', '%s');" % [crudifier, m[:step], confirm]
44
+ a href="#" onclick=onclick
45
+ i.icon-remove
46
+ |  Delete
@@ -0,0 +1,159 @@
1
+ == js_tag src: route(:assets, :xhr), suffix: Frontline::ASSETS_SUFFIX
2
+
3
+ - migrator = 'migratorFor' + model[:dom_id]
4
+ - form_id = migrator + 'Form'
5
+
6
+ javascript:
7
+ var #{migrator} = new Frontline.Migrations(
8
+ '#{route(:migration, model[:name])}', '#migrationsFor#{model[:dom_id]}'
9
+ );
10
+
11
+ ul.nav.nav-pills
12
+ li.dropdown.active
13
+ a.dropdown-toggle href="#" data-toggle="dropdown"
14
+ = model[:name]
15
+ |  Migrations 
16
+ b class="caret"
17
+ ul.dropdown-menu
18
+ - %w[up down].each do |v|
19
+ li
20
+ - data = [route(:run_migrations), v, form_id]
21
+ - onclick = "new Frontline.Migrations('%s').run('%s', '#%s');" % data
22
+ a href="#" onclick=onclick
23
+ i class=('icon-arrow-%s' % v)
24
+ = " Run selected migrations %s" % v.upcase
25
+
26
+ - if datamapper?
27
+ li.divider
28
+ - %w[auto_upgrade auto_migrate].each do |task|
29
+ li
30
+ - confirm = 'This will run %s for %s model. Continue?' % [task, model[:name]]
31
+ - url = route(:run_datamapper_task, task, model[:name])
32
+ - onclick = "Frontline.runCmd('%s', '%s')" % [url, confirm]
33
+ a href="#" onclick=onclick
34
+ i.icon-play
35
+ |  
36
+ = task.gsub('_', ' ')
37
+
38
+ li.dropdown
39
+ a.dropdown-toggle data-toggle="dropdown" href="#"
40
+ | Model 
41
+ b class="caret"
42
+ ul.dropdown-menu
43
+ li
44
+ - onclick = "fileCrudifier.toggleEditor('%s');" % model[:file]
45
+ a href="#" onclick=onclick
46
+ i.icon-edit
47
+ span Edit
48
+ li.divider
49
+ li
50
+ - confirm = 'You are about to delete an entire Model! This action can not be undone! Continue?'
51
+ - onclick = "modelCrudifier.delete('%s', '%s');" % [model[:name], confirm]
52
+ a href="#" onclick=onclick
53
+ i.icon-remove
54
+ span Delete
55
+
56
+ li.dropdown
57
+ a.dropdown-toggle data-toggle="dropdown" href="#"
58
+ | Admin 
59
+ b class="caret"
60
+ ul.dropdown-menu
61
+ li
62
+ - onclick = "fileCrudifier.toggleEditor('%s');" % model[:rear_file]
63
+ a href="#" onclick=onclick
64
+ i.icon-edit
65
+ span Edit
66
+
67
+ li.divider
68
+ li
69
+ - url = File.join(session[:application].last, model[:rear_path].to_s)
70
+ - onclick = "Frontline.openWindow({url: '%s'});" % url
71
+ a href="#" onclick=onclick
72
+ i.icon-arrow-right
73
+ span Open
74
+
75
+ div id=("migrationsFor%s" % model[:dom_id])
76
+ == render_p(:migration, model: model[:name])
77
+
78
+ - dom_id = %w[new update rename].inject({}) {|f,o| f.merge o.to_sym => [o, 'ColumnFor', model[:dom_id]].join}
79
+ .tabbable
80
+ ul.nav.nav-tabs
81
+ - dom_id.each_pair do |op,id|
82
+ li.text-right
83
+ a href=('#' + id) data-toggle="tab" = op.to_s + ' column'
84
+
85
+ .tab-content
86
+ .tab-pane id=dom_id[:new]
87
+ - form_id = 'FormFor' << dom_id[:new]
88
+ form.form-horizontal id=form_id
89
+ input type="hidden" name="model" value=model[:name]
90
+
91
+ .control-group
92
+ label.control-label column name
93
+ .controls
94
+ input name="name" type="text"
95
+ .control-group
96
+ label.control-label column type
97
+ .controls
98
+ input.columnTypeSelector name="type" type="text" placeholder="String"
99
+ .control-group
100
+ label.control-label migration label
101
+ .controls
102
+ input.columnTypeSelector name="label" type="text"
103
+ br
104
+ small.muted optional
105
+ .control-group
106
+ label
107
+ .controls
108
+ - onclick = "%s.newColumn('#%s');" % [migrator, form_id]
109
+ input.btn type="button" value="Go" onclick=onclick
110
+
111
+ .tab-pane id=dom_id[:update]
112
+ - form_id = 'FormFor' << dom_id[:update]
113
+ form.form-horizontal id=form_id
114
+ input type="hidden" name="model" value=model[:name]
115
+
116
+ .control-group
117
+ label.control-label column
118
+ .controls
119
+ input name="name" type="text"
120
+ .control-group
121
+ label.control-label new type
122
+ .controls
123
+ input.columnTypeSelector name="type" type="text"
124
+ .control-group
125
+ label.control-label migration label
126
+ .controls
127
+ input.columnTypeSelector name="label" type="text"
128
+ br
129
+ small.muted optional
130
+ .control-group
131
+ label
132
+ .controls
133
+ - onclick = "%s.updateColumn('#%s');" % [migrator, form_id]
134
+ input.btn type="button" value="Go" onclick=onclick
135
+
136
+ .tab-pane id=dom_id[:rename]
137
+ - form_id = 'FormFor' << dom_id[:rename]
138
+ form.form-horizontal id=form_id
139
+ input type="hidden" name="model" value=model[:name]
140
+
141
+ .control-group
142
+ label.control-label column
143
+ .controls
144
+ input name="name" type="text"
145
+ .control-group
146
+ label.control-label new name
147
+ .controls
148
+ input.columnTypeSelector name="new_name" type="text"
149
+ .control-group
150
+ label.control-label migration label
151
+ .controls
152
+ input.columnTypeSelector name="label" type="text"
153
+ br
154
+ small.muted optional
155
+ .control-group
156
+ label
157
+ .controls
158
+ - onclick = "%s.renameColumn('#%s');" % [migrator, form_id]
159
+ input.btn type="button" value="Go" onclick=onclick
@@ -0,0 +1,34 @@
1
+ == js_tag src: route(:assets, :xhr), suffix: Frontline::ASSETS_SUFFIX
2
+
3
+ - if (result = models).is_a?(Hash)
4
+ .tabbable.tabs-left
5
+ ul.nav.nav-tabs#modelsNav
6
+ - result.each_value do |model|
7
+ li.dropdown class=('active' if params[:name] == model[:name])
8
+ - onclick = "history.pushState(null, null, '%s');" % route(name: model[:name])
9
+ - url = route(:migration_layout, model[:name])
10
+ a href=("#" << model[:dom_id]) data-url=url data-toggle="tab" onclick=onclick
11
+ | &nbsp;
12
+ = model[:name]
13
+
14
+ .tab-content
15
+ - result.each_value do |model|
16
+ - active = params[:name] == model[:name]
17
+ .tab-pane class=('active' if active) id=model[:dom_id]
18
+ == render_p(:migration_layout, model: model) if active
19
+
20
+ javascript:
21
+ $(function() {
22
+ Frontline.ajaxifyTabs('#modelsNav');
23
+ $('.singularized_association_hints').typeahead('destroy');
24
+ $('.singularized_association_hints').typeahead({
25
+ local: ['#{singularized_association_hints*"', '"}']
26
+ });
27
+ $('.pluralized_association_hints').typeahead('destroy');
28
+ $('.pluralized_association_hints').typeahead({
29
+ local: ['#{pluralized_association_hints*"', '"}']
30
+ });
31
+ });
32
+
33
+ - else
34
+ - styled_halt 500, result.to_s.strip.split("\n")
metadata ADDED
@@ -0,0 +1,245 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: frontline
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.7
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Silviu Rusu
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-06-28 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: e
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 0.4.8
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 0.4.8
30
+ - !ruby/object:Gem::Dependency
31
+ name: enginery
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 0.2.0
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 0.2.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: el
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: 0.4.8
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 0.4.8
62
+ - !ruby/object:Gem::Dependency
63
+ name: el-ace
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: 0.0.5
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: 0.0.5
78
+ - !ruby/object:Gem::Dependency
79
+ name: el-finder
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: 0.0.7
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 0.0.7
94
+ - !ruby/object:Gem::Dependency
95
+ name: slim
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '2.0'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '2.0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: thin
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: json
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: bundler
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ description: A Web Application for building Web Applications
159
+ email:
160
+ - slivuz@gmail.com
161
+ executables:
162
+ - frontline
163
+ extensions: []
164
+ extra_rdoc_files: []
165
+ files:
166
+ - assets/ansi_up.js
167
+ - assets/api.js
168
+ - assets/bootstrap/css/bootstrap-responsive.min.css
169
+ - assets/bootstrap/css/bootstrap.min.css
170
+ - assets/bootstrap/img/glyphicons-halflings-white.png
171
+ - assets/bootstrap/img/glyphicons-halflings.png
172
+ - assets/bootstrap/js/bootstrap.min.js
173
+ - assets/jquery.cookie.js
174
+ - assets/jquery.js
175
+ - assets/noty/jquery.noty.js
176
+ - assets/noty/layouts/top.js
177
+ - assets/noty/layouts/topRight.js
178
+ - assets/noty/promise.js
179
+ - assets/noty/themes/default.js
180
+ - assets/select2/select2-spinner.gif
181
+ - assets/select2/select2.css
182
+ - assets/select2/select2.min.js
183
+ - assets/select2/select2.png
184
+ - assets/select2/select2x2.png
185
+ - assets/select2-bootstrap.css
186
+ - assets/typeahead.js-bootstrap.css
187
+ - assets/typeahead.min.js
188
+ - assets/ui.css
189
+ - assets/xhr.js
190
+ - bin/frontline
191
+ - CHANGELOG.md
192
+ - frontline.gemspec
193
+ - images/0.png
194
+ - lib/frontline/actions.rb
195
+ - lib/frontline/app.rb
196
+ - lib/frontline/controllers/controllers.rb
197
+ - lib/frontline/controllers/index.rb
198
+ - lib/frontline/controllers/models.rb
199
+ - lib/frontline/controllers/sources.rb
200
+ - lib/frontline/frontline.rb
201
+ - lib/frontline/helpers.rb
202
+ - lib/frontline/inflect.rb
203
+ - lib/frontline/templates/controllers/controller.slim
204
+ - lib/frontline/templates/controllers/index.slim
205
+ - lib/frontline/templates/controllers/route.slim
206
+ - lib/frontline/templates/controllers/route_editor.slim
207
+ - lib/frontline/templates/controllers/route_layout.slim
208
+ - lib/frontline/templates/editor.slim
209
+ - lib/frontline/templates/error.slim
210
+ - lib/frontline/templates/index/applications.slim
211
+ - lib/frontline/templates/layout.slim
212
+ - lib/frontline/templates/models/index.slim
213
+ - lib/frontline/templates/models/migration.slim
214
+ - lib/frontline/templates/models/migration_layout.slim
215
+ - lib/frontline/templates/models/model.slim
216
+ - lib/frontline.rb
217
+ - LICENSE
218
+ - Rakefile
219
+ - README.md
220
+ homepage: https://github.com/espresso/frontline
221
+ licenses:
222
+ - MIT
223
+ post_install_message:
224
+ rdoc_options: []
225
+ require_paths:
226
+ - lib
227
+ required_ruby_version: !ruby/object:Gem::Requirement
228
+ none: false
229
+ requirements:
230
+ - - ! '>='
231
+ - !ruby/object:Gem::Version
232
+ version: 1.9.2
233
+ required_rubygems_version: !ruby/object:Gem::Requirement
234
+ none: false
235
+ requirements:
236
+ - - ! '>='
237
+ - !ruby/object:Gem::Version
238
+ version: '0'
239
+ requirements: []
240
+ rubyforge_project:
241
+ rubygems_version: 1.8.24
242
+ signing_key:
243
+ specification_version: 3
244
+ summary: frontline-0.0.7
245
+ test_files: []