adva 0.1.4 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (251) hide show
  1. checksums.yaml +4 -4
  2. data/adva.gemspec +3 -0
  3. data/app/assets/config/manifest.js +6 -0
  4. data/app/assets/javascripts/adva_cms/ckeditor.js.erb +12 -0
  5. data/app/assets/javascripts/adva_cms/concat_main_menus.js +13 -0
  6. data/app/assets/javascripts/adva_cms/jquery.table_tree.js +704 -0
  7. data/app/assets/javascripts/adva_cms.js +7 -0
  8. data/app/assets/javascripts/ckeditor/config.js.erb +94 -0
  9. data/app/assets/stylesheets/adva_cms/admin/common.scss +15 -1
  10. data/app/assets/stylesheets/adva_cms/admin/projection.scss +2 -5
  11. data/app/assets/stylesheets/adva_cms/admin/sidebar.scss +30 -9
  12. data/app/assets/stylesheets/adva_cms/admin.scss +1 -1
  13. data/app/controllers/admin/base_controller.rb +10 -24
  14. data/app/controllers/admin/page/articles_controller.rb +8 -27
  15. data/app/controllers/admin/page/categories_controller.rb +6 -9
  16. data/app/controllers/admin/page/links_controller.rb +6 -9
  17. data/app/controllers/admin/sections_controller.rb +7 -9
  18. data/app/controllers/admin/sites_controller.rb +9 -12
  19. data/app/controllers/admin/users_controller.rb +6 -9
  20. data/app/controllers/articles_controller.rb +30 -52
  21. data/app/controllers/base_controller.rb +8 -8
  22. data/app/controllers/password_controller.rb +3 -5
  23. data/app/controllers/session_controller.rb +3 -5
  24. data/app/helpers/activities_helper.rb +9 -20
  25. data/app/helpers/admin/base_helper.rb +4 -22
  26. data/app/helpers/base_helper.rb +1 -1
  27. data/app/helpers/content_helper.rb +7 -5
  28. data/app/helpers/resource_helper.rb +4 -5
  29. data/app/helpers/users_helper.rb +1 -1
  30. data/app/models/activity.rb +3 -0
  31. data/app/models/article.rb +0 -11
  32. data/app/models/category.rb +3 -3
  33. data/app/models/content.rb +10 -39
  34. data/app/models/link.rb +0 -1
  35. data/app/models/password_mailer.rb +6 -9
  36. data/app/models/section.rb +6 -7
  37. data/app/models/site.rb +0 -2
  38. data/app/models/user.rb +1 -2
  39. data/app/views/activity_notifier/new_content_notification.html.erb +5 -5
  40. data/app/views/admin/activities/_activities.html.erb +4 -4
  41. data/app/views/admin/activities/_comment.html.erb +21 -21
  42. data/app/views/admin/activities/_content.html.erb +4 -3
  43. data/app/views/admin/activities/_topic.html.erb +5 -5
  44. data/app/views/admin/install/confirmation.html.erb +3 -3
  45. data/app/views/admin/install/index.html.erb +14 -14
  46. data/app/views/admin/page/articles/_form.html.erb +28 -25
  47. data/app/views/admin/page/articles/_options.html.erb +3 -4
  48. data/app/views/admin/page/articles/edit.html.erb +3 -3
  49. data/app/views/admin/page/articles/new.html.erb +4 -4
  50. data/app/views/admin/page/categories/edit.html.erb +9 -9
  51. data/app/views/admin/page/categories/index.html.erb +16 -16
  52. data/app/views/admin/page/categories/new.html.erb +5 -3
  53. data/app/views/admin/page/contents/index.html.erb +3 -18
  54. data/app/views/admin/page/links/_form.html.erb +17 -17
  55. data/app/views/admin/page/links/_options.html.erb +16 -19
  56. data/app/views/admin/page/links/edit.html.erb +3 -3
  57. data/app/views/admin/page/links/new.html.erb +3 -3
  58. data/app/views/admin/sections/_form.html.haml +5 -5
  59. data/app/views/admin/sections/edit.html.haml +2 -2
  60. data/app/views/admin/sections/index.html.erb +18 -18
  61. data/app/views/admin/sections/new.html.erb +15 -13
  62. data/app/views/admin/sections/settings/_page.html.haml +4 -6
  63. data/app/views/admin/shared/_header.html.erb +5 -4
  64. data/app/views/admin/shared/_section_tree.html.erb +2 -2
  65. data/app/views/admin/sites/_email_notifications.html.erb +6 -7
  66. data/app/views/admin/sites/_form.html.erb +7 -7
  67. data/app/views/admin/sites/_recent_users.html.erb +4 -2
  68. data/app/views/admin/sites/_unapproved_comments.html.erb +1 -1
  69. data/app/views/admin/sites/index.html.erb +1 -1
  70. data/app/views/admin/sites/new.html.erb +2 -2
  71. data/app/views/admin/sites/show.html.erb +7 -8
  72. data/app/views/admin/users/edit.html.erb +1 -1
  73. data/app/views/admin/users/index.html.erb +10 -10
  74. data/app/views/admin/users/new.html.erb +1 -1
  75. data/app/views/admin/users/show.html.erb +7 -7
  76. data/app/views/layouts/admin.html.haml +3 -5
  77. data/app/views/layouts/login.html.erb +1 -1
  78. data/app/views/password/edit.html.erb +12 -5
  79. data/app/views/password/new.html.erb +7 -7
  80. data/app/views/password_mailer/reset_password_email.html.erb +21 -1
  81. data/app/views/password_mailer/updated_password_email.html.erb +3 -1
  82. data/app/views/session/new.html.erb +9 -9
  83. data/app/views/shared/_flash.html.erb +2 -2
  84. data/app/views/shared/_sidebar.html.erb +2 -2
  85. data/config/initializers/ckeditor.rb +61 -0
  86. data/config/initializers/time_format.rb +2 -0
  87. data/lib/adva/authenticate_user.rb +193 -0
  88. data/lib/{active_record → adva}/belongs_to_author.rb +4 -4
  89. data/lib/adva/event.rb +34 -0
  90. data/lib/adva/extensible_forms.rb +285 -0
  91. data/lib/{has_options.rb → adva/has_options.rb} +5 -7
  92. data/lib/adva/has_permalink.rb +36 -0
  93. data/lib/adva/version.rb +1 -1
  94. data/lib/adva.rb +10 -36
  95. data/lib/rails_ext/action_controller/event_helper.rb +1 -1
  96. data/lib/rails_ext.rb +0 -9
  97. data/vendor/gems/cacheable_flash/.gitignore +8 -0
  98. data/vendor/gems/cacheable_flash/Gemfile +8 -0
  99. data/vendor/gems/cacheable_flash/README.md +35 -0
  100. data/vendor/gems/cacheable_flash/Rakefile +4 -0
  101. data/vendor/gems/cacheable_flash/bin/console +15 -0
  102. data/vendor/gems/cacheable_flash/bin/setup +8 -0
  103. data/vendor/gems/cacheable_flash/cacheable_flash.gemspec +38 -0
  104. data/vendor/gems/cacheable_flash/lib/cacheable_flash/controller.rb +29 -0
  105. data/vendor/gems/cacheable_flash/lib/cacheable_flash/javascript.js +19 -0
  106. data/vendor/gems/cacheable_flash/lib/cacheable_flash/middleware.rb +30 -0
  107. data/vendor/gems/cacheable_flash/lib/cacheable_flash/version.rb +5 -0
  108. data/vendor/gems/cacheable_flash/lib/cacheable_flash.rb +12 -0
  109. data/vendor/gems/simple_taggable/lib/tag_list.rb +1 -1
  110. data/vendor/gems/tags/lib/menu.rb +1 -1
  111. data/vendor/gems/tags/lib/tags/tag.rb +1 -1
  112. metadata +71 -144
  113. data/app/assets/javascripts/adva_cms/admin/jquery.admin.js +0 -23
  114. data/app/assets/javascripts/adva_cms/admin/jquery.article.js +0 -22
  115. data/app/assets/javascripts/adva_cms/admin/jquery.cached_pages.js +0 -14
  116. data/app/assets/javascripts/adva_cms/admin/jquery.table_tree.js +0 -7
  117. data/app/assets/javascripts/adva_cms/application.js +0 -13
  118. data/app/assets/javascripts/adva_cms/base.js +0 -4
  119. data/app/assets/javascripts/adva_cms/cookie.js +0 -49
  120. data/app/assets/javascripts/adva_cms/jquery/jquery-lowpro.js +0 -224
  121. data/app/assets/javascripts/adva_cms/jquery/jquery.qtip.js +0 -2085
  122. data/app/assets/javascripts/adva_cms/jquery/jquery.table_tree.js +0 -307
  123. data/app/assets/javascripts/adva_cms/jquery/jquery.tablednd_0_5.js +0 -386
  124. data/app/assets/javascripts/adva_cms/jquery.common.js +0 -41
  125. data/app/assets/javascripts/adva_cms/jquery.dates.js +0 -51
  126. data/app/assets/javascripts/adva_cms/jquery.flash.js +0 -59
  127. data/app/assets/javascripts/adva_cms/jquery.roles.js +0 -25
  128. data/app/assets/javascripts/adva_cms/json.js +0 -139
  129. data/app/controllers/admin/base_account_controller.rb +0 -13
  130. data/app/controllers/admin/install_controller.rb +0 -61
  131. data/app/controllers/admin/plugins_controller.rb +0 -38
  132. data/app/helpers/meta_tags_helper.rb +0 -30
  133. data/app/models/account.rb +0 -7
  134. data/app/models/event.rb +0 -34
  135. data/app/views/admin/articles/_meta_tags.html.erb +0 -7
  136. data/app/views/admin/cached_pages/_filter.html.erb +0 -8
  137. data/app/views/admin/cached_pages/destroy.js.erb +0 -18
  138. data/app/views/admin/cached_pages/index.html.erb +0 -26
  139. data/app/views/admin/plugins/_form.html.erb +0 -11
  140. data/app/views/admin/plugins/index.html.erb +0 -16
  141. data/app/views/admin/plugins/show.html.erb +0 -43
  142. data/app/views/admin/shared/_language_select.html.erb +0 -6
  143. data/app/views/admin/shared/_section_summary.html.erb +0 -23
  144. data/app/views/admin/sites/_meta_tags.html.erb +0 -15
  145. data/app/views/layouts/default.html.erb +0 -38
  146. data/app/views/layouts/simple.html.erb +0 -22
  147. data/app/views/shared/_footer.html.erb +0 -4
  148. data/app/views/shared/messages/insufficient_permissions.html.erb +0 -4
  149. data/config/initializers/article.rb +0 -8
  150. data/config/initializers/has_options.rb +0 -2
  151. data/config/initializers/has_permalink.rb +0 -2
  152. data/config/initializers/site.rb +0 -8
  153. data/config/locales/en.yml +0 -1319
  154. data/lib/action_controller/authenticate_anonymous.rb +0 -69
  155. data/lib/action_controller/authenticate_user.rb +0 -203
  156. data/lib/core_ext.rb +0 -7
  157. data/lib/extensible_forms.rb +0 -284
  158. data/lib/has_permalink.rb +0 -33
  159. data/lib/login/helper_integration.rb +0 -11
  160. data/lib/login/mail_config.rb +0 -39
  161. data/lib/rails_ext/action_controller/cacheable_flash.rb +0 -30
  162. data/lib/rails_ext/action_controller/content_for_assignments.rb +0 -106
  163. data/lib/rails_ext/action_controller/page_caching.rb +0 -23
  164. data/lib/rails_ext/action_controller/responds_to_parent.rb +0 -46
  165. data/lib/rails_ext/active_record/exists.rb +0 -5
  166. data/lib/rails_ext/active_record/sti_instantiation.rb +0 -35
  167. data/lib/rails_ext/active_record/sticky_changes.rb +0 -30
  168. data/lib/rails_ext/railties/plugin.rb +0 -58
  169. data/lib/rails_ext/railties/plugin_configuration.rb +0 -72
  170. data/lib/registry.rb +0 -49
  171. data/lib/tasks/translation.rake +0 -69
  172. data/lib/time_hacks.rb +0 -57
  173. data/lib/webrat_patch.rb +0 -11
  174. data/test/meta_tags_test.rb +0 -42
  175. data/vendor/gems/has_counter/.gitignore +0 -17
  176. data/vendor/gems/has_counter/Gemfile +0 -4
  177. data/vendor/gems/has_counter/LICENSE +0 -22
  178. data/vendor/gems/has_counter/MIT-LICENSE +0 -20
  179. data/vendor/gems/has_counter/README.markdown +0 -64
  180. data/vendor/gems/has_counter/README.md +0 -29
  181. data/vendor/gems/has_counter/Rakefile +0 -2
  182. data/vendor/gems/has_counter/db/migrate/20080601194338_create_counters_table.rb.rb +0 -13
  183. data/vendor/gems/has_counter/has_counter.gemspec +0 -17
  184. data/vendor/gems/has_counter/lib/active_record/has_counter.rb +0 -67
  185. data/vendor/gems/has_counter/lib/counter.rb +0 -23
  186. data/vendor/gems/has_counter/lib/has_counter/version.rb +0 -3
  187. data/vendor/gems/has_counter/lib/has_counter.rb +0 -4
  188. data/vendor/gems/has_counter/spec/has_counter.sqlite3.db +0 -0
  189. data/vendor/gems/has_counter/spec/has_counter_spec.rb +0 -55
  190. data/vendor/gems/has_counter/spec/spec_helper.rb +0 -117
  191. data/vendor/gems/has_filter/.gitignore +0 -17
  192. data/vendor/gems/has_filter/Gemfile +0 -4
  193. data/vendor/gems/has_filter/LICENSE +0 -22
  194. data/vendor/gems/has_filter/README.md +0 -29
  195. data/vendor/gems/has_filter/Rakefile +0 -2
  196. data/vendor/gems/has_filter/app/assets/images/has_filter/filter_add.png +0 -0
  197. data/vendor/gems/has_filter/app/assets/images/has_filter/filter_button_left.png +0 -0
  198. data/vendor/gems/has_filter/app/assets/images/has_filter/filter_button_right.png +0 -0
  199. data/vendor/gems/has_filter/app/assets/images/has_filter/filter_remove.png +0 -0
  200. data/vendor/gems/has_filter/app/assets/javascripts/has_filter/filter.js +0 -35
  201. data/vendor/gems/has_filter/app/assets/javascripts/has_filter/jquery.filter.js +0 -23
  202. data/vendor/gems/has_filter/app/assets/stylesheets/has_filter/alternate/filter.scss +0 -102
  203. data/vendor/gems/has_filter/app/assets/stylesheets/has_filter/filter.scss +0 -100
  204. data/vendor/gems/has_filter/app/helpers/filter_helper.rb +0 -3
  205. data/vendor/gems/has_filter/has_filter.gemspec +0 -17
  206. data/vendor/gems/has_filter/init.rb +0 -3
  207. data/vendor/gems/has_filter/lib/has_filter/active_record/act_macro.rb +0 -102
  208. data/vendor/gems/has_filter/lib/has_filter/filter/base.rb +0 -67
  209. data/vendor/gems/has_filter/lib/has_filter/filter/categorized.rb +0 -24
  210. data/vendor/gems/has_filter/lib/has_filter/filter/chain.rb +0 -45
  211. data/vendor/gems/has_filter/lib/has_filter/filter/set.rb +0 -80
  212. data/vendor/gems/has_filter/lib/has_filter/filter/state.rb +0 -25
  213. data/vendor/gems/has_filter/lib/has_filter/filter/tagged.rb +0 -22
  214. data/vendor/gems/has_filter/lib/has_filter/filter/text.rb +0 -55
  215. data/vendor/gems/has_filter/lib/has_filter/filter.rb +0 -17
  216. data/vendor/gems/has_filter/lib/has_filter/version.rb +0 -3
  217. data/vendor/gems/has_filter/lib/has_filter.rb +0 -22
  218. data/vendor/gems/has_filter/test/db/setup.rb +0 -45
  219. data/vendor/gems/has_filter/test/db/test.sqlite3.db +0 -0
  220. data/vendor/gems/has_filter/test/fixtures.rb +0 -15
  221. data/vendor/gems/has_filter/test/has_filter/filter_chain_test.rb +0 -41
  222. data/vendor/gems/has_filter/test/has_filter/filter_scopes_test.rb +0 -102
  223. data/vendor/gems/has_filter/test/has_filter/filter_tags_test.rb +0 -113
  224. data/vendor/gems/has_filter/test/has_filter/integration.rb +0 -15
  225. data/vendor/gems/has_filter/test/has_filter/scopes_test.rb +0 -48
  226. data/vendor/gems/has_filter/test/log/test.log +0 -34346
  227. data/vendor/gems/has_filter/test/models.rb +0 -23
  228. data/vendor/gems/has_filter/test/templates/has_filter/test/index.html.erb +0 -5
  229. data/vendor/gems/has_filter/test/test_helper.rb +0 -66
  230. data/vendor/gems/xss_terminate/.gitignore +0 -17
  231. data/vendor/gems/xss_terminate/Gemfile +0 -4
  232. data/vendor/gems/xss_terminate/LICENSE +0 -22
  233. data/vendor/gems/xss_terminate/MIT-LICENSE +0 -20
  234. data/vendor/gems/xss_terminate/README +0 -94
  235. data/vendor/gems/xss_terminate/README.md +0 -29
  236. data/vendor/gems/xss_terminate/Rakefile +0 -23
  237. data/vendor/gems/xss_terminate/lib/html5lib_sanitize.rb +0 -2453
  238. data/vendor/gems/xss_terminate/lib/rails_sanitize.rb +0 -8
  239. data/vendor/gems/xss_terminate/lib/xss_terminate/version.rb +0 -3
  240. data/vendor/gems/xss_terminate/lib/xss_terminate.rb +0 -141
  241. data/vendor/gems/xss_terminate/tasks/xss_terminate_tasks.rake +0 -7
  242. data/vendor/gems/xss_terminate/test/models/comment.rb +0 -5
  243. data/vendor/gems/xss_terminate/test/models/entry.rb +0 -7
  244. data/vendor/gems/xss_terminate/test/models/message.rb +0 -3
  245. data/vendor/gems/xss_terminate/test/models/person.rb +0 -5
  246. data/vendor/gems/xss_terminate/test/models/review.rb +0 -5
  247. data/vendor/gems/xss_terminate/test/schema.rb +0 -34
  248. data/vendor/gems/xss_terminate/test/setup_test.rb +0 -16
  249. data/vendor/gems/xss_terminate/test/xss_terminate_test.rb +0 -50
  250. data/vendor/gems/xss_terminate/xss_terminate.gemspec +0 -17
  251. /data/lib/tasks/{adva_cms.rake → adva.rake} +0 -0
