radiant 1.0.0.rc4 → 1.0.0.rc5

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of radiant might be problematic. Click here for more details.

Files changed (311) hide show
  1. data/Gemfile +1 -1
  2. data/INSTALL.md +6 -38
  3. data/app/controllers/admin/pages_controller.rb +11 -13
  4. data/app/helpers/admin/references_helper.rb +9 -7
  5. data/app/models/menu_renderer.rb +8 -1
  6. data/app/views/admin/layouts/index.html.haml +2 -3
  7. data/app/views/admin/pages/index.html.haml +1 -1
  8. data/app/views/admin/snippets/index.html.haml +1 -2
  9. data/config/locales/en.yml +1 -1
  10. data/db/migrate/20100805155020_convert_page_metas.rb +5 -0
  11. data/db/migrate/20110902203823_add_allowed_children_cache_to_pages.rb +1 -1
  12. data/db/migrate/20120209231801_change_pages_allowed_children_cache_to_text.rb +9 -0
  13. data/db/schema.rb +5 -5
  14. data/lib/generators/extension/templates/RSpecRakefile +2 -2
  15. data/lib/generators/extension/templates/Rakefile +2 -2
  16. data/lib/generators/instance/instance_generator.rb +19 -0
  17. data/lib/generators/instance/templates/instance_gemfile +8 -0
  18. data/lib/radiant.rb +1 -1
  19. data/lib/tasks/database.rake +9 -3
  20. data/public/stylesheets/sass/admin/_base.sass +2 -1
  21. data/public/stylesheets/sass/admin/modules/_boxes.sass +1 -1
  22. data/public/stylesheets/sass/admin/modules/_gradients.sass +4 -0
  23. data/public/stylesheets/sass/admin/partials/_actions.sass +2 -2
  24. data/public/stylesheets/sass/admin/partials/_avatars.sass +2 -2
  25. data/public/stylesheets/sass/admin/partials/_dateinput.sass +1 -1
  26. data/public/stylesheets/sass/admin/partials/_dropdown.sass +1 -1
  27. data/public/stylesheets/sass/admin/partials/_forms.sass +2 -2
  28. data/public/stylesheets/sass/admin/partials/_header.sass +1 -1
  29. data/public/stylesheets/sass/admin/partials/_popup.sass +6 -6
  30. data/public/stylesheets/sass/admin/partials/_tabcontrol.sass +1 -1
  31. data/public/stylesheets/sass/admin/partials/_validations.sass +1 -1
  32. data/radiant.gemspec +4 -3
  33. data/script/extension +1 -1
  34. data/spec/generators/instance_generator_spec.rb +6 -1
  35. data/spec/models/menu_renderer_spec.rb +6 -0
  36. data/spec/models/standard_tags_spec.rb +4 -2
  37. metadata +188 -324
  38. data/config.ru +0 -2
  39. data/public/flash/ZeroClipboard.swf +0 -0
  40. data/public/images/admin/assets/add.png +0 -0
  41. data/public/images/admin/assets/archive_icon.png +0 -0
  42. data/public/images/admin/assets/audio_icon.png +0 -0
  43. data/public/images/admin/assets/audio_thumbnail.png +0 -0
  44. data/public/images/admin/assets/c_icon.png +0 -0
  45. data/public/images/admin/assets/copy.png +0 -0
  46. data/public/images/admin/assets/css_icon.png +0 -0
  47. data/public/images/admin/assets/database_icon.png +0 -0
  48. data/public/images/admin/assets/delete.png +0 -0
  49. data/public/images/admin/assets/document_icon.png +0 -0
  50. data/public/images/admin/assets/document_thumbnail.png +0 -0
  51. data/public/images/admin/assets/flash_icon.png +0 -0
  52. data/public/images/admin/assets/flash_thumbnail.png +0 -0
  53. data/public/images/admin/assets/font_icon.png +0 -0
  54. data/public/images/admin/assets/gzip_icon.png +0 -0
  55. data/public/images/admin/assets/html_icon.png +0 -0
  56. data/public/images/admin/assets/image_icon.png +0 -0
  57. data/public/images/admin/assets/image_thumbnail.png +0 -0
  58. data/public/images/admin/assets/java_icon.png +0 -0
  59. data/public/images/admin/assets/page_edit.png +0 -0
  60. data/public/images/admin/assets/perl_icon.png +0 -0
  61. data/public/images/admin/assets/php_icon.png +0 -0
  62. data/public/images/admin/assets/presentation_icon.png +0 -0
  63. data/public/images/admin/assets/python_icon.png +0 -0
  64. data/public/images/admin/assets/reorder_assets.png +0 -0
  65. data/public/images/admin/assets/ruby_icon.png +0 -0
  66. data/public/images/admin/assets/script_icon.png +0 -0
  67. data/public/images/admin/assets/spreadsheet_icon.png +0 -0
  68. data/public/images/admin/assets/tar_icon.png +0 -0
  69. data/public/images/admin/assets/unknown_icon.png +0 -0
  70. data/public/images/admin/assets/unknown_thumbnail.png +0 -0
  71. data/public/images/admin/assets/video_icon.png +0 -0
  72. data/public/images/admin/assets/video_thumbnail.png +0 -0
  73. data/public/images/admin/assets/xml_icon.png +0 -0
  74. data/public/images/admin/assets/zip_icon.png +0 -0
  75. data/public/images/roasters/banner.jpg +0 -0
  76. data/public/images/roasters/closelabel.gif +0 -0
  77. data/public/images/roasters/comment.png +0 -0
  78. data/public/images/roasters/gallery1.jpg +0 -0
  79. data/public/images/roasters/gallery2.jpg +0 -0
  80. data/public/images/roasters/gallery3.jpg +0 -0
  81. data/public/images/roasters/gallery4.jpg +0 -0
  82. data/public/images/roasters/gift.gif +0 -0
  83. data/public/images/roasters/green.gif +0 -0
  84. data/public/images/roasters/nav-background.gif +0 -0
  85. data/public/images/roasters/nav-divider.gif +0 -0
  86. data/public/images/roasters/nextlabel.gif +0 -0
  87. data/public/images/roasters/open.gif +0 -0
  88. data/public/images/roasters/preview-1.jpg +0 -0
  89. data/public/images/roasters/preview.jpg +0 -0
  90. data/public/images/roasters/prevlabel.gif +0 -0
  91. data/public/images/roasters/prize.gif +0 -0
  92. data/public/images/roasters/recycle.gif +0 -0
  93. data/public/images/roasters/rss.gif +0 -0
  94. data/public/images/roasters/thumb-grinder.jpg +0 -0
  95. data/public/images/roasters/thumb-grower.jpg +0 -0
  96. data/public/images/roasters/thumb-roaster.jpg +0 -0
  97. data/public/images/roasters/truck.gif +0 -0
  98. data/public/javascripts/admin/assets.js +0 -296
  99. data/public/javascripts/application.js +0 -2
  100. data/public/javascripts/controls.js +0 -963
  101. data/public/javascripts/dragdrop.js +0 -973
  102. data/public/javascripts/effects.js +0 -1128
  103. data/public/javascripts/prototype.js +0 -4320
  104. data/public/stylesheets/sass/admin/assets.sass +0 -209
  105. data/testthegemgeneration/CHANGELOG.md +0 -721
  106. data/testthegemgeneration/CONTRIBUTORS.md +0 -257
  107. data/testthegemgeneration/Gemfile +0 -57
  108. data/testthegemgeneration/Gemfile.lock +0 -107
  109. data/testthegemgeneration/INSTALL.md +0 -42
  110. data/testthegemgeneration/LICENSE.md +0 -21
  111. data/testthegemgeneration/README.md +0 -84
  112. data/testthegemgeneration/Rakefile +0 -3
  113. data/testthegemgeneration/config.ru +0 -2
  114. data/testthegemgeneration/config/boot.rb +0 -122
  115. data/testthegemgeneration/config/cucumber.yml +0 -7
  116. data/testthegemgeneration/config/database.yml +0 -16
  117. data/testthegemgeneration/config/environment.rb +0 -81
  118. data/testthegemgeneration/config/environments/cucumber.rb +0 -22
  119. data/testthegemgeneration/config/environments/development.rb +0 -17
  120. data/testthegemgeneration/config/environments/production.rb +0 -24
  121. data/testthegemgeneration/config/environments/test.rb +0 -32
  122. data/testthegemgeneration/config/initializers/radiant_config.rb +0 -16
  123. data/testthegemgeneration/config/preinitializer.rb +0 -19
  124. data/testthegemgeneration/config/routes.rb +0 -1
  125. data/testthegemgeneration/db/development.sqlite3.db +0 -0
  126. data/testthegemgeneration/db/schema.rb +0 -142
  127. data/testthegemgeneration/log/development.log +0 -1055
  128. data/testthegemgeneration/public/404.html +0 -8
  129. data/testthegemgeneration/public/500.html +0 -8
  130. data/testthegemgeneration/public/dispatch.cgi +0 -10
  131. data/testthegemgeneration/public/dispatch.fcgi +0 -24
  132. data/testthegemgeneration/public/dispatch.rb +0 -10
  133. data/testthegemgeneration/public/favicon.ico +0 -0
  134. data/testthegemgeneration/public/flash/ZeroClipboard.swf +0 -0
  135. data/testthegemgeneration/public/images/admin/add_tab.png +0 -0
  136. data/testthegemgeneration/public/images/admin/assets/add.png +0 -0
  137. data/testthegemgeneration/public/images/admin/assets/archive_icon.png +0 -0
  138. data/testthegemgeneration/public/images/admin/assets/audio_icon.png +0 -0
  139. data/testthegemgeneration/public/images/admin/assets/audio_thumbnail.png +0 -0
  140. data/testthegemgeneration/public/images/admin/assets/c_icon.png +0 -0
  141. data/testthegemgeneration/public/images/admin/assets/copy.png +0 -0
  142. data/testthegemgeneration/public/images/admin/assets/css_icon.png +0 -0
  143. data/testthegemgeneration/public/images/admin/assets/database_icon.png +0 -0
  144. data/testthegemgeneration/public/images/admin/assets/delete.png +0 -0
  145. data/testthegemgeneration/public/images/admin/assets/document_icon.png +0 -0
  146. data/testthegemgeneration/public/images/admin/assets/document_thumbnail.png +0 -0
  147. data/testthegemgeneration/public/images/admin/assets/flash_icon.png +0 -0
  148. data/testthegemgeneration/public/images/admin/assets/flash_thumbnail.png +0 -0
  149. data/testthegemgeneration/public/images/admin/assets/font_icon.png +0 -0
  150. data/testthegemgeneration/public/images/admin/assets/gzip_icon.png +0 -0
  151. data/testthegemgeneration/public/images/admin/assets/html_icon.png +0 -0
  152. data/testthegemgeneration/public/images/admin/assets/image_icon.png +0 -0
  153. data/testthegemgeneration/public/images/admin/assets/image_thumbnail.png +0 -0
  154. data/testthegemgeneration/public/images/admin/assets/java_icon.png +0 -0
  155. data/testthegemgeneration/public/images/admin/assets/page_edit.png +0 -0
  156. data/testthegemgeneration/public/images/admin/assets/perl_icon.png +0 -0
  157. data/testthegemgeneration/public/images/admin/assets/php_icon.png +0 -0
  158. data/testthegemgeneration/public/images/admin/assets/presentation_icon.png +0 -0
  159. data/testthegemgeneration/public/images/admin/assets/python_icon.png +0 -0
  160. data/testthegemgeneration/public/images/admin/assets/reorder_assets.png +0 -0
  161. data/testthegemgeneration/public/images/admin/assets/ruby_icon.png +0 -0
  162. data/testthegemgeneration/public/images/admin/assets/script_icon.png +0 -0
  163. data/testthegemgeneration/public/images/admin/assets/spreadsheet_icon.png +0 -0
  164. data/testthegemgeneration/public/images/admin/assets/tar_icon.png +0 -0
  165. data/testthegemgeneration/public/images/admin/assets/unknown_icon.png +0 -0
  166. data/testthegemgeneration/public/images/admin/assets/unknown_thumbnail.png +0 -0
  167. data/testthegemgeneration/public/images/admin/assets/video_icon.png +0 -0
  168. data/testthegemgeneration/public/images/admin/assets/video_thumbnail.png +0 -0
  169. data/testthegemgeneration/public/images/admin/assets/xml_icon.png +0 -0
  170. data/testthegemgeneration/public/images/admin/assets/zip_icon.png +0 -0
  171. data/testthegemgeneration/public/images/admin/avatar_32x32.png +0 -0
  172. data/testthegemgeneration/public/images/admin/avatar_64x64.png +0 -0
  173. data/testthegemgeneration/public/images/admin/avatar_96x96.png +0 -0
  174. data/testthegemgeneration/public/images/admin/brown_bottom_line.gif +0 -0
  175. data/testthegemgeneration/public/images/admin/calendar_down.gif +0 -0
  176. data/testthegemgeneration/public/images/admin/collapse.png +0 -0
  177. data/testthegemgeneration/public/images/admin/draft_page.png +0 -0
  178. data/testthegemgeneration/public/images/admin/expand.png +0 -0
  179. data/testthegemgeneration/public/images/admin/image.png +0 -0
  180. data/testthegemgeneration/public/images/admin/javascript.png +0 -0
  181. data/testthegemgeneration/public/images/admin/layout.png +0 -0
  182. data/testthegemgeneration/public/images/admin/metadata_toggle.png +0 -0
  183. data/testthegemgeneration/public/images/admin/minus.png +0 -0
  184. data/testthegemgeneration/public/images/admin/minus_disabled.png +0 -0
  185. data/testthegemgeneration/public/images/admin/minus_grey.png +0 -0
  186. data/testthegemgeneration/public/images/admin/navigation_secondary_separator.gif +0 -0
  187. data/testthegemgeneration/public/images/admin/page.png +0 -0
  188. data/testthegemgeneration/public/images/admin/plus.png +0 -0
  189. data/testthegemgeneration/public/images/admin/plus_disabled.png +0 -0
  190. data/testthegemgeneration/public/images/admin/plus_grey.png +0 -0
  191. data/testthegemgeneration/public/images/admin/popup_border_background.png +0 -0
  192. data/testthegemgeneration/public/images/admin/popup_border_bottom_left.png +0 -0
  193. data/testthegemgeneration/public/images/admin/popup_border_bottom_right.png +0 -0
  194. data/testthegemgeneration/public/images/admin/popup_border_top_left.png +0 -0
  195. data/testthegemgeneration/public/images/admin/popup_border_top_right.png +0 -0
  196. data/testthegemgeneration/public/images/admin/search.png +0 -0
  197. data/testthegemgeneration/public/images/admin/single_form_shadow.png +0 -0
  198. data/testthegemgeneration/public/images/admin/snippet.png +0 -0
  199. data/testthegemgeneration/public/images/admin/spinner.gif +0 -0
  200. data/testthegemgeneration/public/images/admin/status_background.png +0 -0
  201. data/testthegemgeneration/public/images/admin/status_bottom_left.png +0 -0
  202. data/testthegemgeneration/public/images/admin/status_bottom_right.png +0 -0
  203. data/testthegemgeneration/public/images/admin/status_spinner.gif +0 -0
  204. data/testthegemgeneration/public/images/admin/status_top_left.png +0 -0
  205. data/testthegemgeneration/public/images/admin/status_top_right.png +0 -0
  206. data/testthegemgeneration/public/images/admin/stylesheet.png +0 -0
  207. data/testthegemgeneration/public/images/admin/tab_close.png +0 -0
  208. data/testthegemgeneration/public/images/admin/upload.png +0 -0
  209. data/testthegemgeneration/public/images/admin/virtual_page.png +0 -0
  210. data/testthegemgeneration/public/images/radiant/radiant-badge-color.png +0 -0
  211. data/testthegemgeneration/public/images/roasters/banner.jpg +0 -0
  212. data/testthegemgeneration/public/images/roasters/closelabel.gif +0 -0
  213. data/testthegemgeneration/public/images/roasters/comment.png +0 -0
  214. data/testthegemgeneration/public/images/roasters/gallery1.jpg +0 -0
  215. data/testthegemgeneration/public/images/roasters/gallery2.jpg +0 -0
  216. data/testthegemgeneration/public/images/roasters/gallery3.jpg +0 -0
  217. data/testthegemgeneration/public/images/roasters/gallery4.jpg +0 -0
  218. data/testthegemgeneration/public/images/roasters/gift.gif +0 -0
  219. data/testthegemgeneration/public/images/roasters/green.gif +0 -0
  220. data/testthegemgeneration/public/images/roasters/nav-background.gif +0 -0
  221. data/testthegemgeneration/public/images/roasters/nav-divider.gif +0 -0
  222. data/testthegemgeneration/public/images/roasters/nextlabel.gif +0 -0
  223. data/testthegemgeneration/public/images/roasters/open.gif +0 -0
  224. data/testthegemgeneration/public/images/roasters/preview-1.jpg +0 -0
  225. data/testthegemgeneration/public/images/roasters/preview.jpg +0 -0
  226. data/testthegemgeneration/public/images/roasters/prevlabel.gif +0 -0
  227. data/testthegemgeneration/public/images/roasters/prize.gif +0 -0
  228. data/testthegemgeneration/public/images/roasters/recycle.gif +0 -0
  229. data/testthegemgeneration/public/images/roasters/rss.gif +0 -0
  230. data/testthegemgeneration/public/images/roasters/thumb-grinder.jpg +0 -0
  231. data/testthegemgeneration/public/images/roasters/thumb-grower.jpg +0 -0
  232. data/testthegemgeneration/public/images/roasters/thumb-roaster.jpg +0 -0
  233. data/testthegemgeneration/public/images/roasters/truck.gif +0 -0
  234. data/testthegemgeneration/public/javascripts/admin/application.js +0 -94
  235. data/testthegemgeneration/public/javascripts/admin/assets.js +0 -296
  236. data/testthegemgeneration/public/javascripts/admin/codearea.js +0 -165
  237. data/testthegemgeneration/public/javascripts/admin/controls.js +0 -965
  238. data/testthegemgeneration/public/javascripts/admin/cookie.js +0 -80
  239. data/testthegemgeneration/public/javascripts/admin/dateinput.js +0 -402
  240. data/testthegemgeneration/public/javascripts/admin/dragdrop.js +0 -974
  241. data/testthegemgeneration/public/javascripts/admin/dropdown.js +0 -216
  242. data/testthegemgeneration/public/javascripts/admin/effects.js +0 -1122
  243. data/testthegemgeneration/public/javascripts/admin/lowpro.js +0 -340
  244. data/testthegemgeneration/public/javascripts/admin/overrides.js +0 -1
  245. data/testthegemgeneration/public/javascripts/admin/page_preview.js +0 -41
  246. data/testthegemgeneration/public/javascripts/admin/pagefield.js +0 -54
  247. data/testthegemgeneration/public/javascripts/admin/pagestatus.js +0 -17
  248. data/testthegemgeneration/public/javascripts/admin/popup.js +0 -339
  249. data/testthegemgeneration/public/javascripts/admin/prototype.js +0 -4874
  250. data/testthegemgeneration/public/javascripts/admin/ruledtable.js +0 -13
  251. data/testthegemgeneration/public/javascripts/admin/shortcuts.js +0 -27
  252. data/testthegemgeneration/public/javascripts/admin/sitemap.js +0 -149
  253. data/testthegemgeneration/public/javascripts/admin/status.js +0 -233
  254. data/testthegemgeneration/public/javascripts/admin/tabcontrol.js +0 -123
  255. data/testthegemgeneration/public/javascripts/admin/toggle.js +0 -430
  256. data/testthegemgeneration/public/javascripts/admin/utility.js +0 -53
  257. data/testthegemgeneration/public/javascripts/admin/validationerror.js +0 -18
  258. data/testthegemgeneration/public/javascripts/application.js +0 -2
  259. data/testthegemgeneration/public/javascripts/controls.js +0 -963
  260. data/testthegemgeneration/public/javascripts/dragdrop.js +0 -973
  261. data/testthegemgeneration/public/javascripts/effects.js +0 -1128
  262. data/testthegemgeneration/public/javascripts/prototype.js +0 -4320
  263. data/testthegemgeneration/public/loading-iframe.html +0 -11
  264. data/testthegemgeneration/public/robots.txt +0 -1
  265. data/testthegemgeneration/public/stylesheets/admin/assets.css +0 -1
  266. data/testthegemgeneration/public/stylesheets/admin/main.css +0 -1
  267. data/testthegemgeneration/public/stylesheets/admin/overrides.css +0 -0
  268. data/testthegemgeneration/public/stylesheets/sass/admin/_base.sass +0 -17
  269. data/testthegemgeneration/public/stylesheets/sass/admin/assets.sass +0 -209
  270. data/testthegemgeneration/public/stylesheets/sass/admin/main.sass +0 -27
  271. data/testthegemgeneration/public/stylesheets/sass/admin/modules/_boxes.sass +0 -6
  272. data/testthegemgeneration/public/stylesheets/sass/admin/modules/_links.sass +0 -18
  273. data/testthegemgeneration/public/stylesheets/sass/admin/overrides.sass +0 -2
  274. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_actions.sass +0 -96
  275. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_avatars.sass +0 -10
  276. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_content.sass +0 -58
  277. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_dateinput.sass +0 -62
  278. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_deprecated.sass +0 -55
  279. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_dropdown.sass +0 -28
  280. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_footer.sass +0 -12
  281. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_forms.sass +0 -322
  282. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_header.sass +0 -114
  283. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_index.sass +0 -147
  284. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_layout.sass +0 -10
  285. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_messages.sass +0 -10
  286. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_popup.sass +0 -213
  287. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_tabcontrol.sass +0 -72
  288. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_toolbar.sass +0 -31
  289. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_typography.sass +0 -60
  290. data/testthegemgeneration/public/stylesheets/sass/admin/partials/_validations.sass +0 -19
  291. data/testthegemgeneration/script/about +0 -4
  292. data/testthegemgeneration/script/autospec +0 -5
  293. data/testthegemgeneration/script/breakpointer +0 -3
  294. data/testthegemgeneration/script/console +0 -3
  295. data/testthegemgeneration/script/cucumber +0 -10
  296. data/testthegemgeneration/script/dbconsole +0 -3
  297. data/testthegemgeneration/script/extension +0 -5
  298. data/testthegemgeneration/script/generate +0 -6
  299. data/testthegemgeneration/script/performance/benchmarker +0 -3
  300. data/testthegemgeneration/script/performance/profiler +0 -3
  301. data/testthegemgeneration/script/performance/request +0 -3
  302. data/testthegemgeneration/script/process/inspector +0 -3
  303. data/testthegemgeneration/script/process/reaper +0 -3
  304. data/testthegemgeneration/script/process/spawner +0 -3
  305. data/testthegemgeneration/script/process/spinner +0 -3
  306. data/testthegemgeneration/script/runner +0 -3
  307. data/testthegemgeneration/script/server +0 -3
  308. data/testthegemgeneration/script/spec +0 -5
  309. data/testthegemgeneration/script/spec_server +0 -116
  310. data/testthegemgeneration/script/version +0 -5
  311. data/testthegemgeneration/tmp/radiant_config_cache.txt +0 -0
