alchemy_cms 2.1.beta6 → 2.1.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (137) hide show
  1. data/.gitignore +3 -1
  2. data/Gemfile +10 -2
  3. data/Guardfile +16 -0
  4. data/README.md +3 -3
  5. data/Rakefile +0 -5
  6. data/alchemy_cms.gemspec +1 -9
  7. data/app/assets/javascripts/alchemy/alchemy.base.js +5 -4
  8. data/app/assets/javascripts/alchemy/{alchemy.dragndrop.js.erb → alchemy.dragndrop.js} +0 -0
  9. data/app/assets/javascripts/alchemy/alchemy.elements_window.js +96 -0
  10. data/app/assets/javascripts/alchemy/alchemy.image_cropper.js +48 -50
  11. data/app/assets/javascripts/alchemy/alchemy.jquery_loader.js +41 -0
  12. data/app/assets/javascripts/alchemy/alchemy.js +2 -0
  13. data/app/assets/javascripts/alchemy/alchemy.menubar.js +55 -0
  14. data/app/assets/javascripts/alchemy/alchemy.preview.js +94 -139
  15. data/app/assets/javascripts/alchemy/alchemy.preview_window.js +98 -0
  16. data/app/assets/javascripts/alchemy/alchemy.windows.js +1 -174
  17. data/app/assets/javascripts/alchemy/menubar.js +2 -0
  18. data/app/assets/javascripts/alchemy/preview.js +2 -1
  19. data/app/assets/stylesheets/alchemy/_defaults.scss +7 -8
  20. data/app/assets/stylesheets/alchemy/base.css.scss +29 -33
  21. data/app/assets/stylesheets/alchemy/elements.css.scss +4 -4
  22. data/app/assets/stylesheets/alchemy/jquery-ui.alchemy.css.scss +1 -1
  23. data/app/assets/stylesheets/alchemy/jquery.Jcrop.css.scss +1 -1
  24. data/app/assets/stylesheets/alchemy/jquery.sb.css.scss +19 -4
  25. data/app/assets/stylesheets/alchemy/menubar.css.scss +85 -0
  26. data/app/assets/stylesheets/alchemy/standard_set.css +3 -5
  27. data/app/assets/stylesheets/alchemy/tinymce_content.css.scss +1 -1
  28. data/app/assets/stylesheets/alchemy/tinymce_dialog.css.scss +1 -1
  29. data/app/controllers/alchemy/admin/attachments_controller.rb +2 -18
  30. data/app/controllers/alchemy/admin/base_controller.rb +1 -1
  31. data/app/controllers/alchemy/admin/elements_controller.rb +2 -2
  32. data/app/controllers/alchemy/admin/essence_files_controller.rb +4 -2
  33. data/app/controllers/alchemy/admin/pictures_controller.rb +6 -20
  34. data/app/controllers/alchemy/admin/resources_controller.rb +7 -5
  35. data/app/controllers/alchemy/base_controller.rb +14 -4
  36. data/app/controllers/alchemy/messages_controller.rb +4 -4
  37. data/app/controllers/alchemy/pages_controller.rb +51 -32
  38. data/app/controllers/alchemy/pictures_controller.rb +0 -3
  39. data/app/controllers/alchemy/user_sessions_controller.rb +1 -1
  40. data/app/helpers/alchemy/admin/base_helper.rb +6 -4
  41. data/app/helpers/alchemy/base_helper.rb +26 -0
  42. data/app/helpers/alchemy/pages_helper.rb +42 -22
  43. data/app/models/alchemy/attachment.rb +10 -2
  44. data/app/models/alchemy/cell.rb +1 -0
  45. data/app/models/alchemy/content.rb +8 -6
  46. data/app/models/alchemy/element.rb +1 -1
  47. data/app/models/alchemy/essence_audio.rb +1 -8
  48. data/app/models/alchemy/essence_date.rb +2 -9
  49. data/app/models/alchemy/essence_file.rb +1 -8
  50. data/app/models/alchemy/essence_flash.rb +0 -7
  51. data/app/models/alchemy/essence_html.rb +1 -8
  52. data/app/models/alchemy/essence_picture.rb +0 -11
  53. data/app/models/alchemy/essence_richtext.rb +4 -12
  54. data/app/models/alchemy/essence_text.rb +1 -13
  55. data/app/models/alchemy/essence_video.rb +1 -8
  56. data/app/models/alchemy/page.rb +28 -22
  57. data/app/models/alchemy/picture.rb +19 -0
  58. data/app/sweepers/alchemy/pages_sweeper.rb +17 -6
  59. data/app/sweepers/alchemy/pictures_sweeper.rb +1 -3
  60. data/app/views/alchemy/admin/attachments/_archive_overlay.html.erb +2 -2
  61. data/app/views/alchemy/admin/attachments/_attachment.html.erb +1 -1
  62. data/app/views/alchemy/admin/attachments/_file_to_assign.html.erb +2 -2
  63. data/app/views/alchemy/admin/attachments/_files_list.html.erb +13 -11
  64. data/app/views/alchemy/admin/attachments/create.js.erb +1 -1
  65. data/app/views/alchemy/admin/attachments/edit.html.erb +2 -2
  66. data/app/views/alchemy/admin/elements/_new_element_form.html.erb +1 -2
  67. data/app/views/alchemy/admin/elements/new.html.erb +1 -1
  68. data/app/views/alchemy/admin/essence_files/edit.html.erb +32 -32
  69. data/app/views/alchemy/admin/essence_pictures/crop.html.erb +29 -29
  70. data/app/views/alchemy/admin/essence_pictures/update.js.erb +13 -12
  71. data/app/views/alchemy/admin/pages/_create_language_form.html.erb +4 -1
  72. data/app/views/alchemy/admin/pages/_new_page_form.html.erb +1 -1
  73. data/app/views/alchemy/admin/pages/edit.html.erb +8 -8
  74. data/app/views/alchemy/admin/pages/index.html.erb +1 -1
  75. data/app/views/alchemy/admin/pages/new.html.erb +1 -1
  76. data/app/views/alchemy/admin/pages/update.js.erb +19 -12
  77. data/app/views/alchemy/admin/pictures/_picture.html.erb +1 -1
  78. data/app/views/alchemy/admin/pictures/_pictures_list.html.erb +8 -6
  79. data/app/views/alchemy/admin/pictures/show_in_window.html.erb +6 -1
  80. data/app/views/alchemy/admin/resources/_table.html.erb +1 -1
  81. data/app/views/alchemy/admin/users/_table.html.erb +13 -13
  82. data/app/views/alchemy/admin/users/_user.html.erb +1 -1
  83. data/app/views/alchemy/admin/users/index.html.erb +2 -2
  84. data/app/views/alchemy/elements/_contactform_view.html.erb +78 -78
  85. data/app/views/alchemy/elements/_download_editor.html.erb +1 -0
  86. data/app/views/alchemy/elements/_download_view.html.erb +3 -0
  87. data/app/views/alchemy/essences/_essence_date_editor.html.erb +1 -1
  88. data/app/views/alchemy/essences/_essence_file_editor.html.erb +1 -0
  89. data/app/views/alchemy/essences/_essence_file_view.html.erb +6 -2
  90. data/app/views/alchemy/essences/_essence_picture_editor.html.erb +3 -2
  91. data/app/views/alchemy/essences/_essence_picture_view.html.erb +1 -1
  92. data/app/views/alchemy/navigation/_link.html.erb +1 -2
  93. data/app/views/alchemy/notifications/admin_user_created.text.erb +7 -7
  94. data/app/views/alchemy/notifications/registered_user_created.text.erb +5 -5
  95. data/app/views/alchemy/user_sessions/login.html.erb +34 -35
  96. data/app/views/layouts/alchemy/login.html.erb +3 -8
  97. data/app/views/layouts/alchemy/pages.html.erb +1 -0
  98. data/bin/alchemy +43 -75
  99. data/config/alchemy/config.yml +10 -0
  100. data/config/alchemy/elements.yml +5 -0
  101. data/config/alchemy/page_layouts.yml +1 -1
  102. data/config/locales/alchemy.de.yml +21 -8
  103. data/config/locales/alchemy.en.yml +20 -4
  104. data/config/routes.rb +25 -20
  105. data/db/migrate/{20111116125112_namespace_models.rb → 20111116125112_namespace_alchemy_models.rb} +1 -1
  106. data/lib/alchemy/capistrano.rb +4 -17
  107. data/lib/alchemy/engine.rb +2 -0
  108. data/lib/alchemy/essence.rb +29 -41
  109. data/lib/alchemy/i18n.rb +1 -1
  110. data/lib/alchemy/mount_point.rb +10 -0
  111. data/lib/alchemy/page_layout.rb +7 -7
  112. data/lib/alchemy/seeder.rb +85 -47
  113. data/lib/alchemy/upgrader.rb +115 -0
  114. data/lib/alchemy/version.rb +1 -1
  115. data/lib/alchemy_cms.rb +4 -3
  116. data/lib/rails/generators/alchemy/scaffold/scaffold_generator.rb +6 -2
  117. data/lib/tasks/ferret.rake +12 -0
  118. data/lib/tasks/install.rake +16 -105
  119. data/lib/tasks/routes.rake +29 -0
  120. data/lib/tasks/upgrade.rake +5 -67
  121. data/spec/controllers/admin/pages_controller_spec.rb +1 -1
  122. data/spec/controllers/pages_controller_spec.rb +31 -0
  123. data/spec/factories.rb +24 -15
  124. data/spec/helpers/admin/base_helper_spec.rb +0 -7
  125. data/spec/helpers/pages_helper_spec.rb +54 -29
  126. data/spec/helpers/url_helpers_spec.rb +40 -0
  127. data/spec/integration/admin/pages_controller_spec.rb +3 -3
  128. data/spec/integration/pages_controller_spec.rb +80 -6
  129. data/spec/integration/security_spec.rb +2 -2
  130. data/spec/models/content_spec.rb +24 -0
  131. data/spec/models/page_spec.rb +174 -47
  132. data/spec/models/picture_spec.rb +54 -0
  133. data/spec/page_layout_spec.rb +2 -2
  134. data/spec/routing_spec.rb +205 -1
  135. data/spec/spec_helper.rb +53 -32
  136. metadata +51 -46
  137. data/lib/alchemy/file_utilz.rb +0 -73
