typo 4.0.3 → 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 (652) hide show
  1. data/CHANGES-4.1 +83 -0
  2. data/MAINTAINERS +3 -7
  3. data/README +1 -1
  4. data/{components/sidebars/README → README.SIDEBARS} +3 -0
  5. data/Rakefile +1 -1
  6. data/TODO-4.1 +16 -0
  7. data/app/apis/blogger_service.rb +3 -3
  8. data/app/apis/meta_weblog_service.rb +4 -21
  9. data/app/apis/movable_type_service.rb +5 -5
  10. data/app/controllers/accounts_controller.rb +6 -3
  11. data/app/controllers/admin/blacklist_controller.rb +1 -1
  12. data/app/controllers/admin/cache_controller.rb +3 -7
  13. data/app/controllers/admin/content_controller.rb +46 -24
  14. data/app/controllers/admin/feedback_controller.rb +3 -3
  15. data/app/controllers/admin/general_controller.rb +3 -3
  16. data/app/controllers/admin/pages_controller.rb +7 -3
  17. data/app/controllers/admin/sidebar_controller.rb +19 -26
  18. data/app/controllers/admin/textfilters_controller.rb +3 -1
  19. data/app/controllers/admin/themes_controller.rb +1 -1
  20. data/app/controllers/admin/users_controller.rb +1 -1
  21. data/app/controllers/application.rb +25 -27
  22. data/app/controllers/articles_controller.rb +14 -18
  23. data/app/controllers/content_controller.rb +7 -7
  24. data/app/controllers/live_controller.rb +1 -1
  25. data/app/controllers/redirect_controller.rb +2 -0
  26. data/app/controllers/textfilter_controller.rb +0 -3
  27. data/app/controllers/theme_controller.rb +10 -5
  28. data/app/controllers/xml_controller.rb +7 -9
  29. data/app/helpers/admin/base_helper.rb +10 -5
  30. data/app/helpers/admin/content_helper.rb +6 -0
  31. data/app/helpers/admin/feedback_helper.rb +1 -1
  32. data/app/helpers/admin/pages_helper.rb +5 -0
  33. data/app/helpers/application_helper.rb +84 -51
  34. data/app/helpers/articles_helper.rb +29 -29
  35. data/app/helpers/mail_helper.rb +3 -2
  36. data/app/helpers/sidebar_helper.rb +25 -16
  37. data/app/helpers/xml_helper.rb +0 -16
  38. data/app/models/article.rb +90 -32
  39. data/app/models/blog.rb +82 -74
  40. data/app/models/blog_sweeper.rb +33 -8
  41. data/app/models/categorization.rb +4 -0
  42. data/app/models/category.rb +21 -4
  43. data/app/models/comment.rb +23 -21
  44. data/app/models/content.rb +106 -64
  45. data/app/models/content_state/base.rb +12 -3
  46. data/app/models/content_state/draft.rb +2 -3
  47. data/app/models/content_state/factory.rb +1 -1
  48. data/app/models/content_state/ham.rb +0 -1
  49. data/app/models/content_state/just_marked_as_ham.rb +8 -1
  50. data/app/models/content_state/just_marked_as_spam.rb +4 -1
  51. data/app/models/content_state/just_presumed_ham.rb +14 -14
  52. data/app/models/content_state/just_published.rb +11 -18
  53. data/app/models/content_state/just_withdrawn.rb +11 -0
  54. data/app/models/content_state/new.rb +0 -1
  55. data/app/models/content_state/presumed_ham.rb +9 -3
  56. data/app/models/content_state/presumed_spam.rb +4 -1
  57. data/app/models/content_state/publication_pending.rb +4 -4
  58. data/app/models/content_state/published.rb +7 -8
  59. data/app/models/content_state/spam.rb +0 -1
  60. data/app/models/content_state/unclassified.rb +12 -3
  61. data/app/models/content_state/withdrawn.rb +5 -6
  62. data/app/models/email_notifier.rb +1 -1
  63. data/app/models/feedback.rb +31 -11
  64. data/app/models/notification.rb +4 -0
  65. data/app/models/notification_mailer.rb +8 -8
  66. data/app/models/page.rb +19 -5
  67. data/app/models/ping.rb +27 -40
  68. data/app/models/sidebar.rb +241 -11
  69. data/app/models/tag.rb +12 -1
  70. data/app/models/text_filter.rb +33 -39
  71. data/app/models/theme.rb +9 -0
  72. data/app/models/trackback.rb +1 -5
  73. data/app/models/user.rb +7 -5
  74. data/app/views/accounts/login.rhtml +19 -15
  75. data/app/views/accounts/logout.rhtml +4 -4
  76. data/app/views/accounts/signup.rhtml +9 -9
  77. data/app/views/admin/base/_recent_comments.rhtml +2 -2
  78. data/app/views/admin/base/_recent_trackbacks.rhtml +2 -2
  79. data/app/views/admin/blacklist/_blacklist_patterns.rhtml +4 -4
  80. data/app/views/admin/blacklist/_form.rhtml +3 -3
  81. data/app/views/admin/blacklist/_quick_post.rhtml +7 -6
  82. data/app/views/admin/blacklist/destroy.rhtml +5 -5
  83. data/app/views/admin/blacklist/edit.rhtml +7 -7
  84. data/app/views/admin/blacklist/list.rhtml +2 -2
  85. data/app/views/admin/cache/list.rhtml +2 -2
  86. data/app/views/admin/categories/_categories.rhtml +3 -3
  87. data/app/views/admin/categories/_form.rhtml +1 -1
  88. data/app/views/admin/categories/_quick_post.rhtml +5 -5
  89. data/app/views/admin/categories/destroy.rhtml +7 -7
  90. data/app/views/admin/categories/edit.rhtml +6 -6
  91. data/app/views/admin/categories/list.rhtml +7 -4
  92. data/app/views/admin/categories/reorder.rhtml +1 -1
  93. data/app/views/admin/categories/show.rhtml +6 -6
  94. data/app/views/admin/comments/_form.rhtml +4 -4
  95. data/app/views/admin/comments/comments.rhtml +1 -1
  96. data/app/views/admin/comments/destroy.rhtml +6 -6
  97. data/app/views/admin/comments/edit.rhtml +8 -8
  98. data/app/views/admin/comments/list.rhtml +11 -11
  99. data/app/views/admin/comments/new.rhtml +7 -7
  100. data/app/views/admin/comments/show.rhtml +7 -7
  101. data/app/views/admin/content/_articles.rhtml +12 -10
  102. data/app/views/admin/content/_attachment.rhtml +15 -17
  103. data/app/views/admin/content/_form.rhtml +68 -45
  104. data/app/views/admin/content/_pages.rhtml +2 -2
  105. data/app/views/admin/content/_quick_post.rhtml +6 -6
  106. data/app/views/admin/content/_show_categories.rhtml +2 -2
  107. data/app/views/admin/content/_show_resources.rhtml +2 -2
  108. data/app/views/admin/content/destroy.rhtml +8 -8
  109. data/app/views/admin/content/edit.rhtml +8 -26
  110. data/app/views/admin/content/list.rhtml +4 -4
  111. data/app/views/admin/content/new.rhtml +5 -25
  112. data/app/views/admin/content/preview.rhtml +9 -2
  113. data/app/views/admin/content/show.rhtml +10 -9
  114. data/app/views/admin/feedback/_item.rhtml +2 -2
  115. data/app/views/admin/feedback/list.rhtml +21 -20
  116. data/app/views/admin/general/index.rhtml +261 -239
  117. data/app/views/admin/general/update_database.rhtml +15 -15
  118. data/app/views/admin/pages/_form.rhtml +32 -15
  119. data/app/views/admin/pages/_pages.rhtml +9 -8
  120. data/app/views/admin/pages/_quick_post.rhtml +2 -2
  121. data/app/views/admin/pages/destroy.rhtml +7 -7
  122. data/app/views/admin/pages/edit.rhtml +7 -26
  123. data/app/views/admin/pages/list.rhtml +4 -3
  124. data/app/views/admin/pages/new.rhtml +5 -22
  125. data/app/views/admin/pages/preview.rhtml +1 -1
  126. data/app/views/admin/pages/show.rhtml +5 -5
  127. data/app/views/admin/resources/_itunes_category_edit.rhtml +2 -2
  128. data/app/views/admin/resources/_metadata_add.rhtml +13 -13
  129. data/app/views/admin/resources/_metadata_edit.rhtml +14 -14
  130. data/app/views/admin/resources/_mime_edit.rhtml +5 -5
  131. data/app/views/admin/resources/_pages.rhtml +2 -2
  132. data/app/views/admin/resources/_resources.rhtml +8 -8
  133. data/app/views/admin/resources/destroy.rhtml +7 -7
  134. data/app/views/admin/resources/list.rhtml +6 -3
  135. data/app/views/admin/resources/new.rhtml +7 -3
  136. data/app/views/admin/shared/_edit.rhtml +17 -0
  137. data/app/views/admin/sidebar/_active.rhtml +5 -5
  138. data/app/views/admin/sidebar/_availables.rhtml +1 -1
  139. data/app/views/admin/sidebar/_publish.rhtml +1 -1
  140. data/app/views/admin/sidebar/_target.rhtml +1 -1
  141. data/app/views/admin/sidebar/index.rhtml +9 -5
  142. data/app/views/admin/textfilters/_form.rhtml +13 -5
  143. data/app/views/admin/textfilters/_macros.rhtml +4 -4
  144. data/app/views/admin/textfilters/_textfilters.rhtml +6 -6
  145. data/app/views/admin/textfilters/destroy.rhtml +5 -8
  146. data/app/views/admin/textfilters/edit.rhtml +2 -5
  147. data/app/views/admin/textfilters/list.rhtml +4 -2
  148. data/app/views/admin/textfilters/macro_help.rhtml +1 -1
  149. data/app/views/admin/textfilters/new.rhtml +9 -7
  150. data/app/views/admin/textfilters/show.rhtml +5 -5
  151. data/app/views/admin/textfilters/show_help.rhtml +3 -3
  152. data/app/views/admin/themes/index.rhtml +8 -2
  153. data/app/views/admin/trackbacks/_form.rhtml +4 -4
  154. data/app/views/admin/trackbacks/destroy.rhtml +4 -4
  155. data/app/views/admin/trackbacks/edit.rhtml +6 -6
  156. data/app/views/admin/trackbacks/list.rhtml +10 -10
  157. data/app/views/admin/trackbacks/new.rhtml +6 -6
  158. data/app/views/admin/trackbacks/show.rhtml +8 -8
  159. data/app/views/admin/users/_form.rhtml +10 -10
  160. data/app/views/admin/users/_user.rhtml +6 -6
  161. data/app/views/admin/users/destroy.rhtml +7 -7
  162. data/app/views/admin/users/edit.rhtml +9 -5
  163. data/app/views/admin/users/list.rhtml +2 -2
  164. data/app/views/admin/users/new.rhtml +9 -7
  165. data/app/views/admin/users/show.rhtml +10 -10
  166. data/app/views/articles/_article.rhtml +3 -3
  167. data/app/views/articles/_comment.rhtml +3 -3
  168. data/app/views/articles/_comment_box.rhtml +6 -6
  169. data/app/views/articles/_trackback.rhtml +1 -1
  170. data/app/views/articles/archives.rhtml +3 -3
  171. data/app/views/articles/comment_preview.rhtml +2 -2
  172. data/app/views/articles/groupings.rhtml +1 -1
  173. data/app/views/articles/index.rhtml +2 -2
  174. data/app/views/articles/read.rhtml +15 -15
  175. data/app/views/articles/view_page.rhtml +1 -1
  176. data/app/views/layouts/administration.rhtml +11 -17
  177. data/app/views/layouts/minimal.rhtml +13 -0
  178. data/app/views/live/search.rhtml +1 -1
  179. data/app/views/notification_mailer/_mail_footer.rhtml +2 -2
  180. data/app/views/notification_mailer/article.rhtml +1 -1
  181. data/app/views/notification_mailer/comment.rhtml +4 -4
  182. data/app/views/settings/done.rhtml +1 -1
  183. data/app/views/settings/install.rhtml +3 -3
  184. data/app/views/shared/_search.rhtml +4 -4
  185. data/app/views/xml/_atom10_item_article.rxml +9 -7
  186. data/app/views/xml/_atom10_item_comment.rxml +2 -3
  187. data/app/views/xml/_atom10_item_trackback.rxml +1 -1
  188. data/app/views/xml/_googlesitemap_item_article.rxml +2 -2
  189. data/app/views/xml/_googlesitemap_item_category.rxml +1 -1
  190. data/app/views/xml/_googlesitemap_item_page.rxml +2 -2
  191. data/app/views/xml/_googlesitemap_item_tag.rxml +2 -2
  192. data/app/views/xml/_itunes_item_resource.rxml +2 -4
  193. data/app/views/xml/_rss20_item_article.rxml +4 -10
  194. data/app/views/xml/_rss20_item_comment.rxml +2 -2
  195. data/app/views/xml/rsd.rxml +4 -4
  196. data/bin/typo +0 -1
  197. data/config/boot.rb +4 -3
  198. data/config/environment.rb +37 -28
  199. data/config/environments/test.rb +1 -1
  200. data/config/routes.rb +6 -5
  201. data/db/migrate/051_fix_canonical_server_url.rb +17 -0
  202. data/db/migrate/052_remove_cached_html.rb +11 -0
  203. data/db/migrate/053_promote_canonical_server_url.rb +22 -0
  204. data/db/migrate/054_upgrade_sidebar_objects.rb +26 -0
  205. data/db/migrate/055_link_sidebars_to_blog.rb +17 -0
  206. data/db/migrate/056_create_notifications.rb +32 -0
  207. data/db/migrate/057_add_categorization_model.rb +45 -0
  208. data/db/migrate/058_separate_entries_and_feedback.rb +68 -0
  209. data/db/migrate/059_cleanup_feedback_table.rb +25 -0
  210. data/db/migrate/060_cleanup_contents_table.rb +29 -0
  211. data/db/migrate/061_convert_title_prefix_setting.rb +25 -0
  212. data/db/schema.mysql.sql +139 -108
  213. data/db/schema.postgresql.sql +140 -108
  214. data/db/schema.rb +97 -75
  215. data/db/schema.sqlite.sql +140 -108
  216. data/db/schema.sqlserver.sql +144 -109
  217. data/db/schema_version +1 -1
  218. data/lang/fr_FR.rb +469 -0
  219. data/lib/email_notify.rb +4 -4
  220. data/lib/generators/sidebar/sidebar_generator.rb +15 -6
  221. data/lib/generators/sidebar/templates/Rakefile +22 -0
  222. data/lib/generators/sidebar/templates/content.rhtml +10 -0
  223. data/lib/generators/sidebar/templates/init.rb +4 -0
  224. data/lib/generators/sidebar/templates/sidebar.rb +16 -0
  225. data/lib/generators/sidebar/templates/unit_test.rb +8 -0
  226. data/lib/jabber_notify.rb +8 -7
  227. data/lib/memory_profiler.rb +60 -0
  228. data/lib/rails_patch/active_record.rb +0 -27
  229. data/lib/route_cache.rb +15 -0
  230. data/lib/sidebars/component_plugin.rb +3 -0
  231. data/lib/sidebars/consolidated_plugin.rb +26 -0
  232. data/lib/sidebars/plugin.rb +8 -13
  233. data/lib/spam_protection.rb +35 -23
  234. data/lib/tasks/release.rake +7 -7
  235. data/lib/text_filter_plugin.rb +55 -15
  236. data/lib/typo_deprecated.rb +19 -0
  237. data/lib/typo_version.rb +1 -1
  238. data/public/images/bracket.gif +0 -0
  239. data/public/images/cancel.png +0 -0
  240. data/public/images/checked.png +0 -0
  241. data/public/images/delete.png +0 -0
  242. data/public/images/edit.png +0 -0
  243. data/public/images/help.png +0 -0
  244. data/public/images/show.png +0 -0
  245. data/public/javascripts/codecollapse.js +8 -0
  246. data/public/javascripts/controls.js +41 -23
  247. data/public/javascripts/dragdrop.js +105 -76
  248. data/public/javascripts/effects.js +293 -163
  249. data/public/javascripts/prototype.js +900 -391
  250. data/public/stylesheets/administration.css +390 -318
  251. data/public/stylesheets/codecollapse.css +3 -0
  252. data/public/stylesheets/minimal.css +142 -0
  253. data/public/stylesheets/textmate/dawn.css +209 -0
  254. data/public/stylesheets/textmate/iplastic.css +142 -0
  255. data/public/stylesheets/textmate/space_cadet.css +99 -0
  256. data/public/stylesheets/textmate/textmate.css +48 -0
  257. data/public/stylesheets/textmate/twilight.css +227 -0
  258. data/script/process/inspector +3 -0
  259. data/spec/controllers/accounts_controller_spec.rb +184 -0
  260. data/spec/controllers/articles_controller_spec.rb +47 -0
  261. data/spec/fixtures/articles_tags.yml +19 -0
  262. data/spec/fixtures/blacklist_patterns.yml +10 -0
  263. data/spec/fixtures/blogs.yml +77 -0
  264. data/spec/fixtures/categories.yml +35 -0
  265. data/{test/fixtures/articles_categories.yml → spec/fixtures/categorizations.yml} +0 -0
  266. data/spec/fixtures/contents.yml +215 -0
  267. data/spec/fixtures/feedback.yml +159 -0
  268. data/spec/fixtures/notifications.yml +0 -0
  269. data/spec/fixtures/page_caches.yml +7 -0
  270. data/spec/fixtures/redirects.yml +13 -0
  271. data/spec/fixtures/resources.yml +24 -0
  272. data/spec/fixtures/sidebars.yml +12 -0
  273. data/spec/fixtures/tags.yml +13 -0
  274. data/spec/fixtures/text_filters.yml +42 -0
  275. data/spec/fixtures/triggers.yml +1 -0
  276. data/spec/fixtures/users.yml +56 -0
  277. data/spec/fixtures/whiteboards.yml +13 -0
  278. data/spec/helpers/admin_base_helper_spec.rb +13 -0
  279. data/spec/models/amazon_sidebar_spec.rb +40 -0
  280. data/spec/models/audioscrobbler_spec.rb +134 -0
  281. data/spec/models/blog_spec.rb +28 -0
  282. data/spec/models/cache_support_spec.rb +55 -0
  283. data/spec/models/category_spec.rb +48 -0
  284. data/spec/models/configuration_spec.rb +108 -0
  285. data/spec/models/content_state_spec.rb +1010 -0
  286. data/spec/models/delegate_to_content_state_spec.rb +126 -0
  287. data/spec/models/delicious_spec.rb +101 -0
  288. data/spec/models/flickr_spec.rb +128 -0
  289. data/spec/models/metafragment_spec.rb +65 -0
  290. data/spec/models/page_cache_spec.rb +35 -0
  291. data/spec/models/page_spec.rb +88 -0
  292. data/spec/models/ping_spec.rb +133 -0
  293. data/spec/models/redirect_spec.rb +17 -0
  294. data/spec/models/resource_spec.rb +43 -0
  295. data/spec/models/static_sidebar_spec.rb +17 -0
  296. data/spec/models/tag_spec.rb +54 -0
  297. data/spec/models/text_filter_spec.rb +38 -0
  298. data/spec/models/theme_spec.rb +45 -0
  299. data/spec/models/trackback_spec.rb +60 -0
  300. data/spec/models/trigger_spec.rb +41 -0
  301. data/spec/models/user_spec.rb +105 -0
  302. data/test/fixtures/blogs.yml +5 -4
  303. data/test/fixtures/categorizations.yml +31 -0
  304. data/test/fixtures/contents.yml +2 -160
  305. data/test/fixtures/feedback.yml +159 -0
  306. data/test/fixtures/sidebars.yml +11 -4
  307. data/test/functional/accounts_controller_test.rb +6 -10
  308. data/test/functional/admin/article_preview_test.rb +21 -6
  309. data/test/functional/admin/blacklist_controller_test.rb +11 -11
  310. data/test/functional/admin/categories_controller_test.rb +13 -13
  311. data/test/functional/admin/comments_controller_test.rb +21 -21
  312. data/test/functional/admin/content_controller_test.rb +30 -38
  313. data/test/functional/admin/feedback_controller_test.rb +12 -12
  314. data/test/functional/admin/general_controller_test.rb +2 -2
  315. data/test/functional/admin/pages_controller_test.rb +3 -18
  316. data/test/functional/admin/resources_controller_test.rb +7 -7
  317. data/test/functional/admin/textfilters_controller_test.rb +2 -2
  318. data/test/functional/admin/themes_controller_test.rb +1 -1
  319. data/test/functional/admin/trackbacks_controller_test.rb +21 -21
  320. data/test/functional/admin/users_controller_test.rb +21 -18
  321. data/test/functional/articles_controller_test.rb +62 -46
  322. data/test/functional/backend_controller_test.rb +6 -6
  323. data/test/functional/redirect_controller_test.rb +3 -3
  324. data/test/functional/textfilter_controller_test.rb +10 -12
  325. data/test/functional/theme_controller_test.rb +1 -1
  326. data/test/functional/xml_controller_test.rb +7 -5
  327. data/test/mocks/themes/azure/layouts/default.rhtml +2 -2
  328. data/test/test_helper.rb +75 -0
  329. data/test/unit/amazon_sidebar_test.rb +36 -0
  330. data/test/unit/article_test.rb +36 -4
  331. data/test/unit/blog_test.rb +5 -36
  332. data/test/unit/cache_support_test.rb +62 -0
  333. data/test/unit/category_test.rb +6 -1
  334. data/test/unit/comment_test.rb +34 -9
  335. data/test/unit/content_state/factory_test.rb +8 -0
  336. data/test/unit/content_state/feedback_states_test.rb +71 -0
  337. data/test/unit/magnolia_test.rb +1 -1
  338. data/test/unit/notification_test.rb +10 -0
  339. data/test/unit/page_test.rb +20 -0
  340. data/test/unit/ping_test.rb +1 -1
  341. data/test/unit/sidebar_test.rb +2 -7
  342. data/test/unit/static_sidebar_test.rb +19 -0
  343. data/test/unit/tag_test.rb +6 -1
  344. data/test/unit/text_filter_test.rb +21 -21
  345. data/test/unit/theme_test.rb +1 -1
  346. data/test/unit/trackback_test.rb +16 -1
  347. data/themes/azure/layouts/default.rhtml +2 -2
  348. data/themes/scribbish/layouts/default.rhtml +2 -2
  349. data/themes/scribbish/stylesheets/content.css +6 -8
  350. data/themes/scribbish/views/articles/_article.rhtml +10 -10
  351. data/themes/scribbish/views/articles/_comment.rhtml +16 -12
  352. data/themes/scribbish/views/articles/_comment_form.rhtml +25 -22
  353. data/themes/scribbish/views/articles/_search.rhtml +14 -13
  354. data/themes/scribbish/views/articles/comment_preview.rhtml +3 -3
  355. data/themes/scribbish/views/articles/index.rhtml +1 -1
  356. data/themes/scribbish/views/articles/read.rhtml +8 -8
  357. data/vendor/cached_model/History.txt +30 -0
  358. data/vendor/cached_model/LICENSE.txt +30 -0
  359. data/vendor/cached_model/Manifest.txt +7 -0
  360. data/vendor/cached_model/README.txt +96 -0
  361. data/vendor/cached_model/Rakefile +25 -0
  362. data/vendor/cached_model/lib/cached_model.rb +287 -0
  363. data/vendor/cached_model/test/test_cached_model.rb +593 -0
  364. data/vendor/flickr/flickr.rb +1 -1
  365. data/vendor/memcache-client/History.txt +25 -0
  366. data/vendor/memcache-client/LICENSE.txt +30 -0
  367. data/vendor/memcache-client/Manifest.txt +8 -0
  368. data/vendor/memcache-client/README.txt +46 -0
  369. data/vendor/memcache-client/Rakefile +23 -0
  370. data/vendor/memcache-client/lib/memcache.rb +491 -0
  371. data/vendor/memcache-client/lib/memcache_util.rb +71 -0
  372. data/vendor/memcache-client/test/test_mem_cache.rb +284 -0
  373. data/vendor/plugins/action_view_patch/Rakefile +22 -0
  374. data/vendor/plugins/action_view_patch/init.rb +1 -0
  375. data/vendor/plugins/action_view_patch/lib/action_view_patch.rb +18 -0
  376. data/vendor/plugins/action_view_patch/test/action_view_patch_test.rb +56 -0
  377. data/vendor/plugins/aimpresence_sidebar/Rakefile +22 -0
  378. data/vendor/plugins/aimpresence_sidebar/init.rb +4 -0
  379. data/vendor/plugins/aimpresence_sidebar/lib/aimpresence_sidebar.rb +21 -0
  380. data/vendor/plugins/aimpresence_sidebar/test/aimpresence_sidebar_test.rb +33 -0
  381. data/vendor/plugins/aimpresence_sidebar/views/content.rhtml +4 -0
  382. data/vendor/plugins/amazon_sidebar/init.rb +5 -0
  383. data/vendor/plugins/amazon_sidebar/lib/amazon_sidebar.rb +16 -0
  384. data/vendor/plugins/amazon_sidebar/views/content.rhtml +4 -0
  385. data/vendor/plugins/archives_sidebar/Rakefile +22 -0
  386. data/vendor/plugins/archives_sidebar/init.rb +5 -0
  387. data/{components/plugins/sidebars/archives_controller.rb → vendor/plugins/archives_sidebar/lib/archives_sidebar.rb} +7 -6
  388. data/vendor/plugins/archives_sidebar/test/archives_sidebar_test.rb +8 -0
  389. data/{components/plugins/sidebars/archives → vendor/plugins/archives_sidebar/views}/content.rhtml +2 -2
  390. data/vendor/plugins/audioscrobbler_sidebar/Rakefile +22 -0
  391. data/vendor/plugins/audioscrobbler_sidebar/init.rb +5 -0
  392. data/{app/models/aggregations → vendor/plugins/audioscrobbler_sidebar/lib}/audioscrobbler.rb +0 -0
  393. data/{components/plugins/sidebars/audioscrobbler_controller.rb → vendor/plugins/audioscrobbler_sidebar/lib/audioscrobbler_sidebar.rb} +7 -4
  394. data/vendor/plugins/audioscrobbler_sidebar/test/audioscrobbler_sidebar_test.rb +8 -0
  395. data/{components/plugins/sidebars/audioscrobbler → vendor/plugins/audioscrobbler_sidebar/views}/content.rhtml +4 -4
  396. data/vendor/plugins/backpack_sidebar/Rakefile +22 -0
  397. data/vendor/plugins/backpack_sidebar/init.rb +5 -0
  398. data/{app/models/aggregations → vendor/plugins/backpack_sidebar/lib}/backpack.rb +0 -0
  399. data/{components/plugins/sidebars/backpack_controller.rb → vendor/plugins/backpack_sidebar/lib/backpack_sidebar.rb} +6 -3
  400. data/vendor/plugins/backpack_sidebar/test/backpack_sidebar_test.rb +8 -0
  401. data/{components/plugins/sidebars/backpack → vendor/plugins/backpack_sidebar/views}/content.rhtml +4 -4
  402. data/vendor/plugins/category_sidebar/Rakefile +22 -0
  403. data/vendor/plugins/category_sidebar/init.rb +5 -0
  404. data/{components/plugins/sidebars/category_controller.rb → vendor/plugins/category_sidebar/lib/category_sidebar.rb} +3 -5
  405. data/vendor/plugins/category_sidebar/test/category_sidebar_test.rb +8 -0
  406. data/vendor/plugins/category_sidebar/views/content.rhtml +10 -0
  407. data/vendor/plugins/delicious_sidebar/Rakefile +22 -0
  408. data/vendor/plugins/delicious_sidebar/init.rb +5 -0
  409. data/{app/models/aggregations → vendor/plugins/delicious_sidebar/lib}/delicious.rb +0 -0
  410. data/{components/plugins/sidebars/delicious_controller.rb → vendor/plugins/delicious_sidebar/lib/delicious_sidebar.rb} +16 -10
  411. data/vendor/plugins/delicious_sidebar/test/delicious_sidebar_test.rb +8 -0
  412. data/vendor/plugins/delicious_sidebar/views/content.rhtml +20 -0
  413. data/vendor/plugins/flickr_sidebar/Rakefile +22 -0
  414. data/vendor/plugins/flickr_sidebar/init.rb +5 -0
  415. data/{app/models/aggregations → vendor/plugins/flickr_sidebar/lib}/flickr.rb +1 -1
  416. data/vendor/plugins/flickr_sidebar/lib/flickr_sidebar.rb +15 -0
  417. data/vendor/plugins/flickr_sidebar/test/flickr_sidebar_test.rb +8 -0
  418. data/{components/plugins/sidebars/flickr → vendor/plugins/flickr_sidebar/views}/content.rhtml +5 -5
  419. data/vendor/plugins/fortythree_sidebar/Rakefile +22 -0
  420. data/vendor/plugins/fortythree_sidebar/init.rb +5 -0
  421. data/{app/models/aggregations → vendor/plugins/fortythree_sidebar/lib}/fortythree.rb +0 -0
  422. data/{components/plugins/sidebars/fortythree_controller.rb → vendor/plugins/fortythree_sidebar/lib/fortythree_sidebar.rb} +5 -4
  423. data/vendor/plugins/fortythree_sidebar/test/fortythree_sidebar_test.rb +8 -0
  424. data/vendor/plugins/fortythree_sidebar/views/content.rhtml +8 -0
  425. data/vendor/plugins/fortythreeplaces_sidebar/Rakefile +22 -0
  426. data/vendor/plugins/fortythreeplaces_sidebar/init.rb +5 -0
  427. data/vendor/plugins/fortythreeplaces_sidebar/lib/fortythree.rb +62 -0
  428. data/{components/plugins/sidebars/fortythreeplaces_controller.rb → vendor/plugins/fortythreeplaces_sidebar/lib/fortythreeplaces_sidebar.rb} +5 -4
  429. data/vendor/plugins/fortythreeplaces_sidebar/test/fortythreeplaces_sidebar_test.rb +8 -0
  430. data/vendor/plugins/fortythreeplaces_sidebar/views/content.rhtml +8 -0
  431. data/vendor/plugins/haml/MIT-LICENSE +20 -0
  432. data/vendor/plugins/haml/REFERENCE +662 -0
  433. data/vendor/plugins/haml/Rakefile +171 -0
  434. data/vendor/plugins/haml/VERSION +1 -0
  435. data/vendor/plugins/haml/bin/haml +18 -0
  436. data/vendor/plugins/haml/init.rb +3 -0
  437. data/vendor/plugins/haml/lib/haml/buffer.rb +224 -0
  438. data/vendor/plugins/haml/lib/haml/engine.rb +557 -0
  439. data/vendor/plugins/haml/lib/haml/helpers.rb +220 -0
  440. data/vendor/plugins/haml/lib/haml/helpers/action_view_mods.rb +54 -0
  441. data/vendor/plugins/haml/lib/haml/template.rb +138 -0
  442. data/vendor/plugins/haml/test/benchmark.rb +62 -0
  443. data/vendor/plugins/haml/test/engine_test.rb +93 -0
  444. data/vendor/plugins/haml/test/helper_test.rb +105 -0
  445. data/vendor/plugins/haml/test/mocks/article.rb +6 -0
  446. data/vendor/plugins/haml/test/profile.rb +45 -0
  447. data/vendor/plugins/haml/test/results/content_for_layout.xhtml +16 -0
  448. data/vendor/plugins/haml/test/results/eval_suppressed.xhtml +2 -0
  449. data/vendor/plugins/haml/test/results/helpers.xhtml +50 -0
  450. data/vendor/plugins/haml/test/results/helpful.xhtml +5 -0
  451. data/vendor/plugins/haml/test/results/just_stuff.xhtml +38 -0
  452. data/vendor/plugins/haml/test/results/list.xhtml +12 -0
  453. data/vendor/plugins/haml/test/results/original_engine.xhtml +24 -0
  454. data/vendor/plugins/haml/test/results/partials.xhtml +20 -0
  455. data/vendor/plugins/haml/test/results/silent_script.xhtml +74 -0
  456. data/vendor/plugins/haml/test/results/standard.xhtml +42 -0
  457. data/vendor/plugins/haml/test/results/tag_parsing.xhtml +28 -0
  458. data/vendor/plugins/haml/test/results/very_basic.xhtml +7 -0
  459. data/vendor/plugins/haml/test/results/whitespace_handling.xhtml +51 -0
  460. data/vendor/plugins/haml/test/rhtml/standard.rhtml +51 -0
  461. data/vendor/plugins/haml/test/runner.rb +15 -0
  462. data/vendor/plugins/haml/test/template_test.rb +137 -0
  463. data/vendor/plugins/haml/test/templates/_partial.haml +7 -0
  464. data/vendor/plugins/haml/test/templates/_text_area.haml +3 -0
  465. data/vendor/plugins/haml/test/templates/content_for_layout.haml +10 -0
  466. data/vendor/plugins/haml/test/templates/eval_suppressed.haml +5 -0
  467. data/vendor/plugins/haml/test/templates/helpers.haml +39 -0
  468. data/vendor/plugins/haml/test/templates/helpful.haml +6 -0
  469. data/vendor/plugins/haml/test/templates/just_stuff.haml +34 -0
  470. data/vendor/plugins/haml/test/templates/list.haml +12 -0
  471. data/vendor/plugins/haml/test/templates/original_engine.haml +17 -0
  472. data/vendor/plugins/haml/test/templates/partialize.haml +1 -0
  473. data/vendor/plugins/haml/test/templates/partials.haml +12 -0
  474. data/vendor/plugins/haml/test/templates/silent_script.haml +40 -0
  475. data/vendor/plugins/haml/test/templates/standard.haml +40 -0
  476. data/vendor/plugins/haml/test/templates/tag_parsing.haml +24 -0
  477. data/vendor/plugins/haml/test/templates/very_basic.haml +4 -0
  478. data/vendor/plugins/haml/test/templates/whitespace_handling.haml +66 -0
  479. data/vendor/plugins/localization/CHANGELOG +1 -0
  480. data/vendor/plugins/localization/README +85 -0
  481. data/vendor/plugins/localization/init.rb +3 -0
  482. data/vendor/plugins/localization/lib/localization.rb +46 -0
  483. data/vendor/plugins/magnolia_sidebar/Rakefile +22 -0
  484. data/vendor/plugins/magnolia_sidebar/init.rb +5 -0
  485. data/{app/models/aggregations/magnolia.rb → vendor/plugins/magnolia_sidebar/lib/magnolia_aggregation.rb} +0 -0
  486. data/vendor/plugins/magnolia_sidebar/lib/magnolia_sidebar.rb +16 -0
  487. data/vendor/plugins/magnolia_sidebar/test/magnolia_sidebar_test.rb +8 -0
  488. data/vendor/plugins/magnolia_sidebar/views/content.rhtml +12 -0
  489. data/vendor/plugins/recent_comments_sidebar/Rakefile +22 -0
  490. data/vendor/plugins/recent_comments_sidebar/init.rb +5 -0
  491. data/vendor/plugins/recent_comments_sidebar/lib/recent_comments_sidebar.rb +16 -0
  492. data/vendor/plugins/recent_comments_sidebar/test/recent_comments_sidebar_test.rb +8 -0
  493. data/{components/plugins/sidebars/recent_comments → vendor/plugins/recent_comments_sidebar/views}/content.rhtml +2 -2
  494. data/vendor/plugins/static_sidebar/init.rb +4 -0
  495. data/{components/plugins/sidebars/static_controller.rb → vendor/plugins/static_sidebar/lib/static_sidebar.rb} +4 -7
  496. data/vendor/plugins/static_sidebar/views/content.rhtml +2 -0
  497. data/vendor/plugins/tada_sidebar/Rakefile +22 -0
  498. data/vendor/plugins/tada_sidebar/init.rb +5 -0
  499. data/{app/models/aggregations → vendor/plugins/tada_sidebar/lib}/tada.rb +0 -0
  500. data/{components/plugins/sidebars/tada_controller.rb → vendor/plugins/tada_sidebar/lib/tada_sidebar.rb} +8 -4
  501. data/vendor/plugins/tada_sidebar/test/tada_sidebar_test.rb +8 -0
  502. data/{components/plugins/sidebars/tada → vendor/plugins/tada_sidebar/views}/content.rhtml +4 -4
  503. data/vendor/plugins/tag_sidebar/Rakefile +22 -0
  504. data/vendor/plugins/tag_sidebar/init.rb +5 -0
  505. data/vendor/plugins/tag_sidebar/lib/tag_sidebar.rb +24 -0
  506. data/vendor/plugins/tag_sidebar/test/tag_sidebar_test.rb +8 -0
  507. data/vendor/plugins/tag_sidebar/views/content.rhtml +8 -0
  508. data/vendor/plugins/technorati_sidebar/Rakefile +22 -0
  509. data/vendor/plugins/technorati_sidebar/init.rb +5 -0
  510. data/{app/models/aggregations → vendor/plugins/technorati_sidebar/lib}/technorati.rb +0 -0
  511. data/{components/plugins/sidebars/technorati_controller.rb → vendor/plugins/technorati_sidebar/lib/technorati_sidebar.rb} +8 -4
  512. data/vendor/plugins/technorati_sidebar/test/technorati_sidebar_test.rb +8 -0
  513. data/vendor/plugins/technorati_sidebar/views/content.rhtml +8 -0
  514. data/vendor/plugins/typo_textfilter_amazon/README +5 -0
  515. data/vendor/plugins/typo_textfilter_amazon/Rakefile +22 -0
  516. data/vendor/plugins/typo_textfilter_amazon/init.rb +4 -0
  517. data/vendor/plugins/typo_textfilter_amazon/install.rb +1 -0
  518. data/vendor/plugins/typo_textfilter_amazon/lib/typo_textfilter_amazon.rb +45 -0
  519. data/vendor/plugins/typo_textfilter_amazon/tasks/typo_textfilter_amazon_tasks.rake +4 -0
  520. data/vendor/plugins/typo_textfilter_amazon/test/typo_textfilter_amazon_test.rb +8 -0
  521. data/vendor/plugins/typo_textfilter_code/README +4 -0
  522. data/vendor/plugins/typo_textfilter_code/Rakefile +22 -0
  523. data/vendor/plugins/typo_textfilter_code/init.rb +4 -0
  524. data/vendor/plugins/typo_textfilter_code/install.rb +1 -0
  525. data/vendor/plugins/typo_textfilter_code/lib/typo_textfilter_code.rb +62 -0
  526. data/vendor/plugins/typo_textfilter_code/tasks/typo_textfilter_code_tasks.rake +4 -0
  527. data/vendor/plugins/typo_textfilter_code/test/typo_textfilter_code_test.rb +8 -0
  528. data/vendor/plugins/typo_textfilter_flickr/README +4 -0
  529. data/vendor/plugins/typo_textfilter_flickr/Rakefile +22 -0
  530. data/vendor/plugins/typo_textfilter_flickr/init.rb +4 -0
  531. data/vendor/plugins/typo_textfilter_flickr/install.rb +1 -0
  532. data/vendor/plugins/typo_textfilter_flickr/lib/typo_textfilter_flickr.rb +79 -0
  533. data/vendor/plugins/typo_textfilter_flickr/tasks/typo_textfilter_flickr_tasks.rake +4 -0
  534. data/vendor/plugins/typo_textfilter_flickr/test/typo_textfilter_flickr_test.rb +8 -0
  535. data/vendor/plugins/typo_textfilter_htmlfilter/README +4 -0
  536. data/vendor/plugins/typo_textfilter_htmlfilter/Rakefile +22 -0
  537. data/vendor/plugins/typo_textfilter_htmlfilter/init.rb +2 -0
  538. data/vendor/plugins/typo_textfilter_htmlfilter/install.rb +1 -0
  539. data/vendor/plugins/typo_textfilter_htmlfilter/lib/typo_textfilter_htmlfilter.rb +12 -0
  540. data/vendor/plugins/typo_textfilter_htmlfilter/tasks/typo_textfilter_htmlfilter_tasks.rake +4 -0
  541. data/vendor/plugins/typo_textfilter_htmlfilter/test/typo_textfilter_htmlfilter_test.rb +8 -0
  542. data/vendor/plugins/typo_textfilter_lightbox/README +4 -0
  543. data/vendor/plugins/typo_textfilter_lightbox/Rakefile +22 -0
  544. data/vendor/plugins/typo_textfilter_lightbox/init.rb +2 -0
  545. data/vendor/plugins/typo_textfilter_lightbox/install.rb +1 -0
  546. data/{components/plugins/textfilters/lightbox_controller.rb → vendor/plugins/typo_textfilter_lightbox/lib/typo_textfilter_lightbox.rb} +64 -61
  547. data/vendor/plugins/typo_textfilter_lightbox/tasks/typo_textfilter_lightbox_tasks.rake +4 -0
  548. data/vendor/plugins/typo_textfilter_lightbox/test/typo_textfilter_lightbox_test.rb +8 -0
  549. data/vendor/plugins/typo_textfilter_markdown/README +4 -0
  550. data/vendor/plugins/typo_textfilter_markdown/Rakefile +22 -0
  551. data/vendor/plugins/typo_textfilter_markdown/init.rb +2 -0
  552. data/vendor/plugins/typo_textfilter_markdown/install.rb +1 -0
  553. data/{components/plugins/textfilters/markdown_controller.rb → vendor/plugins/typo_textfilter_markdown/lib/typo_textfilter_markdown.rb} +13 -9
  554. data/vendor/plugins/typo_textfilter_markdown/tasks/typo_textfilter_markdown_tasks.rake +4 -0
  555. data/vendor/plugins/typo_textfilter_markdown/test/typo_textfilter_markdown_test.rb +8 -0
  556. data/vendor/plugins/typo_textfilter_none/README +4 -0
  557. data/vendor/plugins/typo_textfilter_none/Rakefile +22 -0
  558. data/vendor/plugins/typo_textfilter_none/init.rb +2 -0
  559. data/vendor/plugins/typo_textfilter_none/install.rb +1 -0
  560. data/vendor/plugins/typo_textfilter_none/lib/typo_textfilter_none.rb +12 -0
  561. data/vendor/plugins/typo_textfilter_none/tasks/typo_textfilter_none_tasks.rake +4 -0
  562. data/vendor/plugins/typo_textfilter_none/test/typo_textfilter_none_test.rb +8 -0
  563. data/vendor/plugins/typo_textfilter_smartypants/README +4 -0
  564. data/vendor/plugins/typo_textfilter_smartypants/Rakefile +22 -0
  565. data/vendor/plugins/typo_textfilter_smartypants/init.rb +2 -0
  566. data/vendor/plugins/typo_textfilter_smartypants/install.rb +1 -0
  567. data/vendor/plugins/typo_textfilter_smartypants/lib/typo_textfilter_smartypants.rb +12 -0
  568. data/vendor/plugins/typo_textfilter_smartypants/tasks/typo_textfilter_smartypants_tasks.rake +4 -0
  569. data/vendor/plugins/typo_textfilter_smartypants/test/typo_textfilter_smartypants_test.rb +8 -0
  570. data/vendor/plugins/typo_textfilter_sparkline/README +4 -0
  571. data/vendor/plugins/typo_textfilter_sparkline/Rakefile +22 -0
  572. data/vendor/plugins/typo_textfilter_sparkline/init.rb +2 -0
  573. data/vendor/plugins/typo_textfilter_sparkline/install.rb +1 -0
  574. data/vendor/plugins/typo_textfilter_sparkline/lib/typo_textfilter_sparkline.rb +92 -0
  575. data/vendor/plugins/typo_textfilter_sparkline/tasks/typo_textfilter_sparkline_tasks.rake +4 -0
  576. data/vendor/plugins/typo_textfilter_sparkline/test/typo_textfilter_sparkline_test.rb +8 -0
  577. data/vendor/plugins/typo_textfilter_textile/README +4 -0
  578. data/vendor/plugins/typo_textfilter_textile/Rakefile +22 -0
  579. data/vendor/plugins/typo_textfilter_textile/init.rb +2 -0
  580. data/vendor/plugins/typo_textfilter_textile/install.rb +1 -0
  581. data/vendor/plugins/typo_textfilter_textile/lib/typo_textfilter_textile.rb +18 -0
  582. data/vendor/plugins/typo_textfilter_textile/tasks/typo_textfilter_textile_tasks.rake +4 -0
  583. data/vendor/plugins/typo_textfilter_textile/test/typo_textfilter_textile_test.rb +8 -0
  584. data/vendor/plugins/typo_textfilter_textile_and_markdown/README +4 -0
  585. data/vendor/plugins/typo_textfilter_textile_and_markdown/Rakefile +22 -0
  586. data/vendor/plugins/typo_textfilter_textile_and_markdown/init.rb +2 -0
  587. data/vendor/plugins/typo_textfilter_textile_and_markdown/install.rb +1 -0
  588. data/vendor/plugins/typo_textfilter_textile_and_markdown/lib/typo_textfilter_textile_and_markdown.rb +12 -0
  589. data/vendor/plugins/typo_textfilter_textile_and_markdown/tasks/typo_textfilter_textile_and_markdown_tasks.rake +4 -0
  590. data/vendor/plugins/typo_textfilter_textile_and_markdown/test/typo_textfilter_textile_and_markdown_test.rb +8 -0
  591. data/vendor/plugins/typo_textfilter_tmcode/README +4 -0
  592. data/vendor/plugins/typo_textfilter_tmcode/Rakefile +22 -0
  593. data/vendor/plugins/typo_textfilter_tmcode/init.rb +3 -0
  594. data/vendor/plugins/typo_textfilter_tmcode/install.rb +1 -0
  595. data/vendor/plugins/typo_textfilter_tmcode/lib/typo_textfilter_tmcode.rb +86 -0
  596. data/vendor/plugins/typo_textfilter_tmcode/tasks/typo_textfilter_tmcode_tasks.rake +4 -0
  597. data/vendor/plugins/typo_textfilter_tmcode/test/typo_textfilter_tmcode_test.rb +8 -0
  598. data/vendor/plugins/upcoming_sidebar/Rakefile +22 -0
  599. data/vendor/plugins/upcoming_sidebar/init.rb +5 -0
  600. data/{app/models/aggregations → vendor/plugins/upcoming_sidebar/lib}/upcoming.rb +0 -0
  601. data/vendor/plugins/upcoming_sidebar/lib/upcoming_sidebar.rb +15 -0
  602. data/vendor/plugins/upcoming_sidebar/test/upcoming_sidebar_test.rb +8 -0
  603. data/{components/plugins/sidebars/upcoming → vendor/plugins/upcoming_sidebar/views}/content.rhtml +3 -3
  604. data/vendor/plugins/xbox_sidebar/Rakefile +22 -0
  605. data/vendor/plugins/xbox_sidebar/init.rb +5 -0
  606. data/{components/plugins/sidebars/xbox_controller.rb → vendor/plugins/xbox_sidebar/lib/xbox_sidebar.rb} +1 -1
  607. data/vendor/plugins/xbox_sidebar/test/xbox_sidebar_test.rb +8 -0
  608. data/vendor/plugins/xbox_sidebar/views/content.rhtml +2 -0
  609. data/vendor/plugins/xml_sidebar/Rakefile +22 -0
  610. data/vendor/plugins/xml_sidebar/init.rb +5 -0
  611. data/{components/plugins/sidebars/xml_controller.rb → vendor/plugins/xml_sidebar/lib/xml_sidebar.rb} +1 -1
  612. data/vendor/plugins/xml_sidebar/test/xml_sidebar_test.rb +8 -0
  613. data/vendor/plugins/xml_sidebar/views/content.rhtml +12 -0
  614. metadata +505 -101
  615. data/app/controllers/sidebar_controller.rb +0 -50
  616. data/app/models/content_observer.rb +0 -5
  617. data/components/plugins/sidebars/aimpresence/content.rhtml +0 -4
  618. data/components/plugins/sidebars/aimpresence_controller.rb +0 -10
  619. data/components/plugins/sidebars/amazon/content.rhtml +0 -4
  620. data/components/plugins/sidebars/amazon_controller.rb +0 -17
  621. data/components/plugins/sidebars/category/content.rhtml +0 -10
  622. data/components/plugins/sidebars/delicious/content.rhtml +0 -20
  623. data/components/plugins/sidebars/flickr_controller.rb +0 -16
  624. data/components/plugins/sidebars/fortythree/content.rhtml +0 -8
  625. data/components/plugins/sidebars/fortythreeplaces/content.rhtml +0 -8
  626. data/components/plugins/sidebars/magnolia/content.rhtml +0 -12
  627. data/components/plugins/sidebars/magnolia_controller.rb +0 -17
  628. data/components/plugins/sidebars/recent_comments_controller.rb +0 -23
  629. data/components/plugins/sidebars/static/content.rhtml +0 -2
  630. data/components/plugins/sidebars/tag/content.rhtml +0 -8
  631. data/components/plugins/sidebars/tag_controller.rb +0 -18
  632. data/components/plugins/sidebars/technorati/content.rhtml +0 -8
  633. data/components/plugins/sidebars/upcoming_controller.rb +0 -11
  634. data/components/plugins/sidebars/xbox/content.rhtml +0 -2
  635. data/components/plugins/sidebars/xml/content.rhtml +0 -12
  636. data/components/plugins/textfilters/amazon_controller.rb +0 -39
  637. data/components/plugins/textfilters/code_controller.rb +0 -59
  638. data/components/plugins/textfilters/flickr_controller.rb +0 -75
  639. data/components/plugins/textfilters/htmlfilter_controller.rb +0 -8
  640. data/components/plugins/textfilters/macropost_controller.rb +0 -14
  641. data/components/plugins/textfilters/macropre_controller.rb +0 -14
  642. data/components/plugins/textfilters/none_controller.rb +0 -8
  643. data/components/plugins/textfilters/smartypants_controller.rb +0 -8
  644. data/components/plugins/textfilters/sparkline_controller.rb +0 -88
  645. data/components/plugins/textfilters/textile_and_markdown_controller.rb +0 -8
  646. data/components/plugins/textfilters/textile_controller.rb +0 -14
  647. data/db/schema.mysql-v3.sql +0 -218
  648. data/lib/generators/sidebar/templates/components/plugins/sidebars/controller_template.rb +0 -20
  649. data/lib/generators/sidebar/templates/components/plugins/sidebars/views/content_template.rhtml +0 -4
  650. data/lib/rails_patch/components.rb +0 -14
  651. data/public/images/checked.gif +0 -0
  652. data/test/unit/observer_test.rb +0 -40
