trusty-cms 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (380) hide show
  1. data/.gitignore +4 -1
  2. data/CHANGELOG.md +1 -1
  3. data/Gemfile +12 -8
  4. data/Gemfile.lock +141 -82
  5. data/LICENSE.md +1 -1
  6. data/README.md +48 -5
  7. data/Vagrantfile +122 -0
  8. data/{public → app/assets}/images/admin/add_tab.png +0 -0
  9. data/app/assets/images/admin/animated-overlay.gif +0 -0
  10. data/{public → app/assets}/images/admin/avatar_32x32.png +0 -0
  11. data/{public → app/assets}/images/admin/avatar_64x64.png +0 -0
  12. data/{public → app/assets}/images/admin/avatar_96x96.png +0 -0
  13. data/{public → app/assets}/images/admin/brown_bottom_line.gif +0 -0
  14. data/{public → app/assets}/images/admin/calendar_down.gif +0 -0
  15. data/{public → app/assets}/images/admin/collapse.png +0 -0
  16. data/{public/images/admin/expand.png → app/assets/images/admin/collapsed.png} +0 -0
  17. data/{public → app/assets}/images/admin/draft_page.png +0 -0
  18. data/{public → app/assets}/images/admin/image.png +0 -0
  19. data/{public → app/assets}/images/admin/javascript.png +0 -0
  20. data/{public → app/assets}/images/admin/layout.png +0 -0
  21. data/{public → app/assets}/images/admin/metadata_toggle.png +0 -0
  22. data/{public → app/assets}/images/admin/minus.png +0 -0
  23. data/{public → app/assets}/images/admin/minus_disabled.png +0 -0
  24. data/{public → app/assets}/images/admin/minus_grey.png +0 -0
  25. data/{public → app/assets}/images/admin/navigation_secondary_separator.gif +0 -0
  26. data/{public → app/assets}/images/admin/page.png +0 -0
  27. data/{public → app/assets}/images/admin/plus.png +0 -0
  28. data/{public → app/assets}/images/admin/plus_disabled.png +0 -0
  29. data/{public → app/assets}/images/admin/plus_grey.png +0 -0
  30. data/{public → app/assets}/images/admin/popup_border_background.png +0 -0
  31. data/{public → app/assets}/images/admin/popup_border_bottom_left.png +0 -0
  32. data/{public → app/assets}/images/admin/popup_border_bottom_right.png +0 -0
  33. data/{public → app/assets}/images/admin/popup_border_top_left.png +0 -0
  34. data/{public → app/assets}/images/admin/popup_border_top_right.png +0 -0
  35. data/{public → app/assets}/images/admin/search.png +0 -0
  36. data/{public → app/assets}/images/admin/single_form_shadow.png +0 -0
  37. data/{public → app/assets}/images/admin/snippet.png +0 -0
  38. data/{public → app/assets}/images/admin/spinner.gif +0 -0
  39. data/{public → app/assets}/images/admin/status_background.png +0 -0
  40. data/{public → app/assets}/images/admin/status_bottom_left.png +0 -0
  41. data/{public → app/assets}/images/admin/status_bottom_right.png +0 -0
  42. data/{public → app/assets}/images/admin/status_spinner.gif +0 -0
  43. data/{public → app/assets}/images/admin/status_top_left.png +0 -0
  44. data/{public → app/assets}/images/admin/status_top_right.png +0 -0
  45. data/{public → app/assets}/images/admin/stylesheet.png +0 -0
  46. data/{public → app/assets}/images/admin/tab_close.png +0 -0
  47. data/app/assets/images/admin/ui-bg_flat_75_ffffff_40x100.png +0 -0
  48. data/app/assets/images/admin/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  49. data/app/assets/images/admin/ui-bg_glass_65_ffffff_1x400.png +0 -0
  50. data/app/assets/images/admin/ui-bg_glass_75_dadada_1x400.png +0 -0
  51. data/app/assets/images/admin/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  52. data/app/assets/images/admin/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  53. data/app/assets/images/admin/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  54. data/app/assets/images/admin/ui-icons_222222_256x240.png +0 -0
  55. data/app/assets/images/admin/ui-icons_2e83ff_256x240.png +0 -0
  56. data/app/assets/images/admin/ui-icons_454545_256x240.png +0 -0
  57. data/app/assets/images/admin/ui-icons_888888_256x240.png +0 -0
  58. data/app/assets/images/admin/ui-icons_cd0a0a_256x240.png +0 -0
  59. data/{public → app/assets}/images/admin/upload.png +0 -0
  60. data/{public → app/assets}/images/admin/virtual_page.png +0 -0
  61. data/{public → app/assets}/images/radiant/radiant-badge-color.png +0 -0
  62. data/app/assets/javascripts/admin.js +35 -0
  63. data/app/assets/javascripts/admin/autopopulate-breadcrumb.js +35 -0
  64. data/{public → app/assets}/javascripts/admin/cookie.js +13 -13
  65. data/app/assets/javascripts/admin/datecheck.js +7 -0
  66. data/app/assets/javascripts/admin/dropdown.js +26 -0
  67. data/app/assets/javascripts/admin/jquery-ui.js +2371 -0
  68. data/app/assets/javascripts/admin/jquery.treetable.js +629 -0
  69. data/app/assets/javascripts/admin/jquery.validate.min.js +4 -0
  70. data/app/assets/javascripts/admin/modernizr.js +409 -0
  71. data/app/assets/javascripts/admin/more-or-less.js +38 -0
  72. data/app/assets/javascripts/admin/page-edit.js +51 -0
  73. data/app/assets/javascripts/admin/pagefield.js +35 -0
  74. data/app/assets/javascripts/admin/persist.min.js +31 -0
  75. data/app/assets/javascripts/admin/popup.js +40 -0
  76. data/app/assets/javascripts/admin/preview.js +40 -0
  77. data/app/assets/javascripts/admin/tabcontrol.js.erb +81 -0
  78. data/app/assets/javascripts/admin/tags.js +41 -0
  79. data/app/assets/javascripts/admin/treetable.js +50 -0
  80. data/app/assets/javascripts/admin/utilities.js +5 -0
  81. data/app/assets/javascripts/admin/validation.js +7 -0
  82. data/app/assets/javascripts/admin/validations/user_validations.js +21 -0
  83. data/app/assets/javascripts/ckeditor/config.js +10 -0
  84. data/{config/initializers/configuration_extensions.rb → app/assets/javascripts/ckeditor/contents.css} +0 -0
  85. data/app/assets/javascripts/notes.md +40 -0
  86. data/app/assets/stylesheets/admin/_base.scss +17 -0
  87. data/app/assets/stylesheets/admin/main.scss +34 -0
  88. data/app/assets/stylesheets/admin/modules/_boxes.scss +7 -0
  89. data/app/assets/stylesheets/admin/modules/_gradients.scss +5 -0
  90. data/app/assets/stylesheets/admin/modules/_links.scss +24 -0
  91. data/app/assets/stylesheets/admin/partials/_actions.scss +118 -0
  92. data/app/assets/stylesheets/admin/partials/_avatars.scss +12 -0
  93. data/app/assets/stylesheets/admin/partials/_content.scss +74 -0
  94. data/app/assets/stylesheets/admin/partials/_dateinput.scss +71 -0
  95. data/app/assets/stylesheets/admin/partials/_deprecated.scss +65 -0
  96. data/app/assets/stylesheets/admin/partials/_dropdown.scss +34 -0
  97. data/app/assets/stylesheets/admin/partials/_footer.scss +14 -0
  98. data/app/assets/stylesheets/admin/partials/_forms.scss +419 -0
  99. data/app/assets/stylesheets/admin/partials/_header.scss +135 -0
  100. data/app/assets/stylesheets/admin/partials/_index.scss +198 -0
  101. data/app/assets/stylesheets/admin/partials/_jquery-ui-structure.scss +258 -0
  102. data/app/assets/stylesheets/admin/partials/_jquery-ui-theme.scss +410 -0
  103. data/app/assets/stylesheets/admin/partials/_jquery-ui.scss +650 -0
  104. data/app/assets/stylesheets/admin/partials/_layout.scss +14 -0
  105. data/app/assets/stylesheets/admin/partials/_messages.scss +13 -0
  106. data/app/assets/stylesheets/admin/partials/_popup.scss +263 -0
  107. data/app/assets/stylesheets/admin/partials/_tabcontrol.scss +94 -0
  108. data/app/assets/stylesheets/admin/partials/_toolbar.scss +40 -0
  109. data/app/assets/stylesheets/admin/partials/_treetable.scss +120 -0
  110. data/app/assets/stylesheets/admin/partials/_typography.scss +77 -0
  111. data/app/assets/stylesheets/admin/partials/_validations.scss +22 -0
  112. data/app/controllers/admin/configuration_controller.rb +9 -9
  113. data/app/controllers/admin/extensions_controller.rb +1 -1
  114. data/app/controllers/admin/page_parts_controller.rb +1 -1
  115. data/app/controllers/admin/pages_controller.rb +8 -5
  116. data/app/controllers/admin/preferences_controller.rb +8 -25
  117. data/app/controllers/admin/resource_controller.rb +19 -20
  118. data/app/controllers/admin/users_controller.rb +7 -7
  119. data/app/controllers/admin/welcome_controller.rb +9 -9
  120. data/app/controllers/application_controller.rb +13 -24
  121. data/app/controllers/site_controller.rb +2 -1
  122. data/app/helpers/admin/configuration_helper.rb +20 -19
  123. data/app/helpers/admin/extensions_helper.rb +1 -1
  124. data/app/helpers/admin/layouts_helper.rb +1 -19
  125. data/app/helpers/admin/node_helper.rb +21 -7
  126. data/app/helpers/admin/pages_helper.rb +4 -92
  127. data/app/helpers/admin/preferences_helper.rb +1 -1
  128. data/app/helpers/admin/regions_helper.rb +5 -4
  129. data/app/helpers/application_helper.rb +62 -64
  130. data/app/models/deprecated_tags.rb +1 -21
  131. data/app/models/file_not_found_page.rb +8 -8
  132. data/app/models/layout.rb +3 -2
  133. data/app/models/menu_renderer.rb +7 -7
  134. data/app/models/page.rb +8 -7
  135. data/app/models/page_context.rb +10 -10
  136. data/app/models/page_field.rb +1 -0
  137. data/app/models/page_part.rb +5 -5
  138. data/app/models/standard_tags.rb +95 -75
  139. data/app/models/status.rb +8 -8
  140. data/app/models/text_filter.rb +5 -5
  141. data/app/models/trusty_cms/config.rb +36 -42
  142. data/app/models/trusty_cms/page_response_cache_director.rb +2 -1
  143. data/app/models/user.rb +1 -10
  144. data/app/models/user_action_observer.rb +5 -5
  145. data/app/views/admin/configuration/edit.html.haml +5 -5
  146. data/app/views/admin/configuration/show.html.haml +11 -11
  147. data/app/views/admin/extensions/index.html.haml +4 -4
  148. data/app/views/admin/layouts/_form.html.haml +6 -7
  149. data/app/views/admin/layouts/_popups.html.haml +4 -0
  150. data/app/views/admin/layouts/edit.html.haml +4 -2
  151. data/app/views/admin/layouts/new.html.haml +1 -1
  152. data/app/views/admin/layouts/remove.html.haml +3 -3
  153. data/app/views/admin/page_fields/_page_field.html.haml +3 -2
  154. data/app/views/admin/page_parts/_page_part.html.haml +4 -5
  155. data/app/views/admin/pages/_fields.html.haml +2 -3
  156. data/app/views/admin/pages/_meta_row.html.haml +2 -2
  157. data/app/views/admin/pages/_node.html.haml +4 -9
  158. data/app/views/admin/pages/_popups.html.haml +9 -5
  159. data/app/views/admin/pages/children.html.haml +5 -1
  160. data/app/views/admin/pages/edit.html.haml +1 -3
  161. data/app/views/admin/pages/index.html.haml +2 -2
  162. data/app/views/admin/pages/new.html.haml +2 -4
  163. data/app/views/admin/pages/remove.html.haml +8 -7
  164. data/app/views/admin/preferences/edit.html.haml +14 -14
  165. data/app/views/admin/references/_tag_reference.haml +1 -1
  166. data/app/views/admin/references/filters.haml +1 -1
  167. data/app/views/admin/references/tags.haml +9 -27
  168. data/app/views/admin/users/_avatar.html.haml +2 -2
  169. data/app/views/admin/users/_form.html.haml +16 -16
  170. data/app/views/admin/users/_password_fields.html.haml +3 -3
  171. data/app/views/admin/users/edit.html.haml +1 -1
  172. data/app/views/admin/users/new.html.haml +2 -2
  173. data/app/views/admin/users/remove.html.haml +4 -4
  174. data/app/views/admin/welcome/login.html.haml +6 -6
  175. data/app/views/layouts/application.html.haml +22 -11
  176. data/app/views/site/not_found.html.haml +1 -1
  177. data/app/views/site/show_page.html.haml +1 -0
  178. data/bin/ci/before_script +0 -5
  179. data/config.ru +4 -0
  180. data/config/application.rb +118 -108
  181. data/config/boot.rb +1 -1
  182. data/config/database.mysql.yml +3 -6
  183. data/config/environments/development.rb +17 -5
  184. data/config/environments/production.rb +20 -3
  185. data/config/environments/test.rb +17 -0
  186. data/config/initializers/active_record_extensions.rb +1 -1
  187. data/config/initializers/haml.rb +1 -1
  188. data/config/initializers/rails_patch.rb +1 -1
  189. data/config/initializers/secret_token.rb +7 -0
  190. data/config/initializers/string_extensions.rb +1 -1
  191. data/config/initializers/symbol_extensions.rb +1 -1
  192. data/config/initializers/{radiant_config.rb → trusty_cms_config.rb} +2 -2
  193. data/config/locales/en.yml +33 -33
  194. data/config/locales/en_available_tags.yml +62 -62
  195. data/config/routes.rb +18 -10
  196. data/db/migrate/001_create_radiant_tables.rb +3 -3
  197. data/db/migrate/002_insert_initial_data.rb +2 -2
  198. data/db/migrate/005_add_virtual_column_to_page.rb +1 -1
  199. data/db/migrate/006_integer_columns_to_boolean.rb +9 -9
  200. data/db/migrate/007_remove_virtual_column_from_page.rb +1 -1
  201. data/db/migrate/008_add_virtual_column_to_page_again.rb +1 -1
  202. data/db/migrate/010_merge_behaviors_and_pages.rb +6 -6
  203. data/db/migrate/014_rename_config_default_parts_key.rb +3 -3
  204. data/db/migrate/015_add_optimistic_locking.rb +2 -2
  205. data/db/migrate/020_add_session_info_to_users.rb +1 -1
  206. data/db/migrate/20081203140407_add_indexes.rb +2 -2
  207. data/db/migrate/20090226140109_add_user_language.rb +2 -2
  208. data/db/migrate/20100805155020_convert_page_metas.rb +1 -1
  209. data/db/migrate/20110902203823_add_allowed_children_cache_to_pages.rb +1 -1
  210. data/db/migrate/20111016150725_extend_page_part_content_limit.rb +1 -1
  211. data/db/migrate/20120209231801_change_pages_allowed_children_cache_to_text.rb +3 -4
  212. data/db/schema.rb +0 -6
  213. data/lib/active_record_extensions/active_record_extensions.rb +3 -3
  214. data/lib/annotatable.rb +3 -3
  215. data/lib/configuration_extensions/configuration_extensions.rb +7 -42
  216. data/lib/generators/extension/extension_generator.rb +11 -11
  217. data/lib/generators/extension/templates/README.md +1 -1
  218. data/lib/generators/extension/templates/cucumber.yml +1 -1
  219. data/lib/generators/extension/templates/cucumber_env.rb +2 -2
  220. data/lib/generators/extension/templates/cucumber_paths.rb +7 -7
  221. data/lib/generators/extension/templates/en.yml +1 -1
  222. data/lib/generators/extension/templates/functional_test.rb +3 -3
  223. data/lib/generators/extension/templates/migration.rb +4 -4
  224. data/lib/generators/extension/templates/routes.rb +1 -1
  225. data/lib/generators/extension/templates/spec_helper.rb +1 -1
  226. data/lib/generators/extension/templates/tasks.rake +5 -5
  227. data/lib/generators/extension/templates/test_helper.rb +5 -5
  228. data/lib/generators/extension_controller/extension_controller_generator.rb +11 -11
  229. data/lib/generators/extension_controller/templates/helper.rb +1 -1
  230. data/lib/generators/extension_controller/templates/helper_spec.rb +2 -2
  231. data/lib/generators/extension_controller/templates/view.html.erb +1 -1
  232. data/lib/generators/extension_controller/templates/view_spec.rb +1 -1
  233. data/lib/generators/extension_mailer/extension_mailer_generator.rb +10 -10
  234. data/lib/generators/extension_mailer/templates/mailer.rb +2 -2
  235. data/lib/generators/extension_migration/extension_migration_generator.rb +5 -5
  236. data/lib/generators/extension_model/extension_model_generator.rb +10 -10
  237. data/lib/generators/generator_base_extension.rb +1 -1
  238. data/lib/generators/instance/instance_generator.rb +14 -14
  239. data/lib/generators/instance/templates/databases/db2.yml +3 -3
  240. data/lib/generators/instance/templates/databases/mysql.yml +2 -2
  241. data/lib/generators/instance/templates/instance_boot.rb +4 -4
  242. data/lib/generators/instance/templates/instance_environment.rb +13 -3
  243. data/lib/generators/instance/templates/instance_radiant_config.rb +2 -2
  244. data/lib/generators/language_extension/language_extension_generator.rb +14 -14
  245. data/lib/generators/language_extension/templates/available_tags.yml +91 -91
  246. data/lib/generators/language_extension/templates/cucumber.yml +1 -1
  247. data/lib/generators/language_extension/templates/cucumber_env.rb +3 -3
  248. data/lib/generators/language_extension/templates/cucumber_paths.rb +4 -4
  249. data/lib/generators/language_extension/templates/extension.rb +1 -1
  250. data/lib/generators/language_extension/templates/functional_test.rb +3 -3
  251. data/lib/generators/language_extension/templates/lang.yml +39 -39
  252. data/lib/generators/language_extension/templates/spec_helper.rb +1 -1
  253. data/lib/generators/language_extension/templates/tasks.rake +3 -3
  254. data/lib/generators/language_extension/templates/test_helper.rb +5 -5
  255. data/lib/inheritable_class_attributes.rb +11 -11
  256. data/lib/local_time.rb +2 -2
  257. data/lib/login_system.rb +5 -6
  258. data/lib/method_observer.rb +9 -9
  259. data/lib/simpleton.rb +7 -7
  260. data/lib/string_extensions/string_extensions.rb +5 -5
  261. data/lib/symbol_extensions/symbol_extensions.rb +1 -1
  262. data/lib/tasks/database.rake +17 -20
  263. data/lib/tasks/extensions.rake +2 -2
  264. data/lib/tasks/framework.rake +13 -13
  265. data/lib/tasks/instance.rake +1 -1
  266. data/lib/tasks/radiant_config.rake +3 -3
  267. data/lib/tasks/translate.rake +10 -10
  268. data/lib/tasks/undefine.rake +1 -5
  269. data/lib/translation_support.rb +7 -7
  270. data/lib/trusty_cms.rb +1 -1
  271. data/lib/trusty_cms/admin_ui.rb +34 -34
  272. data/lib/trusty_cms/admin_ui/region_partials.rb +3 -3
  273. data/lib/trusty_cms/admin_ui/region_set.rb +5 -5
  274. data/lib/trusty_cms/available_locales.rb +1 -1
  275. data/lib/trusty_cms/config/definition.rb +21 -21
  276. data/lib/trusty_cms/engine.rb +4 -7
  277. data/lib/trusty_cms/extension.rb +15 -15
  278. data/lib/trusty_cms/extension/script.rb +7 -7
  279. data/lib/trusty_cms/extension_loader.rb +23 -11
  280. data/lib/trusty_cms/extension_migrator.rb +9 -9
  281. data/lib/trusty_cms/extension_path.rb +23 -23
  282. data/lib/trusty_cms/initializer.rb +33 -15
  283. data/lib/trusty_cms/pagination/link_renderer.rb +3 -3
  284. data/lib/trusty_cms/resource_responses.rb +15 -15
  285. data/lib/trusty_cms/setup.rb +35 -33
  286. data/lib/trusty_cms/taggable.rb +18 -18
  287. data/public/404.html +1 -1
  288. data/public/500.html +1 -1
  289. data/public/loading-iframe.html +1 -1
  290. data/public/robots.txt +1 -1
  291. data/script/rails +0 -0
  292. data/spec/features/admin_login_spec.rb +92 -0
  293. data/spec/features/config_spec.rb +34 -0
  294. data/spec/features/javascript_smoke_spec.rb +59 -0
  295. data/spec/features/layouts_spec.rb +49 -0
  296. data/spec/features/pages_spec.rb +55 -0
  297. data/spec/fixtures/users.yml +16 -0
  298. data/spec/helpers/regions_helper_spec.rb +16 -0
  299. data/spec/rails_helper.rb +74 -0
  300. data/spec/spec_helper.rb +78 -0
  301. data/spec/support/custom_actions.rb +9 -0
  302. data/trusty_cms.gemspec +22 -25
  303. metadata +393 -242
  304. checksums.yaml +0 -15
  305. data/config/compass.config +0 -15
  306. data/config/database.db2.yml +0 -20
  307. data/config/database.postgresql.yml +0 -25
  308. data/config/database.sqlite.yml +0 -16
  309. data/config/database.sqlserver.yml +0 -20
  310. data/config/initializers/object_extensions.rb +0 -1
  311. data/config/preinitializer.rb +0 -18
  312. data/lib/object_extensions/object_extensions.rb +0 -5
  313. data/lib/tasks/prototype.rake +0 -31
  314. data/lib/tasks/release.rake +0 -131
  315. data/lib/trusty_cms/cache.rb +0 -100
  316. data/public/javascripts/admin/application.js +0 -94
  317. data/public/javascripts/admin/codearea.js +0 -165
  318. data/public/javascripts/admin/controls.js +0 -965
  319. data/public/javascripts/admin/dateinput.js +0 -402
  320. data/public/javascripts/admin/dragdrop.js +0 -974
  321. data/public/javascripts/admin/dropdown.js +0 -216
  322. data/public/javascripts/admin/effects.js +0 -1122
  323. data/public/javascripts/admin/lowpro.js +0 -340
  324. data/public/javascripts/admin/overrides.js +0 -1
  325. data/public/javascripts/admin/page_preview.js +0 -41
  326. data/public/javascripts/admin/pagefield.js +0 -54
  327. data/public/javascripts/admin/pagestatus.js +0 -17
  328. data/public/javascripts/admin/popup.js +0 -339
  329. data/public/javascripts/admin/prototype.js +0 -4874
  330. data/public/javascripts/admin/ruledtable.js +0 -13
  331. data/public/javascripts/admin/shortcuts.js +0 -33
  332. data/public/javascripts/admin/sitemap.js +0 -149
  333. data/public/javascripts/admin/status.js +0 -233
  334. data/public/javascripts/admin/tabcontrol.js +0 -123
  335. data/public/javascripts/admin/toggle.js +0 -430
  336. data/public/javascripts/admin/utility.js +0 -53
  337. data/public/javascripts/admin/validationerror.js +0 -18
  338. data/public/stylesheets/sass/admin/_base.sass +0 -18
  339. data/public/stylesheets/sass/admin/main.sass +0 -27
  340. data/public/stylesheets/sass/admin/modules/_boxes.sass +0 -6
  341. data/public/stylesheets/sass/admin/modules/_gradients.sass +0 -4
  342. data/public/stylesheets/sass/admin/modules/_links.sass +0 -18
  343. data/public/stylesheets/sass/admin/overrides.sass +0 -2
  344. data/public/stylesheets/sass/admin/partials/_actions.sass +0 -96
  345. data/public/stylesheets/sass/admin/partials/_avatars.sass +0 -10
  346. data/public/stylesheets/sass/admin/partials/_content.sass +0 -58
  347. data/public/stylesheets/sass/admin/partials/_dateinput.sass +0 -62
  348. data/public/stylesheets/sass/admin/partials/_deprecated.sass +0 -55
  349. data/public/stylesheets/sass/admin/partials/_dropdown.sass +0 -28
  350. data/public/stylesheets/sass/admin/partials/_footer.sass +0 -12
  351. data/public/stylesheets/sass/admin/partials/_forms.sass +0 -322
  352. data/public/stylesheets/sass/admin/partials/_header.sass +0 -114
  353. data/public/stylesheets/sass/admin/partials/_index.sass +0 -147
  354. data/public/stylesheets/sass/admin/partials/_layout.sass +0 -10
  355. data/public/stylesheets/sass/admin/partials/_messages.sass +0 -10
  356. data/public/stylesheets/sass/admin/partials/_popup.sass +0 -213
  357. data/public/stylesheets/sass/admin/partials/_tabcontrol.sass +0 -72
  358. data/public/stylesheets/sass/admin/partials/_toolbar.sass +0 -31
  359. data/public/stylesheets/sass/admin/partials/_typography.sass +0 -60
  360. data/public/stylesheets/sass/admin/partials/_validations.sass +0 -19
  361. data/rails/init.rb +0 -1
  362. data/script/about +0 -4
  363. data/script/breakpointer +0 -3
  364. data/script/console +0 -3
  365. data/script/dbconsole +0 -3
  366. data/script/destroy +0 -3
  367. data/script/generate +0 -3
  368. data/script/performance/benchmarker +0 -3
  369. data/script/performance/profiler +0 -3
  370. data/script/performance/request +0 -3
  371. data/script/plugin +0 -3
  372. data/script/process/inspector +0 -3
  373. data/script/process/reaper +0 -3
  374. data/script/process/spawner +0 -3
  375. data/script/process/spinner +0 -3
  376. data/script/runner +0 -3
  377. data/script/server +0 -3
  378. data/script/version +0 -5
  379. data/spec/ci/database.postgresql.yml +0 -4
  380. data/spec/ci/database.sqlite.yml +0 -3