@@ -5,15 +5,8 @@ module Alchemy
5
5
  :ingredient_column => :attachment,
6
6
  :preview_text_method => :name
7
7
  )
8
-
8
+
9
9
  belongs_to :attachment
10
-
11
- # Saves the ingredient
12
- def save_ingredient(params, options = {})
13
- return true if params.blank?
14
- self.attachment_id = params["attachment_id"].to_s
15
- self.save
16
- end
17
10
 
18
11
  end
19
12
  end
@@ -5,13 +5,6 @@ module Alchemy
5
5
  :ingredient_column => :attachment,
6
6
  :preview_text_method => :name
7
7
  )
8
-
9
- # Saves the ingredient
10
- def save_ingredient(params, options = {})
11
- return true if params.blank?
12
- self.attachment_id = params["attachment_id"].to_s
13
- self.save
14
- end
15
8
 
16
9
  end
17
10
  end
@@ -4,18 +4,11 @@ module Alchemy
4
4
  acts_as_essence(
5
5
  :ingredient_column => :source
6
6
  )
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
10
  CGI.escapeHTML(source.to_s)[0..maxlength]
11
11
  end
12
-
13
- # Saves the ingredient
14
- def save_ingredient(params, options = {})
15
- return true if params.blank?
16
- self.source = params["source"].to_s
17
- self.save
18
- end
19
12
 