@@ -1,11 +1,11 @@
1
1
  require 'rake/gempackagetask'
2
2
  require 'rake/contrib/rubyforgepublisher'
3
3
 
4
- PKG_VERSION = "4.0.3"
4
+ PKG_VERSION = "4.1"
5
5
  PKG_NAME = "typo"
6
6
  PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
7
7
  RUBY_FORGE_PROJECT = 'typo'
8
- RUBY_FORGE_USER = 'scottlaird'
8
+ RUBY_FORGE_USER = 'fdevillamil'
9
9
  RELEASE_NAME = "#{PKG_NAME}-#{PKG_VERSION}"
10
10
 
11
11
  spec = Gem::Specification.new do |s|
@@ -30,7 +30,7 @@ spec = Gem::Specification.new do |s|
30
30
  s.platform = Gem::Platform::RUBY
31
31
  s.executables = ['typo']
32
32
 
33
- s.add_dependency("rails", "= 1.1.6")
33
+ s.add_dependency("rails", "= 1.2")
34
34
  s.add_dependency("mongrel", ">= 0.3.13.3")
35
35
  s.add_dependency("mongrel_cluster", ">= 0.2.0")
36
36
  s.add_dependency("sqlite3-ruby", ">= 1.1.0")
@@ -45,13 +45,13 @@ end
45
45
 
