Commit 256b8bf266b47dc782a2a72ba1b6401628e0f4ba

Authored by Rodrigo Souto
2 parents c4fe95aa 4de6c173

Merge commit 'refs/merge-requests/275' of git://gitorious.org/noosfero/noosfero …

…into merge-requests/275

Conflicts:
	test/unit/application_helper_test.rb
app/helpers/application_helper.rb
@@ -1402,4 +1402,14 @@ module ApplicationHelper @@ -1402,4 +1402,14 @@ module ApplicationHelper
1402 @no_design_blocks = true 1402 @no_design_blocks = true
1403 end 1403 end
1404 1404
  1405 + def default_folder_for_image_upload(profile)
  1406 + default_folder = profile.folders.find_by_type('Gallery')
  1407 + default_folder = profile.folders.find_by_type('Folder') if default_folder.nil?
  1408 + default_folder
  1409 + end
  1410 +
  1411 + def content_id_to_str(content)
  1412 + content.nil? ? '' : content.id.to_s
  1413 + end
  1414 +
1405 end 1415 end
app/helpers/forms_helper.rb
@@ -142,38 +142,6 @@ module FormsHelper @@ -142,38 +142,6 @@ module FormsHelper
142 content_tag('table',rows.join("\n")) 142 content_tag('table',rows.join("\n"))
143 end 143 end
144 144
145 - def select_folder(label_text, field_id, collection, default_value=nil, html_options = {}, js_options = {})  
146 - root = profile ? profile.identifier : _("root")  
147 - labelled_form_field(  
148 - label_text,  
149 - select_tag(  
150 - field_id,  
151 - options_for_select(  
152 - [[root, '']] +  
153 - collection.collect {|f| [ root + '/' + f.full_name, f.id ] },  
154 - default_value  
155 - ),  
156 - html_options.merge(js_options)  
157 - )  
158 - )  
159 - end  
160 -  
161 - def select_profile_folder(label_text, field_id, profile, default_value='', html_options = {}, js_options = {})  
162 - result = labelled_form_field(  
163 - label_text,  
164 - select_tag(  
165 - field_id,  
166 - options_for_select(  
167 - [[profile.identifier, '']] +  
168 - profile.folders.collect {|f| [ profile.identifier + '/' + f.full_name, f.id ] },  
169 - default_value  
170 - ),  
171 - html_options.merge(js_options)  
172 - )  
173 - )  
174 - return result  
175 - end  
176 -  
177 def date_field(name, value, format = '%Y-%m-%d', datepicker_options = {}, html_options = {}) 145 def date_field(name, value, format = '%Y-%m-%d', datepicker_options = {}, html_options = {})
178 datepicker_options[:disabled] ||= false 146 datepicker_options[:disabled] ||= false
179 datepicker_options[:alt_field] ||= '' 147 datepicker_options[:alt_field] ||= ''
@@ -295,23 +263,28 @@ module FormsHelper @@ -295,23 +263,28 @@ module FormsHelper
295 field_id, 263 field_id,
296 options_for_select( 264 options_for_select(
297 [[root, '']] + 265 [[root, '']] +
298 - collection.collect {|f| [ root + '/' + f.full_name, f.id ] },  
299 - default_value 266 + collection.collect {|f| [ root + '/' + f.full_name, f.id.to_s ] },
  267 + default_value.to_s
300 ), 268 ),
301 html_options.merge(js_options) 269 html_options.merge(js_options)
302 ) 270 )
303 ) 271 )
304 end 272 end
305 273
306 - def select_profile_folder(label_text, field_id, profile, default_value='', html_options = {}, js_options = {}) 274 + def select_profile_folder(label_text, field_id, profile, default_value='', html_options = {}, js_options = {}, find_options = {})
  275 + if find_options.empty?
  276 + folders = profile.folders
  277 + else
  278 + folders = profile.folders.find :all, find_options
  279 + end