20
13
  end
21
14
  end
@@ -14,16 +14,5 @@ module Alchemy
14
14
  caption.gsub!(/(\r\n|\r|\n)/, "<br/>")
15
15
  end
16
16
 
17
- # Saves the ingredient
18
- def save_ingredient(params, options = {})
19
- return true if params.blank?
20
- self.link_class_name = params['link_class_name']
21
- self.link_target = params['link_target']
22
- self.link = params['link']
23
- self.link_title = params['link_title']
24
- self.picture_id = params['picture_id']
25
- self.save
26
- end
27
-
28
17
  end
29
18
  end
@@ -4,7 +4,7 @@ module Alchemy
4
4
  acts_as_essence(
5
5
  :preview_text_column => :stripped_body
6
6
  )
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
10
  if Alchemy::Config.get(:ferret) == true
@@ -17,29 +17,21 @@ module Alchemy
17
17
  )
18
18
  before_save :check_ferret_indexing
19
19
  end
20
-
20
+
21
21
  before_save :strip_content
22
-
23
- # Saves the ingredient
24
- def save_ingredient(params, options = {})
25
- return true if params.blank?
26
- self.body = params['body'].to_s
27
- self.public = options[:public]
28
- self.save
29
- end
30
22
 
31
23
  private
32
24
 