46
46
  desc "Publish the zip/tgz"
47
47
  task :leetsoft_upload => [:package] do
48
- Rake::SshFilePublisher.new("leetsoft.com", "dist/pkg", "pkg", "#{PKG_FILE_NAME}.zip").upload
49
- Rake::SshFilePublisher.new("leetsoft.com", "dist/pkg", "pkg", "#{PKG_FILE_NAME}.tgz").upload
48
+ # Rake::SshFilePublisher.new("leetsoft.com", "dist/pkg", "pkg", "#{PKG_FILE_NAME}.zip").upload
49
+ # Rake::SshFilePublisher.new("leetsoft.com", "dist/pkg", "pkg", "#{PKG_FILE_NAME}.tgz").upload
50
50
  end
51
51
 
52
52
  desc "Publish the release files to RubyForge."
53
53
  task :tag_svn do
54
- system("svn cp svn://typosphere.org/typo/trunk svn://typosphere.org/typo/tags/release_#{PKG_VERSION.gsub(/\./,'_')} -m 'tag release #{PKG_VERSION}'")
54
+ system("svn cp http://svn.typosphere.org/typo/trunk http://svn.typosphere.org/typo/tags/release_#{PKG_VERSION.gsub(/\./,'_')} -m 'tag release #{PKG_VERSION}'")
55
55
  end
