alchemy_cms 2.1.4 → 2.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. data/Gemfile +1 -1
  2. data/README.md +11 -31
  3. data/app/assets/javascripts/alchemy/alchemy.elements_window.js +3 -1
  4. data/app/assets/javascripts/alchemy/alchemy.windows.js +1 -1
  5. data/app/assets/stylesheets/alchemy/base.css.scss +0 -4
  6. data/app/assets/stylesheets/alchemy/buttons.css.scss +7 -4
  7. data/app/assets/stylesheets/alchemy/icons.css.scss +7 -1
  8. data/app/assets/stylesheets/alchemy/tinymce_dialog.css.scss +11 -15
  9. data/app/assets/{javascripts → stylesheets}/tiny_mce/plugins/inlinepopups/skins/alchemy/window.css.scss +51 -18
  10. data/app/controllers/alchemy/admin/contents_controller.rb +5 -5
  11. data/app/controllers/alchemy/base_controller.rb +1 -1
  12. data/app/helpers/alchemy/admin/base_helper.rb +4 -7
  13. data/app/helpers/alchemy/admin/elements_helper.rb +2 -2
  14. data/app/models/alchemy/attachment.rb +1 -1
  15. data/app/models/alchemy/cell.rb +3 -3
  16. data/app/models/alchemy/content.rb +4 -4
  17. data/app/models/alchemy/element.rb +8 -8
  18. data/app/models/alchemy/essence_html.rb +1 -1
  19. data/app/models/alchemy/essence_richtext.rb +4 -4
  20. data/app/models/alchemy/essence_text.rb +1 -1
  21. data/app/models/alchemy/language.rb +10 -7
  22. data/app/models/alchemy/language/code.rb +19 -0
  23. data/app/models/alchemy/message.rb +6 -6
  24. data/app/models/alchemy/page.rb +26 -26
  25. data/app/models/alchemy/picture.rb +11 -13
  26. data/app/models/alchemy/user.rb +5 -5
  27. data/app/models/alchemy/user_session.rb +1 -1
  28. data/app/views/alchemy/admin/contents/destroy.js.erb +1 -1
  29. data/app/views/alchemy/admin/elements/create.js.erb +1 -0
  30. data/app/views/alchemy/admin/elements/fold.js.erb +2 -2
  31. data/app/views/alchemy/admin/elements/index.html.erb +1 -1
  32. data/app/views/alchemy/admin/essence_pictures/edit.html.erb +6 -6
  33. data/app/views/alchemy/admin/languages/_form.html.erb +47 -0
  34. data/app/views/alchemy/admin/languages/_language.html.erb +47 -0
  35. data/app/views/alchemy/admin/languages/_table.html.erb +33 -0
  36. data/app/views/alchemy/essences/_essence_picture_tools.html.erb +4 -1
  37. data/app/views/alchemy/essences/_essence_picture_view.html.erb +1 -3
  38. data/app/views/alchemy/essences/_essence_text_editor.html.erb +1 -1
  39. data/config/locales/alchemy.de.yml +26 -22
  40. data/config/locales/alchemy.en.yml +2 -0
  41. data/config/routes.rb +2 -2
  42. data/db/migrate/20120216135355_add_country_code_to_languages.rb +9 -0
  43. data/lib/alchemy/i18n.rb +21 -14
  44. data/lib/alchemy/seeder.rb +2 -2
  45. data/lib/alchemy/version.rb +1 -1
  46. data/spec/dummy/db/schema.rb +5 -3
  47. data/spec/factories.rb +2 -2
  48. data/spec/models/language_spec.rb +22 -4
  49. data/vendor/assets/javascripts/tiny_mce/langs/de.js +0 -0
  50. data/vendor/assets/javascripts/tiny_mce/langs/en.js +0 -0
  51. data/vendor/assets/javascripts/tiny_mce/license.txt +0 -0
  52. data/vendor/assets/javascripts/tiny_mce/plugins/autoresize/editor_plugin.js +1 -137
  53. data/vendor/assets/javascripts/tiny_mce/plugins/fullscreen/editor_plugin.js +0 -0
  54. data/vendor/assets/javascripts/tiny_mce/plugins/fullscreen/fullscreen.htm +0 -0
  55. data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/editor_plugin.js +0 -0
  56. data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/template.htm +0 -0
  57. data/vendor/assets/javascripts/tiny_mce/plugins/paste/editor_plugin.js +0 -0
  58. data/vendor/assets/javascripts/tiny_mce/plugins/paste/js/pastetext.js +0 -0
  59. data/vendor/assets/javascripts/tiny_mce/plugins/paste/js/pasteword.js +0 -0
  60. data/vendor/assets/javascripts/tiny_mce/plugins/paste/langs/de_dlg.js +0 -0
  61. data/vendor/assets/javascripts/tiny_mce/plugins/paste/langs/en_dlg.js +0 -0
  62. data/vendor/assets/javascripts/tiny_mce/plugins/paste/pastetext.htm +0 -0
  63. data/vendor/assets/javascripts/tiny_mce/plugins/paste/pasteword.htm +0 -0
  64. data/vendor/assets/javascripts/tiny_mce/plugins/table/cell.htm +0 -0
  65. data/vendor/assets/javascripts/tiny_mce/plugins/table/css/cell.css +0 -0
  66. data/vendor/assets/javascripts/tiny_mce/plugins/table/css/row.css +0 -0
  67. data/vendor/assets/javascripts/tiny_mce/plugins/table/css/table.css +0 -0
  68. data/vendor/assets/javascripts/tiny_mce/plugins/table/editor_plugin.js +0 -0
  69. data/vendor/assets/javascripts/tiny_mce/plugins/table/js/cell.js +0 -0
  70. data/vendor/assets/javascripts/tiny_mce/plugins/table/js/merge_cells.js +0 -0
  71. data/vendor/assets/javascripts/tiny_mce/plugins/table/js/row.js +0 -0
  72. data/vendor/assets/javascripts/tiny_mce/plugins/table/js/table.js +5 -1
  73. data/vendor/assets/javascripts/tiny_mce/plugins/table/langs/de_dlg.js +0 -0
  74. data/vendor/assets/javascripts/tiny_mce/plugins/table/langs/en_dlg.js +0 -0
  75. data/vendor/assets/javascripts/tiny_mce/plugins/table/merge_cells.htm +0 -0
  76. data/vendor/assets/javascripts/tiny_mce/plugins/table/row.htm +0 -0
  77. data/vendor/assets/javascripts/tiny_mce/plugins/table/table.htm +0 -0
  78. data/vendor/assets/javascripts/tiny_mce/themes/advanced/about.htm +0 -0
  79. data/vendor/assets/javascripts/tiny_mce/themes/advanced/anchor.htm +0 -0
  80. data/vendor/assets/javascripts/tiny_mce/themes/advanced/charmap.htm +0 -0
  81. data/vendor/assets/javascripts/tiny_mce/themes/advanced/color_picker.htm +0 -0
  82. data/vendor/assets/javascripts/tiny_mce/themes/advanced/editor_template.js +1 -1
  83. data/vendor/assets/javascripts/tiny_mce/themes/advanced/image.htm +0 -0
  84. data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/colorpicker.jpg +0 -0
  85. data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/flash.gif +0 -0
  86. data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/icons.gif +0 -0
  87. data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/iframe.gif +0 -0
  88. data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/pagebreak.gif +0 -0
  89. data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/quicktime.gif +0 -0
  90. data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/realmedia.gif +0 -0
  91. data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/shockwave.gif +0 -0
  92. data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/trans.gif +0 -0
  93. data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/video.gif +0 -0
  94. data/vendor/assets/javascripts/tiny_mce/themes/advanced/img/windowsmedia.gif +0 -0
  95. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/about.js +0 -0
  96. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/anchor.js +0 -0
  97. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/charmap.js +0 -0
  98. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/color_picker.js +0 -0
  99. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/image.js +0 -0
  100. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/link.js +0 -0
  101. data/vendor/assets/javascripts/tiny_mce/themes/advanced/js/source_editor.js +0 -0
  102. data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/de.js +0 -0
  103. data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/de_dlg.js +0 -0
  104. data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/en.js +0 -0
  105. data/vendor/assets/javascripts/tiny_mce/themes/advanced/langs/en_dlg.js +0 -0
  106. data/vendor/assets/javascripts/tiny_mce/themes/advanced/link.htm +0 -0
  107. data/vendor/assets/javascripts/tiny_mce/themes/advanced/shortcuts.htm +0 -0
  108. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/content.css +0 -0
  109. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/dialog.css +0 -0
  110. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/buttons.png +0 -0
  111. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/items.gif +0 -0
  112. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif +0 -0
  113. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/menu_check.gif +0 -0
  114. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/progress.gif +0 -0
  115. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/img/tabs.gif +0 -0
  116. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/default/ui.css +0 -0
  117. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/content.css +0 -0
  118. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/dialog.css +0 -0
  119. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/highcontrast/ui.css +0 -0
  120. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/content.css +0 -0
  121. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/dialog.css +0 -0
  122. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png +0 -0
  123. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png +0 -0
  124. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png +0 -0
  125. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui.css +0 -0
  126. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_black.css +0 -0
  127. data/vendor/assets/javascripts/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css +0 -0
  128. data/vendor/assets/javascripts/tiny_mce/themes/advanced/source_editor.htm +0 -0
  129. data/vendor/assets/javascripts/tiny_mce/tiny_mce.js +1 -1
  130. data/vendor/assets/javascripts/tiny_mce/tiny_mce_popup.js +0 -0
  131. data/vendor/assets/javascripts/tiny_mce/utils/editable_selects.js +0 -0
  132. data/vendor/assets/javascripts/tiny_mce/utils/form_utils.js +0 -0
  133. data/vendor/assets/javascripts/tiny_mce/utils/mctabs.js +0 -0
  134. data/vendor/assets/javascripts/tiny_mce/utils/validate.js +0 -0
  135. metadata +39 -42
  136. data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif +0 -0
  137. data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif +0 -0
  138. data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif +0 -0
  139. data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif +0 -0
  140. data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif +0 -0
  141. data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif +0 -0
  142. data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif +0 -0
  143. data/vendor/assets/javascripts/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css +0 -90
