junebug 0.0.12 → 0.0.13
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/CHANGELOG +7 -0
- data/Rakefile +1 -1
- data/deploy/static/style/base.css +17 -16
- data/lib/junebug/controllers.rb +14 -20
- data/lib/junebug/helpers.rb +24 -0
- data/lib/junebug/views.rb +7 -6
- metadata +2 -2
data/CHANGELOG
CHANGED
data/Rakefile
CHANGED
@@ -12,7 +12,7 @@ Gem.manage_gems
|
|
12
12
|
|
13
13
|
gem_spec = Gem::Specification.new do |s|
|
14
14
|
s.name = 'junebug'
|
15
|
-
s.version = '0.0.
|
15
|
+
s.version = '0.0.13'
|
16
16
|
s.summary = "Junebug is a minimalist ruby wiki."
|
17
17
|
s.description = "Junebug is a minimalist ruby wiki running on Camping."
|
18
18
|
s.author = "Tim Myrtle"
|
@@ -1,4 +1,13 @@
|
|
1
1
|
|
2
|
+
a:link, a:visited {
|
3
|
+
text-decoration: none;
|
4
|
+
color: #00f;
|
5
|
+
}
|
6
|
+
a:hover {
|
7
|
+
text-decoration: underline;
|
8
|
+
color: #00f;
|
9
|
+
}
|
10
|
+
|
2
11
|
|
3
12
|
form { display: inline; }
|
4
13
|
|
@@ -52,13 +61,6 @@ body {
|
|
52
61
|
color: #ffffff;
|
53
62
|
}
|
54
63
|
|
55
|
-
#hd a:link, #hd a:visited {
|
56
|
-
text-decoration: none;
|
57
|
-
}
|
58
|
-
#hd a:hover {
|
59
|
-
text-decoration: underline;
|
60
|
-
}
|
61
|
-
|
62
64
|
#hd a {
|
63
65
|
color: #ffffff;
|
64
66
|
}
|
@@ -77,7 +79,6 @@ body {
|
|
77
79
|
background-color: #ffffff;
|
78
80
|
border:5px solid #929292;
|
79
81
|
border-width:0 5px 5px 0;
|
80
|
-
min-height: 300px;
|
81
82
|
}
|
82
83
|
|
83
84
|
#yui-main{
|
@@ -87,11 +88,13 @@ body {
|
|
87
88
|
}
|
88
89
|
|
89
90
|
#ft {
|
90
|
-
border: 1px solid #
|
91
|
-
background-color: #
|
91
|
+
border: 1px solid #eee;
|
92
|
+
background-color: #ddd;
|
93
|
+
color: #333;
|
92
94
|
font-size: 100%;
|
93
95
|
padding: 8px;
|
94
96
|
margin-bottom: 10px;
|
97
|
+
line-height: 150%;
|
95
98
|
}
|
96
99
|
|
97
100
|
.formbox {
|
@@ -145,10 +148,7 @@ body {
|
|
145
148
|
.content {
|
146
149
|
font-size: 114%;
|
147
150
|
padding: 25px;
|
148
|
-
|
149
|
-
|
150
|
-
.content a:link, .content a:visited, .content a:hover {
|
151
|
-
color: #00f;
|
151
|
+
min-height: 300px;
|
152
152
|
}
|
153
153
|
|
154
154
|
.content h2, .content h3, .content h4 {
|
@@ -164,14 +164,14 @@ body {
|
|
164
164
|
.content h2 {
|
165
165
|
font-size: 129%;
|
166
166
|
border-bottom: 2px dotted #bbb;
|
167
|
-
margin-top:
|
167
|
+
margin-top: 25px;
|
168
168
|
margin-bottom: 10px;
|
169
169
|
/* background-color: #d6fbf4;*/
|
170
170
|
}
|
171
171
|
|
172
172
|
.content h3 {
|
173
173
|
font-size: 129%;
|
174
|
-
margin-top:
|
174
|
+
margin-top: 25px;
|
175
175
|
margin-bottom: 10px;
|
176
176
|
/* border-bottom: 1px dotted #bbb;*/
|
177
177
|
}
|
@@ -229,6 +229,7 @@ body {
|
|
229
229
|
/* font-family:"Bitstream Vera Sans Mono", "Monaco", "Courier", monospace;*/
|
230
230
|
display: block;
|
231
231
|
background: #eee;
|
232
|
+
border: 1px solid #ddd;
|
232
233
|
padding: 8px 20px;
|
233
234
|
}
|
234
235
|
|
data/lib/junebug/controllers.rb
CHANGED
@@ -21,22 +21,19 @@ module Junebug::Controllers
|
|
21
21
|
|
22
22
|
class Edit < R '/(\w+)/edit', '/(\w+)/(\d+)/edit'
|
23
23
|
def get page_name, version = nil
|
24
|
-
redirect("#{Junebug.config['url']}/login") and return
|
24
|
+
redirect("#{Junebug.config['url']}/login") and return unless logged_in?
|
25
25
|
@page_title = "Edit #{page_name}"
|
26
26
|
@page = Page.find(:first, :conditions=>['title = ?', page_name])
|
27
|
-
@page = Page.create(:title => page_name, :user_id=>@state.
|
27
|
+
@page = Page.create(:title => page_name, :user_id=>@state.user.id) unless @page
|
28
28
|
@page = @page.versions.find_by_version(version) unless version.nil? or version == @page.version.to_s
|
29
29
|
render :edit
|
30
30
|
end
|
31
31
|
|
32
32
|
def post page_name
|
33
|
-
redirect("#{Junebug.config['url']}/login") and return
|
34
|
-
if input.submit == '
|
35
|
-
|
36
|
-
|
37
|
-
elsif input.submit == 'save'
|
38
|
-
attrs = { :body => input.post_body, :title => input.post_title, :user_id =>@state.user_id }
|
39
|
-
attrs[:readonly] = input.post_readonly if @state.user_id == 1
|
33
|
+
redirect("#{Junebug.config['url']}/login") and return unless logged_in?
|
34
|
+
if input.submit == 'save'
|
35
|
+
attrs = { :body => input.post_body, :title => input.post_title, :user_id =>@state.user.id }
|
36
|
+
attrs[:readonly] = input.post_readonly if is_admin?
|
40
37
|
if Page.find_or_create_by_title(page_name).update_attributes( attrs )
|
41
38
|
# redirect Show, input.post_title
|
42
39
|
redirect "#{Junebug.config['url']}/#{input.post_title}"
|
@@ -49,8 +46,8 @@ module Junebug::Controllers
|
|
49
46
|
|
50
47
|
class Delete < R '/(\w+)/delete'
|
51
48
|
def get page_name
|
52
|
-
redirect("#{Junebug.config['url']}/login") and return
|
53
|
-
Page.find_by_title(page_name).destroy() if
|
49
|
+
redirect("#{Junebug.config['url']}/login") and return unless logged_in?
|
50
|
+
Page.find_by_title(page_name).destroy() if is_admin?
|
54
51
|
redirect Junebug.startpage
|
55
52
|
end
|
56
53
|
|
@@ -58,8 +55,8 @@ module Junebug::Controllers
|
|
58
55
|
|
59
56
|
class Revert < R '/(\w+)/(\d+)/revert'
|
60
57
|
def get page_name, version
|
61
|
-
redirect("#{Junebug.config['url']}/login") and return
|
62
|
-
Page.find_by_title(page_name).revert_to!(version) if
|
58
|
+
redirect("#{Junebug.config['url']}/login") and return unless logged_in?
|
59
|
+
Page.find_by_title(page_name).revert_to!(version) if is_admin?
|
63
60
|
redirect "#{Junebug.config['url']}/#{page_name}"
|
64
61
|
end
|
65
62
|
end
|
@@ -148,8 +145,7 @@ module Junebug::Controllers
|
|
148
145
|
@user = User.find :first, :conditions => ['username = ? AND password = ?', input.username, input.password]
|
149
146
|
if @user
|
150
147
|
if @user.password == input.password
|
151
|
-
@state.
|
152
|
-
@state.user_username = @user.username
|
148
|
+
@state.user = @user
|
153
149
|
redirect(Junebug.startpage); return
|
154
150
|
else
|
155
151
|
@notice = 'Authentication failed'
|
@@ -157,8 +153,7 @@ module Junebug::Controllers
|
|
157
153
|
else
|
158
154
|
@user = User.create :username=>input.username, :password=>input.password
|
159
155
|
if @user.errors.empty?
|
160
|
-
@state.
|
161
|
-
@state.user_username = @user.username
|
156
|
+
@state.user = @user
|
162
157
|
redirect(Junebug.startpage); return
|
163
158
|
else
|
164
159
|
@notice = @user.errors.full_messages[0]
|
@@ -170,9 +165,8 @@ module Junebug::Controllers
|
|
170
165
|
|
171
166
|
class Logout
|
172
167
|
def get
|
173
|
-
|
174
|
-
|
175
|
-
redirect(Junebug.startpage)
|
168
|
+
@state.user = nil
|
169
|
+
redirect(Junebug.startpage)
|
176
170
|
end
|
177
171
|
end
|
178
172
|
end
|
data/lib/junebug/helpers.rb
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
|
2
2
|
module Junebug::Helpers
|
3
|
+
|
4
|
+
def logged_in?
|
5
|
+
!@state.user.blank?
|
6
|
+
end
|
7
|
+
|
8
|
+
def is_admin?
|
9
|
+
@state.user && @state.user.role == Junebug::Models::User::ROLE_ADMIN
|
10
|
+
end
|
11
|
+
|
3
12
|
def last_updated(page)
|
4
13
|
from = page.updated_at.to_i
|
5
14
|
to = Time.now.to_i
|
@@ -15,4 +24,19 @@ module Junebug::Helpers
|
|
15
24
|
else "#{(distance / 1440).round} days"
|
16
25
|
end
|
17
26
|
end
|
27
|
+
|
28
|
+
def auto_link_urls(text)
|
29
|
+
extra_options = ""
|
30
|
+
text.gsub(/(<\w+.*?>|[^=!:'"\/]|^)((?:http[s]?:\/\/)|(?:www\.))([^\s<]+\/?)([[:punct:]]|\s|<|$)/) do
|
31
|
+
all, a, b, c, d = $&, $1, $2, $3, $4
|
32
|
+
if a =~ /<a\s/i # don't replace URL's that are already linked
|
33
|
+
all
|
34
|
+
else
|
35
|
+
text = b + c
|
36
|
+
text = yield(text) if block_given?
|
37
|
+
%(#{a}<a href="#{b=="www."?"http://www.":b}#{c}"#{extra_options}>#{text}</a>#{d})
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
18
42
|
end
|
data/lib/junebug/views.rb
CHANGED
@@ -23,9 +23,10 @@ module Junebug::Views
|
|
23
23
|
def show
|
24
24
|
_header (@version.version == @page.version ? :show : :backlinks), @page.title
|
25
25
|
_body {
|
26
|
-
_button 'edit', R(Edit, @page.title, @version.version), {:style=>'float: right; margin: 0 0 5px 5px;'} if (@version.version == @page.version && (! @page.readonly ||
|
26
|
+
_button 'edit', R(Edit, @page.title, @version.version), {:style=>'float: right; margin: 0 0 5px 5px;'} if logged_in? && (@version.version == @page.version && (! @page.readonly || is_admin?))
|
27
27
|
_markup @version.body
|
28
|
-
_button 'edit', R(Edit, @page.title, @version.version), {:style=>'float: right; margin: 0 0 5px
|
28
|
+
_button 'edit', R(Edit, @page.title, @version.version), {:style=>'float: right; margin: 5px 0 0 5px;'} if logged_in? && (@version.version == @page.version && (! @page.readonly || is_admin?)) && (@version.body && @version.body.size > 100)
|
29
|
+
br :clear=>'all'
|
29
30
|
}
|
30
31
|
_footer {
|
31
32
|
text "Last edited by <b>#{@version.user.username}</b> on #{@page.updated_at.strftime('%B %d, %Y %I:%M %p')}"
|
@@ -46,7 +47,7 @@ module Junebug::Views
|
|
46
47
|
a 'versions', :href => R(Versions, @page.title)
|
47
48
|
}
|
48
49
|
}
|
49
|
-
if
|
50
|
+
if is_admin?
|
50
51
|
div.admin {
|
51
52
|
_button 'delete', R(Delete, @page.title), {:onclick=>'return confirm("Sure you want to delete?")'} if @version.version == @page.version
|
52
53
|
_button 'revert to', R(Revert, @page.title, @version.version), {:onclick=>'return confirm("Sure you want to revert?")'} if @version.version != @page.version
|
@@ -71,7 +72,7 @@ module Junebug::Views
|
|
71
72
|
br
|
72
73
|
textarea @page.body, :name => 'post_body', :rows => 17, :cols => 80
|
73
74
|
}
|
74
|
-
if
|
75
|
+
if is_admin?
|
75
76
|
opts = { :type => 'checkbox', :value=>'1', :name => 'post_readonly' }
|
76
77
|
opts[:checked] = 1 if @page.readonly
|
77
78
|
input opts
|
@@ -215,13 +216,13 @@ module Junebug::Views
|
|
215
216
|
%Q{<span>#{title}<a href="#{self/R(Edit, page, 1)}">?</a></span>}
|
216
217
|
end
|
217
218
|
end
|
218
|
-
text RedCloth.new(txt, [ ]).to_html
|
219
|
+
text RedCloth.new(auto_link_urls(txt), [ ]).to_html
|
219
220
|
end
|
220
221
|
|
221
222
|
def _header type, page_title
|
222
223
|
div :id=>'hd' do
|
223
224
|
span :id=>'userlinks', :style=>'float: right;' do
|
224
|
-
|
225
|
+
logged_in? ? (text "Welcome, #{@state.user.username} - " ; a('sign out', :href=>R(Logout))) : a('sign in', :href=>R(Login))
|
225
226
|
end
|
226
227
|
if type == :static
|
227
228
|
h1 page_title
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
|
|
3
3
|
specification_version: 1
|
4
4
|
name: junebug
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.0.
|
7
|
-
date: 2006-11-
|
6
|
+
version: 0.0.13
|
7
|
+
date: 2006-11-14 00:00:00 -08:00
|
8
8
|
summary: Junebug is a minimalist ruby wiki.
|
9
9
|
require_paths:
|
10
10
|
- lib
|