56
56
 
57
57
  desc "Publish the release files to RubyForge."
@@ -170,5 +170,5 @@ task :rubyforge_upload => [:package] do
170
170
  end
171
171
 
172
172
  desc "Upload the package to leetsoft, rubyforge and tag the release in svn"
173
- task :release => [:sweep_cache, :package, :leetsoft_upload, :rubyforge_upload, :tag_svn ]
173
+ task :release => [:sweep_cache, :package, :rubyforge_upload, :tag_svn ]
174
174
 
@@ -1,10 +1,19 @@
1
- class TextFilterPlugin < ContentController
2
- uses_component_template_root
3
- include ApplicationHelper
4
-
1
+ class TextFilterPlugin
5
2
  class << self
6
3
  include TypoPlugins
7
4
  end
5
+
6
+ @@filter_map = {}
7
+ def self.inherited(sub)
8
+ if sub.to_s =~ /^Plugin/ or sub.to_s =~ /^Typo::Textfilter/
9
+ name = sub.short_name
10
+ @@filter_map[name] = sub
11
+ end
12
+ end
13
+
14
+ def self.filter_map
15
+ @@filter_map
16
+ end
8
17
 
9
18
  plugin_display_name "Unknown Text Filter"
10
19
  plugin_description "Unknown Text Filter Description"