33
25
  def strip_content
34
26
  self.stripped_body = strip_tags(self.body)
35
27
  end
36
-
28
+
37
29
  def check_ferret_indexing
38
30
  if self.do_not_index
39
31
  self.disable_ferret(:always)
40
32
  end
41
33
  end
42
-
34
+
43
35
  # Stripping HTML Tags and only returns plain text.
44
36
  def strip_tags(html)
45
37
  return html if html.blank?
@@ -2,7 +2,7 @@ module Alchemy
2
2
  class EssenceText < ActiveRecord::Base
3
3
 
4
4
  acts_as_essence
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
8
  if Alchemy::Config.get(:ferret) == true
@@ -15,18 +15,6 @@ module Alchemy
15
15
  )
16
16
  before_save :check_ferret_indexing
17
17
  end
18
-
19
- # Saves the content from params
20
- def save_ingredient(params, options = {})
21
- return true if params.blank?
22
- self.body = params["body"]
23
- self.link = params["link"]
24
- self.link_title = params["link_title"]
25
- self.link_class_name = params["link_class_name"]
26
- self.link_target = params["link_target"]
27
- self.public = options[:public]
28
- self.save
29
- end
30
18
 
31
19
  private
32
20
 
@@ -5,15 +5,8 @@ module Alchemy
5
5
  :ingredient_column => :attachment,
6
6
  :preview_text_method => :name
7
7
  )
8
-
8
+
9
9
  belongs_to :attachment
10
-
11
- # Saves the ingredient
12
- def save_ingredient(params, options = {})
13
- return true if params.blank?
14
- self.attachment_id = params["attachment_id"].to_s
15
- self.save
16
- end
17
10
 
18
11
  end
19
12
  end
@@ -2,10 +2,9 @@
2
2
  module Alchemy
3
3
  class Page < ActiveRecord::Base
4
4
 
5
- RESERVED_PAGE_LAYOUTS = %w(rootpage)
6
5
  RESERVED_URLNAMES = %w(admin messages)
7
6
 
8
- acts_as_nested_set
7
+ acts_as_nested_set(:dependent => :destroy)
9
8
  stampable
10
9
 
11
10
  has_many :folded_pages
@@ -15,23 +14,23 @@ module Alchemy
15
14
  belongs_to :language
16
15
 
17
16
  validates_presence_of :name, :message => '^'+Alchemy::I18n.t("please enter a name")
18
- validates_presence_of :page_layout, :message => '^'+Alchemy::I18n.t("Please choose a page layout.")
19
- validates_presence_of :parent_id, :message => '^'+Alchemy::I18n.t("No parent page was given."), :unless => :rootpage?
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 }
20
19
  validates_length_of :urlname, :minimum => 3, :too_short => Alchemy::I18n.t("urlname_to_short"), :if => :urlname_entered?
21
20
  validates_uniqueness_of :urlname, :message => '^'+Alchemy::I18n.t("URL-Name already token"), :scope => 'language_id', :if => :urlname_entered?
22
- validates :page_layout, :exclusion => { :in => RESERVED_PAGE_LAYOUTS, :message => '^'+Alchemy::I18n.t("This page_layout name is reserved.") }, :unless => :rootpage?
23
21
  validates :urlname, :exclusion => { :in => RESERVED_URLNAMES, :message => '^'+Alchemy::I18n.t("This urlname is reserved.") }
