typo 4.1 → 4.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (251) hide show
  1. data/Rakefile +1 -1
  2. data/TODO-4.2 +14 -0
  3. data/TODO.MULTIUSERS +45 -0
  4. data/app/controllers/admin/base_controller.rb +18 -0
  5. data/app/controllers/admin/general_controller.rb +14 -0
  6. data/app/controllers/application.rb +2 -1
  7. data/app/controllers/articles_controller.rb +18 -21
  8. data/app/helpers/admin/base_helper.rb +4 -4
  9. data/app/helpers/admin/feedback_helper.rb +3 -3
  10. data/app/helpers/application_helper.rb +2 -6
  11. data/app/helpers/sidebar_helper.rb +2 -2
  12. data/app/models/blog.rb +9 -1
  13. data/app/models/category.rb +9 -9
  14. data/app/models/comment.rb +1 -1
  15. data/app/models/content_state/presumed_ham.rb +2 -2
  16. data/app/models/resource.rb +2 -0
  17. data/app/views/admin/categories/_categories.rhtml +10 -6
  18. data/app/views/admin/categories/edit.rhtml +3 -1
  19. data/app/views/admin/comments/_form.rhtml +3 -3
  20. data/app/views/admin/comments/list.rhtml +7 -5
  21. data/app/views/admin/comments/new.rhtml +3 -1
  22. data/app/views/admin/comments/show.rhtml +3 -1
  23. data/app/views/admin/content/_articles.rhtml +1 -1
  24. data/app/views/admin/content/_form.rhtml +4 -2
  25. data/app/views/admin/content/new.rhtml +1 -0
  26. data/app/views/admin/content/preview.rhtml +8 -8
  27. data/app/views/admin/feedback/_item.rhtml +3 -1
  28. data/app/views/admin/feedback/list.rhtml +4 -4
  29. data/app/views/admin/general/index.rhtml +14 -1
  30. data/app/views/admin/pages/_form.rhtml +1 -1
  31. data/app/views/admin/pages/destroy.rhtml +1 -1
  32. data/app/views/admin/pages/new.rhtml +1 -0
  33. data/app/views/admin/shared/_edit.rhtml +2 -2
  34. data/app/views/layouts/administration.rhtml +5 -2
  35. data/app/views/layouts/minimal.rhtml +134 -2
  36. data/config/boot.rb +1 -1
  37. data/config/environment.rb +11 -3
  38. data/config/environments/test.rb +0 -7
  39. data/config/routes.rb +3 -0
  40. data/db/migrate/004_add_sidebars.rb +21 -3
  41. data/db/migrate/056_create_notifications.rb +1 -1
  42. data/db/migrate/062_add_sitealizer_plugin.rb +18 -0
  43. data/db/schema.mysql-v3.sql +217 -0
  44. data/db/schema.mysql.sql +31 -5
  45. data/db/schema.postgresql.sql +31 -6
  46. data/db/schema.rb +17 -7
  47. data/db/schema.sqlite.sql +31 -6
  48. data/db/schema.sqlserver.sql +32 -6
  49. data/db/schema_version +1 -1
  50. data/lang/de_DE.rb +493 -0
  51. data/lang/fr_FR.rb +28 -4
  52. data/lang/ro_RO.rb +554 -0
  53. data/lib/tasks/release.rake +7 -7
  54. data/lib/typo_version.rb +1 -1
  55. data/public/images/sitealizer/bar.gif +0 -0
  56. data/public/images/sitealizer/uv.png +0 -0
  57. data/public/images/sitealizer/vh.png +0 -0
  58. data/public/javascripts/tiny_mce/blank.htm +9 -0
  59. data/public/javascripts/tiny_mce/langs/en.js +41 -0
  60. data/public/javascripts/tiny_mce/license.txt +504 -0
  61. data/public/javascripts/tiny_mce/themes/advanced/about.htm +52 -0
  62. data/public/javascripts/tiny_mce/themes/advanced/anchor.htm +33 -0
  63. data/public/javascripts/tiny_mce/themes/advanced/charmap.htm +53 -0
  64. data/public/javascripts/tiny_mce/themes/advanced/color_picker.htm +13 -0
  65. data/public/javascripts/tiny_mce/themes/advanced/css/editor_content.css +58 -0
  66. data/public/javascripts/tiny_mce/themes/advanced/css/editor_popup.css +331 -0
  67. data/public/javascripts/tiny_mce/themes/advanced/css/editor_ui.css +97 -0
  68. data/public/javascripts/tiny_mce/themes/advanced/docs/en/about.htm +31 -0
  69. data/public/javascripts/tiny_mce/themes/advanced/docs/en/common_buttons.htm +162 -0
  70. data/public/javascripts/tiny_mce/themes/advanced/docs/en/create_accessible_content.htm +45 -0
  71. data/public/javascripts/tiny_mce/themes/advanced/docs/en/images/insert_anchor_window.gif +0 -0
  72. data/public/javascripts/tiny_mce/themes/advanced/docs/en/images/insert_image_window.gif +0 -0
  73. data/public/javascripts/tiny_mce/themes/advanced/docs/en/images/insert_link_window.gif +0 -0
  74. data/public/javascripts/tiny_mce/themes/advanced/docs/en/images/insert_table_window.gif +0 -0
  75. data/public/javascripts/tiny_mce/themes/advanced/docs/en/index.htm +27 -0
  76. data/public/javascripts/tiny_mce/themes/advanced/docs/en/insert_anchor_button.htm +32 -0
  77. data/public/javascripts/tiny_mce/themes/advanced/docs/en/insert_image_button.htm +65 -0
  78. data/public/javascripts/tiny_mce/themes/advanced/docs/en/insert_link_button.htm +33 -0
  79. data/public/javascripts/tiny_mce/themes/advanced/docs/en/insert_table_button.htm +71 -0
  80. data/public/javascripts/tiny_mce/themes/advanced/docs/en/style.css +28 -0
  81. data/public/javascripts/tiny_mce/themes/advanced/editor_template.js +1 -0
  82. data/public/javascripts/tiny_mce/themes/advanced/editor_template_src.js +1534 -0
  83. data/public/javascripts/tiny_mce/themes/advanced/image.htm +100 -0
  84. data/public/javascripts/tiny_mce/themes/advanced/images/anchor.gif +0 -0
  85. data/public/javascripts/tiny_mce/themes/advanced/images/anchor_symbol.gif +0 -0
  86. data/public/javascripts/tiny_mce/themes/advanced/images/backcolor.gif +0 -0
  87. data/public/javascripts/tiny_mce/themes/advanced/images/bold.gif +0 -0
  88. data/public/javascripts/tiny_mce/themes/advanced/images/bold_de_se.gif +0 -0
  89. data/public/javascripts/tiny_mce/themes/advanced/images/bold_es.gif +0 -0
  90. data/public/javascripts/tiny_mce/themes/advanced/images/bold_fr.gif +0 -0
  91. data/public/javascripts/tiny_mce/themes/advanced/images/bold_ru.gif +0 -0
  92. data/public/javascripts/tiny_mce/themes/advanced/images/bold_tw.gif +0 -0
  93. data/public/javascripts/tiny_mce/themes/advanced/images/browse.gif +0 -0
  94. data/public/javascripts/tiny_mce/themes/advanced/images/bullist.gif +0 -0
  95. data/public/javascripts/tiny_mce/themes/advanced/images/button_menu.gif +0 -0
  96. data/public/javascripts/tiny_mce/themes/advanced/images/buttons.gif +0 -0
  97. data/public/javascripts/tiny_mce/themes/advanced/images/cancel_button_bg.gif +0 -0
  98. data/public/javascripts/tiny_mce/themes/advanced/images/charmap.gif +0 -0
  99. data/public/javascripts/tiny_mce/themes/advanced/images/cleanup.gif +0 -0
  100. data/public/javascripts/tiny_mce/themes/advanced/images/close.gif +0 -0
  101. data/public/javascripts/tiny_mce/themes/advanced/images/code.gif +0 -0
  102. data/public/javascripts/tiny_mce/themes/advanced/images/color.gif +0 -0
  103. data/public/javascripts/tiny_mce/themes/advanced/images/copy.gif +0 -0
  104. data/public/javascripts/tiny_mce/themes/advanced/images/custom_1.gif +0 -0
  105. data/public/javascripts/tiny_mce/themes/advanced/images/cut.gif +0 -0
  106. data/public/javascripts/tiny_mce/themes/advanced/images/forecolor.gif +0 -0
  107. data/public/javascripts/tiny_mce/themes/advanced/images/help.gif +0 -0
  108. data/public/javascripts/tiny_mce/themes/advanced/images/hr.gif +0 -0
  109. data/public/javascripts/tiny_mce/themes/advanced/images/image.gif +0 -0
  110. data/public/javascripts/tiny_mce/themes/advanced/images/indent.gif +0 -0
  111. data/public/javascripts/tiny_mce/themes/advanced/images/insert_button_bg.gif +0 -0
  112. data/public/javascripts/tiny_mce/themes/advanced/images/italic.gif +0 -0
  113. data/public/javascripts/tiny_mce/themes/advanced/images/italic_de_se.gif +0 -0
  114. data/public/javascripts/tiny_mce/themes/advanced/images/italic_es.gif +0 -0
  115. data/public/javascripts/tiny_mce/themes/advanced/images/italic_ru.gif +0 -0
  116. data/public/javascripts/tiny_mce/themes/advanced/images/italic_tw.gif +0 -0
  117. data/public/javascripts/tiny_mce/themes/advanced/images/justifycenter.gif +0 -0
  118. data/public/javascripts/tiny_mce/themes/advanced/images/justifyfull.gif +0 -0
  119. data/public/javascripts/tiny_mce/themes/advanced/images/justifyleft.gif +0 -0
  120. data/public/javascripts/tiny_mce/themes/advanced/images/justifyright.gif +0 -0
  121. data/public/javascripts/tiny_mce/themes/advanced/images/link.gif +0 -0
  122. data/public/javascripts/tiny_mce/themes/advanced/images/menu_check.gif +0 -0
  123. data/public/javascripts/tiny_mce/themes/advanced/images/newdocument.gif +0 -0
  124. data/public/javascripts/tiny_mce/themes/advanced/images/numlist.gif +0 -0
  125. data/public/javascripts/tiny_mce/themes/advanced/images/opacity.png +0 -0
  126. data/public/javascripts/tiny_mce/themes/advanced/images/outdent.gif +0 -0
  127. data/public/javascripts/tiny_mce/themes/advanced/images/paste.gif +0 -0
  128. data/public/javascripts/tiny_mce/themes/advanced/images/redo.gif +0 -0
  129. data/public/javascripts/tiny_mce/themes/advanced/images/removeformat.gif +0 -0
  130. data/public/javascripts/tiny_mce/themes/advanced/images/separator.gif +0 -0
  131. data/public/javascripts/tiny_mce/themes/advanced/images/spacer.gif +0 -0
  132. data/public/javascripts/tiny_mce/themes/advanced/images/statusbar_resize.gif +0 -0
  133. data/public/javascripts/tiny_mce/themes/advanced/images/strikethrough.gif +0 -0
  134. data/public/javascripts/tiny_mce/themes/advanced/images/sub.gif +0 -0
  135. data/public/javascripts/tiny_mce/themes/advanced/images/sup.gif +0 -0
  136. data/public/javascripts/tiny_mce/themes/advanced/images/underline.gif +0 -0
  137. data/public/javascripts/tiny_mce/themes/advanced/images/underline_es.gif +0 -0
  138. data/public/javascripts/tiny_mce/themes/advanced/images/underline_fr.gif +0 -0
  139. data/public/javascripts/tiny_mce/themes/advanced/images/underline_ru.gif +0 -0
  140. data/public/javascripts/tiny_mce/themes/advanced/images/underline_tw.gif +0 -0
  141. data/public/javascripts/tiny_mce/themes/advanced/images/undo.gif +0 -0
  142. data/public/javascripts/tiny_mce/themes/advanced/images/unlink.gif +0 -0
  143. data/public/javascripts/tiny_mce/themes/advanced/images/visualaid.gif +0 -0
  144. data/public/javascripts/tiny_mce/themes/advanced/images/xp/tab_bg.gif +0 -0
  145. data/public/javascripts/tiny_mce/themes/advanced/images/xp/tab_end.gif +0 -0
  146. data/public/javascripts/tiny_mce/themes/advanced/images/xp/tab_sel_bg.gif +0 -0
  147. data/public/javascripts/tiny_mce/themes/advanced/images/xp/tab_sel_end.gif +0 -0
  148. data/public/javascripts/tiny_mce/themes/advanced/images/xp/tabs_bg.gif +0 -0
  149. data/public/javascripts/tiny_mce/themes/advanced/jscripts/about.js +75 -0
  150. data/public/javascripts/tiny_mce/themes/advanced/jscripts/anchor.js +74 -0
  151. data/public/javascripts/tiny_mce/themes/advanced/jscripts/charmap.js +326 -0
  152. data/public/javascripts/tiny_mce/themes/advanced/jscripts/color_picker.js +108 -0
  153. data/public/javascripts/tiny_mce/themes/advanced/jscripts/image.js +81 -0
  154. data/public/javascripts/tiny_mce/themes/advanced/jscripts/link.js +70 -0
  155. data/public/javascripts/tiny_mce/themes/advanced/jscripts/source_editor.js +60 -0
  156. data/public/javascripts/tiny_mce/themes/advanced/langs/en.js +82 -0
  157. data/public/javascripts/tiny_mce/themes/advanced/link.htm +100 -0
  158. data/public/javascripts/tiny_mce/themes/advanced/source_editor.htm +32 -0
  159. data/public/javascripts/tiny_mce/tiny_mce.js +1 -0
  160. data/public/javascripts/tiny_mce/tiny_mce_popup.js +288 -0
  161. data/public/javascripts/tiny_mce/tiny_mce_src.js +7284 -0
  162. data/public/javascripts/tiny_mce/utils/editable_selects.js +61 -0
  163. data/public/javascripts/tiny_mce/utils/form_utils.js +210 -0
  164. data/public/javascripts/tiny_mce/utils/mclayer.js +210 -0
  165. data/public/javascripts/tiny_mce/utils/mctabs.js +74 -0
  166. data/public/javascripts/tiny_mce/utils/validate.js +219 -0
  167. data/public/stylesheets/administration.css +5 -1
  168. data/public/stylesheets/minimal.css +1 -0
  169. data/test/functional/admin/categories_controller_test.rb +2 -2
  170. data/test/functional/xml_controller_test.rb +72 -40
  171. data/test/test_helper.rb +1 -17
  172. data/test/unit/article_test.rb +1 -1
  173. data/test/unit/trigger_test.rb +1 -1
  174. data/themes/scribbish/views/articles/_comment.rhtml +13 -17
  175. data/themes/scribbish/views/articles/_comment_form.rhtml +7 -5
  176. data/themes/scribbish/views/articles/_comment_list.rhtml +7 -0
  177. data/themes/scribbish/views/articles/read.rhtml +1 -1
  178. data/vendor/plugins/aimpresence_sidebar/views/content.rhtml +1 -1
  179. data/vendor/plugins/archives_sidebar/views/content.rhtml +1 -1
  180. data/vendor/plugins/audioscrobbler_sidebar/MAINTAINERS +26 -0
  181. data/vendor/plugins/audioscrobbler_sidebar/MIT-LICENSE +21 -0
  182. data/vendor/plugins/audioscrobbler_sidebar/README +27 -0
  183. data/vendor/plugins/backpack_sidebar/MAINTAINERS +26 -0
  184. data/vendor/plugins/backpack_sidebar/MIT-LICENSE +21 -0
  185. data/vendor/plugins/backpack_sidebar/README +27 -0
  186. data/vendor/plugins/category_sidebar/views/content.rhtml +1 -1
  187. data/vendor/plugins/sitealizer/CHANGELOG +6 -0
  188. data/vendor/plugins/sitealizer/LICENSE +22 -0
  189. data/vendor/plugins/sitealizer/README +82 -0
  190. data/vendor/plugins/sitealizer/Rakefile +22 -0
  191. data/vendor/plugins/sitealizer/init.rb +24 -0
  192. data/vendor/plugins/sitealizer/install.rb +22 -0
  193. data/vendor/plugins/sitealizer/lib/app/assets/images/bar.gif +0 -0
  194. data/vendor/plugins/sitealizer/lib/app/assets/images/uv.png +0 -0
  195. data/vendor/plugins/sitealizer/lib/app/assets/images/vh.png +0 -0
  196. data/vendor/plugins/sitealizer/lib/app/controllers/sitealizer_controller.rb +118 -0
  197. data/vendor/plugins/sitealizer/lib/app/models/site_tracker.rb +145 -0
  198. data/vendor/plugins/sitealizer/lib/app/views/layouts/sitealizer.rhtml +66 -0
  199. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_browsers.rhtml +23 -0
  200. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_daily_stats.rhtml +67 -0
  201. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_hits_summary.rhtml +0 -0
  202. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_hosts.rhtml +21 -0
  203. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_keywords.rhtml +19 -0
  204. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_languages.rhtml +21 -0
  205. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_main_frame.rhtml +84 -0
  206. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_monthly_hits.rhtml +67 -0
  207. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_page_urls.rhtml +20 -0
  208. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_platforms.rhtml +21 -0
  209. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_referers.rhtml +22 -0
  210. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_robots.rhtml +19 -0
  211. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/_search_engines.rhtml +19 -0
  212. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/hourly_stats.rhtml +39 -0
  213. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/index.rhtml +8 -0
  214. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/login.rhtml +20 -0
  215. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/menu.rhtml +74 -0
  216. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/referrer_stats.rhtml +20 -0
  217. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/search_stats.rhtml +25 -0
  218. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/summary.rhtml +22 -0
  219. data/vendor/plugins/sitealizer/lib/app/views/sitealizer/visitor_info.rhtml +30 -0
  220. data/vendor/plugins/sitealizer/lib/config.yml +18 -0
  221. data/vendor/plugins/sitealizer/lib/sitealizer/parser.rb +347 -0
  222. data/vendor/plugins/sitealizer/lib/sitealizer.rb +78 -0
  223. data/vendor/plugins/sitealizer/lib/tasks/sitealizer.rake +36 -0
  224. data/vendor/plugins/sitealizer/test/fixtures/sitealizer.yml +89 -0
  225. data/vendor/plugins/sitealizer/test/sitealizer_controller_test.rb +208 -0
  226. data/vendor/plugins/sitealizer/test/sitealizer_parser_test.rb +169 -0
  227. data/vendor/plugins/sitealizer/test/test_helper.rb +7 -0
  228. data/vendor/plugins/tada_sidebar/MAINTAINERS +26 -0
  229. data/vendor/plugins/tada_sidebar/MIT-LICENSE +21 -0
  230. data/vendor/plugins/tada_sidebar/README +27 -0
  231. data/vendor/plugins/tag_sidebar/views/content.rhtml +1 -1
  232. data/vendor/plugins/tiny_mce/README +10 -0
  233. data/vendor/plugins/tiny_mce/Rakefile +22 -0
  234. data/vendor/plugins/tiny_mce/TODO +2 -0
  235. data/vendor/plugins/tiny_mce/changelog +1017 -0
  236. data/vendor/plugins/tiny_mce/init.rb +3 -0
  237. data/vendor/plugins/tiny_mce/install.rb +1 -0
  238. data/vendor/plugins/tiny_mce/lib/tiny_mce.rb +36 -0
  239. data/vendor/plugins/tiny_mce/lib/tiny_mce_helper.rb +48 -0
  240. data/vendor/plugins/tiny_mce/tasks/tiny_mce.rake +40 -0
  241. data/vendor/plugins/tiny_mce/test/helper_testcase.rb +38 -0
  242. data/vendor/plugins/tiny_mce/test/tiny_mce_helper_test.rb +67 -0
  243. data/vendor/plugins/tiny_mce/test/tiny_mce_test.rb +85 -0
  244. data/vendor/plugins/tiny_mce/tiny_mce_options.yml +121 -0
  245. data/vendor/plugins/xbox_sidebar/MAINTAINERS +26 -0
  246. data/vendor/plugins/xbox_sidebar/MIT-LICENSE +21 -0
  247. data/vendor/plugins/xbox_sidebar/README +27 -0
  248. data/vendor/plugins/xml_sidebar/lib/xml_sidebar.rb +1 -1
  249. data/vendor/plugins/xml_sidebar/views/content.rhtml +4 -4
  250. metadata +220 -4
  251. data/TODO-4.1 +0 -16