@@ -18,8 +18,8 @@ module Alchemy
18
18
  has_many :elements, :dependent => :destroy, :order => :position
19
19
 
20
20
  def self.definitions
21
- cell_yml = File.join(Rails.root, 'config', 'alchemy', 'cells.yml')
22
- YAML.load_file(cell_yml) if File.exist?(cell_yml)
21
+ cell_yml = ::File.join(::Rails.root, 'config', 'alchemy', 'cells.yml')
22
+ ::YAML.load_file(cell_yml) if ::File.exist?(cell_yml)
23
23
  end
24
24
 
25
25
  def self.definition_for(cellname)
@@ -55,7 +55,7 @@ module Alchemy
55
55
  end
56
56
 
57
57
  def self.translated_label_for(cell_name)
58
- Alchemy::I18n.t("alchemy.cell_names.#{cell_name}", :default => cell_name.camelcase)
58
+ I18n.t(cell_name, :scope => :cell_names)
59
59
  end
60
60
 
61
61
  end
@@ -12,7 +12,7 @@ module Alchemy
12
12
  "element_id = '#{element_id}' AND essence_type = '#{essence_type}'"
13
13
  end
14
14
 
15
- validates_uniqueness_of :name, :scope => :element_id
15
+ #validates_uniqueness_of :name, :scope => :element_id
16
16
  validates_uniqueness_of :position, :scope => [:element_id, :essence_type]
