webficient-browsercms 3.0.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 (1282) hide show
  1. data/LICENSE.txt +165 -0
  2. data/README.markdown +56 -0
  3. data/app/controllers/application_controller.rb +14 -0
  4. data/app/controllers/cms/application_controller.rb +78 -0
  5. data/app/controllers/cms/attachments_controller.rb +11 -0
  6. data/app/controllers/cms/base_controller.rb +13 -0
  7. data/app/controllers/cms/cache_controller.rb +22 -0
  8. data/app/controllers/cms/categories_controller.rb +2 -0
  9. data/app/controllers/cms/category_types_controller.rb +5 -0
  10. data/app/controllers/cms/connectors_controller.rb +63 -0
  11. data/app/controllers/cms/content_block_controller.rb +262 -0
  12. data/app/controllers/cms/content_controller.rb +235 -0
  13. data/app/controllers/cms/content_types_controller.rb +7 -0
  14. data/app/controllers/cms/dashboard_controller.rb +9 -0
  15. data/app/controllers/cms/dynamic_views_controller.rb +119 -0
  16. data/app/controllers/cms/email_messages_controller.rb +14 -0
  17. data/app/controllers/cms/error_handling.rb +24 -0
  18. data/app/controllers/cms/file_blocks_controller.rb +2 -0
  19. data/app/controllers/cms/groups_controller.rb +26 -0
  20. data/app/controllers/cms/home_controller.rb +5 -0
  21. data/app/controllers/cms/html_blocks_controller.rb +2 -0
  22. data/app/controllers/cms/image_blocks_controller.rb +2 -0
  23. data/app/controllers/cms/links_controller.rb +67 -0
  24. data/app/controllers/cms/page_route_conditions_controller.rb +2 -0
  25. data/app/controllers/cms/page_route_options_controller.rb +56 -0
  26. data/app/controllers/cms/page_route_requirements_controller.rb +2 -0
  27. data/app/controllers/cms/page_routes_controller.rb +45 -0
  28. data/app/controllers/cms/pages_controller.rb +131 -0
  29. data/app/controllers/cms/portlet_controller.rb +12 -0
  30. data/app/controllers/cms/portlets_controller.rb +40 -0
  31. data/app/controllers/cms/redirects_controller.rb +19 -0
  32. data/app/controllers/cms/resource_controller.rb +108 -0
  33. data/app/controllers/cms/routes_controller.rb +23 -0
  34. data/app/controllers/cms/section_nodes_controller.rb +40 -0
  35. data/app/controllers/cms/sections_controller.rb +127 -0
  36. data/app/controllers/cms/sessions_controller.rb +64 -0
  37. data/app/controllers/cms/tags_controller.rb +9 -0
  38. data/app/controllers/cms/tasks_controller.rb +52 -0
  39. data/app/controllers/cms/toolbar_controller.rb +12 -0
  40. data/app/controllers/cms/users_controller.rb +100 -0
  41. data/app/helpers/application_helper.rb +3 -0
  42. data/app/helpers/cms/application_helper.rb +169 -0
  43. data/app/helpers/cms/dynamic_view_helper.rb +37 -0
  44. data/app/helpers/cms/form_builder.rb +101 -0
  45. data/app/helpers/cms/form_tag_helper.rb +32 -0
  46. data/app/helpers/cms/menu_helper.rb +156 -0
  47. data/app/helpers/cms/page_helper.rb +73 -0
  48. data/app/helpers/cms/path_helper.rb +59 -0
  49. data/app/helpers/cms/section_nodes_helper.rb +15 -0
  50. data/app/helpers/cms/template_support.rb +21 -0
  51. data/app/models/abstract_file_block.rb +17 -0
  52. data/app/models/attachment.rb +193 -0
  53. data/app/models/category.rb +40 -0
  54. data/app/models/category_type.rb +34 -0
  55. data/app/models/connector.rb +80 -0
  56. data/app/models/content_type.rb +95 -0
  57. data/app/models/content_type_group.rb +3 -0
  58. data/app/models/dynamic_view.rb +80 -0
  59. data/app/models/email_message.rb +31 -0
  60. data/app/models/email_message_mailer.rb +11 -0
  61. data/app/models/file_block.rb +21 -0
  62. data/app/models/group.rb +30 -0
  63. data/app/models/group_permission.rb +7 -0
  64. data/app/models/group_section.rb +4 -0
  65. data/app/models/group_type.rb +12 -0
  66. data/app/models/group_type_permission.rb +4 -0
  67. data/app/models/guest_user.rb +39 -0
  68. data/app/models/html_block.rb +40 -0
  69. data/app/models/image_block.rb +22 -0
  70. data/app/models/link.rb +35 -0
  71. data/app/models/page.rb +286 -0
  72. data/app/models/page_partial.rb +22 -0
  73. data/app/models/page_route.rb +58 -0
  74. data/app/models/page_route_condition.rb +2 -0
  75. data/app/models/page_route_option.rb +3 -0
  76. data/app/models/page_route_requirement.rb +2 -0
  77. data/app/models/page_template.rb +48 -0
  78. data/app/models/permission.rb +10 -0
  79. data/app/models/portlet.rb +157 -0
  80. data/app/models/redirect.rb +4 -0
  81. data/app/models/section.rb +147 -0
  82. data/app/models/section_node.rb +93 -0
  83. data/app/models/site.rb +41 -0
  84. data/app/models/tag.rb +62 -0
  85. data/app/models/tagging.rb +9 -0
  86. data/app/models/task.rb +67 -0
  87. data/app/models/user.rb +126 -0
  88. data/app/models/user_group_membership.rb +4 -0
  89. data/app/portlets/dynamic_portlet.rb +7 -0
  90. data/app/portlets/email_page_portlet.rb +24 -0
  91. data/app/portlets/login_portlet.rb +10 -0
  92. data/app/portlets/tag_cloud_portlet.rb +13 -0
  93. data/app/views/cms/blocks/_hidden_fields.html.erb +10 -0
  94. data/app/views/cms/blocks/_toolbar.html.erb +9 -0
  95. data/app/views/cms/blocks/_toolbar_for_collection.html.erb +26 -0
  96. data/app/views/cms/blocks/_toolbar_for_member.html.erb +38 -0
  97. data/app/views/cms/blocks/edit.html.erb +25 -0
  98. data/app/views/cms/blocks/index.html.erb +123 -0
  99. data/app/views/cms/blocks/new.html.erb +21 -0
  100. data/app/views/cms/blocks/show.html.erb +40 -0
  101. data/app/views/cms/blocks/usages.html.erb +44 -0
  102. data/app/views/cms/blocks/versions.html.erb +90 -0
  103. data/app/views/cms/cache/show.html.erb +12 -0
  104. data/app/views/cms/categories/_form.html.erb +36 -0
  105. data/app/views/cms/category_types/_form.html.erb +1 -0
  106. data/app/views/cms/connectors/new.html.erb +71 -0
  107. data/app/views/cms/content/no_page.html.erb +37 -0
  108. data/app/views/cms/content/show.html.erb +11 -0
  109. data/app/views/cms/content_types/index.html.erb +14 -0
  110. data/app/views/cms/dashboard/_page_drafts.html.erb +49 -0
  111. data/app/views/cms/dashboard/_tasks.html.erb +54 -0
  112. data/app/views/cms/dashboard/index.html.erb +15 -0
  113. data/app/views/cms/dynamic_views/_form.html.erb +11 -0
  114. data/app/views/cms/dynamic_views/_toolbar.html.erb +17 -0
  115. data/app/views/cms/dynamic_views/edit.html.erb +3 -0
  116. data/app/views/cms/dynamic_views/index.html.erb +50 -0
  117. data/app/views/cms/dynamic_views/new.html.erb +3 -0
  118. data/app/views/cms/dynamic_views/show.html.erb +31 -0
  119. data/app/views/cms/dynamic_views/versions.html.erb +88 -0
  120. data/app/views/cms/email_messages/index.html.erb +39 -0
  121. data/app/views/cms/email_messages/show.html.erb +57 -0
  122. data/app/views/cms/file_blocks/_form.html.erb +30 -0
  123. data/app/views/cms/file_blocks/render.html.erb +5 -0
  124. data/app/views/cms/form_builder/_cms_date_picker.html.erb +12 -0
  125. data/app/views/cms/form_builder/_cms_datetime_select.html.erb +12 -0
  126. data/app/views/cms/form_builder/_cms_drop_down.html.erb +19 -0
  127. data/app/views/cms/form_builder/_cms_file_field.html.erb +32 -0
  128. data/app/views/cms/form_builder/_cms_tag_list.html.erb +15 -0
  129. data/app/views/cms/form_builder/_cms_text_area.html.erb +13 -0
  130. data/app/views/cms/form_builder/_cms_text_editor.html.erb +18 -0
  131. data/app/views/cms/form_builder/_cms_text_field.html.erb +12 -0
  132. data/app/views/cms/groups/_form.html.erb +45 -0
  133. data/app/views/cms/groups/_permissions.html.erb +37 -0
  134. data/app/views/cms/groups/_sections.html.erb +19 -0
  135. data/app/views/cms/groups/edit.html.erb +4 -0
  136. data/app/views/cms/groups/index.html.erb +58 -0
  137. data/app/views/cms/groups/new.html.erb +4 -0
  138. data/app/views/cms/html_blocks/_form.html.erb +3 -0
  139. data/app/views/cms/html_blocks/render.html.erb +1 -0
  140. data/app/views/cms/image_blocks/_form.html.erb +30 -0
  141. data/app/views/cms/image_blocks/render.html.erb +1 -0
  142. data/app/views/cms/links/_form.html.erb +13 -0
  143. data/app/views/cms/links/destroy.js.rjs +2 -0
  144. data/app/views/cms/links/edit.html.erb +14 -0
  145. data/app/views/cms/links/new.html.erb +15 -0
  146. data/app/views/cms/page_routes/_form.html.erb +11 -0
  147. data/app/views/cms/page_routes/edit.html.erb +3 -0
  148. data/app/views/cms/page_routes/index.html.erb +56 -0
  149. data/app/views/cms/page_routes/new.html.erb +3 -0
  150. data/app/views/cms/page_routes/show.html.erb +14 -0
  151. data/app/views/cms/pages/_edit_connector.html.erb +19 -0
  152. data/app/views/cms/pages/_edit_container.html.erb +11 -0
  153. data/app/views/cms/pages/_form.html.erb +46 -0
  154. data/app/views/cms/pages/edit.html.erb +23 -0
  155. data/app/views/cms/pages/new.html.erb +33 -0
  156. data/app/views/cms/pages/versions.html.erb +91 -0
  157. data/app/views/cms/redirects/_form.html.erb +15 -0
  158. data/app/views/cms/redirects/edit.html.erb +3 -0
  159. data/app/views/cms/redirects/index.html.erb +50 -0
  160. data/app/views/cms/redirects/new.html.erb +3 -0
  161. data/app/views/cms/routes/index.html.erb +40 -0
  162. data/app/views/cms/section_nodes/_link.html.erb +11 -0
  163. data/app/views/cms/section_nodes/_node.html.erb +34 -0
  164. data/app/views/cms/section_nodes/_page.html.erb +14 -0
  165. data/app/views/cms/section_nodes/_section.html.erb +12 -0
  166. data/app/views/cms/section_nodes/_section_node.html.erb +10 -0
  167. data/app/views/cms/section_nodes/index.html.erb +31 -0
  168. data/app/views/cms/sections/_form.html.erb +57 -0
  169. data/app/views/cms/sections/_page.html.erb +4 -0
  170. data/app/views/cms/sections/_section.html.erb +8 -0
  171. data/app/views/cms/sections/destroy.js.rjs +2 -0
  172. data/app/views/cms/sections/edit.html.erb +10 -0
  173. data/app/views/cms/sections/file_browser.xml.builder +14 -0
  174. data/app/views/cms/sections/index.html.erb +23 -0
  175. data/app/views/cms/sections/new.html.erb +21 -0
  176. data/app/views/cms/sessions/new.html.erb +32 -0
  177. data/app/views/cms/shared/_admin_sidebar.html.erb +30 -0
  178. data/app/views/cms/shared/_exception.html.erb +6 -0
  179. data/app/views/cms/shared/_pagination.html.erb +31 -0
  180. data/app/views/cms/shared/_version_conflict_diff.html.erb +11 -0
  181. data/app/views/cms/shared/_version_conflict_error.html.erb +6 -0
  182. data/app/views/cms/shared/access_denied.html.erb +3 -0
  183. data/app/views/cms/shared/error.html.erb +40 -0
  184. data/app/views/cms/tags/_form.html.erb +1 -0
  185. data/app/views/cms/tags/render.html.erb +53 -0
  186. data/app/views/cms/tasks/new.html.erb +36 -0
  187. data/app/views/cms/toolbar/index.html.erb +12 -0
  188. data/app/views/cms/users/_form.html.erb +12 -0
  189. data/app/views/cms/users/_groups.html.erb +12 -0
  190. data/app/views/cms/users/_password.html.erb +8 -0
  191. data/app/views/cms/users/_toolbar.html.erb +22 -0
  192. data/app/views/cms/users/_user_fields.html.erb +20 -0
  193. data/app/views/cms/users/change_password.html.erb +21 -0
  194. data/app/views/cms/users/edit.html.erb +16 -0
  195. data/app/views/cms/users/index.html.erb +62 -0
  196. data/app/views/cms/users/new.html.erb +13 -0
  197. data/app/views/cms/users/show.html.erb +50 -0
  198. data/app/views/layouts/_cms_toolbar.html.erb +54 -0
  199. data/app/views/layouts/_page_toolbar.html.erb +118 -0
  200. data/app/views/layouts/application.html.erb +11 -0
  201. data/app/views/layouts/cms/_footer.erb +4 -0
  202. data/app/views/layouts/cms/_head.html.erb +21 -0
  203. data/app/views/layouts/cms/administration.html.erb +51 -0
  204. data/app/views/layouts/cms/application.html.erb +25 -0
  205. data/app/views/layouts/cms/content_library.html.erb +94 -0
  206. data/app/views/layouts/cms/dashboard.html.erb +16 -0
  207. data/app/views/layouts/cms/login.html.erb +30 -0
  208. data/app/views/layouts/cms/section_nodes.html.erb +20 -0
  209. data/app/views/layouts/cms/thickbox.html.erb +24 -0
  210. data/app/views/layouts/cms/toolbar.html.erb +23 -0
  211. data/app/views/portlets/dynamic/_form.html.erb +3 -0
  212. data/app/views/portlets/email_page/_form.html.erb +7 -0
  213. data/app/views/portlets/email_page/render.html.erb +17 -0
  214. data/app/views/portlets/login/_form.html.erb +6 -0
  215. data/app/views/portlets/login/render.html.erb +27 -0
  216. data/app/views/portlets/portlets/_form.html.erb +19 -0
  217. data/app/views/portlets/tag_cloud/_form.html.erb +4 -0
  218. data/app/views/portlets/tag_cloud/render.html.erb +5 -0
  219. data/browsercms.gemspec +1315 -0
  220. data/db/demo/data.rb +97 -0
  221. data/db/demo/page_partials/_footer.html.erb +6 -0
  222. data/db/demo/page_partials/_header.html.erb +24 -0
  223. data/db/demo/page_templates/home_page.html.erb +49 -0
  224. data/db/demo/page_templates/sub_page.html.erb +37 -0
  225. data/db/migrate/20080815014337_browsercms_3_0_0.rb +274 -0
  226. data/db/migrate/20081114172307_load_seed_data.rb +125 -0
  227. data/doc/app/classes/AbstractFileBlock.html +146 -0
  228. data/doc/app/classes/ActiveRecord.html +105 -0
  229. data/doc/app/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html +242 -0
  230. data/doc/app/classes/ActiveSupport.html +111 -0
  231. data/doc/app/classes/ActiveSupport/Cache.html +111 -0
  232. data/doc/app/classes/ActiveSupport/Cache/FileStore.html +146 -0
  233. data/doc/app/classes/ActsAsList.html +147 -0
  234. data/doc/app/classes/ActsAsList/ClassMethods.html +202 -0
  235. data/doc/app/classes/ActsAsList/InstanceMethods.html +510 -0
  236. data/doc/app/classes/ApplicationController.html +119 -0
  237. data/doc/app/classes/ApplicationHelper.html +112 -0
  238. data/doc/app/classes/Attachment.html +726 -0
  239. data/doc/app/classes/Category.html +230 -0
  240. data/doc/app/classes/CategoryType.html +214 -0
  241. data/doc/app/classes/Cms.html +638 -0
  242. data/doc/app/classes/Cms/Acts.html +111 -0
  243. data/doc/app/classes/Cms/Acts/ContentBlock.html +146 -0
  244. data/doc/app/classes/Cms/Acts/ContentBlock/MacroMethods.html +165 -0
  245. data/doc/app/classes/Cms/Acts/ContentBlock/MacroMethods/InstanceMethods.html +140 -0
  246. data/doc/app/classes/Cms/ApplicationController.html +418 -0
  247. data/doc/app/classes/Cms/ApplicationHelper.html +814 -0
  248. data/doc/app/classes/Cms/AttachmentsController.html +154 -0
  249. data/doc/app/classes/Cms/Authentication.html +116 -0
  250. data/doc/app/classes/Cms/Authentication/Controller.html +702 -0
  251. data/doc/app/classes/Cms/Authentication/Model.html +165 -0
  252. data/doc/app/classes/Cms/Authentication/Model/ClassMethods.html +246 -0
  253. data/doc/app/classes/Cms/Authentication/Model/InstanceMethods.html +412 -0
  254. data/doc/app/classes/Cms/BaseController.html +113 -0
  255. data/doc/app/classes/Cms/Behaviors.html +235 -0
  256. data/doc/app/classes/Cms/Behaviors/Archiving.html +147 -0
  257. data/doc/app/classes/Cms/Behaviors/Archiving/InstanceMethods.html +220 -0
  258. data/doc/app/classes/Cms/Behaviors/Archiving/MacroMethods.html +175 -0
  259. data/doc/app/classes/Cms/Behaviors/Attaching.html +160 -0
  260. data/doc/app/classes/Cms/Behaviors/Attaching/InstanceMethods.html +670 -0
  261. data/doc/app/classes/Cms/Behaviors/Attaching/MacroMethods.html +188 -0
  262. data/doc/app/classes/Cms/Behaviors/Categorizing.html +148 -0
  263. data/doc/app/classes/Cms/Behaviors/Categorizing/ClassMethods.html +105 -0
  264. data/doc/app/classes/Cms/Behaviors/Categorizing/InstanceMethods.html +140 -0
  265. data/doc/app/classes/Cms/Behaviors/Categorizing/MacroMethods.html +178 -0
  266. data/doc/app/classes/Cms/Behaviors/ClassMethods.html +272 -0
  267. data/doc/app/classes/Cms/Behaviors/Connecting.html +148 -0
  268. data/doc/app/classes/Cms/Behaviors/Connecting/ClassMethods.html +188 -0
  269. data/doc/app/classes/Cms/Behaviors/Connecting/InstanceMethods.html +312 -0
  270. data/doc/app/classes/Cms/Behaviors/Connecting/MacroMethods.html +184 -0
  271. data/doc/app/classes/Cms/Behaviors/DynamicAttributes.html +285 -0
  272. data/doc/app/classes/Cms/Behaviors/DynamicAttributes/InstanceMethods.html +181 -0
  273. data/doc/app/classes/Cms/Behaviors/DynamicAttributes/MacroMethods.html +243 -0
  274. data/doc/app/classes/Cms/Behaviors/FlushCacheOnChange.html +178 -0
  275. data/doc/app/classes/Cms/Behaviors/FlushCacheOnChange/InstanceMethods.html +142 -0
  276. data/doc/app/classes/Cms/Behaviors/FlushCacheOnChange/MacroMethods.html +175 -0
  277. data/doc/app/classes/Cms/Behaviors/Hiding.html +148 -0
  278. data/doc/app/classes/Cms/Behaviors/Hiding/ClassMethods.html +105 -0
  279. data/doc/app/classes/Cms/Behaviors/Hiding/InstanceMethods.html +220 -0
  280. data/doc/app/classes/Cms/Behaviors/Hiding/MacroMethods.html +176 -0
  281. data/doc/app/classes/Cms/Behaviors/InstanceMethods.html +234 -0
  282. data/doc/app/classes/Cms/Behaviors/Pagination.html +151 -0
  283. data/doc/app/classes/Cms/Behaviors/Pagination/ClassMethods.html +252 -0
  284. data/doc/app/classes/Cms/Behaviors/Pagination/Collection.html +437 -0
  285. data/doc/app/classes/Cms/Behaviors/Pagination/InvalidPage.html +146 -0
  286. data/doc/app/classes/Cms/Behaviors/Publishing.html +179 -0
  287. data/doc/app/classes/Cms/Behaviors/Publishing/ClassMethods.html +105 -0
  288. data/doc/app/classes/Cms/Behaviors/Publishing/InstanceMethods.html +333 -0
  289. data/doc/app/classes/Cms/Behaviors/Publishing/MacroMethods.html +180 -0
  290. data/doc/app/classes/Cms/Behaviors/Rendering.html +179 -0
  291. data/doc/app/classes/Cms/Behaviors/Rendering/MacroMethods.html +186 -0
  292. data/doc/app/classes/Cms/Behaviors/Searching.html +147 -0
  293. data/doc/app/classes/Cms/Behaviors/Searching/ClassMethods.html +164 -0
  294. data/doc/app/classes/Cms/Behaviors/Searching/MacroMethods.html +188 -0
  295. data/doc/app/classes/Cms/Behaviors/SoftDeleting.html +148 -0
  296. data/doc/app/classes/Cms/Behaviors/SoftDeleting/ClassMethods.html +217 -0
  297. data/doc/app/classes/Cms/Behaviors/SoftDeleting/InstanceMethods.html +247 -0
  298. data/doc/app/classes/Cms/Behaviors/SoftDeleting/MacroMethods.html +205 -0
  299. data/doc/app/classes/Cms/Behaviors/Taggable.html +148 -0
  300. data/doc/app/classes/Cms/Behaviors/Taggable/ClassMethods.html +164 -0
  301. data/doc/app/classes/Cms/Behaviors/Taggable/InstanceMethods.html +197 -0
  302. data/doc/app/classes/Cms/Behaviors/Taggable/MacroMethods.html +182 -0
  303. data/doc/app/classes/Cms/Behaviors/Userstamping.html +148 -0
  304. data/doc/app/classes/Cms/Behaviors/Userstamping/ClassMethods.html +105 -0
  305. data/doc/app/classes/Cms/Behaviors/Userstamping/InstanceMethods.html +143 -0
  306. data/doc/app/classes/Cms/Behaviors/Userstamping/MacroMethods.html +181 -0
  307. data/doc/app/classes/Cms/Behaviors/Versioning.html +148 -0
  308. data/doc/app/classes/Cms/Behaviors/Versioning/ClassMethods.html +237 -0
  309. data/doc/app/classes/Cms/Behaviors/Versioning/InstanceMethods.html +685 -0
  310. data/doc/app/classes/Cms/Behaviors/Versioning/MacroMethods.html +290 -0
  311. data/doc/app/classes/Cms/CacheController.html +174 -0
  312. data/doc/app/classes/Cms/Caching.html +171 -0
  313. data/doc/app/classes/Cms/CategoriesController.html +113 -0
  314. data/doc/app/classes/Cms/CategoryTypesController.html +148 -0
  315. data/doc/app/classes/Cms/ConnectorsController.html +215 -0
  316. data/doc/app/classes/Cms/ContentBlockController.html +1175 -0
  317. data/doc/app/classes/Cms/ContentController.html +313 -0
  318. data/doc/app/classes/Cms/ContentTypesController.html +148 -0
  319. data/doc/app/classes/Cms/DashboardController.html +151 -0
  320. data/doc/app/classes/Cms/DataLoader.html +182 -0
  321. data/doc/app/classes/Cms/DynamicViewsController.html +359 -0
  322. data/doc/app/classes/Cms/EmailMessagesController.html +172 -0
  323. data/doc/app/classes/Cms/ErrorHandling.html +172 -0
  324. data/doc/app/classes/Cms/Errors.html +111 -0
  325. data/doc/app/classes/Cms/Errors/AccessDenied.html +146 -0
  326. data/doc/app/classes/Cms/Extensions.html +140 -0
  327. data/doc/app/classes/Cms/Extensions/ActionView.html +111 -0
  328. data/doc/app/classes/Cms/Extensions/ActionView/Base.html +141 -0
  329. data/doc/app/classes/Cms/Extensions/ActiveRecord.html +116 -0
  330. data/doc/app/classes/Cms/Extensions/ActiveRecord/Base.html +144 -0
  331. data/doc/app/classes/Cms/Extensions/ActiveRecord/Errors.html +140 -0
  332. data/doc/app/classes/Cms/Extensions/Hash.html +175 -0
  333. data/doc/app/classes/Cms/Extensions/Integer.html +146 -0
  334. data/doc/app/classes/Cms/Extensions/NilClass.html +212 -0
  335. data/doc/app/classes/Cms/Extensions/String.html +212 -0
  336. data/doc/app/classes/Cms/FileBlocksController.html +113 -0
  337. data/doc/app/classes/Cms/FormBuilder.html +312 -0
  338. data/doc/app/classes/Cms/FormTagHelper.html +245 -0
  339. data/doc/app/classes/Cms/GroupsController.html +225 -0
  340. data/doc/app/classes/Cms/HomeController.html +148 -0
  341. data/doc/app/classes/Cms/HtmlBlocksController.html +113 -0
  342. data/doc/app/classes/Cms/ImageBlocksController.html +113 -0
  343. data/doc/app/classes/Cms/LinksController.html +341 -0
  344. data/doc/app/classes/Cms/MenuHelper.html +330 -0
  345. data/doc/app/classes/Cms/PageHelper.html +292 -0
  346. data/doc/app/classes/Cms/PageRouteConditionsController.html +113 -0
  347. data/doc/app/classes/Cms/PageRouteOptionsController.html +355 -0
  348. data/doc/app/classes/Cms/PageRouteRequirementsController.html +113 -0
  349. data/doc/app/classes/Cms/PageRoutesController.html +284 -0
  350. data/doc/app/classes/Cms/PagesController.html +331 -0
  351. data/doc/app/classes/Cms/PathHelper.html +268 -0
  352. data/doc/app/classes/Cms/PortletController.html +150 -0
  353. data/doc/app/classes/Cms/PortletsController.html +301 -0
  354. data/doc/app/classes/Cms/RedirectsController.html +172 -0
  355. data/doc/app/classes/Cms/ResourceController.html +616 -0
  356. data/doc/app/classes/Cms/Routes.html +303 -0
  357. data/doc/app/classes/Cms/RoutesController.html +164 -0
  358. data/doc/app/classes/Cms/SectionNodesController.html +272 -0
  359. data/doc/app/classes/Cms/SectionNodesHelper.html +145 -0
  360. data/doc/app/classes/Cms/SectionsController.html +542 -0
  361. data/doc/app/classes/Cms/SessionsController.html +270 -0
  362. data/doc/app/classes/Cms/TagsController.html +152 -0
  363. data/doc/app/classes/Cms/TasksController.html +221 -0
  364. data/doc/app/classes/Cms/ToolbarController.html +153 -0
  365. data/doc/app/classes/Cms/UsersController.html +405 -0
  366. data/doc/app/classes/Connector.html +350 -0
  367. data/doc/app/classes/ContentType.html +448 -0
  368. data/doc/app/classes/ContentTypeGroup.html +111 -0
  369. data/doc/app/classes/DynamicPortlet.html +148 -0
  370. data/doc/app/classes/DynamicView.html +411 -0
  371. data/doc/app/classes/EmailMessage.html +228 -0
  372. data/doc/app/classes/EmailMessageMailer.html +150 -0
  373. data/doc/app/classes/EmailPagePortlet.html +184 -0
  374. data/doc/app/classes/FileBlock.html +202 -0
  375. data/doc/app/classes/Group.html +170 -0
  376. data/doc/app/classes/GroupPermission.html +111 -0
  377. data/doc/app/classes/GroupSection.html +111 -0
  378. data/doc/app/classes/GroupType.html +111 -0
  379. data/doc/app/classes/GroupTypePermission.html +111 -0
  380. data/doc/app/classes/GuestUser.html +347 -0
  381. data/doc/app/classes/HtmlBlock.html +170 -0
  382. data/doc/app/classes/ImageBlock.html +202 -0
  383. data/doc/app/classes/InitialData.html +171 -0
  384. data/doc/app/classes/Link.html +249 -0
  385. data/doc/app/classes/LoginPortlet.html +151 -0
  386. data/doc/app/classes/Page.html +954 -0
  387. data/doc/app/classes/PagePartial.html +201 -0
  388. data/doc/app/classes/PageRoute.html +335 -0
  389. data/doc/app/classes/PageRouteCondition.html +113 -0
  390. data/doc/app/classes/PageRouteOption.html +111 -0
  391. data/doc/app/classes/PageRouteRequirement.html +113 -0
  392. data/doc/app/classes/PageTemplate.html +278 -0
  393. data/doc/app/classes/Permission.html +111 -0
  394. data/doc/app/classes/Portlet.html +738 -0
  395. data/doc/app/classes/Redirect.html +111 -0
  396. data/doc/app/classes/Section.html +580 -0
  397. data/doc/app/classes/SectionNode.html +410 -0
  398. data/doc/app/classes/Sequence.html +146 -0
  399. data/doc/app/classes/Site.html +253 -0
  400. data/doc/app/classes/Tag.html +292 -0
  401. data/doc/app/classes/TagCloudPortlet.html +176 -0
  402. data/doc/app/classes/Tagging.html +146 -0
  403. data/doc/app/classes/Task.html +288 -0
  404. data/doc/app/classes/User.html +618 -0
  405. data/doc/app/classes/UserGroupMembership.html +111 -0
  406. data/doc/app/created.rid +1 -0
  407. data/doc/app/files/app/controllers/application_controller_rb.html +109 -0
  408. data/doc/app/files/app/controllers/cms/application_controller_rb.html +101 -0
  409. data/doc/app/files/app/controllers/cms/attachments_controller_rb.html +101 -0
  410. data/doc/app/files/app/controllers/cms/base_controller_rb.html +101 -0
  411. data/doc/app/files/app/controllers/cms/cache_controller_rb.html +101 -0
  412. data/doc/app/files/app/controllers/cms/categories_controller_rb.html +101 -0
  413. data/doc/app/files/app/controllers/cms/category_types_controller_rb.html +101 -0
  414. data/doc/app/files/app/controllers/cms/connectors_controller_rb.html +101 -0
  415. data/doc/app/files/app/controllers/cms/content_block_controller_rb.html +107 -0
  416. data/doc/app/files/app/controllers/cms/content_controller_rb.html +101 -0
  417. data/doc/app/files/app/controllers/cms/content_types_controller_rb.html +101 -0
  418. data/doc/app/files/app/controllers/cms/dashboard_controller_rb.html +101 -0
  419. data/doc/app/files/app/controllers/cms/dynamic_views_controller_rb.html +101 -0
  420. data/doc/app/files/app/controllers/cms/email_messages_controller_rb.html +101 -0
  421. data/doc/app/files/app/controllers/cms/error_handling_rb.html +101 -0
  422. data/doc/app/files/app/controllers/cms/file_blocks_controller_rb.html +101 -0
  423. data/doc/app/files/app/controllers/cms/groups_controller_rb.html +101 -0
  424. data/doc/app/files/app/controllers/cms/home_controller_rb.html +101 -0
  425. data/doc/app/files/app/controllers/cms/html_blocks_controller_rb.html +101 -0
  426. data/doc/app/files/app/controllers/cms/image_blocks_controller_rb.html +101 -0
  427. data/doc/app/files/app/controllers/cms/links_controller_rb.html +101 -0
  428. data/doc/app/files/app/controllers/cms/page_route_conditions_controller_rb.html +101 -0
  429. data/doc/app/files/app/controllers/cms/page_route_options_controller_rb.html +101 -0
  430. data/doc/app/files/app/controllers/cms/page_route_requirements_controller_rb.html +101 -0
  431. data/doc/app/files/app/controllers/cms/page_routes_controller_rb.html +101 -0
  432. data/doc/app/files/app/controllers/cms/pages_controller_rb.html +101 -0
  433. data/doc/app/files/app/controllers/cms/portlet_controller_rb.html +101 -0
  434. data/doc/app/files/app/controllers/cms/portlets_controller_rb.html +101 -0
  435. data/doc/app/files/app/controllers/cms/redirects_controller_rb.html +101 -0
  436. data/doc/app/files/app/controllers/cms/resource_controller_rb.html +108 -0
  437. data/doc/app/files/app/controllers/cms/routes_controller_rb.html +101 -0
  438. data/doc/app/files/app/controllers/cms/section_nodes_controller_rb.html +101 -0
  439. data/doc/app/files/app/controllers/cms/sections_controller_rb.html +101 -0
  440. data/doc/app/files/app/controllers/cms/sessions_controller_rb.html +107 -0
  441. data/doc/app/files/app/controllers/cms/tags_controller_rb.html +101 -0
  442. data/doc/app/files/app/controllers/cms/tasks_controller_rb.html +101 -0
  443. data/doc/app/files/app/controllers/cms/toolbar_controller_rb.html +101 -0
  444. data/doc/app/files/app/controllers/cms/users_controller_rb.html +101 -0
  445. data/doc/app/files/app/helpers/application_helper_rb.html +108 -0
  446. data/doc/app/files/app/helpers/cms/application_helper_rb.html +107 -0
  447. data/doc/app/files/app/helpers/cms/form_builder_rb.html +101 -0
  448. data/doc/app/files/app/helpers/cms/form_tag_helper_rb.html +101 -0
  449. data/doc/app/files/app/helpers/cms/menu_helper_rb.html +101 -0
  450. data/doc/app/files/app/helpers/cms/page_helper_rb.html +101 -0
  451. data/doc/app/files/app/helpers/cms/path_helper_rb.html +101 -0
  452. data/doc/app/files/app/helpers/cms/section_nodes_helper_rb.html +101 -0
  453. data/doc/app/files/app/models/abstract_file_block_rb.html +101 -0
  454. data/doc/app/files/app/models/attachment_rb.html +109 -0
  455. data/doc/app/files/app/models/category_rb.html +101 -0
  456. data/doc/app/files/app/models/category_type_rb.html +101 -0
  457. data/doc/app/files/app/models/connector_rb.html +101 -0
  458. data/doc/app/files/app/models/content_type_group_rb.html +101 -0
  459. data/doc/app/files/app/models/content_type_rb.html +101 -0
  460. data/doc/app/files/app/models/dynamic_view_rb.html +101 -0
  461. data/doc/app/files/app/models/email_message_mailer_rb.html +101 -0
  462. data/doc/app/files/app/models/email_message_rb.html +101 -0
  463. data/doc/app/files/app/models/file_block_rb.html +101 -0
  464. data/doc/app/files/app/models/group_permission_rb.html +101 -0
  465. data/doc/app/files/app/models/group_rb.html +101 -0
  466. data/doc/app/files/app/models/group_section_rb.html +101 -0
  467. data/doc/app/files/app/models/group_type_permission_rb.html +101 -0
  468. data/doc/app/files/app/models/group_type_rb.html +101 -0
  469. data/doc/app/files/app/models/guest_user_rb.html +101 -0
  470. data/doc/app/files/app/models/html_block_rb.html +101 -0
  471. data/doc/app/files/app/models/image_block_rb.html +101 -0
  472. data/doc/app/files/app/models/link_rb.html +101 -0
  473. data/doc/app/files/app/models/page_partial_rb.html +101 -0
  474. data/doc/app/files/app/models/page_rb.html +101 -0
  475. data/doc/app/files/app/models/page_route_condition_rb.html +101 -0
  476. data/doc/app/files/app/models/page_route_option_rb.html +101 -0
  477. data/doc/app/files/app/models/page_route_rb.html +101 -0
  478. data/doc/app/files/app/models/page_route_requirement_rb.html +101 -0
  479. data/doc/app/files/app/models/page_template_rb.html +101 -0
  480. data/doc/app/files/app/models/permission_rb.html +101 -0
  481. data/doc/app/files/app/models/portlet_rb.html +101 -0
  482. data/doc/app/files/app/models/redirect_rb.html +101 -0
  483. data/doc/app/files/app/models/section_node_rb.html +101 -0
  484. data/doc/app/files/app/models/section_rb.html +101 -0
  485. data/doc/app/files/app/models/site_rb.html +101 -0
  486. data/doc/app/files/app/models/tag_rb.html +101 -0
  487. data/doc/app/files/app/models/tagging_rb.html +101 -0
  488. data/doc/app/files/app/models/task_rb.html +101 -0
  489. data/doc/app/files/app/models/user_group_membership_rb.html +101 -0
  490. data/doc/app/files/app/models/user_rb.html +108 -0
  491. data/doc/app/files/app/portlets/dynamic_portlet_rb.html +101 -0
  492. data/doc/app/files/app/portlets/email_page_portlet_rb.html +101 -0
  493. data/doc/app/files/app/portlets/login_portlet_rb.html +101 -0
  494. data/doc/app/files/app/portlets/tag_cloud_portlet_rb.html +101 -0
  495. data/doc/app/files/doc/README_FOR_APP.html +127 -0
  496. data/doc/app/files/lib/acts_as_list_rb.html +101 -0
  497. data/doc/app/files/lib/browsercms_rb.html +113 -0
  498. data/doc/app/files/lib/cms/acts/content_block_rb.html +101 -0
  499. data/doc/app/files/lib/cms/authentication/controller_rb.html +101 -0
  500. data/doc/app/files/lib/cms/authentication/model_rb.html +101 -0
  501. data/doc/app/files/lib/cms/behaviors/archiving_rb.html +101 -0
  502. data/doc/app/files/lib/cms/behaviors/attaching_rb.html +101 -0
  503. data/doc/app/files/lib/cms/behaviors/categorizing_rb.html +101 -0
  504. data/doc/app/files/lib/cms/behaviors/connecting_rb.html +101 -0
  505. data/doc/app/files/lib/cms/behaviors/dynamic_attributes_rb.html +101 -0
  506. data/doc/app/files/lib/cms/behaviors/flush_cache_on_change_rb.html +101 -0
  507. data/doc/app/files/lib/cms/behaviors/hiding_rb.html +101 -0
  508. data/doc/app/files/lib/cms/behaviors/pagination_rb.html +107 -0
  509. data/doc/app/files/lib/cms/behaviors/publishing_rb.html +101 -0
  510. data/doc/app/files/lib/cms/behaviors/rendering_rb.html +101 -0
  511. data/doc/app/files/lib/cms/behaviors/searching_rb.html +101 -0
  512. data/doc/app/files/lib/cms/behaviors/soft_deleting_rb.html +101 -0
  513. data/doc/app/files/lib/cms/behaviors/taggable_rb.html +101 -0
  514. data/doc/app/files/lib/cms/behaviors/userstamping_rb.html +101 -0
  515. data/doc/app/files/lib/cms/behaviors/versioning_rb.html +101 -0
  516. data/doc/app/files/lib/cms/behaviors_rb.html +147 -0
  517. data/doc/app/files/lib/cms/caching_rb.html +101 -0
  518. data/doc/app/files/lib/cms/data_loader_rb.html +101 -0
  519. data/doc/app/files/lib/cms/extensions/action_view/base_rb.html +101 -0
  520. data/doc/app/files/lib/cms/extensions/active_record/base_rb.html +101 -0
  521. data/doc/app/files/lib/cms/extensions/active_record/connection_adapters/abstract/schema_statements_rb.html +101 -0
  522. data/doc/app/files/lib/cms/extensions/active_record/errors_rb.html +101 -0
  523. data/doc/app/files/lib/cms/extensions/active_support/cache/file_store_rb.html +101 -0
  524. data/doc/app/files/lib/cms/extensions/hash_rb.html +101 -0
  525. data/doc/app/files/lib/cms/extensions/integer_rb.html +101 -0
  526. data/doc/app/files/lib/cms/extensions/nil_rb.html +101 -0
  527. data/doc/app/files/lib/cms/extensions/string_rb.html +101 -0
  528. data/doc/app/files/lib/cms/extensions_rb.html +101 -0
  529. data/doc/app/files/lib/cms/init_rb.html +101 -0
  530. data/doc/app/files/lib/cms/routes_rb.html +101 -0
  531. data/doc/app/files/lib/initial_data_rb.html +101 -0
  532. data/doc/app/files/lib/sequence_rb.html +101 -0
  533. data/doc/app/fr_class_index.html +205 -0
  534. data/doc/app/fr_file_index.html +152 -0
  535. data/doc/app/fr_method_index.html +738 -0
  536. data/doc/app/index.html +24 -0
  537. data/doc/app/rdoc-style.css +208 -0
  538. data/doc/guides/html/build_it_yourself.html +175 -0
  539. data/doc/guides/html/deployment_guide.html +181 -0
  540. data/doc/guides/html/designer_guide.html +153 -0
  541. data/doc/guides/html/developer_guide.html +266 -0
  542. data/doc/guides/html/files/javascripts/code_highlighter.js +188 -0
  543. data/doc/guides/html/files/javascripts/guides.js +7 -0
  544. data/doc/guides/html/files/javascripts/highlighters.js +90 -0
  545. data/doc/guides/html/files/stylesheets/main.css +441 -0
  546. data/doc/guides/html/files/stylesheets/reset.css +43 -0
  547. data/doc/guides/html/files/stylesheets/style.css +13 -0
  548. data/doc/guides/html/files/stylesheets/syntax.css +31 -0
  549. data/doc/guides/html/getting_started.html +181 -0
  550. data/doc/guides/html/images/bg.png +0 -0
  551. data/doc/guides/html/images/bottom_cap.png +0 -0
  552. data/doc/guides/html/images/browsercms_logo.png +0 -0
  553. data/doc/guides/html/images/dot.png +0 -0
  554. data/doc/guides/html/images/icons/README +5 -0
  555. data/doc/guides/html/images/icons/callouts/1.png +0 -0
  556. data/doc/guides/html/images/icons/callouts/10.png +0 -0
  557. data/doc/guides/html/images/icons/callouts/11.png +0 -0
  558. data/doc/guides/html/images/icons/callouts/12.png +0 -0
  559. data/doc/guides/html/images/icons/callouts/13.png +0 -0
  560. data/doc/guides/html/images/icons/callouts/14.png +0 -0
  561. data/doc/guides/html/images/icons/callouts/15.png +0 -0
  562. data/doc/guides/html/images/icons/callouts/2.png +0 -0
  563. data/doc/guides/html/images/icons/callouts/3.png +0 -0
  564. data/doc/guides/html/images/icons/callouts/4.png +0 -0
  565. data/doc/guides/html/images/icons/callouts/5.png +0 -0
  566. data/doc/guides/html/images/icons/callouts/6.png +0 -0
  567. data/doc/guides/html/images/icons/callouts/7.png +0 -0
  568. data/doc/guides/html/images/icons/callouts/8.png +0 -0
  569. data/doc/guides/html/images/icons/callouts/9.png +0 -0
  570. data/doc/guides/html/images/icons/caution.png +0 -0
  571. data/doc/guides/html/images/icons/example.png +0 -0
  572. data/doc/guides/html/images/icons/home.png +0 -0
  573. data/doc/guides/html/images/icons/important.png +0 -0
  574. data/doc/guides/html/images/icons/next.png +0 -0
  575. data/doc/guides/html/images/icons/note.png +0 -0
  576. data/doc/guides/html/images/icons/prev.png +0 -0
  577. data/doc/guides/html/images/icons/tip.png +0 -0
  578. data/doc/guides/html/images/icons/up.png +0 -0
  579. data/doc/guides/html/images/icons/warning.png +0 -0
  580. data/doc/guides/html/images/top_cap.png +0 -0
  581. data/doc/guides/html/images/top_cap_content.png +0 -0
  582. data/doc/guides/html/index.html +168 -0
  583. data/doc/guides/html/installing_modules.html +181 -0
  584. data/doc/guides/html/user_guide.html +266 -0
  585. data/lib/acts_as_list.rb +252 -0
  586. data/lib/browsercms.rb +12 -0
  587. data/lib/cms/acts/content_block.rb +31 -0
  588. data/lib/cms/authentication/controller.rb +195 -0
  589. data/lib/cms/authentication/model.rb +116 -0
  590. data/lib/cms/behaviors.rb +33 -0
  591. data/lib/cms/behaviors/archiving.rb +43 -0
  592. data/lib/cms/behaviors/attaching.rb +184 -0
  593. data/lib/cms/behaviors/categorizing.rb +31 -0
  594. data/lib/cms/behaviors/connecting.rb +99 -0
  595. data/lib/cms/behaviors/dynamic_attributes.rb +367 -0
  596. data/lib/cms/behaviors/flush_cache_on_change.rb +33 -0
  597. data/lib/cms/behaviors/hiding.rb +46 -0
  598. data/lib/cms/behaviors/pagination.rb +209 -0
  599. data/lib/cms/behaviors/publishing.rb +112 -0
  600. data/lib/cms/behaviors/rendering.rb +152 -0
  601. data/lib/cms/behaviors/searching.rb +49 -0
  602. data/lib/cms/behaviors/soft_deleting.rb +77 -0
  603. data/lib/cms/behaviors/taggable.rb +57 -0
  604. data/lib/cms/behaviors/userstamping.rb +37 -0
  605. data/lib/cms/behaviors/versioning.rb +265 -0
  606. data/lib/cms/caching.rb +20 -0
  607. data/lib/cms/data_loader.rb +28 -0
  608. data/lib/cms/extensions.rb +4 -0
  609. data/lib/cms/extensions/action_view/base.rb +13 -0
  610. data/lib/cms/extensions/active_record/base.rb +16 -0
  611. data/lib/cms/extensions/active_record/connection_adapters/abstract/schema_statements.rb +78 -0
  612. data/lib/cms/extensions/active_record/errors.rb +12 -0
  613. data/lib/cms/extensions/active_support/cache/file_store.rb +9 -0
  614. data/lib/cms/extensions/hash.rb +21 -0
  615. data/lib/cms/extensions/integer.rb +16 -0
  616. data/lib/cms/extensions/nil.rb +19 -0
  617. data/lib/cms/extensions/string.rb +19 -0
  618. data/lib/cms/init.rb +100 -0
  619. data/lib/cms/routes.rb +142 -0
  620. data/lib/initial_data.rb +30 -0
  621. data/lib/sequence.rb +6 -0
  622. data/lib/tasks/cms.rake +57 -0
  623. data/lib/tasks/db.rake +71 -0
  624. data/lib/tasks/dev.rake +20 -0
  625. data/public/fckeditor/editor/css/behaviors/disablehandles.htc +15 -0
  626. data/public/fckeditor/editor/css/behaviors/showtableborders.htc +36 -0
  627. data/public/fckeditor/editor/css/fck_editorarea.css +110 -0
  628. data/public/fckeditor/editor/css/fck_internal.css +199 -0
  629. data/public/fckeditor/editor/css/fck_showtableborders_gecko.css +49 -0
  630. data/public/fckeditor/editor/css/images/block_address.png +0 -0
  631. data/public/fckeditor/editor/css/images/block_blockquote.png +0 -0
  632. data/public/fckeditor/editor/css/images/block_div.png +0 -0
  633. data/public/fckeditor/editor/css/images/block_h1.png +0 -0
  634. data/public/fckeditor/editor/css/images/block_h2.png +0 -0
  635. data/public/fckeditor/editor/css/images/block_h3.png +0 -0
  636. data/public/fckeditor/editor/css/images/block_h4.png +0 -0
  637. data/public/fckeditor/editor/css/images/block_h5.png +0 -0
  638. data/public/fckeditor/editor/css/images/block_h6.png +0 -0
  639. data/public/fckeditor/editor/css/images/block_p.png +0 -0
  640. data/public/fckeditor/editor/css/images/block_pre.png +0 -0
  641. data/public/fckeditor/editor/css/images/fck_anchor.gif +0 -0
  642. data/public/fckeditor/editor/css/images/fck_flashlogo.gif +0 -0
  643. data/public/fckeditor/editor/css/images/fck_hiddenfield.gif +0 -0
  644. data/public/fckeditor/editor/css/images/fck_pagebreak.gif +0 -0
  645. data/public/fckeditor/editor/css/images/fck_plugin.gif +0 -0
  646. data/public/fckeditor/editor/dialog/common/fck_dialog_common.css +85 -0
  647. data/public/fckeditor/editor/dialog/common/fck_dialog_common.js +311 -0
  648. data/public/fckeditor/editor/dialog/common/images/locked.gif +0 -0
  649. data/public/fckeditor/editor/dialog/common/images/reset.gif +0 -0
  650. data/public/fckeditor/editor/dialog/common/images/unlocked.gif +0 -0
  651. data/public/fckeditor/editor/dialog/fck_about.html +161 -0
  652. data/public/fckeditor/editor/dialog/fck_about/logo_fckeditor.gif +0 -0
  653. data/public/fckeditor/editor/dialog/fck_about/logo_fredck.gif +0 -0
  654. data/public/fckeditor/editor/dialog/fck_about/sponsors/spellchecker_net.gif +0 -0
  655. data/public/fckeditor/editor/dialog/fck_anchor.html +220 -0
  656. data/public/fckeditor/editor/dialog/fck_button.html +104 -0
  657. data/public/fckeditor/editor/dialog/fck_checkbox.html +104 -0
  658. data/public/fckeditor/editor/dialog/fck_colorselector.html +172 -0
  659. data/public/fckeditor/editor/dialog/fck_div.html +364 -0
  660. data/public/fckeditor/editor/dialog/fck_docprops.html +600 -0
  661. data/public/fckeditor/editor/dialog/fck_docprops/fck_document_preview.html +113 -0
  662. data/public/fckeditor/editor/dialog/fck_flash.html +152 -0
  663. data/public/fckeditor/editor/dialog/fck_flash/fck_flash.js +300 -0
  664. data/public/fckeditor/editor/dialog/fck_flash/fck_flash_preview.html +50 -0
  665. data/public/fckeditor/editor/dialog/fck_form.html +109 -0
  666. data/public/fckeditor/editor/dialog/fck_hiddenfield.html +115 -0
  667. data/public/fckeditor/editor/dialog/fck_image.html +258 -0
  668. data/public/fckeditor/editor/dialog/fck_image/fck_image.js +512 -0
  669. data/public/fckeditor/editor/dialog/fck_image/fck_image_preview.html +72 -0
  670. data/public/fckeditor/editor/dialog/fck_link.html +295 -0
  671. data/public/fckeditor/editor/dialog/fck_link/fck_link.js +893 -0
  672. data/public/fckeditor/editor/dialog/fck_listprop.html +120 -0
  673. data/public/fckeditor/editor/dialog/fck_paste.html +346 -0
  674. data/public/fckeditor/editor/dialog/fck_radiobutton.html +104 -0
  675. data/public/fckeditor/editor/dialog/fck_replace.html +648 -0
  676. data/public/fckeditor/editor/dialog/fck_select.html +180 -0
  677. data/public/fckeditor/editor/dialog/fck_select/fck_select.js +194 -0
  678. data/public/fckeditor/editor/dialog/fck_smiley.html +111 -0
  679. data/public/fckeditor/editor/dialog/fck_source.html +68 -0
  680. data/public/fckeditor/editor/dialog/fck_specialchar.html +121 -0
  681. data/public/fckeditor/editor/dialog/fck_spellerpages.html +70 -0
  682. data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/blank.html +0 -0
  683. data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js +87 -0
  684. data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/controls.html +153 -0
  685. data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm +148 -0
  686. data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php +199 -0
  687. data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl +181 -0
  688. data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js +461 -0
  689. data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html +71 -0
  690. data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css +49 -0
  691. data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js +272 -0
  692. data/public/fckeditor/editor/dialog/fck_table.html +298 -0
  693. data/public/fckeditor/editor/dialog/fck_tablecell.html +257 -0
  694. data/public/fckeditor/editor/dialog/fck_template.html +242 -0
  695. data/public/fckeditor/editor/dialog/fck_template/images/template1.gif +0 -0
  696. data/public/fckeditor/editor/dialog/fck_template/images/template2.gif +0 -0
  697. data/public/fckeditor/editor/dialog/fck_template/images/template3.gif +0 -0
  698. data/public/fckeditor/editor/dialog/fck_textarea.html +94 -0
  699. data/public/fckeditor/editor/dialog/fck_textfield.html +136 -0
  700. data/public/fckeditor/editor/dtd/fck_dtd_test.html +41 -0
  701. data/public/fckeditor/editor/dtd/fck_xhtml10strict.js +116 -0
  702. data/public/fckeditor/editor/dtd/fck_xhtml10transitional.js +140 -0
  703. data/public/fckeditor/editor/fckdebug.html +153 -0
  704. data/public/fckeditor/editor/fckdialog.html +812 -0
  705. data/public/fckeditor/editor/fckeditor.html +317 -0
  706. data/public/fckeditor/editor/fckeditor.original.html +424 -0
  707. data/public/fckeditor/editor/filemanager/browser/default/browser.css +87 -0
  708. data/public/fckeditor/editor/filemanager/browser/default/browser.html +200 -0
  709. data/public/fckeditor/editor/filemanager/browser/default/frmactualfolder.html +95 -0
  710. data/public/fckeditor/editor/filemanager/browser/default/frmcreatefolder.html +114 -0
  711. data/public/fckeditor/editor/filemanager/browser/default/frmfolders.html +198 -0
  712. data/public/fckeditor/editor/filemanager/browser/default/frmresourceslist.html +169 -0
  713. data/public/fckeditor/editor/filemanager/browser/default/frmresourcetype.html +68 -0
  714. data/public/fckeditor/editor/filemanager/browser/default/frmupload.html +115 -0
  715. data/public/fckeditor/editor/filemanager/browser/default/images/ButtonArrow.gif +0 -0
  716. data/public/fckeditor/editor/filemanager/browser/default/images/Folder.gif +0 -0
  717. data/public/fckeditor/editor/filemanager/browser/default/images/Folder32.gif +0 -0
  718. data/public/fckeditor/editor/filemanager/browser/default/images/FolderOpened.gif +0 -0
  719. data/public/fckeditor/editor/filemanager/browser/default/images/FolderOpened32.gif +0 -0
  720. data/public/fckeditor/editor/filemanager/browser/default/images/FolderUp.gif +0 -0
  721. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/ai.gif +0 -0
  722. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/avi.gif +0 -0
  723. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/bmp.gif +0 -0
  724. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/cs.gif +0 -0
  725. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/default.icon.gif +0 -0
  726. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/dll.gif +0 -0
  727. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/doc.gif +0 -0
  728. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/exe.gif +0 -0
  729. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/fla.gif +0 -0
  730. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/gif.gif +0 -0
  731. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/htm.gif +0 -0
  732. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/html.gif +0 -0
  733. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/jpg.gif +0 -0
  734. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/js.gif +0 -0
  735. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/mdb.gif +0 -0
  736. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/mp3.gif +0 -0
  737. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/pdf.gif +0 -0
  738. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/png.gif +0 -0
  739. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/ppt.gif +0 -0
  740. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/rdp.gif +0 -0
  741. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/swf.gif +0 -0
  742. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/swt.gif +0 -0
  743. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/txt.gif +0 -0
  744. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/vsd.gif +0 -0
  745. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/xls.gif +0 -0
  746. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/xml.gif +0 -0
  747. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/zip.gif +0 -0
  748. data/public/fckeditor/editor/filemanager/browser/default/images/icons/ai.gif +0 -0
  749. data/public/fckeditor/editor/filemanager/browser/default/images/icons/avi.gif +0 -0
  750. data/public/fckeditor/editor/filemanager/browser/default/images/icons/bmp.gif +0 -0
  751. data/public/fckeditor/editor/filemanager/browser/default/images/icons/cs.gif +0 -0
  752. data/public/fckeditor/editor/filemanager/browser/default/images/icons/default.icon.gif +0 -0
  753. data/public/fckeditor/editor/filemanager/browser/default/images/icons/dll.gif +0 -0
  754. data/public/fckeditor/editor/filemanager/browser/default/images/icons/doc.gif +0 -0
  755. data/public/fckeditor/editor/filemanager/browser/default/images/icons/exe.gif +0 -0
  756. data/public/fckeditor/editor/filemanager/browser/default/images/icons/fla.gif +0 -0
  757. data/public/fckeditor/editor/filemanager/browser/default/images/icons/gif.gif +0 -0
  758. data/public/fckeditor/editor/filemanager/browser/default/images/icons/htm.gif +0 -0
  759. data/public/fckeditor/editor/filemanager/browser/default/images/icons/html.gif +0 -0
  760. data/public/fckeditor/editor/filemanager/browser/default/images/icons/jpg.gif +0 -0
  761. data/public/fckeditor/editor/filemanager/browser/default/images/icons/js.gif +0 -0
  762. data/public/fckeditor/editor/filemanager/browser/default/images/icons/mdb.gif +0 -0
  763. data/public/fckeditor/editor/filemanager/browser/default/images/icons/mp3.gif +0 -0
  764. data/public/fckeditor/editor/filemanager/browser/default/images/icons/pdf.gif +0 -0
  765. data/public/fckeditor/editor/filemanager/browser/default/images/icons/png.gif +0 -0
  766. data/public/fckeditor/editor/filemanager/browser/default/images/icons/ppt.gif +0 -0
  767. data/public/fckeditor/editor/filemanager/browser/default/images/icons/rdp.gif +0 -0
  768. data/public/fckeditor/editor/filemanager/browser/default/images/icons/swf.gif +0 -0
  769. data/public/fckeditor/editor/filemanager/browser/default/images/icons/swt.gif +0 -0
  770. data/public/fckeditor/editor/filemanager/browser/default/images/icons/txt.gif +0 -0
  771. data/public/fckeditor/editor/filemanager/browser/default/images/icons/vsd.gif +0 -0
  772. data/public/fckeditor/editor/filemanager/browser/default/images/icons/xls.gif +0 -0
  773. data/public/fckeditor/editor/filemanager/browser/default/images/icons/xml.gif +0 -0
  774. data/public/fckeditor/editor/filemanager/browser/default/images/icons/zip.gif +0 -0
  775. data/public/fckeditor/editor/filemanager/browser/default/images/spacer.gif +0 -0
  776. data/public/fckeditor/editor/filemanager/browser/default/js/common.js +88 -0
  777. data/public/fckeditor/editor/filemanager/browser/default/js/fckxml.js +147 -0
  778. data/public/fckeditor/editor/images/anchor.gif +0 -0
  779. data/public/fckeditor/editor/images/arrow_ltr.gif +0 -0
  780. data/public/fckeditor/editor/images/arrow_rtl.gif +0 -0
  781. data/public/fckeditor/editor/images/smiley/msn/angel_smile.gif +0 -0
  782. data/public/fckeditor/editor/images/smiley/msn/angry_smile.gif +0 -0
  783. data/public/fckeditor/editor/images/smiley/msn/broken_heart.gif +0 -0
  784. data/public/fckeditor/editor/images/smiley/msn/cake.gif +0 -0
  785. data/public/fckeditor/editor/images/smiley/msn/confused_smile.gif +0 -0
  786. data/public/fckeditor/editor/images/smiley/msn/cry_smile.gif +0 -0
  787. data/public/fckeditor/editor/images/smiley/msn/devil_smile.gif +0 -0
  788. data/public/fckeditor/editor/images/smiley/msn/embaressed_smile.gif +0 -0
  789. data/public/fckeditor/editor/images/smiley/msn/envelope.gif +0 -0
  790. data/public/fckeditor/editor/images/smiley/msn/heart.gif +0 -0
  791. data/public/fckeditor/editor/images/smiley/msn/kiss.gif +0 -0
  792. data/public/fckeditor/editor/images/smiley/msn/lightbulb.gif +0 -0
  793. data/public/fckeditor/editor/images/smiley/msn/omg_smile.gif +0 -0
  794. data/public/fckeditor/editor/images/smiley/msn/regular_smile.gif +0 -0
  795. data/public/fckeditor/editor/images/smiley/msn/sad_smile.gif +0 -0
  796. data/public/fckeditor/editor/images/smiley/msn/shades_smile.gif +0 -0
  797. data/public/fckeditor/editor/images/smiley/msn/teeth_smile.gif +0 -0
  798. data/public/fckeditor/editor/images/smiley/msn/thumbs_down.gif +0 -0
  799. data/public/fckeditor/editor/images/smiley/msn/thumbs_up.gif +0 -0
  800. data/public/fckeditor/editor/images/smiley/msn/tounge_smile.gif +0 -0
  801. data/public/fckeditor/editor/images/smiley/msn/whatchutalkingabout_smile.gif +0 -0
  802. data/public/fckeditor/editor/images/smiley/msn/wink_smile.gif +0 -0
  803. data/public/fckeditor/editor/images/spacer.gif +0 -0
  804. data/public/fckeditor/editor/js/fckadobeair.js +176 -0
  805. data/public/fckeditor/editor/js/fckeditorcode_gecko.js +108 -0
  806. data/public/fckeditor/editor/js/fckeditorcode_ie.js +109 -0
  807. data/public/fckeditor/editor/lang/_translationstatus.txt +78 -0
  808. data/public/fckeditor/editor/lang/af.js +526 -0
  809. data/public/fckeditor/editor/lang/ar.js +526 -0
  810. data/public/fckeditor/editor/lang/bg.js +526 -0
  811. data/public/fckeditor/editor/lang/bn.js +526 -0
  812. data/public/fckeditor/editor/lang/bs.js +526 -0
  813. data/public/fckeditor/editor/lang/ca.js +526 -0
  814. data/public/fckeditor/editor/lang/cs.js +526 -0
  815. data/public/fckeditor/editor/lang/da.js +526 -0
  816. data/public/fckeditor/editor/lang/de.js +526 -0
  817. data/public/fckeditor/editor/lang/el.js +526 -0
  818. data/public/fckeditor/editor/lang/en-au.js +526 -0
  819. data/public/fckeditor/editor/lang/en-ca.js +526 -0
  820. data/public/fckeditor/editor/lang/en-uk.js +526 -0
  821. data/public/fckeditor/editor/lang/en.js +526 -0
  822. data/public/fckeditor/editor/lang/eo.js +526 -0
  823. data/public/fckeditor/editor/lang/es.js +526 -0
  824. data/public/fckeditor/editor/lang/et.js +526 -0
  825. data/public/fckeditor/editor/lang/eu.js +527 -0
  826. data/public/fckeditor/editor/lang/fa.js +526 -0
  827. data/public/fckeditor/editor/lang/fi.js +526 -0
  828. data/public/fckeditor/editor/lang/fo.js +526 -0
  829. data/public/fckeditor/editor/lang/fr-ca.js +526 -0
  830. data/public/fckeditor/editor/lang/fr.js +526 -0
  831. data/public/fckeditor/editor/lang/gl.js +526 -0
  832. data/public/fckeditor/editor/lang/gu.js +526 -0
  833. data/public/fckeditor/editor/lang/he.js +526 -0
  834. data/public/fckeditor/editor/lang/hi.js +526 -0
  835. data/public/fckeditor/editor/lang/hr.js +526 -0
  836. data/public/fckeditor/editor/lang/hu.js +526 -0
  837. data/public/fckeditor/editor/lang/it.js +526 -0
  838. data/public/fckeditor/editor/lang/ja.js +526 -0
  839. data/public/fckeditor/editor/lang/km.js +526 -0
  840. data/public/fckeditor/editor/lang/ko.js +526 -0
  841. data/public/fckeditor/editor/lang/lt.js +526 -0
  842. data/public/fckeditor/editor/lang/lv.js +526 -0
  843. data/public/fckeditor/editor/lang/mn.js +526 -0
  844. data/public/fckeditor/editor/lang/ms.js +526 -0
  845. data/public/fckeditor/editor/lang/nb.js +526 -0
  846. data/public/fckeditor/editor/lang/nl.js +526 -0
  847. data/public/fckeditor/editor/lang/no.js +526 -0
  848. data/public/fckeditor/editor/lang/pl.js +526 -0
  849. data/public/fckeditor/editor/lang/pt-br.js +526 -0
  850. data/public/fckeditor/editor/lang/pt.js +526 -0
  851. data/public/fckeditor/editor/lang/ro.js +526 -0
  852. data/public/fckeditor/editor/lang/ru.js +526 -0
  853. data/public/fckeditor/editor/lang/sk.js +526 -0
  854. data/public/fckeditor/editor/lang/sl.js +526 -0
  855. data/public/fckeditor/editor/lang/sr-latn.js +526 -0
  856. data/public/fckeditor/editor/lang/sr.js +526 -0
  857. data/public/fckeditor/editor/lang/sv.js +526 -0
  858. data/public/fckeditor/editor/lang/th.js +526 -0
  859. data/public/fckeditor/editor/lang/tr.js +526 -0
  860. data/public/fckeditor/editor/lang/uk.js +526 -0
  861. data/public/fckeditor/editor/lang/vi.js +526 -0
  862. data/public/fckeditor/editor/lang/zh-cn.js +526 -0
  863. data/public/fckeditor/editor/lang/zh.js +526 -0
  864. data/public/fckeditor/editor/plugins/autogrow/fckplugin.js +99 -0
  865. data/public/fckeditor/editor/plugins/bbcode/_sample/sample.config.js +26 -0
  866. data/public/fckeditor/editor/plugins/bbcode/_sample/sample.html +67 -0
  867. data/public/fckeditor/editor/plugins/bbcode/fckplugin.js +123 -0
  868. data/public/fckeditor/editor/plugins/dragresizetable/fckplugin.js +524 -0
  869. data/public/fckeditor/editor/plugins/placeholder/fck_placeholder.html +105 -0
  870. data/public/fckeditor/editor/plugins/placeholder/fckplugin.js +187 -0
  871. data/public/fckeditor/editor/plugins/placeholder/lang/de.js +27 -0
  872. data/public/fckeditor/editor/plugins/placeholder/lang/en.js +27 -0
  873. data/public/fckeditor/editor/plugins/placeholder/lang/es.js +27 -0
  874. data/public/fckeditor/editor/plugins/placeholder/lang/fr.js +27 -0
  875. data/public/fckeditor/editor/plugins/placeholder/lang/it.js +27 -0
  876. data/public/fckeditor/editor/plugins/placeholder/lang/pl.js +27 -0
  877. data/public/fckeditor/editor/plugins/placeholder/placeholder.gif +0 -0
  878. data/public/fckeditor/editor/plugins/simplecommands/fckplugin.js +29 -0
  879. data/public/fckeditor/editor/plugins/tablecommands/fckplugin.js +33 -0
  880. data/public/fckeditor/editor/skins/_fckviewstrips.html +121 -0
  881. data/public/fckeditor/editor/skins/default/fck_dialog.css +402 -0
  882. data/public/fckeditor/editor/skins/default/fck_dialog_ie6.js +110 -0
  883. data/public/fckeditor/editor/skins/default/fck_editor.css +464 -0
  884. data/public/fckeditor/editor/skins/default/fck_strip.gif +0 -0
  885. data/public/fckeditor/editor/skins/default/images/dialog.sides.gif +0 -0
  886. data/public/fckeditor/editor/skins/default/images/dialog.sides.png +0 -0
  887. data/public/fckeditor/editor/skins/default/images/dialog.sides.rtl.png +0 -0
  888. data/public/fckeditor/editor/skins/default/images/sprites.gif +0 -0
  889. data/public/fckeditor/editor/skins/default/images/sprites.png +0 -0
  890. data/public/fckeditor/editor/skins/default/images/toolbar.arrowright.gif +0 -0
  891. data/public/fckeditor/editor/skins/default/images/toolbar.buttonarrow.gif +0 -0
  892. data/public/fckeditor/editor/skins/default/images/toolbar.collapse.gif +0 -0
  893. data/public/fckeditor/editor/skins/default/images/toolbar.end.gif +0 -0
  894. data/public/fckeditor/editor/skins/default/images/toolbar.expand.gif +0 -0
  895. data/public/fckeditor/editor/skins/default/images/toolbar.separator.gif +0 -0
  896. data/public/fckeditor/editor/skins/default/images/toolbar.start.gif +0 -0
  897. data/public/fckeditor/editor/skins/office2003/fck_dialog.css +402 -0
  898. data/public/fckeditor/editor/skins/office2003/fck_dialog_ie6.js +110 -0
  899. data/public/fckeditor/editor/skins/office2003/fck_editor.css +476 -0
  900. data/public/fckeditor/editor/skins/office2003/fck_strip.gif +0 -0
  901. data/public/fckeditor/editor/skins/office2003/images/dialog.sides.gif +0 -0
  902. data/public/fckeditor/editor/skins/office2003/images/dialog.sides.png +0 -0
  903. data/public/fckeditor/editor/skins/office2003/images/dialog.sides.rtl.png +0 -0
  904. data/public/fckeditor/editor/skins/office2003/images/sprites.gif +0 -0
  905. data/public/fckeditor/editor/skins/office2003/images/sprites.png +0 -0
  906. data/public/fckeditor/editor/skins/office2003/images/toolbar.arrowright.gif +0 -0
  907. data/public/fckeditor/editor/skins/office2003/images/toolbar.bg.gif +0 -0
  908. data/public/fckeditor/editor/skins/office2003/images/toolbar.buttonarrow.gif +0 -0
  909. data/public/fckeditor/editor/skins/office2003/images/toolbar.collapse.gif +0 -0
  910. data/public/fckeditor/editor/skins/office2003/images/toolbar.end.gif +0 -0
  911. data/public/fckeditor/editor/skins/office2003/images/toolbar.expand.gif +0 -0
  912. data/public/fckeditor/editor/skins/office2003/images/toolbar.separator.gif +0 -0
  913. data/public/fckeditor/editor/skins/office2003/images/toolbar.start.gif +0 -0
  914. data/public/fckeditor/editor/skins/silver/fck_dialog.css +402 -0
  915. data/public/fckeditor/editor/skins/silver/fck_dialog_ie6.js +110 -0
  916. data/public/fckeditor/editor/skins/silver/fck_editor.css +473 -0
  917. data/public/fckeditor/editor/skins/silver/fck_strip.gif +0 -0
  918. data/public/fckeditor/editor/skins/silver/images/dialog.sides.gif +0 -0
  919. data/public/fckeditor/editor/skins/silver/images/dialog.sides.png +0 -0
  920. data/public/fckeditor/editor/skins/silver/images/dialog.sides.rtl.png +0 -0
  921. data/public/fckeditor/editor/skins/silver/images/sprites.gif +0 -0
  922. data/public/fckeditor/editor/skins/silver/images/sprites.png +0 -0
  923. data/public/fckeditor/editor/skins/silver/images/toolbar.arrowright.gif +0 -0
  924. data/public/fckeditor/editor/skins/silver/images/toolbar.buttonarrow.gif +0 -0
  925. data/public/fckeditor/editor/skins/silver/images/toolbar.buttonbg.gif +0 -0
  926. data/public/fckeditor/editor/skins/silver/images/toolbar.collapse.gif +0 -0
  927. data/public/fckeditor/editor/skins/silver/images/toolbar.end.gif +0 -0
  928. data/public/fckeditor/editor/skins/silver/images/toolbar.expand.gif +0 -0
  929. data/public/fckeditor/editor/skins/silver/images/toolbar.separator.gif +0 -0
  930. data/public/fckeditor/editor/skins/silver/images/toolbar.start.gif +0 -0
  931. data/public/fckeditor/fckconfig.js +364 -0
  932. data/public/fckeditor/fckdebug.html +153 -0
  933. data/public/fckeditor/fckdialog.html +812 -0
  934. data/public/fckeditor/fckeditor.html +317 -0
  935. data/public/fckeditor/fckeditor.js +328 -0
  936. data/public/fckeditor/fckeditor.original.html +424 -0
  937. data/public/fckeditor/fckpackager.xml +262 -0
  938. data/public/fckeditor/fckstyles.xml +111 -0
  939. data/public/fckeditor/fcktemplates.xml +103 -0
  940. data/public/images/cms/administration/user_browser_bg.gif +0 -0
  941. data/public/images/cms/bg.png +0 -0
  942. data/public/images/cms/bl_curve.png +0 -0
  943. data/public/images/cms/bottom_cap.png +0 -0
  944. data/public/images/cms/bottom_cap_content.png +0 -0
  945. data/public/images/cms/browse.gif +0 -0
  946. data/public/images/cms/browser_media_logo.png +0 -0
  947. data/public/images/cms/browsercms_logo.png +0 -0
  948. data/public/images/cms/buttons/button.png +0 -0
  949. data/public/images/cms/buttons/button_bg.png +0 -0
  950. data/public/images/cms/buttons/button_cap.png +0 -0
  951. data/public/images/cms/buttons/button_cap_h.png +0 -0
  952. data/public/images/cms/buttons/button_cap_off.gif +0 -0
  953. data/public/images/cms/buttons/button_cap_off_middle.gif +0 -0
  954. data/public/images/cms/buttons/button_h.png +0 -0
  955. data/public/images/cms/buttons/button_left_bg.png +0 -0
  956. data/public/images/cms/buttons/button_off.png +0 -0
  957. data/public/images/cms/buttons/button_off_middle.png +0 -0
  958. data/public/images/cms/buttons/delete_x.png +0 -0
  959. data/public/images/cms/buttons/delete_x_disabled.png +0 -0
  960. data/public/images/cms/buttons/delete_x_h.png +0 -0
  961. data/public/images/cms/buttons/sm_button.gif +0 -0
  962. data/public/images/cms/buttons/sm_button_2.gif +0 -0
  963. data/public/images/cms/buttons/sm_button_2_h.gif +0 -0
  964. data/public/images/cms/buttons/sm_button_h.gif +0 -0
  965. data/public/images/cms/containers/add.gif +0 -0
  966. data/public/images/cms/containers/alpha.png +0 -0
  967. data/public/images/cms/containers/beta.png +0 -0
  968. data/public/images/cms/containers/delete.gif +0 -0
  969. data/public/images/cms/containers/down.gif +0 -0
  970. data/public/images/cms/containers/edit.gif +0 -0
  971. data/public/images/cms/containers/up.gif +0 -0
  972. data/public/images/cms/containers/view.gif +0 -0
  973. data/public/images/cms/content_bg.gif +0 -0
  974. data/public/images/cms/dashboard/bottom_cap.png +0 -0
  975. data/public/images/cms/dashboard/bottom_cap_content.png +0 -0
  976. data/public/images/cms/dashboard/header_bg.gif +0 -0
  977. data/public/images/cms/dashboard/header_left_bg.gif +0 -0
  978. data/public/images/cms/dashboard/table_header_bg.gif +0 -0
  979. data/public/images/cms/dashboard/top_cap.png +0 -0
  980. data/public/images/cms/dashed.gif +0 -0
  981. data/public/images/cms/datepicker/clear.gif +0 -0
  982. data/public/images/cms/datepicker/close.gif +0 -0
  983. data/public/images/cms/dk_button_l.gif +0 -0
  984. data/public/images/cms/dk_button_r.gif +0 -0
  985. data/public/images/cms/dot.png +0 -0
  986. data/public/images/cms/draft_status.gif +0 -0
  987. data/public/images/cms/gray_long_bg.gif +0 -0
  988. data/public/images/cms/icons/actions/add.png +0 -0
  989. data/public/images/cms/icons/actions/config.png +0 -0
  990. data/public/images/cms/icons/actions/connect.png +0 -0
  991. data/public/images/cms/icons/actions/delete.png +0 -0
  992. data/public/images/cms/icons/actions/down.png +0 -0
  993. data/public/images/cms/icons/actions/edit.png +0 -0
  994. data/public/images/cms/icons/actions/folder.png +0 -0
  995. data/public/images/cms/icons/actions/folder_add.png +0 -0
  996. data/public/images/cms/icons/actions/folder_delete.png +0 -0
  997. data/public/images/cms/icons/actions/folder_edit.png +0 -0
  998. data/public/images/cms/icons/actions/folder_move.png +0 -0
  999. data/public/images/cms/icons/actions/folder_open.png +0 -0
  1000. data/public/images/cms/icons/actions/history.png +0 -0
  1001. data/public/images/cms/icons/actions/home.png +0 -0
  1002. data/public/images/cms/icons/actions/left.png +0 -0
  1003. data/public/images/cms/icons/actions/link.png +0 -0
  1004. data/public/images/cms/icons/actions/page.png +0 -0
  1005. data/public/images/cms/icons/actions/page_add.png +0 -0
  1006. data/public/images/cms/icons/actions/page_edit.png +0 -0
  1007. data/public/images/cms/icons/actions/page_move.png +0 -0
  1008. data/public/images/cms/icons/actions/redo.png +0 -0
  1009. data/public/images/cms/icons/actions/refresh.png +0 -0
  1010. data/public/images/cms/icons/actions/right.png +0 -0
  1011. data/public/images/cms/icons/actions/root_folder.png +0 -0
  1012. data/public/images/cms/icons/actions/root_link.png +0 -0
  1013. data/public/images/cms/icons/actions/root_page.png +0 -0
  1014. data/public/images/cms/icons/actions/undo.png +0 -0
  1015. data/public/images/cms/icons/actions/up.png +0 -0
  1016. data/public/images/cms/icons/actions/view.png +0 -0
  1017. data/public/images/cms/icons/file_types/doc.png +0 -0
  1018. data/public/images/cms/icons/file_types/file.png +0 -0
  1019. data/public/images/cms/icons/file_types/gif.png +0 -0
  1020. data/public/images/cms/icons/file_types/htm.png +0 -0
  1021. data/public/images/cms/icons/file_types/pdf.png +0 -0
  1022. data/public/images/cms/icons/file_types/ppt.png +0 -0
  1023. data/public/images/cms/icons/file_types/swf.png +0 -0
  1024. data/public/images/cms/icons/file_types/txt.png +0 -0
  1025. data/public/images/cms/icons/file_types/xls.png +0 -0
  1026. data/public/images/cms/icons/file_types/xml.png +0 -0
  1027. data/public/images/cms/icons/file_types/zip.png +0 -0
  1028. data/public/images/cms/icons/status/archived.gif +0 -0
  1029. data/public/images/cms/icons/status/draft.gif +0 -0
  1030. data/public/images/cms/icons/status/hidden.gif +0 -0
  1031. data/public/images/cms/icons/status/locked.gif +0 -0
  1032. data/public/images/cms/icons/status/published.gif +0 -0
  1033. data/public/images/cms/icons/status/unlocked.gif +0 -0
  1034. data/public/images/cms/icons/user.png +0 -0
  1035. data/public/images/cms/login_bg.jpg +0 -0
  1036. data/public/images/cms/login_bottom.jpg +0 -0
  1037. data/public/images/cms/login_top.gif +0 -0
  1038. data/public/images/cms/lt_button_bg.gif +0 -0
  1039. data/public/images/cms/lt_button_l.gif +0 -0
  1040. data/public/images/cms/lt_button_r.gif +0 -0
  1041. data/public/images/cms/menu.png +0 -0
  1042. data/public/images/cms/menu/block_cap_h.gif +0 -0
  1043. data/public/images/cms/menu/bottom_cap.png +0 -0
  1044. data/public/images/cms/menu/bottom_cap_menu.png +0 -0
  1045. data/public/images/cms/menu/bottom_cap_menu_first.png +0 -0
  1046. data/public/images/cms/menu/menu_header_first_bg.gif +0 -0
  1047. data/public/images/cms/menu/selected_block_cap.gif +0 -0
  1048. data/public/images/cms/menu/top_cap.png +0 -0
  1049. data/public/images/cms/menu/top_cap_menu_header.png +0 -0
  1050. data/public/images/cms/menu_h.gif +0 -0
  1051. data/public/images/cms/menu_header.png +0 -0
  1052. data/public/images/cms/menu_open.png +0 -0
  1053. data/public/images/cms/menu_open_bg.gif +0 -0
  1054. data/public/images/cms/nav.png +0 -0
  1055. data/public/images/cms/nav/on_bg.gif +0 -0
  1056. data/public/images/cms/nav_admin.gif +0 -0
  1057. data/public/images/cms/nav_admin_h.gif +0 -0
  1058. data/public/images/cms/nav_admin_on.gif +0 -0
  1059. data/public/images/cms/nav_cap.png +0 -0
  1060. data/public/images/cms/nav_cap_h.gif +0 -0
  1061. data/public/images/cms/nav_content_library.gif +0 -0
  1062. data/public/images/cms/nav_content_library_h.gif +0 -0
  1063. data/public/images/cms/nav_content_library_on.gif +0 -0
  1064. data/public/images/cms/nav_dash.gif +0 -0
  1065. data/public/images/cms/nav_dash_h.gif +0 -0
  1066. data/public/images/cms/nav_dash_on.gif +0 -0
  1067. data/public/images/cms/nav_h.gif +0 -0
  1068. data/public/images/cms/nav_sitemap.gif +0 -0
  1069. data/public/images/cms/nav_sitemap_h.gif +0 -0
  1070. data/public/images/cms/nav_sitemap_on.gif +0 -0
  1071. data/public/images/cms/page_toolbar/page_toolbar_bg.gif +0 -0
  1072. data/public/images/cms/page_toolbar/page_toolbar_inset_bg.gif +0 -0
  1073. data/public/images/cms/page_toolbar/page_toolbar_inset_draft_bg.gif +0 -0
  1074. data/public/images/cms/page_toolbar/page_toolbar_inset_draft_l.gif +0 -0
  1075. data/public/images/cms/page_toolbar/page_toolbar_inset_draft_r.gif +0 -0
  1076. data/public/images/cms/page_toolbar/page_toolbar_inset_l.gif +0 -0
  1077. data/public/images/cms/page_toolbar/page_toolbar_inset_published_bg.gif +0 -0
  1078. data/public/images/cms/page_toolbar/page_toolbar_inset_published_l.gif +0 -0
  1079. data/public/images/cms/page_toolbar/page_toolbar_inset_published_r.gif +0 -0
  1080. data/public/images/cms/page_toolbar/page_toolbar_inset_r.gif +0 -0
  1081. data/public/images/cms/page_toolbar/page_toolbar_l.gif +0 -0
  1082. data/public/images/cms/page_toolbar/page_toolbar_r.gif +0 -0
  1083. data/public/images/cms/page_toolbar/status_draft_bg.gif +0 -0
  1084. data/public/images/cms/page_toolbar/status_draft_l.gif +0 -0
  1085. data/public/images/cms/page_toolbar/status_l.gif +0 -0
  1086. data/public/images/cms/page_toolbar/status_published_bg.gif +0 -0
  1087. data/public/images/cms/page_toolbar/status_published_l.gif +0 -0
  1088. data/public/images/cms/page_toolbar/visual_editor_bg.gif +0 -0
  1089. data/public/images/cms/page_toolbar/visual_editor_end.gif +0 -0
  1090. data/public/images/cms/page_toolbar/visual_editor_r.gif +0 -0
  1091. data/public/images/cms/page_toolbar/visual_editor_state_bg.gif +0 -0
  1092. data/public/images/cms/pages/add_connectable.gif +0 -0
  1093. data/public/images/cms/pages/connect_connectable.gif +0 -0
  1094. data/public/images/cms/pages/container_border.gif +0 -0
  1095. data/public/images/cms/pages/container_border_l.gif +0 -0
  1096. data/public/images/cms/pages/container_border_r.gif +0 -0
  1097. data/public/images/cms/pages/delete_connectable.gif +0 -0
  1098. data/public/images/cms/pages/down_connectable.gif +0 -0
  1099. data/public/images/cms/pages/down_connectable_disabled.gif +0 -0
  1100. data/public/images/cms/pages/edit_connectable.gif +0 -0
  1101. data/public/images/cms/pages/edit_connectable_2.gif +0 -0
  1102. data/public/images/cms/pages/show_connectable.gif +0 -0
  1103. data/public/images/cms/pages/up_connectable.gif +0 -0
  1104. data/public/images/cms/pages/up_connectable_disabled.gif +0 -0
  1105. data/public/images/cms/pagination/first.gif +0 -0
  1106. data/public/images/cms/pagination/first_h.gif +0 -0
  1107. data/public/images/cms/pagination/input.gif +0 -0
  1108. data/public/images/cms/pagination/last.gif +0 -0
  1109. data/public/images/cms/pagination/last_h.gif +0 -0
  1110. data/public/images/cms/pagination/next.gif +0 -0
  1111. data/public/images/cms/pagination/next_h.gif +0 -0
  1112. data/public/images/cms/pagination/previous.gif +0 -0
  1113. data/public/images/cms/pagination/previous_h.gif +0 -0
  1114. data/public/images/cms/published_status.gif +0 -0
  1115. data/public/images/cms/search.png +0 -0
  1116. data/public/images/cms/search_submit.gif +0 -0
  1117. data/public/images/cms/search_submit_h.gif +0 -0
  1118. data/public/images/cms/searchbox_gradient.gif +0 -0
  1119. data/public/images/cms/select_bg.gif +0 -0
  1120. data/public/images/cms/select_bg_2.gif +0 -0
  1121. data/public/images/cms/sitemap/bottom_cap.png +0 -0
  1122. data/public/images/cms/sitemap/buffer_caps.png +0 -0
  1123. data/public/images/cms/sitemap/contract.png +0 -0
  1124. data/public/images/cms/sitemap/corners.gif +0 -0
  1125. data/public/images/cms/sitemap/corners_hover.gif +0 -0
  1126. data/public/images/cms/sitemap/divider.gif +0 -0
  1127. data/public/images/cms/sitemap/expand.png +0 -0
  1128. data/public/images/cms/sitemap/gradient.gif +0 -0
  1129. data/public/images/cms/sitemap/gray_contract.png +0 -0
  1130. data/public/images/cms/sitemap/gray_expand.png +0 -0
  1131. data/public/images/cms/sitemap/no_contents.png +0 -0
  1132. data/public/images/cms/sitemap/site_root_cap.png +0 -0
  1133. data/public/images/cms/sitemap/tooltip.gif +0 -0
  1134. data/public/images/cms/sitemap/top_cap_content.png +0 -0
  1135. data/public/images/cms/solid.gif +0 -0
  1136. data/public/images/cms/table/bl.gif +0 -0
  1137. data/public/images/cms/table/br.gif +0 -0
  1138. data/public/images/cms/table/divider.gif +0 -0
  1139. data/public/images/cms/table/td_cap_first_h.gif +0 -0
  1140. data/public/images/cms/table/td_cap_first_s.gif +0 -0
  1141. data/public/images/cms/table/td_cap_last_h.gif +0 -0
  1142. data/public/images/cms/table/td_cap_last_s.gif +0 -0
  1143. data/public/images/cms/table/td_last_bg.gif +0 -0
  1144. data/public/images/cms/table/th_bg.gif +0 -0
  1145. data/public/images/cms/table/th_divider.gif +0 -0
  1146. data/public/images/cms/table/th_last_bg.gif +0 -0
  1147. data/public/images/cms/table/tl.gif +0 -0
  1148. data/public/images/cms/table/tr.gif +0 -0
  1149. data/public/images/cms/table/tr_bg.gif +0 -0
  1150. data/public/images/cms/thickbox/loadingAnimation.gif +0 -0
  1151. data/public/images/cms/thickbox/macFFBgHack.png +0 -0
  1152. data/public/images/cms/toolbar_bg.png +0 -0
  1153. data/public/images/cms/top_cap.png +0 -0
  1154. data/public/images/cms/top_cap_content.png +0 -0
  1155. data/public/images/cms/top_cap_menu_header.png +0 -0
  1156. data/public/images/cms/user_search_submit.gif +0 -0
  1157. data/public/images/cms/usercontrols_bg.png +0 -0
  1158. data/public/images/cms/usercontrols_bg_cap.png +0 -0
  1159. data/public/javascripts/cms/application.js +148 -0
  1160. data/public/javascripts/cms/editor.js +56 -0
  1161. data/public/javascripts/cms/sitemap.js +428 -0
  1162. data/public/javascripts/jquery-ui.js +591 -0
  1163. data/public/javascripts/jquery.contextMenu.js +211 -0
  1164. data/public/javascripts/jquery.cookie.js +96 -0
  1165. data/public/javascripts/jquery.dimensions.js +119 -0
  1166. data/public/javascripts/jquery.js +11 -0
  1167. data/public/javascripts/jquery.selectbox-0.5.js +209 -0
  1168. data/public/javascripts/jquery.taglist.js +136 -0
  1169. data/public/javascripts/jquery.thickbox.js +10 -0
  1170. data/public/site/customconfig.js +1 -0
  1171. data/public/stylesheets/cms/administration.css +91 -0
  1172. data/public/stylesheets/cms/application.css +166 -0
  1173. data/public/stylesheets/cms/block.css +26 -0
  1174. data/public/stylesheets/cms/buttons.css +120 -0
  1175. data/public/stylesheets/cms/content_library.css +139 -0
  1176. data/public/stylesheets/cms/content_types.css +4 -0
  1177. data/public/stylesheets/cms/dashboard.css +118 -0
  1178. data/public/stylesheets/cms/data_table.css +156 -0
  1179. data/public/stylesheets/cms/date_picker.css +73 -0
  1180. data/public/stylesheets/cms/form_layout.css +294 -0
  1181. data/public/stylesheets/cms/jquery.contextMenu.css +61 -0
  1182. data/public/stylesheets/cms/login.css +78 -0
  1183. data/public/stylesheets/cms/menu.css +116 -0
  1184. data/public/stylesheets/cms/nav.css +99 -0
  1185. data/public/stylesheets/cms/page_toolbar.css +135 -0
  1186. data/public/stylesheets/cms/reset.css +46 -0
  1187. data/public/stylesheets/cms/selectbox.css +56 -0
  1188. data/public/stylesheets/cms/sitemap.css +390 -0
  1189. data/public/stylesheets/cms/taglist.css +18 -0
  1190. data/public/stylesheets/cms/thickbox.css +163 -0
  1191. data/public/themes/blue_steel/images/logo.jpg +0 -0
  1192. data/public/themes/blue_steel/images/splash.jpg +0 -0
  1193. data/public/themes/blue_steel/stylesheets/style.css +257 -0
  1194. data/rails/init.rb +3 -0
  1195. data/rails_generators/browser_cms/USAGE +2 -0
  1196. data/rails_generators/browser_cms/browser_cms_generator.rb +35 -0
  1197. data/rails_generators/browser_cms/templates/README +1 -0
  1198. data/rails_generators/browser_cms_demo_site/USAGE +1 -0
  1199. data/rails_generators/browser_cms_demo_site/browser_cms_demo_site_generator.rb +63 -0
  1200. data/rails_generators/browser_cms_demo_site/templates/migration.rb +21 -0
  1201. data/rails_generators/content_block/USAGE +32 -0
  1202. data/rails_generators/content_block/content_block_generator.rb +69 -0
  1203. data/rails_generators/content_block/templates/_form.html.erb +22 -0
  1204. data/rails_generators/content_block/templates/content_block.rb +27 -0
  1205. data/rails_generators/content_block/templates/controller.rb +2 -0
  1206. data/rails_generators/content_block/templates/functional_test.erb +11 -0
  1207. data/rails_generators/content_block/templates/migration.rb +38 -0
  1208. data/rails_generators/content_block/templates/render.html.erb +14 -0
  1209. data/rails_generators/content_block/templates/unit_test.erb +9 -0
  1210. data/rails_generators/portlet/USAGE +37 -0
  1211. data/rails_generators/portlet/portlet_generator.rb +31 -0
  1212. data/rails_generators/portlet/templates/_form.html.erb +6 -0
  1213. data/rails_generators/portlet/templates/portlet.rb +7 -0
  1214. data/rails_generators/portlet/templates/render.html.erb +1 -0
  1215. data/rails_generators/portlet/templates/unit_test.erb +9 -0
  1216. data/templates/blank.rb +30 -0
  1217. data/templates/demo.rb +28 -0
  1218. data/templates/module.rb +945 -0
  1219. data/test/custom_assertions.rb +68 -0
  1220. data/test/factories.rb +112 -0
  1221. data/test/functional/cms/cache_controller_test.rb +14 -0
  1222. data/test/functional/cms/categories_controller_test.rb +25 -0
  1223. data/test/functional/cms/connectors_controller_test.rb +60 -0
  1224. data/test/functional/cms/content_controller_test.rb +379 -0
  1225. data/test/functional/cms/content_types_controller_test.rb +18 -0
  1226. data/test/functional/cms/dashboard_controller_test.rb +17 -0
  1227. data/test/functional/cms/dynamic_views_controller_test.rb +129 -0
  1228. data/test/functional/cms/file_blocks_controller_test.rb +51 -0
  1229. data/test/functional/cms/groups_controller_test.rb +50 -0
  1230. data/test/functional/cms/home_controller_test.rb +156 -0
  1231. data/test/functional/cms/html_blocks_controller_test.rb +163 -0
  1232. data/test/functional/cms/image_blocks_controller_test.rb +75 -0
  1233. data/test/functional/cms/links_controller_test.rb +143 -0
  1234. data/test/functional/cms/pages_controller_test.rb +202 -0
  1235. data/test/functional/cms/portlets_controller_test.rb +67 -0
  1236. data/test/functional/cms/section_nodes_controller_test.rb +87 -0
  1237. data/test/functional/cms/sections_controller_test.rb +161 -0
  1238. data/test/functional/cms/sessions_controller_test.rb +52 -0
  1239. data/test/functional/cms/toolbar_controller_test.rb +64 -0
  1240. data/test/functional/cms/users_controller_test.rb +231 -0
  1241. data/test/integration/login_test.rb +14 -0
  1242. data/test/test_helper.rb +161 -0
  1243. data/test/test_logging.rb +67 -0
  1244. data/test/unit/behaviors/attaching_test.rb +333 -0
  1245. data/test/unit/behaviors/dynamic_attributes_test.rb +38 -0
  1246. data/test/unit/behaviors/publishable_test.rb +53 -0
  1247. data/test/unit/behaviors/searching_test.rb +102 -0
  1248. data/test/unit/behaviors/taggable_test.rb +109 -0
  1249. data/test/unit/extensions/active_record/base_test.rb +10 -0
  1250. data/test/unit/extensions/hash_test.rb +17 -0
  1251. data/test/unit/extensions/integer_test.rb +10 -0
  1252. data/test/unit/helpers/application_helper_test.rb +29 -0
  1253. data/test/unit/helpers/dynamic_view_helper_test.rb +43 -0
  1254. data/test/unit/helpers/form_builder_test.rb +17 -0
  1255. data/test/unit/helpers/menu_helper_test.rb +217 -0
  1256. data/test/unit/helpers/page_helper_test.rb +60 -0
  1257. data/test/unit/helpers/path_helper_test.rb +94 -0
  1258. data/test/unit/helpers/section_nodes_helper_test.rb +13 -0
  1259. data/test/unit/lib/content_block_test.rb +166 -0
  1260. data/test/unit/lib/generators_test.rb +40 -0
  1261. data/test/unit/models/attachment_test.rb +96 -0
  1262. data/test/unit/models/category_test.rb +40 -0
  1263. data/test/unit/models/category_type_test.rb +8 -0
  1264. data/test/unit/models/connector_test.rb +152 -0
  1265. data/test/unit/models/content_type_test.rb +23 -0
  1266. data/test/unit/models/email_page_portlet_test.rb +14 -0
  1267. data/test/unit/models/file_block_test.rb +211 -0
  1268. data/test/unit/models/group_test.rb +7 -0
  1269. data/test/unit/models/html_block_test.rb +102 -0
  1270. data/test/unit/models/link_test.rb +8 -0
  1271. data/test/unit/models/page_partial_test.rb +38 -0
  1272. data/test/unit/models/page_route_test.rb +29 -0
  1273. data/test/unit/models/page_template_test.rb +46 -0
  1274. data/test/unit/models/page_test.rb +726 -0
  1275. data/test/unit/models/permission_test.rb +10 -0
  1276. data/test/unit/models/portlet_test.rb +21 -0
  1277. data/test/unit/models/section_node_test.rb +92 -0
  1278. data/test/unit/models/sections_test.rb +125 -0
  1279. data/test/unit/models/site_test.rb +50 -0
  1280. data/test/unit/models/task_test.rb +126 -0
  1281. data/test/unit/models/user_test.rb +145 -0
  1282. metadata +1335 -0
