we5-browsercms 3.0.5.1 → 3.1.0

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 (1025) hide show
  1. data/app/controllers/cms/application_controller.rb +2 -12
  2. data/app/controllers/cms/categories_controller.rb +4 -1
  3. data/app/controllers/cms/content_block_controller.rb +1 -1
  4. data/app/controllers/cms/content_controller.rb +3 -83
  5. data/app/controllers/cms/dashboard_controller.rb +1 -1
  6. data/app/controllers/cms/links_controller.rb +2 -2
  7. data/app/controllers/cms/pages_controller.rb +2 -0
  8. data/app/controllers/cms/portlets_controller.rb +2 -2
  9. data/app/controllers/cms/tags_controller.rb +4 -1
  10. data/app/controllers/tests/pretend_controller.rb +32 -0
  11. data/app/helpers/application_helper.rb +3 -1
  12. data/app/helpers/cms/application_helper.rb +18 -32
  13. data/app/helpers/cms/form_builder.rb +129 -54
  14. data/app/helpers/cms/menu_helper.rb +13 -2
  15. data/app/helpers/cms/page_helper.rb +26 -2
  16. data/app/helpers/cms/rendering_helper.rb +42 -0
  17. data/app/models/guest_user.rb +11 -3
  18. data/app/models/page.rb +1 -1
  19. data/app/models/page_template.rb +1 -18
  20. data/app/models/portlet.rb +12 -2
  21. data/app/models/section.rb +41 -33
  22. data/app/models/tag.rb +1 -1
  23. data/app/models/task.rb +32 -26
  24. data/app/models/templates.rb +31 -0
  25. data/app/models/user.rb +35 -9
  26. data/app/portlets/forgot_password_portlet.rb +1 -0
  27. data/app/views/cms/blocks/_toolbar_for_member.html.erb +1 -1
  28. data/app/views/cms/blocks/edit.html.erb +5 -0
  29. data/app/views/cms/blocks/index.html.erb +26 -39
  30. data/app/views/cms/blocks/show.html.erb +3 -0
  31. data/app/views/cms/blocks/usages.html.erb +17 -22
  32. data/app/views/cms/blocks/versions.html.erb +25 -53
  33. data/app/views/cms/connectors/new.html.erb +6 -6
  34. data/app/views/cms/dashboard/_page_drafts.html.erb +27 -38
  35. data/app/views/cms/dashboard/_tasks.html.erb +31 -43
  36. data/app/views/cms/dynamic_views/index.html.erb +17 -26
  37. data/app/views/cms/email_messages/index.html.erb +10 -19
  38. data/app/views/cms/form_builder/_cms_check_box.html.erb +7 -0
  39. data/app/views/cms/form_builder/_cms_drop_down.html.erb +0 -7
  40. data/app/views/cms/form_builder/_cms_fancy_drop_down.html.erb +9 -0
  41. data/app/views/cms/form_builder/_cms_file_field.html.erb +11 -7
  42. data/app/views/cms/form_builder/_cms_instructions.html.erb +4 -0
  43. data/app/views/cms/form_builder/_cms_template_editor.html.erb +8 -0
  44. data/app/views/cms/groups/_permissions.html.erb +1 -1
  45. data/app/views/cms/groups/index.html.erb +34 -49
  46. data/app/views/cms/page_routes/index.html.erb +19 -28
  47. data/app/views/cms/page_routes/show.html.erb +2 -2
  48. data/app/views/cms/pages/_edit_connector.html.erb +9 -1
  49. data/app/views/cms/pages/versions.html.erb +31 -44
  50. data/app/views/cms/redirects/index.html.erb +14 -22
  51. data/app/views/cms/routes/index.html.erb +19 -21
  52. data/app/views/cms/tags/render.html.erb +19 -38
  53. data/app/views/cms/toolbar/index.html.erb +0 -11
  54. data/app/views/cms/users/index.html.erb +25 -33
  55. data/app/views/layouts/cms/_head.html.erb +1 -1
  56. data/app/views/layouts/cms/content_library.html.erb +7 -7
  57. data/app/views/layouts/cms/thickbox.html.erb +2 -2
  58. data/app/views/portlets/forgot_password/_form.html.erb +4 -3
  59. data/app/views/tests/pretend/open_with_layout.html.erb +2 -0
  60. data/bin/bcms +6 -0
  61. data/bin/browsercms +73 -0
  62. data/browsercms.gemspec +444 -369
  63. data/db/demo/page_templates/sub_page.html.erb +1 -1
  64. data/db/migrate/20081114172307_load_seed_data.rb +0 -29
  65. data/doc/app/classes/AbstractFileBlock.html +32 -6
  66. data/doc/app/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html +136 -85
  67. data/doc/app/classes/ActiveSupport/Cache/FileStore.html +6 -6
  68. data/doc/app/classes/ActsAsList.html +6 -6
  69. data/doc/app/classes/ActsAsList/ClassMethods.html +8 -8
  70. data/doc/app/classes/ActsAsList/InstanceMethods.html +143 -119
  71. data/doc/app/classes/ApplicationHelper.html +4 -0
  72. data/doc/app/classes/Attachment.html +134 -134
  73. data/doc/app/classes/Category.html +24 -24
  74. data/doc/app/classes/CategoryType.html +18 -18
  75. data/doc/app/classes/Cms.html +227 -94
  76. data/doc/app/classes/Cms/Acts.html +5 -0
  77. data/doc/app/classes/Cms/Acts/ContentBlock.html +6 -6
  78. data/doc/app/classes/Cms/Acts/ContentBlock/MacroMethods.html +6 -6
  79. data/doc/app/classes/Cms/Acts/ContentBlock/MacroMethods/InstanceMethods.html +6 -6
  80. data/doc/app/classes/Cms/Acts/ContentPage.html +187 -0
  81. data/doc/app/classes/Cms/Acts/ContentPage/ClassMethods.html +188 -0
  82. data/doc/app/classes/Cms/ApplicationController.html +69 -118
  83. data/doc/app/classes/Cms/ApplicationHelper.html +277 -393
  84. data/doc/app/classes/Cms/AttachmentsController.html +6 -6
  85. data/doc/app/classes/Cms/Authentication/Controller.html +226 -228
  86. data/doc/app/classes/Cms/Authentication/Model.html +6 -6
  87. data/doc/app/classes/Cms/Authentication/Model/ClassMethods.html +30 -30
  88. data/doc/app/classes/Cms/Authentication/Model/InstanceMethods.html +66 -66
  89. data/doc/app/classes/Cms/Behaviors/Archiving.html +6 -6
  90. data/doc/app/classes/Cms/Behaviors/Archiving/InstanceMethods.html +24 -24
  91. data/doc/app/classes/Cms/Behaviors/Archiving/MacroMethods.html +12 -12
  92. data/doc/app/classes/Cms/Behaviors/Attaching.html +6 -6
  93. data/doc/app/classes/Cms/Behaviors/Attaching/InstanceMethods.html +123 -123
  94. data/doc/app/classes/Cms/Behaviors/Attaching/MacroMethods.html +12 -12
  95. data/doc/app/classes/Cms/Behaviors/Categorizing.html +6 -6
  96. data/doc/app/classes/Cms/Behaviors/Categorizing/InstanceMethods.html +6 -6
  97. data/doc/app/classes/Cms/Behaviors/Categorizing/MacroMethods.html +12 -12
  98. data/doc/app/classes/Cms/Behaviors/ClassMethods.html +60 -60
  99. data/doc/app/classes/Cms/Behaviors/Connecting.html +6 -6
  100. data/doc/app/classes/Cms/Behaviors/Connecting/ClassMethods.html +18 -18
  101. data/doc/app/classes/Cms/Behaviors/Connecting/InstanceMethods.html +42 -42
  102. data/doc/app/classes/Cms/Behaviors/Connecting/MacroMethods.html +12 -12
  103. data/doc/app/classes/Cms/Behaviors/DynamicAttributes.html +6 -6
  104. data/doc/app/classes/Cms/Behaviors/DynamicAttributes/InstanceMethods.html +14 -14
  105. data/doc/app/classes/Cms/Behaviors/DynamicAttributes/MacroMethods.html +12 -12
  106. data/doc/app/classes/Cms/Behaviors/FlushCacheOnChange.html +12 -12
  107. data/doc/app/classes/Cms/Behaviors/FlushCacheOnChange/InstanceMethods.html +6 -6
  108. data/doc/app/classes/Cms/Behaviors/FlushCacheOnChange/MacroMethods.html +12 -12
  109. data/doc/app/classes/Cms/Behaviors/Hiding.html +6 -6
  110. data/doc/app/classes/Cms/Behaviors/Hiding/InstanceMethods.html +24 -24
  111. data/doc/app/classes/Cms/Behaviors/Hiding/MacroMethods.html +12 -12
  112. data/doc/app/classes/Cms/Behaviors/InstanceMethods.html +127 -74
  113. data/doc/app/classes/Cms/Behaviors/Pagination.html +6 -6
  114. data/doc/app/classes/Cms/Behaviors/Pagination/ClassMethods.html +12 -12
  115. data/doc/app/classes/Cms/Behaviors/Pagination/Collection.html +55 -55
  116. data/doc/app/classes/Cms/Behaviors/Pagination/InvalidPage.html +6 -6
  117. data/doc/app/classes/Cms/Behaviors/Publishing.html +12 -12
  118. data/doc/app/classes/Cms/Behaviors/Publishing/InstanceMethods.html +119 -119
  119. data/doc/app/classes/Cms/Behaviors/Publishing/MacroMethods.html +25 -14
  120. data/doc/app/classes/Cms/Behaviors/Rendering.html +10 -13
  121. data/doc/app/classes/Cms/Behaviors/Rendering/MacroMethods.html +33 -33
  122. data/doc/app/classes/Cms/Behaviors/Searching.html +6 -6
  123. data/doc/app/classes/Cms/Behaviors/Searching/ClassMethods.html +12 -12
  124. data/doc/app/classes/Cms/Behaviors/Searching/MacroMethods.html +12 -12
  125. data/doc/app/classes/Cms/Behaviors/SoftDeleting.html +6 -6
  126. data/doc/app/classes/Cms/Behaviors/SoftDeleting/ClassMethods.html +24 -24
  127. data/doc/app/classes/Cms/Behaviors/SoftDeleting/InstanceMethods.html +30 -30
  128. data/doc/app/classes/Cms/Behaviors/SoftDeleting/MacroMethods.html +12 -12
  129. data/doc/app/classes/Cms/Behaviors/Taggable.html +6 -6
  130. data/doc/app/classes/Cms/Behaviors/Taggable/ClassMethods.html +12 -12
  131. data/doc/app/classes/Cms/Behaviors/Taggable/InstanceMethods.html +34 -33
  132. data/doc/app/classes/Cms/Behaviors/Taggable/MacroMethods.html +12 -12
  133. data/doc/app/classes/Cms/Behaviors/Userstamping.html +6 -6
  134. data/doc/app/classes/Cms/Behaviors/Userstamping/InstanceMethods.html +6 -6
  135. data/doc/app/classes/Cms/Behaviors/Userstamping/MacroMethods.html +12 -12
  136. data/doc/app/classes/Cms/Behaviors/Versioning.html +6 -6
  137. data/doc/app/classes/Cms/Behaviors/Versioning/ClassMethods.html +30 -30
  138. data/doc/app/classes/Cms/Behaviors/Versioning/InstanceMethods.html +322 -294
  139. data/doc/app/classes/Cms/Behaviors/Versioning/MacroMethods.html +31 -31
  140. data/doc/app/classes/Cms/CacheController.html +12 -12
  141. data/doc/app/classes/Cms/Caching.html +12 -12
  142. data/doc/app/classes/Cms/CategoriesController.html +35 -0
  143. data/doc/app/classes/Cms/CategoryTypesController.html +6 -6
  144. data/doc/app/classes/Cms/ConnectorsController.html +19 -19
  145. data/doc/app/classes/Cms/ContentBlockController.html +486 -440
  146. data/doc/app/classes/Cms/ContentController.html +48 -121
  147. data/doc/app/classes/Cms/ContentRenderingSupport.html +222 -0
  148. data/doc/app/classes/Cms/ContentTypesController.html +6 -6
  149. data/doc/app/classes/Cms/DashboardController.html +12 -11
  150. data/doc/app/classes/Cms/DataLoader.html +12 -12
  151. data/doc/app/classes/Cms/DomainSupport.html +166 -0
  152. data/doc/app/classes/Cms/DynamicViewsController.html +54 -54
  153. data/doc/app/classes/Cms/EmailMessagesController.html +12 -12
  154. data/doc/app/classes/Cms/ErrorHandling.html +50 -23
  155. data/doc/app/classes/Cms/Errors/AccessDenied.html +10 -10
  156. data/doc/app/classes/Cms/Extensions/ActionView/Base.html +6 -6
  157. data/doc/app/classes/Cms/Extensions/ActiveRecord/Base.html +6 -6
  158. data/doc/app/classes/Cms/Extensions/ActiveRecord/Errors.html +6 -6
  159. data/doc/app/classes/Cms/Extensions/Hash.html +12 -12
  160. data/doc/app/classes/Cms/Extensions/Integer.html +6 -6
  161. data/doc/app/classes/Cms/Extensions/NilClass.html +24 -24
  162. data/doc/app/classes/Cms/Extensions/String.html +24 -24
  163. data/doc/app/classes/Cms/FormBuilder.html +258 -90
  164. data/doc/app/classes/Cms/FormTagHelper.html +30 -30
  165. data/doc/app/classes/Cms/GroupsController.html +24 -24
  166. data/doc/app/classes/Cms/HomeController.html +6 -6
  167. data/doc/app/classes/Cms/LinksController.html +64 -62
  168. data/doc/app/classes/Cms/MenuHelper.html +210 -165
  169. data/doc/app/classes/Cms/PageHelper.html +178 -91
  170. data/doc/app/classes/Cms/PageRouteOptionsController.html +54 -54
  171. data/doc/app/classes/Cms/PageRoutesController.html +36 -36
  172. data/doc/app/classes/Cms/PagesController.html +111 -109
  173. data/doc/app/classes/Cms/PathHelper.html +36 -36
  174. data/doc/app/classes/Cms/PortletController.html +6 -6
  175. data/doc/app/classes/Cms/PortletsController.html +43 -43
  176. data/doc/app/classes/Cms/RedirectsController.html +12 -12
  177. data/doc/app/classes/Cms/RenderingHelper.html +214 -0
  178. data/doc/app/classes/Cms/ResourceController.html +114 -114
  179. data/doc/app/classes/Cms/Routes.html +151 -143
  180. data/doc/app/classes/Cms/RoutesController.html +6 -6
  181. data/doc/app/classes/Cms/SectionNodesController.html +36 -36
  182. data/doc/app/classes/Cms/SectionNodesHelper.html +6 -6
  183. data/doc/app/classes/Cms/SectionsController.html +212 -188
  184. data/doc/app/classes/Cms/SessionsController.html +68 -39
  185. data/doc/app/classes/Cms/TagsController.html +30 -6
  186. data/doc/app/classes/Cms/TasksController.html +18 -18
  187. data/doc/app/classes/Cms/TemplateSupport.html +185 -0
  188. data/doc/app/classes/Cms/ToolbarController.html +6 -6
  189. data/doc/app/classes/Cms/UsersController.html +129 -153
  190. data/doc/app/classes/CommandLine.html +226 -0
  191. data/doc/app/classes/Connector.html +75 -71
  192. data/doc/app/classes/ContentType.html +72 -72
  193. data/doc/app/classes/DynamicPortlet.html +6 -6
  194. data/doc/app/classes/DynamicView.html +130 -133
  195. data/doc/app/classes/EmailMessage.html +24 -24
  196. data/doc/app/classes/EmailMessageMailer.html +6 -6
  197. data/doc/app/classes/EmailPagePortlet.html +12 -12
  198. data/doc/app/classes/FileBlock.html +18 -18
  199. data/doc/app/classes/ForgotPasswordMailer.html +151 -0
  200. data/doc/app/classes/ForgotPasswordPortlet.html +162 -0
  201. data/doc/app/classes/Group.html +72 -20
  202. data/doc/app/classes/GuestUser.html +138 -93
  203. data/doc/app/classes/HtmlBlock.html +12 -12
  204. data/doc/app/classes/ImageBlock.html +18 -18
  205. data/doc/app/classes/InitialData.html +6 -6
  206. data/doc/app/classes/Link.html +30 -30
  207. data/doc/app/classes/LoginPortlet.html +6 -6
  208. data/doc/app/classes/Page.html +185 -185
  209. data/doc/app/classes/PagePartial.html +18 -18
  210. data/doc/app/classes/PageRoute.html +48 -48
  211. data/doc/app/classes/PageTemplate.html +60 -78
  212. data/doc/app/classes/Portlet.html +339 -267
  213. data/doc/app/classes/ResetPasswordPortlet.html +169 -0
  214. data/doc/app/classes/Section.html +257 -200
  215. data/doc/app/classes/SectionNode.html +60 -60
  216. data/doc/app/classes/Sequence.html +6 -6
  217. data/doc/app/classes/Site.html +30 -30
  218. data/doc/app/classes/Tag.html +31 -31
  219. data/doc/app/classes/TagCloudPortlet.html +12 -12
  220. data/doc/app/classes/Tagging.html +6 -6
  221. data/doc/app/classes/Task.html +37 -37
  222. data/doc/app/classes/Templates.html +151 -0
  223. data/doc/app/classes/Tests.html +107 -0
  224. data/doc/app/classes/Tests/PretendController.html +275 -0
  225. data/doc/app/classes/User.html +344 -205
  226. data/doc/app/created.rid +1 -1
  227. data/doc/app/files/app/controllers/cms/application_controller_rb.html +1 -1
  228. data/doc/app/files/app/controllers/cms/categories_controller_rb.html +1 -1
  229. data/doc/app/files/app/controllers/cms/connectors_controller_rb.html +1 -1
  230. data/doc/app/files/app/controllers/cms/content_block_controller_rb.html +1 -1
  231. data/doc/app/files/app/controllers/cms/content_controller_rb.html +1 -1
  232. data/doc/app/files/app/controllers/cms/dashboard_controller_rb.html +1 -1
  233. data/doc/app/files/app/controllers/cms/error_handling_rb.html +1 -1
  234. data/doc/app/files/app/controllers/cms/links_controller_rb.html +1 -1
  235. data/doc/app/files/app/controllers/cms/pages_controller_rb.html +1 -1
  236. data/doc/app/files/app/controllers/cms/portlets_controller_rb.html +1 -1
  237. data/doc/app/files/app/controllers/cms/section_nodes_controller_rb.html +1 -1
  238. data/doc/app/files/app/controllers/cms/sections_controller_rb.html +1 -1
  239. data/doc/app/files/app/controllers/cms/sessions_controller_rb.html +1 -1
  240. data/doc/app/files/app/controllers/cms/tags_controller_rb.html +1 -1
  241. data/doc/app/files/app/controllers/cms/users_controller_rb.html +1 -1
  242. data/doc/app/files/app/controllers/tests/pretend_controller_rb.html +112 -0
  243. data/doc/app/files/app/helpers/application_helper_rb.html +5 -1
  244. data/doc/app/files/app/helpers/cms/application_helper_rb.html +1 -1
  245. data/doc/app/files/app/helpers/cms/form_builder_rb.html +8 -1
  246. data/doc/app/files/app/helpers/cms/menu_helper_rb.html +1 -1
  247. data/doc/app/files/app/helpers/cms/page_helper_rb.html +1 -1
  248. data/doc/app/files/app/helpers/cms/rendering_helper_rb.html +111 -0
  249. data/doc/app/files/app/helpers/cms/template_support_rb.html +108 -0
  250. data/doc/app/files/app/models/abstract_file_block_rb.html +1 -1
  251. data/doc/app/files/app/models/attachment_rb.html +2 -2
  252. data/doc/app/files/app/models/connector_rb.html +1 -1
  253. data/doc/app/files/app/models/content_type_rb.html +1 -1
  254. data/doc/app/files/app/models/dynamic_view_rb.html +1 -1
  255. data/doc/app/files/app/models/forgot_password_mailer_rb.html +101 -0
  256. data/doc/app/files/app/models/group_rb.html +10 -1
  257. data/doc/app/files/app/models/guest_user_rb.html +14 -1
  258. data/doc/app/files/app/models/link_rb.html +1 -1
  259. data/doc/app/files/app/models/page_rb.html +1 -1
  260. data/doc/app/files/app/models/page_template_rb.html +1 -1
  261. data/doc/app/files/app/models/portlet_rb.html +1 -1
  262. data/doc/app/files/app/models/section_rb.html +1 -1
  263. data/doc/app/files/app/models/tag_rb.html +1 -1
  264. data/doc/app/files/app/models/task_rb.html +1 -1
  265. data/doc/app/files/app/models/templates_rb.html +108 -0
  266. data/doc/app/files/app/models/user_rb.html +1 -1
  267. data/doc/app/files/app/portlets/forgot_password_portlet_rb.html +108 -0
  268. data/doc/app/files/app/portlets/reset_password_portlet_rb.html +101 -0
  269. data/doc/app/files/doc/README_FOR_APP.html +7 -6
  270. data/doc/app/files/lib/acts_as_list_rb.html +1 -1
  271. data/doc/app/files/lib/browsercms_rb.html +1 -1
  272. data/doc/app/files/lib/cms/acts/content_block_rb.html +1 -1
  273. data/doc/app/files/lib/cms/acts/content_page_rb.html +125 -0
  274. data/doc/app/files/lib/cms/authentication/controller_rb.html +61 -1
  275. data/doc/app/files/lib/cms/behaviors/attaching_rb.html +1 -1
  276. data/doc/app/files/lib/cms/behaviors/publishing_rb.html +1 -1
  277. data/doc/app/files/lib/cms/behaviors/rendering_rb.html +1 -1
  278. data/doc/app/files/lib/cms/behaviors/taggable_rb.html +1 -1
  279. data/doc/app/files/lib/cms/behaviors/versioning_rb.html +1 -1
  280. data/doc/app/files/lib/cms/content_rendering_support_rb.html +108 -0
  281. data/doc/app/files/lib/cms/domain_support_rb.html +108 -0
  282. data/doc/app/files/lib/cms/extensions/active_record/connection_adapters/abstract/schema_statements_rb.html +1 -1
  283. data/doc/app/files/lib/cms/init_rb.html +8 -1
  284. data/doc/app/files/lib/cms/routes_rb.html +1 -1
  285. data/doc/app/files/lib/cms/version_rb.html +107 -0
  286. data/doc/app/files/lib/command_line_rb.html +101 -0
  287. data/doc/app/fr_class_index.html +13 -0
  288. data/doc/app/fr_file_index.html +12 -0
  289. data/doc/app/fr_method_index.html +761 -712
  290. data/doc/guides/html/authentication.html +201 -0
  291. data/doc/guides/html/build_it_yourself.html +9 -1
  292. data/doc/guides/html/building_modules.html +90 -48
  293. data/doc/guides/html/building_templates.html +506 -0
  294. data/doc/guides/html/content_blocks.html +476 -0
  295. data/doc/guides/html/customizing_browsercms.html +173 -0
  296. data/doc/guides/html/deployment_guide.html +30 -5
  297. data/doc/guides/html/getting_started.html +61 -27
  298. data/doc/guides/html/images/content_blocks/add_field_to_form.png +0 -0
  299. data/doc/guides/html/images/content_blocks/add_second_block.png +0 -0
  300. data/doc/guides/html/images/nfl_sitemap.png +0 -0
  301. data/doc/guides/html/index.html +33 -22
  302. data/doc/guides/html/installing_modules.html +9 -1
  303. data/doc/guides/html/portlets.html +237 -0
  304. data/doc/guides/html/user_guide.html +9 -1
  305. data/doc/guides/html/{designer_guide.html → writing_guides.html} +21 -20
  306. data/lib/cms/acts/content_page.rb +69 -0
  307. data/lib/cms/authentication/controller.rb +1 -1
  308. data/lib/cms/behaviors/rendering.rb +9 -2
  309. data/lib/cms/behaviors/versioning.rb +43 -35
  310. data/lib/cms/content_rendering_support.rb +96 -0
  311. data/lib/cms/domain_support.rb +20 -0
  312. data/lib/cms/init.rb +21 -2
  313. data/lib/cms/version.rb +5 -0
  314. data/lib/command_line.rb +39 -0
  315. data/lib/tasks/cms.rake +12 -1
  316. data/public/bcms/ckeditor/ckeditor.js +108 -0
  317. data/public/bcms/ckeditor/config.js +18 -0
  318. data/public/bcms/ckeditor/core/_bootstrap.js +64 -0
  319. data/public/bcms/ckeditor/core/ajax.js +143 -0
  320. data/public/bcms/ckeditor/core/ckeditor.js +96 -0
  321. data/public/bcms/ckeditor/core/ckeditor_base.js +190 -0
  322. data/public/bcms/ckeditor/core/ckeditor_basic.js +241 -0
  323. data/public/bcms/ckeditor/core/command.js +70 -0
  324. data/public/bcms/ckeditor/core/commanddefinition.js +72 -0
  325. data/public/bcms/ckeditor/core/config.js +287 -0
  326. data/public/bcms/ckeditor/core/dom.js +21 -0
  327. data/public/bcms/ckeditor/core/dom/document.js +210 -0
  328. data/public/bcms/ckeditor/core/dom/documentfragment.js +49 -0
  329. data/public/bcms/ckeditor/core/dom/domobject.js +204 -0
  330. data/public/bcms/ckeditor/core/dom/element.js +1384 -0
  331. data/public/bcms/ckeditor/core/dom/elementpath.js +104 -0
  332. data/public/bcms/ckeditor/core/dom/event.js +137 -0
  333. data/public/bcms/ckeditor/core/dom/node.js +649 -0
  334. data/public/bcms/ckeditor/core/dom/nodelist.js +23 -0
  335. data/public/bcms/ckeditor/core/dom/range.js +1668 -0
  336. data/public/bcms/ckeditor/core/dom/text.js +123 -0
  337. data/public/bcms/ckeditor/core/dom/walker.js +411 -0
  338. data/public/bcms/ckeditor/core/dom/window.js +96 -0
  339. data/public/bcms/ckeditor/core/dtd.js +200 -0
  340. data/public/bcms/ckeditor/core/editor.js +650 -0
  341. data/public/bcms/ckeditor/core/editor_basic.js +178 -0
  342. data/public/bcms/ckeditor/core/env.js +219 -0
  343. data/public/bcms/ckeditor/core/event.js +335 -0
  344. data/public/bcms/ckeditor/core/eventInfo.js +120 -0
  345. data/public/bcms/ckeditor/core/focusmanager.js +123 -0
  346. data/public/bcms/ckeditor/core/htmlparser.js +212 -0
  347. data/public/bcms/ckeditor/core/htmlparser/basicwriter.js +140 -0
  348. data/public/bcms/ckeditor/core/htmlparser/cdata.js +44 -0
  349. data/public/bcms/ckeditor/core/htmlparser/comment.js +59 -0
  350. data/public/bcms/ckeditor/core/htmlparser/element.js +196 -0
  351. data/public/bcms/ckeditor/core/htmlparser/filter.js +233 -0
  352. data/public/bcms/ckeditor/core/htmlparser/fragment.js +434 -0
  353. data/public/bcms/ckeditor/core/htmlparser/text.js +55 -0
  354. data/public/bcms/ckeditor/core/imagecacher.js +58 -0
  355. data/public/bcms/ckeditor/core/lang.js +147 -0
  356. data/public/bcms/ckeditor/core/loader.js +238 -0
  357. data/public/bcms/ckeditor/core/plugindefinition.js +66 -0
  358. data/public/bcms/ckeditor/core/plugins.js +82 -0
  359. data/public/bcms/ckeditor/core/resourcemanager.js +233 -0
  360. data/public/bcms/ckeditor/core/scriptloader.js +194 -0
  361. data/public/bcms/ckeditor/core/skins.js +185 -0
  362. data/public/bcms/ckeditor/core/test.js +184 -0
  363. data/public/bcms/ckeditor/core/themes.js +18 -0
  364. data/public/bcms/ckeditor/core/tools.js +531 -0
  365. data/public/bcms/ckeditor/core/ui.js +106 -0
  366. data/public/bcms/ckeditor/core/xml.js +165 -0
  367. data/public/bcms/ckeditor/editor.js +51 -0
  368. data/public/bcms/ckeditor/lang/_languages.js +82 -0
  369. data/public/bcms/ckeditor/lang/_translationstatus.txt +59 -0
  370. data/public/bcms/ckeditor/lang/af.js +674 -0
  371. data/public/bcms/ckeditor/lang/ar.js +674 -0
  372. data/public/bcms/ckeditor/lang/bg.js +674 -0
  373. data/public/bcms/ckeditor/lang/bn.js +674 -0
  374. data/public/bcms/ckeditor/lang/bs.js +674 -0
  375. data/public/bcms/ckeditor/lang/ca.js +674 -0
  376. data/public/bcms/ckeditor/lang/cs.js +674 -0
  377. data/public/bcms/ckeditor/lang/da.js +674 -0
  378. data/public/bcms/ckeditor/lang/de.js +674 -0
  379. data/public/bcms/ckeditor/lang/el.js +674 -0
  380. data/public/bcms/ckeditor/lang/en-au.js +674 -0
  381. data/public/bcms/ckeditor/lang/en-ca.js +674 -0
  382. data/public/bcms/ckeditor/lang/en-uk.js +674 -0
  383. data/public/bcms/ckeditor/lang/en.js +674 -0
  384. data/public/bcms/ckeditor/lang/eo.js +674 -0
  385. data/public/bcms/ckeditor/lang/es.js +674 -0
  386. data/public/bcms/ckeditor/lang/et.js +674 -0
  387. data/public/bcms/ckeditor/lang/eu.js +674 -0
  388. data/public/bcms/ckeditor/lang/fa.js +674 -0
  389. data/public/bcms/ckeditor/lang/fi.js +674 -0
  390. data/public/bcms/ckeditor/lang/fo.js +674 -0
  391. data/public/bcms/ckeditor/lang/fr-ca.js +674 -0
  392. data/public/bcms/ckeditor/lang/fr.js +674 -0
  393. data/public/bcms/ckeditor/lang/gl.js +674 -0
  394. data/public/bcms/ckeditor/lang/gu.js +674 -0
  395. data/public/bcms/ckeditor/lang/he.js +674 -0
  396. data/public/bcms/ckeditor/lang/hi.js +674 -0
  397. data/public/bcms/ckeditor/lang/hr.js +674 -0
  398. data/public/bcms/ckeditor/lang/hu.js +674 -0
  399. data/public/bcms/ckeditor/lang/is.js +674 -0
  400. data/public/bcms/ckeditor/lang/it.js +674 -0
  401. data/public/bcms/ckeditor/lang/ja.js +674 -0
  402. data/public/bcms/ckeditor/lang/km.js +674 -0
  403. data/public/bcms/ckeditor/lang/ko.js +674 -0
  404. data/public/bcms/ckeditor/lang/lt.js +674 -0
  405. data/public/bcms/ckeditor/lang/lv.js +674 -0
  406. data/public/bcms/ckeditor/lang/mn.js +674 -0
  407. data/public/bcms/ckeditor/lang/ms.js +674 -0
  408. data/public/bcms/ckeditor/lang/nb.js +674 -0
  409. data/public/bcms/ckeditor/lang/nl.js +674 -0
  410. data/public/bcms/ckeditor/lang/no.js +674 -0
  411. data/public/bcms/ckeditor/lang/pl.js +674 -0
  412. data/public/bcms/ckeditor/lang/pt-br.js +674 -0
  413. data/public/bcms/ckeditor/lang/pt.js +674 -0
  414. data/public/bcms/ckeditor/lang/ro.js +674 -0
  415. data/public/bcms/ckeditor/lang/ru.js +674 -0
  416. data/public/bcms/ckeditor/lang/sk.js +674 -0
  417. data/public/bcms/ckeditor/lang/sl.js +674 -0
  418. data/public/bcms/ckeditor/lang/sr-latn.js +674 -0
  419. data/public/bcms/ckeditor/lang/sr.js +674 -0
  420. data/public/bcms/ckeditor/lang/sv.js +674 -0
  421. data/public/bcms/ckeditor/lang/th.js +674 -0
  422. data/public/bcms/ckeditor/lang/tr.js +674 -0
  423. data/public/bcms/ckeditor/lang/uk.js +674 -0
  424. data/public/bcms/ckeditor/lang/vi.js +674 -0
  425. data/public/bcms/ckeditor/lang/zh-cn.js +674 -0
  426. data/public/bcms/ckeditor/lang/zh.js +674 -0
  427. data/public/bcms/ckeditor/plugins/about/dialogs/about.js +73 -0
  428. data/public/bcms/ckeditor/plugins/about/dialogs/logo_ckeditor.png +0 -0
  429. data/public/bcms/ckeditor/plugins/about/plugin.js +22 -0
  430. data/public/bcms/ckeditor/plugins/basicstyles/plugin.js +50 -0
  431. data/public/bcms/ckeditor/plugins/blockquote/plugin.js +301 -0
  432. data/public/bcms/ckeditor/plugins/button/plugin.js +264 -0
  433. data/public/bcms/ckeditor/plugins/clipboard/dialogs/paste.js +167 -0
  434. data/public/bcms/ckeditor/plugins/clipboard/plugin.js +208 -0
  435. data/public/bcms/ckeditor/plugins/colorbutton/plugin.js +202 -0
  436. data/public/bcms/ckeditor/plugins/contextmenu/plugin.js +178 -0
  437. data/public/bcms/ckeditor/plugins/dialog/dialogDefinition.js +315 -0
  438. data/public/bcms/ckeditor/plugins/dialog/plugin.js +2742 -0
  439. data/public/bcms/ckeditor/plugins/dialogui/plugin.js +1319 -0
  440. data/public/bcms/ckeditor/plugins/domiterator/plugin.js +354 -0
  441. data/public/bcms/ckeditor/plugins/editingblock/plugin.js +236 -0
  442. data/public/bcms/ckeditor/plugins/elementspath/plugin.js +182 -0
  443. data/public/bcms/ckeditor/plugins/enterkey/plugin.js +324 -0
  444. data/public/bcms/ckeditor/plugins/entities/plugin.js +200 -0
  445. data/public/bcms/ckeditor/plugins/fakeobjects/plugin.js +111 -0
  446. data/public/bcms/ckeditor/plugins/filebrowser/plugin.js +383 -0
  447. data/public/bcms/ckeditor/plugins/find/dialogs/find.js +843 -0
  448. data/public/bcms/ckeditor/plugins/find/plugin.js +46 -0
  449. data/public/bcms/ckeditor/plugins/flash/dialogs/flash.js +682 -0
  450. data/public/bcms/ckeditor/plugins/flash/images/placeholder.png +0 -0
  451. data/public/bcms/ckeditor/plugins/flash/plugin.js +165 -0
  452. data/public/bcms/ckeditor/plugins/floatpanel/plugin.js +325 -0
  453. data/public/bcms/ckeditor/plugins/font/plugin.js +227 -0
  454. data/public/bcms/ckeditor/plugins/format/plugin.js +191 -0
  455. data/public/bcms/ckeditor/plugins/forms/dialogs/button.js +135 -0
  456. data/public/bcms/ckeditor/plugins/forms/dialogs/checkbox.js +138 -0
  457. data/public/bcms/ckeditor/plugins/forms/dialogs/form.js +177 -0
  458. data/public/bcms/ckeditor/plugins/forms/dialogs/hiddenfield.js +91 -0
  459. data/public/bcms/ckeditor/plugins/forms/dialogs/radio.js +135 -0
  460. data/public/bcms/ckeditor/plugins/forms/dialogs/select.js +541 -0
  461. data/public/bcms/ckeditor/plugins/forms/dialogs/textarea.js +114 -0
  462. data/public/bcms/ckeditor/plugins/forms/dialogs/textfield.js +193 -0
  463. data/public/bcms/ckeditor/plugins/forms/plugin.js +193 -0
  464. data/public/bcms/ckeditor/plugins/horizontalrule/plugin.js +35 -0
  465. data/public/bcms/ckeditor/plugins/htmldataprocessor/plugin.js +373 -0
  466. data/public/bcms/ckeditor/plugins/htmlwriter/plugin.js +289 -0
  467. data/public/bcms/ckeditor/plugins/iframedialog/plugin.js +136 -0
  468. data/public/bcms/ckeditor/plugins/image/dialogs/image.js +1225 -0
  469. data/public/bcms/ckeditor/plugins/image/plugin.js +64 -0
  470. data/public/bcms/ckeditor/plugins/indent/plugin.js +323 -0
  471. data/public/bcms/ckeditor/plugins/justify/plugin.js +164 -0
  472. data/public/bcms/ckeditor/plugins/keystrokes/plugin.js +217 -0
  473. data/public/bcms/ckeditor/plugins/link/dialogs/anchor.js +98 -0
  474. data/public/bcms/ckeditor/plugins/link/dialogs/link.js +1217 -0
  475. data/public/{fckeditor/editor → bcms/ckeditor/plugins/link}/images/anchor.gif +0 -0
  476. data/public/bcms/ckeditor/plugins/link/plugin.js +188 -0
  477. data/public/bcms/ckeditor/plugins/list/plugin.js +570 -0
  478. data/public/bcms/ckeditor/plugins/listblock/plugin.js +231 -0
  479. data/public/bcms/ckeditor/plugins/maximize/plugin.js +267 -0
  480. data/public/bcms/ckeditor/plugins/menu/plugin.js +377 -0
  481. data/public/bcms/ckeditor/plugins/menubutton/plugin.js +93 -0
  482. data/public/bcms/ckeditor/plugins/newpage/plugin.js +65 -0
  483. data/public/{fckeditor/editor/css/images/fck_pagebreak.gif → bcms/ckeditor/plugins/pagebreak/images/pagebreak.gif} +0 -0
  484. data/public/bcms/ckeditor/plugins/pagebreak/plugin.js +96 -0
  485. data/public/bcms/ckeditor/plugins/panel/plugin.js +330 -0
  486. data/public/bcms/ckeditor/plugins/panelbutton/plugin.js +140 -0
  487. data/public/bcms/ckeditor/plugins/pastefromword/dialogs/pastefromword.js +307 -0
  488. data/public/bcms/ckeditor/plugins/pastefromword/plugin.js +54 -0
  489. data/public/bcms/ckeditor/plugins/pastetext/dialogs/pastetext.js +65 -0
  490. data/public/bcms/ckeditor/plugins/pastetext/plugin.js +142 -0
  491. data/public/bcms/ckeditor/plugins/popup/plugin.js +62 -0
  492. data/public/bcms/ckeditor/plugins/preview/plugin.js +97 -0
  493. data/public/bcms/ckeditor/plugins/print/plugin.js +41 -0
  494. data/public/bcms/ckeditor/plugins/removeformat/plugin.js +132 -0
  495. data/public/bcms/ckeditor/plugins/resize/plugin.js +115 -0
  496. data/public/bcms/ckeditor/plugins/richcombo/plugin.js +357 -0
  497. data/public/bcms/ckeditor/plugins/save/plugin.js +55 -0
  498. data/public/bcms/ckeditor/plugins/scayt/dialogs/options.js +494 -0
  499. data/public/bcms/ckeditor/plugins/scayt/dialogs/toolbar.css +71 -0
  500. data/public/bcms/ckeditor/plugins/scayt/plugin.js +511 -0
  501. data/public/bcms/ckeditor/plugins/selection/plugin.js +1072 -0
  502. data/public/{fckeditor/editor/css → bcms/ckeditor/plugins/showblocks}/images/block_address.png +0 -0
  503. data/public/{fckeditor/editor/css → bcms/ckeditor/plugins/showblocks}/images/block_blockquote.png +0 -0
  504. data/public/{fckeditor/editor/css → bcms/ckeditor/plugins/showblocks}/images/block_div.png +0 -0
  505. data/public/{fckeditor/editor/css → bcms/ckeditor/plugins/showblocks}/images/block_h1.png +0 -0
  506. data/public/{fckeditor/editor/css → bcms/ckeditor/plugins/showblocks}/images/block_h2.png +0 -0
  507. data/public/{fckeditor/editor/css → bcms/ckeditor/plugins/showblocks}/images/block_h3.png +0 -0
  508. data/public/{fckeditor/editor/css → bcms/ckeditor/plugins/showblocks}/images/block_h4.png +0 -0
  509. data/public/{fckeditor/editor/css → bcms/ckeditor/plugins/showblocks}/images/block_h5.png +0 -0
  510. data/public/{fckeditor/editor/css → bcms/ckeditor/plugins/showblocks}/images/block_h6.png +0 -0
  511. data/public/{fckeditor/editor/css → bcms/ckeditor/plugins/showblocks}/images/block_p.png +0 -0
  512. data/public/{fckeditor/editor/css → bcms/ckeditor/plugins/showblocks}/images/block_pre.png +0 -0
  513. data/public/bcms/ckeditor/plugins/showblocks/plugin.js +153 -0
  514. data/public/bcms/ckeditor/plugins/smiley/dialogs/smiley.js +219 -0
  515. data/public/bcms/ckeditor/plugins/smiley/images/angel_smile.gif +0 -0
  516. data/public/bcms/ckeditor/plugins/smiley/images/angry_smile.gif +0 -0
  517. data/public/bcms/ckeditor/plugins/smiley/images/broken_heart.gif +0 -0
  518. data/public/bcms/ckeditor/plugins/smiley/images/confused_smile.gif +0 -0
  519. data/public/bcms/ckeditor/plugins/smiley/images/cry_smile.gif +0 -0
  520. data/public/bcms/ckeditor/plugins/smiley/images/devil_smile.gif +0 -0
  521. data/public/bcms/ckeditor/plugins/smiley/images/embaressed_smile.gif +0 -0
  522. data/public/bcms/ckeditor/plugins/smiley/images/envelope.gif +0 -0
  523. data/public/bcms/ckeditor/plugins/smiley/images/heart.gif +0 -0
  524. data/public/bcms/ckeditor/plugins/smiley/images/kiss.gif +0 -0
  525. data/public/bcms/ckeditor/plugins/smiley/images/lightbulb.gif +0 -0
  526. data/public/bcms/ckeditor/plugins/smiley/images/omg_smile.gif +0 -0
  527. data/public/bcms/ckeditor/plugins/smiley/images/regular_smile.gif +0 -0
  528. data/public/bcms/ckeditor/plugins/smiley/images/sad_smile.gif +0 -0
  529. data/public/bcms/ckeditor/plugins/smiley/images/shades_smile.gif +0 -0
  530. data/public/bcms/ckeditor/plugins/smiley/images/teeth_smile.gif +0 -0
  531. data/public/bcms/ckeditor/plugins/smiley/images/thumbs_down.gif +0 -0
  532. data/public/bcms/ckeditor/plugins/smiley/images/thumbs_up.gif +0 -0
  533. data/public/bcms/ckeditor/plugins/smiley/images/tounge_smile.gif +0 -0
  534. data/public/bcms/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif +0 -0
  535. data/public/bcms/ckeditor/plugins/smiley/images/wink_smile.gif +0 -0
  536. data/public/bcms/ckeditor/plugins/smiley/plugin.js +74 -0
  537. data/public/bcms/ckeditor/plugins/sourcearea/plugin.js +185 -0
  538. data/public/bcms/ckeditor/plugins/specialchar/dialogs/specialchar.js +362 -0
  539. data/public/bcms/ckeditor/plugins/specialchar/plugin.js +29 -0
  540. data/public/bcms/ckeditor/plugins/styles/plugin.js +1242 -0
  541. data/public/bcms/ckeditor/plugins/stylescombo/plugin.js +295 -0
  542. data/public/bcms/ckeditor/plugins/stylescombo/styles/default.js +85 -0
  543. data/public/bcms/ckeditor/plugins/tab/plugin.js +266 -0
  544. data/public/bcms/ckeditor/plugins/table/dialogs/table.js +550 -0
  545. data/public/bcms/ckeditor/plugins/table/plugin.js +70 -0
  546. data/public/bcms/ckeditor/plugins/tabletools/dialogs/tableCell.js +328 -0
  547. data/public/bcms/ckeditor/plugins/tabletools/plugin.js +701 -0
  548. data/public/bcms/ckeditor/plugins/templates/dialogs/templates.js +170 -0
  549. data/public/bcms/ckeditor/plugins/templates/plugin.js +99 -0
  550. data/public/bcms/ckeditor/plugins/templates/templates/default.js +94 -0
  551. data/public/{fckeditor/editor/dialog/fck_template → bcms/ckeditor/plugins/templates/templates}/images/template1.gif +0 -0
  552. data/public/{fckeditor/editor/dialog/fck_template → bcms/ckeditor/plugins/templates/templates}/images/template2.gif +0 -0
  553. data/public/{fckeditor/editor/dialog/fck_template → bcms/ckeditor/plugins/templates/templates}/images/template3.gif +0 -0
  554. data/public/bcms/ckeditor/plugins/toolbar/plugin.js +412 -0
  555. data/public/bcms/ckeditor/plugins/uicolor/dialogs/uicolor.js +203 -0
  556. data/public/bcms/ckeditor/plugins/uicolor/lang/en.js +15 -0
  557. data/public/bcms/ckeditor/plugins/uicolor/plugin.js +35 -0
  558. data/public/bcms/ckeditor/plugins/uicolor/uicolor.gif +0 -0
  559. data/public/bcms/ckeditor/plugins/uicolor/yui/assets/hue_bg.png +0 -0
  560. data/public/bcms/ckeditor/plugins/uicolor/yui/assets/hue_thumb.png +0 -0
  561. data/public/bcms/ckeditor/plugins/uicolor/yui/assets/picker_mask.png +0 -0
  562. data/public/bcms/ckeditor/plugins/uicolor/yui/assets/picker_thumb.png +0 -0
  563. data/public/bcms/ckeditor/plugins/uicolor/yui/assets/yui.css +15 -0
  564. data/public/bcms/ckeditor/plugins/uicolor/yui/yui.js +71 -0
  565. data/public/bcms/ckeditor/plugins/undo/plugin.js +490 -0
  566. data/public/bcms/ckeditor/plugins/wsc/dialogs/ciframe.html +49 -0
  567. data/public/bcms/ckeditor/plugins/wsc/dialogs/tmpFrameset.html +52 -0
  568. data/public/bcms/ckeditor/plugins/wsc/dialogs/wsc.css +83 -0
  569. data/public/bcms/ckeditor/plugins/wsc/dialogs/wsc.js +169 -0
  570. data/public/bcms/ckeditor/plugins/wsc/plugin.js +32 -0
  571. data/public/bcms/ckeditor/plugins/wysiwygarea/plugin.js +636 -0
  572. data/public/bcms/ckeditor/skins/kama/dialog.css +742 -0
  573. data/public/bcms/ckeditor/skins/kama/editor.css +21 -0
  574. data/public/bcms/ckeditor/skins/kama/elementspath.css +68 -0
  575. data/public/bcms/ckeditor/skins/kama/icons.css +309 -0
  576. data/public/bcms/ckeditor/skins/kama/icons.png +0 -0
  577. data/public/{fckeditor/editor/skins/default/images/dialog.sides.gif → bcms/ckeditor/skins/kama/images/dialog_sides.gif} +0 -0
  578. data/public/{fckeditor/editor/skins/default/images/dialog.sides.png → bcms/ckeditor/skins/kama/images/dialog_sides.png} +0 -0
  579. data/public/{fckeditor/editor/skins/default/images/dialog.sides.rtl.png → bcms/ckeditor/skins/kama/images/dialog_sides_rtl.png} +0 -0
  580. data/public/bcms/ckeditor/skins/kama/images/mini.gif +0 -0
  581. data/public/bcms/ckeditor/skins/kama/images/noimage.png +0 -0
  582. data/public/bcms/ckeditor/skins/kama/images/sprites.png +0 -0
  583. data/public/bcms/ckeditor/skins/kama/images/sprites_ie6.png +0 -0
  584. data/public/{fckeditor/editor/skins/default/images/toolbar.start.gif → bcms/ckeditor/skins/kama/images/toolbar_start.gif} +0 -0
  585. data/public/bcms/ckeditor/skins/kama/mainui.css +139 -0
  586. data/public/bcms/ckeditor/skins/kama/menu.css +179 -0
  587. data/public/bcms/ckeditor/skins/kama/panel.css +203 -0
  588. data/public/bcms/ckeditor/skins/kama/presets.css +49 -0
  589. data/public/bcms/ckeditor/skins/kama/reset.css +78 -0
  590. data/public/bcms/ckeditor/skins/kama/richcombo.css +260 -0
  591. data/public/bcms/ckeditor/skins/kama/skin.js +291 -0
  592. data/public/bcms/ckeditor/skins/kama/templates.css +71 -0
  593. data/public/bcms/ckeditor/skins/kama/toolbar.css +384 -0
  594. data/public/bcms/ckeditor/skins/office2003/dialog.css +643 -0
  595. data/public/bcms/ckeditor/skins/office2003/editor.css +21 -0
  596. data/public/bcms/ckeditor/skins/office2003/elementspath.css +68 -0
  597. data/public/bcms/ckeditor/skins/office2003/icons.css +309 -0
  598. data/public/bcms/ckeditor/skins/office2003/icons.png +0 -0
  599. data/public/bcms/ckeditor/skins/office2003/images/dialog_sides.gif +0 -0
  600. data/public/bcms/ckeditor/skins/office2003/images/dialog_sides.png +0 -0
  601. data/public/bcms/ckeditor/skins/office2003/images/dialog_sides_rtl.png +0 -0
  602. data/public/bcms/ckeditor/skins/office2003/images/mini.gif +0 -0
  603. data/public/bcms/ckeditor/skins/office2003/images/noimage.png +0 -0
  604. data/public/bcms/ckeditor/skins/office2003/images/sprites.png +0 -0
  605. data/public/bcms/ckeditor/skins/office2003/images/sprites_ie6.png +0 -0
  606. data/public/bcms/ckeditor/skins/office2003/mainui.css +97 -0
  607. data/public/bcms/ckeditor/skins/office2003/menu.css +175 -0
  608. data/public/bcms/ckeditor/skins/office2003/panel.css +198 -0
  609. data/public/bcms/ckeditor/skins/office2003/presets.css +49 -0
  610. data/public/bcms/ckeditor/skins/office2003/reset.css +78 -0
  611. data/public/bcms/ckeditor/skins/office2003/richcombo.css +279 -0
  612. data/public/bcms/ckeditor/skins/office2003/skin.js +77 -0
  613. data/public/bcms/ckeditor/skins/office2003/templates.css +71 -0
  614. data/public/bcms/ckeditor/skins/office2003/toolbar.css +442 -0
  615. data/public/bcms/ckeditor/skins/v2/dialog.css +653 -0
  616. data/public/bcms/ckeditor/skins/v2/editor.css +21 -0
  617. data/public/bcms/ckeditor/skins/v2/elementspath.css +68 -0
  618. data/public/bcms/ckeditor/skins/v2/icons.css +309 -0
  619. data/public/bcms/ckeditor/skins/v2/icons.png +0 -0
  620. data/public/bcms/ckeditor/skins/v2/images/dialog_sides.gif +0 -0
  621. data/public/bcms/ckeditor/skins/v2/images/dialog_sides.png +0 -0
  622. data/public/bcms/ckeditor/skins/v2/images/dialog_sides_rtl.png +0 -0
  623. data/public/bcms/ckeditor/skins/v2/images/mini.gif +0 -0
  624. data/public/bcms/ckeditor/skins/v2/images/noimage.png +0 -0
  625. data/public/bcms/ckeditor/skins/v2/images/sprites.png +0 -0
  626. data/public/bcms/ckeditor/skins/v2/images/sprites_ie6.png +0 -0
  627. data/public/{fckeditor/editor/skins/silver/images/toolbar.start.gif → bcms/ckeditor/skins/v2/images/toolbar_start.gif} +0 -0
  628. data/public/bcms/ckeditor/skins/v2/mainui.css +112 -0
  629. data/public/bcms/ckeditor/skins/v2/menu.css +178 -0
  630. data/public/bcms/ckeditor/skins/v2/panel.css +198 -0
  631. data/public/bcms/ckeditor/skins/v2/presets.css +50 -0
  632. data/public/bcms/ckeditor/skins/v2/reset.css +78 -0
  633. data/public/bcms/ckeditor/skins/v2/richcombo.css +275 -0
  634. data/public/bcms/ckeditor/skins/v2/skin.js +73 -0
  635. data/public/bcms/ckeditor/skins/v2/templates.css +71 -0
  636. data/public/bcms/ckeditor/skins/v2/toolbar.css +399 -0
  637. data/public/bcms/ckeditor/tests/_assets/sample.css +4 -0
  638. data/public/bcms/ckeditor/tests/_assets/sample.js +1 -0
  639. data/public/bcms/ckeditor/tests/_assets/sample.txt +1 -0
  640. data/public/bcms/ckeditor/tests/_assets/sample.xml +5 -0
  641. data/public/bcms/ckeditor/tests/_assets/sample_xml.txt +5 -0
  642. data/public/bcms/ckeditor/tests/core/_editor/custom_config_1.js +10 -0
  643. data/public/bcms/ckeditor/tests/core/_editor/custom_config_2.js +9 -0
  644. data/public/bcms/ckeditor/tests/core/ajax.html +163 -0
  645. data/public/bcms/ckeditor/tests/core/bootstrap.html +66 -0
  646. data/public/bcms/ckeditor/tests/core/ckeditor.html +160 -0
  647. data/public/bcms/ckeditor/tests/core/dom/document.html +126 -0
  648. data/public/bcms/ckeditor/tests/core/dom/documentfragment.html +292 -0
  649. data/public/bcms/ckeditor/tests/core/dom/element.html +637 -0
  650. data/public/bcms/ckeditor/tests/core/dom/node.html +164 -0
  651. data/public/bcms/ckeditor/tests/core/dom/range.html +2411 -0
  652. data/public/bcms/ckeditor/tests/core/dom/text.html +128 -0
  653. data/public/bcms/ckeditor/tests/core/dom/walker.html +340 -0
  654. data/public/bcms/ckeditor/tests/core/dom/window.html +53 -0
  655. data/public/bcms/ckeditor/tests/core/editor.html +123 -0
  656. data/public/bcms/ckeditor/tests/core/env.html +52 -0
  657. data/public/bcms/ckeditor/tests/core/event.html +487 -0
  658. data/public/bcms/ckeditor/tests/core/htmlparser/fragment.html +188 -0
  659. data/public/bcms/ckeditor/tests/core/htmlparser/htmlparser.html +91 -0
  660. data/public/bcms/ckeditor/tests/core/plugins.html +45 -0
  661. data/public/bcms/ckeditor/tests/core/plugins/myplugins/sample/my_plugin.js +3 -0
  662. data/public/bcms/ckeditor/tests/core/scriptloader.html +52 -0
  663. data/public/bcms/ckeditor/tests/core/tools.html +170 -0
  664. data/public/bcms/ckeditor/tests/core/xml.html +150 -0
  665. data/public/bcms/ckeditor/tests/plugins/domiterator/domiterator.html +236 -0
  666. data/public/bcms/ckeditor/tests/plugins/htmldataprocessor/htmldataprocessor.html +386 -0
  667. data/public/bcms/ckeditor/tests/plugins/link/link.html +123 -0
  668. data/public/bcms/ckeditor/tests/plugins/list/list.html +217 -0
  669. data/public/bcms/ckeditor/tests/plugins/selection/selection.html +49 -0
  670. data/public/bcms/ckeditor/tests/plugins/styles/styles.html +596 -0
  671. data/public/bcms/ckeditor/tests/test.css +81 -0
  672. data/public/bcms/ckeditor/tests/test.js +93 -0
  673. data/public/bcms/ckeditor/tests/testall.html +114 -0
  674. data/public/bcms/ckeditor/tests/yuitest.js +75 -0
  675. data/public/bcms/ckeditor/themes/default/theme.js +232 -0
  676. data/public/stylesheets/cms/administration.css +52 -51
  677. data/public/stylesheets/cms/application.css +55 -51
  678. data/public/stylesheets/cms/block.css +13 -13
  679. data/public/stylesheets/cms/buttons.css +91 -91
  680. data/public/stylesheets/cms/content_library.css +49 -57
  681. data/public/stylesheets/cms/content_types.css +3 -3
  682. data/public/stylesheets/cms/dashboard.css +25 -43
  683. data/public/stylesheets/cms/data_table.css +57 -81
  684. data/public/stylesheets/cms/date_picker.css +13 -14
  685. data/public/stylesheets/cms/form_layout.css +133 -140
  686. data/public/stylesheets/cms/jquery.contextMenu.css +43 -35
  687. data/public/stylesheets/cms/login.css +50 -51
  688. data/public/stylesheets/cms/menu.css +61 -63
  689. data/public/stylesheets/cms/nav.css +53 -53
  690. data/public/stylesheets/cms/page_toolbar.css +80 -82
  691. data/public/stylesheets/cms/reset.css +21 -21
  692. data/public/stylesheets/cms/selectbox.css +16 -18
  693. data/public/stylesheets/cms/sitemap.css +138 -134
  694. data/public/stylesheets/cms/thickbox.css +120 -105
  695. data/rails_generators/content_block/templates/migration.rb +1 -1
  696. data/rails_generators/portlet/USAGE +3 -1
  697. data/rails_generators/portlet/portlet_generator.rb +4 -0
  698. data/rails_generators/portlet/templates/_form.html.erb +1 -2
  699. data/rails_generators/portlet/templates/portlet.rb +4 -1
  700. data/rails_generators/portlet/templates/portlet_helper.rb +5 -0
  701. data/rails_generators/template/USAGE +10 -0
  702. data/rails_generators/template/template_generator.rb +18 -0
  703. data/rails_generators/template/templates/template.erb +3 -0
  704. data/templates/blank.rb +11 -1
  705. data/templates/demo.rb +11 -1
  706. data/templates/module.rb +15 -4
  707. data/test/functional/cms/dashboard_controller_test.rb +19 -2
  708. data/test/functional/tests/pretend_controller_test.rb +54 -0
  709. data/test/integration/cms/ckeditor_test.rb +27 -0
  710. data/test/integration/cms/password_management_test.rb +1 -2
  711. data/test/test_helper.rb +14 -0
  712. data/test/unit/helpers/application_helper_test.rb +48 -0
  713. data/test/unit/helpers/form_builder_test.rb +21 -2
  714. data/test/unit/helpers/menu_helper_test.rb +164 -142
  715. data/test/unit/helpers/page_helper_test.rb +11 -3
  716. data/test/unit/lib/acts_as_content_page_test.rb +72 -0
  717. data/test/unit/lib/cms/authentication/controller_test.rb +20 -0
  718. data/test/unit/lib/cms_domain_support_test.rb +43 -0
  719. data/test/unit/lib/command_line_test.rb +70 -0
  720. data/test/unit/lib/content_block_test.rb +41 -4
  721. data/test/unit/lib/content_rendering_support_test.rb +40 -0
  722. data/test/unit/models/attachment_test.rb +2 -2
  723. data/test/unit/models/content_type_test.rb +19 -7
  724. data/test/unit/models/page_template_test.rb +4 -1
  725. data/test/unit/models/portlet_test.rb +49 -1
  726. data/test/unit/models/sections_test.rb +41 -2
  727. data/test/unit/models/task_test.rb +37 -22
  728. data/test/unit/models/user_test.rb +165 -51
  729. metadata +424 -323
  730. data/doc/guides/html/developer_guide.html +0 -308
  731. data/public/fckeditor/editor/css/behaviors/disablehandles.htc +0 -15
  732. data/public/fckeditor/editor/css/behaviors/showtableborders.htc +0 -36
  733. data/public/fckeditor/editor/css/fck_editorarea.css +0 -110
  734. data/public/fckeditor/editor/css/fck_internal.css +0 -199
  735. data/public/fckeditor/editor/css/fck_showtableborders_gecko.css +0 -49
  736. data/public/fckeditor/editor/css/images/fck_anchor.gif +0 -0
  737. data/public/fckeditor/editor/css/images/fck_flashlogo.gif +0 -0
  738. data/public/fckeditor/editor/css/images/fck_hiddenfield.gif +0 -0
  739. data/public/fckeditor/editor/css/images/fck_plugin.gif +0 -0
  740. data/public/fckeditor/editor/dialog/common/fck_dialog_common.css +0 -85
  741. data/public/fckeditor/editor/dialog/common/fck_dialog_common.js +0 -311
  742. data/public/fckeditor/editor/dialog/common/images/locked.gif +0 -0
  743. data/public/fckeditor/editor/dialog/common/images/reset.gif +0 -0
  744. data/public/fckeditor/editor/dialog/common/images/unlocked.gif +0 -0
  745. data/public/fckeditor/editor/dialog/fck_about.html +0 -161
  746. data/public/fckeditor/editor/dialog/fck_about/logo_fckeditor.gif +0 -0
  747. data/public/fckeditor/editor/dialog/fck_about/logo_fredck.gif +0 -0
  748. data/public/fckeditor/editor/dialog/fck_about/sponsors/spellchecker_net.gif +0 -0
  749. data/public/fckeditor/editor/dialog/fck_anchor.html +0 -220
  750. data/public/fckeditor/editor/dialog/fck_button.html +0 -104
  751. data/public/fckeditor/editor/dialog/fck_checkbox.html +0 -104
  752. data/public/fckeditor/editor/dialog/fck_colorselector.html +0 -172
  753. data/public/fckeditor/editor/dialog/fck_div.html +0 -364
  754. data/public/fckeditor/editor/dialog/fck_docprops.html +0 -600
  755. data/public/fckeditor/editor/dialog/fck_docprops/fck_document_preview.html +0 -113
  756. data/public/fckeditor/editor/dialog/fck_flash.html +0 -152
  757. data/public/fckeditor/editor/dialog/fck_flash/fck_flash.js +0 -300
  758. data/public/fckeditor/editor/dialog/fck_flash/fck_flash_preview.html +0 -50
  759. data/public/fckeditor/editor/dialog/fck_form.html +0 -109
  760. data/public/fckeditor/editor/dialog/fck_hiddenfield.html +0 -115
  761. data/public/fckeditor/editor/dialog/fck_image.html +0 -258
  762. data/public/fckeditor/editor/dialog/fck_image/fck_image.js +0 -512
  763. data/public/fckeditor/editor/dialog/fck_image/fck_image_preview.html +0 -72
  764. data/public/fckeditor/editor/dialog/fck_link.html +0 -295
  765. data/public/fckeditor/editor/dialog/fck_link/fck_link.js +0 -893
  766. data/public/fckeditor/editor/dialog/fck_listprop.html +0 -120
  767. data/public/fckeditor/editor/dialog/fck_paste.html +0 -346
  768. data/public/fckeditor/editor/dialog/fck_radiobutton.html +0 -104
  769. data/public/fckeditor/editor/dialog/fck_replace.html +0 -648
  770. data/public/fckeditor/editor/dialog/fck_select.html +0 -180
  771. data/public/fckeditor/editor/dialog/fck_select/fck_select.js +0 -194
  772. data/public/fckeditor/editor/dialog/fck_smiley.html +0 -111
  773. data/public/fckeditor/editor/dialog/fck_source.html +0 -68
  774. data/public/fckeditor/editor/dialog/fck_specialchar.html +0 -121
  775. data/public/fckeditor/editor/dialog/fck_spellerpages.html +0 -70
  776. data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/blank.html +0 -0
  777. data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/controlWindow.js +0 -87
  778. data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/controls.html +0 -153
  779. data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.cfm +0 -148
  780. data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.php +0 -199
  781. data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/server-scripts/spellchecker.pl +0 -181
  782. data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellChecker.js +0 -461
  783. data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellchecker.html +0 -71
  784. data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/spellerStyle.css +0 -49
  785. data/public/fckeditor/editor/dialog/fck_spellerpages/spellerpages/wordWindow.js +0 -272
  786. data/public/fckeditor/editor/dialog/fck_table.html +0 -298
  787. data/public/fckeditor/editor/dialog/fck_tablecell.html +0 -257
  788. data/public/fckeditor/editor/dialog/fck_template.html +0 -242
  789. data/public/fckeditor/editor/dialog/fck_textarea.html +0 -94
  790. data/public/fckeditor/editor/dialog/fck_textfield.html +0 -136
  791. data/public/fckeditor/editor/dtd/fck_dtd_test.html +0 -41
  792. data/public/fckeditor/editor/dtd/fck_xhtml10strict.js +0 -116
  793. data/public/fckeditor/editor/dtd/fck_xhtml10transitional.js +0 -140
  794. data/public/fckeditor/editor/fckdebug.html +0 -153
  795. data/public/fckeditor/editor/fckdialog.html +0 -812
  796. data/public/fckeditor/editor/fckeditor.html +0 -317
  797. data/public/fckeditor/editor/fckeditor.original.html +0 -424
  798. data/public/fckeditor/editor/filemanager/browser/default/browser.css +0 -87
  799. data/public/fckeditor/editor/filemanager/browser/default/browser.html +0 -200
  800. data/public/fckeditor/editor/filemanager/browser/default/frmactualfolder.html +0 -95
  801. data/public/fckeditor/editor/filemanager/browser/default/frmcreatefolder.html +0 -114
  802. data/public/fckeditor/editor/filemanager/browser/default/frmfolders.html +0 -198
  803. data/public/fckeditor/editor/filemanager/browser/default/frmresourceslist.html +0 -169
  804. data/public/fckeditor/editor/filemanager/browser/default/frmresourcetype.html +0 -68
  805. data/public/fckeditor/editor/filemanager/browser/default/frmupload.html +0 -115
  806. data/public/fckeditor/editor/filemanager/browser/default/images/ButtonArrow.gif +0 -0
  807. data/public/fckeditor/editor/filemanager/browser/default/images/Folder.gif +0 -0
  808. data/public/fckeditor/editor/filemanager/browser/default/images/Folder32.gif +0 -0
  809. data/public/fckeditor/editor/filemanager/browser/default/images/FolderOpened.gif +0 -0
  810. data/public/fckeditor/editor/filemanager/browser/default/images/FolderOpened32.gif +0 -0
  811. data/public/fckeditor/editor/filemanager/browser/default/images/FolderUp.gif +0 -0
  812. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/ai.gif +0 -0
  813. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/avi.gif +0 -0
  814. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/bmp.gif +0 -0
  815. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/cs.gif +0 -0
  816. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/default.icon.gif +0 -0
  817. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/dll.gif +0 -0
  818. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/doc.gif +0 -0
  819. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/exe.gif +0 -0
  820. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/fla.gif +0 -0
  821. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/gif.gif +0 -0
  822. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/htm.gif +0 -0
  823. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/html.gif +0 -0
  824. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/jpg.gif +0 -0
  825. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/js.gif +0 -0
  826. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/mdb.gif +0 -0
  827. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/mp3.gif +0 -0
  828. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/pdf.gif +0 -0
  829. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/png.gif +0 -0
  830. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/ppt.gif +0 -0
  831. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/rdp.gif +0 -0
  832. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/swf.gif +0 -0
  833. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/swt.gif +0 -0
  834. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/txt.gif +0 -0
  835. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/vsd.gif +0 -0
  836. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/xls.gif +0 -0
  837. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/xml.gif +0 -0
  838. data/public/fckeditor/editor/filemanager/browser/default/images/icons/32/zip.gif +0 -0
  839. data/public/fckeditor/editor/filemanager/browser/default/images/icons/ai.gif +0 -0
  840. data/public/fckeditor/editor/filemanager/browser/default/images/icons/avi.gif +0 -0
  841. data/public/fckeditor/editor/filemanager/browser/default/images/icons/bmp.gif +0 -0
  842. data/public/fckeditor/editor/filemanager/browser/default/images/icons/cs.gif +0 -0
  843. data/public/fckeditor/editor/filemanager/browser/default/images/icons/default.icon.gif +0 -0
  844. data/public/fckeditor/editor/filemanager/browser/default/images/icons/dll.gif +0 -0
  845. data/public/fckeditor/editor/filemanager/browser/default/images/icons/doc.gif +0 -0
  846. data/public/fckeditor/editor/filemanager/browser/default/images/icons/exe.gif +0 -0
  847. data/public/fckeditor/editor/filemanager/browser/default/images/icons/fla.gif +0 -0
  848. data/public/fckeditor/editor/filemanager/browser/default/images/icons/gif.gif +0 -0
  849. data/public/fckeditor/editor/filemanager/browser/default/images/icons/htm.gif +0 -0
  850. data/public/fckeditor/editor/filemanager/browser/default/images/icons/html.gif +0 -0
  851. data/public/fckeditor/editor/filemanager/browser/default/images/icons/jpg.gif +0 -0
  852. data/public/fckeditor/editor/filemanager/browser/default/images/icons/js.gif +0 -0
  853. data/public/fckeditor/editor/filemanager/browser/default/images/icons/mdb.gif +0 -0
  854. data/public/fckeditor/editor/filemanager/browser/default/images/icons/mp3.gif +0 -0
  855. data/public/fckeditor/editor/filemanager/browser/default/images/icons/pdf.gif +0 -0
  856. data/public/fckeditor/editor/filemanager/browser/default/images/icons/png.gif +0 -0
  857. data/public/fckeditor/editor/filemanager/browser/default/images/icons/ppt.gif +0 -0
  858. data/public/fckeditor/editor/filemanager/browser/default/images/icons/rdp.gif +0 -0
  859. data/public/fckeditor/editor/filemanager/browser/default/images/icons/swf.gif +0 -0
  860. data/public/fckeditor/editor/filemanager/browser/default/images/icons/swt.gif +0 -0
  861. data/public/fckeditor/editor/filemanager/browser/default/images/icons/txt.gif +0 -0
  862. data/public/fckeditor/editor/filemanager/browser/default/images/icons/vsd.gif +0 -0
  863. data/public/fckeditor/editor/filemanager/browser/default/images/icons/xls.gif +0 -0
  864. data/public/fckeditor/editor/filemanager/browser/default/images/icons/xml.gif +0 -0
  865. data/public/fckeditor/editor/filemanager/browser/default/images/icons/zip.gif +0 -0
  866. data/public/fckeditor/editor/filemanager/browser/default/images/spacer.gif +0 -0
  867. data/public/fckeditor/editor/filemanager/browser/default/js/common.js +0 -88
  868. data/public/fckeditor/editor/filemanager/browser/default/js/fckxml.js +0 -147
  869. data/public/fckeditor/editor/images/arrow_ltr.gif +0 -0
  870. data/public/fckeditor/editor/images/arrow_rtl.gif +0 -0
  871. data/public/fckeditor/editor/images/smiley/msn/angel_smile.gif +0 -0
  872. data/public/fckeditor/editor/images/smiley/msn/angry_smile.gif +0 -0
  873. data/public/fckeditor/editor/images/smiley/msn/broken_heart.gif +0 -0
  874. data/public/fckeditor/editor/images/smiley/msn/cake.gif +0 -0
  875. data/public/fckeditor/editor/images/smiley/msn/confused_smile.gif +0 -0
  876. data/public/fckeditor/editor/images/smiley/msn/cry_smile.gif +0 -0
  877. data/public/fckeditor/editor/images/smiley/msn/devil_smile.gif +0 -0
  878. data/public/fckeditor/editor/images/smiley/msn/embaressed_smile.gif +0 -0
  879. data/public/fckeditor/editor/images/smiley/msn/envelope.gif +0 -0
  880. data/public/fckeditor/editor/images/smiley/msn/heart.gif +0 -0
  881. data/public/fckeditor/editor/images/smiley/msn/kiss.gif +0 -0
  882. data/public/fckeditor/editor/images/smiley/msn/lightbulb.gif +0 -0
  883. data/public/fckeditor/editor/images/smiley/msn/omg_smile.gif +0 -0
  884. data/public/fckeditor/editor/images/smiley/msn/regular_smile.gif +0 -0
  885. data/public/fckeditor/editor/images/smiley/msn/sad_smile.gif +0 -0
  886. data/public/fckeditor/editor/images/smiley/msn/shades_smile.gif +0 -0
  887. data/public/fckeditor/editor/images/smiley/msn/teeth_smile.gif +0 -0
  888. data/public/fckeditor/editor/images/smiley/msn/thumbs_down.gif +0 -0
  889. data/public/fckeditor/editor/images/smiley/msn/thumbs_up.gif +0 -0
  890. data/public/fckeditor/editor/images/smiley/msn/tounge_smile.gif +0 -0
  891. data/public/fckeditor/editor/images/smiley/msn/whatchutalkingabout_smile.gif +0 -0
  892. data/public/fckeditor/editor/images/smiley/msn/wink_smile.gif +0 -0
  893. data/public/fckeditor/editor/images/spacer.gif +0 -0
  894. data/public/fckeditor/editor/js/fckadobeair.js +0 -176
  895. data/public/fckeditor/editor/js/fckeditorcode_gecko.js +0 -108
  896. data/public/fckeditor/editor/js/fckeditorcode_ie.js +0 -109
  897. data/public/fckeditor/editor/lang/_translationstatus.txt +0 -78
  898. data/public/fckeditor/editor/lang/af.js +0 -526
  899. data/public/fckeditor/editor/lang/ar.js +0 -526
  900. data/public/fckeditor/editor/lang/bg.js +0 -526
  901. data/public/fckeditor/editor/lang/bn.js +0 -526
  902. data/public/fckeditor/editor/lang/bs.js +0 -526
  903. data/public/fckeditor/editor/lang/ca.js +0 -526
  904. data/public/fckeditor/editor/lang/cs.js +0 -526
  905. data/public/fckeditor/editor/lang/da.js +0 -526
  906. data/public/fckeditor/editor/lang/de.js +0 -526
  907. data/public/fckeditor/editor/lang/el.js +0 -526
  908. data/public/fckeditor/editor/lang/en-au.js +0 -526
  909. data/public/fckeditor/editor/lang/en-ca.js +0 -526
  910. data/public/fckeditor/editor/lang/en-uk.js +0 -526
  911. data/public/fckeditor/editor/lang/en.js +0 -526
  912. data/public/fckeditor/editor/lang/eo.js +0 -526
  913. data/public/fckeditor/editor/lang/es.js +0 -526
  914. data/public/fckeditor/editor/lang/et.js +0 -526
  915. data/public/fckeditor/editor/lang/eu.js +0 -527
  916. data/public/fckeditor/editor/lang/fa.js +0 -526
  917. data/public/fckeditor/editor/lang/fi.js +0 -526
  918. data/public/fckeditor/editor/lang/fo.js +0 -526
  919. data/public/fckeditor/editor/lang/fr-ca.js +0 -526
  920. data/public/fckeditor/editor/lang/fr.js +0 -526
  921. data/public/fckeditor/editor/lang/gl.js +0 -526
  922. data/public/fckeditor/editor/lang/gu.js +0 -526
  923. data/public/fckeditor/editor/lang/he.js +0 -526
  924. data/public/fckeditor/editor/lang/hi.js +0 -526
  925. data/public/fckeditor/editor/lang/hr.js +0 -526
  926. data/public/fckeditor/editor/lang/hu.js +0 -526
  927. data/public/fckeditor/editor/lang/it.js +0 -526
  928. data/public/fckeditor/editor/lang/ja.js +0 -526
  929. data/public/fckeditor/editor/lang/km.js +0 -526
  930. data/public/fckeditor/editor/lang/ko.js +0 -526
  931. data/public/fckeditor/editor/lang/lt.js +0 -526
  932. data/public/fckeditor/editor/lang/lv.js +0 -526
  933. data/public/fckeditor/editor/lang/mn.js +0 -526
  934. data/public/fckeditor/editor/lang/ms.js +0 -526
  935. data/public/fckeditor/editor/lang/nb.js +0 -526
  936. data/public/fckeditor/editor/lang/nl.js +0 -526
  937. data/public/fckeditor/editor/lang/no.js +0 -526
  938. data/public/fckeditor/editor/lang/pl.js +0 -526
  939. data/public/fckeditor/editor/lang/pt-br.js +0 -526
  940. data/public/fckeditor/editor/lang/pt.js +0 -526
  941. data/public/fckeditor/editor/lang/ro.js +0 -526
  942. data/public/fckeditor/editor/lang/ru.js +0 -526
  943. data/public/fckeditor/editor/lang/sk.js +0 -526
  944. data/public/fckeditor/editor/lang/sl.js +0 -526
  945. data/public/fckeditor/editor/lang/sr-latn.js +0 -526
  946. data/public/fckeditor/editor/lang/sr.js +0 -526
  947. data/public/fckeditor/editor/lang/sv.js +0 -526
  948. data/public/fckeditor/editor/lang/th.js +0 -526
  949. data/public/fckeditor/editor/lang/tr.js +0 -526
  950. data/public/fckeditor/editor/lang/uk.js +0 -526
  951. data/public/fckeditor/editor/lang/vi.js +0 -526
  952. data/public/fckeditor/editor/lang/zh-cn.js +0 -526
  953. data/public/fckeditor/editor/lang/zh.js +0 -526
  954. data/public/fckeditor/editor/plugins/autogrow/fckplugin.js +0 -99
  955. data/public/fckeditor/editor/plugins/bbcode/_sample/sample.config.js +0 -26
  956. data/public/fckeditor/editor/plugins/bbcode/_sample/sample.html +0 -67
  957. data/public/fckeditor/editor/plugins/bbcode/fckplugin.js +0 -123
  958. data/public/fckeditor/editor/plugins/dragresizetable/fckplugin.js +0 -524
  959. data/public/fckeditor/editor/plugins/placeholder/fck_placeholder.html +0 -105
  960. data/public/fckeditor/editor/plugins/placeholder/fckplugin.js +0 -187
  961. data/public/fckeditor/editor/plugins/placeholder/lang/de.js +0 -27
  962. data/public/fckeditor/editor/plugins/placeholder/lang/en.js +0 -27
  963. data/public/fckeditor/editor/plugins/placeholder/lang/es.js +0 -27
  964. data/public/fckeditor/editor/plugins/placeholder/lang/fr.js +0 -27
  965. data/public/fckeditor/editor/plugins/placeholder/lang/it.js +0 -27
  966. data/public/fckeditor/editor/plugins/placeholder/lang/pl.js +0 -27
  967. data/public/fckeditor/editor/plugins/placeholder/placeholder.gif +0 -0
  968. data/public/fckeditor/editor/plugins/simplecommands/fckplugin.js +0 -29
  969. data/public/fckeditor/editor/plugins/tablecommands/fckplugin.js +0 -33
  970. data/public/fckeditor/editor/skins/_fckviewstrips.html +0 -121
  971. data/public/fckeditor/editor/skins/default/fck_dialog.css +0 -402
  972. data/public/fckeditor/editor/skins/default/fck_dialog_ie6.js +0 -110
  973. data/public/fckeditor/editor/skins/default/fck_editor.css +0 -464
  974. data/public/fckeditor/editor/skins/default/fck_strip.gif +0 -0
  975. data/public/fckeditor/editor/skins/default/images/sprites.gif +0 -0
  976. data/public/fckeditor/editor/skins/default/images/sprites.png +0 -0
  977. data/public/fckeditor/editor/skins/default/images/toolbar.arrowright.gif +0 -0
  978. data/public/fckeditor/editor/skins/default/images/toolbar.buttonarrow.gif +0 -0
  979. data/public/fckeditor/editor/skins/default/images/toolbar.collapse.gif +0 -0
  980. data/public/fckeditor/editor/skins/default/images/toolbar.end.gif +0 -0
  981. data/public/fckeditor/editor/skins/default/images/toolbar.expand.gif +0 -0
  982. data/public/fckeditor/editor/skins/default/images/toolbar.separator.gif +0 -0
  983. data/public/fckeditor/editor/skins/office2003/fck_dialog.css +0 -402
  984. data/public/fckeditor/editor/skins/office2003/fck_dialog_ie6.js +0 -110
  985. data/public/fckeditor/editor/skins/office2003/fck_editor.css +0 -476
  986. data/public/fckeditor/editor/skins/office2003/fck_strip.gif +0 -0
  987. data/public/fckeditor/editor/skins/office2003/images/dialog.sides.gif +0 -0
  988. data/public/fckeditor/editor/skins/office2003/images/dialog.sides.png +0 -0
  989. data/public/fckeditor/editor/skins/office2003/images/dialog.sides.rtl.png +0 -0
  990. data/public/fckeditor/editor/skins/office2003/images/sprites.gif +0 -0
  991. data/public/fckeditor/editor/skins/office2003/images/sprites.png +0 -0
  992. data/public/fckeditor/editor/skins/office2003/images/toolbar.arrowright.gif +0 -0
  993. data/public/fckeditor/editor/skins/office2003/images/toolbar.bg.gif +0 -0
  994. data/public/fckeditor/editor/skins/office2003/images/toolbar.buttonarrow.gif +0 -0
  995. data/public/fckeditor/editor/skins/office2003/images/toolbar.collapse.gif +0 -0
  996. data/public/fckeditor/editor/skins/office2003/images/toolbar.end.gif +0 -0
  997. data/public/fckeditor/editor/skins/office2003/images/toolbar.expand.gif +0 -0
  998. data/public/fckeditor/editor/skins/office2003/images/toolbar.separator.gif +0 -0
  999. data/public/fckeditor/editor/skins/office2003/images/toolbar.start.gif +0 -0
  1000. data/public/fckeditor/editor/skins/silver/fck_dialog.css +0 -402
  1001. data/public/fckeditor/editor/skins/silver/fck_dialog_ie6.js +0 -110
  1002. data/public/fckeditor/editor/skins/silver/fck_editor.css +0 -473
  1003. data/public/fckeditor/editor/skins/silver/fck_strip.gif +0 -0
  1004. data/public/fckeditor/editor/skins/silver/images/dialog.sides.gif +0 -0
  1005. data/public/fckeditor/editor/skins/silver/images/dialog.sides.png +0 -0
  1006. data/public/fckeditor/editor/skins/silver/images/dialog.sides.rtl.png +0 -0
  1007. data/public/fckeditor/editor/skins/silver/images/sprites.gif +0 -0
  1008. data/public/fckeditor/editor/skins/silver/images/sprites.png +0 -0
  1009. data/public/fckeditor/editor/skins/silver/images/toolbar.arrowright.gif +0 -0
  1010. data/public/fckeditor/editor/skins/silver/images/toolbar.buttonarrow.gif +0 -0
  1011. data/public/fckeditor/editor/skins/silver/images/toolbar.buttonbg.gif +0 -0
  1012. data/public/fckeditor/editor/skins/silver/images/toolbar.collapse.gif +0 -0
  1013. data/public/fckeditor/editor/skins/silver/images/toolbar.end.gif +0 -0
  1014. data/public/fckeditor/editor/skins/silver/images/toolbar.expand.gif +0 -0
  1015. data/public/fckeditor/editor/skins/silver/images/toolbar.separator.gif +0 -0
  1016. data/public/fckeditor/fckconfig.js +0 -364
  1017. data/public/fckeditor/fckdebug.html +0 -153
  1018. data/public/fckeditor/fckdialog.html +0 -812
  1019. data/public/fckeditor/fckeditor.html +0 -317
  1020. data/public/fckeditor/fckeditor.js +0 -328
  1021. data/public/fckeditor/fckeditor.original.html +0 -424
  1022. data/public/fckeditor/fckpackager.xml +0 -262
  1023. data/public/fckeditor/fckstyles.xml +0 -111
  1024. data/public/fckeditor/fcktemplates.xml +0 -103
  1025. data/public/javascripts/cms/editor.js +0 -56