@@ -1,79 +1,57 @@
1
1
  class ArticlesController < BaseController
2
- before_action :set_section
3
- before_action :adjust_action
4
- before_action :set_category, :only => :index
5
- before_action :set_tags, :only => :index
6
- before_action :set_articles, :only => :index
7
- before_action :set_article, :only => :show
8
-
9
- authenticates_anonymous_user
10
-
11
2
  def index
12
- @article = @articles.first
3
+ @article = articles.first
13
4
  if !@article
14
5
  raise ActiveRecord::RecordNotFound
15
- elsif @article.is_a?(Link)
16
- redirect_to @article.body
17
6
  else
18
7
  show
19
8
  end
20
9
  end
21
10
 
22
11
  def show
23
- if stale?(etag: [@article, @section, @site], last_modified: [@article, @section, @site].map(&:updated_at).compact.max, public: true)
24
- render template: "#{@section.type.tableize}/articles/show"
12
+ @article ||= section.articles.find_by_permalink!(params[:permalink])
13
+ if @article.draft?
14
+ raise ActiveRecord::RecordNotFound unless current_user.admin?
25
15
  end
26
- end
16
+ return redirect_to @article.body if @article.is_a?(Link)
27
17
 
28
- protected
29
-
30
- def current_resource
31
- @section.try(:single_article_mode) ? @section : @article || @section
18
+ if stale?([*@article.cells, @article, section, site], public: true)
19
+ render template: "#{section.type.tableize}/articles/show"
32
20
  end
