comfortable_mexican_sofa 1.8.0 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. data/.gitignore +1 -0
  2. data/README.md +8 -2
  3. data/app/assets/javascripts/comfortable_mexican_sofa/application.js.coffee +25 -15
  4. data/app/assets/stylesheets/comfortable_mexican_sofa/base.css.sass +3 -1
  5. data/app/controllers/cms_admin/files_controller.rb +49 -54
  6. data/app/views/cms_admin/files/_file.html.haml +0 -1
  7. data/app/views/cms_admin/files/_index.html.haml +4 -2
  8. data/app/views/cms_admin/files/destroy.js.coffee +2 -0
  9. data/app/views/cms_admin/pages/_form.html.haml +1 -1
  10. data/app/views/cms_admin/revisions/show.html.haml +1 -1
  11. data/app/views/cms_admin/sites/_form.html.haml +1 -1
  12. data/app/views/layouts/cms_admin/_body.html.haml +3 -1
  13. data/app/views/layouts/cms_admin/_footer.html.haml +1 -5
  14. data/app/views/layouts/cms_admin/_footer_js.html.haml +7 -0
  15. data/config/locales/de.yml +2 -0
  16. data/config/locales/en.yml +2 -0
  17. data/config/locales/es.yml +2 -0
  18. data/config/locales/fr.yml +99 -97
  19. data/config/locales/ja.yml +3 -1
  20. data/config/locales/pl.yml +2 -0
  21. data/config/locales/pt-BR.yml +2 -0
  22. data/config/locales/ru.yml +2 -0
  23. data/config/locales/sv.yml +2 -0
  24. data/config/locales/zh-CN.yml +2 -0
  25. data/lib/comfortable_mexican_sofa/version.rb +1 -1
  26. data/test/functional/cms_admin/files_controller_test.rb +41 -12
  27. data/test/functional/cms_admin/layouts_controller_test.rb +1 -1
  28. data/test/functional/cms_admin/pages_controller_test.rb +1 -1
  29. data/test/functional/cms_admin/snippets_controller_test.rb +1 -1
  30. metadata +4 -4
  31. data/app/views/cms_admin/files/create.js.erb +0 -3
  32. data/app/views/cms_admin/files/destroy.js.erb +0 -3
