humpyard 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (197) hide show
  1. data/Gemfile +28 -0
  2. data/README.rdoc +61 -0
  3. data/VERSION +1 -0
  4. data/app/controllers/humpyard/assets_controller.rb +123 -0
  5. data/app/controllers/humpyard/elements_controller.rb +200 -0
  6. data/app/controllers/humpyard/errors_controller.rb +8 -0
  7. data/app/controllers/humpyard/pages_controller.rb +365 -0
  8. data/app/helpers/humpyard/pages_helper.rb +19 -0
  9. data/app/models/humpyard/asset.rb +22 -0
  10. data/app/models/humpyard/assets/paperclip_asset.rb +48 -0
  11. data/app/models/humpyard/assets/youtube_asset.rb +38 -0
  12. data/app/models/humpyard/element.rb +57 -0
  13. data/app/models/humpyard/elements/box_element.rb +15 -0
  14. data/app/models/humpyard/elements/media_element.rb +13 -0
  15. data/app/models/humpyard/elements/news_element.rb +13 -0
  16. data/app/models/humpyard/elements/sitemap_element.rb +11 -0
  17. data/app/models/humpyard/elements/text_element.rb +49 -0
  18. data/app/models/humpyard/news_item.rb +42 -0
  19. data/app/models/humpyard/page.rb +153 -0
  20. data/app/models/humpyard/pages/news_page.rb +71 -0
  21. data/app/models/humpyard/pages/static_page.rb +25 -0
  22. data/app/models/humpyard/pages/virtual_page.rb +30 -0
  23. data/app/views/humpyard/assets/_edit.html.haml +15 -0
  24. data/app/views/humpyard/assets/_index.html.haml +24 -0
  25. data/app/views/humpyard/assets/_list.html.haml +4 -0
  26. data/app/views/humpyard/assets/_list_item.html.haml +1 -0
  27. data/app/views/humpyard/assets/_show.html.haml +38 -0
  28. data/app/views/humpyard/assets/_show_asset.html.haml +3 -0
  29. data/app/views/humpyard/assets/destroy.js.erb +4 -0
  30. data/app/views/humpyard/assets/paperclip_assets/_edit.html.haml +4 -0
  31. data/app/views/humpyard/assets/paperclip_assets/_info_table.html.haml +10 -0
  32. data/app/views/humpyard/assets/paperclip_assets/_show.html.haml +12 -0
  33. data/app/views/humpyard/assets/youtube_assets/_edit.html.haml +4 -0
  34. data/app/views/humpyard/assets/youtube_assets/_show.html.haml +5 -0
  35. data/app/views/humpyard/common/_head.html.haml +8 -0
  36. data/app/views/humpyard/common/_page_construct.html.haml +45 -0
  37. data/app/views/humpyard/elements/_edit.html.haml +25 -0
  38. data/app/views/humpyard/elements/_inline_edit.haml +0 -0
  39. data/app/views/humpyard/elements/_new.html.haml +1 -0
  40. data/app/views/humpyard/elements/_show.html.haml +29 -0
  41. data/app/views/humpyard/elements/_show_container.html.haml +3 -0
  42. data/app/views/humpyard/elements/_show_view.html.haml +2 -0
  43. data/app/views/humpyard/elements/box_elements/_edit.html.haml +4 -0
  44. data/app/views/humpyard/elements/box_elements/_inline_edit.html.haml +0 -0
  45. data/app/views/humpyard/elements/box_elements/_show.html.haml +5 -0
  46. data/app/views/humpyard/elements/destroy.js.erb +1 -0
  47. data/app/views/humpyard/elements/error.js.erb +1 -0
  48. data/app/views/humpyard/elements/media_elements/_edit.html.haml +7 -0
  49. data/app/views/humpyard/elements/media_elements/_show.html.haml +8 -0
  50. data/app/views/humpyard/elements/news_elements/_edit.html.haml +5 -0
  51. data/app/views/humpyard/elements/news_elements/_inline_edit.html.haml +0 -0
  52. data/app/views/humpyard/elements/news_elements/_show.html.haml +4 -0
  53. data/app/views/humpyard/elements/sitemap_elements/_edit.html.haml +5 -0
  54. data/app/views/humpyard/elements/sitemap_elements/_inline_edit.html.haml +0 -0
  55. data/app/views/humpyard/elements/sitemap_elements/_show.html.haml +3 -0
  56. data/app/views/humpyard/elements/sitemap_elements/_show_part.html.haml +12 -0
  57. data/app/views/humpyard/elements/text_elements/_edit.html.haml +4 -0
  58. data/app/views/humpyard/elements/text_elements/_inline_edit.html.haml +0 -0
  59. data/app/views/humpyard/elements/text_elements/_show.html.haml +4 -0
  60. data/app/views/humpyard/pages/_content.html.haml +2 -0
  61. data/app/views/humpyard/pages/_edit.html.haml +39 -0
  62. data/app/views/humpyard/pages/_index.html.haml +23 -0
  63. data/app/views/humpyard/pages/_show.html.haml +16 -0
  64. data/app/views/humpyard/pages/_subtree.html.haml +6 -0
  65. data/app/views/humpyard/pages/_tree.html.haml +3 -0
  66. data/app/views/humpyard/pages/destroy.js.erb +4 -0
  67. data/app/views/humpyard/pages/news_pages/_detail.html.haml +10 -0
  68. data/app/views/humpyard/pages/news_pages/_edit.html.haml +3 -0
  69. data/app/views/humpyard/pages/news_pages/_show.html.haml +5 -0
  70. data/app/views/humpyard/pages/show.html.haml +3 -0
  71. data/app/views/humpyard/pages/static_pages/_edit.html.haml +1 -0
  72. data/app/views/humpyard/pages/static_pages/_show.html.haml +1 -0
  73. data/app/views/humpyard/pages/virtual_pages/_edit.html.haml +7 -0
  74. data/app/views/humpyard/pages/virtual_pages/_show.html.haml +4 -0
  75. data/app/views/humpyard/pages/welcome.html.haml +13 -0
  76. data/compass/stylesheets/_humpyard.scss +12 -0
  77. data/compass/stylesheets/humpyard/_backend.scss +1 -0
  78. data/compass/stylesheets/humpyard/_base.scss +144 -0
  79. data/compass/stylesheets/humpyard/_ie.scss +1 -0
  80. data/compass/stylesheets/humpyard/_jquery_ui_overrides.scss +380 -0
  81. data/compass/stylesheets/humpyard/_print.scss +3 -0
  82. data/config/locales/de.yml +84 -0
  83. data/config/locales/en.yml +81 -0
  84. data/config/routes.rb +38 -0
  85. data/db/migrate/20100321134138_base.rb +60 -0
  86. data/db/migrate/20100330204700_create_box_element.rb +24 -0
  87. data/db/migrate/20100401153655_page_template.rb +11 -0
  88. data/db/migrate/20100409195732_page_types.rb +26 -0
  89. data/db/migrate/20100413230623_element_yield.rb +14 -0
  90. data/db/migrate/20100415132312_news_page.rb +48 -0
  91. data/db/migrate/20100415193423_page_i18n_name.rb +27 -0
  92. data/db/migrate/20100415213700_create_news_element.rb +12 -0
  93. data/db/migrate/20100703120000_shared_elements.rb +9 -0
  94. data/db/migrate/20101001142534_page_modified_at.rb +11 -0
  95. data/db/migrate/20101003100138_create_sitemap_elements.rb +13 -0
  96. data/db/migrate/20101003122108_create_humpyard_pages_virtual_pages.rb +11 -0
  97. data/db/migrate/20101006070503_page_cache_control.rb +9 -0
  98. data/db/migrate/20101104173743_create_media.rb +36 -0
  99. data/db/migrate/20110425230524_media_with_link.rb +9 -0
  100. data/lib/generators/humpyard.rb +114 -0
  101. data/lib/generators/humpyard/auth/auth_generator.rb +191 -0
  102. data/lib/generators/humpyard/auth/templates/authlogic/README +9 -0
  103. data/lib/generators/humpyard/auth/templates/authlogic/controllers/user_sessions_controller.rb +22 -0
  104. data/lib/generators/humpyard/auth/templates/authlogic/migration.rb +17 -0
  105. data/lib/generators/humpyard/auth/templates/authlogic/models/ability.rb +12 -0
  106. data/lib/generators/humpyard/auth/templates/authlogic/models/user.rb +7 -0
  107. data/lib/generators/humpyard/auth/templates/authlogic/models/user_session.rb +6 -0
  108. data/lib/generators/humpyard/auth/templates/authlogic/views/user_sessions/new.html.haml +12 -0
  109. data/lib/generators/humpyard/auth/templates/custom/README +8 -0
  110. data/lib/generators/humpyard/auth/templates/devise/README +14 -0
  111. data/lib/generators/humpyard/auth/templates/devise/models/ability.rb +14 -0
  112. data/lib/generators/humpyard/auth/templates/fake/README +0 -0
  113. data/lib/generators/humpyard/auth/templates/fake/models/ability.rb +12 -0
  114. data/lib/generators/humpyard/auth/templates/simple/README +16 -0
  115. data/lib/generators/humpyard/auth/templates/simple/config/humpyard_users.yml +2 -0
  116. data/lib/generators/humpyard/auth/templates/simple/controllers/user_sessions_controller.rb +39 -0
  117. data/lib/generators/humpyard/auth/templates/simple/models/ability.rb +12 -0
  118. data/lib/generators/humpyard/auth/templates/simple/views/user_sessions/new.html.haml +15 -0
  119. data/lib/generators/humpyard/element/USAGE +7 -0
  120. data/lib/generators/humpyard/element/element_generator.rb +82 -0
  121. data/lib/generators/humpyard/element/templates/_edit.html.haml +12 -0
  122. data/lib/generators/humpyard/element/templates/_inline_edit.html.haml +0 -0
  123. data/lib/generators/humpyard/element/templates/_show.html.haml +9 -0
  124. data/lib/generators/humpyard/element/templates/fixtures.yml +23 -0
  125. data/lib/generators/humpyard/element/templates/migration.rb +16 -0
  126. data/lib/generators/humpyard/element/templates/model.rb +11 -0
  127. data/lib/generators/humpyard/element/templates/tests/rspec/model.rb +7 -0
  128. data/lib/generators/humpyard/element/templates/tests/shoulda/model.rb +7 -0
  129. data/lib/generators/humpyard/element/templates/tests/test_unit/model.rb +7 -0
  130. data/lib/generators/humpyard/page/USAGE +7 -0
  131. data/lib/generators/humpyard/page/page_generator.rb +80 -0
  132. data/lib/generators/humpyard/page/templates/_edit.html.haml +7 -0
  133. data/lib/generators/humpyard/page/templates/_show.html.haml +4 -0
  134. data/lib/generators/humpyard/page/templates/fixtures.yml +23 -0
  135. data/lib/generators/humpyard/page/templates/migration.rb +16 -0
  136. data/lib/generators/humpyard/page/templates/model.rb +37 -0
  137. data/lib/generators/humpyard/page/templates/tests/rspec/model.rb +7 -0
  138. data/lib/generators/humpyard/page/templates/tests/shoulda/model.rb +7 -0
  139. data/lib/generators/humpyard/page/templates/tests/test_unit/model.rb +7 -0
  140. data/lib/generators/humpyard/skeleton/USAGE +6 -0
  141. data/lib/generators/humpyard/skeleton/skeleton_generator.rb +99 -0
  142. data/lib/generators/humpyard/skeleton/templates/compass.config +14 -0
  143. data/lib/generators/humpyard/skeleton/templates/images/ajax-loader.gif +0 -0
  144. data/lib/generators/humpyard/skeleton/templates/images/grid.png +0 -0
  145. data/lib/generators/humpyard/skeleton/templates/initializers/compass.rb +16 -0
  146. data/lib/generators/humpyard/skeleton/templates/initializers/haml.rb +3 -0
  147. data/lib/generators/humpyard/skeleton/templates/initializers/humpyard.rb +20 -0
  148. data/lib/generators/humpyard/skeleton/templates/javascripts/jquery-ui-18/images/jstree/d.png +0 -0
  149. data/lib/generators/humpyard/skeleton/templates/javascripts/jquery-ui-18/images/jstree/throbber.gif +0 -0
  150. data/lib/generators/humpyard/skeleton/templates/javascripts/jquery-ui-18/javascripts/jquery-1.5.1.js +8316 -0
  151. data/lib/generators/humpyard/skeleton/templates/javascripts/jquery-ui-18/javascripts/jquery-humpyard.js +790 -0
  152. data/lib/generators/humpyard/skeleton/templates/javascripts/jquery-ui-18/javascripts/jquery-rails.js +157 -0
  153. data/lib/generators/humpyard/skeleton/templates/javascripts/jquery-ui-18/javascripts/jquery-ui-1.8.10.js +11544 -0
  154. data/lib/generators/humpyard/skeleton/templates/javascripts/jquery-ui-18/javascripts/jquery.form-2.64.js +803 -0
  155. data/lib/generators/humpyard/skeleton/templates/javascripts/jquery-ui-18/javascripts/jquery.jstree.js +3510 -0
  156. data/lib/generators/humpyard/skeleton/templates/javascripts/jquery-ui-18/stylesheets/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  157. data/lib/generators/humpyard/skeleton/templates/javascripts/jquery-ui-18/stylesheets/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  158. data/lib/generators/humpyard/skeleton/templates/javascripts/jquery-ui-18/stylesheets/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  159. data/lib/generators/humpyard/skeleton/templates/javascripts/jquery-ui-18/stylesheets/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  160. data/lib/generators/humpyard/skeleton/templates/javascripts/jquery-ui-18/stylesheets/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  161. data/lib/generators/humpyard/skeleton/templates/javascripts/jquery-ui-18/stylesheets/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  162. data/lib/generators/humpyard/skeleton/templates/javascripts/jquery-ui-18/stylesheets/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  163. data/lib/generators/humpyard/skeleton/templates/javascripts/jquery-ui-18/stylesheets/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  164. data/lib/generators/humpyard/skeleton/templates/javascripts/jquery-ui-18/stylesheets/smoothness/images/ui-icons_222222_256x240.png +0 -0
  165. data/lib/generators/humpyard/skeleton/templates/javascripts/jquery-ui-18/stylesheets/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  166. data/lib/generators/humpyard/skeleton/templates/javascripts/jquery-ui-18/stylesheets/smoothness/images/ui-icons_454545_256x240.png +0 -0
  167. data/lib/generators/humpyard/skeleton/templates/javascripts/jquery-ui-18/stylesheets/smoothness/images/ui-icons_888888_256x240.png +0 -0
  168. data/lib/generators/humpyard/skeleton/templates/javascripts/jquery-ui-18/stylesheets/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  169. data/lib/generators/humpyard/skeleton/templates/javascripts/jquery-ui-18/stylesheets/smoothness/jquery-ui-1.8.10.css +573 -0
  170. data/lib/generators/humpyard/skeleton/templates/stylesheets/ie.sass +15 -0
  171. data/lib/generators/humpyard/skeleton/templates/stylesheets/ie.scss +16 -0
  172. data/lib/generators/humpyard/skeleton/templates/stylesheets/partials/_base.sass +12 -0
  173. data/lib/generators/humpyard/skeleton/templates/stylesheets/partials/_base.scss +11 -0
  174. data/lib/generators/humpyard/skeleton/templates/stylesheets/print.sass +3 -0
  175. data/lib/generators/humpyard/skeleton/templates/stylesheets/print.scss +3 -0
  176. data/lib/generators/humpyard/skeleton/templates/stylesheets/screen.sass +78 -0
  177. data/lib/generators/humpyard/skeleton/templates/stylesheets/screen.scss +90 -0
  178. data/lib/generators/humpyard/skeleton/templates/views/layout.html.haml +28 -0
  179. data/lib/html_to_textile.rb +220 -0
  180. data/lib/humpyard.rb +70 -0
  181. data/lib/humpyard/action_controller/base.rb +24 -0
  182. data/lib/humpyard/active_model/naming.rb +29 -0
  183. data/lib/humpyard/active_model/translation.rb +26 -0
  184. data/lib/humpyard/active_model/validators/publish_range.rb +14 -0
  185. data/lib/humpyard/active_record/acts/asset.rb +68 -0
  186. data/lib/humpyard/active_record/acts/container_element.rb +26 -0
  187. data/lib/humpyard/active_record/acts/element.rb +89 -0
  188. data/lib/humpyard/active_record/acts/page.rb +101 -0
  189. data/lib/humpyard/active_record/has/title_for_url.rb +75 -0
  190. data/lib/humpyard/compass.rb +6 -0
  191. data/lib/humpyard/config.rb +235 -0
  192. data/lib/humpyard/engine.rb +7 -0
  193. data/lib/humpyard/uri_parser.rb +16 -0
  194. data/lib/humpyard/uri_parser/assets_uri_parser.rb +15 -0
  195. data/lib/humpyard/uri_parser/pages_uri_parser.rb +15 -0
  196. data/lib/tasks/humpyard.rake +103 -0
  197. metadata +331 -0