@@ -0,0 +1,1319 @@
1
+ /*
2
+ Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
3
+ For licensing, see LICENSE.html or http://ckeditor.com/license
4
+ */
5
+
6
+ /** @fileoverview The "dialogui" plugin. */
7
+
8
+ CKEDITOR.plugins.add( 'dialogui' );
9
+
10
+ (function()
11
+ {
12
+ var initPrivateObject = function( elementDefinition )
13
+ {
14
+ this._ || ( this._ = {} );
15
+ this._['default'] = this._.initValue = elementDefinition['default'] || '';
16
+ var args = [ this._ ];
17
+ for ( var i = 1 ; i < arguments.length ; i++ )
18
+ args.push( arguments[i] );
19
+ args.push( true );
20
+ CKEDITOR.tools.extend.apply( CKEDITOR.tools, args );
21
+ return this._;
22
+ },
23
+ textBuilder =
24
+ {
25
+ build : function( dialog, elementDefinition, output )
26
+ {
27
+ return new CKEDITOR.ui.dialog.textInput( dialog, elementDefinition, output );
28
+ }
29
+ },
30
+ commonBuilder =
31
+ {
32
+ build : function( dialog, elementDefinition, output )
33
+ {
34
+ return new CKEDITOR.ui.dialog[elementDefinition.type]( dialog, elementDefinition, output );
35
+ }
36
+ },
37
+ commonPrototype =
38
+ {
39
+ isChanged : function()
40
+ {
41
+ return this.getValue() != this.getInitValue();
42
+ },
43
+
44
+ reset : function()
45
+ {
46
+ this.setValue( this.getInitValue() );
47
+ },
48
+
49
+ setInitValue : function()
50
+ {
51
+ this._.initValue = this.getValue();
52
+ },
53
+
54
+ resetInitValue : function()
55
+ {
56
+ this._.initValue = this._['default'];
57
+ },
58
+
59
+ getInitValue : function()
60
+ {
61
+ return this._.initValue;
62
+ }
63
+ },
64
+ commonEventProcessors = CKEDITOR.tools.extend( {}, CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,
65
+ {
66
+ onChange : function( dialog, func )
67
+ {
68
+ if ( !this._.domOnChangeRegistered )
69
+ {
70
+ dialog.on( 'load', function()
71
+ {
72
+ this.getInputElement().on( 'change', function(){ this.fire( 'change', { value : this.getValue() } ); }, this );
73
+ }, this );
74
+ this._.domOnChangeRegistered = true;
75
+ }
76
+
77
+ this.on( 'change', func );
78
+ }
79
+ }, true ),
80
+ eventRegex = /^on([A-Z]\w+)/,
81
+ cleanInnerDefinition = function( def )
82
+ {
83
+ // An inner UI element should not have the parent's type, title or events.
84
+ for ( var i in def )
85
+ {
86
+ if ( eventRegex.test( i ) || i == 'title' || i == 'type' )
87
+ delete def[i];
88
+ }
89
+ return def;
90
+ };
91
+
92
+ CKEDITOR.tools.extend( CKEDITOR.ui.dialog,
93
+ /** @lends CKEDITOR.ui.dialog */
94
+ {
95
+ /**
96
+ * Base class for all dialog elements with a textual label on the left.
97
+ * @constructor
98
+ * @example
99
+ * @extends CKEDITOR.ui.dialog.uiElement
100
+ * @param {CKEDITOR.dialog} dialog
101
+ * Parent dialog object.
102
+ * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
103
+ * The element definition. Accepted fields:
104
+ * <ul>
105
+ * <li><strong>label</strong> (Required) The label string.</li>
106
+ * <li><strong>labelLayout</strong> (Optional) Put 'horizontal' here if the
107
+ * label element is to be layed out horizontally. Otherwise a vertical
108
+ * layout will be used.</li>
109
+ * <li><strong>widths</strong> (Optional) This applies only for horizontal
110
+ * layouts - an 2-element array of lengths to specify the widths of the
111
+ * label and the content element.</li>
112
+ * </ul>
113
+ * @param {Array} htmlList
114
+ * List of HTML code to output to.
115
+ * @param {Function} contentHtml
116
+ * A function returning the HTML code string to be added inside the content
117
+ * cell.
118
+ */
119
+ labeledElement : function( dialog, elementDefinition, htmlList, contentHtml )
120
+ {
121
+ if ( arguments.length < 4 )
122
+ return;
123
+
124
+ var _ = initPrivateObject.call( this, elementDefinition );
125
+ _.labelId = CKEDITOR.tools.getNextNumber() + '_label';
126
+ var children = this._.children = [];
127
+ /** @ignore */
128
+ var innerHTML = function()
129
+ {
130
+ var html = [];
131
+ if ( elementDefinition.labelLayout != 'horizontal' )
132
+ html.push( '<div class="cke_dialog_ui_labeled_label" id="',
133
+ _.labelId,
134
+ '" >',
135
+ elementDefinition.label,
136
+ '</div>',
137
+ '<div class="cke_dialog_ui_labeled_content">',
138
+ contentHtml( dialog, elementDefinition ),
139
+ '</div>' );
140
+ else
141
+ {
142
+ var hboxDefinition = {
143
+ type : 'hbox',
144
+ widths : elementDefinition.widths,
145
+ padding : 0,
146
+ children :
147
+ [
148
+ {
149
+ type : 'html',
150
+ html : '<span class="cke_dialog_ui_labeled_label" ' +
151
+ 'id="' + _.labelId + '">' + CKEDITOR.tools.htmlEncode( elementDefinition.label ) +
152
+ '</span>'
153
+ },
154
+ {
155
+ type : 'html',
156
+ html : '<span class="cke_dialog_ui_labeled_content">' +
157
+ contentHtml( dialog, elementDefinition ) +
158
+ '</span>'
159
+ }
160
+ ]
161
+ };
162
+ CKEDITOR.dialog._.uiElementBuilders.hbox.build( dialog, hboxDefinition, html );
163
+ }
164
+ return html.join( '' );
165
+ };
166
+ CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, htmlList, 'div', null, null, innerHTML );
167
+ },
168
+
169
+ /**
170
+ * A text input with a label. This UI element class represents both the
171
+ * single-line text inputs and password inputs in dialog boxes.
172
+ * @constructor
173
+ * @example
174
+ * @extends CKEDITOR.ui.dialog.labeledElement
175
+ * @param {CKEDITOR.dialog} dialog
176
+ * Parent dialog object.
177
+ * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
178
+ * The element definition. Accepted fields:
179
+ * <ul>
180
+ * <li><strong>default</strong> (Optional) The default value.</li>
181
+ * <li><strong>validate</strong> (Optional) The validation function. </li>
182
+ * <li><strong>maxLength</strong> (Optional) The maximum length of text box
183
+ * contents.</li>
184
+ * <li><strong>size</strong> (Optional) The size of the text box. This is
185
+ * usually overridden by the size defined by the skin, however.</li>
186
+ * </ul>
187
+ * @param {Array} htmlList
188
+ * List of HTML code to output to.
189
+ */
190
+ textInput : function( dialog, elementDefinition, htmlList )
191
+ {
192
+ if ( arguments.length < 3 )
193
+ return;
194
+
195
+ initPrivateObject.call( this, elementDefinition );
196
+ var domId = this._.inputId = CKEDITOR.tools.getNextNumber() + '_textInput',
197
+ attributes = { 'class' : 'cke_dialog_ui_input_' + elementDefinition.type, id : domId, type : 'text' },
198
+ i;
199
+
200
+ // Set the validator, if any.
201
+ if ( elementDefinition.validate )
202
+ this.validate = elementDefinition.validate;
203
+
204
+ // Set the max length and size.
205
+ if ( elementDefinition.maxLength )
206
+ attributes.maxlength = elementDefinition.maxLength;
207
+ if ( elementDefinition.size )
208
+ attributes.size = elementDefinition.size;
209
+
210
+ // If user presses Enter in a text box, it implies clicking OK for the dialog.
211
+ var me = this, keyPressedOnMe = false;
212
+ dialog.on( 'load', function()
213
+ {
214
+ me.getInputElement().on( 'keydown', function( evt )
215
+ {
216
+ if ( evt.data.getKeystroke() == 13 )
217
+ keyPressedOnMe = true;
218
+ } );
219
+
220
+ // Lower the priority this 'keyup' since 'ok' will close the dialog.(#3749)
221
+ me.getInputElement().on( 'keyup', function( evt )
222
+ {
223
+ if ( evt.data.getKeystroke() == 13 && keyPressedOnMe )
224
+ {
225
+ dialog.getButton( 'ok' ) && dialog.getButton( 'ok' ).click();
226
+ keyPressedOnMe = false;
227
+ }
228
+ }, null, null, 1000 );
229
+ } );
230
+
231
+ /** @ignore */
232
+ var innerHTML = function()
233
+ {
234
+ // IE BUG: Text input fields in IE at 100% would exceed a <td> or inline
235
+ // container's width, so need to wrap it inside a <div>.
236
+ var html = [ '<div class="cke_dialog_ui_input_', elementDefinition.type, '"' ];
237
+
238
+ if ( elementDefinition.width )
239
+ html.push( 'style="width:'+ elementDefinition.width +'" ' );
240
+
241
+ html.push( '><input ' );
242
+ for ( var i in attributes )
243
+ html.push( i + '="' + attributes[i] + '" ' );
244
+ html.push( ' /></div>' );
245
+ return html.join( '' );
246
+ };
247
+ CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML );
248
+ },
249
+
250
+ /**
251
+ * A text area with a label on the top or left.
252
+ * @constructor
253
+ * @extends CKEDITOR.ui.dialog.labeledElement
254
+ * @example
255
+ * @param {CKEDITOR.dialog} dialog
256
+ * Parent dialog object.
257
+ * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
258
+ * The element definition. Accepted fields:
259
+ * <ul>
260
+ * <li><strong>rows</strong> (Optional) The number of rows displayed.
261
+ * Defaults to 5 if not defined.</li>
262
+ * <li><strong>cols</strong> (Optional) The number of cols displayed.
263
+ * Defaults to 20 if not defined. Usually overridden by skins.</li>
264
+ * <li><strong>default</strong> (Optional) The default value.</li>
265
+ * <li><strong>validate</strong> (Optional) The validation function. </li>
266
+ * </ul>
267
+ * @param {Array} htmlList
268
+ * List of HTML code to output to.
269
+ */
270
+ textarea : function( dialog, elementDefinition, htmlList )
271
+ {
272
+ if ( arguments.length < 3 )
273
+ return;
274
+
275
+ initPrivateObject.call( this, elementDefinition );
276
+ var me = this,
277
+ domId = this._.inputId = CKEDITOR.tools.getNextNumber() + '_textarea',
278
+ attributes = {};
279
+
280
+ if ( elementDefinition.validate )
281
+ this.validate = elementDefinition.validate;
282
+
283
+ // Generates the essential attributes for the textarea tag.
284
+ attributes.rows = elementDefinition.rows || 5;
285
+ attributes.cols = elementDefinition.cols || 20;
286
+
287
+ /** @ignore */
288
+ var innerHTML = function()
289
+ {
290
+ var html = [ '<div class="cke_dialog_ui_input_textarea"><textarea class="cke_dialog_ui_input_textarea" id="', domId, '" ' ];
291
+ for ( var i in attributes )
292
+ html.push( i + '="' + CKEDITOR.tools.htmlEncode( attributes[i] ) + '" ' );
293
+ html.push( '>', CKEDITOR.tools.htmlEncode( me._['default'] ), '</textarea></div>' );
294
+ return html.join( '' );
295
+ };
296
+ CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML );
297
+ },
298
+
299
+ /**
300
+ * A single checkbox with a label on the right.
301
+ * @constructor
302
+ * @extends CKEDITOR.ui.dialog.uiElement
303
+ * @example
304
+ * @param {CKEDITOR.dialog} dialog
305
+ * Parent dialog object.
306
+ * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
307
+ * The element definition. Accepted fields:
308
+ * <ul>
309
+ * <li><strong>checked</strong> (Optional) Whether the checkbox is checked
310
+ * on instantiation. Defaults to false.</li>
311
+ * <li><strong>validate</strong> (Optional) The validation function.</li>
312
+ * <li><strong>label</strong> (Optional) The checkbox label.</li>
313
+ * </ul>
314
+ * @param {Array} htmlList
315
+ * List of HTML code to output to.
316
+ */
317
+ checkbox : function( dialog, elementDefinition, htmlList )
318
+ {
319
+ if ( arguments.length < 3 )
320
+ return;
321
+
322
+ var _ = initPrivateObject.call( this, elementDefinition, { 'default' : !!elementDefinition[ 'default' ] } );
323
+
324
+ if ( elementDefinition.validate )
325
+ this.validate = elementDefinition.validate;
326
+
327
+ /** @ignore */
328
+ var innerHTML = function()
329
+ {
330
+ var myDefinition = CKEDITOR.tools.extend( {}, elementDefinition,
331
+ {
332
+ id : elementDefinition.id ? elementDefinition.id + '_checkbox' : CKEDITOR.tools.getNextNumber() + '_checkbox'
333
+ }, true ),
334
+ html = [],
335
+ attributes = { 'class' : 'cke_dialog_ui_checkbox_input', type : 'checkbox' };
336
+ cleanInnerDefinition( myDefinition );
337
+ if ( elementDefinition[ 'default' ] )
338
+ attributes.checked = 'checked';
339
+ _.checkbox = new CKEDITOR.ui.dialog.uiElement( dialog, myDefinition, html, 'input', null, attributes );
340
+ html.push( ' <label for="', attributes.id, '">',
341
+ CKEDITOR.tools.htmlEncode( elementDefinition.label ),
342
+ '</label>' );
343
+ return html.join( '' );
344
+ };
345
+
346
+ CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, htmlList, 'span', null, null, innerHTML );
347
+ },
348
+
349
+ /**
350
+ * A group of radio buttons.
351
+ * @constructor
352
+ * @example
353
+ * @extends CKEDITOR.ui.dialog.labeledElement
354
+ * @param {CKEDITOR.dialog} dialog
355
+ * Parent dialog object.
356
+ * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
357
+ * The element definition. Accepted fields:
358
+ * <ul>
359
+ * <li><strong>default</strong> (Required) The default value.</li>
360
+ * <li><strong>validate</strong> (Optional) The validation function.</li>
361
+ * <li><strong>items</strong> (Required) An array of options. Each option
362
+ * is a 1- or 2-item array of format [ 'Description', 'Value' ]. If 'Value'
363
+ * is missing, then the value would be assumed to be the same as the
364
+ * description.</li>
365
+ * </ul>
366
+ * @param {Array} htmlList
367
+ * List of HTML code to output to.
368
+ */
369
+ radio : function( dialog, elementDefinition, htmlList )
370
+ {
371
+ if ( arguments.length < 3)
372
+ return;
373
+
374
+ initPrivateObject.call( this, elementDefinition );
375
+ if ( !this._['default'] )
376
+ this._['default'] = this._.initValue = elementDefinition.items[0][1];
377
+ if ( elementDefinition.validate )
378
+ this.validate = elementDefinition.valdiate;
379
+ var children = [], me = this;
380
+
381
+ /** @ignore */
382
+ var innerHTML = function()
383
+ {
384
+ var inputHtmlList = [], html = [],
385
+ commonAttributes = { 'class' : 'cke_dialog_ui_radio_item' },
386
+ commonName = elementDefinition.id ? elementDefinition.id + '_radio' : CKEDITOR.tools.getNextNumber() + '_radio';
387
+ for ( var i = 0 ; i < elementDefinition.items.length ; i++ )
388
+ {
389
+ var item = elementDefinition.items[i],
390
+ title = item[2] !== undefined ? item[2] : item[0],
391
+ value = item[1] !== undefined ? item[1] : item[0],
392
+ inputDefinition = CKEDITOR.tools.extend( {}, elementDefinition,
393
+ {
394
+ id : CKEDITOR.tools.getNextNumber() + '_radio_input',
395
+ title : null,
396
+ type : null
397
+ }, true ),
398
+ labelDefinition = CKEDITOR.tools.extend( {}, inputDefinition,
399
+ {
400
+ id : null,
401
+ title : title
402
+ }, true ),
403
+ inputAttributes =
404
+ {
405
+ type : 'radio',
406
+ 'class' : 'cke_dialog_ui_radio_input',
407
+ name : commonName,
408
+ value : value
409
+ },
410
+ inputHtml = [];
411
+ if ( me._['default'] == value )
412
+ inputAttributes.checked = 'checked';
413
+ cleanInnerDefinition( inputDefinition );
414
+ cleanInnerDefinition( labelDefinition );
415
+ children.push( new CKEDITOR.ui.dialog.uiElement( dialog, inputDefinition, inputHtml, 'input', null, inputAttributes ) );
416
+ inputHtml.push( ' ' );
417
+ new CKEDITOR.ui.dialog.uiElement( dialog, labelDefinition, inputHtml, 'label', null, { 'for' : inputAttributes.id },
418
+ item[0] );
419
+ inputHtmlList.push( inputHtml.join( '' ) );
420
+ }
421
+ new CKEDITOR.ui.dialog.hbox( dialog, [], inputHtmlList, html );
422
+ return html.join( '' );
423
+ };
424
+
425
+ CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML );
426
+ this._.children = children;
427
+ },
428
+
429
+ /**
430
+ * A button with a label inside.
431
+ * @constructor
432
+ * @example
433
+ * @extends CKEDITOR.ui.dialog.uiElement
434
+ * @param {CKEDITOR.dialog} dialog
435
+ * Parent dialog object.
436
+ * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
437
+ * The element definition. Accepted fields:
438
+ * <ul>
439
+ * <li><strong>label</strong> (Required) The button label.</li>
440
+ * <li><strong>disabled</strong> (Optional) Set to true if you want the
441
+ * button to appear in disabled state.</li>
442
+ * </ul>
443
+ * @param {Array} htmlList
444
+ * List of HTML code to output to.
445
+ */
446
+ button : function( dialog, elementDefinition, htmlList )
447
+ {
448
+ if ( !arguments.length )
449
+ return;
450
+
451
+ if ( typeof elementDefinition == 'function' )
452
+ elementDefinition = elementDefinition( dialog.getParentEditor() );
453
+
454
+ initPrivateObject.call( this, elementDefinition, { disabled : elementDefinition.disabled || false } );
455
+
456
+ // Add OnClick event to this input.
457
+ CKEDITOR.event.implementOn( this );
458
+
459
+ var me = this;
460
+
461
+ // Register an event handler for processing button clicks.
462
+ dialog.on( 'load', function( eventInfo )
463
+ {
464
+ var element = this.getElement();
465
+
466
+ (function()
467
+ {
468
+ element.on( 'click', function( evt )
469
+ {
470
+ me.fire( 'click', { dialog : me.getDialog() } );
471
+ evt.data.preventDefault();
472
+ } );
473
+ })();
474
+
475
+ element.unselectable();
476
+ }, this );
477
+
478
+ var outerDefinition = CKEDITOR.tools.extend( {}, elementDefinition );
479
+ delete outerDefinition.style;
480
+
481
+ CKEDITOR.ui.dialog.uiElement.call(
482
+ this,
483
+ dialog,
484
+ outerDefinition,
485
+ htmlList,
486
+ 'a',
487
+ null,
488
+ {
489
+ style : elementDefinition.style,
490
+ href : 'javascript:void(0)',
491
+ title : elementDefinition.label,
492
+ hidefocus : 'true',
493
+ 'class' : elementDefinition['class']
494
+ },
495
+ '<span class="cke_dialog_ui_button">' +
496
+ CKEDITOR.tools.htmlEncode( elementDefinition.label ) +
497
+ '</span>' );
498
+ },
499
+
500
+ /**
501
+ * A select box.
502
+ * @extends CKEDITOR.ui.dialog.uiElement
503
+ * @example
504
+ * @constructor
505
+ * @param {CKEDITOR.dialog} dialog
506
+ * Parent dialog object.
507
+ * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
508
+ * The element definition. Accepted fields:
509
+ * <ul>
510
+ * <li><strong>default</strong> (Required) The default value.</li>
511
+ * <li><strong>validate</strong> (Optional) The validation function.</li>
512
+ * <li><strong>items</strong> (Required) An array of options. Each option
513
+ * is a 1- or 2-item array of format [ 'Description', 'Value' ]. If 'Value'
514
+ * is missing, then the value would be assumed to be the same as the
515
+ * description.</li>
516
+ * <li><strong>multiple</strong> (Optional) Set this to true if you'd like
517
+ * to have a multiple-choice select box.</li>
518
+ * <li><strong>size</strong> (Optional) The number of items to display in
519
+ * the select box.</li>
520
+ * </ul>
521
+ * @param {Array} htmlList
522
+ * List of HTML code to output to.
523
+ */
524
+ select : function( dialog, elementDefinition, htmlList )
525
+ {
526
+ if ( arguments.length < 3 )
527
+ return;
528
+
529
+ var _ = initPrivateObject.call( this, elementDefinition );
530
+
531
+ if ( elementDefinition.validate )
532
+ this.validate = elementDefinition.validate;
533
+
534
+ /** @ignore */
535
+ var innerHTML = function()
536
+ {
537
+ var myDefinition = CKEDITOR.tools.extend( {}, elementDefinition,
538
+ {
539
+ id : elementDefinition.id ? elementDefinition.id + '_select' : CKEDITOR.tools.getNextNumber() + '_select'
540
+ }, true ),
541
+ html = [],
542
+ innerHTML = [],
543
+ attributes = { 'class' : 'cke_dialog_ui_input_select' };
544
+
545
+ // Add multiple and size attributes from element definition.
546
+ if ( elementDefinition.size != undefined )
547
+ attributes.size = elementDefinition.size;
548
+ if ( elementDefinition.multiple != undefined )
549
+ attributes.multiple = elementDefinition.multiple;
550
+
551
+ cleanInnerDefinition( myDefinition );
552
+ for ( var i = 0, item ; i < elementDefinition.items.length && ( item = elementDefinition.items[i] ) ; i++ )
553
+ {
554
+ innerHTML.push( '<option value="',
555
+ CKEDITOR.tools.htmlEncode( item[1] !== undefined ? item[1] : item[0] ), '" /> ',
556
+ CKEDITOR.tools.htmlEncode( item[0] ) );
557
+ }
558
+
559
+ _.select = new CKEDITOR.ui.dialog.uiElement( dialog, myDefinition, html, 'select', null, attributes, innerHTML.join( '' ) );
560
+ return html.join( '' );
561
+ };
562
+
563
+ CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML );
564
+ },
565
+
566
+ /**
567
+ * A file upload input.
568
+ * @extends CKEDITOR.ui.dialog.labeledElement
569
+ * @example
570
+ * @constructor
571
+ * @param {CKEDITOR.dialog} dialog
572
+ * Parent dialog object.
573
+ * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
574
+ * The element definition. Accepted fields:
575
+ * <ul>
576
+ * <li><strong>validate</strong> (Optional) The validation function.</li>
577
+ * </ul>
578
+ * @param {Array} htmlList
579
+ * List of HTML code to output to.
580
+ */
581
+ file : function( dialog, elementDefinition, htmlList )
582
+ {
583
+ if ( arguments.length < 3 )
584
+ return;
585
+
586
+ if ( elementDefinition['default'] === undefined )
587
+ elementDefinition['default'] = '';
588
+
589
+ var _ = CKEDITOR.tools.extend( initPrivateObject.call( this, elementDefinition ), { definition : elementDefinition, buttons : [] } );
590
+
591
+ if ( elementDefinition.validate )
592
+ this.validate = elementDefinition.validate;
593
+
594
+ /** @ignore */
595
+ var innerHTML = function()
596
+ {
597
+ _.frameId = CKEDITOR.tools.getNextNumber() + '_fileInput';
598
+
599
+ // Support for custom document.domain in IE.
600
+ var isCustomDomain = CKEDITOR.env.ie && document.domain != window.location.hostname;
601
+
602
+ var html = [
603
+ '<iframe' +
604
+ ' frameborder="0"' +
605
+ ' allowtransparency="0"' +
606
+ ' class="cke_dialog_ui_input_file"' +
607
+ ' id="', _.frameId, '"' +
608
+ ' title="', elementDefinition.label, '"' +
609
+ ' src="javascript:void(' ];
610
+
611
+ html.push(
612
+ isCustomDomain ?
613
+ '(function(){' +
614
+ 'document.open();' +
615
+ 'document.domain=\'' + document.domain + '\';' +
616
+ 'document.close();' +
617
+ '})()'
618
+ :
619
+ '0' );
620
+
621
+ html.push(
622
+ ')">' +
623
+ '</iframe>' );
624
+
625
+ return html.join( '' );
626
+ };
627
+
628
+ // IE BUG: Parent container does not resize to contain the iframe automatically.
629
+ dialog.on( 'load', function()
630
+ {
631
+ var iframe = CKEDITOR.document.getById( _.frameId ),
632
+ contentDiv = iframe.getParent();
633
+ contentDiv.addClass( 'cke_dialog_ui_input_file' );
634
+ } );
635
+
636
+ CKEDITOR.ui.dialog.labeledElement.call( this, dialog, elementDefinition, htmlList, innerHTML );
637
+ },
638
+
639
+ /**
640
+ * A button for submitting the file in a file upload input.
641
+ * @extends CKEDITOR.ui.dialog.button
642
+ * @example
643
+ * @constructor
644
+ * @param {CKEDITOR.dialog} dialog
645
+ * Parent dialog object.
646
+ * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition
647
+ * The element definition. Accepted fields:
648
+ * <ul>
649
+ * <li><strong>for</strong> (Required) The file input's page and element Id
650
+ * to associate to, in a 2-item array format: [ 'page_id', 'element_id' ].
651
+ * </li>
652
+ * <li><strong>validate</strong> (Optional) The validation function.</li>
653
+ * </ul>
654
+ * @param {Array} htmlList
655
+ * List of HTML code to output to.
656
+ */
657
+ fileButton : function( dialog, elementDefinition, htmlList )
658
+ {
659
+ if ( arguments.length < 3 )
660
+ return;
661
+
662
+ var _ = initPrivateObject.call( this, elementDefinition ),
663
+ me = this;
664
+
665
+ if ( elementDefinition.validate )
666
+ this.validate = elementDefinition.validate;
667
+
668
+ var myDefinition = CKEDITOR.tools.extend( {}, elementDefinition );
669
+ var onClick = myDefinition.onClick;
670
+ myDefinition.className = ( myDefinition.className ? myDefinition.className + ' ' : '' ) + 'cke_dialog_ui_button';
671
+ myDefinition.onClick = function( evt )
672
+ {
673
+ var target = elementDefinition[ 'for' ]; // [ pageId, elementId ]
674
+ if ( !onClick || onClick.call( this, evt ) !== false )
675
+ {
676
+ dialog.getContentElement( target[0], target[1] ).submit();
677
+ this.disable();
678
+ }
679
+ };
680
+
681
+ dialog.on( 'load', function()
682
+ {
683
+ dialog.getContentElement( elementDefinition[ 'for' ][0], elementDefinition[ 'for' ][1] )._.buttons.push( me );
684
+ } );
685
+
686
+ CKEDITOR.ui.dialog.button.call( this, dialog, myDefinition, htmlList );
687
+ },
688
+
689
+ html : (function()
690
+ {
691
+ var myHtmlRe = /^\s*<[\w:]+\s+([^>]*)?>/,
692
+ theirHtmlRe = /^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/,
693
+ emptyTagRe = /\/$/;
694
+ /**
695
+ * A dialog element made from raw HTML code.
696
+ * @extends CKEDITOR.ui.dialog.uiElement
697
+ * @name CKEDITOR.ui.dialog.html
698
+ * @param {CKEDITOR.dialog} dialog Parent dialog object.
699
+ * @param {CKEDITOR.dialog.uiElementDefinition} elementDefinition Element definition.
700
+ * Accepted fields:
701
+ * <ul>
702
+ * <li><strong>html</strong> (Required) HTML code of this element.</li>
703
+ * </ul>
704
+ * @param {Array} htmlList List of HTML code to be added to the dialog's content area.
705
+ * @example
706
+ * @constructor
707
+ */
708
+ return function( dialog, elementDefinition, htmlList )
709
+ {
710
+ if ( arguments.length < 3 )
711
+ return;
712
+
713
+ var myHtmlList = [],
714
+ myHtml,
715
+ theirHtml = elementDefinition.html,
716
+ myMatch, theirMatch;
717
+
718
+ // If the HTML input doesn't contain any tags at the beginning, add a <span> tag around it.
719
+ if ( theirHtml.charAt( 0 ) != '<' )
720
+ theirHtml = '<span>' + theirHtml + '</span>';
721
+
722
+ // Look for focus function in definition.
723
+ if ( elementDefinition.focus )
724
+ {
725
+ var oldFocus = this.focus;
726
+ this.focus = function()
727
+ {
728
+ oldFocus.call( this );
729
+ elementDefinition.focus.call( this );
730
+ this.fire( 'focus' );
731
+ };
732
+ if ( elementDefinition.isFocusable )
733
+ {
734
+ var oldIsFocusable = this.isFocusable;
735
+ this.isFocusable = oldIsFocusable;
736
+ }
737
+ this.keyboardFocusable = true;
738
+ }
739
+
740
+ CKEDITOR.ui.dialog.uiElement.call( this, dialog, elementDefinition, myHtmlList, 'span', null, null, '' );
741
+
742
+ // Append the attributes created by the uiElement call to the real HTML.
743
+ myHtml = myHtmlList.join( '' );
744
+ myMatch = myHtml.match( myHtmlRe );
745
+ theirMatch = theirHtml.match( theirHtmlRe ) || [ '', '', '' ];
746
+
747
+ if ( emptyTagRe.test( theirMatch[1] ) )
748
+ {
749
+ theirMatch[1] = theirMatch[1].slice( 0, -1 );
750
+ theirMatch[2] = '/' + theirMatch[2];
751
+ }
752
+
753
+ htmlList.push( [ theirMatch[1], ' ', myMatch[1] || '', theirMatch[2] ].join( '' ) );
754
+ };
755
+ })()
756
+ }, true );
757
+
758
+ CKEDITOR.ui.dialog.html.prototype = new CKEDITOR.ui.dialog.uiElement;
759
+
760
+ CKEDITOR.ui.dialog.labeledElement.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement,
761
+ /** @lends CKEDITOR.ui.dialog.labeledElement.prototype */
762
+ {
763
+ /**
764
+ * Sets the label text of the element.
765
+ * @param {String} label The new label text.
766
+ * @returns {CKEDITOR.ui.dialog.labeledElement} The current labeled element.
767
+ * @example
768
+ */
769
+ setLabel : function( label )
770
+ {
771
+ var node = CKEDITOR.document.getById( this._.labelId );
772
+ if ( node.getChildCount() < 1 )
773
+ ( new CKEDITOR.dom.text( label, CKEDITOR.document ) ).appendTo( node );
774
+ else
775
+ node.getChild( 0 ).$.nodeValue = label;
776
+ return this;
777
+ },
778
+
779
+ /**
780
+ * Retrieves the current label text of the elment.
781
+ * @returns {String} The current label text.
782
+ * @example
783
+ */
784
+ getLabel : function()
785
+ {
786
+ var node = CKEDITOR.document.getById( this._.labelId );
787
+ if ( !node || node.getChildCount() < 1 )
788
+ return '';
789
+ else
790
+ return node.getChild( 0 ).getText();
791
+ },
792
+
793
+ /**
794
+ * Defines the onChange event for UI element definitions.
795
+ * @field
796
+ * @type Object
797
+ * @example
798
+ */
799
+ eventProcessors : commonEventProcessors
800
+ }, true );
801
+
802
+ CKEDITOR.ui.dialog.button.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement,
803
+ /** @lends CKEDITOR.ui.dialog.button.prototype */
804
+ {
805
+ /**
806
+ * Simulates a click to the button.
807
+ * @example
808
+ * @returns {Object} Return value of the 'click' event.
809
+ */
810
+ click : function()
811
+ {
812
+ if ( !this._.disabled )
813
+ return this.fire( 'click', { dialog : this._.dialog } );
814
+ this.getElement().$.blur();
815
+ return false;
816
+ },
817
+
818
+ /**
819
+ * Enables the button.
820
+ * @example
821
+ */
822
+ enable : function()
823
+ {
824
+ this._.disabled = false;
825
+ var element = this.getElement();
826
+ element && element.removeClass( 'disabled' );
827
+ },
828
+
829
+ /**
830
+ * Disables the button.
831
+ * @example
832
+ */
833
+ disable : function()
834
+ {
835
+ this._.disabled = true;
836
+ this.getElement().addClass( 'disabled' );
837
+ },
838
+
839
+ isVisible : function()
840
+ {
841
+ return !!this.getElement().$.firstChild.offsetHeight;
842
+ },
843
+
844
+ isEnabled : function()
845
+ {
846
+ return !this._.disabled;
847
+ },
848
+
849
+ /**
850
+ * Defines the onChange event and onClick for button element definitions.
851
+ * @field
852
+ * @type Object
853
+ * @example
854
+ */
855
+ eventProcessors : CKEDITOR.tools.extend( {}, CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,
856
+ {
857
+ /** @ignore */
858
+ onClick : function( dialog, func )
859
+ {
860
+ this.on( 'click', func );
861
+ }
862
+ }, true ),
863
+
864
+ /**
865
+ * Handler for the element's access key up event. Simulates a click to
866
+ * the button.
867
+ * @example
868
+ */
869
+ accessKeyUp : function()
870
+ {
871
+ this.click();
872
+ },
873
+
874
+ /**
875
+ * Handler for the element's access key down event. Simulates a mouse
876
+ * down to the button.
877
+ * @example
878
+ */
879
+ accessKeyDown : function()
880
+ {
881
+ this.focus();
882
+ },
883
+
884
+ keyboardFocusable : true
885
+ }, true );
886
+
887
+ CKEDITOR.ui.dialog.textInput.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.labeledElement,
888
+ /** @lends CKEDITOR.ui.dialog.textInput.prototype */
889
+ {
890
+ /**
891
+ * Gets the text input DOM element under this UI object.
892
+ * @example
893
+ * @returns {CKEDITOR.dom.element} The DOM element of the text input.
894
+ */
895
+ getInputElement : function()
896
+ {
897
+ return CKEDITOR.document.getById( this._.inputId );
898
+ },
899
+
900
+ /**
901
+ * Puts focus into the text input.
902
+ * @example
903
+ */
904
+ focus : function()
905
+ {
906
+ var me = this.selectParentTab();
907
+
908
+ // GECKO BUG: setTimeout() is needed to workaround invisible selections.
909
+ setTimeout( function()
910
+ {
911
+ var element = me.getInputElement();
912
+ element && element.$.focus();
913
+ }, 0 );
914
+ },
915
+
916
+ /**
917
+ * Selects all the text in the text input.
918
+ * @example
919
+ */
920
+ select : function()
921
+ {
922
+ var me = this.selectParentTab();
923
+
924
+ // GECKO BUG: setTimeout() is needed to workaround invisible selections.
925
+ setTimeout( function()
926
+ {
927
+ var e = me.getInputElement();
928
+ if ( e )
929
+ {
930
+ e.$.focus();
931
+ e.$.select();
932
+ }
933
+ }, 0 );
934
+ },
935
+
936
+ /**
937
+ * Handler for the text input's access key up event. Makes a select()
938
+ * call to the text input.
939
+ * @example
940
+ */
941
+ accessKeyUp : function()
942
+ {
943
+ this.select();
944
+ },
945
+
946
+ /**
947
+ * Sets the value of this text input object.
948
+ * @param {Object} value The new value.
949
+ * @returns {CKEDITOR.ui.dialog.textInput} The current UI element.
950
+ * @example
951
+ * uiElement.setValue( 'Blamo' );
952
+ */
953
+ setValue : function( value )
954
+ {
955
+ value = value || '';
956
+ return CKEDITOR.ui.dialog.uiElement.prototype.setValue.call( this, value );
957
+ },
958
+
959
+ keyboardFocusable : true
960
+ }, commonPrototype, true );
961
+
962
+ CKEDITOR.ui.dialog.textarea.prototype = new CKEDITOR.ui.dialog.textInput();
963
+
964
+ CKEDITOR.ui.dialog.select.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.labeledElement,
965
+ /** @lends CKEDITOR.ui.dialog.select.prototype */
966
+ {
967
+ /**
968
+ * Gets the DOM element of the select box.
969
+ * @returns {CKEDITOR.dom.element} The &lt;select&gt; element of this UI
970
+ * element.
971
+ * @example
972
+ */
973
+ getInputElement : function()
974
+ {
975
+ return this._.select.getElement();
976
+ },
977
+
978
+ /**
979
+ * Adds an option to the select box.
980
+ * @param {String} label Option label.
981
+ * @param {String} value (Optional) Option value, if not defined it'll be
982
+ * assumed to be the same as the label.
983
+ * @param {Number} index (Optional) Position of the option to be inserted
984
+ * to. If not defined the new option will be inserted to the end of list.
985
+ * @example
986
+ * @returns {CKEDITOR.ui.dialog.select} The current select UI element.
987
+ */
988
+ add : function( label, value, index )
989
+ {
990
+ var option = new CKEDITOR.dom.element( 'option', this.getDialog().getParentEditor().document ),
991
+ selectElement = this.getInputElement().$;
992
+ option.$.text = label;
993
+ option.$.value = ( value === undefined || value === null ) ? label : value;
994
+ if ( index === undefined || index === null )
995
+ {
996
+ if ( CKEDITOR.env.ie )
997
+ selectElement.add( option.$ );
998
+ else
999
+ selectElement.add( option.$, null );
1000
+ }
1001
+ else
1002
+ selectElement.add( option.$, index );
1003
+ return this;
1004
+ },
1005
+
1006
+ /**
1007
+ * Removes an option from the selection list.
1008
+ * @param {Number} index Index of the option to be removed.
1009
+ * @example
1010
+ * @returns {CKEDITOR.ui.dialog.select} The current select UI element.
1011
+ */
1012
+ remove : function( index )
1013
+ {
1014
+ var selectElement = this.getInputElement().$;
1015
+ selectElement.remove( index );
1016
+ return this;
1017
+ },
1018
+
1019
+ /**
1020
+ * Clears all options out of the selection list.
1021
+ * @returns {CKEDITOR.ui.dialog.select} The current select UI element.
1022
+ */
1023
+ clear : function()
1024
+ {
1025
+ var selectElement = this.getInputElement().$;
1026
+ while ( selectElement.length > 0 )
1027
+ selectElement.remove( 0 );
1028
+ return this;
1029
+ },
1030
+
1031
+ keyboardFocusable : true
1032
+ }, commonPrototype, true );
1033
+
1034
+ CKEDITOR.ui.dialog.checkbox.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement,
1035
+ /** @lends CKEDITOR.ui.dialog.checkbox.prototype */
1036
+ {
1037
+ /**
1038
+ * Gets the checkbox DOM element.
1039
+ * @example
1040
+ * @returns {CKEDITOR.dom.element} The DOM element of the checkbox.
1041
+ */
1042
+ getInputElement : function()
1043
+ {
1044
+ return this._.checkbox.getElement();
1045
+ },
1046
+
1047
+ /**
1048
+ * Sets the state of the checkbox.
1049
+ * @example
1050
+ * @param {Boolean} true to tick the checkbox, false to untick it.
1051
+ */
1052
+ setValue : function( checked )
1053
+ {
1054
+ this.getInputElement().$.checked = checked;
1055
+ this.fire( 'change', { value : checked } );
1056
+ },
1057
+
1058
+ /**
1059
+ * Gets the state of the checkbox.
1060
+ * @example
1061
+ * @returns {Boolean} true means the checkbox is ticked, false means it's not ticked.
1062
+ */
1063
+ getValue : function()
1064
+ {
1065
+ return this.getInputElement().$.checked;
1066
+ },
1067
+
1068
+ /**
1069
+ * Handler for the access key up event. Toggles the checkbox.
1070
+ * @example
1071
+ */
1072
+ accessKeyUp : function()
1073
+ {
1074
+ this.setValue( !this.getValue() );
1075
+ },
1076
+
1077
+ /**
1078
+ * Defines the onChange event for UI element definitions.
1079
+ * @field
1080
+ * @type Object
1081
+ * @example
1082
+ */
1083
+ eventProcessors :
1084
+ {
1085
+ onChange : function( dialog, func )
1086
+ {
1087
+ if ( !CKEDITOR.env.ie )
1088
+ return commonEventProcessors.onChange.apply( this, arguments );
1089
+ else
1090
+ {
1091
+ dialog.on( 'load', function()
1092
+ {
1093
+ var element = this._.checkbox.getElement();
1094
+ element.on( 'propertychange', function( evt )
1095
+ {
1096
+ evt = evt.data.$;
1097
+ if ( evt.propertyName == 'checked' )
1098
+ this.fire( 'change', { value : element.$.checked } );
1099
+ }, this );
1100
+ }, this );
1101
+ this.on( 'change', func );
1102
+ }
1103
+ return null;
1104
+ }
1105
+ },
1106
+
1107
+ keyboardFocusable : true
1108
+ }, commonPrototype, true );
1109
+
1110
+ CKEDITOR.ui.dialog.radio.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.uiElement,
1111
+ /** @lends CKEDITOR.ui.dialog.radio.prototype */
1112
+ {
1113
+ /**
1114
+ * Checks one of the radio buttons in this button group.
1115
+ * @example
1116
+ * @param {String} value The value of the button to be chcked.
1117
+ */
1118
+ setValue : function( value )
1119
+ {
1120
+ var children = this._.children,
1121
+ item;
1122
+ for ( var i = 0 ; ( i < children.length ) && ( item = children[i] ) ; i++ )
1123
+ item.getElement().$.checked = ( item.getValue() == value );
1124
+ this.fire( 'change', { value : value } );
1125
+ },
1126
+
1127
+ /**
1128
+ * Gets the value of the currently checked radio button.
1129
+ * @example
1130
+ * @returns {String} The currently checked button's value.
1131
+ */
1132
+ getValue : function()
1133
+ {
1134
+ var children = this._.children;
1135
+ for ( var i = 0 ; i < children.length ; i++ )
1136
+ {
1137
+ if ( children[i].getElement().$.checked )
1138
+ return children[i].getValue();
1139
+ }
1140
+ return null;
1141
+ },
1142
+
1143
+ /**
1144
+ * Handler for the access key up event. Focuses the currently
1145
+ * selected radio button, or the first radio button if none is
1146
+ * selected.
1147
+ * @example
1148
+ */
1149
+ accessKeyUp : function()
1150
+ {
1151
+ var children = this._.children, i;
1152
+ for ( i = 0 ; i < children.length ; i++ )
1153
+ {
1154
+ if ( children[i].getElement().$.checked )
1155
+ {
1156
+ children[i].getElement().focus();
1157
+ return;
1158
+ }
1159
+ }
1160
+ children[0].getElement().focus();
1161
+ },
1162
+
1163
+ /**
1164
+ * Defines the onChange event for UI element definitions.
1165
+ * @field
1166
+ * @type Object
1167
+ * @example
1168
+ */
1169
+ eventProcessors :
1170
+ {
1171
+ onChange : function( dialog, func )
1172
+ {
1173
+ if ( !CKEDITOR.env.ie )
1174
+ return commonEventProcessors.onChange.apply( this, arguments );
1175
+ else
1176
+ {
1177
+ dialog.on( 'load', function()
1178
+ {
1179
+ var children = this._.children, me = this;
1180
+ for ( var i = 0 ; i < children.length ; i++ )
1181
+ {
1182
+ var element = children[i].getElement();
1183
+ element.on( 'propertychange', function( evt )
1184
+ {
1185
+ evt = evt.data.$;
1186
+ if ( evt.propertyName == 'checked' && this.$.checked )
1187
+ me.fire( 'change', { value : this.getAttribute( 'value' ) } );
1188
+ } );
1189
+ }
1190
+ }, this );
1191
+ this.on( 'change', func );
1192
+ }
1193
+ return null;
1194
+ }
1195
+ },
1196
+
1197
+ keyboardFocusable : true
1198
+ }, commonPrototype, true );
1199
+
1200
+ CKEDITOR.ui.dialog.file.prototype = CKEDITOR.tools.extend( new CKEDITOR.ui.dialog.labeledElement,
1201
+ commonPrototype,
1202
+ /** @lends CKEDITOR.ui.dialog.file.prototype */
1203
+ {
1204
+ /**
1205
+ * Gets the &lt;input&gt; element of this file input.
1206
+ * @returns {CKEDITOR.dom.element} The file input element.
1207
+ * @example
1208
+ */
1209
+ getInputElement : function()
1210
+ {
1211
+ var frameDocument = CKEDITOR.document.getById( this._.frameId ).getFrameDocument();
1212
+ return frameDocument.$.forms.length > 0 ?
1213
+ new CKEDITOR.dom.element( frameDocument.$.forms[0].elements[0] ) :
1214
+ this.getElement();
1215
+ },
1216
+
1217
+ /**
1218
+ * Uploads the file in the file input.
1219
+ * @returns {CKEDITOR.ui.dialog.file} This object.
1220
+ * @example
1221
+ */
1222
+ submit : function()
1223
+ {
1224
+ this.getInputElement().getParent().$.submit();
1225
+ return this;
1226
+ },
1227
+
1228
+ /**
1229
+ * Get the action assigned to the form.
1230
+ * @returns {String} The value of the action.
1231
+ * @example
1232
+ */
1233
+ getAction : function( action )
1234
+ {
1235
+ return this.getInputElement().getParent().$.action;
1236
+ },
1237
+
1238
+ /**
1239
+ * Redraws the file input and resets the file path in the file input.
1240
+ * The redraw logic is necessary because non-IE browsers tend to clear
1241
+ * the &lt;iframe&gt; containing the file input after closing the dialog.
1242
+ * @example
1243
+ */
1244
+ reset : function()
1245
+ {
1246
+ var frameElement = CKEDITOR.document.getById( this._.frameId ),
1247
+ frameDocument = frameElement.getFrameDocument(),
1248
+ elementDefinition = this._.definition,
1249
+ buttons = this._.buttons;
1250
+
1251
+ function generateFormField()
1252
+ {
1253
+ frameDocument.$.open();
1254
+
1255
+ // Support for custom document.domain in IE.
1256
+ if ( CKEDITOR.env.isCustomDomain() )
1257
+ frameDocument.$.domain = document.domain;
1258
+
1259
+ var size = '';
1260
+ if ( elementDefinition.size )
1261
+ size = elementDefinition.size - ( CKEDITOR.env.ie ? 7 : 0 ); // "Browse" button is bigger in IE.
1262
+
1263
+ frameDocument.$.write( [ '<html><head><title></title></head><body style="margin: 0; overflow: hidden; background: transparent;">',
1264
+ '<form enctype="multipart/form-data" method="POST" action="',
1265
+ CKEDITOR.tools.htmlEncode( elementDefinition.action ),
1266
+ '">',
1267
+ '<input type="file" name="',
1268
+ CKEDITOR.tools.htmlEncode( elementDefinition.id || 'cke_upload' ),
1269
+ '" size="',
1270
+ CKEDITOR.tools.htmlEncode( size > 0 ? size : "" ),
1271
+ '" />',
1272
+ '</form>',
1273
+ '</body></html>' ].join( '' ) );
1274
+
1275
+ frameDocument.$.close();
1276
+
1277
+ for ( var i = 0 ; i < buttons.length ; i++ )
1278
+ buttons[i].enable();
1279
+ }
1280
+
1281
+ // #3465: Wait for the browser to finish rendering the dialog first.
1282
+ if ( CKEDITOR.env.gecko )
1283
+ setTimeout( generateFormField, 500 );
1284
+ else
1285
+ generateFormField();
1286
+ },
1287
+
1288
+ getValue : function()
1289
+ {
1290
+ // The file path returned from the input tag is incomplete anyway, so it's
1291
+ // safe to ignore it and prevent the confirmation dialog from appearing.
1292
+ // (Part of #3465)
1293
+ return '';
1294
+ },
1295
+
1296
+ /**
1297
+ * Defines the onChange event for UI element definitions.
1298
+ * @field
1299
+ * @type Object
1300
+ * @example
1301
+ */
1302
+ eventProcessors : commonEventProcessors,
1303
+
1304
+ keyboardFocusable : true
1305
+ }, true );
1306
+
1307
+ CKEDITOR.ui.dialog.fileButton.prototype = new CKEDITOR.ui.dialog.button;
1308
+
1309
+ CKEDITOR.dialog.addUIElement( 'text', textBuilder );
1310
+ CKEDITOR.dialog.addUIElement( 'password', textBuilder );
1311
+ CKEDITOR.dialog.addUIElement( 'textarea', commonBuilder );
1312
+ CKEDITOR.dialog.addUIElement( 'checkbox', commonBuilder );
1313
+ CKEDITOR.dialog.addUIElement( 'radio', commonBuilder );
1314
+ CKEDITOR.dialog.addUIElement( 'button', commonBuilder );
1315
+ CKEDITOR.dialog.addUIElement( 'select', commonBuilder );
1316
+ CKEDITOR.dialog.addUIElement( 'file', commonBuilder );
1317
+ CKEDITOR.dialog.addUIElement( 'fileButton', commonBuilder );
1318
+ CKEDITOR.dialog.addUIElement( 'html', commonBuilder );
1319
+ })();