@@ -0,0 +1,31 @@
1
+ module Cms
2
+ module Behaviors
3
+ module Categorizing
4
+ def self.included(model_class)
5
+ model_class.extend(MacroMethods)
6
+ end
7
+ module MacroMethods
8
+ def belongs_to_category?
9
+ !!@belongs_to_category
10
+ end
11
+ def belongs_to_category
12
+ @belongs_to_category = true
13
+ extend ClassMethods
14
+ include InstanceMethods
15
+
16
+ belongs_to :category
17
+
18
+ named_scope :in_category, lambda{|cat| {:conditions => ["category_id = ?", cat.id]}}
19
+
20
+ end
21
+ end
22
+ module ClassMethods
23
+ end
24
+ module InstanceMethods
25
+ def category_name
26
+ category && category.name
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,99 @@
1
+ module Cms
2
+ module Behaviors
3
+ module Connecting
4
+ def self.included(model_class)
5
+ model_class.extend(MacroMethods)
6
+ end
7
+ module MacroMethods
8
+ def connectable?
9
+ !!@is_connectable
10
+ end
11
+ def is_connectable(options={})
12
+ @is_connectable = true
13
+ extend ClassMethods
14
+ include InstanceMethods
15
+
16
+ attr_accessor :connect_to_page_id
17
+ attr_accessor :connect_to_container
18
+ attr_accessor :connected_page
19
+
20
+ has_many :connectors, :as => :connectable
21
+
22
+ attr_accessor :updated_by_page
23
+
24
+ after_create :connect_to_page
25
+ after_save :update_connected_pages
26
+ end
27
+ end
28
+ module ClassMethods
29
+ def content_block_type
30
+ to_s.underscore
31
+ end
32
+ def display_name
33
+ to_s.titleize
34
+ end
35
+ def display_name_plural
36
+ display_name.pluralize
37
+ end
38
+ end
39
+ module InstanceMethods
40
+
41
+ def connected_pages
42
+ Page.connected_to(self)
43
+ end
44
+
45
+ def connected_page_count
46
+ Page.connected_to(self).count
47
+ end
48
+
49
+ def content_block_type
50
+ self.class.content_block_type
51
+ end
52
+
53
+ def display_name
54
+ self.class.display_name
55
+ end
56
+
57
+ def display_name_plural
58
+ self.class.display_name_plural
59
+ end
60
+
61
+ def connect_to_page
62
+ unless connect_to_page_id.blank? || connect_to_container.blank?
63
+ #Note that we are setting connected_page so that page can look at that
64
+ #to determine if the page should be published
65
+ self.connected_page = Page.find(connect_to_page_id)
66
+ connected_page.create_connector(self, connect_to_container)
67
+ end
68
+ true
69
+ end
70
+
71
+ def update_connected_pages
72
+ # If this is versioned, then we need make new versions of all the pages this is connected to
73
+ if self.class.versioned?
74
+ #logger.info "..... Updating connected pages for #{self.class} #{id} v#{version}"
75
+
76
+ #Get all the pages the previous version of this connectable was connected to
77
+ draft_version = draft.version
78
+ Page.connected_to(:connectable => self, :version => (draft_version - 1)).all.each do |p|
79
+ # This is needed in the case of updating page,
80
+ # which updates this object, so as not to create a loop
81
+ if p != updated_by_page
82
+ #This just creates a new version of the page
83
+ action = deleted? ? "Deleted" : "Edited"
84
+ p.update_attributes(:version_comment => "#{self.class.name} ##{id} was #{action}")
85
+
86
+ #The previous step will copy over a connector pointing to the previous version of this connectable
87
+ #We need to change that to point at the new version of this connectable
88
+ p.connectors.for_page_version(p.draft.version).for_connectable(self).each do |con|
89
+ con.update_attribute(:connectable_version, draft_version)
90
+ end
91
+ end
92
+ end
93
+ end
94
+ true
95
+ end
96
+ end
97
+ end
98
+ end
99
+ end
@@ -0,0 +1,367 @@
1
+ module Cms
2
+ module Behaviors
3
+ # The DynamicAttributes behavior allows a model to store values for any attributes.
4
+ # A model that uses DynamicAttributes should have corresponding "_attributes" table
5
+ # where it stores the values for the dynamic attributes.
6
+ # This is based on the {Flex Attributes Rails Plugin}[http://rubyforge.org/projects/flex-attributes].
7
+ #
8
+ # class User < ActiveRecord::Base
9
+ # has_dynamic_attributes
10
+ # end
11
+ # eric = User.find_by_login 'eric'
12
+ # puts "My AOL instant message name is: #{eric.aim}"
13
+ # eric.phone = '555-123-4567'
14
+ # eric.save
15
+ #
16
+ # The above example should work even though "aim" and "phone" are not
17
+ # attributes on the User model.
18
+ #
19
+ # The following options are available on for has_dynamic_attributes to modify
20
+ # the behavior. Reasonable defaults are provided:
21
+ #
22
+ # class_name::
23
+ # The class for the related model. This defaults to the
24
+ # model name prepended to "Attribute". So for a "User" model the class
25
+ # name would be "UserAttribute". The class can actually exist (in that
26
+ # case the model file will be loaded through Rails dependency system) or
27
+ # if it does not exist a basic model will be dynamically defined for you.
28
+ # This allows you to implement custom methods on the related class by
29
+ # simply defining the class manually.
30
+ # table_name::
31
+ # The table for the related model. This defaults to the
32
+ # attribute model's table name.
33
+ # relationship_name::
34
+ # This is the name of the actual has_many
35
+ # relationship. Most of the type this relationship will only be used
36
+ # indirectly but it is there if the user wants more raw access. This
37
+ # defaults to the class name underscored then pluralized finally turned
38
+ # into a symbol.
39
+ # foreign_key::
40
+ # The key in the attribute table to relate back to the
41
+ # model. This defaults to the model name underscored prepended to "_id"
42
+ # name_field::
43
+ # The field which stores the name of the attribute in the related object
44
+ # value_field::
45
+ # The field that stores the value in the related object
46
+ # fields::
47
+ # A list of fields that are valid dynamic attributes. By default
48
+ # this is "nil" which means that all field are valid. Use this option if
49
+ # you want some fields to go to one dynamic attribute model while other
50
+ # fields will go to another. As an alternative you can override the
51
+ # #dynamic_attributes method which will return a list of all valid dynamic
52
+ # attributes. This is useful if you want to read the list of attributes
53
+ # from another source to keep your code DRY. This method is given a
54
+ # single argument which is the class for the related model. The following
55
+ # provide an example:
56
+ #
57
+ # class User < ActiveRecord::Base
58
+ # has_dynamic_attributes :class_name => 'UserContactInfo'
59
+ # has_dynamic_attributes :class_name => 'Preferences'
60
+ #
61
+ # def dynamic_attributes(model)
62
+ # case model
63
+ # when UserContactInfo
64
+ # %w(email phone aim yahoo msn)
65
+ # when Preference
66
+ # %w(project_search project_order user_search user_order)
67
+ # else Array.new
68
+ # end
69
+ # end
70
+ # end
71
+ #
72
+ # eric = User.find_by_login 'eric'
73
+ # eric.email = 'eric@example.com' # Will save to UserContactInfo model
74
+ # eric.project_order = 'name' # Will save to Preference
75
+ # eric.save # Carries out save so now values are in database
76
+ #
77
+ # Note the else clause in our case statement. Since an empty array is
78
+ # returned for all other models (perhaps added later) then we can be
79
+ # certain that only the above dynamic attributes are allowed.
80
+ #
81
+ # If both a :fields option and #dynamic_attributes method is defined the
82
+ # :fields option take precidence. This allows you to easily define the
83
+ # field list inline for one model while implementing #dynamic_attributes
84
+ # for another model and not having #dynamic_attributes need to determine
85
+ # what model it is answering for. In both cases the list of dynamic
86
+ # attributes can be a list of string or symbols
87
+ #
88
+ # A final alternative to :fields and #dynamic_attributes is the
89
+ # #is_dynamic_attribute? method. This method is given two arguments. The
90
+ # first is the attribute being retrieved/saved the second is the Model we
91
+ # are testing for. If you override this method then the #dynamic_attributes
92
+ # method or the :fields option will have no affect. Use of this method
93
+ # is ideal when you want to retrict the attributes but do so in a
94
+ # algorithmic way. The following is an example:
95
+ # class User < ActiveRecord::Base
96
+ # has_dynamic_attributes :class_name => 'UserContactInfo'
97
+ # has_dynamic_attributes :class_name => 'Preferences'
98
+ #
99
+ # def is_dynamic_attribute?(attr, model)
100
+ # case attr.to_s
101
+ # when /^contact_/ then true
102
+ # when /^preference_/ then true
103
+ # else
104
+ # false
105
+ # end
106
+ # end
107
+ # end
108
+ #
109
+ # eric = User.find_by_login 'eric'
110
+ # eric.contact_phone = '555-123-4567'
111
+ # eric.contact_email = 'eric@example.com'
112
+ # eric.preference_project_order = 'name'
113
+ # eric.some_attribute = 'blah' # If some_attribute is not defined on
114
+ # # the model then method not found is thrown
115
+ module DynamicAttributes
116
+ def self.included(model_class)
117
+ model_class.extend(MacroMethods)
118
+ end
119
+ module MacroMethods
120
+ def has_dynamic_attributes?
121
+ !!@has_dynamic_attributes
122
+ end
123
+
124
+ # Will make the current class have dynamic attributes.
125
+ def has_dynamic_attributes(options={})
126
+ @has_dynamic_attributes = true
127
+ include InstanceMethods
128
+
129
+ # Provide default options
130
+ options[:class_name] ||= self.class_name + 'Attribute'
131
+ options[:table_name] ||= options[:class_name].tableize
132
+ options[:relationship_name] ||= options[:class_name].tableize.to_sym
133
+ options[:foreign_key] ||= self.class_name.foreign_key
134
+ options[:base_foreign_key] ||= self.name.underscore.foreign_key
135
+ options[:name_field] ||= 'name'
136
+ options[:value_field] ||= 'value'
137
+ options[:fields].collect! {|f| f.to_s} unless options[:fields].nil?
138
+
139
+ # Init option storage if necessary
140
+ cattr_accessor :dynamic_options
141
+ self.dynamic_options ||= Hash.new
142
+
143
+ # Return if already processed.
144
+ return if self.dynamic_options.keys.include? options[:class_name]
145
+
146
+ # Attempt to load related class. If not create it
147
+ begin
148
+ options[:class_name].constantize
149
+ rescue
150
+ Object.const_set(options[:class_name],
151
+ Class.new(ActiveRecord::Base)).class_eval do
152
+ def self.reloadable? #:nodoc:
153
+ false
154
+ end
155
+ end
156
+ end
157
+
158
+ # Store options
159
+ self.dynamic_options[options[:class_name]] = options
160
+
161
+ # Modify attribute class
162
+ attribute_class = options[:class_name].constantize
163
+ base_class = self.name.underscore.to_sym
164
+ attribute_class.class_eval do
165
+ belongs_to base_class, :foreign_key => options[:base_foreign_key]
166
+ alias_method :base, base_class # For generic access
167
+ end
168
+
169
+ # Modify main class
170
+ class_eval do
171
+ has_many options[:relationship_name],
172
+ :class_name => options[:class_name],
173
+ :table_name => options[:table_name],
174
+ :foreign_key => options[:foreign_key],
175
+ :dependent => :destroy
176
+
177
+ # The following is only setup once
178
+ unless private_method_defined? :method_missing_without_dynamic_attributes
179
+
180
+ # Carry out delayed actions before save
181
+ after_validation_on_update :save_modified_dynamic_attributes
182
+
183
+ # Make attributes seem real
184
+ alias_method :method_missing_without_dynamic_attributes, :method_missing
185
+ alias_method :method_missing, :method_missing_with_dynamic_attributes
186
+
187
+ private
188
+
189
+ alias_method :read_attribute_without_dynamic_attributes, :read_attribute
190
+ alias_method :read_attribute, :read_attribute_with_dynamic_attributes
191
+ alias_method :write_attribute_without_dynamic_attributes, :write_attribute
192
+ alias_method :write_attribute, :write_attribute_with_dynamic_attributes
193
+
194
+ end
195
+ end
196
+ end
197
+ end
198
+ module InstanceMethods
199
+ # Will determine if the given attribute is a dynamic attribute on the
200
+ # given model. Override this in your class to provide custom logic if
201
+ # the #dynamic_attributes method or the :fields option are not flexible
202
+ # enough. If you override this method :fields and #dynamic_attributes will
203
+ # not apply at all unless you implement them yourself.
204
+ def is_dynamic_attribute?(attr, model)
205
+ attr = attr.to_s
206
+ return dynamic_options[model.name][:fields].include?(attr) unless
207
+ dynamic_options[model.name][:fields].nil?
208
+ return dynamic_attributes(model).collect {|f| f.to_s}.include?(attr) unless
209
+ dynamic_attributes(model).nil?
210
+ true
211
+ end
212
+
213
+ # Return a list of valid dynamic attributes for the given model. Return
214
+ # nil if any field is allowed. If you want to say no field is allowed
215
+ # then return an empty array. If you just have a static list the :fields
216
+ # option is most likely easier.
217
+ def dynamic_attributes(model); nil end
218
+
219
+ private
220
+
221
+ # Called after validation on update so that dynamic attributes behave
222
+ # like normal attributes in the fact that the database is not touched
223
+ # until save is called.
224
+ def save_modified_dynamic_attributes
225
+ return if @save_dynamic_attr.nil?
226
+ @save_dynamic_attr.each do |s|
227
+ model, attr_name = s
228
+ related_attr = dynamic_related_attr model, attr_name
229
+ unless related_attr.nil?
230
+ if related_attr.value.nil?
231
+ dynamic_related(model).delete related_attr
232
+ else
233
+ related_attr.save
234
+ end
235
+ end
236
+ end
237
+ @save_dynamic_attr = []
238
+ end
239
+
240
+ # Overrides ActiveRecord::Base#read_attribute
241
+ def read_attribute_with_dynamic_attributes(attr_name)
242
+ attr_name = attr_name.to_s
243
+ exec_if_related attr_name do |model|
244
+ return nil if !@remove_dynamic_attr.nil? && @remove_dynamic_attr.any? do |r|
245
+ r[0] == model && r[1] == attr_name
246
+ end
247
+ value_field = dynamic_options[model.name][:value_field]
248
+ related_attr = dynamic_related_attr model, attr_name
249
+ return nil if related_attr.nil?
250
+ return related_attr.send(value_field)
251
+ end
252
+ read_attribute_without_dynamic_attributes(attr_name)
253
+ end
254
+
255
+ # Overrides ActiveRecord::Base#write_attribute
256
+ def write_attribute_with_dynamic_attributes(attr_name, value)
257
+ attr_name = attr_name.to_s
258
+ exec_if_related attr_name do |model|
259
+ value_field = dynamic_options[model.name][:value_field]
260
+ @save_dynamic_attr ||= []
261
+ @save_dynamic_attr << [model, attr_name]
262
+ related_attr = dynamic_related_attr(model, attr_name)
263
+ if related_attr.nil?
264
+ # Used to check for nil? but this caused validation
265
+ # problems that are harder to solve. blank? is probably
266
+ # not correct but it works well for now.
267
+ unless value.blank?
268
+ name_field = dynamic_options[model.name][:name_field]
269
+ foreign_key = dynamic_options[model.name][:foreign_key]
270
+ dynamic_related(model).build name_field => attr_name,
271
+ value_field => value, foreign_key => self.id
272
+ end
273
+ return value
274
+ else
275
+ value_field = (value_field.to_s + '=').to_sym
276
+ return related_attr.send(value_field, value)
277
+ end
278
+ end
279
+ write_attribute_without_dynamic_attributes(attr_name, value)
280
+ end
281
+
282
+ # Implements dynamic-attributes as if real getter/setter methods
283
+ # were defined.
284
+ def method_missing_with_dynamic_attributes(method_id, *args, &block)
285
+ begin
286
+ method_missing_without_dynamic_attributes method_id, *args, &block
287
+ rescue NoMethodError => e
288
+ attr_name = method_id.to_s.sub(/\=$/, '')
289
+ exec_if_related attr_name do |model|
290
+ if method_id.to_s =~ /\=$/
291
+ return write_attribute_with_dynamic_attributes(attr_name, args[0])
292
+ else
293
+ return read_attribute_with_dynamic_attributes(attr_name)
294
+ end
295
+ end
296
+ raise e
297
+ end
298
+ end
299
+
300
+ # Retrieve the related dynamic attribute object
301
+ def dynamic_related_attr(model, attr)
302
+ name_field = dynamic_options[model.name][:name_field]
303
+ dynamic_related(model).to_a.find {|r| r.send(name_field) == attr}
304
+ end
305
+
306
+ # Retrieve the collection of related dynamic attributes
307
+ def dynamic_related(model)
308
+ relationship = dynamic_options[model.name][:relationship_name]
309
+ send relationship
310
+ end
311
+
312
+ # Yield only if attr_name is a dynamic_attribute
313
+ def exec_if_related(attr_name)
314
+ return false if self.class.column_names.include? attr_name
315
+ each_dynamic_relation do |model|
316
+ if is_dynamic_attribute?(attr_name, model)
317
+ yield model
318
+ end
319
+ end
320
+ end
321
+
322
+ # Yields for each dynamic relation.
323
+ def each_dynamic_relation
324
+ dynamic_options.keys.each {|kls| yield kls.constantize}
325
+ end
326
+
327
+ # Returns the options for the dynamic attributes
328
+ def dynamic_options
329
+ nonversioned_class(self.class).dynamic_options
330
+ end
331
+
332
+ # Will return the parent model if kls is a versioned class
333
+ def nonversioned_class(kls)
334
+ if kls.name =~ /\:\:Version$/
335
+ base_class = kls.name
336
+ base_class.sub!(/\:\:Version$/, '')
337
+ return base_class.constantize
338
+ end
339
+ kls
340
+ end
341
+
342
+ # This overrides the attributes= defined in ActiveRecord::Base
343
+ # The only difference is that this doesn't check to see if the
344
+ # model responds_to the method before sending it
345
+ # This is needed for Rails 2.2
346
+ def attributes=(new_attributes, guard_protected_attributes = true)
347
+ return if new_attributes.nil?
348
+ attributes = new_attributes.dup
349
+ attributes.stringify_keys!
350
+
351
+ multi_parameter_attributes = []
352
+ attributes = remove_attributes_protected_from_mass_assignment(attributes) if guard_protected_attributes
353
+
354
+ attributes.each do |k, v|
355
+ if k.include?("(")
356
+ multi_parameter_attributes << [ k, v ]
357
+ else
358
+ send(:"#{k}=", v)
359
+ end
360
+ end
361
+
362
+ assign_multiparameter_attributes(multi_parameter_attributes)
363
+ end
364
+ end
365
+ end
366
+ end
367
+ end