21
+ end
33
22
 
34
- # adjusts the action from :index to :show when the current section is in single-article mode ...
35
- def adjust_action
36
- if params[:action] == 'index' and @section.try(:single_article_mode)
37
- # ... but only if there is one published article
38
- unless @section.contents.blank? || (@section.contents.first.draft? && current_user.admin?)
39
- @action_name = @_params[:action] = request.parameters['action'] = 'show'
40
- end
41
- end
42
- end
23
+ private
43
24
 
44
- def set_article
45
- @article = if params[:permalink]
46
- @section.contents.includes(:author).find_by_permalink!(params[:permalink])
47
- elsif @section.try(:single_article_mode)
48
- @section.contents.first
49
- end
50
- end
51
-
52
- def set_articles
53
- scope = @category ? @category.all_contents : @section.contents
54
- scope = scope.tagged(@tags) if @tags.present?
25
+ helper_method def articles
26
+ @articles ||= begin
27
+ scope = category ? category.all_contents : section.contents
28
+ scope = scope.tagged(tags) if tags.any?
55
29
  scope = scope.published
56
- @articles = scope.paginate(page: current_page).limit(@section.contents_per_page)
30
+ scope.paginate(page: current_page).limit(section.contents_per_page.to_i)
57
31
  end
32
+ end
58
33
 