@@ -0,0 +1,51 @@
1
+ (function(PageEdit, $) {
2
+ PageEdit.addPart = function (form) {
3
+ if (PageEdit.validPartName()) {
4
+ PageEdit.partLoading();
5
+ $.post(
6
+ $(form).attr('action'),
7
+ $(form).serialize(),
8
+ function(data) {
9
+ $('#tab_control .pages').append(data);
10
+ PageEdit.partAdded();
11
+ }
12
+ )
13
+ }
14
+ }
15
+
16
+ PageEdit.partAdded = function (tabId) {
17
+ $('#add_part_busy').hide();
18
+ $('#add_part_button').attr('disabled', false);
19
+ Popup.close();
20
+ $('#part_name_field').val('');
21
+ TabControl.updateTabsBasedOnPages();
22
+ TabControl.selectTab($('div#tab_control .tabs .tab').last().attr('id'));
23
+ }
24
+
25
+ PageEdit.partLoading = function () {
26
+ $('#add_part_button').attr('disabled', true);
27
+ $('#add_part_busy').show();
28
+ }
29
+
30
+ PageEdit.validPartName = function () {
31
+ var partNameField = $('#part_name_field');
32
+ var name = partNameField.val().toLowerCase();
33
+ if (name === '') {
34
+ alert('Part name cannot be empty.');
35
+ return false;
36
+ }
37
+ if ($('#tab_' + name).length > 0) {
38
+ alert('Part name must be unique.');
39
+ return false;
40
+ }
41
+ return true;
42
+ }
43
+
44
+ }(window.PageEdit = window.PageEdit || {}, jQuery));
45
+
46
+ $(function () {
47
+ $('#new_page_part').submit(function(event) {
48
+ event.preventDefault();
49
+ PageEdit.addPart(this);
50
+ });
51
+ });
@@ -0,0 +1,35 @@
1
+ PageFields = {
2
+ attachEvents: function() {
3
+
4
+ $('#add_page_field_button').click(function(e){
5
+ e.preventDefault();
6
+ $.ajax({
7
+ method: 'post',
8
+ url: '/admin/page_fields/',
9
+ data: $('#new_page_field').serialize(),
10
+ success: function(data, textStatus, jqXHR) {
11
+ PageFields.updateFields(data);
12
+ }
13
+ });
14
+ });
15
+
16
+ $('.remove_field').click(function(e){
17
+ e.preventDefault();
18
+ var row = $(this).closest('tr');
19
+ row.find(".delete_input").val(true);
20
+ row.find(".page_field_name").val('');
21
+ row.hide();
22
+ });
23
+
24
+ },
25
+ updateFields: function(element) {
26
+ $('.fieldset tr:last').after(element);
27
+ Popup.close();
28
+ $('#new_page_field').trigger('reset');
29
+ PageFields.attachEvents();
30
+ }
31
+ };
32
+
33
+ $(function() {
34
+ PageFields.attachEvents();
35
+ });
@@ -0,0 +1,31 @@
1
+ (function(){if(window.google&&google.gears){return;}
2
+ var F=null;if(typeof GearsFactory!='undefined'){F=new GearsFactory();}else{try{F=new ActiveXObject('Gears.Factory');if(F.getBuildInfo().indexOf('ie_mobile')!=-1){F.privateSetGlobalObject(this);}}catch(e){if((typeof navigator.mimeTypes!='undefined')&&navigator.mimeTypes["application/x-googlegears"]){F=document.createElement("object");F.style.display="none";F.width=0;F.height=0;F.type="application/x-googlegears";document.documentElement.appendChild(F);}}}
3
+ if(!F){return;}
4
+ if(!window.google){google={};}
5
+ if(!google.gears){google.gears={factory:F};}})();Persist=(function(){var VERSION='0.3.1',P,B,esc,init,empty,ec;ec=(function(){var EPOCH='Thu, 01-Jan-1970 00:00:01 GMT',RATIO=1000*60*60*24,KEYS=['expires','path','domain'],esc=escape,un=unescape,doc=document,me;var get_now=function(){var r=new Date();r.setTime(r.getTime());return r;};var cookify=function(c_key,c_val){var i,key,val,r=[],opt=(arguments.length>2)?arguments[2]:{};r.push(esc(c_key)+'='+esc(c_val));for(var idx=0;idx<KEYS.length;idx++){key=KEYS[idx];val=opt[key];if(val){r.push(key+'='+val);}}
6
+ if(opt.secure){r.push('secure');}
7
+ return r.join('; ');};var alive=function(){var k='__EC_TEST__',v=new Date();v=v.toGMTString();this.set(k,v);this.enabled=(this.remove(k)==v);return this.enabled;};me={set:function(key,val){var opt=(arguments.length>2)?arguments[2]:{},now=get_now(),expire_at,cfg={};if(opt.expires){var expires=opt.expires*RATIO;cfg.expires=new Date(now.getTime()+expires);cfg.expires=cfg.expires.toGMTString();}
8
+ var keys=['path','domain','secure'];for(var i=0;i<keys.length;i++){if(opt[keys[i]]){cfg[keys[i]]=opt[keys[i]];}}
9
+ var r=cookify(key,val,cfg);doc.cookie=r;return val;},has:function(key){key=esc(key);var c=doc.cookie,ofs=c.indexOf(key+'='),len=ofs+key.length+1,sub=c.substring(0,key.length);return((!ofs&&key!=sub)||ofs<0)?false:true;},get:function(key){key=esc(key);var c=doc.cookie,ofs=c.indexOf(key+'='),len=ofs+key.length+1,sub=c.substring(0,key.length),end;if((!ofs&&key!=sub)||ofs<0){return null;}
10
+ end=c.indexOf(';',len);if(end<0){end=c.length;}
11
+ return un(c.substring(len,end));},remove:function(k){var r=me.get(k),opt={expires:EPOCH};doc.cookie=cookify(k,'',opt);return r;},keys:function(){var c=doc.cookie,ps=c.split('; '),i,p,r=[];for(var idx=0;idx<ps.length;idx++){p=ps[idx].split('=');r.push(un(p[0]));}
12
+ return r;},all:function(){var c=doc.cookie,ps=c.split('; '),i,p,r=[];for(var idx=0;idx<ps.length;idx++){p=ps[idx].split('=');r.push([un(p[0]),un(p[1])]);}
13
+ return r;},version:'0.2.1',enabled:false};me.enabled=alive.call(me);return me;}());var index_of=(function(){if(Array.prototype.indexOf){return function(ary,val){return Array.prototype.indexOf.call(ary,val);};}else{return function(ary,val){var i,l;for(var idx=0,len=ary.length;idx<len;idx++){if(ary[idx]==val){return idx;}}
14
+ return-1;};}})();empty=function(){};esc=function(str){return'PS'+str.replace(/_/g,'__').replace(/ /g,'_s');};var C={search_order:['localstorage','globalstorage','gears','cookie','ie','flash'],name_re:/^[a-z][a-z0-9_ \-]+$/i,methods:['init','get','set','remove','load','save','iterate'],sql:{version:'1',create:"CREATE TABLE IF NOT EXISTS persist_data (k TEXT UNIQUE NOT NULL PRIMARY KEY, v TEXT NOT NULL)",get:"SELECT v FROM persist_data WHERE k = ?",set:"INSERT INTO persist_data(k, v) VALUES (?, ?)",remove:"DELETE FROM persist_data WHERE k = ?",keys:"SELECT * FROM persist_data"},flash:{div_id:'_persist_flash_wrap',id:'_persist_flash',path:'persist.swf',size:{w:1,h:1},params:{autostart:true}}};B={gears:{size:-1,test:function(){return(window.google&&window.google.gears)?true:false;},methods:{init:function(){var db;db=this.db=google.gears.factory.create('beta.database');db.open(esc(this.name));db.execute(C.sql.create).close();},get:function(key){var r,sql=C.sql.get;var db=this.db;var ret;db.execute('BEGIN').close();r=db.execute(sql,[key]);ret=r.isValidRow()?r.field(0):null;r.close();db.execute('COMMIT').close();return ret;},set:function(key,val){var rm_sql=C.sql.remove,sql=C.sql.set,r;var db=this.db;var ret;db.execute('BEGIN').close();db.execute(rm_sql,[key]).close();db.execute(sql,[key,val]).close();db.execute('COMMIT').close();return val;},remove:function(key){var get_sql=C.sql.get,sql=C.sql.remove,r,val=null,is_valid=false;var db=this.db;db.execute('BEGIN').close();db.execute(sql,[key]).close();db.execute('COMMIT').close();return true;},iterate:function(fn,scope){var key_sql=C.sql.keys;var r;var db=this.db;r=db.execute(key_sql);while(r.isValidRow()){fn.call(scope||this,r.field(0),r.field(1));r.next();}
15
+ r.close();}}},globalstorage:{size:5*1024*1024,test:function(){if(window.globalStorage){var domain='127.0.0.1';if(this.o&&this.o.domain){domain=this.o.domain;}
16
+ try{var dontcare=globalStorage[domain];return true;}catch(e){if(window.console&&window.console.warn){console.warn("globalStorage exists, but couldn't use it because your browser is running on domain:",domain);}
17
+ return false;}}else{return false;}},methods:{key:function(key){return esc(this.name)+esc(key);},init:function(){this.store=globalStorage[this.o.domain];},get:function(key){key=this.key(key);return this.store.getItem(key);},set:function(key,val){key=this.key(key);this.store.setItem(key,val);return val;},remove:function(key){var val;key=this.key(key);val=this.store.getItem[key];this.store.removeItem(key);return val;}}},localstorage:{size:-1,test:function(){try{if(window.localStorage&&window.localStorage.setItem("test",null)==undefined){if(/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){var ffVersion=RegExp.$1;if(ffVersion>=9){return true;}
18
+ if(window.location.protocol=='file:'){return false;}}else{return true;}}else{return false;}
19
+ return window.localStorage?true:false;}catch(e){return false;}},methods:{key:function(key){return this.name+'>'+key;},init:function(){this.store=localStorage;},get:function(key){key=this.key(key);return this.store.getItem(key);},set:function(key,val){key=this.key(key);this.store.setItem(key,val);return val;},remove:function(key){var val;key=this.key(key);val=this.store.getItem(key);this.store.removeItem(key);return val;},iterate:function(fn,scope){var l=this.store,key,keys;for(var i=0;i<l.length;i++){key=l.key(i);keys=key.split('>');if((keys.length==2)&&(keys[0]==this.name)){fn.call(scope||this,keys[1],l.getItem(key));}}}}},ie:{prefix:'_persist_data-',size:64*1024,test:function(){return window.ActiveXObject?true:false;},make_userdata:function(id){var el=document.createElement('div');el.id=id;el.style.display='none';el.addBehavior('#default#userdata');document.body.appendChild(el);return el;},methods:{init:function(){var id=B.ie.prefix+esc(this.name);this.el=B.ie.make_userdata(id);if(this.o.defer){this.load();}},get:function(key){var val;key=esc(key);if(!this.o.defer){this.load();}
20
+ val=this.el.getAttribute(key);return val;},set:function(key,val){key=esc(key);this.el.setAttribute(key,val);if(!this.o.defer){this.save();}
21
+ return val;},remove:function(key){var val;key=esc(key);if(!this.o.defer){this.load();}
22
+ val=this.el.getAttribute(key);this.el.removeAttribute(key);if(!this.o.defer){this.save();}
23
+ return val;},load:function(){this.el.load(esc(this.name));},save:function(){this.el.save(esc(this.name));}}},cookie:{delim:':',size:4000,test:function(){return P.Cookie.enabled?true:false;},methods:{key:function(key){return this.name+B.cookie.delim+key;},get:function(key,fn){var val;key=this.key(key);val=ec.get(key);return val;},set:function(key,val,fn){key=this.key(key);ec.set(key,val,this.o);return val;},remove:function(key,val){var val;key=this.key(key);val=ec.remove(key);return val;}}},flash:{test:function(){try{if(!swfobject){return false;}}catch(e){return false;}
24
+ var major=swfobject.getFlashPlayerVersion().major;return(major>=8)?true:false;},methods:{init:function(){if(!B.flash.el){var key,el,fel,cfg=C.flash;el=document.createElement('div');el.id=cfg.div_id;fel=document.createElement('div');fel.id=cfg.id;el.appendChild(fel);document.body.appendChild(el);B.flash.el=swfobject.createSWF({id:cfg.id,data:this.o.swf_path||cfg.path,width:cfg.size.w,height:cfg.size.h},cfg.params,cfg.id);}
25
+ this.el=B.flash.el;},get:function(key){var val;key=esc(key);val=this.el.get(this.name,key);return val;},set:function(key,val){var old_val;key=esc(key);old_val=this.el.set(this.name,key,val);return old_val;},remove:function(key){var val;key=esc(key);val=this.el.remove(this.name,key);return val;}}}};init=function(){var i,l,b,key,fns=C.methods,keys=C.search_order;for(var idx=0,len=fns.length;idx<len;idx++){P.Store.prototype[fns[idx]]=empty;}
26
+ P.type=null;P.size=-1;for(var idx2=0,len2=keys.length;!P.type&&idx2<len2;idx2++){b=B[keys[idx2]];if(b.test()){P.type=keys[idx2];P.size=b.size;for(key in b.methods){P.Store.prototype[key]=b.methods[key];}}}
27
+ P._init=true;};P={VERSION:VERSION,type:null,size:0,add:function(o){B[o.id]=o;C.search_order=[o.id].concat(C.search_order);init();},remove:function(id){var ofs=index_of(C.search_order,id);if(ofs<0){return;}
28
+ C.search_order.splice(ofs,1);delete B[id];init();},Cookie:ec,Store:function(name,o){if(!C.name_re.exec(name)){throw new Error("Invalid name");}
29
+ if(!P.type){throw new Error("No suitable storage found");}
30
+ o=o||{};this.name=name;o.domain=o.domain||location.hostname||'localhost';o.domain=o.domain.replace(/:\d+$/,'');o.domain=(o.domain=='localhost')?'':o.domain;this.o=o;o.expires=o.expires||365*2;o.path=o.path||'/';if(this.o.search_order){C.search_order=this.o.search_order;init();}
31
+ this.init();}};init();return P;})();
@@ -0,0 +1,40 @@
1
+ (function(Popup, $) {
2
+ Popup.setup = function(link) {
3
+ $(link).on('click', function(event){
4
+ event.preventDefault();
5
+ var href = $(link).attr('href');
6
+ var match = href.match(/\#(.+)$/);
7
+ Popup.show(match[1]);
8
+ });
9
+ }
10
+
11
+ Popup.show = function(popupId) {
12
+ $('#popups').append($('#popup_window .content .popup').detach());
13
+ $('#popup_window .content').append($('#' + popupId).detach());
14
+
15
+ var popup_window = $('#popup_window').detach();
16
+ $('body').prepend(popup_window);
17
+
18
+ $('#popup_window').show();
19
+ $('#popup_window #' + popupId).show();
20
+
21
+ var l = parseInt($(window).scrollLeft() + ($(window).width() - $('#popup_window').width()) / 2) + 'px';
22
+ var t = parseInt($(window).scrollTop() + ($(window).height() - $('#popup_window').height()) / 2.2) + 'px';
23
+
24
+ $("#popup_window").css('left', l);
25
+ $("#popup_window").css('top', t);
26
+ $("#popup_window form input[type='text']:first").focus();
27
+ }
28
+
29
+ Popup.close = function() {
30
+ $('#popup_window').hide();
31
+ $('div.popup').hide();
32
+ }
33
+
34
+ }(window.Popup = window.Popup || {}, jQuery));
35
+
36
+ $(function () {
37
+ $('a.popup').each(function(){
38
+ Popup.setup(this);
39
+ });
40
+ });
@@ -0,0 +1,40 @@
1
+ (function(Preview, $) {
2
+ Preview.showPreview = function(form){
3
+ var oldTarget = form.target;
4
+ var oldAction = form.action;
5
+
6
+ var $previewer = $('#preview_panel');
7
+ var $preview_tools = $previewer.find('.preview_tools');
8
+ var $frame = $('#page-preview');
9
+
10
+ $(window).scrollTop(0);
11
+ $previewer.show();
12
+ $preview_tools.css('opacity', 1);
13
+ $('body').addClass('clipped');
14
+ form.target = $frame.attr('id');
15
+ form.action = relative_url_root + '/admin/preview';
16
+ form.submit();
17
+
18
+ form.target = oldTarget;
19
+ form.action = oldAction;
20
+ }
21
+
22
+ }(window.Preview = window.Preview || {}, jQuery));
23
+
24
+ $(function () {
25
+ $('#show-preview').on('click', function(event){
26
+ event.preventDefault();
27
+ Preview.showPreview(this.form);
28
+ });
29
+
30
+ $('.preview_tools a.cancel').on('click', function(event){
31
+ event.preventDefault();
32
+ $('#preview_panel').hide();
33
+ $('body').removeClass('clipped');
34
+ $('#page-preview').attr('src', '');
35
+ });
36
+
37
+ $('iframe').on('load', function(event){
38
+ $('#preview_panel .preview_tools').css('opacity', null);
39
+ });
40
+ });
@@ -0,0 +1,81 @@
1
+ (function(TabControl, $) {
2
+ TabControl.setupTabs = function() {
3
+ var $pages = $('div#tab_control .pages .page');
4
+
5
+ if($pages.length > 0) {
6
+ TabControl.updateTabsBasedOnPages();
7
+
8
+ $('div#tab_control .tabs').on('click', '.tab', function(event) {
9
+ event.preventDefault();
10
+ TabControl.selectTab($(this).attr('id'));
11
+ });
12
+
13
+ $('div#tab_control .tabs').on('click', '.tab .close', function(event) {
14
+ event.stopPropagation();
15
+ TabControl.removeTab($(this).closest('.tab').attr('id'));
16
+ });
17
+
18
+ TabControl.selectTab($pages.first().attr('id'));
19
+ }
20
+ }
21
+
22
+ TabControl.addTab = function(tabText) {
23
+ $('div#tab_control .tabs').append("<a id='tab_" + tabText + "' href='#' class='tab'><span>" + tabText + "</span><img src='" + relative_url_root + "<%= asset_path('admin/tab_close.png') %>' class='close' alt='Remove part' title='Remove part' /></a>");
24
+ var $page_part_index = $('#page_part_index_field');
25
+ $page_part_index.val(parseInt($page_part_index.val()) + 1);
26
+ }
27
+
28
+ TabControl.selectTab = function(id) {
29
+ id = id.replace(/^tab_/, '').replace(/^page_/, '');
30
+ var $pages = $('div#tab_control .pages .page');
31
+ var $tabs = $('div#tab_control .tabs .tab');
32
+
33
+ $pages.hide();
34
+ $tabs.removeClass('here');
35
+
36
+ $pages.filter('#page_' + id).show();
37
+ $tabs.filter('#tab_' + id).addClass('here');
38
+ }
39
+
40
+ TabControl.removeTab = function(id) {
41
+ id = id.replace(/^tab_/, '').replace(/^page_/, '');
42
+ if(confirm('Remove the "' + id + '" part?')) {
43
+ var $pages = $('div#tab_control .pages .page');
44
+ var $tabs = $('div#tab_control .tabs .tab');
45
+
46
+ var $tab = $tabs.filter('#tab_' + id);
47
+ if($tab.hasClass('here')) {
48
+ var $prevTab = $tab.prev('.tab');
49
+ var $nextTab = $tab.next('.tab');
50
+ if($prevTab.length > 0) {
51
+ TabControl.selectTab($prevTab.attr('id'));
52
+ } else if($nextTab.length > 0) {
53
+ TabControl.selectTab($nextTab.attr('id'));
54
+ }
55
+ }
56
+ $tab.remove();
57
+
58
+ $page = $pages.filter('#page_' + id);
59
+ var idInput = $page.find('.id_input');
60
+ var deleteInput = $page.find('.delete_input');
61
+ deleteInput.attr('value', 'true');
62
+ $('div#tab_control').append(idInput).append(deleteInput);
63
+ $page.remove();
64
+ }
65
+ }
66
+
67
+ TabControl.updateTabsBasedOnPages = function() {
68
+ var $pages = $('div#tab_control .pages .page');
69
+ $pages.each(function(page) {
70
+ var tabName = $(this).data('caption');
71
+ if($('div#tab_control .tabs #tab_' + tabName).length == 0) {
72
+ TabControl.addTab($(this).data('caption'));
73
+ }
74
+ });
75
+ }
76
+
77
+ }(window.TabControl = window.TabControl || {}, jQuery));
78
+
79
+ $(function () {
80
+ TabControl.setupTabs();
81
+ });
@@ -0,0 +1,41 @@
1
+ $(function(){
2
+ $('#tag_reference').click(function(event){
3
+ event.preventDefault();
4
+ var href = $(this).attr('href');
5
+ $.ajax({
6
+ url: href,
7
+ type: "GET",
8
+ dataType: "html",
9
+ success: function(data, textStatus, xhr){
10
+ $('#popups').append(data);
11
+ Popup.show('tag_reference_popup');
12
+ $('#filter').keyup(function(){
13
+
14
+ // Retrieve the input field text and reset the count to zero
15
+ var filter = $(this).val(), count = 0;
16
+
17
+ // Loop through the tag list
18
+ $(".tag_description").each(function(){
19
+
20
+ // If the list item does not contain the text phrase fade it out
21
+ if ($(this).text().search(new RegExp(filter, "i")) < 0) {
22
+ $(this).fadeOut();
23
+
24
+ // Show the list item if the phrase matches and increase the count by 1
25
+ } else {
26
+ $(this).show();
27
+ count++;
28
+ }
29
+ });
30
+
31
+ // Update the count
32
+ $("#filter-count").text("Found "+count+" Tags").css("background-color","yellow");
33
+ });
34
+ $('.close_link').click(function(){
35
+ Popup.close();
36
+ $('#tag_reference_popup').remove();
37
+ });
38
+ }
39
+ });
40
+ });
41
+ });
@@ -0,0 +1,50 @@
1
+
2
+ $(function() {
3
+ var persistStore = new Persist.Store("Trusty CMS");
4
+ var needToExpand = [];
5
+ $("#pages").treetable({
6
+ expandable: true,
7
+ initialState: "collapsed",
8
+ onNodeCollapse: function() {
9
+ var node = this;
10
+ persistStore.remove(node.id);
11
+ $("#pages").treetable("unloadBranch", this);
12
+ },
13
+ onInitialized: function() {
14
+ var length = needToExpand.length;
15
+ for (var i = 0; i < length; i++)
16
+ $("#pages").treetable("expandNode", needToExpand[i]);
17
+ },
18
+ onNodeInitialized: function() {
19
+ var node = this;
20
+ var state = persistStore.get(node.id);
21
+ if (state) {
22
+ needToExpand.push(node.id);
23
+ }
24
+
25
+ },
26
+ onNodeExpand: function() {
27
+ var node = this;
28
+ persistStore.set(node.id, 'expanded');
29
+ // Render loader/spinner while loading
30
+ $.ajax({
31
+ async: false, // Must be false, otherwise loadBranch happens after showChildren?
32
+ url: "/admin/pages/" + node.row.data('ttPageId') + "/children?index=" + node.id
33
+ }).done(function(html) {
34
+ var rows = $(html).filter("tr");
35
+
36
+
37
+ $("#pages").treetable("loadBranch", node, rows);
38
+ $.each(node.children, function() {
39
+ var state = persistStore.get(this.id);
40
+ if (state) {
41
+ $("#pages").treetable("expandNode", this.id);
42
+ }
43
+ });
44
+ $('a.dropdown').each(function(){
45
+ Dropdown.setup(this);
46
+ });
47
+ });
48
+ }
49
+ });
50
+ });
@@ -0,0 +1,5 @@
1
+ // Non namespaced. At least they're not monkeypatching core javascript objects, ok?
2
+
3
+ var toSlug = function(string) {
4
+ return string.trim().toLowerCase().replace(/[^-a-z0-9~\s\.:;+=_]/g, '').replace(/[\s\.:;=+]+/g, '-');
5
+ }
@@ -0,0 +1,7 @@
1
+ function validateForm(selector) {
2
+ $(selector).validate();
3
+ }
4
+
5
+ $(function () {
6
+ validateForm('form');
7
+ });
@@ -0,0 +1,21 @@
1
+ $(function () {
2
+ $(".user_form").validate({
3
+
4
+ // Specify the validation rules
5
+ rules: {
6
+ "user[name]": {required: true},
7
+ "user[login]": "required",
8
+ "user[email]": {
9
+ email: true
10
+ },
11
+ "user[password]": {
12
+ required: true,
13
+ minlength: 5
14
+ },
15
+ "user[password_confirmation]": {
16
+ required: true,
17
+ equalTo: "#user_password"
18
+ }
19
+ }
20
+ });
21
+ });
@@ -0,0 +1,10 @@
1
+ CKEDITOR.editorConfig = function( config ) {
2
+ config.allowedContent = true;
3
+ config.removeFormatTags = "";
4
+ config.protectedSource.push(/<r:([\S]+)*>.*<\/r:\1>/g);
5
+ config.protectedSource.push(/<r:[^>\/]*\/>/g);
6
+ config.forcePasteAsPlainText = true;
7
+ // if you want to remove clipboard, you have to remove all of these:
8
+ // clipboard, pastetext, pastefromword
9
+ config.removePlugins = "save, newpage, preview, print, templates, forms, flash, smiley, language, pagebreak, iframe, bidi";
10
+ };
@@ -0,0 +1,40 @@
1
+ Removed Features
2
+ ===============
3
+
4
+ * Fade in/fade out on drag/drop
5
+ * Transparency while dragging
6
+ * Dropdown slide down/up
7
+ * Ability to drag/drop popups
8
+ * Shortcut keys
9
+ * s to save
10
+ * [ and ] to move between tabs
11
+ * 1-9 to select tabs by number
12
+ * Support for tabs in textareas
13
+ * Tag search in available tags reference
14
+ * Pretty popups
15
+ * form activate - focus fields
16
+
17
+ TODO
18
+ ====
19
+
20
+ * Page field addition/removal, make pagefield.js more like page-edit.js
21
+ * Published at field datepicker
22
+ * Validation errors that are in context and can be dismissed
23
+ * (ajax spinner) Onsubmit statuses
24
+
25
+ * When page status is set to Scheduled, Published, or Hidden (>=90), show the published_at field. Otherwise, hide the published_at field.
26
+ * Get page_edit_javascripts and layout_edit_javascripts out of ruby
27
+ * Reimplement any undefined utility function calls
28
+ * (docs) Load tag reference - "Available Tags" link
29
+ * (docs) Filter reference - I don't know what this is supposed to do, when I click it on radiant's demo it says "no documentation for filter".
30
+
31
+ Might work
32
+ ==========
33
+
34
+ * pagefield.js
35
+ * Cookie
36
+
37
+ Notes
38
+ =====
39
+
40
+ * Sitemap only looks to be used on the table on the remove page, but it doesn't seem to have any effect. It looks like you used to be able to toggle things expanded or collapsed.