browsercms 3.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (444) hide show
  1. data/app/controllers/cms/connectors_controller.rb +1 -1
  2. data/app/helpers/cms/application_helper.rb +2 -19
  3. data/app/helpers/cms/form_builder.rb +8 -5
  4. data/app/helpers/cms/menu_helper.rb +19 -5
  5. data/app/helpers/cms/page_helper.rb +9 -1
  6. data/app/helpers/cms/template_support.rb +21 -0
  7. data/app/models/abstract_file_block.rb +4 -0
  8. data/app/models/connector.rb +7 -3
  9. data/app/models/dynamic_view.rb +2 -4
  10. data/app/models/portlet.rb +22 -9
  11. data/app/models/section.rb +7 -5
  12. data/app/views/cms/blocks/_toolbar_for_member.html.erb +4 -4
  13. data/app/views/cms/blocks/index.html.erb +1 -1
  14. data/app/views/cms/blocks/usages.html.erb +44 -34
  15. data/app/views/cms/connectors/new.html.erb +2 -2
  16. data/app/views/cms/dynamic_views/_form.html.erb +1 -1
  17. data/app/views/cms/dynamic_views/index.html.erb +7 -3
  18. data/app/views/cms/email_messages/index.html.erb +3 -5
  19. data/app/views/cms/form_builder/_cms_datetime_select.html.erb +12 -0
  20. data/app/views/cms/form_builder/_cms_text_editor.html.erb +2 -2
  21. data/app/views/cms/form_builder/_cms_text_field.html.erb +1 -2
  22. data/app/views/cms/groups/_permissions.html.erb +1 -0
  23. data/app/views/cms/groups/_sections.html.erb +1 -0
  24. data/app/views/cms/groups/index.html.erb +3 -5
  25. data/app/views/cms/page_routes/index.html.erb +13 -7
  26. data/app/views/cms/page_routes/show.html.erb +4 -4
  27. data/app/views/cms/pages/_edit_connector.html.erb +4 -1
  28. data/app/views/cms/pages/_edit_container.html.erb +4 -1
  29. data/app/views/cms/redirects/index.html.erb +12 -7
  30. data/app/views/cms/routes/index.html.erb +11 -7
  31. data/app/views/cms/sections/_form.html.erb +4 -5
  32. data/app/views/cms/users/_groups.html.erb +1 -0
  33. data/app/views/layouts/_cms_toolbar.html.erb +37 -4
  34. data/app/views/layouts/_page_toolbar.html.erb +2 -2
  35. data/browsercms.gemspec +381 -3
  36. data/db/demo/data.rb +2 -1
  37. data/doc/app/classes/AbstractFileBlock.html +146 -0
  38. data/doc/app/classes/ActiveRecord.html +105 -0
  39. data/doc/app/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html +242 -0
  40. data/doc/app/classes/ActiveSupport.html +111 -0
  41. data/doc/app/classes/ActiveSupport/Cache.html +111 -0
  42. data/doc/app/classes/ActiveSupport/Cache/FileStore.html +146 -0
  43. data/doc/app/classes/ActsAsList.html +147 -0
  44. data/doc/app/classes/ActsAsList/ClassMethods.html +202 -0
  45. data/doc/app/classes/ActsAsList/InstanceMethods.html +510 -0
  46. data/doc/app/classes/ApplicationController.html +119 -0
  47. data/doc/app/classes/ApplicationHelper.html +112 -0
  48. data/doc/app/classes/Attachment.html +726 -0
  49. data/doc/app/classes/Category.html +230 -0
  50. data/doc/app/classes/CategoryType.html +214 -0
  51. data/doc/app/classes/Cms.html +638 -0
  52. data/doc/app/classes/Cms/Acts.html +111 -0
  53. data/doc/app/classes/Cms/Acts/ContentBlock.html +146 -0
  54. data/doc/app/classes/Cms/Acts/ContentBlock/MacroMethods.html +165 -0
  55. data/doc/app/classes/Cms/Acts/ContentBlock/MacroMethods/InstanceMethods.html +140 -0
  56. data/doc/app/classes/Cms/ApplicationController.html +418 -0
  57. data/doc/app/classes/Cms/ApplicationHelper.html +814 -0
  58. data/doc/app/classes/Cms/AttachmentsController.html +154 -0
  59. data/doc/app/classes/Cms/Authentication.html +116 -0
  60. data/doc/app/classes/Cms/Authentication/Controller.html +702 -0
  61. data/doc/app/classes/Cms/Authentication/Model.html +165 -0
  62. data/doc/app/classes/Cms/Authentication/Model/ClassMethods.html +246 -0
  63. data/doc/app/classes/Cms/Authentication/Model/InstanceMethods.html +412 -0
  64. data/doc/app/classes/Cms/BaseController.html +113 -0
  65. data/doc/app/classes/Cms/Behaviors.html +235 -0
  66. data/doc/app/classes/Cms/Behaviors/Archiving.html +147 -0
  67. data/doc/app/classes/Cms/Behaviors/Archiving/InstanceMethods.html +220 -0
  68. data/doc/app/classes/Cms/Behaviors/Archiving/MacroMethods.html +175 -0
  69. data/doc/app/classes/Cms/Behaviors/Attaching.html +160 -0
  70. data/doc/app/classes/Cms/Behaviors/Attaching/InstanceMethods.html +670 -0
  71. data/doc/app/classes/Cms/Behaviors/Attaching/MacroMethods.html +188 -0
  72. data/doc/app/classes/Cms/Behaviors/Categorizing.html +148 -0
  73. data/doc/app/classes/Cms/Behaviors/Categorizing/ClassMethods.html +105 -0
  74. data/doc/app/classes/Cms/Behaviors/Categorizing/InstanceMethods.html +140 -0
  75. data/doc/app/classes/Cms/Behaviors/Categorizing/MacroMethods.html +178 -0
  76. data/doc/app/classes/Cms/Behaviors/ClassMethods.html +272 -0
  77. data/doc/app/classes/Cms/Behaviors/Connecting.html +148 -0
  78. data/doc/app/classes/Cms/Behaviors/Connecting/ClassMethods.html +188 -0
  79. data/doc/app/classes/Cms/Behaviors/Connecting/InstanceMethods.html +312 -0
  80. data/doc/app/classes/Cms/Behaviors/Connecting/MacroMethods.html +184 -0
  81. data/doc/app/classes/Cms/Behaviors/DynamicAttributes.html +285 -0
  82. data/doc/app/classes/Cms/Behaviors/DynamicAttributes/InstanceMethods.html +181 -0
  83. data/doc/app/classes/Cms/Behaviors/DynamicAttributes/MacroMethods.html +243 -0
  84. data/doc/app/classes/Cms/Behaviors/FlushCacheOnChange.html +178 -0
  85. data/doc/app/classes/Cms/Behaviors/FlushCacheOnChange/InstanceMethods.html +142 -0
  86. data/doc/app/classes/Cms/Behaviors/FlushCacheOnChange/MacroMethods.html +175 -0
  87. data/doc/app/classes/Cms/Behaviors/Hiding.html +148 -0
  88. data/doc/app/classes/Cms/Behaviors/Hiding/ClassMethods.html +105 -0
  89. data/doc/app/classes/Cms/Behaviors/Hiding/InstanceMethods.html +220 -0
  90. data/doc/app/classes/Cms/Behaviors/Hiding/MacroMethods.html +176 -0
  91. data/doc/app/classes/Cms/Behaviors/InstanceMethods.html +234 -0
  92. data/doc/app/classes/Cms/Behaviors/Pagination.html +151 -0
  93. data/doc/app/classes/Cms/Behaviors/Pagination/ClassMethods.html +252 -0
  94. data/doc/app/classes/Cms/Behaviors/Pagination/Collection.html +437 -0
  95. data/doc/app/classes/Cms/Behaviors/Pagination/InvalidPage.html +146 -0
  96. data/doc/app/classes/Cms/Behaviors/Publishing.html +179 -0
  97. data/doc/app/classes/Cms/Behaviors/Publishing/ClassMethods.html +105 -0
  98. data/doc/app/classes/Cms/Behaviors/Publishing/InstanceMethods.html +333 -0
  99. data/doc/app/classes/Cms/Behaviors/Publishing/MacroMethods.html +180 -0
  100. data/doc/app/classes/Cms/Behaviors/Rendering.html +179 -0
  101. data/doc/app/classes/Cms/Behaviors/Rendering/MacroMethods.html +186 -0
  102. data/doc/app/classes/Cms/Behaviors/Searching.html +147 -0
  103. data/doc/app/classes/Cms/Behaviors/Searching/ClassMethods.html +164 -0
  104. data/doc/app/classes/Cms/Behaviors/Searching/MacroMethods.html +188 -0
  105. data/doc/app/classes/Cms/Behaviors/SoftDeleting.html +148 -0
  106. data/doc/app/classes/Cms/Behaviors/SoftDeleting/ClassMethods.html +217 -0
  107. data/doc/app/classes/Cms/Behaviors/SoftDeleting/InstanceMethods.html +247 -0
  108. data/doc/app/classes/Cms/Behaviors/SoftDeleting/MacroMethods.html +205 -0
  109. data/doc/app/classes/Cms/Behaviors/Taggable.html +148 -0
  110. data/doc/app/classes/Cms/Behaviors/Taggable/ClassMethods.html +164 -0
  111. data/doc/app/classes/Cms/Behaviors/Taggable/InstanceMethods.html +197 -0
  112. data/doc/app/classes/Cms/Behaviors/Taggable/MacroMethods.html +182 -0
  113. data/doc/app/classes/Cms/Behaviors/Userstamping.html +148 -0
  114. data/doc/app/classes/Cms/Behaviors/Userstamping/ClassMethods.html +105 -0
  115. data/doc/app/classes/Cms/Behaviors/Userstamping/InstanceMethods.html +143 -0
  116. data/doc/app/classes/Cms/Behaviors/Userstamping/MacroMethods.html +181 -0
  117. data/doc/app/classes/Cms/Behaviors/Versioning.html +148 -0
  118. data/doc/app/classes/Cms/Behaviors/Versioning/ClassMethods.html +237 -0
  119. data/doc/app/classes/Cms/Behaviors/Versioning/InstanceMethods.html +685 -0
  120. data/doc/app/classes/Cms/Behaviors/Versioning/MacroMethods.html +290 -0
  121. data/doc/app/classes/Cms/CacheController.html +174 -0
  122. data/doc/app/classes/Cms/Caching.html +171 -0
  123. data/doc/app/classes/Cms/CategoriesController.html +113 -0
  124. data/doc/app/classes/Cms/CategoryTypesController.html +148 -0
  125. data/doc/app/classes/Cms/ConnectorsController.html +215 -0
  126. data/doc/app/classes/Cms/ContentBlockController.html +1175 -0
  127. data/doc/app/classes/Cms/ContentController.html +313 -0
  128. data/doc/app/classes/Cms/ContentTypesController.html +148 -0
  129. data/doc/app/classes/Cms/DashboardController.html +151 -0
  130. data/doc/app/classes/Cms/DataLoader.html +182 -0
  131. data/doc/app/classes/Cms/DynamicViewsController.html +359 -0
  132. data/doc/app/classes/Cms/EmailMessagesController.html +172 -0
  133. data/doc/app/classes/Cms/ErrorHandling.html +172 -0
  134. data/doc/app/classes/Cms/Errors.html +111 -0
  135. data/doc/app/classes/Cms/Errors/AccessDenied.html +146 -0
  136. data/doc/app/classes/Cms/Extensions.html +140 -0
  137. data/doc/app/classes/Cms/Extensions/ActionView.html +111 -0
  138. data/doc/app/classes/Cms/Extensions/ActionView/Base.html +141 -0
  139. data/doc/app/classes/Cms/Extensions/ActiveRecord.html +116 -0
  140. data/doc/app/classes/Cms/Extensions/ActiveRecord/Base.html +144 -0
  141. data/doc/app/classes/Cms/Extensions/ActiveRecord/Errors.html +140 -0
  142. data/doc/app/classes/Cms/Extensions/Hash.html +175 -0
  143. data/doc/app/classes/Cms/Extensions/Integer.html +146 -0
  144. data/doc/app/classes/Cms/Extensions/NilClass.html +212 -0
  145. data/doc/app/classes/Cms/Extensions/String.html +212 -0
  146. data/doc/app/classes/Cms/FileBlocksController.html +113 -0
  147. data/doc/app/classes/Cms/FormBuilder.html +312 -0
  148. data/doc/app/classes/Cms/FormTagHelper.html +245 -0
  149. data/doc/app/classes/Cms/GroupsController.html +225 -0
  150. data/doc/app/classes/Cms/HomeController.html +148 -0
  151. data/doc/app/classes/Cms/HtmlBlocksController.html +113 -0
  152. data/doc/app/classes/Cms/ImageBlocksController.html +113 -0
  153. data/doc/app/classes/Cms/LinksController.html +341 -0
  154. data/doc/app/classes/Cms/MenuHelper.html +330 -0
  155. data/doc/app/classes/Cms/PageHelper.html +292 -0
  156. data/doc/app/classes/Cms/PageRouteConditionsController.html +113 -0
  157. data/doc/app/classes/Cms/PageRouteOptionsController.html +355 -0
  158. data/doc/app/classes/Cms/PageRouteRequirementsController.html +113 -0
  159. data/doc/app/classes/Cms/PageRoutesController.html +284 -0
  160. data/doc/app/classes/Cms/PagesController.html +331 -0
  161. data/doc/app/classes/Cms/PathHelper.html +268 -0
  162. data/doc/app/classes/Cms/PortletController.html +150 -0
  163. data/doc/app/classes/Cms/PortletsController.html +301 -0
  164. data/doc/app/classes/Cms/RedirectsController.html +172 -0
  165. data/doc/app/classes/Cms/ResourceController.html +616 -0
  166. data/doc/app/classes/Cms/Routes.html +303 -0
  167. data/doc/app/classes/Cms/RoutesController.html +164 -0
  168. data/doc/app/classes/Cms/SectionNodesController.html +272 -0
  169. data/doc/app/classes/Cms/SectionNodesHelper.html +145 -0
  170. data/doc/app/classes/Cms/SectionsController.html +542 -0
  171. data/doc/app/classes/Cms/SessionsController.html +270 -0
  172. data/doc/app/classes/Cms/TagsController.html +152 -0
  173. data/doc/app/classes/Cms/TasksController.html +221 -0
  174. data/doc/app/classes/Cms/ToolbarController.html +153 -0
  175. data/doc/app/classes/Cms/UsersController.html +405 -0
  176. data/doc/app/classes/Connector.html +350 -0
  177. data/doc/app/classes/ContentType.html +448 -0
  178. data/doc/app/classes/ContentTypeGroup.html +111 -0
  179. data/doc/app/classes/DynamicPortlet.html +148 -0
  180. data/doc/app/classes/DynamicView.html +411 -0
  181. data/doc/app/classes/EmailMessage.html +228 -0
  182. data/doc/app/classes/EmailMessageMailer.html +150 -0
  183. data/doc/app/classes/EmailPagePortlet.html +184 -0
  184. data/doc/app/classes/FileBlock.html +202 -0
  185. data/doc/app/classes/Group.html +170 -0
  186. data/doc/app/classes/GroupPermission.html +111 -0
  187. data/doc/app/classes/GroupSection.html +111 -0
  188. data/doc/app/classes/GroupType.html +111 -0
  189. data/doc/app/classes/GroupTypePermission.html +111 -0
  190. data/doc/app/classes/GuestUser.html +347 -0
  191. data/doc/app/classes/HtmlBlock.html +170 -0
  192. data/doc/app/classes/ImageBlock.html +202 -0
  193. data/doc/app/classes/InitialData.html +171 -0
  194. data/doc/app/classes/Link.html +249 -0
  195. data/doc/app/classes/LoginPortlet.html +151 -0
  196. data/doc/app/classes/Page.html +954 -0
  197. data/doc/app/classes/PagePartial.html +201 -0
  198. data/doc/app/classes/PageRoute.html +335 -0
  199. data/doc/app/classes/PageRouteCondition.html +113 -0
  200. data/doc/app/classes/PageRouteOption.html +111 -0
  201. data/doc/app/classes/PageRouteRequirement.html +113 -0
  202. data/doc/app/classes/PageTemplate.html +278 -0
  203. data/doc/app/classes/Permission.html +111 -0
  204. data/doc/app/classes/Portlet.html +738 -0
  205. data/doc/app/classes/Redirect.html +111 -0
  206. data/doc/app/classes/Section.html +580 -0
  207. data/doc/app/classes/SectionNode.html +410 -0
  208. data/doc/app/classes/Sequence.html +146 -0
  209. data/doc/app/classes/Site.html +253 -0
  210. data/doc/app/classes/Tag.html +292 -0
  211. data/doc/app/classes/TagCloudPortlet.html +176 -0
  212. data/doc/app/classes/Tagging.html +146 -0
  213. data/doc/app/classes/Task.html +288 -0
  214. data/doc/app/classes/User.html +618 -0
  215. data/doc/app/classes/UserGroupMembership.html +111 -0
  216. data/doc/app/created.rid +1 -0
  217. data/doc/app/files/app/controllers/application_controller_rb.html +109 -0
  218. data/doc/app/files/app/controllers/cms/application_controller_rb.html +101 -0
  219. data/doc/app/files/app/controllers/cms/attachments_controller_rb.html +101 -0
  220. data/doc/app/files/app/controllers/cms/base_controller_rb.html +101 -0
  221. data/doc/app/files/app/controllers/cms/cache_controller_rb.html +101 -0
  222. data/doc/app/files/app/controllers/cms/categories_controller_rb.html +101 -0
  223. data/doc/app/files/app/controllers/cms/category_types_controller_rb.html +101 -0
  224. data/doc/app/files/app/controllers/cms/connectors_controller_rb.html +101 -0
  225. data/doc/app/files/app/controllers/cms/content_block_controller_rb.html +107 -0
  226. data/doc/app/files/app/controllers/cms/content_controller_rb.html +101 -0
  227. data/doc/app/files/app/controllers/cms/content_types_controller_rb.html +101 -0
  228. data/doc/app/files/app/controllers/cms/dashboard_controller_rb.html +101 -0
  229. data/doc/app/files/app/controllers/cms/dynamic_views_controller_rb.html +101 -0
  230. data/doc/app/files/app/controllers/cms/email_messages_controller_rb.html +101 -0
  231. data/doc/app/files/app/controllers/cms/error_handling_rb.html +101 -0
  232. data/doc/app/files/app/controllers/cms/file_blocks_controller_rb.html +101 -0
  233. data/doc/app/files/app/controllers/cms/groups_controller_rb.html +101 -0
  234. data/doc/app/files/app/controllers/cms/home_controller_rb.html +101 -0
  235. data/doc/app/files/app/controllers/cms/html_blocks_controller_rb.html +101 -0
  236. data/doc/app/files/app/controllers/cms/image_blocks_controller_rb.html +101 -0
  237. data/doc/app/files/app/controllers/cms/links_controller_rb.html +101 -0
  238. data/doc/app/files/app/controllers/cms/page_route_conditions_controller_rb.html +101 -0
  239. data/doc/app/files/app/controllers/cms/page_route_options_controller_rb.html +101 -0
  240. data/doc/app/files/app/controllers/cms/page_route_requirements_controller_rb.html +101 -0
  241. data/doc/app/files/app/controllers/cms/page_routes_controller_rb.html +101 -0
  242. data/doc/app/files/app/controllers/cms/pages_controller_rb.html +101 -0
  243. data/doc/app/files/app/controllers/cms/portlet_controller_rb.html +101 -0
  244. data/doc/app/files/app/controllers/cms/portlets_controller_rb.html +101 -0
  245. data/doc/app/files/app/controllers/cms/redirects_controller_rb.html +101 -0
  246. data/doc/app/files/app/controllers/cms/resource_controller_rb.html +108 -0
  247. data/doc/app/files/app/controllers/cms/routes_controller_rb.html +101 -0
  248. data/doc/app/files/app/controllers/cms/section_nodes_controller_rb.html +101 -0
  249. data/doc/app/files/app/controllers/cms/sections_controller_rb.html +101 -0
  250. data/doc/app/files/app/controllers/cms/sessions_controller_rb.html +107 -0
  251. data/doc/app/files/app/controllers/cms/tags_controller_rb.html +101 -0
  252. data/doc/app/files/app/controllers/cms/tasks_controller_rb.html +101 -0
  253. data/doc/app/files/app/controllers/cms/toolbar_controller_rb.html +101 -0
  254. data/doc/app/files/app/controllers/cms/users_controller_rb.html +101 -0
  255. data/doc/app/files/app/helpers/application_helper_rb.html +108 -0
  256. data/doc/app/files/app/helpers/cms/application_helper_rb.html +107 -0
  257. data/doc/app/files/app/helpers/cms/form_builder_rb.html +101 -0
  258. data/doc/app/files/app/helpers/cms/form_tag_helper_rb.html +101 -0
  259. data/doc/app/files/app/helpers/cms/menu_helper_rb.html +101 -0
  260. data/doc/app/files/app/helpers/cms/page_helper_rb.html +101 -0
  261. data/doc/app/files/app/helpers/cms/path_helper_rb.html +101 -0
  262. data/doc/app/files/app/helpers/cms/section_nodes_helper_rb.html +101 -0
  263. data/doc/app/files/app/models/abstract_file_block_rb.html +101 -0
  264. data/doc/app/files/app/models/attachment_rb.html +109 -0
  265. data/doc/app/files/app/models/category_rb.html +101 -0
  266. data/doc/app/files/app/models/category_type_rb.html +101 -0
  267. data/doc/app/files/app/models/connector_rb.html +101 -0
  268. data/doc/app/files/app/models/content_type_group_rb.html +101 -0
  269. data/doc/app/files/app/models/content_type_rb.html +101 -0
  270. data/doc/app/files/app/models/dynamic_view_rb.html +101 -0
  271. data/doc/app/files/app/models/email_message_mailer_rb.html +101 -0
  272. data/doc/app/files/app/models/email_message_rb.html +101 -0
  273. data/doc/app/files/app/models/file_block_rb.html +101 -0
  274. data/doc/app/files/app/models/group_permission_rb.html +101 -0
  275. data/doc/app/files/app/models/group_rb.html +101 -0
  276. data/doc/app/files/app/models/group_section_rb.html +101 -0
  277. data/doc/app/files/app/models/group_type_permission_rb.html +101 -0
  278. data/doc/app/files/app/models/group_type_rb.html +101 -0
  279. data/doc/app/files/app/models/guest_user_rb.html +101 -0
  280. data/doc/app/files/app/models/html_block_rb.html +101 -0
  281. data/doc/app/files/app/models/image_block_rb.html +101 -0
  282. data/doc/app/files/app/models/link_rb.html +101 -0
  283. data/doc/app/files/app/models/page_partial_rb.html +101 -0
  284. data/doc/app/files/app/models/page_rb.html +101 -0
  285. data/doc/app/files/app/models/page_route_condition_rb.html +101 -0
  286. data/doc/app/files/app/models/page_route_option_rb.html +101 -0
  287. data/doc/app/files/app/models/page_route_rb.html +101 -0
  288. data/doc/app/files/app/models/page_route_requirement_rb.html +101 -0
  289. data/doc/app/files/app/models/page_template_rb.html +101 -0
  290. data/doc/app/files/app/models/permission_rb.html +101 -0
  291. data/doc/app/files/app/models/portlet_rb.html +101 -0
  292. data/doc/app/files/app/models/redirect_rb.html +101 -0
  293. data/doc/app/files/app/models/section_node_rb.html +101 -0
  294. data/doc/app/files/app/models/section_rb.html +101 -0
  295. data/doc/app/files/app/models/site_rb.html +101 -0
  296. data/doc/app/files/app/models/tag_rb.html +101 -0
  297. data/doc/app/files/app/models/tagging_rb.html +101 -0
  298. data/doc/app/files/app/models/task_rb.html +101 -0
  299. data/doc/app/files/app/models/user_group_membership_rb.html +101 -0
  300. data/doc/app/files/app/models/user_rb.html +108 -0
  301. data/doc/app/files/app/portlets/dynamic_portlet_rb.html +101 -0
  302. data/doc/app/files/app/portlets/email_page_portlet_rb.html +101 -0
  303. data/doc/app/files/app/portlets/login_portlet_rb.html +101 -0
  304. data/doc/app/files/app/portlets/tag_cloud_portlet_rb.html +101 -0
  305. data/doc/app/files/doc/README_FOR_APP.html +127 -0
  306. data/doc/app/files/lib/acts_as_list_rb.html +101 -0
  307. data/doc/app/files/lib/browsercms_rb.html +113 -0
  308. data/doc/app/files/lib/cms/acts/content_block_rb.html +101 -0
  309. data/doc/app/files/lib/cms/authentication/controller_rb.html +101 -0
  310. data/doc/app/files/lib/cms/authentication/model_rb.html +101 -0
  311. data/doc/app/files/lib/cms/behaviors/archiving_rb.html +101 -0
  312. data/doc/app/files/lib/cms/behaviors/attaching_rb.html +101 -0
  313. data/doc/app/files/lib/cms/behaviors/categorizing_rb.html +101 -0
  314. data/doc/app/files/lib/cms/behaviors/connecting_rb.html +101 -0
  315. data/doc/app/files/lib/cms/behaviors/dynamic_attributes_rb.html +101 -0
  316. data/doc/app/files/lib/cms/behaviors/flush_cache_on_change_rb.html +101 -0
  317. data/doc/app/files/lib/cms/behaviors/hiding_rb.html +101 -0
  318. data/doc/app/files/lib/cms/behaviors/pagination_rb.html +107 -0
  319. data/doc/app/files/lib/cms/behaviors/publishing_rb.html +101 -0
  320. data/doc/app/files/lib/cms/behaviors/rendering_rb.html +101 -0
  321. data/doc/app/files/lib/cms/behaviors/searching_rb.html +101 -0
  322. data/doc/app/files/lib/cms/behaviors/soft_deleting_rb.html +101 -0
  323. data/doc/app/files/lib/cms/behaviors/taggable_rb.html +101 -0
  324. data/doc/app/files/lib/cms/behaviors/userstamping_rb.html +101 -0
  325. data/doc/app/files/lib/cms/behaviors/versioning_rb.html +101 -0
  326. data/doc/app/files/lib/cms/behaviors_rb.html +147 -0
  327. data/doc/app/files/lib/cms/caching_rb.html +101 -0
  328. data/doc/app/files/lib/cms/data_loader_rb.html +101 -0
  329. data/doc/app/files/lib/cms/extensions/action_view/base_rb.html +101 -0
  330. data/doc/app/files/lib/cms/extensions/active_record/base_rb.html +101 -0
  331. data/doc/app/files/lib/cms/extensions/active_record/connection_adapters/abstract/schema_statements_rb.html +101 -0
  332. data/doc/app/files/lib/cms/extensions/active_record/errors_rb.html +101 -0
  333. data/doc/app/files/lib/cms/extensions/active_support/cache/file_store_rb.html +101 -0
  334. data/doc/app/files/lib/cms/extensions/hash_rb.html +101 -0
  335. data/doc/app/files/lib/cms/extensions/integer_rb.html +101 -0
  336. data/doc/app/files/lib/cms/extensions/nil_rb.html +101 -0
  337. data/doc/app/files/lib/cms/extensions/string_rb.html +101 -0
  338. data/doc/app/files/lib/cms/extensions_rb.html +101 -0
  339. data/doc/app/files/lib/cms/init_rb.html +101 -0
  340. data/doc/app/files/lib/cms/routes_rb.html +101 -0
  341. data/doc/app/files/lib/initial_data_rb.html +101 -0
  342. data/doc/app/files/lib/sequence_rb.html +101 -0
  343. data/doc/app/fr_class_index.html +205 -0
  344. data/doc/app/fr_file_index.html +152 -0
  345. data/doc/app/fr_method_index.html +738 -0
  346. data/doc/app/index.html +24 -0
  347. data/doc/app/rdoc-style.css +208 -0
  348. data/doc/guides/html/build_it_yourself.html +175 -0
  349. data/doc/guides/html/deployment_guide.html +181 -0
  350. data/doc/guides/html/designer_guide.html +153 -0
  351. data/doc/guides/html/developer_guide.html +266 -0
  352. data/doc/guides/html/files/javascripts/code_highlighter.js +188 -0
  353. data/doc/guides/html/files/javascripts/guides.js +7 -0
  354. data/doc/guides/html/files/javascripts/highlighters.js +90 -0
  355. data/doc/guides/html/files/stylesheets/main.css +441 -0
  356. data/doc/guides/html/files/stylesheets/reset.css +43 -0
  357. data/doc/guides/html/files/stylesheets/style.css +13 -0
  358. data/doc/guides/html/files/stylesheets/syntax.css +31 -0
  359. data/doc/guides/html/getting_started.html +181 -0
  360. data/doc/guides/html/images/bg.png +0 -0
  361. data/doc/guides/html/images/bottom_cap.png +0 -0
  362. data/doc/guides/html/images/browsercms_logo.png +0 -0
  363. data/doc/guides/html/images/dot.png +0 -0
  364. data/doc/guides/html/images/icons/README +5 -0
  365. data/doc/guides/html/images/icons/callouts/1.png +0 -0
  366. data/doc/guides/html/images/icons/callouts/10.png +0 -0
  367. data/doc/guides/html/images/icons/callouts/11.png +0 -0
  368. data/doc/guides/html/images/icons/callouts/12.png +0 -0
  369. data/doc/guides/html/images/icons/callouts/13.png +0 -0
  370. data/doc/guides/html/images/icons/callouts/14.png +0 -0
  371. data/doc/guides/html/images/icons/callouts/15.png +0 -0
  372. data/doc/guides/html/images/icons/callouts/2.png +0 -0
  373. data/doc/guides/html/images/icons/callouts/3.png +0 -0
  374. data/doc/guides/html/images/icons/callouts/4.png +0 -0
  375. data/doc/guides/html/images/icons/callouts/5.png +0 -0
  376. data/doc/guides/html/images/icons/callouts/6.png +0 -0
  377. data/doc/guides/html/images/icons/callouts/7.png +0 -0
  378. data/doc/guides/html/images/icons/callouts/8.png +0 -0
  379. data/doc/guides/html/images/icons/callouts/9.png +0 -0
  380. data/doc/guides/html/images/icons/caution.png +0 -0
  381. data/doc/guides/html/images/icons/example.png +0 -0
  382. data/doc/guides/html/images/icons/home.png +0 -0
  383. data/doc/guides/html/images/icons/important.png +0 -0
  384. data/doc/guides/html/images/icons/next.png +0 -0
  385. data/doc/guides/html/images/icons/note.png +0 -0
  386. data/doc/guides/html/images/icons/prev.png +0 -0
  387. data/doc/guides/html/images/icons/tip.png +0 -0
  388. data/doc/guides/html/images/icons/up.png +0 -0
  389. data/doc/guides/html/images/icons/warning.png +0 -0
  390. data/doc/guides/html/images/top_cap.png +0 -0
  391. data/doc/guides/html/images/top_cap_content.png +0 -0
  392. data/doc/guides/html/index.html +168 -0
  393. data/doc/guides/html/installing_modules.html +181 -0
  394. data/doc/guides/html/user_guide.html +266 -0
  395. data/lib/cms/behaviors/attaching.rb +1 -1
  396. data/lib/cms/behaviors/rendering.rb +1 -1
  397. data/lib/cms/behaviors/taggable.rb +2 -1
  398. data/lib/cms/behaviors/versioning.rb +1 -1
  399. data/lib/cms/init.rb +4 -4
  400. data/lib/tasks/cms.rake +16 -42
  401. data/public/images/cms/buttons/button_cap_off_middle.gif +0 -0
  402. data/public/images/cms/buttons/button_left_bg.png +0 -0
  403. data/public/images/cms/buttons/button_off_middle.png +0 -0
  404. data/public/images/cms/nav_admin.gif +0 -0
  405. data/public/images/cms/nav_admin_h.gif +0 -0
  406. data/public/images/cms/nav_admin_on.gif +0 -0
  407. data/public/images/cms/nav_content_library.gif +0 -0
  408. data/public/images/cms/nav_content_library_h.gif +0 -0
  409. data/public/images/cms/nav_content_library_on.gif +0 -0
  410. data/public/images/cms/nav_dash.gif +0 -0
  411. data/public/images/cms/nav_dash_h.gif +0 -0
  412. data/public/images/cms/nav_dash_on.gif +0 -0
  413. data/public/images/cms/nav_sitemap.gif +0 -0
  414. data/public/images/cms/nav_sitemap_h.gif +0 -0
  415. data/public/images/cms/nav_sitemap_on.gif +0 -0
  416. data/public/stylesheets/cms/administration.css +91 -91
  417. data/public/stylesheets/cms/block.css +25 -25
  418. data/public/stylesheets/cms/buttons.css +120 -111
  419. data/public/stylesheets/cms/content_library.css +2 -1
  420. data/public/stylesheets/cms/content_types.css +3 -3
  421. data/public/stylesheets/cms/dashboard.css +118 -118
  422. data/public/stylesheets/cms/data_table.css +155 -155
  423. data/public/stylesheets/cms/form_layout.css +269 -269
  424. data/public/stylesheets/cms/jquery.contextMenu.css +61 -61
  425. data/public/stylesheets/cms/login.css +77 -77
  426. data/public/stylesheets/cms/menu.css +116 -116
  427. data/public/stylesheets/cms/nav.css +98 -111
  428. data/public/stylesheets/cms/page_toolbar.css +134 -134
  429. data/public/stylesheets/cms/sitemap.css +31 -15
  430. data/rails_generators/content_block/content_block_generator.rb +4 -9
  431. data/rails_generators/content_block/templates/_form.html.erb +3 -1
  432. data/rails_generators/portlet/portlet_generator.rb +2 -6
  433. data/rails_generators/portlet/templates/_form.html.erb +1 -0
  434. data/templates/blank.rb +30 -0
  435. data/templates/demo.rb +28 -0
  436. data/templates/module.rb +945 -0
  437. data/test/functional/cms/connectors_controller_test.rb +12 -1
  438. data/test/functional/cms/portlets_controller_test.rb +10 -0
  439. data/test/unit/behaviors/taggable_test.rb +19 -0
  440. data/test/unit/helpers/menu_helper_test.rb +72 -1
  441. data/test/unit/lib/generators_test.rb +21 -3
  442. data/test/unit/models/connector_test.rb +16 -0
  443. data/test/unit/models/sections_test.rb +4 -0
  444. metadata +380 -2
