frontline 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +0 -0
- data/LICENSE +19 -0
- data/README.md +92 -0
- data/Rakefile +21 -0
- data/assets/ansi_up.js +143 -0
- data/assets/api.js +533 -0
- data/assets/bootstrap/css/bootstrap-responsive.min.css +9 -0
- data/assets/bootstrap/css/bootstrap.min.css +9 -0
- data/assets/bootstrap/img/glyphicons-halflings-white.png +0 -0
- data/assets/bootstrap/img/glyphicons-halflings.png +0 -0
- data/assets/bootstrap/js/bootstrap.min.js +6 -0
- data/assets/jquery.cookie.js +95 -0
- data/assets/jquery.js +6 -0
- data/assets/noty/jquery.noty.js +520 -0
- data/assets/noty/layouts/top.js +34 -0
- data/assets/noty/layouts/topRight.js +43 -0
- data/assets/noty/promise.js +432 -0
- data/assets/noty/themes/default.js +156 -0
- data/assets/select2-bootstrap.css +86 -0
- data/assets/select2/select2-spinner.gif +0 -0
- data/assets/select2/select2.css +615 -0
- data/assets/select2/select2.min.js +22 -0
- data/assets/select2/select2.png +0 -0
- data/assets/select2/select2x2.png +0 -0
- data/assets/typeahead.js-bootstrap.css +49 -0
- data/assets/typeahead.min.js +7 -0
- data/assets/ui.css +28 -0
- data/assets/xhr.js +19 -0
- data/bin/frontline +19 -0
- data/frontline.gemspec +31 -0
- data/images/0.png +0 -0
- data/lib/frontline.rb +23 -0
- data/lib/frontline/actions.rb +15 -0
- data/lib/frontline/app.rb +86 -0
- data/lib/frontline/controllers/controllers.rb +71 -0
- data/lib/frontline/controllers/index.rb +167 -0
- data/lib/frontline/controllers/models.rb +104 -0
- data/lib/frontline/controllers/sources.rb +11 -0
- data/lib/frontline/frontline.rb +11 -0
- data/lib/frontline/helpers.rb +179 -0
- data/lib/frontline/inflect.rb +183 -0
- data/lib/frontline/templates/controllers/controller.slim +27 -0
- data/lib/frontline/templates/controllers/index.slim +56 -0
- data/lib/frontline/templates/controllers/route.slim +17 -0
- data/lib/frontline/templates/controllers/route_editor.slim +45 -0
- data/lib/frontline/templates/controllers/route_layout.slim +88 -0
- data/lib/frontline/templates/editor.slim +17 -0
- data/lib/frontline/templates/error.slim +36 -0
- data/lib/frontline/templates/index/applications.slim +123 -0
- data/lib/frontline/templates/layout.slim +182 -0
- data/lib/frontline/templates/models/index.slim +31 -0
- data/lib/frontline/templates/models/migration.slim +46 -0
- data/lib/frontline/templates/models/migration_layout.slim +159 -0
- data/lib/frontline/templates/models/model.slim +34 -0
- 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
|
+
|
|
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: []
|