typo 5.4 → 5.4.1

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.
Files changed (61) hide show
  1. data/CHANGELOG +23 -30
  2. data/Typo users guide.pdf +0 -0
  3. data/app/controllers/admin/content_controller.rb +28 -36
  4. data/app/controllers/admin/tags_controller.rb +4 -4
  5. data/app/controllers/articles_controller.rb +119 -1
  6. data/app/controllers/comments_controller.rb +0 -7
  7. data/app/controllers/content_controller.rb +1 -0
  8. data/app/helpers/admin/content_helper.rb +9 -28
  9. data/app/helpers/admin/themes_helper.rb +4 -6
  10. data/app/helpers/articles_helper.rb +4 -0
  11. data/app/models/article.rb +21 -12
  12. data/app/models/blog.rb +0 -1
  13. data/app/models/category.rb +1 -6
  14. data/app/models/content.rb +10 -6
  15. data/app/models/feedback/states.rb +6 -6
  16. data/app/models/tag.rb +8 -8
  17. data/app/views/admin/content/_drafts.html.erb +1 -1
  18. data/app/views/admin/content/_form.html.erb +7 -4
  19. data/app/views/admin/content/index.html.erb +3 -3
  20. data/app/views/admin/feedback/index.html.erb +4 -4
  21. data/app/views/admin/settings/feedback.html.erb +8 -7
  22. data/app/views/admin/settings/write.html.erb +71 -72
  23. data/app/views/admin/tags/index.html.erb +4 -4
  24. data/app/views/admin/themes/editor.html.erb +13 -10
  25. data/app/views/articles/_article.html.erb +6 -4
  26. data/bin/typo +25 -0
  27. data/config/initializers/access_rules.rb +4 -0
  28. data/config/routes.rb +2 -2
  29. data/db/schema.rb +32 -26
  30. data/db/schema.sqlite3.sql +3 -0
  31. data/lang/fr_FR.rb +46 -44
  32. data/lib/tasks/release.rake +1 -1
  33. data/lib/typo_version.rb +1 -1
  34. data/public/images/admin/loading.gif +0 -0
  35. data/public/images/closelabel.gif +0 -0
  36. data/public/stylesheets/administration.css +28 -8
  37. data/spec/controllers/admin/content_controller_spec.rb +91 -7
  38. data/spec/controllers/articles_controller_spec.rb +209 -0
  39. data/spec/controllers/comments_controller_spec.rb +0 -17
  40. data/spec/controllers/xml_controller_spec.rb +0 -5
  41. data/spec/factories.rb +8 -3
  42. data/spec/models/article_spec.rb +31 -4
  43. data/spec/models/configuration_spec.rb +0 -4
  44. data/spec/models/user_spec.rb +13 -0
  45. data/spec/spec_helper.rb +13 -0
  46. data/spec/views/articles/index_spec.rb +9 -11
  47. data/spec/views/articles/read_spec.rb +3 -5
  48. data/test/fixtures/blogs.yml +0 -1
  49. data/themes/dirtylicious/views/articles/_article.html.erb +6 -4
  50. data/themes/scribbish/views/articles/_article.html.erb +6 -4
  51. data/themes/standard_issue/views/articles/_article.html.erb +6 -4
  52. data/themes/true-blue-3/views/articles/_article.html.erb +8 -6
  53. data/themes/true-blue-3/views/categories/_article.html.erb +1 -1
  54. data/themes/typographic/views/articles/_article.html.erb +7 -5
  55. metadata +6 -8
  56. data/app/controllers/admin/previews_controller.rb +0 -10
  57. data/app/controllers/previews_controller.rb +0 -10
  58. data/app/controllers/redirect_controller.rb +0 -143
  59. data/app/helpers/redirect_helper.rb +0 -13
  60. data/spec/controllers/previews_controller_spec.rb +0 -28
  61. data/spec/controllers/redirect_controller_spec.rb +0 -165
@@ -66,14 +66,6 @@ describe CommentsController, 'create' do
66
66
  post :create, :comment => comment, :article_id => contents(:article1).id
67
67
  end
68
68
 