59
- def set_category
60
- if params[:category_id]
61
- @category = @section.categories.find(params[:category_id])
62
- raise ActiveRecord::RecordNotFound unless @category
63
- end
34
+ helper_method def category
35
+ if !defined?(@category)
36
+ @category = params[:category_id] ? section.categories.find(params[:category_id]) : nil
64
37
  end
38
+ @category
39
+ end
65
40
 
66
- def set_tags
67
- if params[:tags]
41
+ helper_method def tags
42
+ if !defined?(@tags)
43
+ @tags = if params[:tags]
68
44
  names = params[:tags].split('+')
69
45
  @tags = Tag.where(name: names).pluck(:name)
70
46
  raise ActiveRecord::RecordNotFound unless @tags.size == names.size
47
+ else
48
+ []
71
49
  end
72
50
  end
51
+ @tags
52
+ end
73
53
 
74
- def guard_view_permissions
75
- if @article && @article.draft?
76
- raise ActiveRecord::RecordNotFound unless current_user.admin?
77
- end
78
- end
54
+ helper_method def current_resource
55
+ section.try(:single_article_mode) ? section : @article || section
56
+ end
79
57
  end
@@ -1,18 +1,19 @@
1
+ require "adva/authenticate_user"
2
+
1
3
  class BaseController < ApplicationController
2
4
  class SectionRoutingError < ActionController::RoutingError; end
3
- helper :base, :resource, :content, :meta_tags
4
- helper HasFilter::Helper
5
+ helper :base, :resource, :content
5
6
  helper TableBuilder
6
7
 