24
22
 
25
23
  attr_accessor :do_not_autogenerate
26
24
  attr_accessor :do_not_sweep
27
25
  attr_accessor :do_not_validate_language
28
26
 
29
- before_save :set_url_name, :unless => Proc.new { |page| page.redirects_to_external? }
30
- before_save :set_title, :unless => Proc.new { |page| page.redirects_to_external? }
31
- before_save :set_language_code
32
- after_create :autogenerate_elements, :unless => Proc.new { |page| page.do_not_autogenerate }
33
- after_create :create_cells
34
- after_save :set_restrictions_to_child_pages
27
+ before_save :set_url_name, :unless => proc { |page| page.systempage? || page.redirects_to_external? }
28
+ before_save :set_title, :unless => proc { |page| page.systempage? || page.redirects_to_external? }
29
+ before_save :set_language_code, :unless => :systempage?
30
+ before_save :set_restrictions_to_child_pages, :if => proc { |page| !page.systempage? && page.restricted_changed? }
31
+ before_save :inherit_restricted_status, :if => proc { |page| !page.systempage? && page.parent && page.parent.restricted? }
32
+ after_create :autogenerate_elements, :unless => proc { |page| page.systempage? || page.do_not_autogenerate }
33
+ after_create :create_cells, :unless => :systempage?
35
34
 
36
35
  scope :language_roots, where(:language_root => true)
37
36
  scope :layoutpages, where(:layoutpage => true)
@@ -42,6 +41,7 @@ module Alchemy
42
41
  scope :published, where(:public => true)
43
42
  scope :accessable, where(:restricted => false)
44
43
  scope :restricted, where(:restricted => true)
44
+ scope :not_restricted, where(:restricted => false)
45
45
  scope :public_language_roots, lambda {
46
46
  where(:language_root => true).where("`alchemy_pages`.`language_code` IN ('#{Language.all_codes_for_published.join('\',\'')}')").where(:public => true)
47
47
  }
@@ -52,6 +52,7 @@ module Alchemy
52
52
  # Used for flushing all page caches at once.
53
53
  scope :contentpages, where("`alchemy_pages`.`layoutpage` = 0 AND `alchemy_pages`.`parent_id` IS NOT NULL")
54
54
  scope :flushables, not_locked.published.contentpages
55
+ scope :searchables, not_restricted.published.contentpages
55
56
 
56
57
  # Finds selected elements from page.
57
58
  #
@@ -305,10 +306,9 @@ module Alchemy
305
306
 
306
307
  # Returns the self#page_layout description from config/alchemy/page_layouts.yml file.
307
308
  def layout_description
309
+ return {} if self.systempage?
308
310
  description = Alchemy::PageLayout.get(self.page_layout)
309
- if self.root? || self.layoutpage?
310
- return {}
311
- elsif description.nil?
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
314
314
  description
@@ -338,13 +338,15 @@ module Alchemy
338
338
  end
339
339
 
340
340
  def set_restrictions_to_child_pages
341
- return nil if self.restricted_was == self.restricted
342
341
  descendants.each do |child|
343
- child.restricted = restricted
344
- child.save
342
+ child.update_attribute(:restricted, self.restricted?)
345
343
  end
346
344
  end
347
345
 
346
+ def inherit_restricted_status
347
+ self.restricted = parent.restricted?
348
+ end
349
+
348
350
  def contains_feed?
349
351
  definition["feed"]
350
352
  end
@@ -449,7 +451,7 @@ module Alchemy
449
451
  :language_id => new_parent.language_id,
450
452
  :language_code => new_parent.language_code,
451
453
  :name => child.name + ' (' + Alchemy::I18n.t('Copy') + ')',
452
- :urlname => '',
454
+ :urlname => child.redirects_to_external? ? child.urlname : '',
453
455
  :title => ''
454
456
  })
455
457
  new_child.move_to_child_of(new_parent)
@@ -482,15 +484,19 @@ module Alchemy
482
484
  self.locker.name
483
485
  end
484
486
 
485
- # is the curent object the main rootpage?
486
487
  def rootpage?