@@ -13,15 +22,10 @@ class TextFilterPlugin < ContentController
13
22
  false
14
23
  end
15
24
 
16
- # Disable HTML errors for subclasses
17
- def rescue_action(e)
18
- raise e
19
- end
20
-
21
25
  # The name that needs to be used when refering to the plugin's
22
26
  # controller in render statements
23
27
  def self.component_name
24
- if (self.to_s =~ /::([a-zA-Z]+)Controller/)
28
+ if (self.to_s =~ /::([a-zA-Z]+)$/)
25
29
  "plugins/textfilters/#{$1}".downcase
26
30
  else
27
31
  raise "I don't know who I am: #{self.to_s}"
@@ -51,6 +55,10 @@ class TextFilterPlugin < ContentController
51
55
  def self.config_value(params,name)
52
56
  params[:filterparams][name] || default_config[name][:default]
53
57
  end
58
+
59
+ def self.logger
60
+ @logger ||= RAILS_DEFAULT_LOGGER || Logger.new(STDOUT)
61
+ end
54
62
  end
55
63
 
56
64
  class TextFilterPlugin::PostProcess < TextFilterPlugin
@@ -70,17 +78,17 @@ class TextFilterPlugin::Macro < TextFilterPlugin
70
78
  attributes
71
79
  end
