typo 5.4.4 → 5.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (292) hide show
  1. data/CHANGELOG +59 -28
  2. data/MAINTAINERS +9 -17
  3. data/README +28 -20
  4. data/UPGRADE +6 -2
  5. data/app/controllers/accounts_controller.rb +1 -1
  6. data/app/controllers/admin/content_controller.rb +1 -1
  7. data/app/controllers/admin/feedback_controller.rb +3 -3
  8. data/app/controllers/admin/pages_controller.rb +2 -0
  9. data/app/controllers/application_controller.rb +6 -1
  10. data/app/controllers/articles_controller.rb +13 -1
  11. data/app/helpers/application_helper.rb +5 -2
  12. data/app/helpers/authors_helper.rb +14 -3
  13. data/app/models/article.rb +6 -4
  14. data/app/models/blog.rb +0 -4
  15. data/app/models/blog_sweeper.rb +1 -1
  16. data/app/models/content.rb +10 -5
  17. data/app/models/page_cache.rb +6 -7
  18. data/app/models/user.rb +1 -0
  19. data/app/views/admin/content/_form.html.erb +13 -11
  20. data/app/views/admin/content/_images.html.erb +1 -1
  21. data/app/views/admin/content/_simple_editor.html.erb +1 -0
  22. data/app/views/admin/content/_visual_editor.html.erb +1 -0
  23. data/app/views/admin/dashboard/_overview.html.erb +7 -7
  24. data/app/views/admin/pages/_form.html.erb +1 -0
  25. data/app/views/admin/pages/_images.html.erb +18 -0
  26. data/app/views/admin/pages/_simple_editor.html.erb +1 -2
  27. data/app/views/admin/pages/_visual_editor.html.erb +2 -1
  28. data/app/views/admin/pages/index.html.erb +1 -1
  29. data/app/views/admin/settings/feedback.html.erb +2 -1
  30. data/app/views/admin/tags/edit.html.erb +1 -1
  31. data/app/views/articles/_article.html.erb +17 -13
  32. data/app/views/articles/_article_content.html.erb +1 -0
  33. data/app/views/articles/_comment_box.html.erb +1 -1
  34. data/app/views/articles/_password_form.html.erb +10 -0
  35. data/app/views/articles/groupings.html.erb +1 -1
  36. data/app/views/articles/index.html.erb +1 -2
  37. data/app/views/articles/read.html.erb +1 -4
  38. data/app/views/articles/search.html.erb +1 -1
  39. data/app/views/layouts/administration.html.erb +1 -1
  40. data/app/views/shared/_search.html.erb +1 -1
  41. data/config/ckeditor.yml +14 -0
  42. data/config/environment.rb +13 -25
  43. data/config/environments/test.rb +1 -3
  44. data/config/filemanager.yml +16 -0
  45. data/config/initializers/access_rules.rb +5 -0
  46. data/config/routes.rb +5 -1
  47. data/db/migrate/004_add_sidebars.rb +3 -9
  48. data/db/migrate/089_drop_cache_information_table.rb +31 -0
  49. data/db/migrate/090_remove_keywords_from_posts.rb +9 -0
  50. data/db/migrate/091_adds_password_protection_to_posts.rb +9 -0
  51. data/doc/CACHE.SETUP.README +36 -0
  52. data/lang/de_DE.rb +6 -1
  53. data/lang/pl_PL.rb +221 -89
  54. data/lib/filemanager.rb +53 -0
  55. data/lib/filemanager/controller.rb +217 -0
  56. data/lib/i18n_interpolation_deprecation.rb +26 -0
  57. data/lib/rails_patch/active_support.rb +4 -0
  58. data/lib/tasks/release.rake +4 -131
  59. data/lib/typo_version.rb +1 -1
  60. data/public/.htaccess +6 -5
  61. data/public/filemanager/images/avi.gif +0 -0
  62. data/public/filemanager/images/box.gif +0 -0
  63. data/public/filemanager/images/bullet.gif +0 -0
  64. data/public/filemanager/images/close.gif +0 -0
  65. data/public/filemanager/images/closelabel.gif +0 -0
  66. data/public/filemanager/images/doc.gif +0 -0
  67. data/public/filemanager/images/donate-button.gif +0 -0
  68. data/public/filemanager/images/download-icon.gif +0 -0
  69. data/public/filemanager/images/folder.gif +0 -0
  70. data/public/filemanager/images/gif.gif +0 -0
  71. data/public/filemanager/images/htm.gif +0 -0
  72. data/public/filemanager/images/html.gif +0 -0
  73. data/public/filemanager/images/image-1.jpg +0 -0
  74. data/public/filemanager/images/image.gif +0 -0
  75. data/public/filemanager/images/jpg.gif +0 -0
  76. data/public/filemanager/images/loading.gif +0 -0
  77. data/public/filemanager/images/mov.gif +0 -0
  78. data/public/filemanager/images/nextlabel.gif +0 -0
  79. data/public/filemanager/images/pdf.gif +0 -0
  80. data/public/filemanager/images/png.gif +0 -0
  81. data/public/filemanager/images/ppt.gif +0 -0
  82. data/public/filemanager/images/prevlabel.gif +0 -0
  83. data/public/filemanager/images/rar.gif +0 -0
  84. data/public/filemanager/images/rm.gif +0 -0
  85. data/public/filemanager/images/rmvb.gif +0 -0
  86. data/public/filemanager/images/separator.gif +0 -0
  87. data/public/filemanager/images/spacer.gif +0 -0
  88. data/public/filemanager/images/swf.gif +0 -0
  89. data/public/filemanager/images/thumb-1.jpg +0 -0
  90. data/public/filemanager/images/tool_copy.gif +0 -0
  91. data/public/filemanager/images/tool_cut.gif +0 -0
  92. data/public/filemanager/images/tool_del.gif +0 -0
  93. data/public/filemanager/images/tool_folder.gif +0 -0
  94. data/public/filemanager/images/tool_imagemanager.gif +0 -0
  95. data/public/filemanager/images/tool_new.gif +0 -0
  96. data/public/filemanager/images/tool_paste.gif +0 -0
  97. data/public/filemanager/images/tool_props.gif +0 -0
  98. data/public/filemanager/images/tool_refresh.gif +0 -0
  99. data/public/filemanager/images/tool_unzip.gif +0 -0
  100. data/public/filemanager/images/tool_upload.gif +0 -0
  101. data/public/filemanager/images/tool_zip.gif +0 -0
  102. data/public/filemanager/images/txt.gif +0 -0
  103. data/public/filemanager/images/unknown.gif +0 -0
  104. data/public/filemanager/images/wmv.gif +0 -0
  105. data/public/filemanager/images/xls.gif +0 -0
  106. data/public/filemanager/images/zip.gif +0 -0
  107. data/public/filemanager/javascripts/filemanager.js +6 -0
  108. data/public/filemanager/javascripts/lang/en.js +31 -0
  109. data/public/filemanager/javascripts/lang/zh_CN.js +31 -0
  110. data/public/filemanager/javascripts/lightbox.js +497 -0
  111. data/public/filemanager/javascripts/translate.js +42 -0
  112. data/public/filemanager/resources/resources.txt +1 -0
  113. data/public/filemanager/stylesheets/filelist.css +147 -0
  114. data/public/filemanager/stylesheets/general.css +135 -0
  115. data/public/filemanager/stylesheets/lightbox.css +27 -0
  116. data/public/javascripts/prototype_ext.js +117 -0
  117. data/public/stylesheets/administration.css +19 -2
  118. data/themes/dirtylicious/views/articles/_article.html.erb +16 -12
  119. data/themes/dirtylicious/views/articles/_article_content.html.erb +1 -0
  120. data/themes/dirtylicious/views/articles/_password_form.html.erb +10 -0
  121. data/themes/scribbish/views/articles/_article.html.erb +18 -14
  122. data/themes/scribbish/views/articles/_article_content.html.erb +1 -0
  123. data/themes/scribbish/views/articles/_password_form.html.erb +10 -0
  124. data/themes/standard_issue/views/articles/_article.html.erb +16 -12
  125. data/themes/standard_issue/views/articles/_article_content.html.erb +1 -0
  126. data/themes/standard_issue/views/articles/_password_form.html.erb +10 -0
  127. data/themes/true-blue-3/helpers/theme_helper.rb +2 -2
  128. data/themes/true-blue-3/images/submit_form.jpg +0 -0
  129. data/themes/true-blue-3/stylesheets/style.css +27 -3
  130. data/themes/true-blue-3/views/articles/_article.html.erb +13 -8
  131. data/themes/true-blue-3/views/articles/_article_content.html.erb +1 -0
  132. data/themes/true-blue-3/views/articles/_comment_form.html.erb +1 -1
  133. data/themes/true-blue-3/views/articles/_password_form.html.erb +10 -0
  134. data/themes/true-blue-3/views/categories/_article.html.erb +5 -0
  135. data/themes/true-blue-3/views/tags/_article.html.erb +4 -0
  136. data/themes/typographic/views/articles/_article.html.erb +16 -12
  137. data/themes/typographic/views/articles/_article_content.html.erb +1 -0
  138. data/themes/typographic/views/articles/_password_form.html.erb +10 -0
  139. data/vendor/plugins/easy-ckeditor/app/controllers/ckeditor_controller.rb +2 -1
  140. data/vendor/plugins/easy-ckeditor/lib/ckeditor.rb +1 -20
  141. data/vendor/plugins/easy-ckeditor/{tasks → lib/tasks}/ckeditor_tasks.rake +0 -0
  142. data/vendor/plugins/filemanager/app/controllers/fm/filemanager_controller.rb +22 -0
  143. data/vendor/plugins/filemanager/app/views/fm/filemanager/index.html.erb +512 -0
  144. data/vendor/plugins/filemanager/app/views/fm/filemanager/view.html.erb +67 -0
  145. data/vendor/plugins/filemanager/filemanager.yml +16 -0
  146. data/vendor/plugins/static_sidebar/lib/static_sidebar.rb +4 -2
  147. data/vendor/plugins/typo_converter/{tasks → lib/tasks}/typo_converters_tasks.rake +0 -0
  148. data/vendor/plugins/typo_login_system/lib/access_control.rb +24 -1
  149. data/vendor/plugins/typo_textfilter_code/{tasks → lib/tasks}/typo_textfilter_code_tasks.rake +0 -0
  150. data/vendor/plugins/typo_textfilter_code/lib/typo_textfilter_code.rb +4 -3
  151. data/vendor/plugins/typo_textfilter_flickr/{tasks → lib/tasks}/typo_textfilter_flickr_tasks.rake +0 -0
  152. data/vendor/plugins/typo_textfilter_htmlfilter/{tasks → lib/tasks}/typo_textfilter_htmlfilter_tasks.rake +0 -0
  153. data/vendor/plugins/typo_textfilter_lightbox/{tasks → lib/tasks}/typo_textfilter_lightbox_tasks.rake +0 -0
  154. data/vendor/plugins/typo_textfilter_markdown/{tasks → lib/tasks}/typo_textfilter_markdown_tasks.rake +0 -0
  155. data/vendor/plugins/typo_textfilter_none/{tasks → lib/tasks}/typo_textfilter_none_tasks.rake +0 -0
  156. data/vendor/plugins/typo_textfilter_smartypants/{tasks → lib/tasks}/typo_textfilter_smartypants_tasks.rake +0 -0
  157. data/vendor/plugins/typo_textfilter_textile/{tasks → lib/tasks}/typo_textfilter_textile_tasks.rake +0 -0
  158. data/vendor/plugins/typo_textfilter_textile_and_markdown/{tasks → lib/tasks}/typo_textfilter_textile_and_markdown_tasks.rake +0 -0
  159. data/vendor/plugins/xml_sidebar/views/content.rhtml +1 -1
  160. metadata +190 -195
  161. data/app/controllers/admin/cache_controller.rb +0 -9
  162. data/app/models/cache_information.rb +0 -19
  163. data/db/schema.rb +0 -242
  164. data/doc/test_themes.rb +0 -50
  165. data/public/javascripts/ckeditor/config.js +0 -27
  166. data/spec/controllers/accounts_controller_spec.rb +0 -414
  167. data/spec/controllers/admin/cache_controller_spec.rb +0 -18
  168. data/spec/controllers/admin/categories_controller_spec.rb +0 -73
  169. data/spec/controllers/admin/content_controller_spec.rb +0 -443
  170. data/spec/controllers/admin/dashboard_controller_spec.rb +0 -13
  171. data/spec/controllers/admin/feedback_controller_spec.rb +0 -308
  172. data/spec/controllers/admin/pages_controller_spec.rb +0 -80
  173. data/spec/controllers/admin/profiles_controller_spec.rb +0 -22
  174. data/spec/controllers/admin/resources_controller_spec.rb +0 -53
  175. data/spec/controllers/admin/settings_controller_spec.rb +0 -80
  176. data/spec/controllers/admin/tags_controller_spec.rb +0 -64
  177. data/spec/controllers/admin/textfilters_controller_spec.rb +0 -20
  178. data/spec/controllers/admin/themes_controller_spec.rb +0 -30
  179. data/spec/controllers/admin/users_controller_spec.rb +0 -109
  180. data/spec/controllers/application_controller_spec.rb +0 -18
  181. data/spec/controllers/articles_controller_spec.rb +0 -440
  182. data/spec/controllers/authors_controller_spec.rb +0 -42
  183. data/spec/controllers/backend_controller_spec.rb +0 -337
  184. data/spec/controllers/categories_controller_spec.rb +0 -117
  185. data/spec/controllers/comments_controller_spec.rb +0 -137
  186. data/spec/controllers/routes/articles_routing_spec.rb +0 -31
  187. data/spec/controllers/routes/xml_routing_spec.rb +0 -71
  188. data/spec/controllers/setup_controller_spec.rb +0 -24
  189. data/spec/controllers/tags_controller_spec.rb +0 -147
  190. data/spec/controllers/textfilter_controller_spec.rb +0 -192
  191. data/spec/controllers/theme_controller_spec.rb +0 -39
  192. data/spec/controllers/xml_controller_spec.rb +0 -185
  193. data/spec/factories.rb +0 -69
  194. data/spec/helpers/application_helper_spec.rb +0 -25
  195. data/spec/helpers/content_helper_spec.rb +0 -28
  196. data/spec/lib/text_filter_plugin_spec.rb +0 -15
  197. data/spec/models/amazon_sidebar_spec.rb +0 -40
  198. data/spec/models/article_closing_spec.rb +0 -42
  199. data/spec/models/article_spec.rb +0 -515
  200. data/spec/models/blog_spec.rb +0 -116
  201. data/spec/models/cache_information_spec.rb +0 -42
  202. data/spec/models/cache_support_spec.rb +0 -51
  203. data/spec/models/category_spec.rb +0 -44
  204. data/spec/models/comment_spec.rb +0 -240
  205. data/spec/models/configuration_spec.rb +0 -91
  206. data/spec/models/content_state/feedback_states_spec.rb +0 -64
  207. data/spec/models/notification_spec.rb +0 -8
  208. data/spec/models/page_cache_spec.rb +0 -30
  209. data/spec/models/page_spec.rb +0 -91
  210. data/spec/models/ping_pinger_spec.rb +0 -33
  211. data/spec/models/ping_spec.rb +0 -154
  212. data/spec/models/redirect_spec.rb +0 -17
  213. data/spec/models/resource_spec.rb +0 -39
  214. data/spec/models/route_cache_spec.rb +0 -11
  215. data/spec/models/sidebar_spec.rb +0 -7
  216. data/spec/models/static_sidebar_spec.rb +0 -17
  217. data/spec/models/tag_spec.rb +0 -65
  218. data/spec/models/text_filter_spec.rb +0 -34
  219. data/spec/models/theme_spec.rb +0 -45
  220. data/spec/models/trackback_spec.rb +0 -60
  221. data/spec/models/trigger_spec.rb +0 -40
  222. data/spec/models/user_spec.rb +0 -198
  223. data/spec/rcov.opts +0 -2
  224. data/spec/spec.opts +0 -4
  225. data/spec/spec_helper.rb +0 -133
  226. data/spec/views/articles/index_spec.rb +0 -63
  227. data/spec/views/articles/read_spec.rb +0 -67
  228. data/spec/views/comments/html_sanitization_spec.rb +0 -119
  229. data/test/fixtures/blogs.yml +0 -27
  230. data/test/fixtures/categories.yml +0 -29
  231. data/test/fixtures/categorizations.yml +0 -31
  232. data/test/fixtures/contents.yml +0 -231
  233. data/test/fixtures/feedback.yml +0 -180
  234. data/test/fixtures/notification_mailer/article +0 -3
  235. data/test/fixtures/notification_mailer/comment +0 -3
  236. data/test/fixtures/notification_mailer/trackback +0 -3
  237. data/test/fixtures/notifications.yml +0 -0
  238. data/test/fixtures/page_caches.yml +0 -7
  239. data/test/fixtures/profiles.yml +0 -27
  240. data/test/fixtures/redirects.yml +0 -10
  241. data/test/fixtures/resources.yml +0 -21
  242. data/test/fixtures/sidebars.yml +0 -10
  243. data/test/fixtures/tags.yml +0 -10
  244. data/test/fixtures/text_filters.yml +0 -37
  245. data/test/fixtures/triggers.yml +0 -1
  246. data/test/fixtures/users.yml +0 -101
  247. data/test/mocks/test/dns_mock.rb +0 -13
  248. data/test/mocks/test/flickr_mock.rb +0 -30
  249. data/test/mocks/test/http_mock.rb +0 -39
  250. data/test/mocks/test/theme_mock.rb +0 -5
  251. data/test/mocks/test/xmlrpc_mock.rb +0 -28
  252. data/test/mocks/themes/123-numbers-in-path/about.markdown +0 -0
  253. data/test/mocks/themes/CamelCaseDirectory/about.markdown +0 -0
  254. data/test/mocks/themes/i-have-special-chars/about.markdown +0 -0
  255. data/test/mocks/themes/typographic/about.markdown +0 -7
  256. data/test/mocks/themes/typographic/images/Thumbs.db +0 -0
  257. data/test/mocks/themes/typographic/images/accept.png +0 -0
  258. data/test/mocks/themes/typographic/images/accept50.png +0 -0
  259. data/test/mocks/themes/typographic/images/bg_body.jpg +0 -0
  260. data/test/mocks/themes/typographic/images/bg_white.png +0 -0
  261. data/test/mocks/themes/typographic/images/bg_wrapper.jpg +0 -0
  262. data/test/mocks/themes/typographic/images/bullet_bottom.png +0 -0
  263. data/test/mocks/themes/typographic/images/bullet_right.png +0 -0
  264. data/test/mocks/themes/typographic/images/email_open.png +0 -0
  265. data/test/mocks/themes/typographic/images/email_open50.png +0 -0
  266. data/test/mocks/themes/typographic/images/meta.png +0 -0
  267. data/test/mocks/themes/typographic/images/page_edit.png +0 -0
  268. data/test/mocks/themes/typographic/images/page_edit50.png +0 -0
  269. data/test/mocks/themes/typographic/images/tag.png +0 -0
  270. data/test/mocks/themes/typographic/images/user.png +0 -0
  271. data/test/mocks/themes/typographic/images/user50.png +0 -0
  272. data/test/mocks/themes/typographic/images/world_link.png +0 -0
  273. data/test/mocks/themes/typographic/images/world_link50.png +0 -0
  274. data/test/mocks/themes/typographic/layouts/default.html.erb +0 -42
  275. data/test/mocks/themes/typographic/preview.png +0 -0
  276. data/test/mocks/themes/typographic/stylesheets/colors.css +0 -51
  277. data/test/mocks/themes/typographic/stylesheets/layout.css +0 -346
  278. data/test/mocks/themes/typographic/stylesheets/reset.css +0 -5
  279. data/test/mocks/themes/typographic/stylesheets/style.css +0 -36
  280. data/test/mocks/themes/typographic/views/articles/_article.html.erb +0 -41
  281. data/test/mocks/themes/typographic/views/articles/_comment.html.erb +0 -14
  282. data/test/mocks/themes/typographic/views/articles/_comment_form.html.erb +0 -48
  283. data/test/mocks/themes/typographic/views/articles/_comment_list.html.erb +0 -7
  284. data/test/mocks/themes/typographic/views/articles/_trackback.html.erb +0 -9
  285. data/test/mocks/themes/typographic/views/articles/comment_preview.html.erb +0 -10
  286. data/test/mocks/themes/typographic/views/articles/index.html.erb +0 -5
  287. data/test/mocks/themes/typographic/views/articles/read.html.erb +0 -42
  288. data/test/mocks/themes/typographic/views/shared/_search.html.erb +0 -17
  289. data/test/mocks/themes/typographic/views/theme/static_view_test.html.erb +0 -1
  290. data/test/test_helper.rb +0 -13
  291. data/themes/true-blue-3/images/frederic-de-villamil.jpg +0 -0
  292. data/themes/true-blue-3/images/textarea_bg.jpg +0 -0