@@ -1,80 +0,0 @@
1
- /*
2
- cookie.js
3
-
4
- Copyright (c) 2007, 2008 Maxime Haineault
5
- (http://www.haineault.com/code/cookie-js/, http://code.google.com/p/cookie-js/)
6
-
7
- Portions Copyright (c) 2008, John W. Long
8
-
9
- Permission is hereby granted, free of charge, to any person obtaining
10
- a copy of this software and associated documentation files (the
11
- "Software"), to deal in the Software without restriction, including
12
- without limitation the rights to use, copy, modify, merge, publish,
13
- distribute, sublicense, and/or sell copies of the Software, and to
14
- permit persons to whom the Software is furnished to do so, subject to
15
- the following conditions:
16
-
17
- The above copyright notice and this permission notice shall be
18
- included in all copies or substantial portions of the Software.
19
-
20
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
24
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
25
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
26
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
27
- */
28
-
29
- Cookie = {
30
- get: function(name) {
31
- // Still not sure that "[a-zA-Z0-9.()=|%/]+($|;)" match *all* allowed characters in cookies
32
- tmp = document.cookie.match((new RegExp(name +'=[a-zA-Z0-9.()=|%/]+($|;)','g')));
33
- if (!tmp || !tmp[0]) {
34
- return null;
35
- } else {
36
- return unescape(tmp[0].substring(name.length + 1, tmp[0].length).replace(';', '')) || null;
37
- }
38
- },
39
-
40
- set: function(name, value, expireInHours, path, domain, secure) {
41
- var cookie = [
42
- name + '=' + escape(value),
43
- 'path=' + ((!path || path == '') ? '/' : path)
44
- ];
45
- if (Cookie._notEmpty(domain)) cookie.push('domain=' + domain);
46
- if (Cookie._notEmpty(expireInHours)) cookie.push(Cookie._hoursToExpireDate(expireInHours));
47
- if (Cookie._notEmpty(secure)) cookie.push('secure');
48
- return document.cookie = cookie.join(';');
49
- },
50
-
51
- erase: function(name, path, domain) {
52
- path = (!path || typeof path != 'string') ? '' : path;
53
- domain = (!domain || typeof domain != 'string') ? '' : domain;
54
- if (Cookie.get(name)) Cookie.set(name, '', 'Thu, 01-Jan-70 00:00:01 GMT', path, domain);
55
- },
56
-
57
- // Returns true if cookies are enabled
58
- accept: function() {
59
- Cookie.set('b49f729efde9b2578ea9f00563d06e57', 'true');
60
- if (Cookie.get('b49f729efde9b2578ea9f00563d06e57') == 'true') {
61
- Cookie.erase('b49f729efde9b2578ea9f00563d06e57');
62
- return true;
63
- }
64
- return false;
65
- },
66
-
67
- _notEmpty: function(value) {
68
- return (typeof value != 'undefined' && value != null && value != '');
69
- },
70
-
71
- // Private function for calculating the date of expiration based on hours
72
- _hoursToExpireDate: function(hours) {
73
- if (parseInt(hours) == 'NaN' ) return '';
74
- else {
75
- now = new Date();
76
- now.setTime(now.getTime() + (parseInt(hours) * 60 * 60 * 1000));
77
- return now.toGMTString();
78
- }
79
- }
80
- };
@@ -1,402 +0,0 @@
1
- /*
2
- * dateinput.js
3
- *
4
- * dependencies: prototype.js, lowpro.js
5
- *
6
- * --------------------------------------------------------------------------
7
- *
8
- * Renders a date input. To use, add the following line to application.js:
9
- *
10
- * Event.addBehavior({'input.date': DateInputBehavior()});
11
- *
12
- * This will effectively wire all inputs with a class of "date" to the
13
- * DateInputBehavior.
14
- *
15
- * This code was originally based on Dan Web's code for date_selector.js, but
16
- * has been modified from its original form. You can find Dan's original
17
- * code here:
18
- *
19
- * http://github.com/danwrong/low-pro/blob/master/behaviours/date_selector.js
20
- *
21
- * --------------------------------------------------------------------------
22
- *
23
- * Copyright (c) 2007-2009, Five Points Solutions, Inc.
24
- * Portions Copyright (c) 2004, Dan Web
25
- *
26
- * Permission is hereby granted, free of charge, to any person obtaining a
27
- * copy of this software and associated documentation files (the "Software"),
28
- * to deal in the Software without restriction, including without limitation
29
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
30
- * and/or sell copies of the Software, and to permit persons to whom the
31
- * Software is furnished to do so, subject to the following conditions:
32
- *
33
- * The above copyright notice and this permission notice shall be included in
34
- * all copies or substantial portions of the Software.
35
- *
36
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
37
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
38
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
39
- * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
40
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
41
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
42
- * DEALINGS IN THE SOFTWARE.
43
- *
44
- */
45
-
46
- DateInputBehavior = Behavior.create({
47
-
48
- initialize: function(options) {
49
- this.element.setAttribute("autocomplete", "off");
50
- this.calendar = null;
51
- this.options = Object.extend(DateInputBehavior.DEFAULTS, options || {});
52
- this.date = this.getDate();
53
- this._createCalendar();
54
- },
55
-
56
- setDate: function(value, hideCalendar) {
57
- this.date = value;
58
- this.element.value = this.options.setter(this.date);
59
- var timeoutTime = 250;
60
- if (Prototype.Browser.IE) timeoutTime = 50;
61
-
62
- if (hideCalendar == null) hideCalendar = true;
63
-
64
- if (hideCalendar && this.calendar) {
65
- setTimeout(function() {
66
- this.calendar.element.hide();
67
- this.element.select();
68
- }.bind(this), timeoutTime);
69
- }
70
- this.element.fire('date:changed');
71
- },
72
-
73
- _createCalendar : function() {
74
- var calendar = $div({'class': 'calendar_popup'});
75
- var body = $(document.getElementsByTagName('body')[0]);
76
- body.insert(calendar);
77
- calendar.setStyle('position: absolute');
78
- this.calendar = new DateInputBehavior.Calendar(calendar, this);
79
- },
80
-
81
- onclick : function(event) {
82
- if (this._isOverWidget(event)) {
83
- this.calendar.toggle();
84
- event.stop();
85
- }
86
- },
87
-
88
- onmouseover: function(event) {
89
- if (this._isOverWidget(event)) this.element.setStyle("cursor: pointer");
90
- else this.element.setStyle("cursor: text");
91
- },
92
-
93
- onmouseout: function(event) {
94
- if (this._isOverWidget(event)) this.element.setStyle("cursor: text");
95
- else this.element.setStyle("cursor: pointer");
96
- },
97
-
98
- onmousemove: function(event) {
99
- this.onmouseover(event);
100
- },
101
-
102
- onkeypress: function(event) {
103
- switch(event.keyCode) {
104
- case Event.KEY_UP:
105
- case 38:
106
- case Event.KEY_DOWN:
107
- case 63233:
108
- case 40:
109
- this.calendar.toggle();
110
- event.stop();
111
- break;
112
- case Event.KEY_ESC:
113
- this.calendar.hide();
114
- break;
115
- case Event.KEY_TAB:
116
- this.calendar.hide();
117
- event.stop();
118
- var formElements = this.element.up('form').getElements();
119
- var elementIndex = formElements.indexOf(this.element) + 1;
120
- if (formElements.length > elementIndex) formElements[elementIndex].focus();
121
- break;
122
- }
123
- },
124
-
125
- onkeydown: function(event) {
126
- if (Prototype.Browser.IE) this.onkeypress(event);
127
- if (Prototype.Browser.WebKit && (event.keyCode == 40 || event.keyCode == 38)){
128
- this.onkeypress(event);
129
- }
130
- },
131
-
132
- getDate : function() {
133
- return this.options.getter(this.element.value) || new Date();
134
- },
135
-
136
- _isOverWidget: function(event) {
137
- var positionedOverWidget = null;
138
- if (Prototype.Browser.IE) {
139
- var widgetLeft = this.element.cumulativeOffset().left;
140
- var widgetRight = this.element.cumulativeOffset().left + this.element.getDimensions().width;
141
- positionedOverWidget = (event.pointerX() >= widgetLeft && event.pointerX() <= widgetRight);
142
- } else {
143
- var calendarIconWidth = parseInt(this.element.getStyle('padding-right'), 10);
144
- var widgetLeft = this.element.cumulativeOffset().left + this.element.getDimensions().width - calendarIconWidth;
145
- positionedOverWidget = (event.pointerX() >= widgetLeft);
146
- }
147
- return positionedOverWidget;
148
- }
149
- });
150
-
151
- DateInputBehavior.Calendar = Behavior.create({
152
-
153
- initialize: function(selector) {
154
- this.selector = selector;
155
- this.element.hide();
156
- Event.observe(document, 'click', this.element.hide.bind(this.element));
157
- },
158
-
159
- show: function() {
160
- DateInputBehavior.Calendar.instances.invoke('hide');
161
- this.date = this.selector.getDate();
162
- this.redraw();
163
- this.element.setStyle({
164
- 'top': this.getVerticalOffset(this.selector.element) + 'px',
165
- 'left': Math.max(this.selector.element.cumulativeOffset().left + this.selector.element.getWidth() - this.element.getWidth() - 4, this.selector.element.cumulativeOffset().left) + 'px',
166
- 'z-index': 10001
167
- });
168
- this.element.show();
169
- this.active = true;
170
- },
171
-
172
- getVerticalOffset: function(selector){
173
- var defaultOffset = this.selector.element.cumulativeOffset().top + this.selector.element.getHeight() + 2;
174
- var height = this.element.getHeight();
175
- var top = 0;
176
-
177
- if(document.viewport.getHeight() > defaultOffset + height) {
178
- top = defaultOffset;
179
- } else {
180
- top = (defaultOffset - height - selector.getHeight() - 6);
181
- }
182
-
183
- if (top < document.viewport.getScrollOffsets().top)
184
- top = document.viewport.getScrollOffsets().top;
185
-
186
- return top;
187
- },
188
-
189
- hide: function() {
190
- this.element.hide();
191
- this.active = false;
192
- },
193
-
194
- toggle: function() {
195
- if (this.element.visible()) {
196
- this.hide();
197
- } else {
198
- this.show();
199
- }
200
- },
201
-
202
- redraw: function() {
203
- var oldMonth = this.element.down('select.month');
204
- if (oldMonth) Event.stopObserving(oldMonth, 'change', oldMonth._monthChanged);
205
-
206
- var oldYear = this.element.down('select.year');
207
- if (oldYear) Event.stopObserving(oldYear, 'change', oldYear._yearChanged);
208
-
209
- var html = '<table class="calendar" border="0" cellpadding="0" cellspacing="0">' +
210
- ' <thead>' +
211
- ' <tr class="month_year_navigation">' +
212
- ' <th class="back"><a href="#">&larr;</a></th>' +
213
- ' <th colspan="5" class="month_year">' + this._monthYear() + '</th>' +
214
- ' <th class="forward"><a href="#">&rarr;</a></th>' +
215
- ' </tr>' +
216
- ' <tr class="day_header">' + this._dayRows() + '</tr>' +
217
- ' </thead>' +
218
- ' <tbody>' +
219
- this._buildDateCells() +
220
- '</tbody></table>';
221
- this.element.innerHTML = '';
222
- var table = DOM.Builder.fromHTML(html);
223
- this.element.insert(table);
224
-
225
- var newMonth = this.element.down('select.month');
226
- newMonth._monthChanged = this._monthChanged.bindAsEventListener(this);
227
- Event.observe(newMonth, 'change', newMonth._monthChanged);
228
-
229
- var newYear = this.element.down('select.year');
230
- newYear._yearChanged = this._yearChanged.bindAsEventListener(this);
231
- Event.observe(newYear, 'change', newYear._yearChanged);
232
- },
233
-
234
- onclick: function(event) {
235
- event.stop();
236
- if ($(event.target.parentNode).hasClassName('day')) return this._setDate(event.target);
237
- if ($(event.target.parentNode).hasClassName('back')) return this._backMonth();
238
- if ($(event.target.parentNode).hasClassName('forward')) return this._forwardMonth();
239
- },
240
-
241
- _monthChanged: function(event) {
242
- event.stop();
243
- return this._selectMonth(event.target);
244
- },
245
-
246
- _yearChanged: function(event) {
247
- event.stop();
248
- return this._selectYear(event.target);
249
- },
250
-
251
- _setDate: function(source) {
252
- if (source.innerHTML.strip() != '') {
253
- this.date.setDate(parseInt(source.innerHTML));
254
- this.selector.setDate(this.date);
255
- $A(this.element.getElementsByClassName('selected')).invoke('removeClassName', 'selected');
256
- source.parentNode.addClassName('selected');
257
- }
258
- },
259
-
260
- _backMonth: function() {
261
- this.date.setMonth(this.date.getMonth() - 1);
262
- this.redraw();
263
- return false;
264
- },
265
-
266
- _forwardMonth: function() {
267
- this.date.setMonth(this.date.getMonth() + 1);
268
- this.redraw();
269
- return false;
270
- },
271
-
272
- _selectMonth: function(combo) {
273
- this.date.setMonth(combo.selectedIndex);
274
- this.selector.setDate(this.date, false);
275
- this.redraw();
276
- return false;
277
- },
278
-
279
- _selectYear: function(combo) {
280
- var year = parseInt($F(combo));
281
- this.date.setYear(year);
282
- this.selector.setDate(this.date, false);
283
- this.redraw();
284
- return false;
285
- },
286
-
287
- _getDateFromSelector: function() {
288
- this.date = new Date(this.selector.date.getTime());
289
- },
290
-
291
- _firstDay: function(month, year) {
292
- return new Date(year, month, 1).getDay();
293
- },
294
-
295
- _monthLength: function(month, year) {
296
- var length = DateInputBehavior.Calendar.MONTHS[month].days;
297
- return (month == 1 && (year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0))) ? 29 : length;
298
- },
299
-
300
- _monthYear: function() {
301
- var currentMonth = this.date.getMonth();
302
- var currentYear = this.date.getFullYear();
303
- var todaysYear = (new Date()).getFullYear();
304
- var html = '';
305
- html += '<select class="month">';
306
- DateInputBehavior.Calendar.MONTHS.each(function(month, index) {
307
- if (index == currentMonth) {
308
- html += '<option selected="selected">' + month.label + '</option>';
309
- } else {
310
- html += '<option>' + month.label + '</option>';
311
- }
312
- });
313
- html += '</select>';
314
- if (!(Prototype.Browser.WebKit || Prototype.Browser.MobileSafari)) html += ' ';
315
- html += '<select class="year">';
316
- for (var index = todaysYear - 100; index < todaysYear + 50; index++) {
317
- if (index == currentYear) {
318
- html += '<option selected="selected">' + index + '</option>';
319
- } else {
320
- html += '<option>' + index + '</option>';
321
- }
322
- }
323
- html += '</select>';
324
- return html;
325
- },
326
-
327
- _dayRows: function() {
328
- for (var i = 0, html='', day; day = DateInputBehavior.Calendar.DAYS[i]; i++)
329
- html += '<th>' + day + '</th>';
330
- return html;
331
- },
332
-
333
- _buildDateCells: function() {
334
- var month = this.date.getMonth(), year = this.date.getFullYear();
335
- var day = 1, monthLength = this._monthLength(month, year), firstDay = this._firstDay(month, year);
336
- var html = '<tr>';
337
-
338
- for (var i = 0; i < 9; i++) {
339
- for (var j = 0; j <= 6; j++) {
340
-
341
- if (day <= monthLength && (i > 0 || j >= firstDay)) {
342
- var classes = ['day'];
343
-
344
- if (this._compareDate(new Date(), year, month, day)) classes.push('today');
345
- if (this._compareDate(this.selector.date, year, month, day)) classes.push('selected');
346
-
347
- html += '<td class="' + classes.join(' ') + '">' +
348
- '<a href="#">' + day++ + '</a>' +
349
- '</td>';
350
- } else html += '<td></td>';
351
- }
352
-
353
- if (day > monthLength) break;
354
- else html += '</tr><tr>';
355
- }
356
-
357
- return html + '</tr>';
358
- },
359
-
360
- _compareDate: function(date, year, month, day) {
361
- return date.getFullYear() == year &&
362
- date.getMonth() == month &&
363
- date.getDate() == day;
364
- }
365
- });
366
-
367
- DateInputBehavior.DEFAULTS = {
368
-
369
- setter: function(date) {
370
- return DateInputBehavior.Calendar.MONTHS[date.getMonth()].label +
371
- ' ' + date.getDate() + ', ' + date.getFullYear();
372
- },
373
-
374
- getter: function(value) {
375
- var parsed = Date.parse(value);
376
-
377
- if (!isNaN(parsed)) return new Date(parsed);
378
- else return null;
379
- }
380
-
381
- };
382
-
383
- Object.extend(DateInputBehavior.Calendar, {
384
-
385
- DAYS : $w('S M T W T F S'),
386
-
387
- MONTHS : [
388
- { label: 'January', days: 31 },
389
- { label: 'February', days: 28 },
390
- { label: 'March', days: 31 },
391
- { label: 'April', days: 30 },
392
- { label: 'May', days: 31 },
393
- { label: 'June', days: 30 },
394
- { label: 'July', days: 31 },
395
- { label: 'August', days: 31 },
396
- { label: 'September', days: 30 },
397
- { label: 'October', days: 31 },
398
- { label: 'November', days: 30 },
399
- { label: 'December', days: 31 }
400
- ]
401
-
402
- });