data/.gitignore CHANGED
@@ -11,5 +11,6 @@ rdoc
11
11
  public/*
12
12
  Gemfile.lock
13
13
  .rvmrc
14
+ .ruby-version
14
15
  /.sass-cache
15
16
  /coverage
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
- # ComfortableMexicanSofa (Rails 3 CMS Engine)
2
- [![Build Status](https://travis-ci.org/comfy/comfortable-mexican-sofa.png?branch=master)](https://travis-ci.org/comfy/comfortable-mexican-sofa) [![Dependency Status](https://gemnasium.com/comfy/comfortable-mexican-sofa.png)](https://gemnasium.com/comfy/comfortable-mexican-sofa) [![Code Climate](https://codeclimate.com/github/comfy/comfortable-mexican-sofa.png)](https://codeclimate.com/github/comfy/comfortable-mexican-sofa) [![Coverage Status](https://coveralls.io/repos/comfy/comfortable-mexican-sofa/badge.png?branch=master)](https://coveralls.io/r/comfy/comfortable-mexican-sofa)
1
+ # ComfortableMexicanSofa (Rails 3 CMS Engine)
2
+ [![Gem Version](https://badge.fury.io/rb/comfortable_mexican_sofa.png)](http://rubygems.org/gems/comfortable_mexican_sofa) [![Build Status](https://travis-ci.org/comfy/comfortable-mexican-sofa.png?branch=master)](https://travis-ci.org/comfy/comfortable-mexican-sofa) [![Dependency Status](https://gemnasium.com/comfy/comfortable-mexican-sofa.png)](https://gemnasium.com/comfy/comfortable-mexican-sofa) [![Code Climate](https://codeclimate.com/github/comfy/comfortable-mexican-sofa.png)](https://codeclimate.com/github/comfy/comfortable-mexican-sofa) [![Coverage Status](https://coveralls.io/repos/comfy/comfortable-mexican-sofa/badge.png?branch=master)](https://coveralls.io/r/comfy/comfortable-mexican-sofa)
3
3
 
4
4
  ComfortableMexicanSofa is a powerful CMS Engine for your Rails 3 applications.
5
5
 
@@ -60,6 +60,12 @@ For more information please [see Wiki pages](https://github.com/comfy/comfortabl
60
60
 
61
61
  ![Sofa's Page Edit View](https://github.com/comfy/comfortable-mexican-sofa/raw/master/doc/preview.png)
62
62
 
63
+ Help and Contact
64
+ ----------------
65
+
66
+ GoogleGroups: http://groups.google.com/group/comfortable-mexican-sofa
67
+ Twitter: [@GroceryBagHead](http://twitter.com/#!/GroceryBagHead)
68
+
63
69
  ---
64
70
 
65
71
  ComfortableMexicanSofa is released under the [MIT license](https://github.com/comfy/comfortable-mexican-sofa/raw/master/LICENSE)
@@ -130,18 +130,28 @@ window.CMS.categories = ->
130
130
 
131
131
 
132
132
  window.CMS.uploader = ->
133
- action = $('.file-uploader form').attr('action')
134
- $('.file-uploader input[type=file]').change ->
135
- files = $($(this).get(0).files)
136
- files.each (i, file) ->
137
- xhr = new XMLHttpRequest()
138
- xhr.onreadystatechange = (e) ->
139
- if (xhr.readyState == 4 && xhr.status == 200)
140
- eval(xhr.responseText)
141
- xhr.open('POST', action, true)
142
- xhr.setRequestHeader('Accept', 'application/javascript')
143
- xhr.setRequestHeader('X-CSRF-Token', $('meta[name=csrf-token]').attr('content'))
144
- xhr.setRequestHeader('Content-Type', file.content_type || file.type)
145
- xhr.setRequestHeader('X-File-Name', file.name)
146
- xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest')
147
- xhr.send(file)
133
+ form = $('.file-uploader form')
134
+ iframe = $('iframe#file-upload-frame')
135
+
136
+ $('input[type=file]', form).change -> form.submit()
137
+
138
+ iframe.load -> upload_loaded()
139
+
140
+ upload_loaded = ->
141
+ i = iframe[0]
142
+ d = if i.contentDocument
143
+ i.contentDocument
144
+ else if i.contentWindow
145
+ i.contentWindow.document
146
+ else
147
+ i.document
148
+
149
+ if d.body.innerHTML
150
+ raw_string = d.body.innerHTML
151
+ json_string = raw_string.match(/\{(.|\n)*\}/)[0]
152
+ json = $.parseJSON(json_string)
153
+ files = $($('<div/>').html(json.view).text()).hide()
154
+ $('.uploaded-files').prepend(files)
155
+ files.map ->
156
+ $(this).fadeIn()
157
+
@@ -128,6 +128,8 @@ body#comfy
128
128
  margin: 0
129
129
  font-size: 11px
130
130
  width: 100%
131
+ iframe#file-upload-frame
132
+ display: none
131
133
 
132
134
  // -- Common Elements -----------------------------------------------------
133
135
  table.table, ul.list
@@ -145,7 +147,7 @@ body#comfy
145
147
  display: none
146
148
  &:hover .dragger
147
149
  display: block
148
- .category
150
+ div.category
149
151
  display: inline-block
150
152
  vertical-align: top
151
153
  font-size: 11px
@@ -2,73 +2,64 @@ class CmsAdmin::FilesController < CmsAdmin::BaseController
2
2
 
3
3
  skip_before_filter :load_fixtures
4
4
 
5
- before_filter :load_file, :only => [:edit, :update, :destroy]
5
+ before_filter :build_file, :only => [:new, :create]
6
+ before_filter :load_file, :only => [:edit, :update, :destroy]
6
7
 
7
8
  def index
8
- return redirect_to :action => :new if @site.files.count == 0
9
- @files = @site.files.includes(:categories).for_category(params[:category]).all(:order => 'cms_files.position')
9
+ @files = @site.files.includes(:categories).for_category(params[:category]).order('cms_files.position')
10
+
11
+ if params[:ajax]
12
+ files = @files.images.collect do |file|
13
+ { :thumb => file.file.url(:cms_thumb),
14
+ :image => file.file.url }
15
+ end
16
+ render :json => files
17
+ else
18
+ return redirect_to :action => :new if @site.files.count == 0
19
+ end
10
20
  end
11
21
 
12
22
  def new
13
- @file = @site.files.new
23
+ render
14
24
  end
15
25
 
16
26
  def create
17
- respond_to do |format|
18
- format.html do
19
- @file = @site.files.new
20
- file_array = params[:file][:file] || [nil]
21
- label = params[:file][:label]
22
-
23
- file_array.each_with_index do |file, i|
24
- file_params = params[:file].merge(:file => file)
25
- if file_array.size > 1 && file_params[:label].present?
26
- label = file_params[:label] + " #{i + 1}"
27
- end
28
- @file = @site.files.create!(file_params.merge(:label => label))
29
- end
27
+ @files = []
28
+
29
+ # Sometimes params[:file] comes in as a single file object
30
+ unless params[:file].is_a?(Hash)
31
+ uploaded_file = params[:file]
32
+ params[:file] = { }
33
+ params[:file][:file] = [uploaded_file]
34
+ end
35
+
36
+ file_array = params[:file][:file] || [nil]
37
+ label = params[:file][:label]
30
38
 
31
- flash[:success] = I18n.t('cms.files.created')
32
- redirect_to :action => :edit, :id => @file
33
- end
34
- format.js do
35
- # FIX: No idea why this cannot be simulated in the test
36
- io = Rails.env.test??
37
- request.env['RAW_POST_DATA'].clone :
38
- request.env['rack.input'].clone
39
- # Unfortunately, this ends up copying the data twice.
40
- # Once from the stream to the tempfile here, and second, in
41
- # the file to another tempfile down in PaperClip UploadFileAdapter..
42
- file = Tempfile.new(request.env["HTTP_X_FILE_NAME"])
43
- file.binmode
44
- # FileUtils.copy_stream ends up throwing Conversion Errors from ASCII-8BIT to UTF-8
45
- # FileUtils.copy_stream(io, file)
46
- while data = io.read(16*1024)
47
- file.write(data)
48
- end
49
- file.rewind
50
- # We use a delegation class on the file returned
51
- upload = ActionDispatch::Http::UploadedFile.new(
52
- :filename => request.env['HTTP_X_FILE_NAME'],
53
- :tempfile => file,
54
- :type => request.env['CONTENT_TYPE'],
55
- :head => request.headers # Not really needed
56
- )
57
- @file = @site.files.create!(
58
- (params[:file] || { }).merge(:file => upload)
59
- )
39
+ file_array.each_with_index do |file, i|
40
+ file_params = params[:file].merge(:file => file)
41
+ if file_array.size > 1 && file_params[:label].present?
42
+ label = file_params[:label] + " #{i + 1}"
60
43
  end
44
+ @file = @site.files.create!(file_params.merge(:label => label))
45
+ @files << @file
61
46
  end
47
+
48
+ if params[:ajax]
49
+ view = render_to_string(:partial => 'cms_admin/files/file', :collection => @files, :layout => false)
50
+ render :json => {:filelink => @file.file.url, :view => view.gsub("\n", '')}
51
+ else
52
+ flash[:success] = I18n.t('cms.files.created')
53
+ redirect_to :action => :edit, :id => @file
54
+ end
55
+
62
56
  rescue ActiveRecord::RecordInvalid
63
57
  logger.detailed_error($!)
64
- respond_to do |format|
65
- format.html do
66
- flash.now[:error] = I18n.t('cms.files.creation_failure')
67
- render :action => :new
68
- end
69
- format.js do
70
- render :nothing => true
71
- end
58
+ if params[:ajax]
59
+ render :nothing => true, :status => :unprocessable_entity
60
+ else
61
+ flash.now[:error] = I18n.t('cms.files.creation_failure')
62
+ render :action => :new
72
63
  end
73
64
  end
74
65
 
@@ -103,6 +94,10 @@ class CmsAdmin::FilesController < CmsAdmin::BaseController
103
94
  end
104
95
 
105
96
  protected
97
+
98
+ def build_file
99
+ @file = @site.files.new
100
+ end
106
101
 
107
102
  def load_file
108
103
  @file = @site.files.find(params[:id])
@@ -1,6 +1,5 @@
1
1
  .file{:class => "#{dom_id(file)} #{file.is_image?? 'image' : nil}"}
2
2
  .file-name
3
-
4
3
  = link_to cms_admin_site_file_path(@site, file), :method => :delete, :remote => true, :data => {:confirm => t('.are_you_sure')}, :class => 'delete' do
5
4
  %i.icon-remove-circle
6
5
  = link_to file.file_file_name, file.file.url, :target => '_blank', :class => 'filename'
@@ -2,11 +2,13 @@
2
2
  - files_scope = (type == 'image') ? @site.files.images : @site.files
3
3
 
4
4
  .box.file-uploader
5
- = form_for :file, :url => cms_admin_site_files_path(@site), :html => {:multipart => true} do |form|
5
+ = form_for :file, :url => cms_admin_site_files_path(@site, :ajax => true), :html => {:multipart => true, :target => 'file-upload-frame'} do |form|
6
6
  %span.btn.btn-file
7
7
  = t('.button')
8
8
  = form.file_field :file, :multiple => true, :id => nil
9
9
 
10
10
  .uploaded-files
11
11
  - files_scope.order(:label).each do |file|
12
- = render :partial => 'cms_admin/files/file', :object => file
12
+ = render :partial => 'cms_admin/files/file', :object => file
13
+
14
+ %iframe#file-upload-frame{:name => 'file-upload-frame', :src => ''}
@@ -0,0 +1,2 @@
1
+ $(".file.<%= dom_id(@file) %>").fadeOut 'slow', ->
2
+ $(this).remove()
@@ -28,7 +28,7 @@
28
28
 
29
29
  = render :partial => 'form_blocks'
30
30
 
31
- = form.check_box :is_published, :label => 'Published'
31
+ = form.check_box :is_published, :label => t('.is_published')
32
32
 
33
33
  .form-actions
34
34
  = form.submit t('.preview'), :name => 'preview', :id => nil, :class => 'btn'
@@ -8,7 +8,7 @@
8
8
  - content_for :right_column do
9
9
  .box.revisions
10
10
  - @record.revisions.each do |revision|
11
- = active_link_to revision.created_at, :id => revision.id
11
+ = active_link_to l(revision.created_at), :id => revision.id
12
12
 
13
13
 
14
14
  %table.table
@@ -3,7 +3,7 @@
3
3
  = form.text_field :hostname
4
4
  = form.text_field :path
5
5
  = form.select :locale, ComfortableMexicanSofa.config.locales.to_a.collect{|l| [l[1], l[0]]}
6
- = form.check_box :is_mirrored
6
+ = form.check_box :is_mirrored, :label => t('.is_mirrored')
7
7
 
8
8
  .form-actions
9
9
  = form.submit t(@site.new_record?? '.create' : '.update'), :class => 'btn btn-primary'
@@ -11,4 +11,6 @@
11
11
  .center-column
12
12
  = render :partial => 'layouts/cms_admin/center'
13
13
 
14
- = render :partial => 'layouts/cms_admin/footer'
14
+ = render :partial => 'layouts/cms_admin/footer'
15
+
16
+ = render :partial => 'layouts/cms_admin/footer_js'
@@ -1,7 +1,3 @@
1
1
  .body-footer
2
2
  = link_to 'ComfortableMexicanSofa', 'https://github.com/comfy', :target => '_blank'
3
- %span.version= ComfortableMexicanSofa::VERSION
4
-
5
- - if content_for(:javascript)
6
- :javascript
7
- #{yield :javascript}
3
+ %span.version= ComfortableMexicanSofa::VERSION
@@ -0,0 +1,7 @@
1
+ - if content_for(:javascript)
2
+ :javascript
3
+ #{yield :javascript}
4
+
5
+ - if @site && !@site.new_record?
6
+ :javascript
7
+ CMS.file_upload_path = "#{cms_admin_site_files_path(@site)}"
@@ -121,6 +121,7 @@ de:
121
121
  form:
122
122
  create: Erstelle Web-Site
123
123
  update: Web-Site speichern
124
+ is_mirrored: Gespiegelt
124
125
 
125
126
  layouts:
126
127
  index:
@@ -162,6 +163,7 @@ de:
162
163
  preview: Vorschau
163
164
  create: Erstelle Seite
164
165
  update: Seite speichern
166
+ is_published: Veröffentlicht
165
167
  form_blocks:
166
168
  no_tags: |-
167
169
  Layout has hat keine Inhalt-Tags definiert.<br/>
@@ -121,6 +121,7 @@ en:
121
121
  form:
122
122
  create: Create Site
123
123
  update: Update Site
124
+ is_mirrored: Mirrored
124
125
 
125
126
  layouts:
126
127
  index:
@@ -162,6 +163,7 @@ en:
162
163
  preview: Preview
163
164
  create: Create Page
164
165
  update: Update Page
166
+ is_published: Published
165
167
  form_blocks:
166
168
  no_tags: |-
167
169
  Layout has no content tags defined.<br/>
@@ -121,6 +121,7 @@ es:
121
121
  form:
122
122
  create: Crear Sitio
123
123
  update: Actualizar Sitio
124
+ is_mirrored: Espejo
124
125
 
125
126
  layouts:
126
127
  index:
@@ -162,6 +163,7 @@ es:
162
163
  preview: Vista Previa
163
164
  create: Crear Página
164
165
  update: Actualizar Página
166
+ is_published: Publicada
165
167
  form_blocks:
166
168
  no_tags: |-
167
169
  La plantilla no tiene etiquetas de contenido definidas.<br/>
@@ -2,8 +2,8 @@
2
2
  fr:
3
3
  # -- Models ---------------------------------------------------------------
4
4
  attributes:
5
- label: Label
6
- slug: Slug
5
+ label: Nom
6
+ slug: Identifiant
7
7
  parent_id: Parent
8
8
  content: Contenu
9
9
  identifier: Identifiant
@@ -12,30 +12,30 @@ fr:
12
12
  cms/site: Site
13
13
  cms/layout: Mise en page
14
14
  cms/page: Page
15
- cms/snippet: Snippet
15
+ cms/snippet: Fragment
16
16
  cms/file: Fichier
17
17
  attributes:
18
18
  cms/site:
19
19
  identifier: Identifiant
20
- hostname: Hostname
21
- path: Chemin d'accès
22
- locale: Langage
20
+ hostname: Nom d'hôte
21
+ path: Chemin
22
+ locale: Langue
23
23
  is_mirrored: En miroir
24
24
  cms/layout:
25
25
  identifier: Identifiant
26
- label: Nom de la Mise en page
27
- app_layout: Mise en page Application
28
- parent_id: Mise en page Parent
29
- css: Feuille de Style CSS
26
+ label: Nom de la mise en page
27
+ app_layout: Mise en page de l'application
28
+ parent_id: Mise en page parent
29
+ css: Feuille de style
30
30
  js: Javascript
31
31
  cms/page:
32
- label: Label
32
+ label: Nom de la page
33
33
  layout_id: Mise en page
34
- slug: Slug
35
- target_page_id: Rediriger vers Page
34
+ slug: Identifiant
35
+ target_page_id: Rediriger vers
36
36
  is_published: Publié
37
37
  cms/file:
38
- file: File
38
+ file: Fichier
39
39
  description: Description
40
40
  cms/snippet:
41
41
  identifier: Identifiant
@@ -43,59 +43,59 @@ fr:
43
43
  # -- Controllers ----------------------------------------------------------
44
44
  cms:
45
45
  base:
46
- site_not_found: Site non trouvé
47
- fixtures_enabled: Jeu de données Test activé. Toutes les modifications seront supprimées.
46
+ site_not_found: Site introuvable
47
+ fixtures_enabled: Fixtures activés. Toutes les modifications seront supprimées.
48
48
 
49
49
  sites:
50
50
  created: Site créé
51
- creation_failure: Echec de la création du site
51
+ creation_failure: Échec de la création du site
52
52
  updated: Site modifié
53
- update_failure: Echec de la modification du site
53
+ update_failure: Échec de la modification du site
54
54
  deleted: Site supprimé
55
- not_found: Site non trouvé
55
+ not_found: Site introuvable
56
56
 
57
57
  layouts:
58
58
  created: Mise en page créée
59
- creation_failure: Echec de la création de la Mise en page
59
+ creation_failure: Échec de la création de la mise en page
60
60
  updated: Mise en page modifiée
61
- update_failure: Echec de la modification de la mise en page
61
+ update_failure: Échec de la modification de la mise en page
62
62
  deleted: Mise en page supprimée
63
- not_found: Mise en page non trouvée
63
+ not_found: Mise en page introuvable
64
64
 
65
65
  pages:
66
66
  created: Page créée
67
- creation_failure: Echec de la création de la page
67
+ creation_failure: Échec de la création de la page
68
68
  updated: Page modifiée
69
- update_failure: Echec de la modification de la page
69
+ update_failure: Échec de la modification de la page
70
70
  deleted: Page supprimée
71
- not_found: Page non trouvée
72
- layout_not_found: Aucune Mise ne page disponible. SVP créez en une.
71
+ not_found: Page introuvable
72
+ layout_not_found: Aucune mise en page disponible. Créez-en une nouvelle.
73
73
 
74
74
  snippets:
75
- created: Snippet créé
76
- creation_failure: Echec de la création du snippet
77
- updated: Snippet modifié
78
- update_failure: Echec de la modification du snippet
79
- deleted: Snippet supprimé
80
- not_found: Snippet non trouvé
75
+ created: Fragment créé
76
+ creation_failure: Échec de la création du fragment
77
+ updated: Fragment modifié
78
+ update_failure: Échec de la modification du fragment
79
+ deleted: Fragment supprimé
80
+ not_found: Fragment introuvable
81
81
 
82
82
  revisions:
83
- reverted: Contenu Reverted
84
- record_not_found: Enregistrement non trouvé
85
- not_found: Revision non trouvée
83
+ reverted: Contenu restauré
84
+ record_not_found: Enregistrement introuvable
85
+ not_found: Révision introuvable
86
86
 
87
87
  files:
88
88
  created: Fichier téléchargé
89
- creation_failure: Echec deu téléchargement de fichier
89
+ creation_failure: Échec du téléchargement du fichier
90
90
  updated: Fichier modifié
91
- update_failure: Echec de la modification du fichier
91
+ update_failure: Échec de la modification du fichier
92
92
  deleted: Fichier supprimé
93
- not_found: Fichier non trouvé
93
+ not_found: Fichier introuvable
94
94
 
95
95
  content:
96
- site_not_found: Site non trouvé
97
- layout_not_found: Mise en page non trouvée
98
- page_not_found: Page non trouvée
96
+ site_not_found: Site introuvable
97
+ layout_not_found: Mise en page introuvable
98
+ page_not_found: Page introuvable
99
99
 
100
100
  # -- Views ----------------------------------------------------------------
101
101
  cms_admin:
@@ -103,125 +103,127 @@ fr:
103
103
  sites: Sites
104
104
  layouts: Mises en page
105
105
  pages: Pages
106
- snippets: Snippets
106
+ snippets: Fragments
107
107
  files: Fichiers
108
108
 
109
109
  sites:
110
110
  index:
111
111
  title: Sites
112
- new_link: Créer Nouveau Site
113
- select: Sélectionner Site
112
+ new_link: Nouveau site
113
+ select: Sélectionner ce site
114
114
  edit: Modifier
115
115
  delete: Supprimer
116
- are_you_sure: Confirmez-vous la suppression de ce site?
116
+ are_you_sure: Êtes-vous sûr de vouloir supprimer ce site ?
117
117
  new:
118
- title: Nouveau Site
118
+ title: Nouveau site
119
119
  edit:
120
- title: Modification Site
120
+ title: Modification du site
121
121
  form:
122
- create: Créer Site
123
- update: Modifier Site
122
+ create: Créer le site
123
+ update: Modifier le site
124
+ is_mirrored: En miroir
124
125
 
125
126
  layouts:
126
127
  index:
127
- title: Layouts
128
- new_link: Créer Nouveau Layout
128
+ title: Mises en page
129
+ new_link: Nouvelle mise en page
129
130
  index_branch:
130
- add_child_layout: Ajouter Mise en page Enfant
131
+ add_child_layout: Ajouter une mise en page enfant
131
132
  edit: Modifier
132
133
  delete: Supprimer
133
- are_you_sure: Confirmez-vous la suppression?
134
+ are_you_sure: Êtes-vous sûr de vouloir supprimer cette mise en page ?
134
135
  new:
135
- title: Nouvelle Mise en page
136
+ title: Nouvelle mise en page
136
137
  edit:
137
- title: Modification Mise en page
138
- revision: Révision
138
+ title: Modification de la mise en page
139
+ revision: révision
139
140
  form:
140
- select_parent_layout: Sélection Mise en page Parent
141
- select_app_layout: Sélection Mise en page Application
142
- create: Créer Mise en page
143
- update: Modifier Mise en page
141
+ select_parent_layout: Sélectionner une mise en page parent
142
+ select_app_layout: Sélectionner une mise en page de l'application
143
+ create: Créer la mise en page
144
+ update: Modifier la mise en page
144
145
 
145
146
  pages:
146
147
  index:
147
148
  title: Pages
148
- new_link: Créer Nouvelle Page
149
+ new_link: Nouvelle page
149
150
  index_branch:
150
151
  toggle: Basculer
151
- add_child_page: Ajouter Page Enfant
152
+ add_child_page: Ajouter une page enfant
152
153
  edit: Modifier
153
154
  delete: Supprimer
154
- are_you_sure: Confirmez-vous la suppression?
155
+ are_you_sure: Êtes-vous sûr de vouloir supprimer cette page ?
155
156
  new:
156
- title: Nouvelle Page
157
+ title: Nouvelle page
157
158
  edit:
158
- title: Modification Page
159
- revision: Révision
159
+ title: Modification de la page
160
+ revision: révision
160
161
  form:
161
- select_target_page: Sans Redirection
162
+ select_target_page: Pas de redirection
162
163
  preview: Prévisualiser
163
- create: Créer Page
164
- update: Modifier Page
164
+ create: Créer la page
165
+ update: Modifier la page
166
+ is_published: Publié
165
167
  form_blocks:
166
168
  no_tags: |-
167
169
  Mise en page sans aucun tag de contenu.<br/>
168
- Modifiez le contenu pour y ajouter un tag de page ou de champs. Par exemple: <code>{{cms:page:content}}</code>
170
+ Modifiez le contenu pour y ajouter un tag de page ou de champ. Exemple : <code>{{cms:page:content}}</code>
169
171
 
170
172
  snippets:
171
173
  index:
172
- title: Snippets
173
- new_link: Créer Nouveau Snippet
174
+ title: Fragments
175
+ new_link: Nouveau fragment
174
176
  edit: Modifier
175
177
  delete: Supprimer
176
- are_you_sure: Confirmez-vous la suppression?
178
+ are_you_sure: Êtes-vous sûr de vouloir supprimer ce fragment ?
177
179
  new:
178
- title: Nouveau Snippet
180
+ title: Nouveau fragment
179
181
  edit:
180
- title: Modification Snippet
181
- revision: Révision
182
+ title: Modification du fragment
183
+ revision: révision
182
184
  form:
183
- create: Créer Snippet
184
- update: Modifier Snippet
185
+ create: Créer le fragment
186
+ update: Modifier le fragment
185
187
 
186
188
  revisions:
187
189
  show:
188
- title: Révisions pour
189
- revision: Révision
190
- full_path: Chemin d'accès complet
191
- slug: Nom unique
192
- update: Update to this Révision
190
+ title: "Révisions :"
191
+ revision: révision
192
+ full_path: Chemin complet
193
+ slug: Identifiant
194
+ update: Restaurer cette révision
193
195
  current: Actuel
194
196
 
195
197
  files:
196
198
  index:
197
199
  title: Fichiers
198
- new_link: Télécharger Nouveau Fichier
200
+ new_link: Nouveau fichier
199
201
  edit: Modifier
200
202
  delete: Supprimer
201
- are_you_sure: Confirmez-vous la suppression?
202
- button: Télécharger Fichiers
203
+ are_you_sure: Êtes-vous sûr de vouloir supprimer ce fichier ?
204
+ button: Ajouter des fichiers
203
205
  new:
204
- title: Nouveau Fichier
206
+ title: Nouveau fichier
205
207
  edit:
206
- title: Modification Fichier
208
+ title: Modification du fichier
207
209
  form:
208
210
  current_file: Fichier actuel
209
- create: Télécharger Fichier
210
- update: Modifier Fichier
211
+ create: Envoyer
212
+ update: Modifier le fichier
211
213
  page_form:
212
- are_you_sure: Confirmez-vous la suppression?
214
+ are_you_sure: Êtes-vous sûr de vouloir supprimer ce fichier ?
213
215
  file:
214
- are_you_sure: Confirmez-vous la suppression?
216
+ are_you_sure: Êtes-vous sûr de vouloir supprimer ce fichier ?
215
217
 
216
218
  categories:
217
219
  index:
218
220
  label: Catégories
219
- edit: Modifier
220
- done: Effectué
221
+ edit: Modifier les catégories
222
+ done: Terminé
221
223
  all: Tout
222
224
  add: Ajouter
223
225
  show:
224
- are_you_sure: Confirmez-vous la suppression?
226
+ are_you_sure: Êtes-vous sûr de vouloir supprimer cette catégorie ?
225
227
  edit:
226
228
  save: Enregistrer
227
229
  form:
@@ -229,6 +231,6 @@ fr:
229
231
 
230
232
  dialogs:
231
233
  image:
232
- insert: Insérer Image
234
+ insert: Insérer une image
233
235
  link:
234
- create: Créer Lien
236
+ create: Insérer un lien
@@ -121,7 +121,8 @@ ja:
121
121
  form:
122
122
  create: サイトを作成
123
123
  update: サイトを更新
124
-
124
+ is_mirrored: ミラーリング済み
125
+
125
126
  layouts:
126
127
  index:
127
128
  title: レイアウト
@@ -162,6 +163,7 @@ ja:
162
163
  preview: プレビュー
163
164
  create: ページを作成
164
165
  update: ページを更新
166
+ is_published: パブリッシュ済み
165
167
  form_blocks:
166
168
  no_tags: |-
167
169
  レイアウトにはコンテンツタグが定義されていません。<br/>
@@ -121,6 +121,7 @@ pl:
121
121
  form:
122
122
  create: Utwórz witrynę
123
123
  update: Uaktualnij witrynę
124
+ is_mirrored: Mirror
124
125
 
125
126
  layouts:
126
127
  index:
@@ -162,6 +163,7 @@ pl:
162
163
  preview: Podgląd
163
164
  create: Utwórz stronę
164
165
  update: Uaktualnij stronę
166
+ is_published: Opublikowana
165
167
  form_blocks:
166
168
  no_tags: |-
167
169
  Szablon nie ma zdefiniowanych tagów<br/>
@@ -121,6 +121,7 @@ pt-BR:
121
121
  form:
122
122
  create: Criar Site
123
123
  update: Atualizar Site
124
+ is_mirrored: Espelhado
124
125
 
125
126
  layouts:
126
127
  index:
@@ -162,6 +163,7 @@ pt-BR:
162
163
  preview: Pré-visualização
163
164
  create: Criar Página
164
165
  update: Atualizar Página
166
+ is_published: Publicada
165
167
  form_blocks:
166
168
  no_tags: |-
167
169
  O leiaute não possui tags de conteúdo definidas.<br/>
@@ -121,6 +121,7 @@ ru:
121
121
  form:
122
122
  create: Создать сайт
123
123
  update: Обновить сайт
124
+ is_mirrored: Синхронизирован с другими сайтами
124
125
 
125
126
  layouts:
126
127
  index:
@@ -162,6 +163,7 @@ ru:
162
163
  preview: Предпросмотр
163
164
  create: Создать страницу
164
165
  update: Обновить страницу
166
+ is_published: Опубликована
165
167
  form_blocks:
166
168
  no_tags: |-
167
169
  Шаблон не содержит ни одного контент-тега.<br/>
@@ -121,6 +121,7 @@ sv:
121
121
  form:
122
122
  create: Skapa Site
123
123
  update: Uppdatera Site
124
+ is_mirrored: Speglad
124
125
 
125
126
  layouts:
126
127
  index:
@@ -162,6 +163,7 @@ sv:
162
163
  preview: Förhandsgranska
163
164
  create: Skapa sida
164
165
  update: Uppdatera sida
166
+ is_published: Publicerad
165
167
  form_blocks:
166
168
  no_tags: |-
167
169
  Layout har inga innehållstaggar definierade.<br/>
@@ -121,6 +121,7 @@ zh-CN:
121
121
  form:
122
122
  create: 创建站点
123
123
  update: 更新站点
124
+ is_mirrored: 镜像
124
125
 
125
126
  layouts:
126
127
  index:
@@ -162,6 +163,7 @@ zh-CN:
162
163
  preview: 预览
163
164
  create: 创建页面
164
165
  update: 更新页面
166
+ is_published: 发布
165
167
  form_blocks:
166
168
  no_tags: |-
167
169
  布局中没有定义内容标签。<br/>
@@ -1,3 +1,3 @@
1
1
  module ComfortableMexicanSofa
2
- VERSION = "1.8.0"
2
+ VERSION = "1.8.1"
3
3
  end
@@ -31,6 +31,17 @@ class CmsAdmin::FilesControllerTest < ActionController::TestCase
31
31
  assert_equal 0, assigns(:files).count
32
32
  end
33
33
 
34
+ def test_get_index_as_ajax
35
+ get :index, :site_id => cms_sites(:default), :ajax => true
36
+ assert_response :success
37
+ r = JSON.parse(response.body)
38
+ file = cms_files(:default)
39
+ assert_equal [{
40
+ 'thumb' => file.file.url(:cms_thumb),
41
+ 'image' => file.file.url
42
+ }], r
43
+ end
44
+
34
45
  def test_get_new
35
46
  site = cms_sites(:default)
36
47
  get :new, :site_id => site
@@ -61,7 +72,7 @@ class CmsAdmin::FilesControllerTest < ActionController::TestCase
61
72
  post :create, :site_id => cms_sites(:default), :file => {
62
73
  :label => 'Test File',
63
74
  :description => 'Test Description',
64
- :file => [fixture_file_upload('files/image.jpg', "image/jpeg")]
75
+ :file => [fixture_file_upload('files/image.jpg', 'image/jpeg')]
65
76
  }
66
77
  assert_response :redirect
67
78
  file = Cms::File.last
@@ -90,8 +101,8 @@ class CmsAdmin::FilesControllerTest < ActionController::TestCase
90
101
  :label => 'Test File',
91
102
  :description => 'Test Description',
92
103
  :file => [
93
- fixture_file_upload('files/image.jpg', "image/jpeg"),
94
- fixture_file_upload('files/image.gif', "image/gif")
104
+ fixture_file_upload('files/image.jpg', 'image/jpeg'),
105
+ fixture_file_upload('files/image.gif', 'image/gif')
95
106
  ]
96
107
  }
97
108
  assert_response :redirect
@@ -110,18 +121,36 @@ class CmsAdmin::FilesControllerTest < ActionController::TestCase
110
121
  end
111
122
  end
112
123
 
113
- def test_create_as_xhr
114
- request.env['HTTP_X_FILE_NAME'] = 'image.jpg'
115
- request.env['CONTENT_TYPE'] = 'image/jpeg'
116
- request.env['RAW_POST_DATA'] = File.open(File.expand_path('../../fixtures/files/image.jpg', File.dirname(__FILE__)))
117
-
124
+ def test_create_as_ajax
118
125
  assert_difference 'Cms::File.count' do
119
- xhr :post, :create, :site_id => cms_sites(:default)
126
+ post :create,
127
+ :ajax => true,
128
+ :site_id => cms_sites(:default),
129
+ :file => {
130
+ :file => [fixture_file_upload('files/image.jpg', 'image/jpeg')]
131
+ }
120
132
  assert_response :success
121
-
122
133
  file = Cms::File.last
123
- assert_equal 'image.jpg', file.file_file_name
124
- assert_equal 'image/jpeg', file.file_content_type
134
+ r = JSON.parse(response.body)
135
+ assert_equal file.file.url, r['filelink']
136
+ assert_present r['view']
137
+ end
138
+ end
139
+
140
+ def test_create_as_ajax_failure
141
+ assert_no_difference 'Cms::File.count' do
142
+ post :create, :ajax => true, :site_id => cms_sites(:default), :file => { }
143
+ assert_response :unprocessable_entity
144
+ end
145
+ end
146
+
147
+ def test_create_as_ajax_as_single_file
148
+ assert_difference 'Cms::File.count' do
149
+ post :create,
150
+ :ajax => true,
151
+ :site_id => cms_sites(:default),
152
+ :file => fixture_file_upload('files/image.jpg', 'image/jpeg')
153
+ assert_response :success
125
154
  end
126
155
  end
127
156
 
@@ -24,7 +24,7 @@ class CmsAdmin::LayoutsControllerTest < ActionController::TestCase
24
24
  assert_equal '{{ cms:page:content:text }}', assigns(:layout).content
25
25
  assert_template :new
26
26
  assert_select "form[action=/cms-admin/sites/#{site.id}/layouts]"
27
- assert_select "form[action='/cms-admin/sites/#{site.id}/files']"
27
+ assert_select "form[action='/cms-admin/sites/#{site.id}/files?ajax=true']"
28
28
  end
29
29
 
30
30
  def test_get_edit
@@ -43,7 +43,7 @@ class CmsAdmin::PagesControllerTest < ActionController::TestCase
43
43
  assert_template :new
44
44
  assert_select "form[action=/cms-admin/sites/#{site.id}/pages]"
45
45
  assert_select "select[data-url=/cms-admin/sites/#{site.id}/pages/0/form_blocks]"
46
- assert_select "form[action='/cms-admin/sites/#{site.id}/files']"
46
+ assert_select "form[action='/cms-admin/sites/#{site.id}/files?ajax=true']"
47
47
  end
48
48
 
49
49
  def test_get_new_with_field_datetime
@@ -41,7 +41,7 @@ class CmsAdmin::SnippetsControllerTest < ActionController::TestCase
41
41
  assert assigns(:snippet)
42
42
  assert_template :new
43
43
  assert_select "form[action=/cms-admin/sites/#{site.id}/snippets]"
44
- assert_select "form[action='/cms-admin/sites/#{site.id}/files']"
44
+ assert_select "form[action='/cms-admin/sites/#{site.id}/files?ajax=true']"
45
45
  end
46
46
 
47
47
  def test_get_edit
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: comfortable_mexican_sofa
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 1.8.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-03-28 00:00:00.000000000 Z
13
+ date: 2013-04-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails
@@ -231,8 +231,7 @@ files:
231
231
  - app/views/cms_admin/files/_form.html.haml
232
232
  - app/views/cms_admin/files/_index.html.haml
233
233
  - app/views/cms_admin/files/_page_form.html.haml
234
- - app/views/cms_admin/files/create.js.erb
235
- - app/views/cms_admin/files/destroy.js.erb
234
+ - app/views/cms_admin/files/destroy.js.coffee
236
235
  - app/views/cms_admin/files/edit.html.haml
237
236
  - app/views/cms_admin/files/index.html.haml
238
237
  - app/views/cms_admin/files/new.html.haml
@@ -264,6 +263,7 @@ files:
264
263
  - app/views/layouts/cms_admin/_body.html.haml
265
264
  - app/views/layouts/cms_admin/_center.html.haml
266
265
  - app/views/layouts/cms_admin/_footer.html.haml
266
+ - app/views/layouts/cms_admin/_footer_js.html.haml
267
267
  - app/views/layouts/cms_admin/_head.html.haml
268
268
  - app/views/layouts/cms_admin/_left.html.haml
269
269
  - app/views/layouts/cms_admin/_right.html.haml
@@ -1,3 +0,0 @@
1
- $('.uploaded-files').prepend(
2
- '<%= escape_javascript(render :partial => "file", :object => @file ) %>'
3
- );
@@ -1,3 +0,0 @@
1
- $(".file.<%= dom_id(@file) %>").fadeOut('slow', function(){
2
- $(this).remove()
3
- })