72
80
 
73
- def self.filtertext(controller, content, text, params)
81
+ def self.filtertext(blog, content, text, params)
74
82
  filterparams = params[:filterparams]
75
- regex1 = /<typo:#{short_name}[^>]*\/>/
76
- regex2 = /<typo:#{short_name}([^>]*)>(.*?)<\/typo:#{short_name}>/m
83
+ regex1 = /<typo:#{short_name}(?:[ \t][^>]*)?\/>/
84
+ regex2 = /<typo:#{short_name}([ \t][^>]*)?>(.*?)<\/typo:#{short_name}>/m
77
85
 
78
86
  new_text = text.gsub(regex1) do |match|
79
- macrofilter(controller,content,attributes_parse(match),params)
87
+ macrofilter(blog,content,attributes_parse(match),params)
80
88
  end
81
89
 
82
90
  new_text = new_text.gsub(regex2) do |match|
83
- macrofilter(controller,content,attributes_parse($1.to_s),params,$2.to_s)
91
+ macrofilter(blog,content,attributes_parse($1.to_s),params,$2.to_s)
84
92
  end
85
93
 
86
94
  new_text
@@ -95,3 +103,35 @@ end
95
103
 
96
104
  class TextFilterPlugin::Markup < TextFilterPlugin
97
105
  end