69
- it "should throw an error if sp_allow_non_ajax_comments is false and there are no xhr headers" do
70
- b = blogs(:default)
71
- b.sp_allow_non_ajax_comments = false
72
- b.save
73
- make_the_request
74
- response.response_code.should == 400
75
- end
76
-
77
69
  it "should redirect to the article" do
78
70
  make_the_request
79
71
  response.should redirect_to("#{blogs(:default).base_url}/#{contents(:article1).created_at.year}/#{sprintf("%.2d", contents(:article1).created_at.month)}/#{sprintf("%.2d", contents(:article1).created_at.day)}/#{contents(:article1).permalink}")
@@ -87,15 +79,6 @@ describe CommentsController, 'AJAX creation' do
87
79
  xhr :post, :create, :comment => comment, :article_id => contents(:article1).id
88
80
  end
89
81
 
90
- it "should be be successful if blog.sp_allow_non_ajax_comments is false" do
91
- b = blogs(:default)
92
- b.sp_allow_non_ajax_comments = false
93
- b.save
94
- b.sp_allow_non_ajax_comments.should_not be_true
95
- make_the_request
96
- response.should be_success
97
- end
98
-
99
82
  it "should render the comment partial" do
100
83
  make_the_request
101
84
  response.should render_template("/articles/_comment")
@@ -147,11 +147,6 @@ describe XmlController do
147
147
  assert_response :redirect
148
148
  end
149
149
 
150
- # it "test_bad_format" do
151
- # get :feed, :format => 'atom04', :type => 'feed'
152
- # assert_response :missing
153
- # end
154
-
155
150
  it "test_bad_type" do
156
151
  get :feed, :format => 'rss20', :type => 'foobar'
157
152
  assert_response :missing
data/spec/factories.rb CHANGED
@@ -1,8 +1,13 @@
1
1
  require 'factory_girl'
2
2
 
3
+ Factory.sequence :user do |n|
4
+ "user#{n}"
5
+ end
6
+
3
7
  Factory.define :user do |u|
4
- u.login 'shingara'
5
- u.email 'cyril.mougel@gmail.com'
8
+ u.login { Factory.next(:user) }
9
+ u.email 'some.where@out.there'
10
+ u.password 'top-secret'
6
11
  end
7
12
 
8
13
  Factory.define :article do |a|
@@ -10,7 +15,7 @@ Factory.define :article do |a|
10
15
  a.body 'A content with several data'
11
16
  a.permalink 'a-big-article'
12
17
  a.published_at Time.now
13
- a.user Factory.build(:user)
18
+ a.association :user, :factory => :user
14
19
  end
15
20
 
16
21
  Factory.define :second_article, :parent => :article do |a|
@@ -15,12 +15,19 @@ describe Article do
15
15
  it 'should second_article factory valid' do
16
16
  Factory(:second_article).should be_valid
17
17
  Factory.build(:second_article).should be_valid
18
-
19
18
  end
20
19
  it 'should article_with_accent_in_html' do
21
20
  Factory(:article_with_accent_in_html).should be_valid
22
21
  Factory.build(:article_with_accent_in_html).should be_valid
23
22
  end
23
+ it 'should store user too' do
24
+ a = Factory(:article)
25
+ Article.find(a.id).user.should_not be_nil
26
+ end
27
+ it 'should multiple article factory valid' do
28
+ Factory(:article).should be_valid
29
+ Factory(:article).should be_valid
30
+ end
24
31
  end
25
32
 
26
33
  def assert_results_are(*expected)
@@ -307,7 +314,7 @@ describe Article do
307
314
  end
308
315
 
309
316
  describe 'body_and_extended' do
310
- before :each do
317
+ before :each do
311
318
  @article = contents(:article1)
312
319
  end
313
320
 
@@ -358,7 +365,7 @@ describe Article do
358
365
  end
359
366
 
360
367
  describe 'body_and_extended=' do
361
- before :each do
368
+ before :each do
362
369
  @article = contents(:article1)
363
370
  end
364
371
 
@@ -367,7 +374,7 @@ describe Article do
367
374
  @article.body.should == 'foo'
368
375
  @article.extended.should == 'bar'
369
376
  end
370
-
377
+
371
378
  it 'should remove newlines around <!--more-->' do
372
379
  @article.body_and_extended = "foo\n<!--more-->\nbar"