data/CHANGELOG CHANGED
@@ -1,28 +1,59 @@
1
- After releasing Typo 5.4.3, we realized something we actually knew for a while. If we wanted Typo to spread more, we had to make it prettier, easier to install and easier to use. That may sound obvious, but we were working with a quite old product, having legacy feature we didn't need, but, for some reason, we kept release after release, trying to work around instead of just dumping them. If we wanted to make Typo better, we first had to make it smaller. Dead obvious once again.
2
-
3
- Being the fourth of the Willy Ronis series, that version is the first going towards simplification: less useless feature, simpler, better interface, and lighter memory footprint.
4
-
5
- Typo now comes with a new, easier to use setup that suppresses needed initial configuration. Just provide an email and a blog title, and you're done. This setup is the first stone in refreshing Typo installation process.
6
-
7
- Previous admin refresh was not very satisfying, and we needed to rework it. Instead of trying to play the webdesigners, which none of us is, we used Jquery UI for the graphic part, and focused on Typo interface instead. The result is, for now, quite satisfying, even though we know we still can improve it.
8
-
9
- IPs and pattern blacklist has been completely removed. With Akismet and real time blacklist (RBL), Typo already provided 2 simple ways to fight against spam. Blacklisting IPs and patterns was a very advanced feature, which is definitely not a blogware job. If people want to do that type of filtering, they have many way to do it, using intrusion detection systems (IDS), Apache mod_security, or even packet filtering such as Linux Netfilter.
10
-
11
- For ages, Typo provided a full iTunes metadata support for podcast publishers. We've completely removed them since it was useless for 99.99% of us. Typo still supports enclosure (files attached to a blog post, appearing in the RSS feed but not on the post itself) though.
12
-
13
- We've also resolved a bunch of bugs as well:
14
-
15
- The main reason why we've released that new version so early was because of a bug in the visual editor, losing posts content at saving time. Editors are very difficult to test since they rely on Javascript. However, we plan to add some Watir tests in a near future.
16
-
17
- #152: fix poor email grammar.
18
-
19
- #148: fixes a bug that prevents admin to edit a user without providing his password.
20
-
21
- #160: 404 error on the lightbox loading.gif and closelabel.gif.
22
-
23
- #155: after deleting an image, the file page is loaded.
24
-
25
- #143: publishing posts in the future didn't work unless you manually unpublishes them.
26
-
27
-
28
-
1
+ Frédéric de Villamil: Makes the editor IE compliant
2
+ Daniel Schweighoefer: fix in the 'create new page' link
3
+ Frédéric de Villamil: Adding specs to password protected posts
4
+ Frédéric de Villamil: Fixes some nasty bugs with password protection. I need to add tests in the views
5
+ Frédéric de Villamil: Upgrading Typo version to 5.5. Cleaning release task since most of the code is not relevant anymore
6
+ Frédéric de Villamil: Workaround to a Rails 2.3.8 bug, see https://rails.lighthouseapp.com/projects/8994/tickets/4695-string-added-to-rails_helpers-gets-html-escaped for more information.
7
+ Frédéric de Villamil: Adds Matijs and Cyril to mainteners list and static sidebars, fixes static sidebar, removes useless doc
8
+ Frédéric de Villamil: Upgrading to Rails 2.3.8. I had to backport some Rails 2.3.5 deprecation and fork actionwebservice to upgrade it to Rails 2.3.8. I think we will definitely use our own version since we may be the latest on earth to use it.
9
+ Frédéric de Villamil: Fixes the destroy link in admin/feedback by moving delete method to destroy (and adding consistency)
10
+ Frédéric de Villamil: Fixes ticket 178 and make specs pass. Ugly fix, but the carousel doesn't work either yet, so I'll fix both of them at the same time.
11
+ Frédéric de Villamil: WTF does this test here? [#177 status:closed]
12
+ Frédéric de Villamil: Reverting an aspect of pssword protected posts: if we don't hide the protected posts to logged in users, the supposely hidden post will be cached...
13
+ Frédéric de Villamil: Adding password protected posts. Things are done 100% AJAX because of the static cache. Logged in users are considered as being able to see a protected post. Protected posts content is removed from RSS feed. Need to add some specs, it's curious to see that they didn't break
14
+ Frédéric de Villamil: fix specs
15
+ Frédéric de Villamil: Adding image browsing to static pages as well
16
+ Frédéric de Villamil: Hides the image carousel in visual editor mode since we now have a dedicated browser in visual mode
17
+ Frédéric de Villamil: Fixinx the logout link style in the admin
18
+ Frédéric de Villamil: Solves ticket #175: Lift 255-char tag list limit. Not sure it's the best way to do it, don't mind reverting if needed
19
+ Frédéric de Villamil: Adds a restriction on unique email (how come didn't it already exist, [#170,solved]
20
+ Yannick Francois: fix link to 'write a page' problem on dashboard
21
+ Matijs van Zuijlen: Merge branch 'master' of github.com:fdv/typo
22
+ Matijs van Zuijlen: Specify factory_girl version, since versions starting from 1.3.0 don't
23
+ Frédéric de Villamil: Adding htty filemanager patch for CKEditor after tweaking it a bit to work well with Typo
24
+ Frédéric de Villamil: Merge branch 'master' of git@github.com:fdv/typo
25
+ Frédéric de Villamil: Adds new cache rules into .htaccess
26
+ Matijs van Zuijlen: Merge branch 'master' into dont-sweep-for-drafts
27
+ Matijs van Zuijlen: Merge branch 'master' of github.com:fdv/typo
28
+ Szymon 'jeznet' Jeż: Made polish translation more up to date. Much work in the admin area is still to do.
29
+ Szymon 'jeznet' Jeż: Fixed Polish translation of pluralized words (articles, comments etc.).
30
+ Szymon 'jeznet' Jeż: Fixed translation in comments_link and trackbacks_link. It was not working for more than one item.
31
+ Szymon 'jeznet' Jeż: Added 'Live Search' translation and added according german and polish translations.
32
+ Szymon 'jeznet' Jeż: Refactoring of the code from last commit => 'Added setting of I18n.locale when setting Localization.lang'
33
+ Szymon 'jeznet' Jeż: Added setting of I18n.locale when setting Localization.lang
34
+ Szymon 'jeznet' Jeż: Fixed 'leave url/email' translation and added according german and polish translations.
35
+ Szymon 'jeznet' Jeż: Added german translation for "Continue reading" string
36
+ Szymon 'jeznet' Jeż: Added polish translation for "Continue reading" string
37
+ Szymon 'jeznet' Jeż: Fixed: "Read more" link apearing next to "Continue reading". Now only "Continue reading" is used.
38
+ Szymon 'jeznet' Jeż: Fixed will_paginate ussage to use translations.
39
+ Szymon 'jeznet' Jeż: Excluded public/cache/* and NetBeans project dir nbproject from versioning.
40
+ Matijs van Zuijlen: Adjust formatting.
41
+ Matijs van Zuijlen: Make specs pass.
42
+ Diego Elio 'Flameeyes' Pettenò: Fix comparison.
43
+ Diego Elio 'Flameeyes' Pettenò: Don't sweep the cache if we're saving a draft.
44
+ Frédéric de Villamil: Removes the background on fields
45
+ Frédéric de Villamil: Adds link on the comment count and replaces the french button (no one told me about this?) on the comment form
46
+ Matijs van Zuijlen: Adjust spec to reflect changed layout.
47
+ Matijs van Zuijlen: Silence deprecation warning.
48
+ Frédéric de Villamil: Fixes ticket 162 views/admin/tags/edit.html.erb bug
49
+ Frédéric de Villamil: Fixes ticket 166 'Delete all spam' deletes unconfirmed comments
50
+ Frédéric de Villamil: Fixes ticket 167: Trackback help text in wrong place
51
+ Frédéric de Villamil: Oooops seems some code was not taken into my last commit
52
+ Frédéric de Villamil: Adding a basic way to dynamically load user mades plugins into
53
+ Frédéric de Villamil: Fixes a mistake in Apache caching doc
54
+ Frédéric de Villamil: Moves cache to public/cache. Ditches database use for cache storing. Please, read doc/CACHE.SETUP.README to setup the new cache system, otherwise Typo now runs smoothly without cache, I've been running it cacheless for months on a fairly crowded blog without even knowing it
55
+ Fabiano Francesconi: Fixed coderay textfilter
56
+ Barney Livingston: Add meta tags to pages.
57
+ Kristopher Murata: Adds rescue for URI::InvalidURIError
58
+ Kristopher Murata: Display links on author pages when item is an url
59
+ Michael Reinsch: switch to gems from rubygems
@@ -1,31 +1,23 @@
1
1
  This is a list of Typo maintainers. If you have a commit bit, please add your
2
2
  name and contact details to the list.
3
3
 
4
- Original Author
5
-
6
- Tobias Luetke <tobi@leetsoft.com>
7
- blog: http://blog.leetsoft.com/
8
- irc: xal
9
-
10
- Peons
11
-
12
- Piers Cawley <pdcawley@bofh.org.uk>
13
- blog: http://www.bofh.org.uk/
14
- irc: pdcawley
4
+ The Cool Kids
15
5
 
16
6
  Frédéric de Villamil <frederic@de-villamil.com>
17
7
  blog: http://fredericdevillamil.com
18
8
  irc: neuro`
19
9
 
20
- Davide D'Agostino <d.dagostino@lipsiasoft.com>
21
- blog: http://www.lipsiasoft.com
22
- irc: DAddYE
10
+ Matijs van Zuijlen
11
+ blog: http://www.matijs.net/blog/
12
+ irc: matijs
23
13
 
24
14
  Cyril Mougel <cyril.mougel@gmail.com>
25
15
  blog: http://blog.shingara.fr
26
16
  irc: shingara
27
17
 
28
- Mascot
29
18
 
30
- Sprewell
31
- irc: sprewell
19
+ Original Author
20
+
21
+ Tobias Luetke <tobi@leetsoft.com>
22
+ blog: http://blog.leetsoft.com/
23
+ irc: xal
data/README CHANGED
@@ -1,19 +1,38 @@
1
- What is it?
2
- ===========
1
+ About Typo 5.5
2
+ ==============
3
+
4
+ On July 22th, 2010, Typo version 5.5 named for famous photographer Richard Avedon was released to the public. Typo 5.5 is the result of the work of the Typo community, just like you, on adding or suggesting feature, reporting and fixing bugs.
5
+
6
+ With its new admin and setup, Typo 5.4.4 was supposed to be the latest minor version running on Ruby on Rails 2.3, and we spent a few months exploring 2 new ways.
7
+
8
+ The first one was being able to upgrade to Ruby on Rails 3.0 as soon as it would be released as production ready. Despite porting our own code without problems, we promptly discovered that too many plugins needed to be ported to Rails 3.0 before we could release.
9
+
10
+ The second one was making Typo multiblog aware. Despite some interesting results, making it production ready was not the work of a single release. Our architecture is definitely mono blog oriented, and making it multi blog would force us to rewrite most of the code.
11
+
12
+ So, we decided to make one more release on Ruby on Rails 2.3, upgrading to Rails 2.3.8. This release is Typo 5.5. It comes with a few new feature, bug fixes, and internal improvements.
13
+
14
+ == Highlights:
15
+
16
+ Typo now runs on Ruby on Rails 2.3.8, which means it won't run with an older Rails version.
17
+
18
+ Typo visual editor had no way to upload, browse, and use images. Thanks to htty, we now have a very nice resource browser CKEditor compliant.
19
+
20
+ As I wrote on Typo Weblog (http://res.to/aQz6), we've added a way to display users plugins setup into Typo admin. This is a first step on the way to a real plugin API.
21
+
22
+ Typo now comes with a new cache system, way simpler than the database based cache we used to do. Files are stored into public/cache and Typo knows how to served cached file. You may need to update your configuration, please read doc/CACHE.SETUP.README
23
+
24
+ For more information on Typo 5.5, please read the CHANGELOG file.
25
+
26
+ As usual, we want to thank the Typo community, and in particular, by reverse commit order: Daniel Schweighoefer, htty, Yannick Francois,Szymon 'jeznet' Jeż, Diego Elio 'Flameeyes' Pettenò, Kristopher Murata and Michael Reinsch.
3
27
 
4
- Typo is a weblog system written in Ruby using Ruby on Rails. Weblogs are cool,
5
- weblogs are "in" and everyone who writes code has a different opinion on how
6
- a weblog should be written. Typo is our take on it. Typo is designed to be
7
- usable by programmers and non-programmers, while being easy for programmers to
8
- extend.
9
28
 
10
29
  Requirements
11
30
  ============
12
31
 
13
32
  Currently you need all of those things to get typo to run:
14
33
 
15
- * Ruby 1.8.6, 1.8.7 or Ruby Enterprise Edition.
16
- * Rails 2.3.5, Typo 5.4.4 DOES NOT support any older Rails version.
34
+ * Ruby 1.8.7 or Ruby Enterprise Edition.
35
+ * Rails 2.3.8, Typo 5.5 DOES NOT support any older Rails version.
17
36
  * A database. Typo supports MySQL, PostgreSQL, and SQLite.
18
37
  * Ruby drivers for your database.
19
38
  * For best performance, you should have a web server running either
@@ -23,11 +42,6 @@ Currently you need all of those things to get typo to run:
23
42
  easy deployment along with speed.
24
43
  * rspec, rcov and ruby-debug are necessary to run the test suit.
25
44
 
26
- Installation
27
- ============
28
-
29
- See doc/Installer.txt and doc/typo-5.3-release-notes.txt.
30
-
31
45
  Usage
32
46
  ======
33
47
 
@@ -38,12 +52,6 @@ either use this administrative web interface or a desktop blog editor
38
52
  like MarsEdit or Ecto. For a short list of clients which are confirmed
39
53
  to work please visit http://typosphere.org/wiki/DesktopClients.
40
54
 
41
- Client setup
42
- ============
43
-
44
- Set your desktop client to Movable Type API and enter
45
- http://your.domain.com/backend/xmlrpc as endpoint address.
46
-
47
55
  Enjoy,
48
56
  Your typo team
49
57
 
data/UPGRADE CHANGED
@@ -1,4 +1,4 @@
1
- UPGRADING TO TYPO 5.3 HOWTO
1
+ UPGRADING TO TYPO 5.5 HOWTO
2
2
 
3
3
  *** BEFORE UPGRADING ***
4
4
 
@@ -8,7 +8,7 @@ You should make a backup of your current blog, either using a file transfer soft
8
8
 
9
9
  You should make a backup of your database, using either mysqldump, pgdump or phpmyadmin, whichever you feel safe with.
10
10
 
11
- If you're using a pre 5.0 version, you should remove all the following sidebars before migrating:
11
+ If you're upgrading from a pre 5.0 version, you should remove all the following sidebars before migrating:
12
12
 
13
13
  * AIM presence
14
14
  * Audioscrobbler
@@ -33,6 +33,10 @@ If you're using a third party theme, you'll have do some changes to your templat
33
33
 
34
34
  Upgrading should be a really easy process, depending on how you installed your typo first.
35
35
 
36
+ I assume you're running typo on a production environment, so firt run:
37
+
38
+ $ export RAILS_ENV=production
39
+
36
40
  ** UPGRADING WITH TYPO INSTALLER FROM TYPO 2.0 to 5.0 **
37
41
 
38
42
  Automagically upgrading Typo 2.0 to 5.0 using Typo instaler is not possible, but you can catch on the train anyway, it will just be a little harder. By default Typo uses MySQL database. If you want to use something else, check our installation documentation.
@@ -23,7 +23,7 @@ class AccountsController < ApplicationController
23
23
  cookies[:auth_token] = {
24
24
  :value => self.current_user.remember_token,
25
25
  :expires => self.current_user.remember_token_expires_at,
26
- :http_only => true # Help prevent auth_token theft.
26
+ :httponly => true # Help prevent auth_token theft.
27
27
  }
28
28
  end
29
29
  add_to_cookies(:typo_user_profile, self.current_user.profile.label, '/')
@@ -28,7 +28,6 @@ class Admin::ContentController < Admin::BaseController
28
28
 
29
29
  def edit
30
30
  @article = Article.find(params[:id])
31
-
32
31
  unless @article.access_by? current_user
33
32
  redirect_to :action => 'index'
34
33
  flash[:error] = _("Error, you are not allowed to perform this action")
@@ -148,6 +147,7 @@ class Admin::ContentController < Admin::BaseController
148
147
 
149
148
  @resources = Resource.find(:all, :conditions => "mime NOT LIKE '%image%'", :order => 'filename')
150
149
  @images = Resource.paginate :page => params[:page], :conditions => "mime LIKE '%image%'", :order => 'created_at DESC', :per_page => 10
150
+ @article.keywords = @article.tags.map { |tag| tag.display_name }.sort.join(", ")
151
151
  @article.attributes = params[:article]
152
152
 
153
153
  if request.post?
@@ -1,7 +1,7 @@
1
1
  class Admin::FeedbackController < Admin::BaseController
2
2
 
3
3
  cache_sweeper :blog_sweeper
4
- before_filter :only_own_feedback, :only => [:delete]
4
+ before_filter :only_own_feedback, :only => [:destroy]
5
5
 
6
6
  def index
7
7
  conditions = ['1 = 1', {}]
@@ -45,7 +45,7 @@ class Admin::FeedbackController < Admin::BaseController
45
45
  @comments ||= @article.comments
46
46
  end
47
47
 
48
- def delete
48
+ def destroy
49
49
  if request.post?
50
50
  begin
51
51
  @feedback.destroy
@@ -143,7 +143,7 @@ class Admin::FeedbackController < Admin::BaseController
143
143
 
144
144
  def delete_all_spam
145
145
  if request.post?
146
- Feedback.delete_all(['state in (?,?)', 'presumed_spam', 'spam'])
146
+ Feedback.delete_all(['state = ?', 'spam'])
147
147
  flash[:notice] = _("All spam have been deleted")
148
148
  end
149
149
  end
@@ -34,6 +34,7 @@ class Admin::PagesController < Admin::BaseController
34
34
  @page = Page.new(params[:page])
35
35
  @page.user_id = current_user.id
36
36
  @page.text_filter ||= current_user.text_filter
37
+ @images = Resource.paginate :page => 1, :conditions => "mime LIKE '%image%'", :order => 'created_at DESC', :per_page => 10
37
38
  if request.post?
38
39
  if @page.name.blank?
39
40
  @page.name = @page.title.tr(FROM, TO).gsub(/<[^>]*>/, '').to_url
@@ -48,6 +49,7 @@ class Admin::PagesController < Admin::BaseController
48
49
 
49
50
  def edit
50
51
  @macros = TextFilter.available_filters.select { |filter| TextFilterPlugin::Macro > filter }
52
+ @images = Resource.paginate :page => 1, :conditions => "mime LIKE '%image%'", :order => 'created_at DESC', :per_page => 10
51
53
  @page = Page.find(params[:id])
52
54
  @page.attributes = params[:page]
53
55
  if request.post? and @page.save
@@ -19,7 +19,6 @@ class ApplicationController < ActionController::Base
19
19
  def cache_page_with_log_page(content, path)
20
20
  return unless perform_caching
21
21
  cache_page_without_log_page(content, path)
22
- CacheInformation.create(:path => page_cache_file(path))
23
22
  end
24
23
  alias_method_chain :cache_page, :log_page
25
24
  end
@@ -42,6 +41,12 @@ class ApplicationController < ActionController::Base
42
41
 
43
42
  def load_lang
44
43
  Localization.lang = this_blog.lang
44
+ # Check if for example "en_UK" locale exesists if not check for "en" locale
45
+ if I18n.available_locales.include?(this_blog.lang.to_sym)
46
+ I18n.locale = this_blog.lang
47
+ elsif I18n.available_locales.include?(this_blog.lang[0..1].to_sym)
48
+ I18n.locale = this_blog.lang[0..1]
49
+ end
45
50
  # _("Localization.rtl")
46
51
  end
47
52
 
@@ -63,7 +63,17 @@ class ArticlesController < ContentController
63
63
  @article = Article.last_draft(params[:id])
64
64
  render :action => 'read'
65
65
  end
66
-
66
+
67
+ def check_password
68
+ return unless request.xhr?
69
+ @article = Article.find(params[:article][:id])
70
+ if @article.password == params[:article][:password]
71
+ render :partial => 'articles/article_content'
72
+ else
73
+ render :partial => 'articles/password_form', :locals => { :article => @article }
74
+ end
75
+ end
76
+
67
77
  def redirect
68
78
  part = this_blog.permalink_format.split('/')
69
79
  part.delete('') # delete all par of / where no data. Avoid all // or / started
@@ -175,6 +185,8 @@ class ArticlesController < ContentController
175
185
  def view_page
176
186
  if(@page = Page.find_by_name(params[:name].map { |c| c }.join("/"))) && @page.published?
177
187
  @page_title = @page.title
188
+ @description = (this_blog.meta_description.empty?) ? "" : this_blog.meta_description
189
+ @keywords = (this_blog.meta_keywords.empty?) ? "" : this_blog.meta_keywords
178
190
  else
179
191
  render :nothing => true, :status => 404
180
192
  end
@@ -24,11 +24,14 @@ module ApplicationHelper
24
24
 
25
25
  # The '5 comments' link from the bottom of articles
26
26
  def comments_link(article)
27
- link_to_permalink(article,pluralize(article.published_comments.size, _('no comments') , _('1 comment'), __('%d comments')),'comments')
27
+ comment_count = article.published_comments.size
28
+ # FIXME Why using own pluralize metchod when the Localize._ provides the same funciotnality, but better? (by simply calling _('%d comments', comment_count) and using the en translation: l.store "%d comments", ["No nomments", "1 comment", "%d comments"])
29
+ link_to_permalink(article,pluralize(comment_count, _('no comments'), _('1 comment'), _('%d comments', comment_count)),'comments')
28
30
  end
29
31
 
30
32
  def trackbacks_link(article)
31
- link_to_permalink(article,pluralize(article.published_trackbacks.size, _('no trackbacks') , _('1 trackback'), __('%d trackbacks')),'trackbacks')
33
+ trackbacks_count = article.published_trackbacks.size
34
+ link_to_permalink(article,pluralize(trackbacks_count, _('no trackbacks'), _('1 trackback'), _('%d trackbacks',trackbacks_count)),'trackbacks')
32
35
  end
33
36
 
34
37
  def check_cache(aggregator, *args)
@@ -1,8 +1,19 @@
1
1
  module AuthorsHelper
2
2
 
3
3
  def display_profile_item(item, show_item, item_desc)
4
- content_tag :li do
5
- "#{item_desc} #{item}"
6
- end if show_item
4
+ if show_item
5
+ item = link_to(item, item) if is_url?(item)
6
+ content_tag :li do
7
+ "#{item_desc} #{item}"
8
+ end
9
+ end
10
+ end
11
+
12
+ def is_url?(str)
13
+ begin
14
+ [URI::HTTP, URI::HTTPS].include?(URI.parse(str.to_s).class)
15
+ rescue URI::InvalidURIError
16
+ false
17
+ end
7
18
  end
8
19
  end
@@ -44,7 +44,7 @@ class Article < Content
44
44
  :select => 'categories.*', \
45
45
  :uniq => true, \
46
46
  :order => 'categorizations.is_primary DESC'
47
-
47
+
48
48
  has_and_belongs_to_many :tags, :foreign_key => 'article_id'
49
49
 
50
50
  named_scope :category, lambda {|category_id| {:conditions => ['categorizations.category_id = ?', category_id], :include => 'categorizations'}}
@@ -60,8 +60,8 @@ class Article < Content
60
60
 
61
61
  has_many :triggers, :as => :pending_item
62
62
  after_save :post_trigger
63
-
64
- attr_accessor :draft
63
+
64
+ attr_accessor :draft, :keywords
65
65
 
66
66
  has_state(:state,
67
67
  :valid_states => [:new, :draft,
@@ -493,7 +493,9 @@ class Article < Content
493
493
  rss_desc = ""
494
494
  end
495
495
 
496
- post = blog.show_extended_on_rss ? post = html(:all) : post = html(:body)
496
+ post = blog.show_extended_on_rss ? post = html(:all) : post = html(:body)
497
+ post = "<p>This article is password protected. Please <a href='#{permalink_url}'>fill in your password</a> to read it</p>" unless password.nil? or password.empty?
498
+
497
499
  content = blog.rss_description ? post + rss_desc : post
498
500
  entry.content(content, :type => "html")
499
501
  end
@@ -65,7 +65,6 @@ class Blog < ActiveRecord::Base
65
65
  setting :send_outbound_pings, :boolean, true
66
66
  setting :email_from, :string, 'typo@example.com'
67
67
  setting :editor, :integer, 'visual'
68
- setting :cache_option, :string, 'caches_page'
69
68
  setting :allow_signup, :integer, 0
70
69
 
71
70
  # SEO
@@ -79,9 +78,6 @@ class Blog < ActiveRecord::Base
79
78
  setting :index_categories, :boolean, true
80
79
  setting :index_tags, :boolean, true
81
80
  setting :admin_display_elements, :integer, 10
82
- #deprecation warning for plugins removal
83
- setting :deprecation_warning, :integer, 1
84
-
85
81
 
86
82
  validate :permalink_has_identifier
87
83
 
@@ -33,7 +33,7 @@ class BlogSweeper < ActionController::Caching::Sweeper
33
33
  end
34
34
 
35
35
  def after_save(record)
36
- expire_for(record)
36
+ expire_for(record) unless (record.is_a?(Article) and record.state == :draft)
37
37
  end
38
38
 
39
39
  def after_destroy(record)
@@ -56,16 +56,19 @@ class Content < ActiveRecord::Base
56
56
  attr_accessor :just_changed_published_status
57
57
  alias_method :just_changed_published_status?, :just_changed_published_status
58
58
 
59
+ after_save :invalidates_cache?
60
+ after_destroy lambda { |c| c.invalidates_cache?(true) }
61
+
59
62
  include Stateful
60
63
 
61
64
  @@content_fields = Hash.new
62
65
  @@html_map = Hash.new
63
66
 
64
67
  def invalidates_cache?(on_destruction = false)
65
- if on_destruction
68
+ @invalidates_cache ||= if on_destruction
66
69
  just_changed_published_status? || published?
67
70
  else
68
- changed? && published? || just_changed_published_status?
71
+ (changed? && published?) || just_changed_published_status?
69
72
  end
70
73
  end
71
74
 
@@ -168,7 +171,7 @@ class Content < ActiveRecord::Base
168
171
  search_hash = {}
169
172
  end
170
173
 
171
- if search_hash[:searchstring]
174
+ if search_hash[:searchstring]
172
175
  list_function << 'searchstring(search_hash[:searchstring])' unless search_hash[:searchstring].to_s.empty?
173
176
  end
174
177
 
@@ -180,11 +183,11 @@ class Content < ActiveRecord::Base
180
183
  list_function << 'user_id(search_hash[:user_id])'
181
184
  end
182
185
 
183
- if search_hash[:published]
186
+ if search_hash[:published]
184
187
  list_function << 'published' if search_hash[:published].to_s == '1'
185
188
  list_function << 'not_published' if search_hash[:published].to_s == '0'
186
189
  end
187
-
190
+
188
191
  list_function
189
192
  end
190
193
  end
@@ -328,6 +331,8 @@ class Content < ActiveRecord::Base
328
331
 
329
332
  def rss_description(xml)
330
333
  post = html(blog.show_extended_on_rss ? :all : :body)
334
+ post = "<p>This article is password protected. Please <a href='#{permalink_url}'>fill in your password</a> to read it</p>" unless self.class.name == 'Article' and (self.password.nil? or self.password.empty?)
335
+
331
336
  if blog.rss_description
332
337
  if respond_to?(:user) && self.user && self.user.name
333
338
  rss_desc = "<hr /><p><small>#{_('Original article writen by')} #{self.user.name} #{_('and published on')} <a href='#{blog.base_url}'>#{blog.blog_name}</a> | <a href='#{self.permalink_url}'>#{_('direct link to this article')}</a> | #{_('If you are reading this article elsewhere than')} <a href='#{blog.base_url}'>#{blog.blog_name}</a>, #{_('it has been illegally reproduced and without proper authorization')}.</small></p>"