irwi 0.4.2 → 0.5.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.
- checksums.yaml +7 -0
- data/README.rdoc +15 -20
- data/app/views/base_wiki_pages/_wiki_page_actions.html.erb +1 -0
- data/app/views/base_wiki_pages/_wiki_page_history.html.erb +1 -1
- data/app/views/base_wiki_pages/all.html.erb +2 -2
- data/app/views/base_wiki_pages/compare.html.erb +2 -0
- data/app/views/base_wiki_pages/edit.html.erb +4 -3
- data/app/views/base_wiki_pages/history.html.erb +2 -0
- data/lib/generators/irwi_wiki/irwi_wiki_generator.rb +6 -3
- data/lib/generators/irwi_wiki_attachments/irwi_wiki_attachments_generator.rb +6 -2
- data/lib/irwi.rb +4 -0
- data/lib/irwi/extensions/controllers/wiki_page_attachments.rb +7 -3
- data/lib/irwi/extensions/controllers/wiki_pages.rb +97 -99
- data/lib/irwi/extensions/models/wiki_page.rb +22 -30
- data/lib/irwi/extensions/models/wiki_page_attachment.rb +3 -2
- data/lib/irwi/extensions/models/wiki_page_version.rb +16 -27
- data/lib/irwi/formatters/red_carpet.rb +12 -0
- data/lib/irwi/formatters/wiki_cloth.rb +11 -0
- data/lib/irwi/helpers/wiki_pages_helper.rb +6 -6
- data/lib/irwi/paginators/none.rb +1 -3
- data/lib/irwi/support/route_mapper.rb +1 -1
- data/lib/irwi/support/template_finder.rb +0 -2
- data/lib/irwi/version.rb +2 -2
- metadata +158 -174
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 22090f82507fef1269d7f8ad01a63c5764feb374
|
4
|
+
data.tar.gz: c1b7c604fe635ad3d3f62e3a4cf69d9ec87276a1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5928f78b1c8135f0fdf529cb000ef518896f6751927b7caf14367ffdf5111beb6b40f45b4920f25fa3531c12b4a039c8b0a70ee8a110a3674464eff9151d3a6d
|
7
|
+
data.tar.gz: b14e6ac0a0c9352400921a35f841384819a937391dda472188c181594a047db1db17a605d92e1a807e8a6aa54c1b3926729f53aac1fba11041a9b80547391614
|
data/README.rdoc
CHANGED
@@ -1,31 +1,22 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
Irwi is a Ruby on Rails 3 plugin which adds wiki functionality to your application.
|
4
|
-
|
5
|
-
== Installation
|
6
|
-
|
7
|
-
Setup gemcutter as gem source:
|
8
|
-
|
9
|
-
sudo gem install gemcutter
|
10
|
-
gem tumble
|
1
|
+
*WARNING: It's unstable branch for migration to Rails 4*
|
11
2
|
|
12
|
-
|
3
|
+
= Irwi
|
13
4
|
|
14
|
-
|
5
|
+
Irwi is a Ruby on Rails 4 plugin which adds wiki functionality to your application.
|
15
6
|
|
16
|
-
|
7
|
+
== Status
|
17
8
|
|
18
|
-
|
9
|
+
{<img src="https://secure.travis-ci.org/alno/irwi.png?branch=master" alt="Build Status" />}[http://travis-ci.org/alno/irwi]
|
19
10
|
|
20
|
-
|
11
|
+
== Installation
|
21
12
|
|
22
|
-
|
13
|
+
Add to your Gemfile:
|
23
14
|
|
24
|
-
|
15
|
+
gem 'irwi', :git => 'git://github.com/alno/irwi.git'
|
25
16
|
|
26
|
-
|
17
|
+
Then in your application directory call:
|
27
18
|
|
28
|
-
|
19
|
+
rails g irwi_wiki
|
29
20
|
|
30
21
|
It will generate:
|
31
22
|
* WikiPageController to serve wiki pages
|
@@ -34,7 +25,7 @@ It will generate:
|
|
34
25
|
|
35
26
|
Also it will add to your <tt>routes.rb</tt> something like:
|
36
27
|
|
37
|
-
|
28
|
+
wiki_root '/wiki'
|
38
29
|
|
39
30
|
== Wiki syntax (links to other pages)
|
40
31
|
|
@@ -57,6 +48,10 @@ Following helpers are defined by default and you may replace them with you own:
|
|
57
48
|
|
58
49
|
Configuration options are acessed via <tt>Irwi.config</tt> object. Currently supported options:
|
59
50
|
* <tt>user_class_name</tt> - Name of user model class. By default - 'User'
|
51
|
+
|
52
|
+
Define a method named 'current_user' method on WikiPagesController that returns the object for the current user
|
53
|
+
|
54
|
+
|
60
55
|
* <tt>formatter</tt> - Formatter instance, which process wiki content before output. It should have method <tt>format</tt>, which gets a string and returns it formatted. By default instance of <tt>Irwi::Formatters::RedCloth</tt> is used (requires RedCloth gem). Other built-in formatter is <tt>Irwi::Formatters::BlueCloth</tt> (requires BlueCloth gem). Option accepts formatter instance, not class, so correct usage is:
|
61
56
|
|
62
57
|
Irwi.config.formatter = Irwi::Formatters::BlueCloth.new
|
@@ -1,4 +1,5 @@
|
|
1
1
|
<ul class="wiki_page_actions">
|
2
|
+
<%= content_tag('li', link_to( wt( 'List pages' ), wiki_all_path)) %>
|
2
3
|
<%= content_tag('li', link_to( wt( 'History' ), wiki_page_history_path(@page) )) if history_allowed? %>
|
3
4
|
<%= content_tag('li', link_to( wt( 'Edit' ), wiki_page_edit_path(@page) )) if edit_allowed? %>
|
4
5
|
<%= content_tag('li', link_to( wt( 'Destroy' ), wiki_page_path(@page), :method => :delete, :confirm => wt( "Destroyed page can't be restored. Are you sure?" ) )) if destroy_allowed? %>
|
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
<h1><%=wt '%{page_title} - Comparing versions %{old_version} and %{new_version}', :page_title => h( @page.title ), :old_version => @old_version.number, :new_version => @new_version.number %></h1>
|
4
4
|
|
5
|
+
<%= link_to "Back to history", history_wiki_page_path(@page.path) %><br />
|
6
|
+
|
5
7
|
<%=wt 'Changes list:' %>
|
6
8
|
|
7
9
|
<%= wiki_paginate @versions do%>
|
@@ -11,8 +11,9 @@
|
|
11
11
|
<%= wiki_page_form do |f| %>
|
12
12
|
<%= f.hidden_field :previous_version_number, :value => f.object.last_version_number %>
|
13
13
|
<%= hidden_field_tag :path, @page.path %>
|
14
|
-
|
14
|
+
|
15
15
|
<p><%=wt 'Title:' %><br /><%= f.text_field :title %></p>
|
16
|
+
|
16
17
|
<%# If our 'content' contains newlines, Erubis will indent them (to make the
|
17
18
|
produced HTML look nicer). However those indenting spaces *will* appear
|
18
19
|
in the textarea in the user's browser and will get POSTed by the browser
|
@@ -21,9 +22,9 @@
|
|
21
22
|
with UTF8 linefeeds (same way HAML solves this problem), which are
|
22
23
|
ignored by Erubis and should be correctly displayed as linebreaks by
|
23
24
|
modern browsers. %>
|
24
|
-
<p><%=wt
|
25
|
+
<p><%=wt "Content: #{link_to('(Textile Markup', 'http://redcloth.org/hobix.com/textile/', target: '_blank')}".html_safe %> allowed)<br /><%= f.text_area(:content) %> </p>
|
26
|
+
<%#<p><%#=wt 'Content:' %><br /><%#= f.text_area(:content, :value => f.object.content.gsub("\n", '
').gsub("\r",'')).html_safe %#></p>%>
|
25
27
|
<p><%=wt 'Comment on this change (optional):' %><br /><%= f.text_field :comment %></p>
|
26
|
-
|
27
28
|
<input type="submit" name="save" value="<%=wt 'Save page' %>" class="submit" />
|
28
29
|
<input type="submit" name="preview" value="<%=wt 'Preview' %>" class="submit" />
|
29
30
|
<input type="submit" name="cancel" value="<%=wt 'Cancel' %>" class="submit" />
|
@@ -1,9 +1,8 @@
|
|
1
|
-
require 'rails/generators/active_record
|
1
|
+
require 'rails/generators/active_record'
|
2
2
|
|
3
3
|
class IrwiWikiGenerator < Rails::Generators::Base
|
4
4
|
|
5
5
|
include Rails::Generators::Migration
|
6
|
-
extend ActiveRecord::Generators::Migration
|
7
6
|
|
8
7
|
source_root File.expand_path("../templates", __FILE__)
|
9
8
|
|
@@ -20,10 +19,14 @@ class IrwiWikiGenerator < Rails::Generators::Base
|
|
20
19
|
copy_file 'models/wiki_page_version.rb', 'app/models/wiki_page_version.rb'
|
21
20
|
|
22
21
|
# Migrations
|
23
|
-
migration_template 'migrate/create_wiki_pages.rb', 'db/migrate/create_wiki_pages'
|
22
|
+
migration_template 'migrate/create_wiki_pages.rb', 'db/migrate/create_wiki_pages.rb'
|
24
23
|
|
25
24
|
# Routes
|
26
25
|
route "wiki_root '/wiki'"
|
27
26
|
end
|
28
27
|
|
28
|
+
def self.next_migration_number dirname
|
29
|
+
ActiveRecord::Generators::Base.next_migration_number dirname
|
30
|
+
end
|
31
|
+
|
29
32
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'rails/generators/active_record
|
1
|
+
require 'rails/generators/active_record'
|
2
2
|
|
3
3
|
class IrwiWikiAttachmentsGenerator < Rails::Generators::Base
|
4
4
|
|
@@ -10,7 +10,7 @@ class IrwiWikiAttachmentsGenerator < Rails::Generators::Base
|
|
10
10
|
def generate_attachments
|
11
11
|
%w[create_wiki_page_attachments].each do |mig|
|
12
12
|
unless Dir.entries(File.join(Rails.root,'db','migrate')).grep(/#{mig}/).present?
|
13
|
-
migration_template "migrate/#{mig}.rb", "db/migrate/#{mig}"
|
13
|
+
migration_template "migrate/#{mig}.rb", "db/migrate/#{mig}.rb"
|
14
14
|
sleep(1) # To avoid migration file version collision.
|
15
15
|
end
|
16
16
|
end
|
@@ -19,4 +19,8 @@ class IrwiWikiAttachmentsGenerator < Rails::Generators::Base
|
|
19
19
|
copy_file 'models/wiki_page_attachment.rb', 'app/models/wiki_page_attachment.rb'
|
20
20
|
end
|
21
21
|
|
22
|
+
def self.next_migration_number dirname
|
23
|
+
ActiveRecord::Generators::Base.next_migration_number dirname
|
24
|
+
end
|
25
|
+
|
22
26
|
end
|
data/lib/irwi.rb
CHANGED
@@ -7,6 +7,8 @@ module Irwi
|
|
7
7
|
autoload :BlueCloth, 'irwi/formatters/blue_cloth'
|
8
8
|
autoload :RedCloth, 'irwi/formatters/red_cloth'
|
9
9
|
autoload :SimpleHtml, 'irwi/formatters/simple_html'
|
10
|
+
autoload :WikiCloth, 'irwi/formatters/wiki_cloth'
|
11
|
+
autoload :RedCarpet, 'irwi/formatters/red_carpet'
|
10
12
|
end
|
11
13
|
|
12
14
|
module Comparators
|
@@ -23,6 +25,8 @@ module Irwi
|
|
23
25
|
module Paginators
|
24
26
|
autoload :None, 'irwi/paginators/none'
|
25
27
|
autoload :WillPaginate, 'irwi/paginators/will_paginate'
|
28
|
+
# TODO Implement Kaminari paginator
|
29
|
+
# TODO Autodetect paginator
|
26
30
|
end
|
27
31
|
|
28
32
|
module Support
|
@@ -1,8 +1,8 @@
|
|
1
1
|
module Irwi::Extensions::Controllers::WikiPageAttachments
|
2
2
|
|
3
3
|
def add_attachment
|
4
|
-
attachment = page_attachment_class.new(
|
5
|
-
attachment.save
|
4
|
+
attachment = page_attachment_class.new(permitted_page_attachment_params)
|
5
|
+
attachment.save!
|
6
6
|
redirect_to url_for(:path => attachment.page.path, :action => :edit)
|
7
7
|
end
|
8
8
|
|
@@ -12,10 +12,14 @@ module Irwi::Extensions::Controllers::WikiPageAttachments
|
|
12
12
|
redirect_to url_for(:path => attachment.page.path, :action => :edit)
|
13
13
|
end
|
14
14
|
|
15
|
-
|
15
|
+
private
|
16
16
|
|
17
17
|
def page_attachment_class
|
18
18
|
Irwi.config.page_attachment_class
|
19
19
|
end
|
20
20
|
|
21
|
+
def permitted_page_attachment_params
|
22
|
+
params.require(:wiki_page_attachment).permit(:page_id, :wiki_page_attachment)
|
23
|
+
end
|
24
|
+
|
21
25
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
module Irwi::Extensions::Controllers::WikiPages
|
2
|
+
extend ActiveSupport::Concern
|
2
3
|
|
3
4
|
module ClassMethods
|
4
5
|
|
@@ -12,148 +13,145 @@ module Irwi::Extensions::Controllers::WikiPages
|
|
12
13
|
|
13
14
|
end
|
14
15
|
|
15
|
-
|
16
|
+
include Irwi::Extensions::Controllers::WikiPageAttachments
|
17
|
+
include Irwi::Support::TemplateFinder
|
16
18
|
|
17
|
-
|
18
|
-
|
19
|
+
def show
|
20
|
+
return not_allowed unless show_allowed?
|
19
21
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
render_template( @page.new_record? ? 'no' : 'show' )
|
24
|
-
end
|
22
|
+
render_template( @page.new_record? ? 'no' : 'show' )
|
23
|
+
end
|
25
24
|
|
26
|
-
|
27
|
-
|
25
|
+
def history
|
26
|
+
return not_allowed unless history_allowed?
|
28
27
|
|
29
|
-
|
28
|
+
@versions = Irwi.config.paginator.paginate( @page.versions, :page => params[:page] ) # Paginating them
|
30
29
|
|
31
|
-
|
32
|
-
|
30
|
+
render_template( @page.new_record? ? 'no' : 'history' )
|
31
|
+
end
|
33
32
|
|
34
|
-
|
35
|
-
|
33
|
+
def compare
|
34
|
+
return not_allowed unless history_allowed?
|
36
35
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
36
|
+
if @page.new_record?
|
37
|
+
render_template 'no'
|
38
|
+
else
|
39
|
+
new_num = params[:new].to_i || @page.last_version_number # Last version number
|
40
|
+
old_num = params[:old].to_i || 1 # First version number
|
42
41
|
|
43
|
-
|
42
|
+
old_num, new_num = new_num, old_num if new_num < old_num # Swapping them if last < first
|
44
43
|
|
45
|
-
|
44
|
+
versions = @page.versions.between( old_num, new_num ) # Loading all versions between first and last
|
46
45
|
|
47
|
-
|
46
|
+
@versions = Irwi.config.paginator.paginate( versions, :page => params[:page] ) # Paginating them
|
48
47
|
|
49
|
-
|
50
|
-
|
48
|
+
@new_version = @versions.first.number == new_num ? @versions.first : versions.first # Loading next version
|
49
|
+
@old_version = @versions.last.number == old_num ? @versions.last : versions.last # Loading previous version
|
51
50
|
|
52
|
-
|
53
|
-
end
|
51
|
+
render_template 'compare'
|
54
52
|
end
|
53
|
+
end
|
55
54
|
|
56
|
-
|
57
|
-
|
55
|
+
def new
|
56
|
+
return not_allowed unless show_allowed? && edit_allowed?
|
58
57
|
|
59
|
-
|
60
|
-
|
58
|
+
render_template 'new'
|
59
|
+
end
|
61
60
|
|
62
|
-
|
63
|
-
|
61
|
+
def edit
|
62
|
+
return not_allowed unless show_allowed? && edit_allowed?
|
64
63
|
|
65
|
-
|
66
|
-
|
64
|
+
render_template 'edit'
|
65
|
+
end
|
67
66
|
|
68
|
-
|
69
|
-
|
67
|
+
def update
|
68
|
+
return not_allowed unless params[:page] && (@page.new_record? || edit_allowed?) # Check for rights (but not for new record, for it we will use second check only)
|
70
69
|
|
71
|
-
|
72
|
-
@page.comment = params[:page][:comment]
|
70
|
+
@page.attributes = permitted_page_params
|
73
71
|
|
74
|
-
|
72
|
+
return not_allowed unless edit_allowed? # Double check: used beacause action may become invalid after attributes update
|
75
73
|
|
76
|
-
|
77
|
-
|
74
|
+
@page.updator = @current_user # Assing user, which updated page
|
75
|
+
@page.creator = @current_user if @page.new_record? # Assign it's creator if it's new page
|
78
76
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
end
|
77
|
+
if !params[:preview] && (params[:cancel] || @page.save)
|
78
|
+
redirect_to url_for( :action => :show, :path => @page.path.split('/') ) # redirect to new page's path (if it changed)
|
79
|
+
else
|
80
|
+
render_template 'edit'
|
84
81
|
end
|
82
|
+
end
|
85
83
|
|
86
|
-
|
87
|
-
|
84
|
+
def destroy
|
85
|
+
return not_allowed unless destroy_allowed?
|
88
86
|
|
89
|
-
|
87
|
+
@page.destroy
|
90
88
|
|
91
|
-
|
92
|
-
|
89
|
+
redirect_to url_for( :action => :show )
|
90
|
+
end
|
93
91
|
|
94
|
-
|
95
|
-
|
92
|
+
def all
|
93
|
+
@pages = Irwi.config.paginator.paginate( page_class, :page => params[:page] ) # Loading and paginating all pages
|
96
94
|
|
97
|
-
|
98
|
-
|
95
|
+
render_template 'all'
|
96
|
+
end
|
99
97
|
|
100
|
-
|
98
|
+
private
|
101
99
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
end
|
100
|
+
def permitted_page_params
|
101
|
+
params.require(:page).permit(:title, :content, :comment)
|
102
|
+
end
|
106
103
|
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
104
|
+
# Retrieves wiki_page_class for this controller
|
105
|
+
def page_class
|
106
|
+
self.class.page_class
|
107
|
+
end
|
111
108
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
109
|
+
# Renders user-specified or default template
|
110
|
+
def render_template( template )
|
111
|
+
render "#{template_dir template}/#{template}", :status => (case template when 'no' then 404 when 'not_allowed' then 403 else 200 end)
|
112
|
+
end
|
116
113
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
114
|
+
# Initialize @current_user instance variable
|
115
|
+
def setup_current_user
|
116
|
+
@current_user = respond_to?( :current_user, true ) ? current_user : nil # Find user by current_user method or return nil
|
117
|
+
end
|
121
118
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
119
|
+
# Initialize @page instance variable
|
120
|
+
def setup_page
|
121
|
+
@page = page_class.find_by_path_or_new( params[:path] || '' ) # Find existing page by path or create new
|
122
|
+
end
|
126
123
|
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
124
|
+
# Method, which called when user tries to visit
|
125
|
+
def not_allowed
|
126
|
+
render_template 'not_allowed'
|
127
|
+
end
|
131
128
|
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
129
|
+
# Check is it allowed for current user to see current page. Designed to be redefined by application programmer
|
130
|
+
def show_allowed?
|
131
|
+
true
|
132
|
+
end
|
136
133
|
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
134
|
+
# Check is it allowed for current user see current page history. Designed to be redefined by application programmer
|
135
|
+
def history_allowed?
|
136
|
+
show_allowed?
|
137
|
+
end
|
141
138
|
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
139
|
+
# Check is it allowed for current user edit current page. Designed to be redefined by application programmer
|
140
|
+
def edit_allowed?
|
141
|
+
show_allowed?
|
142
|
+
end
|
146
143
|
|
144
|
+
# Check is it allowed for current user destroy current page. Designed to be redefined by application programmer
|
145
|
+
def destroy_allowed?
|
146
|
+
edit_allowed?
|
147
147
|
end
|
148
148
|
|
149
|
-
|
150
|
-
|
151
|
-
base.send :include, Irwi::Extensions::Controllers::WikiPages::InstanceMethods
|
149
|
+
included do
|
150
|
+
before_action :setup_current_user # Setup @current_user instance variable before each action
|
152
151
|
|
153
|
-
base.before_filter :setup_current_user # Setup @current_user instance variable before each action
|
154
152
|
# Setup @page instance variable before each action
|
155
|
-
|
156
|
-
|
153
|
+
before_action :setup_page, :only => [ :show, :history, :compare, :new, :edit, :update, :destroy, :add_attachment ]
|
154
|
+
helper_method :show_allowed?, :edit_allowed?, :history_allowed?, :destroy_allowed? # Access control methods are avaliable in views
|
157
155
|
end
|
158
156
|
|
159
157
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
module Irwi::Extensions::Models::WikiPage
|
2
|
+
extend ActiveSupport::Concern
|
2
3
|
|
3
4
|
module ClassMethods
|
4
5
|
|
@@ -8,47 +9,38 @@ module Irwi::Extensions::Models::WikiPage
|
|
8
9
|
|
9
10
|
end
|
10
11
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
last ? last.number : 0
|
17
|
-
end
|
12
|
+
# Retrieve number of last version
|
13
|
+
def last_version_number
|
14
|
+
last = versions.first
|
15
|
+
last ? last.number : 0
|
16
|
+
end
|
18
17
|
|
19
|
-
|
18
|
+
protected
|
20
19
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
v = versions.build
|
25
|
-
v.attributes = attributes.slice( *v.attribute_names )
|
26
|
-
v.comment = comment
|
27
|
-
v.number = n + 1
|
28
|
-
v.save!
|
29
|
-
end
|
20
|
+
def create_new_version
|
21
|
+
n = last_version_number
|
30
22
|
|
23
|
+
v = versions.build
|
24
|
+
v.attributes = attributes.slice( *(v.attribute_names - ['id']) )
|
25
|
+
v.comment = comment
|
26
|
+
v.number = n + 1
|
27
|
+
v.save!
|
31
28
|
end
|
32
29
|
|
33
|
-
|
34
|
-
|
35
|
-
base.send :include, Irwi::Extensions::Models::WikiPage::InstanceMethods
|
36
|
-
|
37
|
-
base.attr_protected :id
|
38
|
-
|
39
|
-
base.send :attr_accessor, :comment, :previous_version_number
|
30
|
+
included do
|
31
|
+
attr_accessor :comment, :previous_version_number
|
40
32
|
|
41
|
-
|
42
|
-
|
33
|
+
belongs_to :creator, class_name: Irwi.config.user_class_name
|
34
|
+
belongs_to :updator, class_name: Irwi.config.user_class_name
|
43
35
|
|
44
|
-
|
36
|
+
has_many :versions, ->{ order('id DESC') }, class_name: Irwi.config.page_version_class_name, foreign_key: Irwi.config.page_version_foreign_key
|
45
37
|
|
46
38
|
if Irwi::config.page_attachment_class_name
|
47
|
-
|
39
|
+
has_many :attachments, class_name: Irwi.config.page_attachment_class_name, foreign_key: Irwi.config.page_version_foreign_key
|
48
40
|
end
|
49
41
|
|
50
|
-
|
51
|
-
|
42
|
+
before_save { |record| record.content = '' if record.content.nil? }
|
43
|
+
after_save :create_new_version
|
52
44
|
end
|
53
45
|
|
54
46
|
end
|
@@ -1,9 +1,10 @@
|
|
1
1
|
module Irwi::Extensions::Models::WikiPageAttachment
|
2
|
+
extend ActiveSupport::Concern
|
2
3
|
|
3
4
|
DEFAULT_PAPERCLIP_OPTIONS = {:styles => { :medium => "300x300>", :thumb => "100x100>" }}
|
4
5
|
|
5
|
-
|
6
|
-
|
6
|
+
included do
|
7
|
+
belongs_to :page, class_name: Irwi.config.page_class_name
|
7
8
|
end
|
8
9
|
|
9
10
|
end
|
@@ -1,43 +1,32 @@
|
|
1
1
|
module Irwi::Extensions::Models::WikiPageVersion
|
2
|
+
extend ActiveSupport::Concern
|
2
3
|
|
3
|
-
|
4
|
-
|
4
|
+
def next
|
5
|
+
self.class.first :conditions => ["id > ? AND page_id = ?", id, page_id], :order => 'id ASC'
|
5
6
|
end
|
6
7
|
|
7
|
-
|
8
|
-
|
9
|
-
def next
|
10
|
-
self.class.first :conditions => ["id > ? AND page_id = ?", id, page_id], :order => 'id ASC'
|
11
|
-
end
|
12
|
-
|
13
|
-
def previous
|
14
|
-
self.class.first :conditions => ["id < ? AND page_id = ?", id, page_id], :order => 'id DESC'
|
15
|
-
end
|
16
|
-
|
17
|
-
protected
|
18
|
-
|
19
|
-
def raise_on_update
|
20
|
-
raise ActiveRecordError.new "Can't modify existing version"
|
21
|
-
end
|
22
|
-
|
8
|
+
def previous
|
9
|
+
self.class.first :conditions => ["id < ? AND page_id = ?", id, page_id], :order => 'id DESC'
|
23
10
|
end
|
24
11
|
|
25
|
-
|
26
|
-
base.send :extend, Irwi::Extensions::Models::WikiPageVersion::ClassMethods
|
27
|
-
base.send :include, Irwi::Extensions::Models::WikiPageVersion::InstanceMethods
|
12
|
+
private
|
28
13
|
|
29
|
-
|
14
|
+
def raise_on_update
|
15
|
+
raise ActiveRecordError.new "Can't modify existing version"
|
16
|
+
end
|
30
17
|
|
31
|
-
|
32
|
-
|
18
|
+
included do
|
19
|
+
belongs_to :page, class_name: Irwi.config.page_class_name
|
20
|
+
belongs_to :updator, class_name: Irwi.config.user_class_name
|
33
21
|
|
34
|
-
|
22
|
+
before_update :raise_on_update
|
35
23
|
|
36
|
-
|
24
|
+
scope :between, lambda { |first, last|
|
37
25
|
first = first.to_i
|
38
26
|
last = last.to_i
|
39
27
|
first, last = last, first if last < first # Reordering if neeeded
|
40
|
-
|
28
|
+
|
29
|
+
where('number >= ? AND number <= ?', first, last)
|
41
30
|
}
|
42
31
|
end
|
43
32
|
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class Irwi::Formatters::RedCarpet
|
2
|
+
|
3
|
+
def initialize
|
4
|
+
require 'redcarpet'
|
5
|
+
end
|
6
|
+
|
7
|
+
def format( text )
|
8
|
+
markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML, :autolink => true, :space_after_headers => true, :tables => true)
|
9
|
+
markdown.render(text)
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
@@ -39,7 +39,7 @@ module Irwi::Helpers::WikiPagesHelper
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def wiki_content( text )
|
42
|
-
sanitize( auto_link( Irwi.config.formatter.format( wiki_linkify( wiki_show_attachments(text) ) )
|
42
|
+
sanitize( auto_link( Irwi.config.formatter.format( wiki_linkify( wiki_show_attachments(text) ) ).html_safe))
|
43
43
|
end
|
44
44
|
|
45
45
|
def wiki_diff( old_text, new_text )
|
@@ -123,7 +123,7 @@ module Irwi::Helpers::WikiPagesHelper
|
|
123
123
|
render :partial => "#{template_dir '_wiki_page_history'}/wiki_page_history", :locals => { :page => page, :versions => versions, :with_form => (versions.size > 1) }
|
124
124
|
end
|
125
125
|
|
126
|
-
def wiki_page_attachments(page)
|
126
|
+
def wiki_page_attachments(page = @page)
|
127
127
|
return unless Irwi::config.page_attachment_class_name
|
128
128
|
|
129
129
|
page.attachments.each do |attachment|
|
@@ -132,12 +132,12 @@ module Irwi::Helpers::WikiPagesHelper
|
|
132
132
|
concat link_to(wt('Remove'), wiki_remove_page_attachment_path(attachment.id), :method => :delete)
|
133
133
|
end
|
134
134
|
|
135
|
-
form_for(
|
136
|
-
|
137
|
-
:url => wiki_add_page_attachment_path(
|
135
|
+
form_for(Irwi.config.page_attachment_class.new,
|
136
|
+
:as => :wiki_page_attachment,
|
137
|
+
:url => wiki_add_page_attachment_path(page),
|
138
138
|
:html => { :multipart => true }) do |form|
|
139
139
|
concat form.file_field :wiki_page_attachment
|
140
|
-
concat form.hidden_field :page_id, :value =>
|
140
|
+
concat form.hidden_field :page_id, :value => page.id
|
141
141
|
concat form.submit 'Add Attachment'
|
142
142
|
end
|
143
143
|
end
|
data/lib/irwi/paginators/none.rb
CHANGED
@@ -3,9 +3,7 @@ require 'active_support/core_ext/hash'
|
|
3
3
|
class Irwi::Paginators::None
|
4
4
|
|
5
5
|
def paginate( collection, options = {} )
|
6
|
-
|
7
|
-
|
8
|
-
collection.find( :all, find_options )
|
6
|
+
collection.all
|
9
7
|
end
|
10
8
|
|
11
9
|
def paginated_section( view, collection, &block )
|
@@ -10,7 +10,7 @@ module Irwi::Support::RouteMapper
|
|
10
10
|
}.merge(config)
|
11
11
|
|
12
12
|
Irwi.config.system_pages.each do |page_action, page_path| # Adding routes for system pages
|
13
|
-
get( "#{root}/#{page_path}", opts.merge({ :action => page_action }) )
|
13
|
+
get( "#{root}/#{page_path}", opts.merge({ :action => page_action.dup }) )
|
14
14
|
end
|
15
15
|
|
16
16
|
get( "#{root}/compare/(*path)", opts.merge({ :action => 'compare', :as => 'compare_wiki_page' }) ) # Comparing two versions of page
|
@@ -1,7 +1,5 @@
|
|
1
1
|
module Irwi::Support::TemplateFinder
|
2
2
|
|
3
|
-
protected
|
4
|
-
|
5
3
|
def template_dir(template)
|
6
4
|
dir = respond_to?( :controller_path ) ? controller_path : controller.controller_path
|
7
5
|
dir = 'base_wiki_pages' if Dir.glob( "app/views/#{dir}/#{template}.html.*" ).empty? # Select default if there are no template in resource directory
|
data/lib/irwi/version.rb
CHANGED
metadata
CHANGED
@@ -1,231 +1,215 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: irwi
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 4
|
9
|
-
- 2
|
10
|
-
version: 0.4.2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.0
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Alexey Noskov
|
14
8
|
- Ravi Bhim
|
15
9
|
autorequire:
|
16
10
|
bindir: bin
|
17
11
|
cert_chain: []
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2016-02-15 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
22
15
|
name: diff-lcs
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
- - ">="
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
hash: 23
|
30
|
-
segments:
|
31
|
-
- 1
|
32
|
-
- 1
|
33
|
-
- 2
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ">="
|
19
|
+
- !ruby/object:Gem::Version
|
34
20
|
version: 1.1.2
|
35
21
|
type: :runtime
|
36
|
-
version_requirements: *id001
|
37
|
-
- !ruby/object:Gem::Dependency
|
38
|
-
name: activerecord
|
39
22
|
prerelease: false
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: 1.1.2
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: activerecord
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '4.0'
|
51
35
|
type: :runtime
|
52
|
-
version_requirements: *id002
|
53
|
-
- !ruby/object:Gem::Dependency
|
54
|
-
name: activesupport
|
55
36
|
prerelease: false
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '4.0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: activesupport
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '4.0'
|
67
49
|
type: :runtime
|
68
|
-
version_requirements: *id003
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: actionpack
|
71
50
|
prerelease: false
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '4.0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: actionpack
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '4.0'
|
83
63
|
type: :runtime
|
84
|
-
version_requirements: *id004
|
85
|
-
- !ruby/object:Gem::Dependency
|
86
|
-
name: rails_autolink
|
87
64
|
prerelease: false
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '4.0'
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: rails_autolink
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - ">="
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '1.0'
|
98
77
|
type: :runtime
|
99
|
-
version_requirements: *id005
|
100
|
-
- !ruby/object:Gem::Dependency
|
101
|
-
name: rspec
|
102
78
|
prerelease: false
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '1.0'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: rspec
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '2.0'
|
113
91
|
type: :development
|
114
|
-
|
115
|
-
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '2.0'
|
98
|
+
- !ruby/object:Gem::Dependency
|
116
99
|
name: sqlite3
|
100
|
+
requirement: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
type: :development
|
117
106
|
prerelease: false
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
- !ruby/object:Gem::Dependency
|
113
|
+
name: RedCloth
|
114
|
+
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
127
119
|
type: :development
|
128
|
-
|
120
|
+
prerelease: false
|
121
|
+
version_requirements: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
129
126
|
description: Irwi is Ruby on Rails plugin which adds wiki functionality to your application.
|
130
|
-
email:
|
127
|
+
email:
|
131
128
|
- alexey.noskov@gmail.com
|
132
129
|
- ravi.bhim@yahoo.com
|
133
130
|
executables: []
|
134
|
-
|
135
131
|
extensions: []
|
136
|
-
|
137
|
-
extra_rdoc_files:
|
132
|
+
extra_rdoc_files:
|
138
133
|
- README.rdoc
|
139
134
|
- MIT-LICENSE
|
140
|
-
files:
|
141
|
-
-
|
142
|
-
-
|
143
|
-
- app/views/base_wiki_pages/all.html.erb
|
144
|
-
- app/views/base_wiki_pages/show.html.erb
|
145
|
-
- app/views/base_wiki_pages/not_allowed.html.erb
|
146
|
-
- app/views/base_wiki_pages/history.html.erb
|
135
|
+
files:
|
136
|
+
- MIT-LICENSE
|
137
|
+
- README.rdoc
|
147
138
|
- app/views/base_wiki_pages/_wiki_page_actions.html.erb
|
148
139
|
- app/views/base_wiki_pages/_wiki_page_history.html.erb
|
149
|
-
- app/views/base_wiki_pages/
|
150
|
-
- app/views/base_wiki_pages/edit.html.erb
|
140
|
+
- app/views/base_wiki_pages/_wiki_page_info.html.erb
|
151
141
|
- app/views/base_wiki_pages/_wiki_page_style.html.erb
|
142
|
+
- app/views/base_wiki_pages/all.html.erb
|
152
143
|
- app/views/base_wiki_pages/compare.html.erb
|
144
|
+
- app/views/base_wiki_pages/edit.html.erb
|
145
|
+
- app/views/base_wiki_pages/history.html.erb
|
146
|
+
- app/views/base_wiki_pages/new.html.erb
|
147
|
+
- app/views/base_wiki_pages/no.html.erb
|
148
|
+
- app/views/base_wiki_pages/not_allowed.html.erb
|
149
|
+
- app/views/base_wiki_pages/show.html.erb
|
150
|
+
- lib/generators/irwi_wiki/irwi_wiki_generator.rb
|
151
|
+
- lib/generators/irwi_wiki/templates/controllers/wiki_pages_controller.rb
|
152
|
+
- lib/generators/irwi_wiki/templates/helpers/wiki_pages_helper.rb
|
153
|
+
- lib/generators/irwi_wiki/templates/migrate/create_wiki_pages.rb
|
154
|
+
- lib/generators/irwi_wiki/templates/models/wiki_page.rb
|
155
|
+
- lib/generators/irwi_wiki/templates/models/wiki_page_version.rb
|
156
|
+
- lib/generators/irwi_wiki_attachments/irwi_wiki_attachments_generator.rb
|
157
|
+
- lib/generators/irwi_wiki_attachments/templates/migrate/create_wiki_page_attachments.rb
|
158
|
+
- lib/generators/irwi_wiki_attachments/templates/models/wiki_page_attachment.rb
|
159
|
+
- lib/generators/irwi_wiki_views/irwi_wiki_views_generator.rb
|
153
160
|
- lib/irwi.rb
|
154
|
-
- lib/irwi/support/template_finder.rb
|
155
|
-
- lib/irwi/support/route_mapper.rb
|
156
161
|
- lib/irwi/comparators/base.rb
|
157
|
-
- lib/irwi/comparators/spans/not_changed_span.rb
|
158
|
-
- lib/irwi/comparators/spans/changed_span.rb
|
159
162
|
- lib/irwi/comparators/diff_lcs.rb
|
160
|
-
- lib/irwi/
|
161
|
-
- lib/irwi/
|
162
|
-
- lib/irwi/
|
163
|
+
- lib/irwi/comparators/spans/changed_span.rb
|
164
|
+
- lib/irwi/comparators/spans/not_changed_span.rb
|
165
|
+
- lib/irwi/config.rb
|
163
166
|
- lib/irwi/extensions/controllers.rb
|
167
|
+
- lib/irwi/extensions/controllers/wiki_page_attachments.rb
|
168
|
+
- lib/irwi/extensions/controllers/wiki_pages.rb
|
169
|
+
- lib/irwi/extensions/models.rb
|
164
170
|
- lib/irwi/extensions/models/wiki_page.rb
|
165
|
-
- lib/irwi/extensions/models/wiki_page_version.rb
|
166
171
|
- lib/irwi/extensions/models/wiki_page_attachment.rb
|
172
|
+
- lib/irwi/extensions/models/wiki_page_version.rb
|
173
|
+
- lib/irwi/formatters/blue_cloth.rb
|
174
|
+
- lib/irwi/formatters/red_carpet.rb
|
175
|
+
- lib/irwi/formatters/red_cloth.rb
|
176
|
+
- lib/irwi/formatters/simple_html.rb
|
177
|
+
- lib/irwi/formatters/wiki_cloth.rb
|
167
178
|
- lib/irwi/helpers.rb
|
168
|
-
- lib/irwi/paginators/will_paginate.rb
|
169
|
-
- lib/irwi/paginators/none.rb
|
170
179
|
- lib/irwi/helpers/wiki_page_attachments_helper.rb
|
171
180
|
- lib/irwi/helpers/wiki_pages_helper.rb
|
172
|
-
- lib/irwi/
|
173
|
-
- lib/irwi/
|
174
|
-
- lib/irwi/
|
181
|
+
- lib/irwi/paginators/none.rb
|
182
|
+
- lib/irwi/paginators/will_paginate.rb
|
183
|
+
- lib/irwi/support/route_mapper.rb
|
184
|
+
- lib/irwi/support/template_finder.rb
|
175
185
|
- lib/irwi/version.rb
|
176
|
-
- lib/irwi/config.rb
|
177
|
-
- lib/generators/irwi_wiki/templates/controllers/wiki_pages_controller.rb
|
178
|
-
- lib/generators/irwi_wiki/templates/migrate/create_wiki_pages.rb
|
179
|
-
- lib/generators/irwi_wiki/templates/helpers/wiki_pages_helper.rb
|
180
|
-
- lib/generators/irwi_wiki/templates/models/wiki_page.rb
|
181
|
-
- lib/generators/irwi_wiki/templates/models/wiki_page_version.rb
|
182
|
-
- lib/generators/irwi_wiki/irwi_wiki_generator.rb
|
183
|
-
- lib/generators/irwi_wiki_views/irwi_wiki_views_generator.rb
|
184
|
-
- lib/generators/irwi_wiki_attachments/templates/migrate/create_wiki_page_attachments.rb
|
185
|
-
- lib/generators/irwi_wiki_attachments/templates/models/wiki_page_attachment.rb
|
186
|
-
- lib/generators/irwi_wiki_attachments/irwi_wiki_attachments_generator.rb
|
187
|
-
- MIT-LICENSE
|
188
|
-
- README.rdoc
|
189
186
|
homepage: http://github.com/alno/irwi
|
190
187
|
licenses: []
|
191
|
-
|
188
|
+
metadata: {}
|
192
189
|
post_install_message:
|
193
|
-
rdoc_options:
|
194
|
-
- --line-numbers
|
195
|
-
- --inline-source
|
196
|
-
- --title
|
197
|
-
-
|
198
|
-
- --main
|
190
|
+
rdoc_options:
|
191
|
+
- "--line-numbers"
|
192
|
+
- "--inline-source"
|
193
|
+
- "--title"
|
194
|
+
- Irwi
|
195
|
+
- "--main"
|
199
196
|
- README.rdoc
|
200
|
-
require_paths:
|
197
|
+
require_paths:
|
201
198
|
- lib
|
202
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
203
|
-
|
204
|
-
requirements:
|
199
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
200
|
+
requirements:
|
205
201
|
- - ">="
|
206
|
-
- !ruby/object:Gem::Version
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
version: "0"
|
211
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
212
|
-
none: false
|
213
|
-
requirements:
|
202
|
+
- !ruby/object:Gem::Version
|
203
|
+
version: '0'
|
204
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
214
206
|
- - ">="
|
215
|
-
- !ruby/object:Gem::Version
|
216
|
-
hash: 23
|
217
|
-
segments:
|
218
|
-
- 1
|
219
|
-
- 3
|
220
|
-
- 6
|
207
|
+
- !ruby/object:Gem::Version
|
221
208
|
version: 1.3.6
|
222
209
|
requirements: []
|
223
|
-
|
224
210
|
rubyforge_project:
|
225
|
-
rubygems_version:
|
211
|
+
rubygems_version: 2.4.5
|
226
212
|
signing_key:
|
227
|
-
specification_version:
|
213
|
+
specification_version: 4
|
228
214
|
summary: Irwi is Ruby on Rails plugin which adds wiki functionality to your application.
|
229
215
|
test_files: []
|
230
|
-
|
231
|
-
has_rdoc:
|