vapid 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +16 -0
- data/lib/vapid/assets/images/vapid/favicon.ico +0 -0
- data/lib/vapid/assets/images/vapid/logo.png +0 -0
- data/lib/vapid/assets/images/vapid/logo_inverse.png +0 -0
- data/lib/vapid/assets/javascripts/vapid/{admin.coffee → dashboard.coffee} +0 -0
- data/lib/vapid/assets/stylesheets/vapid/dashboard.scss +25 -0
- data/lib/vapid/assets/stylesheets/vapid/dashboard/_base.scss +36 -0
- data/lib/vapid/assets/stylesheets/vapid/dashboard/_fonts.scss +14 -0
- data/lib/vapid/assets/stylesheets/vapid/dashboard/_modal.scss +53 -0
- data/lib/vapid/assets/stylesheets/vapid/dashboard/_sidebar.scss +22 -0
- data/lib/vapid/assets/stylesheets/vapid/dashboard/_variables.scss +6 -0
- data/lib/vapid/cli.rb +45 -13
- data/lib/vapid/controllers/{admin_controller.rb → dashboard_controller.rb} +60 -64
- data/lib/vapid/generator_template/Gemfile.tt +1 -7
- data/lib/vapid/generator_template/assets/javascripts/site.js +0 -0
- data/lib/vapid/generator_template/assets/stylesheets/site.css +0 -0
- data/lib/vapid/generator_template/templates/index.html.erb +84 -24
- data/lib/vapid/generator_template/templates/layouts/default.html.erb +3 -14
- data/lib/vapid/models/record.rb +22 -0
- data/lib/vapid/models/user.rb +7 -2
- data/lib/vapid/server.rb +5 -5
- data/lib/vapid/version.rb +1 -1
- data/lib/vapid/views/{admin → dashboard}/install.html.erb +3 -3
- data/lib/vapid/views/{admin → dashboard}/login.html.erb +2 -2
- data/lib/vapid/views/dashboard/overview/index.html.erb +3 -0
- data/lib/vapid/views/dashboard/records/_form_fields.erb +5 -0
- data/lib/vapid/views/dashboard/records/edit.html.erb +10 -0
- data/lib/vapid/views/{admin → dashboard}/records/index.html.erb +6 -8
- data/lib/vapid/views/dashboard/records/new.html.erb +6 -0
- data/lib/vapid/views/dashboard/settings/edit.html.erb +22 -0
- data/lib/vapid/views/errors/404.html.erb +4 -1
- data/lib/vapid/views/errors/500.html.erb +4 -1
- data/lib/vapid/views/layouts/dashboard.html.erb +47 -0
- data/lib/vapid/views/layouts/modal.html.erb +21 -0
- data/lib/vapid/views/shared/_flash.html.erb +5 -0
- metadata +27 -16
- data/lib/vapid/assets/stylesheets/vapid/admin.scss +0 -72
- data/lib/vapid/generator_template/assets/stylesheets/application.css +0 -120
- data/lib/vapid/views/admin/overview/index.html.erb +0 -1
- data/lib/vapid/views/admin/records/_form.erb +0 -9
- data/lib/vapid/views/admin/records/edit.html.erb +0 -5
- data/lib/vapid/views/admin/records/new.html.erb +0 -3
- data/lib/vapid/views/layouts/admin.html.erb +0 -41
- data/lib/vapid/views/layouts/admin_form.html.erb +0 -22
- data/lib/vapid/views/layouts/error.html.erb +0 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 556c2464ab664d12716b9aa0e667dd11d663edc5
|
4
|
+
data.tar.gz: a56555d344f0277090d06c52d8a7efd0809fc464
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 92a59742ea2b378905fa5d59d329ce49cf278d52515fce565ca1019a734c6bb8894d292293f7c4482f5e860da14699c290b1c98be835fb33a8f9c53548021f7e
|
7
|
+
data.tar.gz: 2d259c98b3ad956e51c11ea98cda9714236188a0c503d4976a7722c141dc44ebea479a2af47018ea9ca9544d6e7aa636e5c5c33145a10a3bed56a5752ec0c8b5
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
## 0.1.2
|
4
|
+
* Changed dashboard route from `/admin` to `/dashboard`
|
5
|
+
* Updated styles to match new design
|
6
|
+
* Users can now edit login email and password
|
7
|
+
* `--reset-login` option for `vapid build`
|
8
|
+
* Let user specify which DB in their own Gemfile
|
9
|
+
* New design for generator example
|
10
|
+
|
11
|
+
## 0.1.1
|
12
|
+
* Fix SIGTERM bug (UPDATE: definitely did not fix it)
|
13
|
+
* Changes to get hosting prototype up and running
|
14
|
+
|
15
|
+
## 0.1.0
|
16
|
+
* Initial release
|
Binary file
|
Binary file
|
Binary file
|
File without changes
|
@@ -0,0 +1,25 @@
|
|
1
|
+
//= require semantic-ui/components/reset
|
2
|
+
//= require semantic-ui/components/button
|
3
|
+
//= require semantic-ui/components/divider
|
4
|
+
//= require semantic-ui/components/form
|
5
|
+
//= require semantic-ui/components/grid
|
6
|
+
//= require semantic-ui/components/header
|
7
|
+
//= require semantic-ui/components/icon
|
8
|
+
//= require semantic-ui/components/image
|
9
|
+
//= require semantic-ui/components/message
|
10
|
+
//= require semantic-ui/components/menu
|
11
|
+
//= require semantic-ui/components/segment
|
12
|
+
//= require semantic-ui/components/sidebar
|
13
|
+
//= require semantic-ui/components/site
|
14
|
+
//= require semantic-ui/components/table
|
15
|
+
//= require trix/dist/trix
|
16
|
+
//= require_self
|
17
|
+
|
18
|
+
// Pre-semantic
|
19
|
+
@import "./dashboard/variables";
|
20
|
+
|
21
|
+
// Dashboard
|
22
|
+
@import "./dashboard/base";
|
23
|
+
@import "./dashboard/fonts";
|
24
|
+
@import "./dashboard/modal";
|
25
|
+
@import "./dashboard/sidebar";
|
@@ -0,0 +1,36 @@
|
|
1
|
+
html, body {
|
2
|
+
font-size: 16px;
|
3
|
+
}
|
4
|
+
|
5
|
+
.hidden {
|
6
|
+
display: none !important;
|
7
|
+
}
|
8
|
+
|
9
|
+
.header-group {
|
10
|
+
padding-top: 0 !important;
|
11
|
+
}
|
12
|
+
|
13
|
+
#flash {
|
14
|
+
margin-top: 0.5em;
|
15
|
+
|
16
|
+
& + h1, {
|
17
|
+
margin-top: 0.5em;
|
18
|
+
}
|
19
|
+
|
20
|
+
& + .header-group, {
|
21
|
+
margin-top: 1.5em;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
|
25
|
+
form[data-delete=true] {
|
26
|
+
input[type=submit] {
|
27
|
+
background: none;
|
28
|
+
border: none;
|
29
|
+
padding: 0;
|
30
|
+
color: $blue;
|
31
|
+
|
32
|
+
&:hover {
|
33
|
+
color: $darkBlue;
|
34
|
+
}
|
35
|
+
}
|
36
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
@font-face {
|
2
|
+
font-family: 'Icons';
|
3
|
+
src: url("../../semantic-ui/themes/default/assets/fonts/icons.eot");
|
4
|
+
src: url("../../semantic-ui/themes/default/assets/fonts/icons.eot?#iefix") format('embedded-opentype'),
|
5
|
+
url("../../semantic-ui/themes/default/assets/fonts/icons.woff2") format('woff2'),
|
6
|
+
url("../../semantic-ui/themes/default/assets/fonts/icons.woff") format('woff'),
|
7
|
+
url("../../semantic-ui/themes/default/assets/fonts/icons.ttf") format('truetype'),
|
8
|
+
url("../../semantic-ui/themes/default/assets/fonts/icons.svg#icons") format('svg');
|
9
|
+
font-style: normal;
|
10
|
+
font-weight: normal;
|
11
|
+
font-variant: normal;
|
12
|
+
text-decoration: inherit;
|
13
|
+
text-transform: none;
|
14
|
+
}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
body.modal {
|
2
|
+
background: white;
|
3
|
+
color: $grey;
|
4
|
+
|
5
|
+
a {
|
6
|
+
color: $grey;
|
7
|
+
text-decoration: underline;
|
8
|
+
}
|
9
|
+
|
10
|
+
.ui.form {
|
11
|
+
input[type=text],
|
12
|
+
input[type=email],
|
13
|
+
input[type=password] {
|
14
|
+
padding: 0 0 0.5em;
|
15
|
+
margin-bottom: 0.5em;
|
16
|
+
font-weight: bold;
|
17
|
+
color: $grey;
|
18
|
+
background: none;
|
19
|
+
border-color: $grey;
|
20
|
+
border-width: 0 0 1px;
|
21
|
+
border-radius: 0;
|
22
|
+
}
|
23
|
+
|
24
|
+
label {
|
25
|
+
color: $grey;
|
26
|
+
}
|
27
|
+
}
|
28
|
+
|
29
|
+
.ui.header {
|
30
|
+
color: white;
|
31
|
+
|
32
|
+
.sub.header {
|
33
|
+
color: #9e9e9e;
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
.logo {
|
38
|
+
max-width: 10em;
|
39
|
+
}
|
40
|
+
|
41
|
+
& > .grid {
|
42
|
+
margin-top: 0em;
|
43
|
+
height: 100%;
|
44
|
+
}
|
45
|
+
|
46
|
+
#flash {
|
47
|
+
margin-bottom: 1.5em;
|
48
|
+
}
|
49
|
+
|
50
|
+
.column {
|
51
|
+
max-width: 27rem;
|
52
|
+
}
|
53
|
+
}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
.sidebar {
|
2
|
+
$sidebar-nav-width: 20em;
|
3
|
+
width: $sidebar-nav-width;
|
4
|
+
|
5
|
+
.logo {
|
6
|
+
max-width: 7em;
|
7
|
+
margin: 0.5em 0 0.25em;
|
8
|
+
}
|
9
|
+
|
10
|
+
> .item:last-of-type:before {
|
11
|
+
display: none;
|
12
|
+
}
|
13
|
+
|
14
|
+
&.left.visible {
|
15
|
+
~ .fixed,
|
16
|
+
~ .pusher {
|
17
|
+
padding: 0em 1em 1em;
|
18
|
+
width: calc(100vw - #{$sidebar-nav-width});
|
19
|
+
transform: translate3d($sidebar-nav-width, 0, 0);
|
20
|
+
}
|
21
|
+
}
|
22
|
+
}
|
data/lib/vapid/cli.rb
CHANGED
@@ -33,28 +33,31 @@ module Vapid
|
|
33
33
|
|
34
34
|
desc "server", "Start the server"
|
35
35
|
map %w(s -s --server) => :server
|
36
|
-
method_option :port, aliases: %w(-p), type: :numeric
|
37
|
-
method_option :bind, aliases: %w(-b), type: :string
|
36
|
+
method_option :port, aliases: %w(-p), type: :numeric, default: 4567
|
37
|
+
method_option :bind, aliases: %w(-b), type: :string, default: "localhost"
|
38
38
|
def server(target = ".")
|
39
39
|
say "== The Vapid server is loading"
|
40
40
|
inside_target(target) do
|
41
|
-
|
42
|
-
|
41
|
+
fork do
|
42
|
+
Guard.start guardfile_contents: GUARDFILE, watchdir: target, no_interactions: true
|
43
|
+
end
|
44
|
+
Server.run! options.merge directory: target
|
43
45
|
end
|
44
46
|
say "== The Vapid server is now shut down"
|
45
47
|
end
|
46
48
|
|
47
49
|
desc "build", "Updates the data model as described in your templates"
|
48
50
|
map %w(b -b --build) => :build
|
51
|
+
method_option :reset_login, aliases: %w(-r), type: :boolean, default: false
|
49
52
|
def build(target = ".")
|
50
53
|
inside_target(target) do
|
51
54
|
Models.migrate!
|
52
|
-
ensure_user_exists
|
55
|
+
ensure_user_exists(options.reset_login)
|
53
56
|
|
54
57
|
say "== Parsing templates for fields"
|
55
58
|
template_files = Dir[File.join(target, "templates", "**/*")].reject { |f| File.directory? f }
|
56
59
|
Builder.build!(template_files) do |filepath|
|
57
|
-
|
60
|
+
say_status :parse, filepath
|
58
61
|
end
|
59
62
|
say "== Build complete"
|
60
63
|
end
|
@@ -70,7 +73,7 @@ module Vapid
|
|
70
73
|
|
71
74
|
def inside_target(target, &block)
|
72
75
|
if !File.exist? File.join(target, "config.ru")
|
73
|
-
|
76
|
+
say_status :error, "Could not find a Vapid project in #{expanded_target(target)}", :red
|
74
77
|
else
|
75
78
|
FileUtils.mkdir_p File.join(target, ".cache")
|
76
79
|
inside(target, &block)
|
@@ -81,12 +84,41 @@ module Vapid
|
|
81
84
|
File.expand_path(target)
|
82
85
|
end
|
83
86
|
|
84
|
-
def ensure_user_exists
|
85
|
-
return if Models::User.any?
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
87
|
+
def ensure_user_exists(force)
|
88
|
+
return if !force && Models::User.any?
|
89
|
+
|
90
|
+
action = force ? "Resetting your" : "Create an"
|
91
|
+
say "== #{action} admin login"
|
92
|
+
|
93
|
+
user = Models::User.first || Models::User.new
|
94
|
+
email = user.email
|
95
|
+
install_code = Settings.install_code
|
96
|
+
|
97
|
+
loop do
|
98
|
+
user.email = ask "What is your email address?", default: email
|
99
|
+
user.valid?
|
100
|
+
break unless user.errors[:email].any?
|
101
|
+
say_status :error, "Email #{user.errors[:email].to_sentence}", :red
|
102
|
+
end
|
103
|
+
|
104
|
+
loop do
|
105
|
+
user.password = ask("Enter a password:", echo: false)
|
106
|
+
user.valid?
|
107
|
+
say ""
|
108
|
+
break unless user.errors[:password].any?
|
109
|
+
say_status :error, "Password #{user.errors[:password].to_sentence}", :red
|
110
|
+
end
|
111
|
+
|
112
|
+
loop do
|
113
|
+
code = ask "Enter the install code (found in config/settings.yml):", default: code
|
114
|
+
break if code.casecmp(install_code) == 0
|
115
|
+
say_status :error, "Invalid install code", :red
|
116
|
+
end if install_code
|
117
|
+
|
118
|
+
unless user.save
|
119
|
+
say_status :error, "#{user.errors.full_messages.to_sentence}\n", :red
|
120
|
+
raise
|
121
|
+
end
|
90
122
|
end
|
91
123
|
end
|
92
124
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
# rubocop:disable Metrics/BlockLength
|
2
2
|
module Vapid
|
3
3
|
module Controllers
|
4
|
-
#
|
5
|
-
module
|
4
|
+
# Dashboard routes
|
5
|
+
module DashboardController
|
6
6
|
extend Sinatra::Extension
|
7
7
|
|
8
8
|
# Custom form builder for records
|
@@ -12,7 +12,7 @@ module Vapid
|
|
12
12
|
@name = name
|
13
13
|
@value = @directive.new(name).send :deserialize_input, value
|
14
14
|
|
15
|
-
label(name) +
|
15
|
+
label(name, caption: "#{name.to_s.humanize}") +
|
16
16
|
template.content_tag(:div) do
|
17
17
|
form_field + preview + destroy
|
18
18
|
end
|
@@ -47,37 +47,37 @@ module Vapid
|
|
47
47
|
app.helpers do
|
48
48
|
def installed!
|
49
49
|
if ActiveRecord::Migrator.current_version.zero? || !Models::User.any?
|
50
|
-
redirect "/
|
50
|
+
redirect "/dashboard/install" unless dashboard_action == "install"
|
51
51
|
false
|
52
52
|
else
|
53
|
-
redirect "/
|
53
|
+
redirect "/dashboard" if dashboard_action == "install"
|
54
54
|
true
|
55
55
|
end
|
56
56
|
end
|
57
57
|
|
58
58
|
def authenticated!
|
59
59
|
if !current_user
|
60
|
-
redirect "/
|
60
|
+
redirect "/dashboard/login" unless %w(login logout).include?(dashboard_action)
|
61
61
|
false
|
62
62
|
else
|
63
63
|
true
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
|
-
def
|
67
|
+
def dashboard_action
|
68
68
|
request.path_info.split("/")[2]
|
69
69
|
end
|
70
70
|
|
71
|
-
def
|
72
|
-
render_view template, layout: :
|
71
|
+
def render_dashboard_template(template)
|
72
|
+
render_view template, layout: :dashboard
|
73
73
|
end
|
74
74
|
|
75
75
|
def render_auth_template(template)
|
76
|
-
render_view template, layout: :
|
76
|
+
render_view template, layout: :modal
|
77
77
|
end
|
78
78
|
|
79
|
-
def
|
80
|
-
partial "
|
79
|
+
def dashboard_partial(template, options = {}, &block)
|
80
|
+
partial "dashboard/#{template}", options, &block
|
81
81
|
end
|
82
82
|
|
83
83
|
def record_form_for(name, *args, &block)
|
@@ -95,7 +95,7 @@ module Vapid
|
|
95
95
|
"/#{group.records.first.id}/edit"
|
96
96
|
end
|
97
97
|
|
98
|
-
"/
|
98
|
+
"/dashboard/groups/#{group.id}/records#{path}"
|
99
99
|
end
|
100
100
|
|
101
101
|
def flash_class(level)
|
@@ -132,11 +132,11 @@ module Vapid
|
|
132
132
|
end
|
133
133
|
# rubocop:enable Lint/NestedMethodDefinition
|
134
134
|
|
135
|
-
app.before("/
|
135
|
+
app.before("/dashboard/?*") do
|
136
136
|
@groups = all_groups if installed! && authenticated!
|
137
137
|
end
|
138
138
|
|
139
|
-
app.namespace "/
|
139
|
+
app.namespace "/dashboard/?" do
|
140
140
|
# TODO: Namespace before filters are currently broken on Sinatra 2.0
|
141
141
|
# before do
|
142
142
|
# @groups = all_groups if installed! && authenticated!
|
@@ -145,12 +145,12 @@ module Vapid
|
|
145
145
|
# end
|
146
146
|
|
147
147
|
get do
|
148
|
-
|
148
|
+
render_dashboard_template "dashboard/overview/index"
|
149
149
|
end
|
150
150
|
|
151
151
|
get "/login/?" do
|
152
152
|
@user = Models::User.new
|
153
|
-
render_auth_template "
|
153
|
+
render_auth_template "dashboard/login"
|
154
154
|
end
|
155
155
|
|
156
156
|
post "/login/?" do
|
@@ -158,22 +158,22 @@ module Vapid
|
|
158
158
|
|
159
159
|
if user
|
160
160
|
session[:user_id] = user.id
|
161
|
-
redirect "/
|
161
|
+
redirect "/dashboard"
|
162
162
|
else
|
163
|
-
|
164
|
-
|
163
|
+
@user = Models::User.new email: params[:vapid_models_user][:email]
|
164
|
+
flash.now[:error] = "Invalid Email or password."
|
165
|
+
render_auth_template "dashboard/login"
|
165
166
|
end
|
166
167
|
end
|
167
168
|
|
168
169
|
get "/logout/?" do
|
169
170
|
session.delete(:user_id)
|
170
|
-
|
171
|
-
redirect "/admin/login"
|
171
|
+
redirect "/dashboard/login"
|
172
172
|
end
|
173
173
|
|
174
174
|
get "/install/?" do
|
175
175
|
@code = Settings.install_code
|
176
|
-
render_auth_template "/
|
176
|
+
render_auth_template "/dashboard/install"
|
177
177
|
end
|
178
178
|
|
179
179
|
post "/install/?" do
|
@@ -186,42 +186,56 @@ module Vapid
|
|
186
186
|
if (@code.nil? || @code.casecmp(params[:code]) == 0) && user.save
|
187
187
|
run_builder
|
188
188
|
session[:user_id] = user.id
|
189
|
-
flash[:success] = "Successfully created admin account"
|
190
|
-
redirect "/
|
189
|
+
flash[:success] = "Successfully created admin account."
|
190
|
+
redirect "/dashboard"
|
191
191
|
else
|
192
|
-
flash.now[:error] = "Could not create admin account"
|
193
|
-
render_auth_template "/
|
192
|
+
flash.now[:error] = "Could not create admin account."
|
193
|
+
render_auth_template "/dashboard/install"
|
194
194
|
end
|
195
195
|
end
|
196
196
|
|
197
197
|
get "/build/?" do
|
198
198
|
run_builder
|
199
|
-
flash[:success] = "Site build complete"
|
200
|
-
redirect "/
|
199
|
+
flash[:success] = "Site build complete."
|
200
|
+
redirect "/dashboard"
|
201
|
+
end
|
202
|
+
|
203
|
+
get "/settings/?" do
|
204
|
+
render_dashboard_template "dashboard/settings/edit"
|
205
|
+
end
|
206
|
+
|
207
|
+
post "/settings/?" do
|
208
|
+
attrs = if params[:password].blank?
|
209
|
+
params.slice(:email)
|
210
|
+
else
|
211
|
+
params.slice(:email, :password, :password_confirmation)
|
212
|
+
end
|
213
|
+
|
214
|
+
if current_user.update_attributes attrs
|
215
|
+
flash[:success] = "Settings updated."
|
216
|
+
redirect "/dashboard/settings"
|
217
|
+
else
|
218
|
+
flash.now[:error] = current_user.errors.full_messages.to_sentence
|
219
|
+
render_dashboard_template "dashboard/settings/edit"
|
220
|
+
end
|
201
221
|
end
|
202
222
|
|
203
223
|
get "/groups/:group_id/records/?" do
|
204
224
|
@group = current_group
|
205
225
|
@user = Vapid::Models::User.new
|
206
226
|
|
207
|
-
|
227
|
+
render_dashboard_template "dashboard/records/index"
|
208
228
|
end
|
209
229
|
|
210
230
|
post "/groups/:group_id/records/?" do
|
211
231
|
@group = current_group
|
212
232
|
@record = @group.records.build(params[:record])
|
213
233
|
|
214
|
-
|
215
|
-
|
216
|
-
content_type = current_group.fields[key]
|
217
|
-
@record.content[key] = Directives[content_type].serialize_input(val)
|
218
|
-
end
|
219
|
-
|
220
|
-
if @record.save
|
221
|
-
flash[:success] = "Record created"
|
234
|
+
if @record.update_content params[:record]["content"]
|
235
|
+
flash[:success] = "Record created."
|
222
236
|
livereload
|
223
237
|
else
|
224
|
-
flash[:error] = "Problem creating record"
|
238
|
+
flash[:error] = "Problem creating record."
|
225
239
|
end
|
226
240
|
redirect group_or_records_path(@group)
|
227
241
|
end
|
@@ -230,36 +244,18 @@ module Vapid
|
|
230
244
|
@group = current_group
|
231
245
|
@record = @group.records.build
|
232
246
|
|
233
|
-
|
247
|
+
render_dashboard_template "dashboard/records/new"
|
234
248
|
end
|
235
249
|
|
236
250
|
post "/groups/:group_id/records/:id/?" do
|
237
251
|
@group = current_group
|
238
252
|
@record = current_record
|
239
253
|
|
240
|
-
|
241
|
-
|
242
|
-
# if val.is_a?(Hash) && val[:tempfile]
|
243
|
-
# FileUtils.mkdir_p(settings.project_uploads)
|
244
|
-
# File.open File.join(settings.project_uploads, val[:filename]), "wb" do |file|
|
245
|
-
# file.write val[:tempfile].read
|
246
|
-
# end
|
247
|
-
# val = "/uploads/#{val[:filename]}"
|
248
|
-
# end
|
249
|
-
|
250
|
-
content_type = current_group.fields[key]
|
251
|
-
@record.content[key] = Directives[content_type].serialize_input(val)
|
252
|
-
end
|
253
|
-
|
254
|
-
params[:_destroy] && params[:_destroy].each do |key, _val|
|
255
|
-
@record.content[key] = nil
|
256
|
-
end
|
257
|
-
|
258
|
-
if @record.save
|
259
|
-
flash[:success] = "Record updated"
|
254
|
+
if @record.update_content params[:record]["content"], params[:_destroy]
|
255
|
+
flash[:success] = "Record updated."
|
260
256
|
livereload
|
261
257
|
else
|
262
|
-
flash.now[:error] = "Problem updating record"
|
258
|
+
flash.now[:error] = "Problem updating record."
|
263
259
|
end
|
264
260
|
redirect group_or_records_path(@group)
|
265
261
|
end
|
@@ -269,10 +265,10 @@ module Vapid
|
|
269
265
|
@record = current_record
|
270
266
|
|
271
267
|
if @record.destroy
|
272
|
-
flash[:success] = "Record deleted"
|
268
|
+
flash[:success] = "Record deleted."
|
273
269
|
livereload
|
274
270
|
else
|
275
|
-
flash[:error] = "Problem deleting record"
|
271
|
+
flash[:error] = "Problem deleting record."
|
276
272
|
end
|
277
273
|
redirect group_or_records_path(@group)
|
278
274
|
end
|
@@ -281,7 +277,7 @@ module Vapid
|
|
281
277
|
@group = current_group
|
282
278
|
@record = current_record
|
283
279
|
|
284
|
-
|
280
|
+
render_dashboard_template "dashboard/records/edit"
|
285
281
|
end
|
286
282
|
end
|
287
283
|
end
|