373
380
  @article.body.should == 'foo'
@@ -442,4 +449,24 @@ describe Article do
442
449
  Article.published_at_like(2.month.ago.strftime('%Y-%m-%d')).map(&:id).sort.should == [@article_two_month_ago.id].sort
443
450
  end
444
451
  end
452
+
453
+ describe '#has_child?' do
454
+ it 'should be true if article has one to link it by parent_id' do
455
+ Factory(:article, :parent_id => contents(:article1).id)
456
+ contents(:article1).should be_has_child
457
+ end
458
+ it 'should be false if article has no article to link it by parent_id' do
459
+ contents(:article1).should_not be_has_child
460
+ end
461
+ end
462
+
463
+ describe 'self#last_draft(id)' do
464
+ it 'should return article if no draft associated' do
465
+ Article.last_draft(contents(:article1).id).should == contents(:article1)
466
+ end
467
+ it 'should return draft associated to this article if there are one' do
468
+ draft = Factory(:article, :parent_id => contents(:article1).id, :state => 'draft')
469
+ Article.last_draft(contents(:article1).id).should == draft
470
+ end
471
+ end
445
472
  end
@@ -23,10 +23,6 @@ describe 'Given a new blog' do
23
23
  @blog.sp_article_auto_close.should == 0
24
24
  end
25
25
 
26
- it "#sp_allow_non_ajax_comments should be false" do
27
- @blog.should be_sp_allow_non_ajax_comments
28
- end
29
-
30
26
  it "#sp_url_limit should be 0" do
31
27
  @blog.sp_url_limit.should == 0
32
28
  end
@@ -1,5 +1,18 @@
1
1
  require File.dirname(__FILE__) + '/../spec_helper'
2
2
 
3
+ describe User do
4
+ describe 'Factory Girl' do
5
+ it 'should user factory valid' do
6
+ Factory.create(:user).should be_valid
7
+ Factory.build(:user).should be_valid
8
+ end
9
+ it 'should multiple user factory valid' do
10
+ Factory.create(:user).should be_valid
11
+ Factory.create(:user).should be_valid
12
+ end
13
+ end
14
+ end
15
+
3
16
  describe 'With the contents and users fixtures loaded' do
4
17
  before(:each) do
5
18
  User.stub!(:salt).and_return('change-me')
data/spec/spec_helper.rb CHANGED
@@ -53,6 +53,19 @@ def this_blog
53
53
  Blog.default || Blog.create!
54
54
  end
55
55
 
56
+ # test standard view and all themes
57
+ def with_each_theme
58
+ yield nil, ""
59
+ Dir.new(File.join(RAILS_ROOT, "themes")).each do |theme|
60
+ next if theme =~ /\.\.?/
61
+ view_path = "#{RAILS_ROOT}/themes/#{theme}/views"
62
+ if File.exists?("#{RAILS_ROOT}/themes/#{theme}/helpers/theme_helper.rb")
63
+ require "#{RAILS_ROOT}/themes/#{theme}/helpers/theme_helper.rb"
64
+ end
65
+ yield theme, view_path
66
+ end
67
+ end
68
+
56
69
  # This test now has optional support for validating the generated RSS feeds.
57
70
  # Since Ruby doesn't have a RSS/Atom validator, I'm using the Python source
58
71
  # for http://feedvalidator.org and calling it via 'system'.
@@ -1,11 +1,9 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper'
2
2
 
3
- # test standard view and all themes
4
- [ nil, "dirtylicious", "scribbish", "standard_issue", "typographic" ].each do |theme|
5
- view_path = theme ? "#{RAILS_ROOT}/themes/#{theme}/views" : ""
3
+ with_each_theme do |theme, view_path|
6
4
  describe "#{view_path}/articles/index" do
7
5
  before(:each) do
8
- @controller.view_paths = [ "#{RAILS_ROOT}/themes/#{theme}/views" ] if theme
6
+ @controller.view_paths.unshift(view_path) if theme
9
7
  # we only want to test pagination links
10
8
  ActionView::Base.class_eval do
11
9
  def article_links(article)
@@ -15,18 +13,18 @@ require File.dirname(__FILE__) + '/../../spec_helper'
15
13
  alias :tag_links :article_links