106
+
107
+ class Typo
108
+ class Textfilter
109
+ class MacroPost < TextFilterPlugin
110
+ plugin_display_name "MacroPost"
111
+ plugin_description "Macro expansion meta-filter (post-markup)"
112
+
113
+ def self.filtertext(blog,content,text,params)
114
+ filterparams = params[:filterparams]
115
+
116
+ macros = TextFilter.available_filter_types['macropost']
117
+ macros.inject(text) do |text,macro|
118
+ macro.filtertext(blog,content,text,params)
119
+ end
120
+ end
121
+ end
122
+
123
+ class MacroPre < TextFilterPlugin
124
+ plugin_display_name "MacroPre"
125
+ plugin_description "Macro expansion meta-filter (pre-markup)"
126
+
127
+ def self.filtertext(blog,content,text,params)
128
+ filterparams = params[:filterparams]
129
+
130
+ macros = TextFilter.available_filter_types['macropre']
131
+ macros.inject(text) do |text,macro|
132
+ macro.filtertext(blog,content,text,params)
133
+ end
134
+ end
135
+ end
136
+ end
137
+ end
@@ -0,0 +1,19 @@
1
+ class TypoDeprecated < StandardError; end
2
+
3
+ def typo_deprecated(message=nil)
4
+ $typo_deprecated ||= {}
5
+ deprecated_method = caller[0].gsub(/.*\`(.*)\'.*/,'\1')
6
+ called_from = caller[1].gsub(%r{.*/\.\.\/(.*)$},'\1')
7
+
8
+ warning = "Deprecation warning: #{deprecated_method} called from #{called_from} #{message}"
9
+
10
+
11
+ unless ($typo_deprecated[warning])
12
+ RAILS_DEFAULT_LOGGER.error "\n**** #{warning} ****\n"
13
+ $typo_deprecated[warning] = true
14
+ end
15
+
16
+ if ENV['RAILS_ENV'] == 'test'
17
+ raise TypoDeprecated, warning
18
+ end
19
+ end
@@ -1 +1 @@
1
- TYPO_VERSION = '4.0.3'
1
+ TYPO_VERSION = '4.1'
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,8 @@
1
+ function toggleCodeCollapse (eltID) {
2
+ var elt = document.getElementById(eltID);
3
+ if (elt.className.match(/\btmcode-collapsed\b/)) {
4
+ elt.className = elt.className.replace(/ ?\btmcode-collapsed\b/, "");
5
+ } else {
6
+ elt.className += " tmcode-collapsed";
7
+ }
8
+ }
@@ -1,12 +1,13 @@
1
- // Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
2
- // (c) 2005 Ivan Krstic (http://blogs.law.harvard.edu/ivan)
3
- // (c) 2005 Jon Tirsen (http://www.tirsen.com)
1
+ // Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
2
+ // (c) 2005, 2006 Ivan Krstic (http://blogs.law.harvard.edu/ivan)
3
+ // (c) 2005, 2006 Jon Tirsen (http://www.tirsen.com)
4
4
  // Contributors:
5
5
  // Richard Livsey
6
6
  // Rahul Bhargava
7
7
  // Rob Wills
8
8
  //
9
- // See scriptaculous.js for full license.
9
+ // script.aculo.us is freely distributable under the terms of an MIT-style license.
10
+ // For details, see the script.aculo.us web site: http://script.aculo.us/
10
11
 
11
12
  // Autocompleter.Base handles all the autocompletion functionality
12
13
  // that's independent of the data source for autocompletion. This
@@ -33,6 +34,9 @@
33
34
  // useful when one of the tokens is \n (a newline), as it
34
35
  // allows smart autocompletion after linebreaks.
35
36
 
37
+ if(typeof Effect == 'undefined')
38
+ throw("controls.js requires including script.aculo.us' effects.js library");
39
+
36
40
  var Autocompleter = {}
37
41
  Autocompleter.Base = function() {};
38
42
  Autocompleter.Base.prototype = {
@@ -45,7 +49,7 @@ Autocompleter.Base.prototype = {
45
49
  this.index = 0;
46
50
  this.entryCount = 0;
47
51
 
48
- if (this.setOptions)
52
+ if(this.setOptions)
49
53
  this.setOptions(options);
50
54
  else
51
55
  this.options = options || {};
@@ -55,17 +59,20 @@ Autocompleter.Base.prototype = {
55
59
  this.options.frequency = this.options.frequency || 0.4;
56
60
  this.options.minChars = this.options.minChars || 1;
57
61
  this.options.onShow = this.options.onShow ||
58
- function(element, update){
59
- if(!update.style.position || update.style.position=='absolute') {
60
- update.style.position = 'absolute';
61
- Position.clone(element, update, {setHeight: false, offsetTop: element.offsetHeight});
62
- }
63
- Effect.Appear(update,{duration:0.15});
64
- };
62
+ function(element, update){
63
+ if(!update.style.position || update.style.position=='absolute') {
64
+ update.style.position = 'absolute';
65
+ Position.clone(element, update, {
66
+ setHeight: false,
67
+ offsetTop: element.offsetHeight
68
+ });
69
+ }
70
+ Effect.Appear(update,{duration:0.15});
71
+ };
65
72
  this.options.onHide = this.options.onHide ||
66
- function(element, update){ new Effect.Fade(update,{duration:0.15}) };
73
+ function(element, update){ new Effect.Fade(update,{duration:0.15}) };
67
74
 
68
- if (typeof(this.options.tokens) == 'string')
75
+ if(typeof(this.options.tokens) == 'string')
69
76
  this.options.tokens = new Array(this.options.tokens);
70
77
 
71
78
  this.observer = null;
@@ -94,7 +101,7 @@ Autocompleter.Base.prototype = {
94
101
  },
95
102
 
96
103
  fixIEOverlapping: function() {
97
- Position.clone(this.update, this.iefix);
104
+ Position.clone(this.update, this.iefix, {setTop:(!this.update.style.height)});
98
105
  this.iefix.style.zIndex = 1;
99
106
  this.update.style.zIndex = 2;
100
107
  Element.show(this.iefix);
@@ -202,11 +209,13 @@ Autocompleter.Base.prototype = {
202
209
  markPrevious: function() {
203
210
  if(this.index > 0) this.index--
204
211
  else this.index = this.entryCount-1;
212
+ this.getEntry(this.index).scrollIntoView(true);
205
213
  },
206
214
 
207
215
  markNext: function() {
208
216
  if(this.index < this.entryCount-1) this.index++
209
217
  else this.index = 0;
218
+ this.getEntry(this.index).scrollIntoView(false);
210
219
  },
211
220
 
212
221
  getEntry: function(index) {
@@ -254,11 +263,11 @@ Autocompleter.Base.prototype = {
254
263
  if(!this.changed && this.hasFocus) {
255
264
  this.update.innerHTML = choices;
256
265
  Element.cleanWhitespace(this.update);
257
- Element.cleanWhitespace(this.update.firstChild);
266
+ Element.cleanWhitespace(this.update.down());
258
267
 
259
- if(this.update.firstChild && this.update.firstChild.childNodes) {
268
+ if(this.update.firstChild && this.update.down().childNodes) {
260
269
  this.entryCount =
261
- this.update.firstChild.childNodes.length;
270
+ this.update.down().childNodes.length;
262
271
  for (var i = 0; i < this.entryCount; i++) {
263
272
  var entry = this.getEntry(i);
264
273
  entry.autocompleteIndex = i;
@@ -269,9 +278,14 @@ Autocompleter.Base.prototype = {
269
278
  }
270
279
 
271
280
  this.stopIndicator();
272
-
273
281
  this.index = 0;
274
- this.render();
282
+
283
+ if(this.entryCount==1 && this.options.autoSelect) {
284
+ this.selectEntry();
285
+ this.hide();
286
+ } else {
287
+ this.render();
288
+ }
275
289
  }
276
290
  },
277
291
 
@@ -459,6 +473,7 @@ Ajax.InPlaceEditor.prototype = {
459
473
  this.element = $(element);
460
474
 
461
475
  this.options = Object.extend({
476
+ paramName: "value",
462
477
  okButton: true,
463
478
  okText: "ok",
464
479
  cancelLink: true,
@@ -531,7 +546,7 @@ Ajax.InPlaceEditor.prototype = {
531
546
  Element.hide(this.element);
532
547
  this.createForm();
533
548
  this.element.parentNode.insertBefore(this.form, this.element);
534
- Field.scrollFreeActivate(this.editField);
549
+ if (!this.options.loadTextURL) Field.scrollFreeActivate(this.editField);
535
550
  // stop the event to avoid a page refresh in Safari
536
551
  if (evt) {
537
552
  Event.stop(evt);
@@ -590,7 +605,7 @@ Ajax.InPlaceEditor.prototype = {
590
605
  var textField = document.createElement("input");
591
606
  textField.obj = this;
592
607
  textField.type = "text";
593
- textField.name = "value";
608
+ textField.name = this.options.paramName;
594
609
  textField.value = text;
595
610
  textField.style.backgroundColor = this.options.highlightcolor;
596
611
  textField.className = 'editor_field';
@@ -603,7 +618,7 @@ Ajax.InPlaceEditor.prototype = {
603
618
  this.options.textarea = true;
604
619
  var textArea = document.createElement("textarea");
605
620
  textArea.obj = this;
606
- textArea.name = "value";
621
+ textArea.name = this.options.paramName;
607
622
  textArea.value = this.convertHTMLLineBreaks(text);
608
623
  textArea.rows = this.options.rows;
609
624
  textArea.cols = this.options.cols || 40;
@@ -636,6 +651,7 @@ Ajax.InPlaceEditor.prototype = {
636
651
  Element.removeClassName(this.form, this.options.loadingClassName);
637
652
  this.editField.disabled = false;
638
653
  this.editField.value = transport.responseText.stripTags();
654
+ Field.scrollFreeActivate(this.editField);
639
655
  },
640
656
  onclickCancel: function() {
641
657
  this.onComplete();
@@ -772,6 +788,8 @@ Object.extend(Ajax.InPlaceCollectionEditor.prototype, {
772
788
  collection.each(function(e,i) {
773
789
  optionTag = document.createElement("option");
774
790
  optionTag.value = (e instanceof Array) ? e[0] : e;
791
+ if((typeof this.options.value == 'undefined') &&
792
+ ((e instanceof Array) ? this.element.innerHTML == e[1] : e == optionTag.value)) optionTag.selected = true;
775
793
  if(this.options.value==optionTag.value) optionTag.selected = true;
776
794
  optionTag.appendChild(document.createTextNode((e instanceof Array) ? e[1] : e));
777
795
  selectTag.appendChild(optionTag);
@@ -1,9 +1,11 @@
1
- // Copyright (c) 2005 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
2
- // (c) 2005 Sammi Williams (http://www.oriontransfer.co.nz, sammi@oriontransfer.co.nz)
1
+ // Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
2
+ // (c) 2005, 2006 Sammi Williams (http://www.oriontransfer.co.nz, sammi@oriontransfer.co.nz)
3
3
  //
4
- // See scriptaculous.js for full license.
4
+ // script.aculo.us is freely distributable under the terms of an MIT-style license.
5
+ // For details, see the script.aculo.us web site: http://script.aculo.us/
5
6
 
6
- /*--------------------------------------------------------------------------*/
7
+ if(typeof Effect == 'undefined')
8
+ throw("dragdrop.js requires including script.aculo.us' effects.js library");
7
9
 
8
10
  var Droppables = {
9
11
  drops: [],
@@ -145,8 +147,16 @@ var Draggables = {
145
147
  },
146
148
 
147
149
  activate: function(draggable) {
148
- window.focus(); // allows keypress events if window isn't currently focused, fails for Safari
149
- this.activeDraggable = draggable;
150
+ if(draggable.options.delay) {
151
+ this._timeout = setTimeout(function() {
152
+ Draggables._timeout = null;
153
+ window.focus();
154
+ Draggables.activeDraggable = draggable;
155
+ }.bind(this), draggable.options.delay);
156
+ } else {
157
+ window.focus(); // allows keypress events if window isn't currently focused, fails for Safari
158
+ this.activeDraggable = draggable;
159
+ }
150
160
  },
151
161
 
152
162
  deactivate: function() {
@@ -160,10 +170,15 @@ var Draggables = {
160
170
  // the same coordinates, prevent needless redrawing (moz bug?)
161
171
  if(this._lastPointer && (this._lastPointer.inspect() == pointer.inspect())) return;
162
172
  this._lastPointer = pointer;
173
+
163
174
  this.activeDraggable.updateDrag(event, pointer);
164
175
  },
165
176
 
166
177
  endDrag: function(event) {
178
+ if(this._timeout) {
179
+ clearTimeout(this._timeout);
180
+ this._timeout = null;
181
+ }
167
182
  if(!this.activeDraggable) return;
168
183
  this._lastPointer = null;
169
184
  this.activeDraggable.endDrag(event);
@@ -190,6 +205,7 @@ var Draggables = {
190
205
  this.observers.each( function(o) {
191
206
  if(o[eventName]) o[eventName](eventName, draggable, event);
192
207
  });
208
+ if(draggable.options[eventName]) draggable.options[eventName](draggable, event);
193
209
  },
194
210
 
195
211
  _cacheObserverCallbacks: function() {
@@ -204,39 +220,59 @@ var Draggables = {
204
220
  /*--------------------------------------------------------------------------*/
205
221
 
206
222
  var Draggable = Class.create();
223
+ Draggable._dragging = {};
224
+
207
225
  Draggable.prototype = {
208
226
  initialize: function(element) {
209
- var options = Object.extend({
227
+ var defaults = {
210
228
  handle: false,
211
- starteffect: function(element) {
212
- new Effect.Opacity(element, {duration:0.2, from:1.0, to:0.7});
213
- },
214
229
  reverteffect: function(element, top_offset, left_offset) {
215
230
  var dur = Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02;
216
- element._revert = new Effect.Move(element, { x: -left_offset, y: -top_offset, duration: dur});
231
+ new Effect.Move(element, { x: -left_offset, y: -top_offset, duration: dur,
232
+ queue: {scope:'_draggable', position:'end'}
233
+ });
217
234
  },
218
- endeffect: function(element) {
219
- new Effect.Opacity(element, {duration:0.2, from:0.7, to:1.0});
235
+ endeffect: function(element) {
236
+ var toOpacity = typeof element._opacity == 'number' ? element._opacity : 1.0;
237
+ new Effect.Opacity(element, {duration:0.2, from:0.7, to:toOpacity,
238
+ queue: {scope:'_draggable', position:'end'},
239
+ afterFinish: function(){
240
+ Draggable._dragging[element] = false
241
+ }
242
+ });
220
243
  },
221
244
  zindex: 1000,
222
245
  revert: false,
223
246
  scroll: false,
224
247
  scrollSensitivity: 20,
225
248
  scrollSpeed: 15,
226
- snap: false // false, or xy or [x,y] or function(x,y){ return [x,y] }
227
- }, arguments[1] || {});
249
+ snap: false, // false, or xy or [x,y] or function(x,y){ return [x,y] }
250
+ delay: 0
251
+ };
252
+
253
+ if(!arguments[1] || typeof arguments[1].endeffect == 'undefined')
254
+ Object.extend(defaults, {
255
+ starteffect: function(element) {
256
+ element._opacity = Element.getOpacity(element);
257
+ Draggable._dragging[element] = true;
258
+ new Effect.Opacity(element, {duration:0.2, from:element._opacity, to:0.7});
259
+ }
260
+ });
261
+
262
+ var options = Object.extend(defaults, arguments[1] || {});
228
263
 
229
264
  this.element = $(element);
230
265
 
231
- if(options.handle && (typeof options.handle == 'string')) {
232
- var h = Element.childrenWithClassName(this.element, options.handle, true);
233
- if(h.length>0) this.handle = h[0];
234
- }
266
+ if(options.handle && (typeof options.handle == 'string'))
267
+ this.handle = this.element.down('.'+options.handle, 0);
268
+
235
269
  if(!this.handle) this.handle = $(options.handle);
236
270
  if(!this.handle) this.handle = this.element;
237
271
 
238
- if(options.scroll && !options.scroll.scrollTo && !options.scroll.outerHTML)
272
+ if(options.scroll && !options.scroll.scrollTo && !options.scroll.outerHTML) {
239
273
  options.scroll = $(options.scroll);
274
+ this._isScrollChild = Element.childOf(this.element, options.scroll);
275
+ }
240
276
 
241
277
  Element.makePositioned(this.element); // fix IE
242
278
 
@@ -262,6 +298,8 @@ Draggable.prototype = {
262
298
  },
263
299
 
264
300
  initDrag: function(event) {
301
+ if(typeof Draggable._dragging[this.element] != 'undefined' &&
302
+ Draggable._dragging[this.element]) return;
265
303
  if(Event.isLeftClick(event)) {
266
304
  // abort on form elements, fixes a Firefox issue
267
305
  var src = Event.element(event);
@@ -272,11 +310,6 @@ Draggable.prototype = {
272
310
  src.tagName=='BUTTON' ||
273
311
  src.tagName=='TEXTAREA')) return;
274
312
 
275
- if(this.element._revert) {
276
- this.element._revert.cancel();
277
- this.element._revert = null;
278
- }
279
-
280
313
  var pointer = [Event.pointerX(event), Event.pointerY(event)];
281
314
  var pos = Position.cumulativeOffset(this.element);
282
315
  this.offset = [0,1].map( function(i) { return (pointer[i] - pos[i]) });
@@ -312,6 +345,7 @@ Draggable.prototype = {
312
345
  }
313
346
 
314
347
  Draggables.notify('onStart', this, event);
348
+
315
349
  if(this.options.starteffect) this.options.starteffect(this.element);
316
350
  },
317
351
 
@@ -320,6 +354,7 @@ Draggable.prototype = {
320
354
  Position.prepare();
321
355
  Droppables.show(pointer, this.element);
322
356
  Draggables.notify('onDrag', this, event);
357
+
323
358
  this.draw(pointer);
324
359
  if(this.options.change) this.options.change(this);
325
360
 
@@ -331,8 +366,8 @@ Draggable.prototype = {
331
366
  with(this._getWindowScroll(this.options.scroll)) { p = [ left, top, left+width, top+height ]; }
332
367
  } else {
333
368
  p = Position.page(this.options.scroll);
334
- p[0] += this.options.scroll.scrollLeft;
335
- p[1] += this.options.scroll.scrollTop;
369
+ p[0] += this.options.scroll.scrollLeft + Position.deltaX;
370
+ p[1] += this.options.scroll.scrollTop + Position.deltaY;
336
371
  p.push(p[0]+this.options.scroll.offsetWidth);
337
372
  p.push(p[1]+this.options.scroll.offsetHeight);
338
373
  }
@@ -378,7 +413,7 @@ Draggable.prototype = {
378
413
 
379
414
  if(this.options.endeffect)
380
415
  this.options.endeffect(this.element);
381
-
416
+
382
417
  Draggables.deactivate(this);
383
418
  Droppables.reset();
384
419
  },
@@ -398,10 +433,15 @@ Draggable.prototype = {
398
433
 
399
434
  draw: function(point) {
400
435
  var pos = Position.cumulativeOffset(this.element);
436
+ if(this.options.ghosting) {
437
+ var r = Position.realOffset(this.element);
438
+ pos[0] += r[0] - Position.deltaX; pos[1] += r[1] - Position.deltaY;
439
+ }
440
+
401
441
  var d = this.currentDelta();
402
442
  pos[0] -= d[0]; pos[1] -= d[1];
403
443
 
404
- if(this.options.scroll && (this.options.scroll != window)) {
444
+ if(this.options.scroll && (this.options.scroll != window && this._isScrollChild)) {
405
445
  pos[0] -= this.options.scroll.scrollLeft-this.originalScrollLeft;
406
446
  pos[1] -= this.options.scroll.scrollTop-this.originalScrollTop;
407
447
  }
@@ -412,7 +452,7 @@ Draggable.prototype = {
412
452
 
413
453
  if(this.options.snap) {
414
454
  if(typeof this.options.snap == 'function') {
415
- p = this.options.snap(p[0],p[1]);
455
+ p = this.options.snap(p[0],p[1],this);
416
456
  } else {
417
457
  if(this.options.snap instanceof Array) {
418
458
  p = p.map( function(v, i) {
@@ -428,6 +468,7 @@ Draggable.prototype = {
428
468
  style.left = p[0] + "px";
429
469
  if((!this.options.constraint) || (this.options.constraint=='vertical'))
430
470
  style.top = p[1] + "px";
471
+
431
472
  if(style.visibility=="hidden") style.visibility = ""; // fix gecko rendering
432
473
  },
433
474
 
@@ -440,6 +481,7 @@ Draggable.prototype = {
440
481
  },
441
482
 
442
483
  startScrolling: function(speed) {
484
+ if(!(speed[0] || speed[1])) return;
443
485
  this.scrollSpeed = [speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed];
444
486
  this.lastScrolled = new Date();
445
487
  this.scrollInterval = setInterval(this.scroll.bind(this), 10);
@@ -464,14 +506,16 @@ Draggable.prototype = {
464
506
  Position.prepare();
465
507
  Droppables.show(Draggables._lastPointer, this.element);
466
508
  Draggables.notify('onDrag', this);
467
- Draggables._lastScrollPointer = Draggables._lastScrollPointer || $A(Draggables._lastPointer);
468
- Draggables._lastScrollPointer[0] += this.scrollSpeed[0] * delta / 1000;
469
- Draggables._lastScrollPointer[1] += this.scrollSpeed[1] * delta / 1000;
470
- if (Draggables._lastScrollPointer[0] < 0)
471
- Draggables._lastScrollPointer[0] = 0;
472
- if (Draggables._lastScrollPointer[1] < 0)
473
- Draggables._lastScrollPointer[1] = 0;
474
- this.draw(Draggables._lastScrollPointer);
509
+ if (this._isScrollChild) {
510
+ Draggables._lastScrollPointer = Draggables._lastScrollPointer || $A(Draggables._lastPointer);
511
+ Draggables._lastScrollPointer[0] += this.scrollSpeed[0] * delta / 1000;
512
+ Draggables._lastScrollPointer[1] += this.scrollSpeed[1] * delta / 1000;
513
+ if (Draggables._lastScrollPointer[0] < 0)
514
+ Draggables._lastScrollPointer[0] = 0;
515
+ if (Draggables._lastScrollPointer[1] < 0)
516
+ Draggables._lastScrollPointer[1] = 0;
517
+ this.draw(Draggables._lastScrollPointer);
518
+ }
475
519
 
476
520
  if(this.options.change) this.options.change(this);
477
521
  },
@@ -523,6 +567,8 @@ SortableObserver.prototype = {
523
567
  }
524
568
 
525
569
  var Sortable = {
570
+ SERIALIZE_RULE: /^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/,
571
+
526
572
  sortables: {},
527
573
 
528
574
  _findRootElement: function(element) {
@@ -563,12 +609,13 @@ var Sortable = {
563
609
  containment: element, // also takes array of elements (or id's); or false
564
610
  handle: false, // or a CSS class
565
611
  only: false,
612
+ delay: 0,
566
613
  hoverclass: null,
567
614
  ghosting: false,
568
615
  scroll: false,
569
616
  scrollSensitivity: 20,
570
617
  scrollSpeed: 15,
571
- format: /^[^_]*_(.*)$/,
618
+ format: this.SERIALIZE_RULE,
572
619
  onChange: Prototype.emptyFunction,
573
620
  onUpdate: Prototype.emptyFunction
574
621
  }, arguments[1] || {});
@@ -582,6 +629,7 @@ var Sortable = {
582
629
  scroll: options.scroll,
583
630
  scrollSpeed: options.scrollSpeed,
584
631
  scrollSensitivity: options.scrollSensitivity,
632
+ delay: options.delay,
585
633
  ghosting: options.ghosting,
586
634
  constraint: options.constraint,
587
635
  handle: options.handle };
@@ -610,7 +658,6 @@ var Sortable = {
610
658
  tree: options.tree,
611
659
  hoverclass: options.hoverclass,
612
660
  onHover: Sortable.onHover
613
- //greedy: !options.dropOnEmpty
614
661
  }
615
662
 
616
663
  var options_for_tree = {
@@ -635,7 +682,7 @@ var Sortable = {
635
682
  (this.findElements(element, options) || []).each( function(e) {
636
683
  // handles are per-draggable
637
684
  var handle = options.handle ?
638
- Element.childrenWithClassName(e, options.handle)[0] : e;
685
+ $(e).down('.'+options.handle,0) : e;
639
686
  options.draggables.push(
640
687
  new Draggable(e, Object.extend(options_for_draggable, { handle: handle })));
641
688
  Droppables.add(e, options_for_droppable);
@@ -706,7 +753,7 @@ var Sortable = {
706
753
  if(!Element.isParent(dropon, element)) {
707
754
  var index;
708
755
 
709
- var children = Sortable.findElements(dropon, {tag: droponOptions.tag});
756
+ var children = Sortable.findElements(dropon, {tag: droponOptions.tag, only: droponOptions.only});
710
757
  var child = null;
711
758
 
712
759
  if(children) {
@@ -733,7 +780,7 @@ var Sortable = {
733
780
  },
734
781
 
735
782
  unmark: function() {
736
- if(Sortable._marker) Element.hide(Sortable._marker);
783
+ if(Sortable._marker) Sortable._marker.hide();
737
784
  },
738
785
 
739
786
  mark: function(dropon, position) {
@@ -742,23 +789,21 @@ var Sortable = {
742
789
  if(sortable && !sortable.ghosting) return;
743
790
 
744
791
  if(!Sortable._marker) {
745
- Sortable._marker = $('dropmarker') || document.createElement('DIV');
746
- Element.hide(Sortable._marker);
747
- Element.addClassName(Sortable._marker, 'dropmarker');
748
- Sortable._marker.style.position = 'absolute';
792
+ Sortable._marker =
793
+ ($('dropmarker') || Element.extend(document.createElement('DIV'))).
794
+ hide().addClassName('dropmarker').setStyle({position:'absolute'});
749
795
  document.getElementsByTagName("body").item(0).appendChild(Sortable._marker);
750
796
  }
751
797
  var offsets = Position.cumulativeOffset(dropon);
752
- Sortable._marker.style.left = offsets[0] + 'px';
753
- Sortable._marker.style.top = offsets[1] + 'px';
798
+ Sortable._marker.setStyle({left: offsets[0]+'px', top: offsets[1] + 'px'});
754
799
 
755
800
  if(position=='after')
756
801
  if(sortable.overlap == 'horizontal')
757
- Sortable._marker.style.left = (offsets[0]+dropon.clientWidth) + 'px';
802
+ Sortable._marker.setStyle({left: (offsets[0]+dropon.clientWidth) + 'px'});
758
803
  else
759
- Sortable._marker.style.top = (offsets[1]+dropon.clientHeight) + 'px';
804
+ Sortable._marker.setStyle({top: (offsets[1]+dropon.clientHeight) + 'px'});
760
805
 
761
- Element.show(Sortable._marker);
806
+ Sortable._marker.show();
762
807
  },
763
808
 
764
809
  _tree: function(element, options, parent) {
@@ -773,9 +818,9 @@ var Sortable = {
773
818
  id: encodeURIComponent(match ? match[1] : null),
774
819
  element: element,
775
820
  parent: parent,
776
- children: new Array,
821
+ children: [],
777
822
  position: parent.children.length,
778
- container: Sortable._findChildrenElement(children[i], options.treeTag.toUpperCase())
823
+ container: $(children[i]).down(options.treeTag)
779
824
  }
780
825
 
781
826
  /* Get the element containing the children and recurse over it */
@@ -788,17 +833,6 @@ var Sortable = {
788
833
  return parent;
789
834
  },
790
835
 
791
- /* Finds the first element of the given tag type within a parent element.
792
- Used for finding the first LI[ST] within a L[IST]I[TEM].*/
793
- _findChildrenElement: function (element, containerTag) {
794
- if (element && element.hasChildNodes)
795
- for (var i = 0; i < element.childNodes.length; ++i)
796
- if (element.childNodes[i].tagName == containerTag)
797
- return element.childNodes[i];
798
-
799
- return null;
800
- },
801
-
802
836
  tree: function(element) {
803
837
  element = $(element);
804
838
  var sortableOptions = this.options(element);
@@ -813,12 +847,12 @@ var Sortable = {
813
847
  var root = {
814
848
  id: null,
815
849
  parent: null,
816
- children: new Array,
850
+ children: [],
817
851
  container: element,
818
852
  position: 0
819
853
  }
820
854
 
821
- return Sortable._tree (element, options, root);
855
+ return Sortable._tree(element, options, root);
822
856
  },
823
857
 
824
858
  /* Construct a [i] index for a particular node */
@@ -867,7 +901,7 @@ var Sortable = {
867
901
 
868
902
  if (options.tree) {
869
903
  return Sortable.tree(element, arguments[1]).children.map( function (item) {
870
- return [name + Sortable._constructIndex(item) + "=" +
904
+ return [name + Sortable._constructIndex(item) + "[id]=" +
871
905
  encodeURIComponent(item.id)].concat(item.children.map(arguments.callee));
872
906
  }).flatten().join('&');
873
907
  } else {
@@ -878,12 +912,10 @@ var Sortable = {
878
912
  }
879
913
  }
880
914
 
881
- /* Returns true if child is contained within element */
915
+ // Returns true if child is contained within element
882
916
  Element.isParent = function(child, element) {
883
917
  if (!child.parentNode || child == element) return false;
884
-
885
918
  if (child.parentNode == element) return true;
886
-
887
919
  return Element.isParent(child.parentNode, element);
888
920
  }
889
921
 
@@ -906,8 +938,5 @@ Element.findChildren = function(element, only, recursive, tagName) {
906
938
  }
907
939
 
908
940
  Element.offsetSize = function (element, type) {
909
- if (type == 'vertical' || type == 'height')
910
- return element.offsetHeight;
911
- else
912
- return element.offsetWidth;
913
- }
941
+ return element['offset' + ((type=='vertical' || type=='height') ? 'Height' : 'Width')];
942
+ }