[Git][noosfero/noosfero][master] 4 commits: add values on api_content of link list block
Leandro Nunes
gitlab at mg.gitlab.com
Tue Jul 3 22:14:16 BRT 2018
Leandro Nunes pushed to branch master at Noosfero / noosfero
Commits:
25ce0d32 by Leandro Nunes dos Santos at 2018-07-03T23:29:29Z
add values on api_content of link list block
- - - - -
d8a1a5ef by Leandro Nunes dos Santos at 2018-07-03T23:30:21Z
save on block_images if the block has images
- - - - -
f40caa68 by Leandro Nunes dos Santos at 2018-07-04T00:18:01Z
fix unit test
- - - - -
4bac14a3 by Leandro Nunes at 2018-07-04T01:14:12Z
Merge branch 'update-api-content' into 'master'
Update api content
See merge request noosfero/noosfero!1565
- - - - -
5 changed files:
- app/models/highlights_block.rb
- app/models/link_list_block.rb
- test/api/blocks_test.rb
- test/unit/highlights_block_test.rb
- test/unit/link_list_block_test.rb
Changes:
=====================================
app/models/highlights_block.rb
=====================================
--- a/app/models/highlights_block.rb
+++ b/app/models/highlights_block.rb
@@ -24,6 +24,24 @@ class HighlightsBlock < Block
end
end
+ after_save do |block|
+ existing_images = block.block_images.map { |i| i[:image_id] }
+ update_image = false
+ self.images.select { |i| !existing_images.include?(i.id) }.map do |image|
+ temp_image = block.block_images.detect { |i| !i.image_id || i.image_id.to_s === '0' }
+ next if temp_image.nil?
+ temp_image.image_id = image.id
+ temp_image.address = self.full_image_path(image)
+ temp_image.image_src = image.public_filename
+ update_image = true
+ end
+ self.save if update_image
+ end
+
+ def full_image_path(image)
+ self.owner.hostname.blank? ? "/#{self.owner.identifier}#{image.public_filename}" : "/#{image.public_filename}"
+ end
+
def self.description
_('Creates image slideshow')
end
@@ -49,6 +67,10 @@ class HighlightsBlock < Block
true
end
+ def slides= values
+ self.block_images = values
+ end
+
def api_content(params = {})
slides = self.block_images
slides.each do |slide|
@@ -62,6 +84,12 @@ class HighlightsBlock < Block
{ slides: slides }
end
+ def api_content= params
+ super
+ self.slides= params[:slides]
+ self.interval= params[:interval]
+ end
+
def remove_unused_images
image_ids = self.block_images.map { |slide| slide[:image_id] }
images.where.not(id: image_ids).destroy_all
=====================================
app/models/link_list_block.rb
=====================================
--- a/app/models/link_list_block.rb
+++ b/app/models/link_list_block.rb
@@ -21,6 +21,19 @@ class LinkListBlock < Block
_('Links (static menu)')
end
+ def display_api_content_by_default?
+ true
+ end
+
+ def api_content(params = {})
+ { links: settings[:links] }
+ end
+
+ def api_content= params
+ super
+ settings[:links] = params[:links]
+ end
+
def help
_('This block can be used to create a menu of links. You can add, remove and update the links as you wish.')
end
=====================================
test/api/blocks_test.rb
=====================================
--- a/test/api/blocks_test.rb
+++ b/test/api/blocks_test.rb
@@ -180,6 +180,22 @@ class BlocksTest < ActiveSupport::TestCase
assert_equal 1, block.images.size
end
+ should 'be able to update image not remove existing images' do
+ box = fast_create(Box, :owner_id => profile.id, :owner_type => Profile.name)
+ block = fast_create(RawHTMLBlock, box_id: box.id)
+ Environment.default.add_admin(person)
+ base64_image = create_base64_image
+ params[:block] = {images_builder: [base64_image]}
+ post "/api/v1/blocks/#{block.id}?#{params.to_query}"
+ assert_equal 1, block.images.size
+
+
+ base64_image = create_base64_image
+ params[:block] = {images_builder: [base64_image]}
+ post "/api/v1/blocks/#{block.id}?#{params.to_query}"
+ assert_equal 2, block.images.size
+ end
+
should 'be able to remove images when updating a block' do
box = fast_create(Box, :owner_id => profile.id, :owner_type => Profile.name)
Environment.default.add_admin(person)
@@ -359,6 +375,7 @@ class BlocksTest < ActiveSupport::TestCase
end
define_method "test_should_be_able_to_get_preview_of_RecentDocumentsBlock_on_environment_with_#{env_id}" do
+ Article.delete_all
article1 = fast_create(Article, :profile_id => user.person.id, :name => "Article 1")
article2 = fast_create(Article, :profile_id => user.person.id, :name => "Article 2")
params[:block_type] = 'RecentDocumentsBlock'
=====================================
test/unit/highlights_block_test.rb
=====================================
--- a/test/unit/highlights_block_test.rb
+++ b/test/unit/highlights_block_test.rb
@@ -190,6 +190,7 @@ class HighlightsBlockTest < ActiveSupport::TestCase
}])
assert_equal 1, block.images.size
block.save!
+ block.reload
assert_equal 0, block.images.size
end
=====================================
test/unit/link_list_block_test.rb
=====================================
--- a/test/unit/link_list_block_test.rb
+++ b/test/unit/link_list_block_test.rb
@@ -133,4 +133,34 @@ class LinkListBlockTest < ActiveSupport::TestCase
assert_match /Please, edit this block to add links/, render_block_content(l)
end
+ should 'api_content= set display settings values' do
+ block = LinkListBlock.new
+ assert_nil block.settings[:display]
+ block.api_content= { display: 'always' }
+ assert_equal 'always', block.settings[:display]
+ end
+
+ should 'api_content= set display_user settings values' do
+ block = LinkListBlock.new
+ assert_nil block.settings[:display_user]
+ block.api_content= { display_user: 'all' }
+ block.valid?
+ assert_equal 'all', block.settings[:display_user]
+ end
+
+ should 'api_content= set links to settings' do
+ block = LinkListBlock.new
+ assert_nil block.settings[:links]
+ value = { "name"=>"Google", "address"=>"http://www.google.com.br" }
+ block.api_content= { links: value }
+ assert_equal value, block.settings[:links]
+ end
+
+ should 'api_content= set display_user settings if exist display value at the same time' do
+ block = LinkListBlock.new
+ assert_nil block.settings[:display_user]
+ block.api_content= { display_user: 'all', display: 'always' }
+ assert_equal 'all', block.settings[:display_user]
+ end
+
end
View it on GitLab: https://gitlab.com/noosfero/noosfero/compare/a05dc9d1fe0f27a79d655bd4ba71035f0592e9be...4bac14a35250940da89f775ac7e7df11b4022109
--
View it on GitLab: https://gitlab.com/noosfero/noosfero/compare/a05dc9d1fe0f27a79d655bd4ba71035f0592e9be...4bac14a35250940da89f775ac7e7df11b4022109
You're receiving this email because of your account on gitlab.com.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listas.softwarelivre.org/pipermail/noosfero-dev/attachments/20180704/07b99208/attachment-0001.html>
More information about the Noosfero-dev
mailing list