16
14
  end
17
15
  end
18
-
16
+
19
17
  context "normally" do
20
18
  before(:each) do
21
19
  @controller.action_name = "index"
22
20
  assigns[:articles] = Article.paginate(:all, :page => 2, :per_page => 4)
23
21
  render "articles/index"
24
22
  end
25
-
23
+
26
24
  it "should not have pagination link to page 2 without q param" do
27
25
  response.should_not have_tag("a[href=?]", "/page/2")
28
26
  end
29
-
27
+
30
28
  it "should have pagination link to page 1 without q param if on page 2" do
31
29
  response.should have_tag("a[href=?]", "/page/1")
32
30
  end
@@ -36,7 +34,7 @@ require File.dirname(__FILE__) + '/../../spec_helper'
36
34
  response.should_not have_tag("p>p", "body")
37
35
  end
38
36
  end
39
-
37
+
40
38
  # *notice
41
39
  # this assumptions has "&amp;", i don`t know why, but we want only to test the q= param in link and have separated this test from controller
42
40
  context "when search" do
@@ -48,14 +46,14 @@ require File.dirname(__FILE__) + '/../../spec_helper'
48
46
  assigns[:articles] = Blog.default.articles_matching(params[:q], :page => 2, :per_page => 4)
49
47
  render "articles/index"
50
48
  end
51
-
49
+
52
50
  it "should not have pagination link to page 2 with q param" do
53
51
  response.should_not have_tag("a[href=?]", "/search/body?page=2") # *notice
54
52
  end
55
-
53
+
56
54
  it "should have pagination link to page 1 with q param if on page 2" do
57
55
  response.should have_tag("a[href=?]", "/search/body?page=1") # *notice
58
- end
56
+ end
59
57
  end
60
58
  end
61
59
  end
@@ -1,11 +1,9 @@
1
1
  require File.dirname(__FILE__) + '/../../spec_helper'
2
2
 
3
- # test standard view and all themes
4
- [ nil, "dirtylicious", "scribbish", "standard_issue", "typographic" ].each do |theme|
5
- view_path = theme ? "#{RAILS_ROOT}/themes/#{theme}/views" : ""
3
+ with_each_theme do |theme, view_path|
6
4
  describe "#{view_path}/articles/read" do
7
5
  before(:each) do
8
- @controller.view_paths = [ "#{RAILS_ROOT}/themes/#{theme}/views" ] if theme
6
+ @controller.view_paths.unshift(view_path) if theme
9
7
  # we do not want to test article links and such
10
8
  ActionView::Base.class_eval do
11
9
  def article_links(article)
@@ -18,7 +16,7 @@ require File.dirname(__FILE__) + '/../../spec_helper'
18
16
 
19
17
  context "applying text filters" do
20
18
  before(:each) do
21
- @controller.action_name = "read"
19
+ @controller.action_name = "redirect"
22
20
  assigns[:article] = contents('article1')
23
21
  render "articles/read"
24
22
  end
@@ -32,5 +32,4 @@ default:
32
32
  link_to_author: false
33
33
  itunes_summary: ""
34
34
  comment_text_filter: markdown
35
- sp_allow_non_ajax_comments: true
36
35
  permalink_format: /%year%/%month%/%day%/%title%
@@ -9,14 +9,16 @@
9
9
  </div>
10
10
 
11
11
  <div class="content">
12
- <% if controller.action_name == 'show' or controller.action_name == 'index' %>
12
+ <% unless controller.action_name == 'redirect' %>
13
13
  <% if article.excerpt? %>
14
14
  <%= article.excerpt %>
15
15
  <% else %>
16
16
  <%= article.html(:body) %>
17
- <div class="extended">
18
- <p><%= link_to_permalink article,"Continue reading..." %></p>
19
- </div>
17
+ <% if article.extended? %>
18
+ <div class="extended">
19
+ <p><%= link_to_permalink article,"Continue reading..." %></p>
20
+ </div>
21
+ <% end %>
20
22
  <% end %>
21
23
  <% else %>
22
24
  <%= article.html(:body) %>
@@ -10,14 +10,16 @@
10
10
  </p>
11
11
 
12
12
  <div class="content">
