frontline 0.0.7

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.
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: []