487
- (self.page_layout == "rootpage") && self.parent_id.blank?
488
+ !self.new_record? && self.parent_id.blank?
489
+ end
490
+
491
+ def systempage?
492
+ return true if Page.root.nil?
493
+ rootpage? || (self.parent_id == Page.root.id && !self.language_root?)
488
494
  end
489
495
 
490
496
  def self.rootpage
491
- where(:page_layout => 'rootpage').where(:parent_id => nil).first
497
+ self.root
492
498
  end
493
-
499
+
494
500
  private
495
501
 
496
502
  def find_next_or_previous_page(direction = "next", options = {})
@@ -19,6 +19,13 @@ module Alchemy
19
19
 
20
20
  stampable
21
21
 
22
+ def self.find_paginated(params, per_page)
23
+ Picture.where("name LIKE '%#{params[:query]}%'").paginate(
24
+ :page => params[:page] || 1,
25
+ :per_page => per_page
26
+ ).order(:name)
27
+ end
28
+
22
29
  # Returning the filepath relative to Rails.root public folder.
23
30
  def public_file_path
24
31
  self.file_path.gsub("#{Rails.root}/public", '')
@@ -32,6 +39,18 @@ module Alchemy
32
39
  end
33
40
  end
34
41
 
42
+ def suffix
43
+ if image_filename =~ /\./
44
+ image_filename.split('.').last.downcase
45
+ else
46
+ ""
47
+ end
48
+ end
49
+
50
+ def humanized_name
51
+ (image_filename.downcase.gsub(/\.#{Regexp.quote(suffix)}$/, '')).humanize
52
+ end
53
+
35
54
  # Returning true if picture's width is greater than it's height
36
55
  def landscape_format?
37
56
  return (self.image_width > self.image_height) ? true : false
@@ -37,12 +37,23 @@ module Alchemy
37
37
 
38
38
  def expire_page(page)
39
39
  return if page.do_not_sweep
40
- expire_action(
41
- :controller => '/alchemy/pages',
42
- :action => :show,
43
- :urlname => page.urlname_was,
44
- :lang => multi_language? ? page.language_code : nil
45
- )
40
+ # TODO: We should change this back to expire_action after Rails 3.2 was released.
41
+ # expire_action(
42
+ # alchemy.show_page_url(
43
+ # :urlname => page.urlname_was,
44
+ # :lang => multi_language? ? page.language_code : nil
45
+ # )
46
+ # )
47
+ # Temporarily fix for Rails 3 bug
48
+ return if alchemy.nil?
49
+ expire_fragment(ActionController::Caching::Actions::ActionCachePath.new(
50
+ self,
51
+ alchemy.show_page_url(
52
+ :urlname => page.urlname_was,
53
+ :lang => multi_language? ? page.language_code : nil
54
+ ),
55
+ false
56
+ ).path)
46
57
  end
47
58
 
48
59
  end
@@ -14,9 +14,7 @@ module Alchemy
14
14
 
15
15
  def expire_cache_for(picture)
16
16
  # Removing all variants of the picture with FileUtils.
17
- FileUtils.rm_rf("#{Rails.root}/public/pictures/show/#{picture.id}")
18
- FileUtils.rm_rf("#{Rails.root}/public/pictures/thumbnails/#{picture.id}")
19
- expire_page(zoom_picture_path(picture, :format => 'png'))
17
+ FileUtils.rm_rf(Rails.root.join('public', Alchemy.mount_point, 'pictures', picture.id.to_s))
20
18
  end
21
19
 
22
20
  end
@@ -19,7 +19,7 @@
19
19
  </div>
20
20
  <%= js_filter_field(:onkeyup => "Alchemy.ListFilter('.assign_file_file')") %>
21
21
  </div>
22
- <div id="assign_file_list" class="with_padding">
22
+ <ul id="assign_file_list" class="with_padding">
23
23
  <%= render :partial => 'file_to_assign', :collection => @attachments %>
24
- </div>
24
+ </ul>
25
25
  </div>
@@ -48,7 +48,7 @@
48
48
  alchemy.edit_admin_attachment_path(attachment, :query => params[:query], :page => params[:page]),
49
49
  {
50
50
  :title => t('rename_file'),
51
- :size => '380x45'
51
+ :size => '380x100'
52
52
  },
53
53
  :class => 'icon file_edit',
54
54
  :title => t('rename_file')
@@ -3,7 +3,7 @@
3
3
  suffix = "</div><div class=\"assign_file_file_name\">#{file_to_assign.filename}</div>"
4
4
  -%>
5
5
  <%- img_tag = "#{prefix}#{render_icon(file_to_assign.icon_css_class)}#{suffix}".html_safe -%>
6
- <div class="assign_file_file" name="<%= file_to_assign.filename %>">
6
+ <li class="assign_file_file <%= cycle('even', 'odd') %>" name="<%= file_to_assign.filename %>">
7
7
  <%= link_to(
8
8
  img_tag,
9
9
  {
@@ -17,4 +17,4 @@
17
17
  :method => 'put',
18
18
  :title => file_to_assign.filename
19
19
  ) %>
20
- </div>
20
+ </li>
@@ -1,21 +1,23 @@
1
1
  <%- if @attachments.blank? && params[:query].nil? -%>
2
- <p class="padding_left_right" id="no_files_notice">
3
- <%= t("no_files_in_archive") %>
4
- </p>
2
+ <div class="info" id="no_files_notice">
3
+ <%= render_icon('info') %>
4
+ <%= t("no_files_in_archive") %>
5
+ </div>
5
6
  <%- elsif @attachments.blank? -%>
6
- <p class="padding_left_right">
7
- <%= t("no_search_results") %>
8
- </p>
7
+ <div class="info">
8
+ <%= render_icon('info') %>
9
+ <%= t("no_search_results") %>
10
+ </div>
9
11
  <%- end -%>
10
12
  <table id="all_files" class="list">
11
13
  <%- unless @attachments.blank? -%>
12
14
  <tr>
13
15
  <th class="icon"></th>
14
- <th class="name"><%= t('Attachment|Name') %></th>
15
- <th class="file_name"><%= t('Attachment|Filename') %></th>
16
- <th class="file_type"><%= t('Attachment|Content type') %></th>
17
- <th class="file_size"><%= t('Attachment|Size') %></th>
18
- <th class="date"><%= t('Attachment|Created at') %></th>
16
+ <th class="name"><%= Alchemy::Attachment.human_attribute_name('name') %></th>
17
+ <th class="file_name"><%= Alchemy::Attachment.human_attribute_name('filename') %></th>
18
+ <th class="file_type"><%= Alchemy::Attachment.human_attribute_name('content_type') %></th>
19
+ <th class="file_size"><%= Alchemy::Attachment.human_attribute_name('size') %></th>
20
+ <th class="date"><%= Alchemy::Attachment.human_attribute_name('created_at') %></th>
19
21
  <th class="tools"></th>
20
22
  </tr>
21
23
  <%- end -%>
@@ -2,7 +2,7 @@
2
2
  <%- if @while_assigning -%>
3
3
  $('#alchemy_window_body').replaceWith('<%= escape_javascript(render(:partial => "archive_overlay.html.erb")) -%>');
4
4
  <%- else -%>
5
- $('#archive_all').html('<%= escape_javascript(render(:partial => 'files_list')) %>');
5
+ $('#archive_all').html('<%= escape_javascript(render(:partial => "files_list")) %>');
6
6
  Alchemy.growl('<%= @message %>');
7
7
  <%- end -%>
8
8
  })(jQuery);
@@ -1,8 +1,8 @@
1
1
  <%= form_for([:admin, @attachment], :url => {:action => :update, :query => params[:query], :page => params[:page]}) do |f| -%>
2
2
  <table>
3
3
  <tr>
4
- <td class="label"><%= f.label 'name', :class => "short") %></td>
5
- <td class="input"><%= f.text_field( 'name', :class => 'thin_border very_long') %></td>
4
+ <td class="label"><%= f.label 'name', :class => "short" %></td>
5
+ <td class="input"><%= f.text_field 'name', :class => 'thin_border very_long' %></td>
6
6
  </tr>
7
7
  <tr>
8
8
  <td></td>