13
- <% if controller.action_name == 'show' or controller.action_name == 'index' %>
13
+ <% unless controller.action_name == 'redirect' %>
14
14
  <% if article.excerpt? %>
15
15
  <%= article.excerpt %>
16
16
  <% else %>
17
17
  <%= article.html(:body) %>
18
- <div class="extended">
19
- <p><%= link_to_permalink article,"Continue reading..." %></p>
20
- </div>
18
+ <% if article.extended? %>
19
+ <div class="extended">
20
+ <p><%= link_to_permalink article,"Continue reading..." %></p>
21
+ </div>
22
+ <% end %>
21
23
  <% end %>
22
24
  <% else %>
23
25
  <%= article.html(:body) %>
@@ -1,14 +1,16 @@
1
1
  <div class="atomentry" id="article-<%= article.id %>">
2
2
  <h2 class="title"><%= (controller.action_name.include? 'permalink') ? article.title : link_to_permalink(article,article.title) %></h2>
3
3
  <div class="content">
4
- <% if controller.action_name == 'show' or controller.action_name == 'index' %>
4
+ <% unless controller.action_name == 'redirect' %>
5
5
  <% if article.excerpt? %>
6
6
  <%= article.excerpt %>
7
7
  <% else %>
8
8
  <%= article.html(:body) %>
9
- <div class="extended">
10
- <p><%= link_to_permalink article,"Continue reading..." %></p>
11
- </div>
9
+ <% if article.extended? %>
10
+ <div class="extended">
11
+ <p><%= link_to_permalink article,"Continue reading..." %></p>
12
+ </div>
13
+ <% end %>
12
14
  <% end %>
13
15
  <% else %>
14
16
  <%= article.html(:body) %>
@@ -1,15 +1,17 @@
1
1
  <div class='category-excerpt <%= "border" if @article_counter >= 0 %>' id="article-<%= article.id %>">
2
2
  <h2><%= (controller.controller_name == 'redirect') ? article.title : link_to_permalink(article,article.title) %></h2>
3
+ <% unless controller.action_name == 'redirect' %>
3
4
  <% if article.excerpt? %>
4
5
  <%= article.excerpt %>
5
6
  <% else %>
6
- <% if article.extended %>
7
- <%= article.html(:body) %>
8
- <% else %>
9
- <%= article.html(:body) %>
10
- <%= article.html(:extended) %>
11
- <% end %>
7
+ <%= article.html(:body) %>
12
8
  <% end %>
9
+ <% else %>
10
+ <%= article.html(:body) %>
11
+ <% if article.extended? %>
12
+ <%= article.html(:extended) %>
13
+ <% end %>
14
+ <% end %>
13
15
  <div class='author'>
14
16
  Published on <%= _(article.published_at.utc.strftime(_("%%a, %%d %%b %%Y %%H:%%M", article.published_at.utc))) %>
15
17
  </div>
@@ -1,5 +1,5 @@
1
1
  <div class='category-excerpt <%= "border" if @article_counter >= 0 %>' id="article-<%= article.id %>">