7
8
  include CacheableFlash
8
9
  include ContentHelper
9
10
  include ResourceHelper
10
11
 
12
+ include Adva::AuthenticateUser
13
+
11
14
  before_action :set_site, :set_timezone
12
15
  attr_accessor :site, :section
13
16
 
14
- layout 'default'
15
-
16
17
  def site
17
18
  @site ||= Site.find_by_host!(request.host)
18
19
  end
@@ -21,12 +22,11 @@ class BaseController < ApplicationController
21
22
 
22
23
  alias :set_site :site
23
24
 
24
- def sections
25
+ helper_method def sections
25
26
  @sections ||= site.sections
26
27
  end
27
- helper_method :sections
28
28
 
29
- def set_section
29
+ helper_method def section
30
30
  @section ||= begin
31
31
  if params.key?(:section_permalink)
32
32
  sections.find_by_permalink!(params[:section_permalink])
@@ -37,7 +37,7 @@ class BaseController < ApplicationController
37
37
  raise ActiveRecord::RecordNotFound unless @section.published?(true) || current_user.admin?
38
38
  @section
39
39
  end
40
- alias :section :set_section
40
+ alias :set_section :section
41
41
 
42
42
  def set_timezone
43
43
  Time.zone = @site.timezone if @site
@@ -6,12 +6,11 @@ class PasswordController < BaseController
6
6
  end
7
7
 
8
8
  def create
9
- flash[:notice] = t(:'adva.passwords.flash.create.notification')
10
9
  if user = User.find_by_email(params[:user][:email])
11
10
  token = user.assign_token 'password'
12
11
  user.save!
13
12
  trigger_event user, :password_reset_requested, :token => "#{user.id};#{token}"
14
- redirect_to edit_password_url
13
+ redirect_to edit_password_url, notice: "If the given email address exists in our system, we have just sent you an email with information on how to reset your password."
15
14
  else
16
15
  render :action => :new
17
16
  end
@@ -23,12 +22,11 @@ class PasswordController < BaseController
23
22
  def update
24
23
  if current_user && current_user.update(params[:user].slice(:password))
25
24
  trigger_event current_user, :password_updated
26
- flash[:notice] = t(:'adva.passwords.flash.update.success')
27
25
  authenticate_user(:email => current_user.email, :password => params[:user][:password])
28
- redirect_to "/"
26
+ redirect_to "/", notice: "Your password was changed successfully."
29
27
  else
30
28
  params[:token] = nil # ugh
31
- flash[:error] = t(:'adva.passwords.flash.update.failure')
29
+ flash.now.alert = "Your password could not be changed."
32
30
  render :action => :edit
33
31
  end
34
32
  end
@@ -12,19 +12,17 @@ class SessionController < BaseController
12
12
  def create
13
13
  if authenticate_user(params[:user])
14
14
  remember_me! if params[:user][:remember_me]
15
- flash[:notice] = t(:'adva.session.flash.create.success')
16
- redirect_to return_from(:login)
15
+ redirect_to return_from(:login), notice: "Logged in successfully."
17
16
  else
18
17
  @user = User.new(:email => params[:user][:email])
19
18
  @remember_me = params[:user][:remember_me]
20
- flash.now[:error] = t(:'adva.session.flash.create.failure')
19
+ flash.now.alert = "Could not login with this email and password."
21
20
  render :action => 'new'
22
21
  end
23
22
  end
24
23
 
25
24
  def destroy
26
25
  logout
27
- flash[:notice] = t(:'adva.session.flash.destroy.success')
28
- redirect_to return_from(:logout)
26
+ redirect_to return_from(:logout), notice: "Logged out successfully."
29
27
  end
30
28
  end
@@ -6,7 +6,7 @@ module ActivitiesHelper
6
6
  :locals => { :activity => activity, :recent => recent }
7
7
  end.join
8
8
  else
