cortex-reaver 0.1.0 → 0.2.0
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.
- data/README +1 -1
- data/bin/cortex_reaver +3 -4
- data/lib/cortex_reaver.rb +270 -110
- data/lib/cortex_reaver/cache.rb +23 -0
- data/lib/cortex_reaver/config.rb +178 -74
- data/lib/cortex_reaver/controller/admin.rb +64 -4
- data/lib/cortex_reaver/controller/comment.rb +4 -4
- data/lib/cortex_reaver/controller/controller.rb +3 -3
- data/lib/cortex_reaver/controller/journal.rb +4 -2
- data/lib/cortex_reaver/controller/main.rb +117 -26
- data/lib/cortex_reaver/controller/page.rb +7 -0
- data/lib/cortex_reaver/controller/photograph.rb +12 -10
- data/lib/cortex_reaver/controller/tag.rb +1 -1
- data/lib/cortex_reaver/controller/user.rb +7 -2
- data/lib/cortex_reaver/helper/attachments.rb +2 -2
- data/lib/cortex_reaver/helper/crud.rb +7 -7
- data/lib/cortex_reaver/helper/feeds.rb +56 -38
- data/lib/cortex_reaver/helper/form.rb +12 -16
- data/lib/cortex_reaver/helper/navigation.rb +35 -16
- data/lib/cortex_reaver/helper/photographs.rb +2 -2
- data/lib/cortex_reaver/helper/sidebar.rb +44 -0
- data/lib/cortex_reaver/helper/tags.rb +32 -9
- data/lib/cortex_reaver/helper/workflow.rb +2 -14
- data/lib/cortex_reaver/layout/blank.rhtml +27 -31
- data/lib/cortex_reaver/layout/text.rhtml +54 -67
- data/lib/cortex_reaver/migrations/014_convert_projects_to_pages.rb +79 -0
- data/lib/cortex_reaver/model/comment.rb +7 -8
- data/lib/cortex_reaver/model/page.rb +5 -3
- data/lib/cortex_reaver/model/photograph.rb +57 -13
- data/lib/cortex_reaver/model/tag.rb +1 -4
- data/lib/cortex_reaver/model/user.rb +6 -3
- data/lib/cortex_reaver/plugin.rb +1 -1
- data/lib/cortex_reaver/plugins/twitter.rb +185 -0
- data/lib/cortex_reaver/public/css/actions.css +31 -0
- data/lib/cortex_reaver/public/css/admin.css +50 -27
- data/lib/cortex_reaver/public/css/attachments.css +11 -0
- data/lib/cortex_reaver/public/css/autotags.css +38 -0
- data/lib/cortex_reaver/public/css/code.css +10 -2
- data/lib/cortex_reaver/public/css/colophon.css +10 -0
- data/lib/cortex_reaver/public/css/commments.css +7 -0
- data/lib/cortex_reaver/public/css/custom.css +1 -0
- data/lib/cortex_reaver/public/css/flash.css +17 -0
- data/lib/cortex_reaver/public/css/fonts.css +22 -0
- data/lib/cortex_reaver/public/css/form.css +15 -3
- data/lib/cortex_reaver/public/css/generics.css +39 -0
- data/lib/cortex_reaver/public/css/icons.css +4 -0
- data/lib/cortex_reaver/public/css/journals.css +3 -0
- data/lib/cortex_reaver/public/css/main.css +30 -312
- data/lib/cortex_reaver/public/css/pagination.css +50 -0
- data/lib/cortex_reaver/public/css/photo-show.css +87 -0
- data/lib/cortex_reaver/public/css/photo.css +28 -97
- data/lib/cortex_reaver/public/css/progress.css +35 -0
- data/lib/cortex_reaver/public/css/sidebar.css +83 -0
- data/lib/cortex_reaver/public/css/table-of-contents.css +26 -0
- data/lib/cortex_reaver/public/css/table.css +3 -0
- data/lib/cortex_reaver/public/css/tags.css +29 -0
- data/lib/cortex_reaver/public/css/text.css +19 -1
- data/lib/cortex_reaver/public/css/top_actions.css +50 -0
- data/lib/cortex_reaver/public/css/users.css +3 -0
- data/lib/cortex_reaver/public/images/admin/icons.png +0 -0
- data/lib/cortex_reaver/public/images/admin/icons.xcf +0 -0
- data/lib/cortex_reaver/public/images/background_tile.png +0 -0
- data/lib/cortex_reaver/public/images/edit_34.png +0 -0
- data/lib/cortex_reaver/public/images/edit_34_prelight.png +0 -0
- data/lib/cortex_reaver/public/images/elided.png +0 -0
- data/lib/cortex_reaver/public/images/grid_34.png +0 -0
- data/lib/cortex_reaver/public/images/grid_34_prelight.png +0 -0
- data/lib/cortex_reaver/public/images/next_11.png +0 -0
- data/lib/cortex_reaver/public/images/next_34.png +0 -0
- data/lib/cortex_reaver/public/images/next_34_prelight.png +0 -0
- data/lib/cortex_reaver/public/images/prev_11.png +0 -0
- data/lib/cortex_reaver/public/images/prev_34.png +0 -0
- data/lib/cortex_reaver/public/images/prev_34_prelight.png +0 -0
- data/lib/cortex_reaver/public/js/admin.js +15 -22
- data/lib/cortex_reaver/public/js/autotags.js +120 -0
- data/lib/cortex_reaver/public/js/jquery.autocomplete.js +135 -176
- data/lib/cortex_reaver/public/js/jquery.color.js +124 -0
- data/lib/cortex_reaver/public/js/jquery.corners.min.js +7 -0
- data/lib/cortex_reaver/public/js/jquery.hotkeys-0.7.9.js +244 -0
- data/lib/cortex_reaver/public/js/jquery.js +4361 -4
- data/lib/cortex_reaver/public/js/jquery.periodicalupdater.js +98 -0
- data/lib/cortex_reaver/public/js/photo.js +3 -32
- data/lib/cortex_reaver/public/robots.txt +3 -0
- data/lib/cortex_reaver/snippets/ramaze/cache/memcached.rb +13 -10
- data/lib/cortex_reaver/snippets/range.rb +9 -0
- data/lib/cortex_reaver/support/attachments.rb +12 -0
- data/lib/cortex_reaver/support/comments.rb +1 -3
- data/lib/cortex_reaver/support/renderer.rb +20 -17
- data/lib/cortex_reaver/support/sequenceable.rb +6 -6
- data/lib/cortex_reaver/support/tags.rb +15 -7
- data/lib/cortex_reaver/version.rb +1 -1
- data/lib/cortex_reaver/view/admin/configuration.rhtml +7 -0
- data/lib/cortex_reaver/view/admin/index.rhtml +3 -0
- data/lib/cortex_reaver/view/admin/regenerate_photo_sizes.rhtml +16 -0
- data/lib/cortex_reaver/view/adminbox.rhtml +34 -44
- data/lib/cortex_reaver/view/comments/comment.rhtml +1 -1
- data/lib/cortex_reaver/view/comments/form.rhtml +1 -2
- data/lib/cortex_reaver/view/comments/post_form.rhtml +2 -10
- data/lib/cortex_reaver/view/head.rhtml +11 -0
- data/lib/cortex_reaver/view/journals/journal.rhtml +3 -3
- data/lib/cortex_reaver/view/journals/show.rhtml +0 -4
- data/lib/cortex_reaver/view/js.rhtml +1 -0
- data/lib/cortex_reaver/view/pages/list.rhtml +3 -23
- data/lib/cortex_reaver/view/pages/row.rhtml +13 -0
- data/lib/cortex_reaver/view/photographs/grid.rhtml +30 -36
- data/lib/cortex_reaver/view/photographs/show.rhtml +42 -108
- data/lib/cortex_reaver/view/sidebar/explore_photos.rhtml +7 -0
- data/lib/cortex_reaver/view/sidebar/photographs.rhtml +15 -0
- data/lib/cortex_reaver/view/sidebar/sections.rhtml +4 -0
- data/lib/cortex_reaver/view/sidebar/twitter.rhtml +12 -0
- data/lib/cortex_reaver/view/tags/show.rhtml +0 -10
- data/lib/cortex_reaver/view/tracker.rhtml +0 -0
- data/lib/cortex_reaver/view/users/list.rhtml +1 -7
- data/lib/cortex_reaver/view/users/login.rhtml +1 -1
- metadata +103 -43
- data/lib/cortex_reaver/controller/project.rb +0 -53
- data/lib/cortex_reaver/helper/template.rb +0 -37
- data/lib/cortex_reaver/model/project.rb +0 -57
- data/lib/cortex_reaver/public/css/ramaze_error.css +0 -90
- data/lib/cortex_reaver/public/images/atom-xml-icon.png +0 -0
- data/lib/cortex_reaver/public/images/body.png +0 -0
- data/lib/cortex_reaver/public/images/border_bottom.png +0 -0
- data/lib/cortex_reaver/public/images/border_bottom_left.png +0 -0
- data/lib/cortex_reaver/public/images/border_bottom_right.png +0 -0
- data/lib/cortex_reaver/public/images/border_left.png +0 -0
- data/lib/cortex_reaver/public/images/border_right.png +0 -0
- data/lib/cortex_reaver/public/images/border_top.png +0 -0
- data/lib/cortex_reaver/public/images/border_top_left.png +0 -0
- data/lib/cortex_reaver/public/images/border_top_right.png +0 -0
- data/lib/cortex_reaver/public/images/header.png +0 -0
- data/lib/cortex_reaver/public/images/header.xcf +0 -0
- data/lib/cortex_reaver/public/images/indicator.gif +0 -0
- data/lib/cortex_reaver/public/images/rss-xml-icon.png +0 -0
- data/lib/cortex_reaver/public/images/sections.png +0 -0
- data/lib/cortex_reaver/public/images/sections_highlight.png +0 -0
- data/lib/cortex_reaver/public/js/jquery.autocompletefb.js +0 -125
- data/lib/cortex_reaver/view/photographs/sidebar.rhtml +0 -7
- data/lib/cortex_reaver/view/projects/form.rhtml +0 -14
- data/lib/cortex_reaver/view/projects/list.rhtml +0 -31
- data/lib/cortex_reaver/view/projects/show.rhtml +0 -42
- data/lib/proto/cortex_reaver.yaml +0 -47
|
@@ -8,7 +8,10 @@ module Ramaze
|
|
|
8
8
|
unless model.errors.empty?
|
|
9
9
|
s = "<div class=\"form-errors\">\n<h3>Errors</h3>\n<ul>\n"
|
|
10
10
|
model.errors.each do |attribute, error|
|
|
11
|
-
|
|
11
|
+
if error.kind_of? Array
|
|
12
|
+
error = error.join(', ')
|
|
13
|
+
end
|
|
14
|
+
s << "<li>#{attribute.to_s.titleize} #{error}.</li>\n"
|
|
12
15
|
end
|
|
13
16
|
s << "</ul></div>"
|
|
14
17
|
end
|
|
@@ -25,17 +28,11 @@ module Ramaze
|
|
|
25
28
|
|
|
26
29
|
f = ''
|
|
27
30
|
|
|
28
|
-
|
|
29
|
-
f <<
|
|
30
|
-
f << "<ul>\n"
|
|
31
|
-
model.errors.each do |attribute, error|
|
|
32
|
-
f << "<li>#{attribute} #{error}\n</li>"
|
|
33
|
-
end
|
|
34
|
-
f << "</ul>\n"
|
|
35
|
-
f << "</div>\n"
|
|
31
|
+
if model
|
|
32
|
+
f << errors_on(model)
|
|
36
33
|
end
|
|
37
34
|
|
|
38
|
-
f
|
|
35
|
+
f << "<form action=\"#{action}\" method=\"post\" class=\"edit-form\">"
|
|
39
36
|
|
|
40
37
|
fields.each do |field|
|
|
41
38
|
case field
|
|
@@ -58,7 +55,7 @@ module Ramaze
|
|
|
58
55
|
# :default => The default value for the field (inferred from model and id)
|
|
59
56
|
# :p_class => Class attached to the paragraph
|
|
60
57
|
def form_p(id, params = {})
|
|
61
|
-
type = params[:type]
|
|
58
|
+
type = params[:type].to_s
|
|
62
59
|
p_class = params[:p_class]
|
|
63
60
|
description = params[:description] || id.to_s.titleize
|
|
64
61
|
model = params[:model]
|
|
@@ -79,14 +76,13 @@ module Ramaze
|
|
|
79
76
|
end
|
|
80
77
|
|
|
81
78
|
f = "<p #{p_class.nil? ? '' : 'class="' + attr_h(p_class) + '"'}>"
|
|
82
|
-
|
|
79
|
+
if type == 'checkbox' or type == 'hidden'
|
|
80
|
+
elsif type == 'textarea'
|
|
81
|
+
f << "<label class=\"textarea\" for=\"#{id}\">#{description}</label><br />"
|
|
82
|
+
else
|
|
83
83
|
f << "<label for=\"#{id}\">#{description}</label>"
|
|
84
84
|
end
|
|
85
85
|
|
|
86
|
-
if type == 'textarea'
|
|
87
|
-
f << '<br />'
|
|
88
|
-
end
|
|
89
|
-
|
|
90
86
|
case type
|
|
91
87
|
when 'textarea'
|
|
92
88
|
f << "<textarea name=\"#{id}\" id=\"#{id}\">#{Rack::Utils::escape_html default}</textarea>"
|
|
@@ -39,17 +39,32 @@ module Ramaze
|
|
|
39
39
|
s << '</span>'
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
# Returns a
|
|
42
|
+
# Returns a full URL from a relative one.
|
|
43
|
+
def full_url(relative)
|
|
44
|
+
"#{CortexReaver.config.site.url.chomp('/')}#{relative}"
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Returns a list with next/up/previous links for the record.
|
|
43
48
|
def model_nav(model)
|
|
44
|
-
|
|
49
|
+
if not model.respond_to? :next
|
|
50
|
+
# Not applicable
|
|
51
|
+
return
|
|
52
|
+
elsif CortexReaver::User === model or CortexReaver::Page === model
|
|
53
|
+
return
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
n = '<ul class="' + model.class.to_s.underscore + ' navigation actions">'
|
|
45
57
|
if model.previous
|
|
46
|
-
n << ' <a class="previous" href="' + model.previous.url + '">« Previous ' + model.class.to_s.demodulize + '</a>'
|
|
58
|
+
n << ' <li><a class="previous" href="' + model.previous.url + '">« Previous ' + model.class.to_s.demodulize + '</a></li>'
|
|
59
|
+
end
|
|
60
|
+
n << ' <li><a class="up" href="' + model.absolute_window_url + '">Back to ' + model.class.to_s.demodulize.pluralize + '</a></li>'
|
|
61
|
+
if user.can_edit? model
|
|
62
|
+
n << ' <li><a class="edit" href="' + r(:edit, model.id).to_s + '">Edit</a></li>'
|
|
47
63
|
end
|
|
48
|
-
n << ' <a class="up" href="' + model.absolute_window_url + '">Back to ' + model.class.to_s.demodulize.pluralize + '</a>'
|
|
49
64
|
if model.next
|
|
50
|
-
n << ' <a class="next" href="' + model.next.url + '">Next ' + model.class.to_s.demodulize + ' »</a>'
|
|
65
|
+
n << ' <li><a class="next" href="' + model.next.url + '">Next ' + model.class.to_s.demodulize + ' »</a></li>'
|
|
51
66
|
end
|
|
52
|
-
n << '</
|
|
67
|
+
n << '</ul>'
|
|
53
68
|
end
|
|
54
69
|
|
|
55
70
|
# Generate pagination links from a Sequenceable class and index.
|
|
@@ -104,12 +119,14 @@ module Ramaze
|
|
|
104
119
|
pages = [0] + (first_page..last_page).to_a + [window_count - 1]
|
|
105
120
|
else
|
|
106
121
|
# The window encompasses the entire set of pages
|
|
107
|
-
pages = (0
|
|
122
|
+
pages = (0 ... window_count).to_a
|
|
108
123
|
end
|
|
109
124
|
|
|
110
125
|
if page > 0
|
|
111
126
|
# Add "previous page" link.
|
|
112
|
-
links << "<li><a href=\"#{klass.url}/page/#{page - 1}\">« Previous</a></li>"
|
|
127
|
+
links << "<li><a class=\"previous\" href=\"#{klass.url}/page/#{page - 1}\">« Previous</a></li>"
|
|
128
|
+
else
|
|
129
|
+
links << "<li class=\"placeholder\"><span class=\"previous\"></span></li>"
|
|
113
130
|
end
|
|
114
131
|
|
|
115
132
|
# Convert pages to links
|
|
@@ -117,12 +134,12 @@ module Ramaze
|
|
|
117
134
|
pages.inject(pages.first - 1) do |previous, i|
|
|
118
135
|
if (i - previous) > 1
|
|
119
136
|
# These pages are not side-by-side.
|
|
120
|
-
links << '<li>…</li>'
|
|
137
|
+
links << '<li class="elided"><span>…</span></li>'
|
|
121
138
|
end
|
|
122
139
|
|
|
123
140
|
if i == page
|
|
124
141
|
# This is a link to the current page.
|
|
125
|
-
links << "<li class=\"current\">#{i + 1}</li>"
|
|
142
|
+
links << "<li class=\"current\"><span>#{i + 1}</span></li>"
|
|
126
143
|
else
|
|
127
144
|
# This is a link to a different page.
|
|
128
145
|
links << "<li><a href=\"#{klass.url}/page/#{i}\">#{i + 1}</a></li>"
|
|
@@ -135,7 +152,9 @@ module Ramaze
|
|
|
135
152
|
|
|
136
153
|
if page < klass.window_count - 1
|
|
137
154
|
# Add "next page" link.
|
|
138
|
-
links << "<li><a href=\"#{klass.url}/page/#{page + 1}\">Next »</a></li>"
|
|
155
|
+
links << "<li><a class=\"next\" href=\"#{klass.url}/page/#{page + 1}\">Next »</a></li>"
|
|
156
|
+
else
|
|
157
|
+
links << "<li class=\"placeholder\"><span class=\"next\"></span></li>"
|
|
139
158
|
end
|
|
140
159
|
|
|
141
160
|
links << '</ol>'
|
|
@@ -143,14 +162,14 @@ module Ramaze
|
|
|
143
162
|
|
|
144
163
|
# Produces a section navigation list from an array of titles to urls.
|
|
145
164
|
def section_nav(sections)
|
|
146
|
-
s = "<ul>\n"
|
|
165
|
+
s = "<ul class=\"actions\">\n"
|
|
147
166
|
sections.each do |section|
|
|
148
167
|
title = section.first
|
|
149
|
-
url = section.last
|
|
168
|
+
url = section.last.to_s
|
|
150
169
|
klass = url.gsub(/\//, '').gsub(/_/, '-')
|
|
151
|
-
s << '<li
|
|
152
|
-
s << '
|
|
153
|
-
s << '" href="' + attr_h(url) + '">'
|
|
170
|
+
s << '<li class="' + klass
|
|
171
|
+
s << ' current' if request.request_uri[url]
|
|
172
|
+
s << '"><a href="' + attr_h(url) + '">'
|
|
154
173
|
s << title
|
|
155
174
|
s << "</a></li>\n"
|
|
156
175
|
end
|
|
@@ -24,9 +24,9 @@ module Ramaze
|
|
|
24
24
|
# 1/60 => '1/60th'
|
|
25
25
|
def neat_time(rational)
|
|
26
26
|
if rational.denominator == 1
|
|
27
|
-
rational.numerator.
|
|
27
|
+
rational.numerator.to_s + ' seconds'
|
|
28
28
|
else
|
|
29
|
-
"#{rational.numerator}/#{rational.denominator.ordinal.to_s}"
|
|
29
|
+
"#{rational.numerator}/#{rational.denominator.ordinal.to_s} of a second"
|
|
30
30
|
end
|
|
31
31
|
end
|
|
32
32
|
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module Ramaze
|
|
2
|
+
module Helper
|
|
3
|
+
# Provides programmatic sidebar boxes
|
|
4
|
+
module Sidebar
|
|
5
|
+
# Renders the sidebar
|
|
6
|
+
def sidebar
|
|
7
|
+
sidebar = ''
|
|
8
|
+
CortexReaver.config.view.sidebar.each do |path, view|
|
|
9
|
+
if path_matches? path
|
|
10
|
+
sidebar << CortexReaver::MainController.render_view('sidebar/' + view)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
sidebar
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# True if the given glob matches our request path.
|
|
17
|
+
def path_matches?(path)
|
|
18
|
+
case path
|
|
19
|
+
when String
|
|
20
|
+
# Convert string to regex.
|
|
21
|
+
pattern = path.gsub(/\*(\*)?/) do |match|
|
|
22
|
+
if match[1]
|
|
23
|
+
'.*'
|
|
24
|
+
else
|
|
25
|
+
'[^\/]*'
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
if Regexp.new("^#{pattern}$").match request.path_info
|
|
30
|
+
true
|
|
31
|
+
else
|
|
32
|
+
false
|
|
33
|
+
end
|
|
34
|
+
when Regexp
|
|
35
|
+
if path.match request.path_info
|
|
36
|
+
true
|
|
37
|
+
else
|
|
38
|
+
false
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -1,23 +1,41 @@
|
|
|
1
1
|
module Ramaze
|
|
2
2
|
module Helper
|
|
3
3
|
module Tags
|
|
4
|
+
Helper::LOOKUP << self
|
|
5
|
+
|
|
6
|
+
# Finds models with a given tag.
|
|
7
|
+
def tagged(tags)
|
|
8
|
+
tags = tags.split(',').map! do |tag|
|
|
9
|
+
CortexReaver::Tag.get(tag.gsub(/[^-_\w]+/, '').strip)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
@title = "#{model_class.to_s.demodulize.pluralize.titleize}: #{tags.join(', ')}"
|
|
13
|
+
@models = model_class.tagged_with(tags)
|
|
14
|
+
set_plural_model_var @models
|
|
15
|
+
|
|
16
|
+
if user.can_create? model_class.new
|
|
17
|
+
workflow "New #{model_class.to_s.demodulize}", rs(:new)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
render_view(:list)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
private
|
|
4
24
|
# Adds an AJAX-ified tag editor for a model.
|
|
5
25
|
def live_tags_field(model, opts={:name => 'tags'})
|
|
6
26
|
name = opts[:name]
|
|
7
27
|
title = opts[:title] || name.to_s.titleize
|
|
8
28
|
|
|
9
29
|
s = "<p><label for=\"#{name}\">#{title}</label>\n"
|
|
10
|
-
s << "<
|
|
11
|
-
s << "
|
|
12
|
-
s << "</ul></p>"
|
|
30
|
+
s << "<input name=\"#{name}\" id=\"#{name}\" type=\"text\" value=\"#{attr_h(tags_on(model, false))}\" />"
|
|
31
|
+
s << "</p>"
|
|
13
32
|
|
|
14
33
|
s << <<EOF
|
|
15
34
|
<script type="text/javascript">
|
|
16
35
|
/* <![CDATA[ */
|
|
17
36
|
$(document).ready(function() {
|
|
18
|
-
$("##{name}
|
|
19
|
-
|
|
20
|
-
acOptions:{extraParams:{id:'title'}}
|
|
37
|
+
$("##{name}").autotags({
|
|
38
|
+
url: "#{CortexReaver::TagController.r(:autocomplete)}"
|
|
21
39
|
});
|
|
22
40
|
});
|
|
23
41
|
/* ]]> */
|
|
@@ -25,16 +43,21 @@ module Ramaze
|
|
|
25
43
|
EOF
|
|
26
44
|
end
|
|
27
45
|
|
|
28
|
-
# Returns
|
|
29
|
-
def tags_on(model, html
|
|
46
|
+
# Returns a list of tags on a model that supports #tags.
|
|
47
|
+
def tags_on(model, format = :html)
|
|
30
48
|
begin
|
|
31
|
-
|
|
49
|
+
case format
|
|
50
|
+
when :html
|
|
32
51
|
#t = '<img src="/images/tag.gif" alt="Tags" />'
|
|
33
52
|
t = '<ul class="tags">'
|
|
34
53
|
model.tags.each do |tag|
|
|
35
54
|
t << "<li><a href=\"#{tag.url}\">#{tag.title}</a></li>"
|
|
36
55
|
end
|
|
37
56
|
t << '</ul>'
|
|
57
|
+
when :json
|
|
58
|
+
model.tags.map { |t|
|
|
59
|
+
{:id => t.name, :name => t.title}
|
|
60
|
+
}.to_json
|
|
38
61
|
else
|
|
39
62
|
t = model.tags.map{ |t| t.title }.join(', ')
|
|
40
63
|
end
|
|
@@ -6,21 +6,9 @@ module Ramaze
|
|
|
6
6
|
@workflows
|
|
7
7
|
end
|
|
8
8
|
|
|
9
|
-
def workflow(name, href)
|
|
9
|
+
def workflow(name, href, *classes)
|
|
10
10
|
@workflows ||= []
|
|
11
|
-
@workflows << [name, href]
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def workflowbox
|
|
15
|
-
if @workflows
|
|
16
|
-
b = '<div class="workflows">'
|
|
17
|
-
b << ' <ul>'
|
|
18
|
-
@workflows.each do |name, href|
|
|
19
|
-
b << " <li><a href=\"#{href}\">#{name}</a></li>"
|
|
20
|
-
end
|
|
21
|
-
b << ' </ul>'
|
|
22
|
-
b << '</div>'
|
|
23
|
-
end
|
|
11
|
+
@workflows << [name, href, classes]
|
|
24
12
|
end
|
|
25
13
|
end
|
|
26
14
|
end
|
|
@@ -3,45 +3,41 @@
|
|
|
3
3
|
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
|
4
4
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
5
5
|
<head>
|
|
6
|
-
<title><%=h (@title || CortexReaver.config[:site][:name]) %></title>
|
|
7
|
-
<meta http-equiv="Content-Script-Type" content="text/javascript" />
|
|
8
|
-
<meta http-equiv="Content-Style-Type" content="text/css" />
|
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
10
|
-
<meta http-equiv="expires" content="0" />
|
|
11
|
-
<meta name="description" content="<%=attr_h CortexReaver.config[:site][:description] %>" />
|
|
12
|
-
<meta name="generator" content="Cortex Reaver <%= CortexReaver::APP_VERSION %>" />
|
|
13
|
-
<meta name="keywords" content="<%= attr_h CortexReaver.config[:site][:keywords] %>" />
|
|
14
|
-
<meta name="author" content="<%= attr_h CortexReaver.config[:site][:author] %>" />
|
|
15
|
-
<meta name="date" content="<%= Time.now.iso8601 %>" />
|
|
16
|
-
<link rel="stylesheet" type="text/css" href="/css/main.css" />
|
|
17
|
-
<link rel="stylesheet" type="text/css" href="/css/admin.css" />
|
|
18
|
-
<link rel="stylesheet" type="text/css" href="/css/photo.css" />
|
|
19
|
-
<link rel="stylesheet" type="text/css" href="/css/text.css" />
|
|
20
|
-
<link rel="stylesheet" type="text/css" href="/css/form.css" />
|
|
21
|
-
<link rel="stylesheet" type="text/css" href="/css/code.css" />
|
|
22
|
-
<link rel="stylesheet" type="text/css" href="/css/custom.css" />
|
|
23
6
|
<% if defined? feeds %>
|
|
24
7
|
<% feeds.each do |title, feed| %>
|
|
25
8
|
<link rel="alternate" type="application/atom+xml" href="<%= attr_h feed %>" title="<%= attr_h title %>" />
|
|
26
9
|
<% end %>
|
|
27
10
|
<% end %>
|
|
11
|
+
|
|
12
|
+
<%= CortexReaver::MainController.render_view('head') %>
|
|
28
13
|
</head>
|
|
29
|
-
<body class="blank">
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
<script type="text/javascript" defer="defer" src="/js/admin.js"></script>
|
|
33
|
-
<script type="text/javascript" src="/js/photo.js"></script>
|
|
34
|
-
|
|
14
|
+
<body class="blank <%= @body_class %>">
|
|
15
|
+
<%= CortexReaver::MainController.render_view('js') %>
|
|
16
|
+
|
|
35
17
|
<%= CortexReaver::MainController.render_view('adminbox') %>
|
|
36
18
|
|
|
37
|
-
<%=
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
19
|
+
<%= @content %>
|
|
20
|
+
|
|
21
|
+
<%= CortexReaver::MainController.render_view('tracker') %>
|
|
22
|
+
|
|
23
|
+
<script type="text/javascript">
|
|
24
|
+
/* <![CDATA[ */
|
|
25
|
+
$(document).ready(function() {
|
|
26
|
+
$('#main').corners('10px');
|
|
42
27
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
28
|
+
$('.pagination').each(function() {
|
|
29
|
+
$(this).find('li:not(.placeholder):first').corners("left");
|
|
30
|
+
$(this).find('li:not(.placeholder):last').corners("right");
|
|
31
|
+
});
|
|
32
|
+
$('.pagination li').not('.elided').add('.actions > li').not('.current').not('.placeholder').each(function(i) {
|
|
33
|
+
$(this).fadeTo(0,0.8);
|
|
34
|
+
$(this).hover(
|
|
35
|
+
function() { $(this).fadeTo(0,1) },
|
|
36
|
+
function() { $(this).fadeTo(200,0.8) }
|
|
37
|
+
);
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
/* ]]> */
|
|
41
|
+
</script>
|
|
46
42
|
</body>
|
|
47
43
|
</html>
|
|
@@ -3,83 +3,70 @@
|
|
|
3
3
|
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
|
|
4
4
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
5
5
|
<head>
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
<meta http-equiv="Content-Style-Type" content="text/css" />
|
|
9
|
-
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
10
|
-
<meta http-equiv="expires" content="0" />
|
|
11
|
-
<meta name="description" content="<%= attr_h CortexReaver.config[:site][:description] %>" />
|
|
12
|
-
<meta name="generator" content="Cortex Reaver <%= CortexReaver::APP_VERSION %>" />
|
|
13
|
-
<meta name="keywords" content="<%= attr_h CortexReaver.config[:site][:keywords] %>" />
|
|
14
|
-
<meta name="author" content="<%= attr_h CortexReaver.config[:site][:author] %>" />
|
|
15
|
-
<meta name="date" content="<%= Time.now.iso8601 %>" />
|
|
16
|
-
<link rel="stylesheet" type="text/css" href="/css/main.css" />
|
|
17
|
-
<link rel="stylesheet" type="text/css" href="/css/admin.css" />
|
|
18
|
-
<link rel="stylesheet" type="text/css" href="/css/photo.css" />
|
|
19
|
-
<link rel="stylesheet" type="text/css" href="/css/text.css" />
|
|
20
|
-
<link rel="stylesheet" type="text/css" href="/css/form.css" />
|
|
21
|
-
<link rel="stylesheet" type="text/css" href="/css/code.css" />
|
|
22
|
-
<link rel="stylesheet" type="text/css" href="/css/custom.css" />
|
|
23
|
-
<% if @feeds %>
|
|
24
|
-
<% @feeds.each do |title, feed| %>
|
|
6
|
+
<% if defined? feeds %>
|
|
7
|
+
<% feeds.each do |title, feed| %>
|
|
25
8
|
<link rel="alternate" type="application/atom+xml" href="<%= attr_h feed %>" title="<%= attr_h title %>" />
|
|
26
9
|
<% end %>
|
|
27
10
|
<% end %>
|
|
11
|
+
|
|
12
|
+
<%= CortexReaver::MainController.render_view('head') %>
|
|
28
13
|
</head>
|
|
29
|
-
<body>
|
|
30
|
-
|
|
31
|
-
<script type="text/javascript" defer="defer" src="/js/cookie.js"></script>
|
|
32
|
-
<script type="text/javascript" defer="defer" src="/js/admin.js"></script>
|
|
33
|
-
<% if user.admin? or user.contributor? or user.editor? or user.moderator? %>
|
|
34
|
-
<script type="text/javascript" defer="defer" src="/js/jquery.autocomplete.js"></script>
|
|
35
|
-
<script type="text/javascript" defer="defer" src="/js/jquery.bgiframe.min.js"></script>
|
|
36
|
-
<script type="text/javascript" defer="defer" src="/js/jquery.dimensions.js"></script>
|
|
37
|
-
<script type="text/javascript" defer="defer" src="/js/jquery.autocompletefb.js"></script>
|
|
38
|
-
<% end %>
|
|
39
|
-
|
|
40
|
-
<div id="top">
|
|
41
|
-
<a href="/">
|
|
42
|
-
<img id="header" src="/images/header.png" alt="<%= attr_h CortexReaver.config[:site][:name] %>" />
|
|
43
|
-
</a>
|
|
44
|
-
</div>
|
|
14
|
+
<body class="<%= @body_class %>">
|
|
15
|
+
<%= CortexReaver::MainController.render_view('js') %>
|
|
45
16
|
|
|
46
|
-
|
|
47
|
-
<%= section_nav([
|
|
48
|
-
['Journals', '/journals'],
|
|
49
|
-
['Photographs', '/photographs'],
|
|
50
|
-
['Projects', '/projects'],
|
|
51
|
-
['Tags', '/tags'],
|
|
52
|
-
['Comments', '/comments'],
|
|
53
|
-
['About', '/about']
|
|
54
|
-
]) %>
|
|
55
|
-
</div>
|
|
17
|
+
<%= CortexReaver::MainController.render_view('adminbox') %>
|
|
56
18
|
|
|
57
|
-
<div id="
|
|
58
|
-
<
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
19
|
+
<div id="content">
|
|
20
|
+
<div id="top">
|
|
21
|
+
<% if @model %>
|
|
22
|
+
<%= model_nav @model %>
|
|
23
|
+
<% end %>
|
|
24
|
+
<h1><a href="/"><%=h CortexReaver.config.site.name %></a></h1>
|
|
25
|
+
</div>
|
|
63
26
|
|
|
64
|
-
|
|
27
|
+
<div id="boxes">
|
|
28
|
+
<%= sidebar %>
|
|
29
|
+
</div>
|
|
65
30
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
</td>
|
|
31
|
+
<div id="main-container">
|
|
32
|
+
<div id="main">
|
|
33
|
+
<%= flashbox %>
|
|
70
34
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
<%= @sidebar %>
|
|
74
|
-
</td>
|
|
75
|
-
<% end %>
|
|
76
|
-
</tr>
|
|
77
|
-
</tbody>
|
|
78
|
-
</table>
|
|
79
|
-
</div>
|
|
35
|
+
<%= @content %>
|
|
36
|
+
</div>
|
|
80
37
|
|
|
81
|
-
|
|
82
|
-
|
|
38
|
+
<div id="colophon">
|
|
39
|
+
Copyright © <% if @model %>
|
|
40
|
+
<%= @model.updated_on.year %>
|
|
41
|
+
<%= user_link @model %>
|
|
42
|
+
<% else %>
|
|
43
|
+
<%= CortexReaver.content_range.begin.year %>—<%= CortexReaver.content_range.end.year %>
|
|
44
|
+
<%=h CortexReaver.config.site.author %>
|
|
45
|
+
<% end %>
|
|
46
|
+
</div>
|
|
47
|
+
</div>
|
|
83
48
|
</div>
|
|
49
|
+
|
|
50
|
+
<%= CortexReaver::MainController.render_view('tracker') %>
|
|
51
|
+
|
|
52
|
+
<script type="text/javascript">
|
|
53
|
+
/* <![CDATA[ */
|
|
54
|
+
$(document).ready(function() {
|
|
55
|
+
$('#main').corners('10px');
|
|
56
|
+
|
|
57
|
+
$('.pagination').each(function() {
|
|
58
|
+
$(this).find('li:not(.placeholder):first').corners("left");
|
|
59
|
+
$(this).find('li:not(.placeholder):last').corners("right");
|
|
60
|
+
});
|
|
61
|
+
$('.pagination li').add('.actions > li').not('.elided').not('.current').not('.placeholder').each(function(i) {
|
|
62
|
+
$(this).fadeTo(0,0.8);
|
|
63
|
+
$(this).hover(
|
|
64
|
+
function() { $(this).fadeTo(0,1) },
|
|
65
|
+
function() { $(this).fadeTo(200,0.8) }
|
|
66
|
+
);
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
/* ]]> */
|
|
70
|
+
</script>
|
|
84
71
|
</body>
|
|
85
72
|
</html>
|