irwi 0.2.2 → 0.2.3
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.rdoc +16 -0
- data/VERSION +1 -1
- data/app/views/base_wiki_pages/edit.html.erb +10 -12
- data/generators/irwi_wiki/templates/helpers/wiki_pages_helper.rb +1 -1
- data/generators/{irwi_wiki_updates/irwi_wiki_updates_generator.rb → irwi_wiki_attachments/irwi_wiki_attachments_generator.rb} +1 -1
- data/generators/{irwi_wiki_updates → irwi_wiki_attachments}/templates/migrate/create_wiki_page_attachments.rb +0 -0
- data/generators/{irwi_wiki_updates → irwi_wiki_attachments}/templates/models/wiki_page_attachment.rb +0 -0
- data/irwi.gemspec +7 -6
- data/lib/irwi/config.rb +6 -3
- data/lib/irwi/extensions/controllers/wiki_pages.rb +2 -2
- data/lib/irwi/extensions/models/wiki_page.rb +4 -1
- data/lib/irwi/helpers/wiki_pages_helper.rb +27 -2
- data/rails/init.rb +10 -0
- data/spec/extensions/models/wiki_page_spec.rb +79 -0
- data/spec/helpers/wiki_page_attachments_helper_spec.rb +1 -4
- data/spec/helpers/wiki_pages_helper_spec.rb +3 -2
- metadata +8 -7
- data/generators/irwi_wiki_updates/templates/migrate/touched_file.txt +0 -0
data/README.rdoc
CHANGED
@@ -70,6 +70,14 @@ If you want (and it's good idea) to specify which users can see or edit certain
|
|
70
70
|
* <tt>history_allowed?</tt> - should return <tt>true</tt> when it's allowed for user to see history of current page (@page) and compare it's versions.
|
71
71
|
* <tt>edit_allowed?</tt> - should return <tt>true</tt> when it's allowed for current user to modify current page (@page).
|
72
72
|
|
73
|
+
== Attachments
|
74
|
+
|
75
|
+
Irwi allows easy attachment integration in your wiki. There area several simple steps to add attachments to wiki pages:
|
76
|
+
* Call <tt>irwi_wiki_attachments</tt> generator. It will create WikiPageAttachment class.
|
77
|
+
* Include <tt>config.gem "paperclip"</tt> in your <tt>environment.rb</tt> or, if you prefer another library modify generated code for it.
|
78
|
+
* Append to initializer (or create a new one) something like <tt>Irwi.config.page_attachment_class_name = 'WikiPageAttachment'</tt>.
|
79
|
+
* Run <tt>rake db:migrate</tt> and start using attachments in your wiki!
|
80
|
+
|
73
81
|
== Localization
|
74
82
|
|
75
83
|
== Rails prior to 2.3
|
@@ -80,4 +88,12 @@ If you have Rails prior to 2.3 when you should also call:
|
|
80
88
|
|
81
89
|
To generate default wiki views.
|
82
90
|
|
91
|
+
== Contributors
|
92
|
+
|
93
|
+
* Alexey Noskov (http://github.com/alno)
|
94
|
+
* Ravi Bhim (http://github.com/ravibhim)
|
95
|
+
* http://github.com/valodzka
|
96
|
+
|
97
|
+
Feel free to add yourself when you add new features.
|
98
|
+
|
83
99
|
Copyright (c) 2009 Alexey Noskov, released under the MIT license
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.2.
|
1
|
+
0.2.3
|
@@ -2,6 +2,12 @@
|
|
2
2
|
|
3
3
|
<h1><%=wt 'Editing wiki page' %></h1>
|
4
4
|
|
5
|
+
<% if params[:preview] %>
|
6
|
+
<div class="wiki_content">
|
7
|
+
<%=wiki_content @page.content %>
|
8
|
+
</div>
|
9
|
+
<% end %>
|
10
|
+
|
5
11
|
<% wiki_page_form do |f| %>
|
6
12
|
<%= f.hidden_field :previous_version_number, :value => f.object.last_version_number %>
|
7
13
|
|
@@ -9,18 +15,10 @@
|
|
9
15
|
<p><%=wt 'Content:' %><br /><%= f.text_area :content %></p>
|
10
16
|
<p><%=wt 'Comment on this change (optional):' %><br /><%= f.text_field :comment %></p>
|
11
17
|
|
12
|
-
<input type="submit" value="<%=wt 'Save page' %>" class="submit" />
|
18
|
+
<input type="submit" name="save" value="<%=wt 'Save page' %>" class="submit" />
|
19
|
+
<input type="submit" name="preview" value="<%=wt 'Preview' %>" class="submit" />
|
20
|
+
<input type="submit" name="cancel" value="<%=wt 'Cancel' %>" class="submit" />
|
13
21
|
<% end %>
|
14
22
|
|
23
|
+
<% wiki_page_attachments(@page) %>
|
15
24
|
|
16
|
-
<%- @page.attachments.each do |attachment| %>
|
17
|
-
<%= image_tag attachment.wiki_page_attachment.url(:thumb) %>
|
18
|
-
<%= "Attachment_#{attachment.id}" %>
|
19
|
-
<%= link_to wt('Remove'), wiki_remove_page_attachment_path(attachment.id), :method => :delete %>
|
20
|
-
<% end %>
|
21
|
-
|
22
|
-
<% form_for :wiki_page_attachment, Irwi.config.page_attachment_class.new, :url => wiki_add_page_attachment_path(@page), :html => { :multipart => true } do |form| %>
|
23
|
-
<%= form.file_field :wiki_page_attachment %>
|
24
|
-
<%= form.hidden_field :page_id, :value => @page.id %>
|
25
|
-
<%= form.submit 'Add Attachment' %>
|
26
|
-
<% end %>
|
File without changes
|
data/generators/{irwi_wiki_updates → irwi_wiki_attachments}/templates/models/wiki_page_attachment.rb
RENAMED
File without changes
|
data/irwi.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{irwi}
|
8
|
-
s.version = "0.2.
|
8
|
+
s.version = "0.2.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Alexey Noskov", "Ravi Bhim"]
|
12
|
-
s.date = %q{2010-06-
|
12
|
+
s.date = %q{2010-06-24}
|
13
13
|
s.description = %q{Irwi is Ruby on Rails plugin which adds wiki functionality to your application. }
|
14
14
|
s.email = %q{alexey.noskov@gmail.com ravi.bhim@yahoo.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -40,10 +40,9 @@ Gem::Specification.new do |s|
|
|
40
40
|
"generators/irwi_wiki/templates/migrate/create_wiki_pages.rb",
|
41
41
|
"generators/irwi_wiki/templates/models/wiki_page.rb",
|
42
42
|
"generators/irwi_wiki/templates/models/wiki_page_version.rb",
|
43
|
-
"generators/
|
44
|
-
"generators/
|
45
|
-
"generators/
|
46
|
-
"generators/irwi_wiki_updates/templates/models/wiki_page_attachment.rb",
|
43
|
+
"generators/irwi_wiki_attachments/irwi_wiki_attachments_generator.rb",
|
44
|
+
"generators/irwi_wiki_attachments/templates/migrate/create_wiki_page_attachments.rb",
|
45
|
+
"generators/irwi_wiki_attachments/templates/models/wiki_page_attachment.rb",
|
47
46
|
"generators/irwi_wiki_views/irwi_wiki_views_generator.rb",
|
48
47
|
"irwi.gemspec",
|
49
48
|
"lib/irwi.rb",
|
@@ -69,6 +68,7 @@ Gem::Specification.new do |s|
|
|
69
68
|
"spec/comparators/diff_lcs_spec.rb",
|
70
69
|
"spec/config_spec.rb",
|
71
70
|
"spec/extensions/controllers/wiki_pages_spec.rb",
|
71
|
+
"spec/extensions/models/wiki_page_spec.rb",
|
72
72
|
"spec/formatters/red_cloth_spec.rb",
|
73
73
|
"spec/helpers/wiki_page_attachments_helper_spec.rb",
|
74
74
|
"spec/helpers/wiki_pages_helper_spec.rb",
|
@@ -92,6 +92,7 @@ Gem::Specification.new do |s|
|
|
92
92
|
"spec/spec_helper.rb",
|
93
93
|
"spec/comparators/diff_lcs_spec.rb",
|
94
94
|
"spec/extensions/controllers/wiki_pages_spec.rb",
|
95
|
+
"spec/extensions/models/wiki_page_spec.rb",
|
95
96
|
"spec/config_spec.rb",
|
96
97
|
"spec/paginators/will_paginate_spec.rb",
|
97
98
|
"spec/paginators/none_spec.rb",
|
data/lib/irwi/config.rb
CHANGED
@@ -6,7 +6,10 @@ class Irwi::Config
|
|
6
6
|
|
7
7
|
attr_accessor_with_default :page_class_name, 'WikiPage'
|
8
8
|
attr_accessor_with_default :page_version_class_name, 'WikiPageVersion'
|
9
|
-
attr_accessor_with_default :page_attachment_class_name
|
9
|
+
attr_accessor_with_default :page_attachment_class_name do
|
10
|
+
# Can be for example 'WikiPageAttachment'
|
11
|
+
nil
|
12
|
+
end
|
10
13
|
|
11
14
|
attr_accessor_with_default :page_version_foreign_key, 'page_id'
|
12
15
|
|
@@ -42,7 +45,7 @@ class Irwi::Config
|
|
42
45
|
def page_attachment_class
|
43
46
|
page_attachment_class_name.constantize
|
44
47
|
end
|
45
|
-
|
48
|
+
|
46
49
|
def user_class
|
47
50
|
user_class_name.constantize
|
48
51
|
end
|
@@ -60,4 +63,4 @@ class Irwi::Config
|
|
60
63
|
system_pages[ action.to_s ] = path.to_s
|
61
64
|
end
|
62
65
|
|
63
|
-
end
|
66
|
+
end
|
@@ -76,7 +76,7 @@ module Irwi::Extensions::Controllers::WikiPages
|
|
76
76
|
@page.updator = @current_user # Assing user, which updated page
|
77
77
|
@page.creator = @current_user if @page.new_record? # Assign it's creator if it's new page
|
78
78
|
|
79
|
-
if @page.save
|
79
|
+
if !params[:preview] && (params[:cancel] || @page.save)
|
80
80
|
redirect_to url_for( :action => :show, :path => @page.path.split('/') ) # redirect to new page's path (if it changed)
|
81
81
|
else
|
82
82
|
render_template 'edit'
|
@@ -156,4 +156,4 @@ module Irwi::Extensions::Controllers::WikiPages
|
|
156
156
|
base.helper_method :show_allowed?, :edit_allowed?, :history_allowed?, :destroy_allowed? # Access control methods are avaliable in views
|
157
157
|
end
|
158
158
|
|
159
|
-
end
|
159
|
+
end
|
@@ -40,7 +40,10 @@ module Irwi::Extensions::Models::WikiPage
|
|
40
40
|
base.belongs_to :updator, :class_name => Irwi.config.user_class_name
|
41
41
|
|
42
42
|
base.has_many :versions, :class_name => Irwi.config.page_version_class_name, :foreign_key => Irwi.config.page_version_foreign_key, :order => 'id DESC'
|
43
|
-
|
43
|
+
|
44
|
+
if Irwi::config.page_attachment_class_name
|
45
|
+
base.has_many :attachments, :class_name => Irwi.config.page_attachment_class_name, :foreign_key => Irwi.config.page_version_foreign_key
|
46
|
+
end
|
44
47
|
|
45
48
|
base.after_save :create_new_version
|
46
49
|
end
|
@@ -49,8 +49,14 @@ module Irwi::Helpers::WikiPagesHelper
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def wiki_linkify( str )
|
52
|
-
str.gsub /\[\[
|
53
|
-
|
52
|
+
str.gsub /\[\[
|
53
|
+
(?:([^\[\]\|]+)\|)?
|
54
|
+
([^\[\]]+)
|
55
|
+
\]\]
|
56
|
+
(\w+)?/xu do |m|
|
57
|
+
text = "#$2#$3"
|
58
|
+
link = $1 || $2
|
59
|
+
"<a href=\"#{wiki_link link}\">#{text}</a>"
|
54
60
|
end
|
55
61
|
end
|
56
62
|
|
@@ -108,5 +114,24 @@ module Irwi::Helpers::WikiPagesHelper
|
|
108
114
|
|
109
115
|
render :partial => "#{template_dir '_wiki_page_history'}/wiki_page_history", :locals => { :page => page, :versions => versions, :with_form => (versions.size > 1) }
|
110
116
|
end
|
117
|
+
|
118
|
+
def wiki_page_attachments(page)
|
119
|
+
return unless Irwi::config.page_attachment_class_name
|
120
|
+
|
121
|
+
page.attachments.each do |attachment|
|
122
|
+
concat image_tag(attachment.wiki_page_attachment.url(:thumb))
|
123
|
+
concat "Attachment_#{attachment.id}"
|
124
|
+
concat link_to(wt('Remove'), wiki_remove_page_attachment_path(attachment.id), :method => :delete)
|
125
|
+
end
|
126
|
+
|
127
|
+
form_for(:wiki_page_attachment,
|
128
|
+
Irwi.config.page_attachment_class.new,
|
129
|
+
:url => wiki_add_page_attachment_path(@page),
|
130
|
+
:html => { :multipart => true }) do |form|
|
131
|
+
concat form.file_field :wiki_page_attachment
|
132
|
+
concat form.hidden_field :page_id, :value => @page.id
|
133
|
+
concat form.submit 'Add Attachment'
|
134
|
+
end
|
135
|
+
end
|
111
136
|
|
112
137
|
end
|
data/rails/init.rb
CHANGED
@@ -29,6 +29,16 @@ ActionController::Base.instance_eval do
|
|
29
29
|
#
|
30
30
|
def acts_as_wiki_pages_controller( config = {} )
|
31
31
|
include Irwi::Extensions::Controllers::WikiPages
|
32
|
+
include Irwi::Extensions::Controllers::WikiPageAttachments if Irwi::config.page_attachment_class_name
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
Module.class_eval do
|
38
|
+
|
39
|
+
def acts_as_wiki_pages_helper( config = {} )
|
40
|
+
include Irwi::Helpers::WikiPagesHelper
|
41
|
+
include Irwi::Helpers::WikiPageAttachmentsHelper if Irwi::config.page_attachment_class_name
|
32
42
|
end
|
33
43
|
|
34
44
|
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require "spec/spec_helper"
|
2
|
+
|
3
|
+
require "active_record"
|
4
|
+
|
5
|
+
describe Irwi::Extensions::Models::WikiPage do
|
6
|
+
|
7
|
+
class AbstractPage < ActiveRecord::Base
|
8
|
+
|
9
|
+
|
10
|
+
def self.columns
|
11
|
+
c = ActiveRecord::ConnectionAdapters::Column
|
12
|
+
|
13
|
+
[
|
14
|
+
c.new("title", nil, "string", false),
|
15
|
+
c.new("path", nil, "string", false),
|
16
|
+
c.new("content", nil, "text", false)
|
17
|
+
]
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
it { should_not be_nil }
|
23
|
+
|
24
|
+
before :all do
|
25
|
+
Irwi::config.page_attachment_class_name = nil
|
26
|
+
|
27
|
+
@cls = Class.new AbstractPage do
|
28
|
+
include Irwi::Extensions::Models::WikiPage
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context "class" do
|
33
|
+
|
34
|
+
it { @cls.should respond_to(:find) }
|
35
|
+
it { @cls.should respond_to(:find_by_path_or_new) }
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
context "instance" do
|
40
|
+
|
41
|
+
before :each do
|
42
|
+
@obj = @cls.new
|
43
|
+
end
|
44
|
+
|
45
|
+
it { @obj.should respond_to(:save) }
|
46
|
+
it { @obj.should respond_to(:destroy) }
|
47
|
+
|
48
|
+
it { @obj.should respond_to(:comment) }
|
49
|
+
it { @obj.should respond_to(:previous_version_number) }
|
50
|
+
|
51
|
+
it { @obj.should respond_to(:versions) }
|
52
|
+
|
53
|
+
it { @obj.should_not respond_to(:attachments) }
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
context "with attachments" do
|
58
|
+
|
59
|
+
before :all do
|
60
|
+
Irwi::config.page_attachment_class_name = 'WikiPageAttachment'
|
61
|
+
|
62
|
+
@cls = Class.new AbstractPage do
|
63
|
+
include Irwi::Extensions::Models::WikiPage
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
context "instance" do
|
68
|
+
|
69
|
+
before :each do
|
70
|
+
@obj = @cls.new
|
71
|
+
end
|
72
|
+
|
73
|
+
it { @obj.should respond_to(:attachments) }
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
@@ -7,6 +7,7 @@ describe Irwi::Helpers::WikiPageAttachmentsHelper do
|
|
7
7
|
context "included in class" do
|
8
8
|
|
9
9
|
before(:each) do
|
10
|
+
Irwi.config.page_attachment_class_name = 'WikiPageAttachment'
|
10
11
|
@m = Object.new
|
11
12
|
@m.send :extend, Irwi::Helpers::WikiPagesHelper
|
12
13
|
end
|
@@ -14,10 +15,6 @@ describe Irwi::Helpers::WikiPageAttachmentsHelper do
|
|
14
15
|
describe :wiki_show_attachment do
|
15
16
|
before do
|
16
17
|
class WikiPageAttachment; end
|
17
|
-
module ActiveRecord
|
18
|
-
class RecordNotFound < StandardError
|
19
|
-
end
|
20
|
-
end
|
21
18
|
end
|
22
19
|
|
23
20
|
it 'replaces Attachment_1_thumb with its corresponding image tag' do
|
@@ -110,10 +110,11 @@ describe Irwi::Helpers::WikiPagesHelper do
|
|
110
110
|
end
|
111
111
|
|
112
112
|
specify "should linkify string" do
|
113
|
-
|
114
|
-
@m.should_receive(:wiki_link).with('Some other page').and_return('url')
|
113
|
+
@m.should_receive(:wiki_link).exactly(3).times.with('Some other page').and_return('url')
|
115
114
|
|
116
115
|
@m.wiki_linkify( '[[Some other page]] - link' ).should == '<a href="url">Some other page</a> - link'
|
116
|
+
@m.wiki_linkify( '[[Some other page|Go other page]] - link' ).should == '<a href="url">Go other page</a> - link'
|
117
|
+
@m.wiki_linkify( '[[Some other page]]s are there' ).should == '<a href="url">Some other pages</a> are there'
|
117
118
|
end
|
118
119
|
|
119
120
|
specify "should generate link for non-existent page" do
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 2
|
8
|
-
-
|
9
|
-
version: 0.2.
|
8
|
+
- 3
|
9
|
+
version: 0.2.3
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Alexey Noskov
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-06-
|
18
|
+
date: 2010-06-24 00:00:00 +04:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -79,10 +79,9 @@ files:
|
|
79
79
|
- generators/irwi_wiki/templates/migrate/create_wiki_pages.rb
|
80
80
|
- generators/irwi_wiki/templates/models/wiki_page.rb
|
81
81
|
- generators/irwi_wiki/templates/models/wiki_page_version.rb
|
82
|
-
- generators/
|
83
|
-
- generators/
|
84
|
-
- generators/
|
85
|
-
- generators/irwi_wiki_updates/templates/models/wiki_page_attachment.rb
|
82
|
+
- generators/irwi_wiki_attachments/irwi_wiki_attachments_generator.rb
|
83
|
+
- generators/irwi_wiki_attachments/templates/migrate/create_wiki_page_attachments.rb
|
84
|
+
- generators/irwi_wiki_attachments/templates/models/wiki_page_attachment.rb
|
86
85
|
- generators/irwi_wiki_views/irwi_wiki_views_generator.rb
|
87
86
|
- irwi.gemspec
|
88
87
|
- lib/irwi.rb
|
@@ -108,6 +107,7 @@ files:
|
|
108
107
|
- spec/comparators/diff_lcs_spec.rb
|
109
108
|
- spec/config_spec.rb
|
110
109
|
- spec/extensions/controllers/wiki_pages_spec.rb
|
110
|
+
- spec/extensions/models/wiki_page_spec.rb
|
111
111
|
- spec/formatters/red_cloth_spec.rb
|
112
112
|
- spec/helpers/wiki_page_attachments_helper_spec.rb
|
113
113
|
- spec/helpers/wiki_pages_helper_spec.rb
|
@@ -155,6 +155,7 @@ test_files:
|
|
155
155
|
- spec/spec_helper.rb
|
156
156
|
- spec/comparators/diff_lcs_spec.rb
|
157
157
|
- spec/extensions/controllers/wiki_pages_spec.rb
|
158
|
+
- spec/extensions/models/wiki_page_spec.rb
|
158
159
|
- spec/config_spec.rb
|
159
160
|
- spec/paginators/will_paginate_spec.rb
|
160
161
|
- spec/paginators/none_spec.rb
|
File without changes
|