2
- <h2><%= link_to_permalink(article,article.title %></h2>
2
+ <h2><%= link_to_permalink(article, article.title) %></h2>
3
3
  <% if article.excerpt? %>
4
4
  <%= article.excerpt %>
5
5
  <% else %>
@@ -6,14 +6,16 @@
6
6
  </div>
7
7
  </div>
8
8
  <div class="content">
9
- <% if controller.action_name == 'show' or controller.action_name == 'index' %>
9
+ <% unless controller.action_name == 'redirect' %>
10
10
  <% if article.excerpt? %>
11
11
  <%= article.excerpt %>
12
12
  <% else %>
13
13
  <%= article.html(:body) %>
14
- <div class="extended">
15
- <p><%= link_to_permalink article,"Continue reading..." %></p>
16
- </div>
14
+ <% if article.extended? %>
15
+ <div class="extended">
16
+ <p><%= link_to_permalink article,"Continue reading..." %></p>
17
+ </div>
18
+ <% end %>
17
19
  <% end %>
18
20
  <% else %>
19
21
  <%= article.html(:body) %>
@@ -22,7 +24,7 @@
22
24
  </div>
23
25
  <% end %>
24
26
  </div>
25
- <% if controller.controller_name == "articles" and controller.action_name == "show" %>
27
+ <% if controller.controller_name == "articles" and controller.action_name == "redirect" %>
26
28
  <div class="meta">
27
29
  <p class="infos"><small>
28
30
  <%= _("This entry was posted on %s", content_tag(:abbr, js_distance_of_time_in_words_to_now(@article.published_at), {:class => 'published', :title => @article.published_at.xmlschema})) %>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: typo
3
3
  version: !ruby/object:Gem::Version
4
- version: "5.4"
4
+ version: 5.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - "Fr\xC3\xA9d\xC3\xA9ric de Villamil"
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-12-19 00:00:00 +01:00
12
+ date: 2009-12-28 00:00:00 +01:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -144,7 +144,6 @@ files:
144
144
  - app/controllers/admin/dashboard_controller.rb
145
145
  - app/controllers/admin/feedback_controller.rb
146
146
  - app/controllers/admin/pages_controller.rb
147
- - app/controllers/admin/previews_controller.rb
148
147
  - app/controllers/admin/profiles_controller.rb
149
148
  - app/controllers/admin/resources_controller.rb
150
149
  - app/controllers/admin/settings_controller.rb
@@ -162,8 +161,6 @@ files:
162
161
  - app/controllers/content_controller.rb
163
162
  - app/controllers/feedback_controller.rb
164
163
  - app/controllers/grouping_controller.rb
165
- - app/controllers/previews_controller.rb
166
- - app/controllers/redirect_controller.rb
167
164
  - app/controllers/tags_controller.rb
168
165
  - app/controllers/textfilter_controller.rb
169
166
  - app/controllers/theme_controller.rb
@@ -194,7 +191,6 @@ files:
194
191
  - app/helpers/content_helper.rb
195
192
  - app/helpers/groupings_helper.rb
196
193
  - app/helpers/mail_helper.rb
197
- - app/helpers/redirect_helper.rb
198
194
  - app/helpers/sidebar_helper.rb
199
195
  - app/helpers/sidebars/plugin_helper.rb
200
196
  - app/helpers/tags_helper.rb
@@ -493,6 +489,7 @@ files:
493
489
  - db/schema.postgresql.sql
494
490
  - db/schema.rb
495
491
  - db/schema.sqlite.sql
492
+ - db/schema.sqlite3.sql
496
493
  - db/schema.sqlserver.sql
497
494
  - db/schema_version
498
495
  - db/scripts/fix_permalinks.rb
@@ -564,11 +561,13 @@ files:
564
561
  - public/images/admin/input_text_right.jpg
565
562
  - public/images/admin/input_text_small_left.jpg
566
563
  - public/images/admin/input_text_small_right.jpg
564
+ - public/images/admin/loading.gif
567
565
  - public/images/admin/publisher_bottom.jpg
568
566
  - public/images/admin/publisher_top.jpg
569
567
  - public/images/admin/typologo.gif
570
568
  - public/images/calendar_date_select/calendar.gif
571
569
  - public/images/close.gif
570
+ - public/images/closelabel.gif
572
571
  - public/images/go.png
573
572
  - public/images/loading.gif
574
573
  - public/images/nextlabel.gif
@@ -921,8 +920,6 @@ files:
921
920
  - spec/controllers/backend_controller_spec.rb
922
921
  - spec/controllers/categories_controller_spec.rb
923
922
  - spec/controllers/comments_controller_spec.rb
924
- - spec/controllers/previews_controller_spec.rb
925
- - spec/controllers/redirect_controller_spec.rb
926
923
  - spec/controllers/routes/articles_routing_spec.rb
927
924
  - spec/controllers/routes/xml_routing_spec.rb
928
925
  - spec/controllers/tags_controller_spec.rb
@@ -1184,6 +1181,7 @@ files:
1184
1181
  - themes/typographic/views/articles/index.html.erb
1185
1182
  - themes/typographic/views/articles/read.html.erb
1186
1183
  - themes/typographic/views/theme/static_view_test.html.erb
1184
+ - Typo users guide.pdf
1187
1185
  - UPGRADE
1188
1186
  - vendor/akismet/akismet.rb
1189
1187
  - vendor/flickr/flickr.rb