Class: Merbiful::Admin
- Inherits:
-
Merb::Controller
- Object
- Merb::Controller
- Merbiful::Admin
show all
- Includes:
- RelativeTimeHelpers
- Defined in:
- lib/merbiful-release/admin.rb
Instance Method Summary
collapse
#distance_of_time_in_words, #prettier_time, #relative_date, #relative_date_span, #relative_time_span, #time_ago_in_words
Instance Method Details
#authorize! ⇒ Object
10
11
12
13
14
15
|
# File 'lib/merbiful-release/admin.rb', line 10
def authorize!
unless authorized?
redirect login_url
throw :halt, "Access denied"
end
end
|
#authorized? ⇒ Boolean
29
30
31
|
# File 'lib/merbiful-release/admin.rb', line 29
def authorized?
true
end
|
#create_css ⇒ Object
202
203
204
205
206
|
# File 'lib/merbiful-release/admin.rb', line 202
def create_css
new_css = Css.create(:name => next_name(Css))
new_css_version = Css::Version.create(:css => new_css)
redirect url(:merbiful_admin, :action => 'css', :css_id => new_css.id)
end
|
#create_js ⇒ Object
208
209
210
211
212
|
# File 'lib/merbiful-release/admin.rb', line 208
def create_js
new_js = Js.create(:name => next_name(Js))
new_js_version = Js::Version.create(:js => new_js)
redirect url(:merbiful_admin, :action => 'js', :js_id => new_js.id)
end
|
#create_layout ⇒ Object
214
215
216
217
218
|
# File 'lib/merbiful-release/admin.rb', line 214
def create_layout
new_layout = Layout.create(:name => next_name(Layout))
new_layout_version = Layout::Version.create(:layout => new_layout)
redirect url(:merbiful_admin, :action => 'layouts', :layout_id => new_layout.id)
end
|
#create_page ⇒ Object
195
196
197
198
199
200
|
# File 'lib/merbiful-release/admin.rb', line 195
def create_page
parent = Page.get(params[:parent_id])
new_page = Page.create(:parent => parent, :path => next_path(parent.path))
new_page_version = Page::Version.create(:page => new_page)
redirect url(:merbiful_admin, :action => "pages", :page_id => new_page.id)
end
|
#css ⇒ Object
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
# File 'lib/merbiful-release/admin.rb', line 86
def css
@form_css = Css.get(params[:css_id])
if request.post?
params[:css][:cached] = !!params[:css][:cached]
@form_css.update_attributes(params[:css])
if @form_css.valid?
@form_css.save
@form_version = Css::Version.new(params[:version].merge(:css => @form_css))
if @form_version.valid?
@form_version.save
redirect url(:merbiful_admin, :action => "css", :css_id => @form_css.id)
end
end
else
if @form_css
@form_version = Css::Version.get(params[:version_id])
@form_version = @form_css.latest unless @form_version
end
end
render_template_with_layout("css.html.haml")
end
|
#delete_image ⇒ Object
170
171
172
173
174
175
|
# File 'lib/merbiful-release/admin.rb', line 170
def delete_image
path = Pathname.new(File.join(Merb.root, "public", params[:path])).expand_path
raise "H4xx0r" unless path.to_s.index(Pathname.new(Merb.root).expand_path.to_s) == 0
path.unlink
redirect url(:merbiful_admin, :action => "images")
end
|
#destroy_css ⇒ Object
183
184
185
186
187
|
# File 'lib/merbiful-release/admin.rb', line 183
def destroy_css
css = Css.get(params[:css_id])
css.destroy
redirect url(:merbiful_admin, :action => "css")
end
|
#destroy_js ⇒ Object
189
190
191
192
193
|
# File 'lib/merbiful-release/admin.rb', line 189
def destroy_js
js = Js.get(params[:js_id])
js.destroy
redirect url(:merbiful_admin, :action => "js")
end
|
#destroy_layout ⇒ Object
177
178
179
180
181
|
# File 'lib/merbiful-release/admin.rb', line 177
def destroy_layout
layout = Layout.get(params[:layout_id])
layout.destroy
redirect url(:merbiful_admin, :action => "layouts")
end
|
#destroy_page ⇒ Object
153
154
155
156
157
|
# File 'lib/merbiful-release/admin.rb', line 153
def destroy_page
page = Page.get(params[:page_id])
page.destroy
redirect url(:merbiful_admin, :action => "pages")
end
|
#images ⇒ Object
80
81
82
83
84
|
# File 'lib/merbiful-release/admin.rb', line 80
def images
if request.post?
end
render_template_with_layout("images.html.haml")
end
|
#index ⇒ Object
33
34
35
|
# File 'lib/merbiful-release/admin.rb', line 33
def index
render_template_with_layout("index.html.haml")
end
|
#js ⇒ Object
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
# File 'lib/merbiful-release/admin.rb', line 58
def js
@form_js = Js.get(params[:js_id])
if request.post?
params[:js][:cached] = !!params[:js][:cached]
@form_js.update_attributes(params[:js])
if @form_js.valid?
@form_js.save
@form_version = Js::Version.new(params[:version].merge(:js => @form_js))
if @form_version.valid?
@form_version.save
redirect url(:merbiful_admin, :action => "js", :js_id => @form_js.id)
end
end
else
if @form_js
@form_version = Js::Version.get(params[:version_id])
@form_version = @form_js.latest unless @form_version
end
end
render_template_with_layout("js.html.haml")
end
|
#layouts ⇒ Object
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
# File 'lib/merbiful-release/admin.rb', line 37
def layouts
@form_layout = Layout.get(params[:layout_id])
if request.post?
@form_layout.update_attributes(params[:layout])
if @form_layout.valid?
@form_layout.save
@form_version = Layout::Version.new(params[:version].merge(:layout => @form_layout))
if @form_version.valid?
@form_version.save
redirect url(:merbiful_admin, :action => "layouts", :layout_id => @form_layout.id)
end
end
else
if @form_layout
@form_version = Layout::Version.get(params[:version_id])
@form_version = @form_layout.latest unless @form_version
end
end
render_template_with_layout("layouts.html.haml")
end
|
#logged_in_user ⇒ Object
17
18
19
|
# File 'lib/merbiful-release/admin.rb', line 17
def logged_in_user
nil
end
|
#login_url ⇒ Object
21
22
23
|
# File 'lib/merbiful-release/admin.rb', line 21
def login_url
""
end
|
#logout_url ⇒ Object
25
26
27
|
# File 'lib/merbiful-release/admin.rb', line 25
def logout_url
""
end
|
#move_page_down ⇒ Object
227
228
229
230
231
232
|
# File 'lib/merbiful-release/admin.rb', line 227
def move_page_down
page = Page.get(params[:page_id])
page.position += 1
page.save
redirect url(:merbiful_admin, :action => "pages")
end
|
#move_page_up ⇒ Object
220
221
222
223
224
225
|
# File 'lib/merbiful-release/admin.rb', line 220
def move_page_up
page = Page.get(params[:page_id])
page.position -= 1
page.save
redirect url(:merbiful_admin, :action => "pages")
end
|
#pages ⇒ Object
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
# File 'lib/merbiful-release/admin.rb', line 108
def pages
if Page.count == 0
new_root = Page.create(:path => "/")
new_root_version = Page::Version.create(:page => new_root, :body => "Here be Dagon")
end
@form_page = Page.get(params[:page_id])
if request.post?
params[:page][:cached] = !!params[:page][:cached]
@form_page.update_attributes(params[:page])
version_csses = params[:version].delete(:css)
version_jses = params[:version].delete(:js)
@form_version = Page::Version.new(params[:version].merge(:page => @form_page))
version_csses.each do |css|
@form_version.add_css(Css.get(css))
end if version_csses
version_jses.each do |js|
@form_version.add_js(Js.get(js))
end if version_jses
if @form_page.valid?
@form_page.save
if @form_version.valid?
@form_version.save
redirect url(:merbiful_admin, :action => "pages", :page_id => @form_page.id)
end
end
else
if @form_page
@form_version = Page::Version.get(params[:version_id])
@form_version = @form_page.latest unless @form_version
end
end
render_with_layout(Page.all(:parent_id => nil).collect do |page|
"<ul class='root'>\n#{render_page(page)}\n</ul>"
end.join("\n"))
end
|
#render_css ⇒ Object
149
150
151
|
# File 'lib/merbiful-release/admin.rb', line 149
def render_css
read_template("admin.css")
end
|
#upload_image ⇒ Object
159
160
161
162
163
164
165
166
167
168
|
# File 'lib/merbiful-release/admin.rb', line 159
def upload_image
path = Pathname.new(File.join(Merb.root, "public", "images", File.basename(params[:image][:filename])))
raise "H4xx0r" unless path.to_s.index(Pathname.new(Merb.root).expand_path.to_s) == 0
uploaded_path = Pathname.new(params[:image][:tempfile].path)
path.open("w") do |out|
out.write(uploaded_path.read)
end
uploaded_path.unlink
redirect url(:merbiful_admin, :action => "images")
end
|