307 result = labelled_form_field( 280 result = labelled_form_field(
308 label_text, 281 label_text,
309 select_tag( 282 select_tag(
310 field_id, 283 field_id,
311 options_for_select( 284 options_for_select(
312 [[profile.identifier, '']] + 285 [[profile.identifier, '']] +
313 - profile.folders.collect {|f| [ profile.identifier + '/' + f.full_name, f.id ] },  
314 - default_value 286 + folders.collect {|f| [ profile.identifier + '/' + f.full_name, f.id.to_s ] },
  287 + default_value.to_s
315 ), 288 ),
316 html_options.merge(js_options) 289 html_options.merge(js_options)
317 ) 290 )
app/views/cms/_text_editor_sidebar.rhtml
@@ -9,7 +9,12 @@ @@ -9,7 +9,12 @@
9 <div id='media-upload-form'> 9 <div id='media-upload-form'>
10 <% form_tag({ :action => 'media_upload' }, :multipart => true) do %> 10 <% form_tag({ :action => 'media_upload' }, :multipart => true) do %>
11 <div class='formfield'> 11 <div class='formfield'>
12 - <%= select_profile_folder(_('Choose folder to upload files:'), :parent_id, profile) %> 12 + <% default_folder = content_id_to_str default_folder_for_image_upload(profile) %>
  13 + <%= select_profile_folder(
  14 + _('Choose folder to upload files:'),
  15 + :parent_id, profile, default_folder, {}, {},
  16 + {:conditions => 'type="Folder" or type="Gallery"'}
  17 + ) %>
13 </div> 18 </div>
14 <p><%= file_field_tag('file1') %></p> 19 <p><%= file_field_tag('file1') %></p>
15 <p><%= file_field_tag('file2') %></p> 20 <p><%= file_field_tag('file2') %></p>
test/functional/cms_controller_test.rb
@@ -1612,6 +1612,24 @@ class CmsControllerTest &lt; ActionController::TestCase @@ -1612,6 +1612,24 @@ class CmsControllerTest &lt; ActionController::TestCase
1612 assert_template 'access_denied.rhtml' 1612 assert_template 'access_denied.rhtml'
1613 end 1613 end
1614 1614
  1615 + should 'filter profile folders to select' do
  1616 + env = Environment.default
  1617 + env.enable 'media_panel'
  1618 + env.save!
  1619 + folder = fast_create(Folder, :name=>'a', :profile_id => profile.id)
  1620 + gallery = fast_create(Gallery, :name=>'b', :profile_id => profile.id)
  1621 + blog = fast_create(Blog, :name=>'c', :profile_id => profile.id)
  1622 + article = fast_create(TinyMceArticle, :profile_id => profile.id)
  1623 + get :edit, :profile => profile.identifier, :id => article.id
  1624 + assert_template 'edit'
  1625 + assert_tag :tag => 'select', :attributes => { :name => "parent_id" },
  1626 + :descendant => { :tag => "option",
  1627 + :attributes => { :selected => 'selected', :value => gallery.id.to_s }}
  1628 + assert_no_tag :tag => 'select', :attributes => { :name => "parent_id" },
  1629 + :descendant => { :tag => "option",
  1630 + :attributes => { :value => blog.id.to_s }}
  1631 + end
  1632 +
1615 protected 1633 protected
1616 1634
1617 # FIXME this is to avoid adding an extra dependency for a proper JSON parser. 1635 # FIXME this is to avoid adding an extra dependency for a proper JSON parser.
test/unit/application_helper_test.rb
@@ -694,6 +694,38 @@ class ApplicationHelperTest &lt; ActiveSupport::TestCase @@ -694,6 +694,38 @@ class ApplicationHelperTest &lt; ActiveSupport::TestCase
694 reference_to_article('x', a) ) 694 reference_to_article('x', a) )
695 end 695 end
696 696
  697 + should 'content_id_to_str return the content id as string' do
  698 + article = fast_create(Article, :name => 'my article')
  699 + response = content_id_to_str(article)
  700 + assert_equal String, response.class
  701 + assert !response.empty?
  702 + end
  703 +
  704 + should 'content_id_to_str return empty string when receiving nil' do
  705 + assert_equal '', content_id_to_str(nil)
  706 + end
  707 +
  708 + should 'select gallery as default folder for image upload' do
  709 + profile = create_user('testuser').person
  710 + folder = fast_create(Folder, :profile_id => profile.id)
  711 + gallery = fast_create(Gallery, :profile_id => profile.id)
  712 + blog = fast_create(Blog, :profile_id => profile.id)
  713 + assert_equal gallery, default_folder_for_image_upload(profile)
  714 + end
  715 +
  716 + should 'select generic folder as default folder for image upload when no gallery' do
  717 + profile = create_user('testuser').person
  718 + folder = fast_create(Folder, :profile_id => profile.id)
  719 + blog = fast_create(Blog, :profile_id => profile.id)
  720 + assert_equal folder, default_folder_for_image_upload(profile)
  721 + end
  722 +
  723 + should 'return nil as default folder for image upload when no gallery or generic folder' do
  724 + profile = create_user('testuser').person
  725 + blog = fast_create(Blog, :profile_id => profile.id)
  726 + assert_nil default_folder_for_image_upload(profile)
  727 + end
  728 +
697 protected 729 protected
698 include NoosferoTestHelper 730 include NoosferoTestHelper
699 731