From e375376d3332e836a2a3b553d75a64b948954273 Mon Sep 17 00:00:00 2001 From: Daniela Feitosa Date: Fri, 30 Oct 2015 17:20:06 -0300 Subject: [PATCH] [gallery block] display images from a gallery The images are displayed like a slideshow with groups of images --- plugins/gallery_block/lib/gallery_block.rb | 41 ++++++++++ .../gallery_block/lib/gallery_block_plugin.rb | 20 +++++ plugins/gallery_block/po/gallery_block.pot | 72 +++++++++++++++++ plugins/gallery_block/po/pt/gallery_block.po | 72 +++++++++++++++++ plugins/gallery_block/public/style.css | 77 +++++++++++++++++++ .../test/unit/gallery_block_test.rb | 22 ++++++ .../box_organizer/_gallery_block.html.erb | 17 ++++ .../gallery_block/views/environment_design | 1 + .../views/gallery_block.html.erb | 44 +++++++++++ plugins/gallery_block/views/profile_design | 1 + 10 files changed, 367 insertions(+) create mode 100644 plugins/gallery_block/lib/gallery_block.rb create mode 100644 plugins/gallery_block/lib/gallery_block_plugin.rb create mode 100644 plugins/gallery_block/po/gallery_block.pot create mode 100644 plugins/gallery_block/po/pt/gallery_block.po create mode 100644 plugins/gallery_block/public/style.css create mode 100644 plugins/gallery_block/test/unit/gallery_block_test.rb create mode 100644 plugins/gallery_block/views/box_organizer/_gallery_block.html.erb create mode 120000 plugins/gallery_block/views/environment_design create mode 100644 plugins/gallery_block/views/gallery_block.html.erb create mode 120000 plugins/gallery_block/views/profile_design diff --git a/plugins/gallery_block/lib/gallery_block.rb b/plugins/gallery_block/lib/gallery_block.rb new file mode 100644 index 0000000000..e577018821 --- /dev/null +++ b/plugins/gallery_block/lib/gallery_block.rb @@ -0,0 +1,41 @@ +class GalleryBlock < Block + + attr_accessible :gallery_id, :groups_of, :speed, :interval + + settings_items :gallery_id, :type => :integer + settings_items :groups_of, :type => :integer, :default => 3 + settings_items :speed, :type => :integer, :default => 1000 + + settings_items :interval, :type => 'integer', :default => 10 + + before_save do |block| + block.groups_of = block.groups_of.to_i + end + + def self.description + _('Gallery block') + end + + def gallery + if self.owner.kind_of? Environment + article = owner.articles.find_by_id(self.gallery_id) + if article && article.gallery? + article + end + else + owner.image_galleries.find_by_id(self.gallery_id) + end + end + + def images + gallery ? gallery.images : [] + end + + def content(args={}) + block = self + proc do + render :file => 'gallery_block', :locals => { :block => block } + end + end + +end diff --git a/plugins/gallery_block/lib/gallery_block_plugin.rb b/plugins/gallery_block/lib/gallery_block_plugin.rb new file mode 100644 index 0000000000..e6b506dd90 --- /dev/null +++ b/plugins/gallery_block/lib/gallery_block_plugin.rb @@ -0,0 +1,20 @@ +class GalleryBlockPlugin < Noosfero::Plugin + def self.plugin_name + 'Gallery Block' + end + + def self.plugin_description + _('Includes a block to display images from a gallery.') + end + + def self.extra_blocks + { + GalleryBlock => {:type => [Community, Environment]} + } + end + + def stylesheet? + true + end + +end diff --git a/plugins/gallery_block/po/gallery_block.pot b/plugins/gallery_block/po/gallery_block.pot new file mode 100644 index 0000000000..131fa1ab0f --- /dev/null +++ b/plugins/gallery_block/po/gallery_block.pot @@ -0,0 +1,72 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: 1.3~rc1-15-gae6cf26\n" +"POT-Creation-Date: 2015-10-30 20:29-0000\n" +"PO-Revision-Date: 2015-08-20 16:45-0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" + +#: plugins/gallery_block/lib/gallery_block.rb:16 +msgid "Gallery block" +msgstr "" + +#: plugins/gallery_block/lib/gallery_block_plugin.rb:7 +msgid "Includes a block to display images from a gallery." +msgstr "" + +#: plugins/gallery_block/views/box_organizer/_gallery_block.html.erb:4 +msgid "Fill in with the gallery ID:" +msgstr "" + +#: plugins/gallery_block/views/box_organizer/_gallery_block.html.erb:6 +msgid "Choose a gallery" +msgstr "" + +#: plugins/gallery_block/views/box_organizer/_gallery_block.html.erb:7 +msgid "%{gallery} (%{count} images)" +msgstr "" + +#: plugins/gallery_block/views/box_organizer/_gallery_block.html.erb:11 +msgid "Transition speed (in seconds)" +msgstr "" + +#: plugins/gallery_block/views/box_organizer/_gallery_block.html.erb:13 +msgid "Image transition:" +msgstr "" + +#: plugins/gallery_block/views/box_organizer/_gallery_block.html.erb:13 +msgid "No automatic transition" +msgstr "" + +#: plugins/gallery_block/views/box_organizer/_gallery_block.html.erb:13 +msgid "Every 1 second" +msgid_plural "Every %d seconds" +msgstr[0] "" +msgstr[1] "" + +#: plugins/gallery_block/views/box_organizer/_gallery_block.html.erb:15 +msgid "In groups of" +msgstr "" + +#: plugins/gallery_block/views/gallery_block.html.erb:4 +msgid "Previous" +msgstr "" + +#: plugins/gallery_block/views/gallery_block.html.erb:27 +msgid "Next" +msgstr "" + +#: plugins/gallery_block/views/gallery_block.html.erb:43 +msgid "Please, edit this block and choose some gallery" +msgstr "" diff --git a/plugins/gallery_block/po/pt/gallery_block.po b/plugins/gallery_block/po/pt/gallery_block.po new file mode 100644 index 0000000000..05314b001d --- /dev/null +++ b/plugins/gallery_block/po/pt/gallery_block.po @@ -0,0 +1,72 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: 1.3~rc1-15-gae6cf26\n" +"POT-Creation-Date: 2015-10-30 20:29-0000\n" +"PO-Revision-Date: 2015-08-20 16:45-0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" + +#: plugins/gallery_block/lib/gallery_block.rb:16 +msgid "Gallery block" +msgstr "Bloco de galeria" + +#: plugins/gallery_block/lib/gallery_block_plugin.rb:7 +msgid "Includes a block to display images from a gallery." +msgstr "Inclui um bloco para mostrar imagens de uma galeria." + +#: plugins/gallery_block/views/box_organizer/_gallery_block.html.erb:4 +msgid "Fill in with the gallery ID:" +msgstr "Preencha com o ID de uma galeria:" + +#: plugins/gallery_block/views/box_organizer/_gallery_block.html.erb:6 +msgid "Choose a gallery" +msgstr "Escolha uma galeria" + +#: plugins/gallery_block/views/box_organizer/_gallery_block.html.erb:7 +msgid "%{gallery} (%{count} images)" +msgstr "%{gallery} (%{count} imagens)" + +#: plugins/gallery_block/views/box_organizer/_gallery_block.html.erb:11 +msgid "Transition speed (in seconds)" +msgstr "Velocidade de transição (em segundos)" + +#: plugins/gallery_block/views/box_organizer/_gallery_block.html.erb:13 +msgid "Image transition:" +msgstr "Transição de imagem:" + +#: plugins/gallery_block/views/box_organizer/_gallery_block.html.erb:13 +msgid "No automatic transition" +msgstr "Sem transição automática" + +#: plugins/gallery_block/views/box_organizer/_gallery_block.html.erb:13 +msgid "Every 1 second" +msgid_plural "Every %d seconds" +msgstr[0] "A cada segundo" +msgstr[1] "A cada %d segundos" + +#: plugins/gallery_block/views/box_organizer/_gallery_block.html.erb:15 +msgid "In groups of" +msgstr "Em grupos de" + +#: plugins/gallery_block/views/gallery_block.html.erb:4 +msgid "Previous" +msgstr "Anterior" + +#: plugins/gallery_block/views/gallery_block.html.erb:27 +msgid "Next" +msgstr "Próximo" + +#: plugins/gallery_block/views/gallery_block.html.erb:43 +msgid "Please, edit this block and choose some gallery" +msgstr "Por favor, edite esse bloco e escolha alguma galeria" diff --git a/plugins/gallery_block/public/style.css b/plugins/gallery_block/public/style.css new file mode 100644 index 0000000000..ad1c08a254 --- /dev/null +++ b/plugins/gallery_block/public/style.css @@ -0,0 +1,77 @@ +.gallery-items { + width: 100%; + display: table; + margin: 0 auto; + text-align: center; +} +.gallery-items ul { + display: table-row; +} +.gallery-item { + list-style-type: none; + display: table-cell !important; + vertical-align: middle; +} +.gallery-item div { + margin: 0 auto; +} +.gallery-list { + padding: 0; + margin: 0px; +} +.gallery-block-arrow { + float: left; + width: 16px; + background-repeat: no-repeat; + height: 160px; + background-position: center; +} +.gallery-block-arrow span { + display: none; +} +.gallery-block-container { + width: 82%; +} +.box-2 .gallery-block-container, .box-3 .gallery-block-container { + width: 78%; +} +.gallery-group { + width: 100%; + margin: 0 auto; + text-align: center; +} +.gallery-block-container, .gallery-group { + overflow: hidden; + float: left; + height: 160px; + position: relative; + background-color: #FFF !important; +} +.gallery-group ul { + padding: 0; + padding-left: 4px; +} +.gallery-block-footer { + clear: both; +} +.gallery-image-info { + position: absolute; + top: 0; + z-index: 9999; + height: 125px; + overflow: hidden; + font-size: 11px; + background-color: #fff; + opacity: 0.7; + border: 1px solid #333; + padding: 5px; + text-align: left; +} +.box-2 .gallery-image-info, .box-3 .gallery-image-info { + width: 110px; + margin-left: 50%; + left: -60px; +} +#content .gallery-image-info h3 { + font-size: 11px; +} diff --git a/plugins/gallery_block/test/unit/gallery_block_test.rb b/plugins/gallery_block/test/unit/gallery_block_test.rb new file mode 100644 index 0000000000..a9024b3593 --- /dev/null +++ b/plugins/gallery_block/test/unit/gallery_block_test.rb @@ -0,0 +1,22 @@ +require 'test_helper' + +class GalleryBlockTest < ActiveSupport::TestCase + + def setup + @community = fast_create(Community) + end + attr_reader :community + + should 'refer to a gallery' do + gallery = fast_create(Gallery, :profile_id => community.id) + gallery_block = create(GalleryBlock, :gallery_id => gallery.id) + gallery_block.stubs(:owner).returns(community) + assert_equal gallery, gallery_block.gallery + end + + should 'default interval between transitions is 10 seconds' do + block = GalleryBlock.new + assert_equal 10, block.interval + end + +end diff --git a/plugins/gallery_block/views/box_organizer/_gallery_block.html.erb b/plugins/gallery_block/views/box_organizer/_gallery_block.html.erb new file mode 100644 index 0000000000..d9c7f1e3b1 --- /dev/null +++ b/plugins/gallery_block/views/box_organizer/_gallery_block.html.erb @@ -0,0 +1,17 @@ + diff --git a/plugins/gallery_block/views/environment_design b/plugins/gallery_block/views/environment_design new file mode 120000 index 0000000000..a75d1840a7 --- /dev/null +++ b/plugins/gallery_block/views/environment_design @@ -0,0 +1 @@ +box_organizer \ No newline at end of file diff --git a/plugins/gallery_block/views/gallery_block.html.erb b/plugins/gallery_block/views/gallery_block.html.erb new file mode 100644 index 0000000000..9a62c9e699 --- /dev/null +++ b/plugins/gallery_block/views/gallery_block.html.erb @@ -0,0 +1,44 @@ +<%= block_title(block.title) %> + +<% unless block.images.blank? %> + <%= link_to content_tag(:span, _('Previous')), '#', :class => 'gallery-block-prev gallery-block-arrow icon-left' %> + + <%= link_to content_tag(:span, _('Next')), '#', :class => 'gallery-block-next gallery-block-arrow icon-right' %> + + +<% else %> + <%= _('Please, edit this block and choose some gallery') %> +<% end %> diff --git a/plugins/gallery_block/views/profile_design b/plugins/gallery_block/views/profile_design new file mode 120000 index 0000000000..a75d1840a7 --- /dev/null +++ b/plugins/gallery_block/views/profile_design @@ -0,0 +1 @@ +box_organizer \ No newline at end of file