9
- html = %(<li class="empty shade">#{I18n.t(:'adva.activity.none')}.</li>)
9
+ html = %(<li class="empty shade">Nothing happened.</li>)
10
10
  end
11
11
  raw %(<ul class="activities">#{html}</ul>)
12
12
  end
@@ -19,34 +19,22 @@ module ActivitiesHelper
19
19
 
20
20
  def activity_datetime(activity, short = false)
21
21
  if activity.from and short
22
- from = activity.from.to_s(:time_only)
23
- to = activity.to.to_s(:time_only)
22
+ from = activity.from.to_fs(:time_only)
23
+ to = activity.to.to_fs(:time_only)
24
24
  "#{from} - #{to}"
25
25
  elsif activity.from and activity.from.to_date != activity.to.to_date
26
- from = activity.from.to_ordinalized_s(:plain)
27
- to = activity.to.to_ordinalized_s(:plain)
26
+ from = activity.from.to_fs(:long_ordinalized)
27
+ to = activity.to.to_fs(:long_ordinal)
28
28
  "#{from} - #{to}"
29
29
  elsif activity.from
30
- from = activity.from.to_ordinalized_s(:plain)
31
- to = activity.to.to_ordinalized_s(:time_only)
30
+ from = activity.from.to_fs(:long_ordinal)
31
+ to = activity.to.to_fs(:time_only)
32
32
  "#{from} - #{to}"
33
33
  else
34
- activity.created_at.send *(short ? [:to_s, :time_only] : [:to_ordinalized_s, :plain])
34
+ activity.created_at.to_fs(short ? :time_only : :long_ordinal)
35
35
  end
36
36
  end
37
37
 
38
- # def activity_datetime(activity, short = false)
39
- # from, to = if activity.from && short
40
- # [l(activity.from, :format => :time), l(activity.to, :format => :time)]
41
- # elsif activity.from && activity.from.to_date != activity.to.to_date
42
- # [l(activity.from, :format => :short), l(activity.to, :format => :short)]
43
- # elsif activity.from
44
- # [l(activity.from, :format => :short), l(activity.to, :format => :time)]
45
- # end
46
-
47
- # t(:'adva.activity.from_to', :from => from, :to => to)
48
- # end
49
-
50
38
  def activity_object_edit_url(activity)
51
39
  type = activity.object_attributes['type'] || activity.object_type
52
40
  send "edit_admin_#{type}_path".downcase, activity.site_id, activity.section_id, activity.object_id
@@ -71,3 +59,4 @@ module ActivitiesHelper
71
59
  end
72
60
  end
73
61
  end
62
+
@@ -1,8 +1,8 @@
1
1
  module Admin::BaseHelper
2
2
  def save_or_cancel_links(builder, options = {})
3
- save_text = options.delete(:save_text) || t(:'adva.common.save')
4
- or_text = options.delete(:or_text) || t(:'adva.common.connector.or')
5
- cancel_text = options.delete(:cancel_text) || t(:'adva.common.cancel')
3
+ save_text = options.delete(:save_text) || "Save"
4
+ or_text = options.delete(:or_text) || "or"
5
+ cancel_text = options.delete(:cancel_text) || "Cancel"
6
6
  cancel_url = options.delete(:cancel_url)
7
7
 
8
8
  save_options = options.delete(:save) || {}
@@ -18,29 +18,11 @@ module Admin::BaseHelper
18
18
  end
19
19
 
20
20
  def link_to_profile(options = {})
21
- name = options[:name].nil? ? t(:'adva.links.profile') : options[:name]
21
+ name = options[:name].nil? ? "Profile" : options[:name]
22
22
  path = admin_user_path(current_user)
23
23
  link_to(name, path)
24
24
  end
25
25
 
26
- def links_to_content_translations(content, &block)
27
- return '' if content.new_record?
28
- block = Proc.new { |locale| link_to_edit(locale, content, :cl => locale) } unless block
29
- locales = content.translated_locales.map { |locale| block.call(locale.to_s) }
30
- content_tag(:span, :class => 'content_translations') do
31
- t(:"adva.#{content[:type].tableize}.translation_links", :locales => locales.join(', ')) +
32
- "<p class=\"hint\" for=\"content_translations\">#{t(:'adva.hints.content_translations')}</p>"
33
- end
34
- end
35
-
36
- def link_to_clear_cached_pages(site)
37
- link_to(t(:'adva.cached_pages.links.clear_all'), admin_cached_pages_path(site), :method => :delete)
38
- end
39
-
40
- def link_to_restore_plugin_defaults(site, plugin)
41
- link_to(t(:'adva.titles.restore_defaults'), admin_plugin_path(site, plugin), :data => { :confirm => t(:'adva.plugins.confirm_reset') })
42
- end
43
-
44
26
  # FIXME: translations
45
27
  def page_cached_at(page)
46
28
  if Date.today == page.updated_at.to_date
@@ -34,7 +34,7 @@ module BaseHelper
34
34
  def filter_options
35
35
  FilteredColumn.filters.keys.inject([]) do |arr, key|
36
36
  arr << [FilteredColumn.filters[key].filter_name, key.to_s]
37
- end.unshift [t(:'adva.settings.filter_options.plain_html'), '']
37
+ end.unshift ["Plain HTML", '']
38
38
  end
39
39
 
40
40
  def author_options(users)
@@ -31,7 +31,7 @@ module ContentHelper
31
31
  def content_status(content)
32
32
  return "<span>&nbsp;</span>" unless content.respond_to?(:published?)
33
33
  klass = content.published? ? 'published' : 'pending'
34
- text = content.published? ? t(:'adva.titles.published') : t(:'adva.titles.pending')
34
+ text = content.published? ? "Published" : "Pending"
35
35
 
36
36
  "<span title='#{text}' alt='#{text}' class='status #{klass}'>#{text}</span>"
37
37
  end
@@ -40,7 +40,7 @@ module ContentHelper
40
40
  options = args.extract_options!
41
41
  content, text = *args.reverse
42
42
 
43
- text ||= :"adva.#{content.class.name.tableize}.links.preview"
43
+ text ||= "Preview"
44
44
  url = show_path(content, :cl => content.class.locale, :namespace => nil)
45
45
 
46
46
  options.reverse_merge!(:url => url, :class => "preview #{content.class.name.underscore}")
@@ -64,8 +64,10 @@ module ContentHelper
64
64
 
65
65
  def links_to_content_categories(content, key = nil)
66
66
  return if content.categories.empty?
67
- links = content.categories.map { |category| link_to_category content.section, category }
68
- key ? t(key, :links => links.join(', ')) : links
67
+ links = content.categories.map do |category|
68
+ link_to_category content.section, category
69
+ end
70
+ raw "in: #{links.join(', ')}"
69
71
  end
70
72
 
71
73
  def link_to_tag(*args, &block)
@@ -84,7 +86,7 @@ module ContentHelper
84
86
  def links_to_content_tags(content, key = nil)
85
87
  return if content.tags.empty?
86
88
  links = content.tags.map { |tag| link_to_tag content.section, tag }
87
- key ? t(key, links: links.join(', ')).html_safe : links
89
+ raw "tagged: #{links.join(', ')}"
88
90
  end
89
91
 
90
92
  def content_category_checkbox(content, category)
@@ -73,7 +73,7 @@ module ResourceHelper
73
73
 
74
74
  def resource_link_id(action, type, resource)
75
75
  id = [action, type]
76
- id << resource.id if resource.is_a?(ActiveRecord::Base) && !action.in?(:index, :new)
76
+ id << resource.id if resource.is_a?(ActiveRecord::Base) && !%i[index name].include?(action)
77
77
  id.join('_')
78
78
  end
79
79
 
@@ -103,14 +103,14 @@ module ResourceHelper
103
103
  def normalize_resource_link_options(options, action, type, resource)
104
104
  options[:class] ||= "#{action} #{type}"
105
105
  options[:id] ||= resource_link_id(action, type, resource)
106
- options[:title] ||= t(:"adva.titles.#{action}")
106
+ options[:title] ||= action.to_s.titleize
107
107
  options.reverse_merge!(resource_delete_options(type, options)) if action == :delete
108
108
  options
109
109
  end
110
110
 
111
111
  def normalize_resource_link_text(text, action, type)
112
112
  type = type.to_s.gsub('/', '_').pluralize
113
- text ||= t(:"adva.#{type}.links.#{action}", :default => :"adva.resources.links.#{action}")
113
+ text ||= action.capitalize
114
114
  text = t(text) if text.is_a?(Symbol)
115
115
  text
116
116
  end
@@ -118,8 +118,7 @@ module ResourceHelper
118
118
  def resource_delete_options(type, options)
119
119
  type = type.to_s.gsub('/', '_').pluralize
120
120
  message = options.delete(:confirm)
121
- message ||= t(:"adva.#{type}.confirm_delete", :default => :"adva.resources.confirm_delete")
122
- message = t(message) if message.is_a?(Symbol)
121
+ message ||= "Are you sure you want to delete this #{type}?"
123
122
  { :data => { :confirm => message }, :method => :delete }
124
123
  end
125
124
  end
@@ -1,7 +1,7 @@
1
1
  module UsersHelper
2
2
  def who(name)
3
3
  name = name.name if name.is_a? User
4
- return current_user.name == name ? t(:'adva.common.you') : name
4
+ return current_user.name == name ? "You" : name
5
5
  end
6
6
 
7
7
  def gravatar_img(user, options = {})
@@ -1,3 +1,5 @@
1
+ require "adva/belongs_to_author"
2
+
1
3
  class Activity < ActiveRecord::Base
2
4
  belongs_to :site
3
5
  belongs_to :section
@@ -11,6 +13,7 @@ class Activity < ActiveRecord::Base
11
13
  end
12
14
  }
13
15
 
16
+ include Adva::BelongsToAuthor
14
17
  belongs_to_author
15
18
 
16
19
  serialize :actions
@@ -1,13 +1,9 @@
1
1
  class Article < Content
2
2
  # default_scope :order => "#{self.table_name}.published_at DESC"
3
3
 
4
- filters_attributes :except => [:excerpt, :excerpt_html, :body, :body_html, :cached_tag_list]
5
-
6
4
  validates_presence_of :title, :body
7
5
  validates_uniqueness_of :permalink, scope: :section_id, case_sensitive: true
8
6
 
9
- class_attribute :meta_fields, default: %w(keywords description author copyright geourl)
10
-
11
7
  class << self
12
8
  def locale
13
9
  "en"
@@ -39,11 +35,4 @@ class Article < Content
39
35
  date = [:year, :month, :day].map { |key| [key, (published? ? published_at : created_at).send(key)] }.flatten
40
36
  Hash[:permalink, permalink, *date]
41
37
  end
42
-
43
- def default_meta_description
44
- sanitizer = defined?(Rails::Html::FullSanitizer) ? Rails::Html::FullSanitizer.new : HTML::FullSanitizer.new
45
- sanitized_excerpt = sanitizer.sanitize(excerpt || "").gsub(/\s+/, " ").strip.truncate(160)
46
- sanitized_body = sanitizer.sanitize(body || "").gsub(/\s+/, " ").strip.truncate(160)
47
- sanitized_excerpt.present? ? sanitized_excerpt : sanitized_body
48
- end
49
38
  end
@@ -1,10 +1,10 @@
1
1
  require "awesome_nested_set"
2
- require "has_permalink"
2
+ require "adva/has_permalink"
3
3
 
4
4
  class Category < ActiveRecord::Base
5
5
  acts_as_nested_set :scope => :section_id
6
6
 
7
- include HasPermalink
7
+ include Adva::HasPermalink
8
8
  has_permalink :title, :url_attribute => :permalink, :sync_url => true, :only_when_blank => true, :scope => :section_id
9
9
 
10
10
  belongs_to :section, :foreign_key => 'section_id'
@@ -26,7 +26,7 @@ class Category < ActiveRecord::Base
26
26
  end
27
27
 
28
28
  def all_contents
29
- Content.by_category(self)
29
+ Content.by_category(self).order(published_at: :desc)
30
30
  end
31
31
 
32
32
  protected
@@ -1,23 +1,22 @@
1
+ require "adva/has_permalink"
2
+ require "adva/belongs_to_author"
3
+
1
4
  class Content < ActiveRecord::Base
2
5
  acts_as_nested_set :scope => :section_id
3
6
 
4
- # TODO is this needed?
5
- class Version < ActiveRecord::Base
6
- filters_attributes :none => true
7
- end
8
-
9
- has_filter :tagged, :categorized,
10
- :text => { :attributes => [:title, :body, :excerpt] },
11
- :state => { :states => [:published, :unpublished] }
12
-
13
7
  acts_as_taggable
14
8
 
15
- instantiates_with_sti
9
+ include Adva::HasPermalink
16
10
  has_permalink :title, :url_attribute => :permalink, :sync_url => true, :only_when_blank => true, :scope => :section_id
17
- filtered_column :body, :excerpt
11
+
12
+ filtered_column :body, :excerpt # TODO rm all of this and the associated _html columns
13
+
14
+ has_cells :body, :excerpt if respond_to?(:has_cells)
18
15
 
19
16
  belongs_to :site
20
17
  belongs_to :section, :touch => true
18
+
19
+ include Adva::BelongsToAuthor
21
20
  belongs_to_author :validate => true
22
21
 
23
22
  has_many :asset_assignments # TODO :dependent => :delete_all?
@@ -63,34 +62,6 @@ class Content < ActiveRecord::Base
63
62
  permalink
64
63
  end
65
64
 
66
- def cache_key(*timestamp_names)
67
- if new_record?
68
- "#{model_name.cache_key}/new"
69
- else
70
- timestamp_names = [:updated_at, :cells_updated_at] if timestamp_names.none?
71
- timestamp = timestamp_names.map { |attr| send(attr) }.compact.map(&:to_time).max
72
- timestamp = timestamp.utc.to_s(cache_timestamp_format)
73
- "#{model_name.cache_key}/#{id}-#{timestamp}"
74
- end
75
- end
76
-
77
- def cells_updated_at
78
- if defined?(OutputFilter::Cells)
79
- OutputFilter::Cells.new(nil).send(:cells, body_html).values.map do |name, state, attrs|
80
- attrs = HashWithIndifferentAccess.new(attrs)
81
- cell = "#{name.camelize}Cell".constantize.new
82
- args = [state]
83
- attrs.delete "class" # ignore styling class
84
- attrs[:format] = :timestamp
85
- args << attrs unless attrs.empty?
86
- begin
87
- cell.render_state *args
88
- rescue ArgumentError
89
- end
90
- end.select { |response| response.is_a?(Time) }.max
91
- end
92
- end
93
-
94
65
  def owners
95
66
  owner.owners << owner
96
67
  end
data/app/models/link.rb CHANGED
@@ -1,4 +1,3 @@
1
1
  class Link < Content
2
- filters_attributes :except => [:excerpt, :excerpt_html, :body, :body_html, :cached_tag_list]
3
2
  validates_presence_of :title, :body
4
3
  end
@@ -1,8 +1,4 @@
1
- require "login/mail_config"
2
-
3
1
  class PasswordMailer < ActionMailer::Base
4
- include Login::MailConfig
5
-
6
2
  class << self
7
3
  def handle_user_password_reset_requested!(event)
8
4
  reset_password_email(
@@ -22,9 +18,9 @@ class PasswordMailer < ActionMailer::Base
22
18
 
23
19
  private
24
20
 
25
- def password_reset_link(controller, token)
26
- controller.send(:url_for, :action => 'edit', :token => token)
27
- end
21
+ def password_reset_link(controller, token)
22
+ controller.send(:url_for, :action => 'edit', :token => token)
23
+ end
28
24
  end
29
25
 
30
26
  def reset_password_email(attributes = {})
@@ -34,7 +30,7 @@ class PasswordMailer < ActionMailer::Base
34
30
  mail({
35
31
  to: attributes[:user].email,
36
32
  from: attributes[:from],
37
- subject: I18n.t(:'adva.passwords.notifications.reset_password.subject'),
33
+ subject: "Forgotten Password",
38
34
  })
39
35
  end
40
36
 
@@ -43,7 +39,8 @@ class PasswordMailer < ActionMailer::Base
43
39
  mail({
44
40
  to: attributes[:user].email,
45
41
  from: attributes[:from],
46
- subject: I18n.t(:'adva.passwords.notifications.password_updated.subject'),
42
+ subject: "Password Updated",
47
43
  })
48
44
  end
49
45
  end
46
+
@@ -1,12 +1,8 @@
1
- require "has_options"
2
- require "has_permalink"
1
+ require "adva/has_options"
2
+ require "adva/has_permalink"
3
3
  require "awesome_nested_set"
4
- require "rails_ext/active_record/sti_instantiation"
5
4
 
6
5
  class Section < ActiveRecord::Base
7
- include HasOptions
8
- include HasPermalink
9
-
10
6
  default_scope -> { order(:lft) }
11
7
 
12
8
  class_attribute :types, default: ["Page"]
@@ -16,11 +12,14 @@ class Section < ActiveRecord::Base
16
12
 
17
13
  serialize :permissions
18
14
 
15
+ include Adva::HasOptions
19
16
  has_option :contents_per_page, :default => 15
17
+
18
+ include Adva::HasPermalink
20
19
  has_permalink :title, :url_attribute => :permalink, :sync_url => true,
21
20
  :only_when_blank => true, :scope => [ :site_id, :parent_id ]
21
+
22
22
  acts_as_nested_set :scope => :site_id
23
- instantiates_with_sti
24
23
 
25
24
  belongs_to :site, :touch => true
26
25
  has_many :categories, -> { order(:lft) }, dependent: :destroy do
data/app/models/site.rb CHANGED
@@ -28,8 +28,6 @@ class Site < ActiveRecord::Base
28
28
 
29
29
  cattr_accessor :multi_sites_enabled, :cache_sweeper_logging
30
30
 
31
- class_attribute :meta_fields, default: %w(keywords description author copyright geourl)
32
-
33
31
  class << self
34
32
  def find_by_host!(host)
35
33
  return Site.first if count == 1 && !multi_sites_enabled
data/app/models/user.rb CHANGED
@@ -7,12 +7,11 @@ class User < ActiveRecord::Base
7
7
 
8
8
  scope :verified, -> { where.not(verified_at: nil) }
9
9
 
10
- belongs_to :account
11
10
  has_many :memberships, :dependent => :delete_all
12
11
  has_many :sites, :through => :memberships
13
12
 
14
13
  validates_presence_of :first_name, :email
15
- validates_uniqueness_of :email, case_sensitive: false # i.e. account attributes are unique per application, not per site
14
+ validates_uniqueness_of :email, case_sensitive: false
16
15
  validates_length_of :first_name, :within => 1..40
17
16
  validates_length_of :last_name, :allow_nil => true, :within => 0..40
18
17
  validates_format_of :email, :allow_nil => true,
@@ -1,5 +1,5 @@
1
- <%=t :'adva.activity.view.new', :name => @activity.author_name,
2
- :email => @activity.author_email,
3
- :activity => @activity.object.class,
4
- :site => @activity.site.name,
5
- :section => @activity.section.title %>
1
+ <%= @activity.author_name %>
2
+ <%= @activity.author_email %>
3
+ just posted a new <%= @activity.object.class %>
4
+ on <%= @activity.site.name %>
5
+ in section <%= @activity.section.title %>