@@ -0,0 +1,70 @@
1
+ ####
2
+ # Welcome to Humpyard
3
+ require 'cancan'
4
+ require 'humpyard_form'
5
+
6
+ module Humpyard
7
+ # This is the actual version of the Humpyard gem
8
+ VERSION = ::File.read(::File.join(::File.dirname(__FILE__), "..", "VERSION")).strip
9
+
10
+ def self.load options = {} #:nodoc:
11
+ require ::File.expand_path('../humpyard/rake_tasks', __FILE__)
12
+ end
13
+
14
+ # This is the path to the Humpyard gem's root directory
15
+ def base_directory
16
+ ::File.expand_path(::File.join(::File.dirname(__FILE__), '..'))
17
+ end
18
+
19
+ # This is the path to the Humpyard gem's lib directory
20
+ def lib_directory
21
+ ::File.expand_path(::File.join(::File.dirname(__FILE__)))
22
+ end
23
+
24
+ module_function :base_directory, :lib_directory
25
+
26
+ class << self
27
+ # To access the actual configuration of your Humpyard, you can call this.
28
+ #
29
+ # An example would be <tt>Humpyard.config.www_prefix = 'cms/:locale/'</tt>
30
+ #
31
+ # See Humpyard::Config for configuration options.
32
+ def config
33
+ @config ||= Humpyard::Config.new
34
+ end
35
+
36
+ def uri_parser
37
+ @uri_parser ||= Humpyard::UriParser
38
+ end
39
+
40
+ # Configure the Humpyard
41
+ # See Humpyard::Config.configure for details
42
+ def configure(&block)
43
+ config.configure(&block)
44
+ end
45
+ end
46
+ end
47
+
48
+ require File.expand_path('../humpyard/config', __FILE__)
49
+ require File.expand_path('../humpyard/engine', __FILE__)
50
+ require File.expand_path('../humpyard/compass', __FILE__)
51
+ require File.expand_path('../humpyard/uri_parser', __FILE__)
52
+ require File.expand_path('../humpyard/uri_parser/pages_uri_parser', __FILE__)
53
+ require File.expand_path('../humpyard/uri_parser/assets_uri_parser', __FILE__)
54
+
55
+ require 'i18n'
56
+ I18n.load_path += Dir.glob("#{File.dirname(__FILE__)}/../config/locales/*.yml")
57
+ I18n.backend.reload!
58
+ puts "=> #{I18n.t :'humpyard_cms.start', :version => Humpyard::VERSION, :raise => true}"
59
+
60
+ require File.expand_path('../humpyard/action_controller/base', __FILE__)
61
+ require File.expand_path('../humpyard/active_model/validators/publish_range', __FILE__)
62
+ require File.expand_path('../humpyard/active_model/translation', __FILE__)
63
+ require File.expand_path('../humpyard/active_model/naming', __FILE__)
64
+ require File.expand_path('../humpyard/active_record/acts/element', __FILE__)
65
+ require File.expand_path('../humpyard/active_record/acts/container_element', __FILE__)
66
+ require File.expand_path('../humpyard/active_record/acts/page', __FILE__)
67
+ require File.expand_path('../humpyard/active_record/acts/asset', __FILE__)
68
+ require File.expand_path('../humpyard/active_record/has/title_for_url', __FILE__)
69
+
70
+
@@ -0,0 +1,24 @@
1
+ module Humpyard
2
+ module ActionController #:nodoc:
3
+ module Base #:nodoc:
4
+
5
+ def self.included(base)
6
+ base.module_eval do
7
+ helper_attr :humpyard_user
8
+ helper_attr :humpyard_logout_path
9
+ end
10
+ end
11
+
12
+ def humpyard_user
13
+ current_user
14
+ end
15
+
16
+ def humpyard_logout_path
17
+ "?user="
18
+ end
19
+ end
20
+ end
21
+ end
22
+
23
+ ActionController::Base.send :include, Humpyard::ActionController::Base
24
+
@@ -0,0 +1,29 @@
1
+ module Humpyard
2
+ module ActiveModel #:nodoc:
3
+ module Name #:nodoc:
4
+ def self.included(base)
5
+ base.alias_method_chain :human, :namespaces
6
+ end
7
+
8
+ def human_with_namespaces(options={})
9
+ # Rails orig
10
+ return @human unless @klass.respond_to?(:lookup_ancestors) &&
11
+ @klass.respond_to?(:i18n_scope)
12
+
13
+ # Namespace patch
14
+ defaults = @klass.lookup_ancestors.map do |klass|
15
+ klass.model_name.underscore.gsub('/','.').to_sym
16
+ end
17
+
18
+ # Rails orig
19
+ defaults << options.delete(:default) if options[:default]
20
+ defaults << @human
21
+
22
+ options.reverse_merge! :scope => [@klass.i18n_scope, :models], :count => 1, :default => defaults
23
+ I18n.translate(defaults.shift, options)
24
+ end
25
+ end
26
+ end
27
+ end
28
+
29
+ ActiveModel::Name.send :include, Humpyard::ActiveModel::Name
@@ -0,0 +1,26 @@
1
+ require 'active_model/translation'
2
+
3
+ module ActiveModel #:nodoc:
4
+ module Translation #:nodoc:
5
+ def human_attribute_name_with_namespaces(attribute, options = {})
6
+ # Namespace patch
7
+ defaults = []
8
+ lookup_ancestors.each do |klass|
9
+ name = klass.model_name.underscore.split('/')
10
+ while name.size > 0
11
+ defaults << :"#{self.i18n_scope}.attributes.#{name * '.'}.#{attribute}"
12
+ name.pop
13
+ end
14
+ end
15
+
16
+ # Rails orig
17
+ defaults << :"attributes.#{attribute}"
18
+ defaults << options.delete(:default) if options[:default]
19
+ defaults << attribute.to_s.humanize
20
+
21
+ options.reverse_merge! :count => 1, :default => defaults
22
+ I18n.translate(defaults.shift, options)
23
+ end
24
+ alias_method_chain :human_attribute_name, :namespaces
25
+ end
26
+ end
@@ -0,0 +1,14 @@
1
+ module Humpyard
2
+ module ActiveModel
3
+ class PublishRangeValidator < ::ActiveModel::EachValidator
4
+ def validate_each(record, attribute, value)
5
+ if attribute == :display_from and not record.display_from.blank? and not record.display_until.blank? and record.display_until < record.display_from
6
+ record.errors.add attribute, :cannot_be_after_display_until
7
+ end
8
+ if attribute == :display_until and not record.display_until.blank? and not record.display_from.blank? and record.display_until <= record.display_from
9
+ record.errors.add attribute, :cannot_be_before_display_from
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,68 @@
1
+ module Humpyard
2
+ module ActiveRecord
3
+ module Acts
4
+ module Asset
5
+
6
+ def self.included(base)
7
+ base.has_one :asset, :as => :content_data, :class_name => 'Humpyard::Asset', :autosave => true
8
+ base.validate :asset_must_be_valid
9
+
10
+ begin
11
+ all_attributes = Humpyard::Asset.column_names.map{|a| a.to_s}
12
+ rescue
13
+ # Table not migrated
14
+ all_attributes = []
15
+ end
16
+ ignored_attributes = ['id', 'created_at', 'updated_at', 'content_data_id', 'content_data_type']
17
+ attributes_to_delegate = all_attributes - ignored_attributes
18
+ attributes_to_delegate.each do |attrib|
19
+ base.delegate "#{attrib}", "#{attrib}=", "#{attrib}?", :to => :asset
20
+ if attrib.match /_id$/
21
+ attrib = attrib.gsub /(_id)$/, ''
22
+ base.delegate "#{attrib}", "#{attrib}=", "#{attrib}?", :to => :asset
23
+ end
24
+ end
25
+
26
+ Humpyard::Asset.attr_accessible.each do |attr|
27
+ base.attr_accessible attr
28
+ end
29
+
30
+ base.extend ClassMethods
31
+
32
+ base.alias_method_chain :asset, :autobuild
33
+ base.alias_method_chain :column_for_attribute, :asset_column_for_attribute
34
+
35
+ end
36
+
37
+ def asset_with_autobuild
38
+ asset_without_autobuild || build_asset
39
+ end
40
+
41
+ def column_for_attribute_with_asset_column_for_attribute(attr)
42
+ ret = column_for_attribute_without_asset_column_for_attribute(attr) || Humpyard::Asset.new.column_for_attribute(attr)
43
+ end
44
+
45
+ module ClassMethods
46
+
47
+ end
48
+
49
+ protected
50
+ def asset_must_be_valid
51
+ unless asset.valid?
52
+ asset.errors.each do |attr, message|
53
+ errors.add(attr, message)
54
+ end
55
+ end
56
+ end
57
+
58
+ end
59
+ end
60
+ end
61
+ end
62
+
63
+ class ActiveRecord::Base
64
+ def self.acts_as_humpyard_asset(options = {})
65
+ set_table_name "#{Humpyard::config.table_name_prefix}assets_#{name.split('::').last.underscore.pluralize}" if options[:system_asset]
66
+ include Humpyard::ActiveRecord::Acts::Asset
67
+ end
68
+ end
@@ -0,0 +1,26 @@
1
+ module Humpyard
2
+ module ActiveRecord
3
+ module Acts
4
+ module ContainerElement
5
+ def self.included(base)
6
+ base.delegate "elements", "elements=", "elements?", :to => :element
7
+
8
+ base.extend ClassMethods
9
+ end
10
+
11
+ module ClassMethods
12
+ def is_humpyard_container_element?
13
+ true
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+
21
+ class ActiveRecord::Base
22
+ def self.acts_as_humpyard_container_element(options = {})
23
+ acts_as_humpyard_element options
24
+ include Humpyard::ActiveRecord::Acts::ContainerElement
25
+ end
26
+ end
@@ -0,0 +1,89 @@
1
+ module Humpyard
2
+ module ActiveRecord
3
+ module Acts
4
+ module Element
5
+ def self.included(base)
6
+ base.has_one :element, :as => :content_data, :class_name => 'Humpyard::Element', :autosave => true
7
+ base.validate :element_must_be_valid
8
+ base.alias_method_chain :element, :autobuild
9
+ base.alias_method_chain :column_for_attribute, :element_column_for_attribute
10
+
11
+ begin
12
+ all_attributes = Humpyard::Element.column_names
13
+ rescue
14
+ # Table not migrated
15
+ all_attributes = []
16
+ end
17
+ ignored_attributes = ['id', 'created_at', 'updated_at', 'content_data_id', 'content_data_type']
18
+ attributes_to_delegate = all_attributes - ignored_attributes
19
+ attributes_to_delegate.each do |attrib|
20
+ base.delegate "#{attrib}", "#{attrib}=", "#{attrib}?", :to => :element
21
+ if attrib.match /_id$/
22
+ attrib = attrib.gsub /(_id)$/, ''
23
+ base.delegate "#{attrib}", "#{attrib}=", "#{attrib}?", :to => :element
24
+ end
25
+ end
26
+
27
+ Humpyard::Element.attr_accessible.each do |attr|
28
+ base.attr_accessible attr
29
+ end
30
+
31
+ base.extend ClassMethods
32
+
33
+ end
34
+
35
+ def element_with_autobuild
36
+ element_without_autobuild || build_element
37
+ end
38
+
39
+ def column_for_attribute_with_element_column_for_attribute(attr)
40
+ ret = column_for_attribute_without_element_column_for_attribute(attr) || element.column_for_attribute(attr)
41
+ end
42
+
43
+ def is_humpyard_element?
44
+ self.class.is_humpyard_element?
45
+ end
46
+
47
+ def is_humpyard_container_element?
48
+ self.class.is_humpyard_container_element?
49
+ end
50
+
51
+ # def method_missing(meth, *args, &blk)
52
+ # element.send(meth, *args, &blk)
53
+ # rescue NoMethodError
54
+ # super
55
+ # end
56
+
57
+ module ClassMethods
58
+ def is_humpyard_element?
59
+ true
60
+ end
61
+
62
+ def is_humpyard_container_element?
63
+ false
64
+ end
65
+ end
66
+
67
+ module InstanceMethods
68
+
69
+ end
70
+
71
+ protected
72
+ def element_must_be_valid
73
+ unless element.valid?
74
+ element.errors.each do |attr, message|
75
+ errors.add(attr, message)
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
83
+
84
+ class ActiveRecord::Base
85
+ def self.acts_as_humpyard_element(options = {})
86
+ set_table_name "#{Humpyard::config.table_name_prefix}elements_#{name.split('::').last.underscore.pluralize}" if options[:system_element]
87
+ include Humpyard::ActiveRecord::Acts::Element
88
+ end
89
+ end
@@ -0,0 +1,101 @@
1
+ module Humpyard
2
+ module ActiveRecord
3
+ module Acts
4
+ module Page
5
+
6
+ def self.included(base)
7
+ base.has_one :page, :as => :content_data, :class_name => 'Humpyard::Page', :autosave => true
8
+ base.validate :page_must_be_valid
9
+
10
+ begin
11
+ all_attributes = Humpyard::Page.column_names + Humpyard::Page.translated_attribute_names.map{|a| a.to_s}
12
+ rescue
13
+ # Table not migrated
14
+ all_attributes = []
15
+ end
16
+ ignored_attributes = ['id', 'created_at', 'updated_at', 'content_data_id', 'content_data_type']
17
+ attributes_to_delegate = all_attributes - ignored_attributes
18
+ attributes_to_delegate.each do |attrib|
19
+ base.delegate "#{attrib}", "#{attrib}=", "#{attrib}?", :to => :page
20
+ if attrib.match /_id$/
21
+ attrib = attrib.gsub /(_id)$/, ''
22
+ base.delegate "#{attrib}", "#{attrib}=", "#{attrib}?", :to => :page
23
+ end
24
+ end
25
+
26
+ Humpyard::Page.attr_accessible.each do |attr|
27
+ base.attr_accessible attr
28
+ end
29
+
30
+ base.extend ClassMethods
31
+
32
+ base.alias_method_chain :page, :autobuild
33
+ base.alias_method_chain :column_for_attribute, :page_column_for_attribute
34
+
35
+ end
36
+
37
+ def page_with_autobuild
38
+ page_without_autobuild || build_page
39
+ end
40
+
41
+ def column_for_attribute_with_page_column_for_attribute(attr)
42
+ ret = column_for_attribute_without_page_column_for_attribute(attr) || Humpyard::Page.new.column_for_attribute(attr) || Humpyard::Page.translation_class.new.column_for_attribute(attr)
43
+ end
44
+
45
+ def parse_path(path)
46
+ nil
47
+ end
48
+
49
+ def is_humpyard_page?
50
+ self.class.is_humpyard_page?
51
+ end
52
+
53
+ def is_humpyard_dynamic_page?
54
+ self.class.is_humpyard_dynamic_page?
55
+ end
56
+
57
+ def is_humpyard_virtual_page?
58
+ self.class.is_humpyard_virtual_page?
59
+ end
60
+
61
+ # Return the logical modification time for the page, suitable for http caching, generational cache keys, etc.
62
+ def last_modified
63
+ rails_root_mtime = Time.zone.at(::File.new("#{Rails.root}").mtime)
64
+ timestamps = [rails_root_mtime, self.updated_at] + self.page.elements.collect{|e| e.last_modified}
65
+ timestamps.sort.last
66
+ end
67
+
68
+ module ClassMethods
69
+ def is_humpyard_page?
70
+ true
71
+ end
72
+
73
+ def is_humpyard_dynamic_page?
74
+ true
75
+ end
76
+
77
+ def is_humpyard_virtual_page?
78
+ false
79
+ end
80
+ end
81
+
82
+ protected
83
+ def page_must_be_valid
84
+ unless page.valid?
85
+ page.errors.each do |attr, message|
86
+ errors.add(attr, message)
87
+ end
88
+ end
89
+ end
90
+
91
+ end
92
+ end
93
+ end
94
+ end
95
+
96
+ class ActiveRecord::Base
97
+ def self.acts_as_humpyard_page(options = {})
98
+ set_table_name "#{Humpyard::config.table_name_prefix}pages_#{name.split('::').last.underscore.pluralize}" if options[:system_page]
99
+ include Humpyard::ActiveRecord::Acts::Page
100
+ end
101
+ end