17
17
 
18
18
  scope :essence_pictures, where(:essence_type => "Alchemy::EssencePicture")
@@ -23,7 +23,7 @@ module Alchemy
23
23
  def self.create_from_scratch(element, essences_hash)
24
24
  if essences_hash[:name].blank? && !essences_hash[:essence_type].blank?
25
25
  essences_of_same_type = element.contents.where(
26
- :essence_type => Alchemy::Content.normalize_essence_type(essences_hash[:essence_type])
26
+ :essence_type => Content.normalize_essence_type(essences_hash[:essence_type])
27
27
  )
28
28
  description = {
29
29
  'type' => essences_hash[:essence_type],
@@ -34,7 +34,7 @@ module Alchemy
34
34
  description = element.available_content_description_for(essences_hash[:name]) if description.blank?
35
35
  end
36
36
  raise "No description found in elements.yml for #{essences_hash.inspect} and #{element.inspect}" if description.blank?
37
- essence_class = Alchemy::Content.normalize_essence_type(description['type']).constantize
37
+ essence_class = Content.normalize_essence_type(description['type']).constantize
38
38
  content = self.new(:name => description['name'], :element_id => element.id)
39
39
  if description['type'] == "EssenceRichtext" || description['type'] == "EssenceText"
40
40
  essence = essence_class.create(:do_not_index => !description['do_not_index'].nil?)
@@ -43,7 +43,7 @@ module Alchemy
43
43
  end
44
44
  if essence
45
45
  content.essence = essence
46
- content.save
46
+ content.save!
47
47
  else
48
48
  content = nil
49
49
  end
@@ -11,7 +11,7 @@ module Alchemy
11
11
  has_and_belongs_to_many :to_be_sweeped_pages, :class_name => 'Alchemy::Page', :uniq => true, :join_table => 'alchemy_elements_alchemy_pages'
12
12
 
13
13
  validates_uniqueness_of :position, :scope => [:page_id, :cell_id]
14
- validates_presence_of :name, :on => :create, :message => '^'+Alchemy::I18n.t(:choose_element)
14
+ validates_presence_of :name, :on => :create, :message => '^' + I18n.t(:choose_element)
15
15
 
16
16
  attr_accessor :create_contents_after_create
17
17
 
@@ -152,12 +152,12 @@ module Alchemy
152
152
  # Place a elements.yml file inside your apps config/alchemy folder to define
153
153
  # your own set of elements
154
154
  def self.descriptions
155
- if File.exists? "#{Rails.root}/config/alchemy/elements.yml"
156
- element_definitions = YAML.load_file( "#{Rails.root}/config/alchemy/elements.yml" )
155
+ if ::File.exists? "#{::Rails.root}/config/alchemy/elements.yml"
156
+ element_definitions = ::YAML.load_file( "#{::Rails.root}/config/alchemy/elements.yml" )
157
157
  end
158
158
  if !element_definitions
159
- if File.exists?(File.join(File.dirname(__FILE__), "../../../config/alchemy/elements.yml"))
160
- element_definitions = YAML.load_file( File.join(File.dirname(__FILE__), "../../../config/alchemy/elements.yml") )
159
+ if ::File.exists?(::File.join(::File.dirname(__FILE__), "../../../config/alchemy/elements.yml"))
160
+ element_definitions = ::YAML.load_file( ::File.join(::File.dirname(__FILE__), "../../../config/alchemy/elements.yml") )
161
161
  end
162
162
  end
163
163
  if !element_definitions
@@ -170,7 +170,7 @@ module Alchemy
170
170
  def self.all_for_page(page)
171
171
  raise TypeError if page.class.name != "Alchemy::Page"
172
172
  # if page_layout has cells, collect elements from cells and group them by cellname
173
- page_layout = Alchemy::PageLayout.get(page.page_layout)
173
+ page_layout = PageLayout.get(page.page_layout)
174
174
  if page_layout.blank?
175
175
  logger.warn "\n++++++\nWARNING! Could not find page_layout description for page: #{page.name}\n++++++++\n"
176
176
  return []
@@ -273,7 +273,7 @@ module Alchemy
273
273
  #
274
274
  def display_name
275
275
  return name.capitalize if description.blank?
276
- Alchemy::I18n.t(description['name'], :scope => :element_names)
276
+ I18n.t(description['name'], :scope => :element_names)
277
277
  end
278
278
 
279
279
  # Gets the preview text from the first Content found in the +elements.yml+ Element description file.
@@ -435,7 +435,7 @@ module Alchemy
435
435
  messages = []
436
436
  essence_errors.each do |content_name, errors|
437
437
  errors.each do |error|
438
- messages << Alchemy::I18n.t(
438
+ messages << I18n.t(
439
439
  "content_validations.#{self.name}.#{content_name}.#{error}",
440
440
  :default => [
441
441
  "content_validations.fields.#{content_name}.#{error}".to_sym,
@@ -7,7 +7,7 @@ module Alchemy
7
7
 
8
8
  # Returns the first x (default = 30) (HTML escaped) characters from self.source for the Element#preview_text method.
9
9
  def preview_text(maxlength = 30)
10
- CGI.escapeHTML(source.to_s)[0..maxlength]
10
+ ::CGI.escapeHTML(source.to_s)[0..maxlength]
11
11
  end
12
12
 
13
13
  end
@@ -7,7 +7,7 @@ module Alchemy
7
7
 
8
8
  # Require acts_as_ferret only if Ferret full text search is enabled (default).
9
9
  # You can disable it in +config/alchemy/config.yml+
10
- if Alchemy::Config.get(:ferret) == true
10
+ if Config.get(:ferret) == true
11
11
  require 'acts_as_ferret'
12
12
  acts_as_ferret(
13
13
  :fields => {
@@ -37,11 +37,11 @@ module Alchemy
37
37
  return html if html.blank?
38
38
  if html.index("<")
39
39
  text = ""
40
- tokenizer = HTML::Tokenizer.new(html)
40
+ tokenizer = ::HTML::Tokenizer.new(html)
41
41
  while token = tokenizer.next
42
- node = HTML::Node.parse(nil, 0, 0, token, false)
42
+ node = ::HTML::Node.parse(nil, 0, 0, token, false)
43
43
  # result is only the content of any Text nodes
44
- text << node.to_s if node.class == HTML::Text
44
+ text << node.to_s if node.class == ::HTML::Text
45
45
  end
46
46
  # strip any comments, and if they have a newline at the end (ie. line with
47
47
  # only a comment) strip that too
@@ -5,7 +5,7 @@ module Alchemy
5
5
 
6
6
  # Require acts_as_ferret only if Ferret full text search is enabled (default).
7
7
  # You can disable it in +config/alchemy/config.yml+
8
- if Alchemy::Config.get(:ferret) == true
8
+ if Config.get(:ferret) == true
9
9
  require 'acts_as_ferret'
10
10
  acts_as_ferret(
11
11
  :fields => {
@@ -2,17 +2,18 @@ module Alchemy
2
2
  class Language < ActiveRecord::Base
3
3
 
4
4
  validates_presence_of :name
5
- validates_presence_of :code
5
+ validates_presence_of :language_code
6
6
  validates_presence_of :page_layout
7
7
  validates_presence_of :frontpage_name
8
- validates_uniqueness_of :code
8
+ validates_uniqueness_of :language_code, :scope => :country_code
9
9
  validate :presence_of_default_language
10
10
  validate :publicity_of_default_language
11
11
  has_many :pages
12
12
  after_destroy :delete_language_root_page
13
- validates_format_of :code, :with => /^[a-z]{2}$/
13
+ validates_format_of :language_code, :with => /^[a-z]{2}$/, :if => proc { language_code.present? }
14
+ validates_format_of :country_code, :with => /^[a-z]{2}$/, :if => proc { country_code.present? }
14
15
  before_destroy :check_for_default
15
- after_update :set_pages_language, :if => proc { |m| m.code_changed? }
16
+ after_update :set_pages_language, :if => proc { |m| m.language_code_changed? }
16
17
  after_update :unpublish_pages, :if => proc { changes[:public] == [true, false] }
17
18
  before_save :remove_old_default, :if => proc { |m| m.default_changed? && m != Language.get_default }
18
19
 
@@ -36,15 +37,17 @@ module Alchemy
36
37
  if attrib.to_sym == :code
37
38
  self.code
38
39
  else
39
- Alchemy::I18n.t(self.code, :default => self.name)
40
+ I18n.t(self.code, :default => self.name)
40
41
  end
41
42
  end
42
43
 
44
+ include Code
45
+
43
46
  private
44
47
 
45
48
  def publicity_of_default_language
46
49
  if self.default? && !self.public?
47
- errors.add(:base, Alchemy::I18n.t("Default language has to be public"))
50
+ errors.add(:base, I18n.t("Default language has to be public"))
48
51
  return false
49
52
  else
50
53
  return true
@@ -53,7 +56,7 @@ module Alchemy
53
56
 
54
57
  def presence_of_default_language
55
58
  if Language.get_default == self && self.default_changed?
56
- errors.add(:base, Alchemy::I18n.t("We need at least one default."))
59
+ errors.add(:base, I18n.t("We need at least one default."))
57
60
  return false
58
61
  else
59
62
  return true
@@ -0,0 +1,19 @@
1
+ module Alchemy::Language::Code
2
+ extend ActiveSupport::Concern
3
+
4
+ def code
5
+ [language_code, country_code].select(&:present?).join('-')
6
+ end
7
+
8
+ def code=(code)
9
+ self.language_code = code
10
+ end
11
+
12
+ module ClassMethods
13
+ def find_by_code(code)
14
+ codes = code.split('-')
15
+ codes << nil if codes.length == 1
16
+ find_by_language_code_and_country_code *codes
17
+ end
18
+ end
19
+ end
@@ -33,11 +33,11 @@
33
33
  module Alchemy
34
34
  class Message
35
35
 
36
- @@config = Alchemy::Config.get(:mailer)
36
+ @@config = Config.get(:mailer)
37
37
 
38
- extend ActiveModel::Naming
39
- include ActiveModel::Validations
40
- include ActiveModel::Conversion
38
+ extend ::ActiveModel::Naming
39
+ include ::ActiveModel::Validations
40
+ include ::ActiveModel::Conversion
41
41
 
42
42
  attr_accessor :contact_form_id, :ip
43
43
  @@config[:fields].each do |field|
@@ -45,9 +45,9 @@ module Alchemy
45
45
  end
46
46
 
47
47
  @@config[:validate_fields].each do |field|
48
- validates_presence_of field[0], :message => '^' + Alchemy::I18n.t(field[1][:message].to_s, :scope => "contactform.validations")
48
+ validates_presence_of field[0], :message => '^' + I18n.t(field[1][:message].to_s, :scope => "contactform.validations")
49
49
  if field[0].to_s.include?('email')
50
- validates_format_of field[0], :with => Authlogic::Regex.email, :message => '^' + Alchemy::I18n.t('alchemy.contactform.validations.wrong_email_format'), :if => :email_is_filled
50
+ validates_format_of field[0], :with => ::Authlogic::Regex.email, :message => '^' + I18n.t('alchemy.contactform.validations.wrong_email_format'), :if => :email_is_filled
51
51
  end
52
52
  end
53
53
 
@@ -13,12 +13,12 @@ module Alchemy
13
13
  has_and_belongs_to_many :to_be_sweeped_elements, :class_name => 'Alchemy::Element', :uniq => true, :join_table => 'alchemy_elements_alchemy_pages'
14
14
  belongs_to :language
15
15
 
16
- validates_presence_of :name, :message => '^'+Alchemy::I18n.t("please enter a name")
17
- validates_presence_of :page_layout, :message => '^'+Alchemy::I18n.t("Please choose a page layout."), :unless => :systempage?
18
- validates_presence_of :parent_id, :message => '^'+Alchemy::I18n.t("No parent page was given."), :if => proc { Page.count > 1 }
19
- validates_length_of :urlname, :minimum => 3, :too_short => Alchemy::I18n.t("urlname_to_short"), :if => :urlname_entered?
20
- validates_uniqueness_of :urlname, :message => '^'+Alchemy::I18n.t("URL-Name already token"), :scope => 'language_id', :if => :urlname_entered?
21
- validates :urlname, :exclusion => { :in => RESERVED_URLNAMES, :message => '^'+Alchemy::I18n.t("This urlname is reserved.") }
16
+ validates_presence_of :name, :message => '^' + I18n.t("please enter a name")
17
+ validates_presence_of :page_layout, :message => '^' + I18n.t("Please choose a page layout."), :unless => :systempage?
18
+ validates_presence_of :parent_id, :message => '^' + I18n.t("No parent page was given."), :if => proc { Page.count > 1 }
19
+ validates_length_of :urlname, :minimum => 3, :too_short => I18n.t("urlname_to_short"), :if => :urlname_entered?
20
+ validates_uniqueness_of :urlname, :message => '^' + I18n.t("URL-Name already token"), :scope => 'language_id', :if => :urlname_entered?
21
+ validates :urlname, :exclusion => { :in => RESERVED_URLNAMES, :message => '^' + I18n.t("This urlname is reserved.") }
22
22
 
23
23
  attr_accessor :do_not_autogenerate
24
24
  attr_accessor :do_not_sweep
@@ -110,7 +110,7 @@ module Alchemy
110
110
  end
111
111
 
112
112
  def elements_grouped_by_cells
113
- group = ActiveSupport::OrderedHash.new
113
+ group = ::ActiveSupport::OrderedHash.new
114
114
  self.cells.each { |cell| group[cell] = cell.elements.not_trashed }
115
115
  if element_names_not_in_cell.any?
116
116
  group[Cell.new({:name => 'for_other_elements'})] = elements.not_trashed.not_in_cell
@@ -208,21 +208,21 @@ module Alchemy
208
208
  # Returns the name of the creator of this page.
209
209
  def creator
210
210
  @page_creator ||= User.find_by_id(creator_id)
211
- return Alchemy::I18n.t('unknown') if @page_creator.nil?
211
+ return I18n.t('unknown') if @page_creator.nil?
212
212
  @page_creator.name
213
213
  end
214
214
 
215
215
  # Returns the name of the last updater of this page.
216
216
  def updater
217
217
  @page_updater = User.find_by_id(updater_id)
218
- return Alchemy::I18n.t('unknown') if @page_updater.nil?
218
+ return I18n.t('unknown') if @page_updater.nil?
219
219
  @page_updater.name
220
220
  end
221
221
 
222
222
  # Returns the name of the user currently editing this page.
223
223
  def current_editor
224
224
  @current_editor = User.find_by_id(locked_by)
225
- return Alchemy::I18n.t('unknown') if @current_editor.nil?
225
+ return I18n.t('unknown') if @current_editor.nil?
226
226
  @current_editor.name
227
227
  end
228
228
 
@@ -251,21 +251,21 @@ module Alchemy
251
251
  def humanized_status
252
252
  case self.status
253
253
  when 0
254
- return Alchemy::I18n.t('page_status_visible_public_locked')
254
+ return I18n.t('page_status_visible_public_locked')
255
255
  when 1
256
- return Alchemy::I18n.t('page_status_visible_unpublic_locked')
256
+ return I18n.t('page_status_visible_unpublic_locked')
257
257
  when 2
258
- return Alchemy::I18n.t('page_status_invisible_public_locked')
258
+ return I18n.t('page_status_invisible_public_locked')
259
259
  when 3
260
- return Alchemy::I18n.t('page_status_invisible_unpublic_locked')
260
+ return I18n.t('page_status_invisible_unpublic_locked')
261
261
  when 4
262
- return Alchemy::I18n.t('page_status_visible_public')
262
+ return I18n.t('page_status_visible_public')
263
263
  when 5
264
- return Alchemy::I18n.t('page_status_visible_unpublic')
264
+ return I18n.t('page_status_visible_unpublic')
265
265
  when 6
266
- return Alchemy::I18n.t('page_status_invisible_public')
266
+ return I18n.t('page_status_invisible_public')
267
267
  when 7
268
- return Alchemy::I18n.t('page_status_invisible_unpublic')
268
+ return I18n.t('page_status_invisible_unpublic')
269
269
  end
270
270
  end
271
271
 
@@ -295,7 +295,7 @@ module Alchemy
295
295
  end
296
296
 
297
297
  def has_controller?
298
- !Alchemy::PageLayout.get(self.page_layout).nil? && !Alchemy::PageLayout.get(self.page_layout)["controller"].blank?
298
+ !PageLayout.get(self.page_layout).nil? && !PageLayout.get(self.page_layout)["controller"].blank?
299
299
  end
300
300
 
301
301
  def controller_and_action
@@ -307,7 +307,7 @@ module Alchemy
307
307
  # Returns the self#page_layout description from config/alchemy/page_layouts.yml file.
308
308
  def layout_description
309
309
  return {} if self.systempage?
310
- description = Alchemy::PageLayout.get(self.page_layout)
310
+ description = PageLayout.get(self.page_layout)
311
311
  if description.nil?
312
312
  raise "Description could not be found for page layout named #{self.page_layout}. Please check page_layouts.yml file."
313
313
  else
@@ -326,7 +326,7 @@ module Alchemy
326
326
  # Page layout names are defined inside the config/alchemy/page_layouts.yml file.
327
327
  # Translate the name in your config/locales language yml file.
328
328
  def layout_display_name
329
- Alchemy::I18n.t("alchemy.page_layout_names.#{page_layout}", :default => page_layout.camelize)
329
+ I18n.t("alchemy.page_layout_names.#{page_layout}", :default => page_layout.camelize)
330
330
  end
331
331
 
332
332
  def renamed?
@@ -450,7 +450,7 @@ module Alchemy
450
450
  new_child = Page.copy(child, {
451
451
  :language_id => new_parent.language_id,
452
452
  :language_code => new_parent.language_code,
453
- :name => child.name + ' (' + Alchemy::I18n.t('Copy') + ')',
453
+ :name => child.name + ' (' + I18n.t('Copy') + ')',
454
454
  :urlname => child.redirects_to_external? ? child.urlname : '',
455
455
  :title => ''
456
456
  })
@@ -470,17 +470,17 @@ module Alchemy
470
470
 
471
471
  def self.link_target_options
472
472
  options = [
473
- [Alchemy::I18n.t('default', :scope => :link_target_options), '']
473
+ [I18n.t('default', :scope => :link_target_options), '']
474
474
  ]
475
- link_target_options = Alchemy::Config.get(:link_target_options)
475
+ link_target_options = Config.get(:link_target_options)
476
476
  link_target_options.each do |option|
477
- options << [Alchemy::I18n.t(option, :scope => :link_target_options), option]
477
+ options << [I18n.t(option, :scope => :link_target_options), option]
478
478
  end
479
479
  options
480
480
  end
481
481
 
482
482
  def locker_name
483
- return Alchemy::I18n.t('unknown') if self.locker.nil?
483
+ return I18n.t('unknown') if self.locker.nil?
484
484
  self.locker.name
485
485
  end
486
486
 
@@ -2,17 +2,15 @@ module Alchemy
2
2
  class Picture < ActiveRecord::Base
3
3
 
4
4
  acts_as_fleximage do
5
- image_directory 'uploads/pictures'
6
- image_storage_format Alchemy::Config.get(:image_store_format).to_sym
7
- require_image true
8
- missing_image_message Alchemy::I18n.t("missing_image")
9
- invalid_image_message Alchemy::I18n.t("not a valid image")
10
- if Alchemy::Config.get(:image_output_format) == "jpg"
11
- output_image_jpg_quality Alchemy::Config.get(:output_image_jpg_quality)
12
- end
13
- unless Alchemy::Config.get(:preprocess_image_resize).blank?
5
+ image_directory 'uploads/pictures'
6
+ image_storage_format Config.get(:image_store_format).to_sym
7
+ require_image true
8
+ missing_image_message I18n.t("missing_image")
9
+ invalid_image_message I18n.t("not a valid image")
10
+ output_image_jpg_quality Config.get(:output_image_jpg_quality) if Config.get(:image_output_format) == "jpg"
11
+ unless Config.get(:preprocess_image_resize).blank?
14
12
  preprocess_image do |image|
15
- image.resize Alchemy::Config.get(:preprocess_image_resize)
13
+ image.resize Config.get(:preprocess_image_resize)
16
14
  end
17
15
  end
18
16
  end
@@ -28,14 +26,14 @@ module Alchemy
28
26
 
29
27
  # Returning the filepath relative to Rails.root public folder.
30
28
  def public_file_path
31
- self.file_path.gsub("#{Rails.root}/public", '')
29
+ self.file_path.gsub("#{::Rails.root}/public", '')
32
30
  end
33
31
 
34
32
  def urlname
35
33
  if self.name.blank?
36
34
  "image_#{self.id}"
37
35
  else
38
- CGI.escape(self.name.gsub(/\.(gif|png|jpe?g|tiff?)/i, '').gsub(/\./, ' '))
36
+ ::CGI.escape(self.name.gsub(/\.(gif|png|jpe?g|tiff?)/i, '').gsub(/\./, ' '))
39
37
  end
40
38
  end
41
39
 
@@ -48,7 +46,7 @@ module Alchemy
48
46
  end
49
47
 
50
48
  def humanized_name
51
- (image_filename.to_s.downcase.gsub(/\.#{Regexp.quote(suffix)}$/, '')).humanize
49
+ (image_filename.to_s.downcase.gsub(/\.#{::Regexp.quote(suffix)}$/, '')).humanize
52
50
  end
53
51
 
54
52
  # Returning true if picture's width is greater than it's height
@@ -5,7 +5,7 @@ module Alchemy
5
5
  stampable
6
6
  acts_as_authentic do |c|
7
7
  c.transition_from_restful_authentication = true
8
- c.logged_in_timeout = Alchemy::Config.get(:auto_logout_time).minutes
8
+ c.logged_in_timeout = Config.get(:auto_logout_time).minutes
9
9
  end
10
10
 
11
11
  has_many :folded_pages
@@ -14,7 +14,7 @@ module Alchemy
14
14
 
15
15
  scope :admins, where(:role => 'admin')
16
16
 
17
- ROLES = Alchemy::Config.get(:user_roles)
17
+ ROLES = Config.get(:user_roles)
18
18
 
19
19
  def role_symbols
20
20
  [role.to_sym]
@@ -54,13 +54,13 @@ module Alchemy
54
54
  end
55
55
 
56
56
  def self.human_rolename(role)
57
- Alchemy::I18n.t("user_roles.#{role}")
57
+ I18n.t("user_roles.#{role}")
58
58
  end
59
59
 
60
60
  def self.genders_for_select
61
61
  [
62
- [Alchemy::I18n.t('male'), 'male'],
63
- [Alchemy::I18n.t('female'), 'female']
62
+ [I18n.t('male'), 'male'],
63
+ [I18n.t('female'), 'female']
64
64
  ]
65
65
  end
66
66