@@ -0,0 +1,119 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: ApplicationController</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">ApplicationController</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/app/controllers/application_controller_rb.html">
59
+ app/controllers/application_controller.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ ActionController::Base
69
+ </td>
70
+ </tr>
71
+ </table>
72
+ </div>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+
77
+
78
+
79
+ <div id="contextContent">
80
+
81
+ <div id="description">
82
+ <p>
83
+ Filters added to this controller apply to all controllers in the
84
+ application. Likewise, all the methods added will be available for all
85
+ controllers.
86
+ </p>
87
+
88
+ </div>
89
+
90
+
91
+ </div>
92
+
93
+
94
+ </div>
95
+
96
+
97
+ <!-- if includes -->
98
+
99
+ <div id="section">
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+ <!-- if method_list -->
109
+
110
+
111
+ </div>
112
+
113
+
114
+ <div id="validator-badges">
115
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
116
+ </div>
117
+
118
+ </body>
119
+ </html>
@@ -0,0 +1,112 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Module: ApplicationHelper</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Module</strong></td>
53
+ <td class="class-name-in-header">ApplicationHelper</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/app/helpers/application_helper_rb.html">
59
+ app/helpers/application_helper.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ </table>
66
+ </div>
67
+ <!-- banner header -->
68
+
69
+ <div id="bodyContent">
70
+
71
+
72
+
73
+ <div id="contextContent">
74
+
75
+ <div id="description">
76
+ <p>
77
+ Any code for core CMS should go in /cms/application_helper.rb rather than
78
+ here.
79
+ </p>
80
+
81
+ </div>
82
+
83
+
84
+ </div>
85
+
86
+
87
+ </div>
88
+
89
+
90
+ <!-- if includes -->
91
+
92
+ <div id="section">
93
+
94
+
95
+
96
+
97
+
98
+
99
+
100
+
101
+ <!-- if method_list -->
102
+
103
+
104
+ </div>
105
+
106
+
107
+ <div id="validator-badges">
108
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
109
+ </div>
110
+
111
+ </body>
112
+ </html>
@@ -0,0 +1,726 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: Attachment</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">Attachment</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/app/models/attachment_rb.html">
59
+ app/models/attachment.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ ActiveRecord::Base
69
+ </td>
70
+ </tr>
71
+ </table>
72
+ </div>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+
77
+
78
+
79
+ <div id="contextContent">
80
+
81
+
82
+
83
+ </div>
84
+
85
+ <div id="method-list">
86
+ <h3 class="section-bar">Methods</h3>
87
+
88
+ <div class="name-list">
89
+ <a href="#M000172">clear_ivars</a>&nbsp;&nbsp;
90
+ <a href="#M000181">dirty!</a>&nbsp;&nbsp;
91
+ <a href="#M000166">extract_file_extension_from_file_name</a>&nbsp;&nbsp;
92
+ <a href="#M000168">extract_file_size_from_temp_file</a>&nbsp;&nbsp;
93
+ <a href="#M000167">extract_file_type_from_temp_file</a>&nbsp;&nbsp;
94
+ <a href="#M000176">file_name</a>&nbsp;&nbsp;
95
+ <a href="#M000175">find_live_by_file_path</a>&nbsp;&nbsp;
96
+ <a href="#M000180">full_file_location</a>&nbsp;&nbsp;
97
+ <a href="#M000178">icon</a>&nbsp;&nbsp;
98
+ <a href="#M000164">make_dirty_if_temp_file</a>&nbsp;&nbsp;
99
+ <a href="#M000177">name</a>&nbsp;&nbsp;
100
+ <a href="#M000165">prepend_file_path_with_slash</a>&nbsp;&nbsp;
101
+ <a href="#M000170">process_section</a>&nbsp;&nbsp;
102
+ <a href="#M000179">public?</a>&nbsp;&nbsp;
103
+ <a href="#M000162">section</a>&nbsp;&nbsp;
104
+ <a href="#M000163">section=</a>&nbsp;&nbsp;
105
+ <a href="#M000160">section_id</a>&nbsp;&nbsp;
106
+ <a href="#M000161">section_id=</a>&nbsp;&nbsp;
107
+ <a href="#M000169">set_file_location</a>&nbsp;&nbsp;
108
+ <a href="#M000173">storage_location</a>&nbsp;&nbsp;
109
+ <a href="#M000174">storage_location=</a>&nbsp;&nbsp;
110
+ <a href="#M000171">write_temp_file_to_storage_location</a>&nbsp;&nbsp;
111
+ </div>
112
+ </div>
113
+
114
+ </div>
115
+
116
+
117
+ <!-- if includes -->
118
+
119
+ <div id="section">
120
+
121
+
122
+
123
+
124
+
125
+ <div id="attribute-list">
126
+ <h3 class="section-bar">Attributes</h3>
127
+
128
+ <div class="name-list">
129
+ <table>
130
+ <tr class="top-aligned-row context-row">
131
+ <td class="context-item-name">temp_file</td>
132
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
133
+ <td class="context-item-desc"></td>
134
+ </tr>
135
+ </table>
136
+ </div>
137
+ </div>
138
+
139
+
140
+
141
+ <!-- if method_list -->
142
+ <div id="methods">
143
+ <h3 class="section-bar">Public Class methods</h3>
144
+
145
+ <div id="method-M000175" class="method-detail">
146
+ <a name="M000175"></a>
147
+
148
+ <div class="method-heading">
149
+ <a href="#M000175" class="method-signature">
150
+ <span class="method-name">find_live_by_file_path</span><span class="method-args">(file_path)</span>
151
+ </a>
152
+ </div>
153
+
154
+ <div class="method-description">
155
+ <p><a class="source-toggle" href="#"
156
+ onclick="toggleCode('M000175-source');return false;">[Source]</a></p>
157
+ <div class="method-source-code" id="M000175-source">
158
+ <pre>
159
+ <span class="ruby-comment cmt"># File app/models/attachment.rb, line 146</span>
160
+ 146: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">find_live_by_file_path</span>(<span class="ruby-identifier">file_path</span>)
161
+ 147: <span class="ruby-constant">Attachment</span>.<span class="ruby-identifier">published</span>.<span class="ruby-identifier">not_archived</span>.<span class="ruby-identifier">first</span>(<span class="ruby-identifier">:conditions</span> =<span class="ruby-operator">&gt;</span> {<span class="ruby-identifier">:file_path</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">file_path</span>})
162
+ 148: <span class="ruby-keyword kw">end</span>
163
+ </pre>
164
+ </div>
165
+ </div>
166
+ </div>
167
+
168
+ <div id="method-M000173" class="method-detail">
169
+ <a name="M000173"></a>
170
+
171
+ <div class="method-heading">
172
+ <a href="#M000173" class="method-signature">
173
+ <span class="method-name">storage_location</span><span class="method-args">()</span>
174
+ </a>
175
+ </div>
176
+
177
+ <div class="method-description">
178
+ <p><a class="source-toggle" href="#"
179
+ onclick="toggleCode('M000173-source');return false;">[Source]</a></p>
180
+ <div class="method-source-code" id="M000173-source">
181
+ <pre>
182
+ <span class="ruby-comment cmt"># File app/models/attachment.rb, line 138</span>
183
+ 138: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">storage_location</span>
184
+ 139: <span class="ruby-ivar">@storage_location</span> <span class="ruby-operator">||=</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">Rails</span>.<span class="ruby-identifier">root</span>, <span class="ruby-value str">&quot;/tmp/uploads&quot;</span>)
185
+ 140: <span class="ruby-keyword kw">end</span>
186
+ </pre>
187
+ </div>
188
+ </div>
189
+ </div>
190
+
191
+ <div id="method-M000174" class="method-detail">
192
+ <a name="M000174"></a>
193
+
194
+ <div class="method-heading">
195
+ <a href="#M000174" class="method-signature">
196
+ <span class="method-name">storage_location=</span><span class="method-args">(storage_location)</span>
197
+ </a>
198
+ </div>
199
+
200
+ <div class="method-description">
201
+ <p><a class="source-toggle" href="#"
202
+ onclick="toggleCode('M000174-source');return false;">[Source]</a></p>
203
+ <div class="method-source-code" id="M000174-source">
204
+ <pre>
205
+ <span class="ruby-comment cmt"># File app/models/attachment.rb, line 142</span>
206
+ 142: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">storage_location=</span>(<span class="ruby-identifier">storage_location</span>)
207
+ 143: <span class="ruby-ivar">@storage_location</span> = <span class="ruby-identifier">storage_location</span>
208
+ 144: <span class="ruby-keyword kw">end</span>
209
+ </pre>
210
+ </div>
211
+ </div>
212
+ </div>
213
+
214
+ <h3 class="section-bar">Public Instance methods</h3>
215
+
216
+ <div id="method-M000172" class="method-detail">
217
+ <a name="M000172"></a>
218
+
219
+ <div class="method-heading">
220
+ <a href="#M000172" class="method-signature">
221
+ <span class="method-name">clear_ivars</span><span class="method-args">()</span>
222
+ </a>
223
+ </div>
224
+
225
+ <div class="method-description">
226
+ <p><a class="source-toggle" href="#"
227
+ onclick="toggleCode('M000172-source');return false;">[Source]</a></p>
228
+ <div class="method-source-code" id="M000172-source">
229
+ <pre>
230
+ <span class="ruby-comment cmt"># File app/models/attachment.rb, line 130</span>
231
+ 130: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">clear_ivars</span>
232
+ 131: <span class="ruby-ivar">@temp_file</span> = <span class="ruby-keyword kw">nil</span>
233
+ 132: <span class="ruby-ivar">@section</span> = <span class="ruby-keyword kw">nil</span>
234
+ 133: <span class="ruby-ivar">@section_id</span> = <span class="ruby-keyword kw">nil</span>
235
+ 134: <span class="ruby-keyword kw">end</span>
236
+ </pre>
237
+ </div>
238
+ </div>
239
+ </div>
240
+
241
+ <div id="method-M000181" class="method-detail">
242
+ <a name="M000181"></a>
243
+
244
+ <div class="method-heading">
245
+ <a href="#M000181" class="method-signature">
246
+ <span class="method-name">dirty!</span><span class="method-args">()</span>
247
+ </a>
248
+ </div>
249
+
250
+ <div class="method-description">
251
+ <p>
252
+ Forces this record to be changed, even if nothing has changed This is
253
+ necessary if just the section.id has changed, for example
254
+ </p>
255
+ <p><a class="source-toggle" href="#"
256
+ onclick="toggleCode('M000181-source');return false;">[Source]</a></p>
257
+ <div class="method-source-code" id="M000181-source">
258
+ <pre>
259
+ <span class="ruby-comment cmt"># File app/models/attachment.rb, line 188</span>
260
+ 188: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dirty!</span>
261
+ 189: <span class="ruby-comment cmt"># Seems like a hack, is there a better way?</span>
262
+ 190: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">updated_at</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">now</span>
263
+ 191: <span class="ruby-keyword kw">end</span>
264
+ </pre>
265
+ </div>
266
+ </div>
267
+ </div>
268
+
269
+ <div id="method-M000166" class="method-detail">
270
+ <a name="M000166"></a>
271
+
272
+ <div class="method-heading">
273
+ <a href="#M000166" class="method-signature">
274
+ <span class="method-name">extract_file_extension_from_file_name</span><span class="method-args">()</span>
275
+ </a>
276
+ </div>
277
+
278
+ <div class="method-description">
279
+ <p><a class="source-toggle" href="#"
280
+ onclick="toggleCode('M000166-source');return false;">[Source]</a></p>
281
+ <div class="method-source-code" id="M000166-source">
282
+ <pre>
283
+ <span class="ruby-comment cmt"># File app/models/attachment.rb, line 77</span>
284
+ 77: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">extract_file_extension_from_file_name</span>
285
+ 78: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">file_name</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">file_name</span>[<span class="ruby-value str">'.'</span>]
286
+ 79: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">file_extension</span> = <span class="ruby-identifier">file_name</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">'.'</span>).<span class="ruby-identifier">last</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">downcase</span>
287
+ 80: <span class="ruby-keyword kw">end</span>
288
+ 81: <span class="ruby-keyword kw">end</span>
289
+ </pre>
290
+ </div>
291
+ </div>
292
+ </div>
293
+
294
+ <div id="method-M000168" class="method-detail">
295
+ <a name="M000168"></a>
296
+
297
+ <div class="method-heading">
298
+ <a href="#M000168" class="method-signature">
299
+ <span class="method-name">extract_file_size_from_temp_file</span><span class="method-args">()</span>
300
+ </a>
301
+ </div>
302
+
303
+ <div class="method-description">
304
+ <p><a class="source-toggle" href="#"
305
+ onclick="toggleCode('M000168-source');return false;">[Source]</a></p>
306
+ <div class="method-source-code" id="M000168-source">
307
+ <pre>
308
+ <span class="ruby-comment cmt"># File app/models/attachment.rb, line 89</span>
309
+ 89: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">extract_file_size_from_temp_file</span>
310
+ 90: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">temp_file</span>.<span class="ruby-identifier">blank?</span>
311
+ 91: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">file_size</span> = <span class="ruby-identifier">temp_file</span>.<span class="ruby-identifier">size</span>
312
+ 92: <span class="ruby-keyword kw">end</span>
313
+ 93: <span class="ruby-keyword kw">end</span>
314
+ </pre>
315
+ </div>
316
+ </div>
317
+ </div>
318
+
319
+ <div id="method-M000167" class="method-detail">
320
+ <a name="M000167"></a>
321
+
322
+ <div class="method-heading">
323
+ <a href="#M000167" class="method-signature">
324
+ <span class="method-name">extract_file_type_from_temp_file</span><span class="method-args">()</span>
325
+ </a>
326
+ </div>
327
+
328
+ <div class="method-description">
329
+ <p><a class="source-toggle" href="#"
330
+ onclick="toggleCode('M000167-source');return false;">[Source]</a></p>
331
+ <div class="method-source-code" id="M000167-source">
332
+ <pre>
333
+ <span class="ruby-comment cmt"># File app/models/attachment.rb, line 83</span>
334
+ 83: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">extract_file_type_from_temp_file</span>
335
+ 84: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">temp_file</span>.<span class="ruby-identifier">blank?</span>
336
+ 85: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">file_type</span> = <span class="ruby-identifier">temp_file</span>.<span class="ruby-identifier">content_type</span>
337
+ 86: <span class="ruby-keyword kw">end</span>
338
+ 87: <span class="ruby-keyword kw">end</span>
339
+ </pre>
340
+ </div>
341
+ </div>
342
+ </div>
343
+
344
+ <div id="method-M000176" class="method-detail">
345
+ <a name="M000176"></a>
346
+
347
+ <div class="method-heading">
348
+ <a href="#M000176" class="method-signature">
349
+ <span class="method-name">file_name</span><span class="method-args">()</span>
350
+ </a>
351
+ </div>
352
+
353
+ <div class="method-description">
354
+ <p><a class="source-toggle" href="#"
355
+ onclick="toggleCode('M000176-source');return false;">[Source]</a></p>
356
+ <div class="method-source-code" id="M000176-source">
357
+ <pre>
358
+ <span class="ruby-comment cmt"># File app/models/attachment.rb, line 152</span>
359
+ 152: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">file_name</span>
360
+ 153: <span class="ruby-identifier">file_path</span> <span class="ruby-value">? </span><span class="ruby-identifier">file_path</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">'/'</span>).<span class="ruby-identifier">last</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">nil</span>
361
+ 154: <span class="ruby-keyword kw">end</span>
362
+ </pre>
363
+ </div>
364
+ </div>
365
+ </div>
366
+
367
+ <div id="method-M000180" class="method-detail">
368
+ <a name="M000180"></a>
369
+
370
+ <div class="method-heading">
371
+ <a href="#M000180" class="method-signature">
372
+ <span class="method-name">full_file_location</span><span class="method-args">()</span>
373
+ </a>
374
+ </div>
375
+
376
+ <div class="method-description">
377
+ <p><a class="source-toggle" href="#"
378
+ onclick="toggleCode('M000180-source');return false;">[Source]</a></p>
379
+ <div class="method-source-code" id="M000180-source">
380
+ <pre>
381
+ <span class="ruby-comment cmt"># File app/models/attachment.rb, line 182</span>
382
+ 182: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">full_file_location</span>
383
+ 183: <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">Attachment</span>.<span class="ruby-identifier">storage_location</span>, <span class="ruby-identifier">file_location</span>)
384
+ 184: <span class="ruby-keyword kw">end</span>
385
+ </pre>
386
+ </div>
387
+ </div>
388
+ </div>
389
+
390
+ <div id="method-M000178" class="method-detail">
391
+ <a name="M000178"></a>
392
+
393
+ <div class="method-heading">
394
+ <a href="#M000178" class="method-signature">
395
+ <span class="method-name">icon</span><span class="method-args">()</span>
396
+ </a>
397
+ </div>
398
+
399
+ <div class="method-description">
400
+ <p><a class="source-toggle" href="#"
401
+ onclick="toggleCode('M000178-source');return false;">[Source]</a></p>
402
+ <div class="method-source-code" id="M000178-source">
403
+ <pre>
404
+ <span class="ruby-comment cmt"># File app/models/attachment.rb, line 160</span>
405
+ 160: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">icon</span>
406
+ 161: {
407
+ 162: <span class="ruby-identifier">:doc</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">%w[doc]</span>,
408
+ 163: <span class="ruby-identifier">:gif</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">%w[gif jpg jpeg png tiff bmp]</span>,
409
+ 164: <span class="ruby-identifier">:htm</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">%w[htm html]</span>,
410
+ 165: <span class="ruby-identifier">:pdf</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">%w[pdf]</span>,
411
+ 166: <span class="ruby-identifier">:ppt</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">%w[ppt]</span>,
412
+ 167: <span class="ruby-identifier">:swf</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">%w[swf]</span>,
413
+ 168: <span class="ruby-identifier">:txt</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">%w[txt]</span>,
414
+ 169: <span class="ruby-identifier">:xls</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">%w[xls]</span>,
415
+ 170: <span class="ruby-identifier">:xml</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">%w[xml]</span>,
416
+ 171: <span class="ruby-identifier">:zip</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">%w[zip rar tar gz tgz]</span>
417
+ 172: }.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">icon</span>, <span class="ruby-identifier">extensions</span><span class="ruby-operator">|</span>
418
+ 173: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">icon</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">extensions</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">file_extension</span>.<span class="ruby-identifier">to_s</span>)
419
+ 174: <span class="ruby-keyword kw">end</span>
420
+ 175: <span class="ruby-identifier">:file</span>
421
+ 176: <span class="ruby-keyword kw">end</span>
422
+ </pre>
423
+ </div>
424
+ </div>
425
+ </div>
426
+
427
+ <div id="method-M000164" class="method-detail">
428
+ <a name="M000164"></a>
429
+
430
+ <div class="method-heading">
431
+ <a href="#M000164" class="method-signature">
432
+ <span class="method-name">make_dirty_if_temp_file</span><span class="method-args">()</span>
433
+ </a>
434
+ </div>
435
+
436
+ <div class="method-description">
437
+ <p><a class="source-toggle" href="#"
438
+ onclick="toggleCode('M000164-source');return false;">[Source]</a></p>
439
+ <div class="method-source-code" id="M000164-source">
440
+ <pre>
441
+ <span class="ruby-comment cmt"># File app/models/attachment.rb, line 67</span>
442
+ 67: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">make_dirty_if_temp_file</span>
443
+ 68: <span class="ruby-identifier">dirty!</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">temp_file</span>
444
+ 69: <span class="ruby-keyword kw">end</span>
445
+ </pre>
446
+ </div>
447
+ </div>
448
+ </div>
449
+
450
+ <div id="method-M000177" class="method-detail">
451
+ <a name="M000177"></a>
452
+
453
+ <div class="method-heading">
454
+ <a href="#M000177" class="method-signature">
455
+ <span class="method-name">name</span><span class="method-args">()</span>
456
+ </a>
457
+ </div>
458
+
459
+ <div class="method-description">
460
+ <p><a class="source-toggle" href="#"
461
+ onclick="toggleCode('M000177-source');return false;">[Source]</a></p>
462
+ <div class="method-source-code" id="M000177-source">
463
+ <pre>
464
+ <span class="ruby-comment cmt"># File app/models/attachment.rb, line 156</span>
465
+ 156: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">name</span>
466
+ 157: <span class="ruby-identifier">file_name</span>
467
+ 158: <span class="ruby-keyword kw">end</span>
468
+ </pre>
469
+ </div>
470
+ </div>
471
+ </div>
472
+
473
+ <div id="method-M000165" class="method-detail">
474
+ <a name="M000165"></a>
475
+
476
+ <div class="method-heading">
477
+ <a href="#M000165" class="method-signature">
478
+ <span class="method-name">prepend_file_path_with_slash</span><span class="method-args">()</span>
479
+ </a>
480
+ </div>
481
+
482
+ <div class="method-description">
483
+ <p><a class="source-toggle" href="#"
484
+ onclick="toggleCode('M000165-source');return false;">[Source]</a></p>
485
+ <div class="method-source-code" id="M000165-source">
486
+ <pre>
487
+ <span class="ruby-comment cmt"># File app/models/attachment.rb, line 71</span>
488
+ 71: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">prepend_file_path_with_slash</span>
489
+ 72: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">file_path</span>.<span class="ruby-identifier">blank?</span>
490
+ 73: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">file_path</span> = <span class="ruby-node">&quot;/#{file_path}&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">file_path</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/^\//</span>
491
+ 74: <span class="ruby-keyword kw">end</span>
492
+ 75: <span class="ruby-keyword kw">end</span>
493
+ </pre>
494
+ </div>
495
+ </div>
496
+ </div>
497
+
498
+ <div id="method-M000170" class="method-detail">
499
+ <a name="M000170"></a>
500
+
501
+ <div class="method-heading">
502
+ <a href="#M000170" class="method-signature">
503
+ <span class="method-name">process_section</span><span class="method-args">()</span>
504
+ </a>
505
+ </div>
506
+
507
+ <div class="method-description">
508
+ <p><a class="source-toggle" href="#"
509
+ onclick="toggleCode('M000170-source');return false;">[Source]</a></p>
510
+ <div class="method-source-code" id="M000170-source">
511
+ <pre>
512
+ <span class="ruby-comment cmt"># File app/models/attachment.rb, line 106</span>
513
+ 106: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">process_section</span>
514
+ 107: <span class="ruby-comment cmt">#logger.info &quot;processing section, section_id =&gt; #{section_id}, section_node =&gt; #{section_node.inspect}&quot;</span>
515
+ 108: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">section_node</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">section_node</span>.<span class="ruby-identifier">new_record?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">section_node</span>.<span class="ruby-identifier">section_id</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">section_id</span>
516
+ 109: <span class="ruby-identifier">section_node</span>.<span class="ruby-identifier">move_to_end</span>(<span class="ruby-constant">Section</span>.<span class="ruby-identifier">find</span>(<span class="ruby-identifier">section_id</span>))
517
+ 110: <span class="ruby-keyword kw">else</span>
518
+ 111: <span class="ruby-identifier">build_section_node</span>(<span class="ruby-identifier">:node</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">:section_id</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">section_id</span>)
519
+ 112: <span class="ruby-keyword kw">end</span>
520
+ 113: <span class="ruby-keyword kw">end</span>
521
+ </pre>
522
+ </div>
523
+ </div>
524
+ </div>
525
+
526
+ <div id="method-M000179" class="method-detail">
527
+ <a name="M000179"></a>
528
+
529
+ <div class="method-heading">
530
+ <a href="#M000179" class="method-signature">
531
+ <span class="method-name">public?</span><span class="method-args">()</span>
532
+ </a>
533
+ </div>
534
+
535
+ <div class="method-description">
536
+ <p><a class="source-toggle" href="#"
537
+ onclick="toggleCode('M000179-source');return false;">[Source]</a></p>
538
+ <div class="method-source-code" id="M000179-source">
539
+ <pre>
540
+ <span class="ruby-comment cmt"># File app/models/attachment.rb, line 178</span>
541
+ 178: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">public?</span>
542
+ 179: <span class="ruby-identifier">section</span> <span class="ruby-value">? </span><span class="ruby-identifier">section</span>.<span class="ruby-identifier">public?</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">false</span>
543
+ 180: <span class="ruby-keyword kw">end</span>
544
+ </pre>
545
+ </div>
546
+ </div>
547
+ </div>
548
+
549
+ <div id="method-M000162" class="method-detail">
550
+ <a name="M000162"></a>
551
+
552
+ <div class="method-heading">
553
+ <a href="#M000162" class="method-signature">
554
+ <span class="method-name">section</span><span class="method-args">()</span>
555
+ </a>
556
+ </div>
557
+
558
+ <div class="method-description">
559
+ <p><a class="source-toggle" href="#"
560
+ onclick="toggleCode('M000162-source');return false;">[Source]</a></p>
561
+ <div class="method-source-code" id="M000162-source">
562
+ <pre>
563
+ <span class="ruby-comment cmt"># File app/models/attachment.rb, line 53</span>
564
+ 53: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">section</span>
565
+ 54: <span class="ruby-ivar">@section</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">section_node</span> <span class="ruby-value">? </span><span class="ruby-identifier">section_node</span>.<span class="ruby-identifier">section</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">nil</span>
566
+ 55: <span class="ruby-keyword kw">end</span>
567
+ </pre>
568
+ </div>
569
+ </div>
570
+ </div>
571
+
572
+ <div id="method-M000163" class="method-detail">
573
+ <a name="M000163"></a>
574
+
575
+ <div class="method-heading">
576
+ <a href="#M000163" class="method-signature">
577
+ <span class="method-name">section=</span><span class="method-args">(section)</span>
578
+ </a>
579
+ </div>
580
+
581
+ <div class="method-description">
582
+ <p><a class="source-toggle" href="#"
583
+ onclick="toggleCode('M000163-source');return false;">[Source]</a></p>
584
+ <div class="method-source-code" id="M000163-source">
585
+ <pre>
586
+ <span class="ruby-comment cmt"># File app/models/attachment.rb, line 57</span>
587
+ 57: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">section=</span>(<span class="ruby-identifier">section</span>)
588
+ 58: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@section</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">section</span>
589
+ 59: <span class="ruby-identifier">dirty!</span>
590
+ 60: <span class="ruby-ivar">@section_id</span> = <span class="ruby-identifier">section</span> <span class="ruby-value">? </span><span class="ruby-identifier">section</span>.<span class="ruby-identifier">id</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">nil</span>
591
+ 61: <span class="ruby-ivar">@section</span> = <span class="ruby-identifier">section</span>
592
+ 62: <span class="ruby-keyword kw">end</span>
593
+ 63: <span class="ruby-keyword kw">end</span>
594
+ </pre>
595
+ </div>
596
+ </div>
597
+ </div>
598
+
599
+ <div id="method-M000160" class="method-detail">
600
+ <a name="M000160"></a>
601
+
602
+ <div class="method-heading">
603
+ <a href="#M000160" class="method-signature">
604
+ <span class="method-name">section_id</span><span class="method-args">()</span>
605
+ </a>
606
+ </div>
607
+
608
+ <div class="method-description">
609
+ <p><a class="source-toggle" href="#"
610
+ onclick="toggleCode('M000160-source');return false;">[Source]</a></p>
611
+ <div class="method-source-code" id="M000160-source">
612
+ <pre>
613
+ <span class="ruby-comment cmt"># File app/models/attachment.rb, line 42</span>
614
+ 42: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">section_id</span>
615
+ 43: <span class="ruby-ivar">@section_id</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">section_node</span> <span class="ruby-value">? </span><span class="ruby-identifier">section_node</span>.<span class="ruby-identifier">section_id</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">nil</span>
616
+ 44: <span class="ruby-keyword kw">end</span>
617
+ </pre>
618
+ </div>
619
+ </div>
620
+ </div>
621
+
622
+ <div id="method-M000161" class="method-detail">
623
+ <a name="M000161"></a>
624
+
625
+ <div class="method-heading">
626
+ <a href="#M000161" class="method-signature">
627
+ <span class="method-name">section_id=</span><span class="method-args">(section_id)</span>
628
+ </a>
629
+ </div>
630
+
631
+ <div class="method-description">
632
+ <p><a class="source-toggle" href="#"
633
+ onclick="toggleCode('M000161-source');return false;">[Source]</a></p>
634
+ <div class="method-source-code" id="M000161-source">
635
+ <pre>
636
+ <span class="ruby-comment cmt"># File app/models/attachment.rb, line 46</span>
637
+ 46: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">section_id=</span>(<span class="ruby-identifier">section_id</span>)
638
+ 47: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@section_id</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">section_id</span>
639
+ 48: <span class="ruby-identifier">dirty!</span>
640
+ 49: <span class="ruby-ivar">@section_id</span> = <span class="ruby-identifier">section_id</span>
641
+ 50: <span class="ruby-keyword kw">end</span>
642
+ 51: <span class="ruby-keyword kw">end</span>
643
+ </pre>
644
+ </div>
645
+ </div>
646
+ </div>
647
+
648
+ <div id="method-M000169" class="method-detail">
649
+ <a name="M000169"></a>
650
+
651
+ <div class="method-heading">
652
+ <a href="#M000169" class="method-signature">
653
+ <span class="method-name">set_file_location</span><span class="method-args">()</span>
654
+ </a>
655
+ </div>
656
+
657
+ <div class="method-description">
658
+ <p>
659
+ The file will be stored on disk at <a
660
+ href="Attachment.html#M000173">Attachment.storage_location</a>/year/month/day/sha1
661
+ The sha1 is a 40 character hash based on the original_filename of the file
662
+ uploaded and the current time
663
+ </p>
664
+ <p><a class="source-toggle" href="#"
665
+ onclick="toggleCode('M000169-source');return false;">[Source]</a></p>
666
+ <div class="method-source-code" id="M000169-source">
667
+ <pre>
668
+ <span class="ruby-comment cmt"># File app/models/attachment.rb, line 99</span>
669
+ 99: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">set_file_location</span>
670
+ 100: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">temp_file</span>.<span class="ruby-identifier">blank?</span>
671
+ 101: <span class="ruby-identifier">sha1</span> = <span class="ruby-constant">Digest</span><span class="ruby-operator">::</span><span class="ruby-constant">SHA1</span>.<span class="ruby-identifier">hexdigest</span>(<span class="ruby-node">&quot;#{temp_file.original_filename}#{Time.now.to_f}&quot;</span>)
672
+ 102: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">file_location</span> = <span class="ruby-node">&quot;#{Time.now.strftime(&quot;%Y/%m/%d&quot;)}/#{sha1}&quot;</span>
673
+ 103: <span class="ruby-keyword kw">end</span>
674
+ 104: <span class="ruby-keyword kw">end</span>
675
+ </pre>
676
+ </div>
677
+ </div>
678
+ </div>
679
+
680
+ <div id="method-M000171" class="method-detail">
681
+ <a name="M000171"></a>
682
+
683
+ <div class="method-heading">
684
+ <a href="#M000171" class="method-signature">
685
+ <span class="method-name">write_temp_file_to_storage_location</span><span class="method-args">()</span>
686
+ </a>
687
+ </div>
688
+
689
+ <div class="method-description">
690
+ <p><a class="source-toggle" href="#"
691
+ onclick="toggleCode('M000171-source');return false;">[Source]</a></p>
692
+ <div class="method-source-code" id="M000171-source">
693
+ <pre>
694
+ <span class="ruby-comment cmt"># File app/models/attachment.rb, line 115</span>
695
+ 115: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">write_temp_file_to_storage_location</span>
696
+ 116: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">temp_file</span>.<span class="ruby-identifier">blank?</span>
697
+ 117: <span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">mkdir_p</span> <span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span>(<span class="ruby-identifier">full_file_location</span>)
698
+ 118: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">temp_file</span>.<span class="ruby-identifier">local_path</span>
699
+ 119: <span class="ruby-constant">File</span>.<span class="ruby-identifier">copy</span> <span class="ruby-identifier">temp_file</span>.<span class="ruby-identifier">local_path</span>, <span class="ruby-identifier">full_file_location</span>
700
+ 120: <span class="ruby-keyword kw">else</span>
701
+ 121: <span class="ruby-identifier">open</span>(<span class="ruby-identifier">full_file_location</span>, <span class="ruby-value str">'w'</span>) {<span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">temp_file</span>.<span class="ruby-identifier">read</span> }
702
+ 122: <span class="ruby-keyword kw">end</span>
703
+ 123:
704
+ 124: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">Cms</span>.<span class="ruby-identifier">attachment_file_permission</span>
705
+ 125: <span class="ruby-constant">FileUtils</span>.<span class="ruby-identifier">chmod</span> <span class="ruby-constant">Cms</span>.<span class="ruby-identifier">attachment_file_permission</span>, <span class="ruby-identifier">full_file_location</span>
706
+ 126: <span class="ruby-keyword kw">end</span>
707
+ 127: <span class="ruby-keyword kw">end</span>
708
+ 128: <span class="ruby-keyword kw">end</span>
709
+ </pre>
710
+ </div>
711
+ </div>
712
+ </div>
713
+
714
+
715
+ </div>
716
+
717
+
718
+ </div>
719
+
720
+
721
+ <div id="validator-badges">
722
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
723
+ </div>
724
+
725
+ </body>
726
+ </html>