@@ -0,0 +1,208 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class SitealizerController
4
+ def rescue_action(e) raise e end
5
+ SA_CONFIG = {'sitealizer' => {'username' => 'test', 'password' => 'test', 'access_type' => 'public'}}
6
+ end
7
+
8
+ class SitealizerControllerTest < Test::Unit::TestCase
9
+ set_fixture_class :sitealizer => 'SiteTracker'
10
+ fixtures :sitealizer
11
+
12
+ def setup
13
+ @controller = SitealizerController.new
14
+ @request = ActionController::TestRequest.new
15
+ @response = ActionController::TestResponse.new
16
+ end
17
+
18
+ def test_login
19
+ get :login
20
+ assert_template 'login'
21
+
22
+ post :login, :username => 'test', :password => 'test'
23
+ assert_response :redirect
24
+ assert_redirected_to :action => 'index'
25
+ assert_not_nil @response.cookies["sitealizer"][0]
26
+ end
27
+
28
+ def test_login_fails
29
+ post :login, :username => 'me', :password => 'me'
30
+ assert_not_nil flash[:notice]
31
+ assert_template 'login'
32
+ end
33
+
34
+ def test_logout
35
+ get :logout
36
+ assert @response.cookies["sitealizer"].empty?
37
+ assert_response :redirect
38
+ assert_redirected_to :action => 'login'
39
+ end
40
+
41
+ def test_index
42
+ get :index
43
+ assert_template 'index'
44
+ get :index, :year => '2006', :month => '03'
45
+ assert_template 'index'
46
+ end
47
+
48
+ def test_menu
49
+ get :menu
50
+ assert_template 'menu'
51
+ assert_not_nil assigns(:months)
52
+ assert_not_nil assigns(:years)
53
+ end
54
+
55
+ def test_summary
56
+ get :summary
57
+ assert_equal 9, assigns(:total_hits)
58
+ assert_equal 7, assigns(:unique_hits)
59
+ assert_equal 9, assigns(:year_hits)
60
+ assert_equal 7, assigns(:year_uniq)
61
+ assert_equal [1, 2, 3, "Mar 01 2007"], assigns(:daily_hits).first
62
+ assert_equal ["Mar 2007", 7, 9, "March 2007"], assigns(:month_hits)[2]
63
+ assert_template 'summary'
64
+ end
65
+
66
+ def test_summary_no_records
67
+ get :summary, :year => '2006', :month => '01'
68
+ [:total_hits, :unique_hits, :year_hits, :year_uniq].each do |var|
69
+ assert_equal 0, assigns(var)
70
+ end
71
+
72
+ expected = [[1, 0, 0, "Jan 01 2006"], [2, 0, 0, "Jan 02 2006"], [3, 0, 0, "Jan 03 2006"],
73
+ [4, 0, 0, "Jan 04 2006"], [5, 0, 0, "Jan 05 2006"], [6, 0, 0, "Jan 06 2006"],
74
+ [7, 0, 0, "Jan 07 2006"], [8, 0, 0, "Jan 08 2006"], [9, 0, 0, "Jan 09 2006"],
75
+ [10, 0, 0, "Jan 10 2006"], [11, 0, 0, "Jan 11 2006"], [12, 0, 0, "Jan 12 2006"],
76
+ [13, 0, 0, "Jan 13 2006"], [14, 0, 0, "Jan 14 2006"], [15, 0, 0, "Jan 15 2006"],
77
+ [16, 0, 0, "Jan 16 2006"], [17, 0, 0, "Jan 17 2006"], [18, 0, 0, "Jan 18 2006"],
78
+ [19, 0, 0, "Jan 19 2006"], [20, 0, 0, "Jan 20 2006"], [21, 0, 0, "Jan 21 2006"],
79
+ [22, 0, 0, "Jan 22 2006"], [23, 0, 0, "Jan 23 2006"], [24, 0, 0, "Jan 24 2006"],
80
+ [25, 0, 0, "Jan 25 2006"], [26, 0, 0, "Jan 26 2006"], [27, 0, 0, "Jan 27 2006"],
81
+ [28, 0, 0, "Jan 28 2006"], [29, 0, 0, "Jan 29 2006"], [30, 0, 0, "Jan 30 2006"],
82
+ [31, 0, 0, "Jan 31 2006"]]
83
+ assert_equal expected, assigns(:daily_hits)
84
+
85
+ expected = [["Jan 2006", 0, 0, "January 2006"], ["Feb 2006", 0, 0, "February 2006"],
86
+ ["Mar 2006", 0, 0, "March 2006"], ["Apr 2006", 0, 0, "April 2006"],
87
+ ["May 2006", 0, 0, "May 2006"], ["Jun 2006", 0, 0, "June 2006"],
88
+ ["Jul 2006", 0, 0, "July 2006"], ["Aug 2006", 0, 0, "August 2006"],
89
+ ["Sep 2006", 0, 0, "September 2006"], ["Oct 2006", 0, 0, "October 2006"],
90
+ ["Nov 2006", 0, 0, "November 2006"], ["Dec 2006", 0, 0, "December 2006"]]
91
+ assert_equal expected, assigns(:month_hits)
92
+
93
+ assert_template 'summary'
94
+ end
95
+
96
+ def test_hourly_stats
97
+ get :hourly_stats
98
+ assert_equal 9, assigns(:total_hits)
99
+
100
+ # Hour, Visits, Hits
101
+ assert_equal ["00", 3, 4], assigns(:hourly_hits).first
102
+ assert_template 'hourly_stats'
103
+ end
104
+
105
+ def test_hourly_stats_no_records
106
+ get :hourly_stats, :year => '2006', :month => '01'
107
+ expected = [["00", 0, 0], ["01", 0, 0], ["02", 0, 0], ["03", 0, 0], ["04", 0, 0], ["05", 0, 0],
108
+ ["06", 0, 0], ["07", 0, 0], ["08", 0, 0], ["09", 0, 0], ["10", 0, 0], ["11", 0, 0],
109
+ ["12", 0, 0], ["13", 0, 0], ["14", 0, 0], ["15", 0, 0], ["16", 0, 0], ["17", 0, 0],
110
+ ["18", 0, 0], ["19", 0, 0], ["20", 0, 0], ["21", 0, 0], ["22", 0, 0], ["23", 0, 0]]
111
+ assert_equal expected, assigns(:hourly_hits)
112
+ assert_template 'hourly_stats'
113
+ end
114
+
115
+ def test_search_stats
116
+ get :search_stats
117
+
118
+ assert_equal 2, assigns(:keywords).size
119
+ expected = [{:total => 3, :query => "sitealizer"},{:total => 1, :query => "sitealizer rails plugin"}]
120
+ expected.each do |term|
121
+ assert_equal term, assigns(:keywords)[expected.index(term)]
122
+ end
123
+
124
+ assert_equal 2, assigns(:robots).size
125
+ expected = [{:total => 2, :name => "Googlebot"},{:total => 1, :name => "MSNBot"}]
126
+ expected.each do |robot|
127
+ assert_equal robot, assigns(:robots)[expected.index(robot)]
128
+ end
129
+
130
+ assert_equal 3, assigns(:engines).size
131
+ expected = [{:total=>2, :domain=>"search.aol.com"}, {:total=>1, :domain=>"www.altavista.com"},
132
+ {:total=>1, :domain=>"search.yahoo.com"}]
133
+ expected.each do |engine|
134
+ assert_equal engine, assigns(:engines)[expected.index(engine)]
135
+ end
136
+
137
+ assert_template 'search_stats'
138
+ end
139
+
140
+ def test_search_stats_no_records
141
+ get :search_stats, :year => '2006', :month => '01'
142
+ [:keywords, :engines, :robots].each do |var|
143
+ assert assigns(var).empty?
144
+ end
145
+ assert_template 'search_stats'
146
+ end
147
+
148
+ def test_visitor_info
149
+ get :visitor_info
150
+
151
+ assert_equal 4, assigns(:browsers).size
152
+ expected = ["Netscape","Other","MSIE","Safari"]
153
+ expected.each do |browser|
154
+ assert_equal browser, assigns(:browsers)[expected.index(browser)][:browser][:type]
155
+ end
156
+
157
+ assert_equal 3, assigns(:platforms).size
158
+ expected = ["Windows","Other","Macintosh"]
159
+ expected.each do |platform|
160
+ assert_equal platform, assigns(:platforms)[expected.index(platform)][:name]
161
+ end
162
+
163
+ assert_equal 7, assigns(:hosts).size
164
+ expected = ["41.41.41.41","1.1.1.1","123.4.5.678","31.31.31.31","51.51.51.51","3.3.3.3","2.2.2.2"]
165
+ expected.each do |host|
166
+ assert_equal host, assigns(:hosts)[expected.index(host)]["ip"]
167
+ end
168
+
169
+ assert_equal 4, assigns(:languages).size
170
+ expected = ["en",nil,"fr-fr","pt-pt"]
171
+ expected.each do |language|
172
+ assert_equal language, assigns(:languages)[expected.index(language)][:language]
173
+ end
174
+
175
+ assert_template 'visitor_info'
176
+ end
177
+
178
+ def test_visitor_info_no_records
179
+ get :visitor_info, :year => '2006', :month => '01'
180
+ assert_equal 0, assigns(:total_hits)
181
+ [:browsers, :platforms, :hosts, :languages].each do |var|
182
+ assert assigns(var).empty?
183
+ end
184
+ assert_template 'visitor_info'
185
+ end
186
+
187
+ def test_referrer_stats
188
+ get :referrer_stats
189
+ assert_not_nil assigns(:page_urls)
190
+ assert_equal 2, assigns(:page_urls).size
191
+ [[0,"/"],[1,"/account"]].each do |page|
192
+ assert_equal page[1], assigns(:page_urls)[page[0]].path
193
+ end
194
+ assert_not_nil assigns(:referers)
195
+ assert_equal 5, assigns(:referers).size
196
+ assert_template 'referrer_stats'
197
+ end
198
+
199
+ def test_referrer_stats_no_records
200
+ get :referrer_stats, :year => '2007', :month => '01'
201
+ assert_equal 0, assigns(:total_hits)
202
+ [:page_urls, :referers].each do |var|
203
+ assert assigns(var).empty?
204
+ end
205
+ assert_template 'referrer_stats'
206
+ end
207
+
208
+ end
@@ -0,0 +1,169 @@
1
+ require 'test/unit'
2
+ require 'cgi'
3
+ require File.dirname(__FILE__) + '/../lib/sitealizer/parser'
4
+
5
+ class SitealizerParserTest < Test::Unit::TestCase
6
+
7
+ def test_user_agent_platform
8
+ user_agent = "(Macintosh; U; PPC Mac OS X; en)"
9
+ assert_equal "Macintosh", Sitealizer::Parser::UserAgent.get_platform(user_agent)
10
+
11
+ user_agent = "(Windows; U; Windows NT 5.1; nl; rv:1.8)"
12
+ assert_equal "Windows", Sitealizer::Parser::UserAgent.get_platform(user_agent)
13
+
14
+ user_agent = "(X11; U; Linux i686; en-US; rv:1.8.0.2)"
15
+ assert_equal "Linux", Sitealizer::Parser::UserAgent.get_platform(user_agent)
16
+
17
+ user_agent = "(compatible; MSIE 5.0; SunOS 5.9 sun4u; X11)"
18
+ assert_equal "Sun Solaris", Sitealizer::Parser::UserAgent.get_platform(user_agent)
19
+
20
+ user_agent = "X11; U; FreeBSD i386; en-US; rv:1.7.8)"
21
+ assert_equal "FreeBSD", Sitealizer::Parser::UserAgent.get_platform(user_agent)
22
+
23
+ user_agent = "Some unknown user agent"
24
+ assert_equal "Other", Sitealizer::Parser::UserAgent.get_platform(user_agent)
25
+ end
26
+
27
+ def test_user_agent_browser
28
+ user_agent = "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/418.9.1 (KHTML, like Gecko) Safari/419.3"
29
+ assert_equal({:type => 'Safari', :version => nil},
30
+ Sitealizer::Parser::UserAgent.browser_info(user_agent))
31
+
32
+ user_agent = "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1) Gecko/20061026 BonEcho/2.0"
33
+ assert_equal({:type => 'Firefox BonEcho', :version => '2.0'},
34
+ Sitealizer::Parser::UserAgent.browser_info(user_agent))
35
+
36
+ user_agent = "Mozilla/4.0 (compatible; MSIE 7.0b; Windows NT 6.0)"
37
+ assert_equal({:type => 'MSIE', :version => '7.0'},
38
+ Sitealizer::Parser::UserAgent.browser_info(user_agent))
39
+
40
+ user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; nl; rv:1.8) Gecko/20051107 Firefox/1.5"
41
+ assert_equal({:type => 'Firefox', :version => '1.5'},
42
+ Sitealizer::Parser::UserAgent.browser_info(user_agent))
43
+
44
+ user_agent = "Mozilla/5.0 (Windows NT 5.1; U; en) Opera 8.50"
45
+ assert_equal({:type => 'Opera', :version => '8.50'},
46
+ Sitealizer::Parser::UserAgent.browser_info(user_agent))
47
+
48
+ user_agent = "Mozilla/4.0 (compatible; MSIE 6.0; America Online Browser 1.1; rev1.2; Windows NT 5.1;)"
49
+ assert_equal({:type => 'AOL', :version => '1.1'},
50
+ Sitealizer::Parser::UserAgent.browser_info(user_agent))
51
+
52
+ user_agent = "Mozilla/4.0 (compatible; MSIE 5.5; AOL 6.0; Windows 98)"
53
+ assert_equal({:type => 'AOL', :version => '6.0'},
54
+ Sitealizer::Parser::UserAgent.browser_info(user_agent))
55
+
56
+ user_agent = "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.0.3) Gecko/20060427 Camino/1.0.1"
57
+ assert_equal({:type => 'Camino', :version => '1.0.1'},
58
+ Sitealizer::Parser::UserAgent.browser_info(user_agent))
59
+
60
+ user_agent = "Mozilla/5.0 (compatible; Konqueror/3.4; Linux) KHTML/3.4.2 (like Gecko)"
61
+ assert_equal({:type => 'Konqueror', :version => '3.4'},
62
+ Sitealizer::Parser::UserAgent.browser_info(user_agent))
63
+
64
+ user_agent = "Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.7.13) Gecko/20050610 K-Meleon/0.9"
65
+ assert_equal({:type => 'K-Meleon', :version => '0.9'},
66
+ Sitealizer::Parser::UserAgent.browser_info(user_agent))
67
+
68
+ user_agent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)"
69
+ assert_equal({:type => 'Netscape', :version => '7.1'},
70
+ Sitealizer::Parser::UserAgent.browser_info(user_agent))
71
+
72
+ user_agent = "Mozilla/4.0 (PSP (PlayStation Portable); 2.00)"
73
+ assert_equal({:type => 'PlayStation Portable (PSP)', :version => '2.00'},
74
+ Sitealizer::Parser::UserAgent.browser_info(user_agent))
75
+
76
+ user_agent = "Mozilla/5.0 (PLAYSTATION 3; 1.00)"
77
+ assert_equal({:type => 'PlayStation 3', :version => '1.00'},
78
+ Sitealizer::Parser::UserAgent.browser_info(user_agent))
79
+
80
+ user_agent = "Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.8a"
81
+ assert_equal({:type => 'Lynx', :version => '2.8.5'},
82
+ Sitealizer::Parser::UserAgent.browser_info(user_agent))
83
+
84
+ user_agent = "Another user agent"
85
+ assert_equal({:type => 'Other', :version => nil},
86
+ Sitealizer::Parser::UserAgent.browser_info(user_agent))
87
+
88
+ end
89
+
90
+ def test_keyword_get_terms
91
+ referer = "http://search.yahoo.com/search?p=sitealizer&fr=yfp-t-501&toggle=1&cop=mss&ei=UTF-8"
92
+ assert_equal "sitealizer", Sitealizer::Parser::Keyword.get_terms(referer)
93
+
94
+ referer = "http://search.msn.com/results.aspx?srch=105&FORM=AS5&q=sitealizer"
95
+ assert_equal "sitealizer", Sitealizer::Parser::Keyword.get_terms(referer)
96
+
97
+ referer = "http://www.google.com/search?sourceid=navclient&ie=UTF-8&rlz=1T4DMUS_enUS202US205&q=sitealizer"
98
+ assert_equal "sitealizer", Sitealizer::Parser::Keyword.get_terms(referer)
99
+
100
+ referer = "http://search.aol.com/aolcom/search?invocationType=topsearchbox.search&query=sitealizer"
101
+ assert_equal "sitealizer", Sitealizer::Parser::Keyword.get_terms(referer)
102
+
103
+ referer = "http://alltheweb.com/search?cat=web&cs=iso88591&q=sitealizer&rys=0&itag=crv&_sb_lang=pref"
104
+ assert_equal "sitealizer", Sitealizer::Parser::Keyword.get_terms(referer)
105
+
106
+ referer = "http://www.ask.com/web?q=sitealizer&qsrc=0&o=333&l=dir"
107
+ assert_equal "sitealizer", Sitealizer::Parser::Keyword.get_terms(referer)
108
+
109
+ referer = "http://www.altavista.com/web/results?itag=ody&q=sitealizer&kgs=1&kls=0"
110
+ assert_equal "sitealizer", Sitealizer::Parser::Keyword.get_terms(referer)
111
+ end
112
+
113
+ def test_keyword_get_domain
114
+ referer = "http://search.yahoo.com/search?p=sitealizer&fr=yfp-t-501&toggle=1&cop=mss&ei=UTF-8"
115
+ assert_equal "search.yahoo.com", Sitealizer::Parser::Keyword.get_domain(referer, 'localhost')
116
+
117
+ referer = "http://search.msn.com/results.aspx?srch=105&FORM=AS5&q=sitealizer"
118
+ assert_equal "search.msn.com", Sitealizer::Parser::Keyword.get_domain(referer, 'localhost')
119
+
120
+ referer = "http://www.google.com/search?sourceid=navclient&ie=UTF-8&rlz=1T4DMUS_enUS202US205&q=sitealizer"
121
+ assert_equal "www.google.com", Sitealizer::Parser::Keyword.get_domain(referer, 'localhost')
122
+
123
+ referer = "http://search.aol.com/aolcom/search?invocationType=topsearchbox.search&query=sitealizer"
124
+ assert_equal "search.aol.com", Sitealizer::Parser::Keyword.get_domain(referer, 'localhost')
125
+
126
+ referer = "http://alltheweb.com/search?cat=web&cs=iso88591&q=sitealizer&rys=0&itag=crv&_sb_lang=pref"
127
+ assert_equal "alltheweb.com", Sitealizer::Parser::Keyword.get_domain(referer, 'localhost')
128
+
129
+ referer = "http://www.ask.com/web?q=sitealizer&qsrc=0&o=333&l=dir"
130
+ assert_equal "www.ask.com", Sitealizer::Parser::Keyword.get_domain(referer, 'localhost')
131
+
132
+ referer = "http://www.altavista.com/web/results?itag=ody&q=sitealizer&kgs=1&kls=0"
133
+ assert_equal "www.altavista.com", Sitealizer::Parser::Keyword.get_domain(referer, 'localhost')
134
+ end
135
+
136
+ def test_robot_get_name
137
+ user_agent = "Atomz/1.0"
138
+ assert_equal "Atomz.com", Sitealizer::Parser::Robot.get_name(user_agent)
139
+
140
+ user_agent = "Googlebot/2.X (+http://www.googlebot.com/bot.html)"
141
+ assert_equal "Googlebot", Sitealizer::Parser::Robot.get_name(user_agent)
142
+
143
+ user_agent = "InfoSeek Robot 1.0"
144
+ assert_equal "InfoSeek", Sitealizer::Parser::Robot.get_name(user_agent)
145
+
146
+ user_agent = "Mozilla/2.0 (compatible; Ask Jeeves/Teoma)"
147
+ assert_equal "Ask Jeeves", Sitealizer::Parser::Robot.get_name(user_agent)
148
+
149
+ user_agent = "Lycos/x."
150
+ assert_equal "Lycos", Sitealizer::Parser::Robot.get_name(user_agent)
151
+
152
+ user_agent = "MSNBOT/0.1 (http://search.msn.com/msnbot.htm)"
153
+ assert_equal "MSNBot", Sitealizer::Parser::Robot.get_name(user_agent)
154
+
155
+ user_agent = "Slurp/2.0"
156
+ assert_equal "Inktomi", Sitealizer::Parser::Robot.get_name(user_agent)
157
+
158
+ user_agent = "Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp )"
159
+ assert_equal "Yahoo Slurp", Sitealizer::Parser::Robot.get_name(user_agent)
160
+ end
161
+
162
+ def test_language_get_name
163
+ [["en","English"],["pt-pt","Portuguese"],["en-nz","English/New Zealand"],["es-mx","Spanish/Mexico",],
164
+ ["ru-ru","Russian"],["de-at","German/Austria"],["fr-fr","French/France"],["zh-cn","Chinese/China"]].each do |l|
165
+ assert_equal l[1], Sitealizer::Parser::Language.get_name(l[0])
166
+ end
167
+ end
168
+
169
+ end
@@ -0,0 +1,7 @@
1
+ require File.dirname(__FILE__) + '/../../../../config/environment'
2
+ require 'rubygems'
3
+ require 'test/unit'
4
+ require 'active_record/fixtures'
5
+ require 'action_controller/test_process'
6
+
7
+ Test::Unit::TestCase.fixture_path = File.dirname(__FILE__) + "/fixtures/"
@@ -0,0 +1,26 @@
1
+ This is a list of Typo maintainers. If you have a commit bit, please add your
2
+ name and contact details to the list.
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
+ Scott Laird <scott@sigkill.org>
13
+ blog: http://scottstuff.net/
14
+ irc: slaird
15
+
16
+ Piers Cawley <pdcawley@bofh.org.uk>
17
+ blog: http://www.bofh.org.uk/
18
+ irc: pdcawley
19
+
20
+ Kevin Ballard <kevin@sb.org>
21
+ blog: http://kevin.sb.org
22
+ irc: Eridius
23
+
24
+ Frédéric de Villamil <frederic@de-villamil.com>
25
+ blog: http://fredericdevillamil.com
26
+ irc: neuro`
@@ -0,0 +1,21 @@
1
+ Copyright (c) 2005 Tobias Luetke
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21
+
@@ -0,0 +1,27 @@
1
+ What is it?
2
+ ===========
3
+
4
+ This is an audioscrobbler sidebar plugin for typo blogging engine.
5
+
6
+ Requirements
7
+ ============
8
+
9
+ Currently you need all of those things to get typo to run:
10
+
11
+ * Typo 1.4.1 or higer
12
+ * Rails 1.2.x
13
+
14
+ Installation
15
+ ============
16
+
17
+ When in Typo root directory, just run
18
+ ./script/plugin install http://svn.typosphere.org/typo/plugins/audioscrobbler_sidebar/
19
+
20
+ Usage
21
+ ======
22
+
23
+ Typo's administrative interface is available at http://your.domain.com/admin.
24
+ To activate the plugin, drag and drop it in the sidebar and fill the config.
25
+
26
+ Enjoy,
27
+ Your typo team
@@ -1,5 +1,5 @@
1
1
  <% unless sidebar.tags.blank? -%>
2
- <h3>Tags</h3>
2
+ <h3><%= _("Tags")%></h3>
3
3
  <p style="overflow:hidden">
4
4
  <% sidebar.tags.each do |tag| -%>
5
5
  <span style="font-size:<%= sidebar.sizes[tag] %>%"><%= link_to tag.display_name, tag.permalink_url %></span>
@@ -0,0 +1,10 @@
1
+ TinyMCE
2
+ =======
3
+
4
+ This plugin provides for the installation and utilization of TinyMCE in Ruby on Rails applications. TinyMCE is a WYSIWYG HTML editing component
5
+ released under the GNU Public License (GPL) by Moxiecode Systems (http://tinymce.moxiecode.com/).
6
+
7
+ This plugin is maintained by Blake Watters <blake@near-time.com>
8
+
9
+ Bundled TinyMCE version: 2.0.6.1
10
+ Documentation from the TinyMCE distribution is available in the doc subdirectory of the plugin
@@ -0,0 +1,22 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/rdoctask'
4
+
5
+ desc 'Default: run unit tests.'
6
+ task :default => :test
7
+
8
+ desc 'Test the tiny_mce plugin.'
9
+ Rake::TestTask.new(:test) do |t|
10
+ t.libs << 'lib'
11
+ t.pattern = 'test/**/*_test.rb'
12
+ t.verbose = true
13
+ end
14
+
15
+ desc 'Generate documentation for the tiny_mce plugin.'
16
+ Rake::RDocTask.new(:rdoc) do |rdoc|
17
+ rdoc.rdoc_dir = 'rdoc'
18
+ rdoc.title = 'TinyMce'
19
+ rdoc.options << '--line-numbers' << '--inline-source'
20
+ rdoc.rdoc_files.include('README')
21
+ rdoc.rdoc_files.include('lib/**/*.rb')
22
+ end
@@ -0,0 +1,2 @@
1
+ - Update task for scripts that won't clobber customizations to TinyMCE via plugins, etc.
2
+ - Generator for TinyMCE Plugins