Commit 9796d5e31fb63967dce3323ad0a0fde4862bc01b

Authored by Leandro Santos
1 parent 83f37f7a

refactoring block store to make images path available for plugins and themes

app/helpers/box_organizer_helper.rb
... ... @@ -4,6 +4,34 @@ module BoxOrganizerHelper
4 4 7
5 5 end
6 6  
  7 + #FIXME make this test
  8 + def display_icon(block)
  9 +
  10 + image_path = nil
  11 + plugin = @plugins.fetch_first_plugin(:has_block?, block)
  12 +
  13 + theme = Theme.new(environment.theme) # remove this
  14 + if File.exists?(File.join(theme.filesystem_path, 'images', block.icon_path))
  15 + image_path = File.join(theme.public_path, 'images', block.icon_path)
  16 + elsif plugin && File.exists?(File.join(Rails.root, 'public', plugin.public_path, 'images', block.icon_path))
  17 + image_path = File.join('/', plugin.public_path, 'images', block.icon_path)
  18 + elsif File.exists?(File.join(Rails.root, 'public', 'images', block.icon_path))
  19 + image_path = block.icon_path
  20 + else
  21 + image_path = block.default_icon_path
  22 + end
  23 +
  24 + image_tag(image_path, height: '48', width: '48', class: 'block-type-icon', alt: '' )
  25 + end
  26 +
  27 + def display_previews(block)
  28 +# def self.previews_path
  29 +# previews = Dir.glob(File.join(images_filesystem_path, 'previews/*')).map do |path|
  30 +# File.join(images_base_url_path, 'previews', File.basename(path))
  31 +# end
  32 + ''
  33 + end
  34 +
7 35 def icon_selector(icon = 'no-ico')
8 36 render :partial => 'icon_selector', :locals => { :icon => icon }
9 37 end
... ...
app/models/block.rb
... ... @@ -116,7 +116,7 @@ class Block < ActiveRecord::Base
116 116 # Must be redefined in subclasses to match the description of each block
117 117 # type.
118 118 def self.description
119   - '(dummy)'
  119 + _('nothing')
120 120 end
121 121  
122 122 # returns a short description of the block, used when the user sees a list of
... ... @@ -125,20 +125,32 @@ class Block < ActiveRecord::Base
125 125 # Must be redefined in subclasses to match the short description of each block
126 126 # type.
127 127 def self.short_description
128   - _('(dummy)')
  128 + self.pretty_name
129 129 end
130 130  
131   - def self.default_preview
132   - "/images/block_preview.png"
  131 + def self.pretty_name
  132 + self.name.gsub('Block','')
133 133 end
134 134  
135   - def self.previews
136   - []
  135 + #FIXME make this test
  136 + def self.default_preview
  137 + "/images/block_preview.png"
137 138 end
138 139  
139   - def self.icon
140   - "/images/icon_block.png"
141   - end
  140 +# #FIXME remove this code
  141 +# def self.previews_path
  142 +# previews = Dir.glob(File.join(images_filesystem_path, 'previews/*')).map do |path|
  143 +# File.join(images_base_url_path, 'previews', File.basename(path))
  144 +# end
  145 +# end
  146 +
  147 +# #FIXME remove this code
  148 +# def self.icon_path
  149 +# icon_path = File.join(images_base_url_path, 'icon.png')
  150 +#puts File.join(images_filesystem_path, 'icon.png').inspect
  151 +##"/plugins/container_block/images/handle_e.png"
  152 +# File.exists?(File.join(images_filesystem_path, 'icon.png')) ? icon_path : default_icon_path
  153 +# end
142 154  
143 155 # Returns the content to be used for this block.
144 156 #
... ... @@ -255,4 +267,21 @@ class Block < ActiveRecord::Base
255 267 duplicated_block
256 268 end
257 269  
  270 + #FIXME make this test
  271 + def self.previews_path
  272 + base_name = self.name.split('::').last.underscore
  273 + Dir.glob(File.join('blocks', base_name,'previews/*'))
  274 + end
  275 +
  276 + #FIXME make this test
  277 + def self.icon_path
  278 + basename = self.name.split('::').last.underscore
  279 + File.join('blocks', basename, 'icon.png')
  280 + end
  281 +
  282 + #FIXME make this test
  283 + def self.default_icon_path
  284 + 'icon_block.png'
  285 + end
  286 +
258 287 end
... ...
app/models/communities_block.rb
... ... @@ -3,9 +3,18 @@ class CommunitiesBlock < ProfileListBlock
3 3 attr_accessible :accessor_id, :accessor_type, :role_id, :resource_id, :resource_type
4 4  
5 5 def self.description
  6 + _("<p>Display all of your communities.</p><p>You could choose the amount of communities will be displayed and you could priorize that profiles with images.</p> <p>The view all button is always present in the block.</p>")
  7 + end
  8 +
  9 +
  10 + def self.short_description
6 11 _('Communities')
7 12 end
8 13  
  14 + def self.pretty_name
  15 + _('Communities Block')
  16 + end
  17 +
9 18 def default_title
10 19 n_('{#} community', '{#} communities', profile_count)
11 20 end
... ...
app/models/theme.rb
... ... @@ -13,8 +13,14 @@ class Theme
13 13 Rails.root.join('public', 'user_themes')
14 14 end
15 15  
  16 + #FIXME make this test changed
16 17 def system_themes_dir
17   - Rails.root.join('public', 'designs', 'themes')
  18 + Rails.root.join('public', relative_themes_dir)
  19 + end
  20 +
  21 + #FIXME make this test
  22 + def relative_themes_dir
  23 + File.join('designs', 'themes')
18 24 end
19 25  
20 26 def create(id, attributes = {})
... ... @@ -93,6 +99,16 @@ class Theme
93 99 config['public'] = value
94 100 end
95 101  
  102 + #FIXME make this test
  103 + def public_path
  104 + File.join('/', self.class.relative_themes_dir, self.id)
  105 + end
  106 +
  107 + #FIXME make this test
  108 + def filesystem_path
  109 + File.join(self.class.system_themes_dir, self.id)
  110 + end
  111 +
96 112 def ==(other)
97 113 other.is_a?(self.class) && (other.id == self.id)
98 114 end
... ...
app/views/box_organizer/index.html.erb
... ... @@ -30,9 +30,9 @@
30 30 <br style="clear: left">
31 31 </div>
32 32 <div>
33   - <%= image_tag(block.icon, height: '48', width: '48', class: 'block-type-icon', alt: '' ) %>
  33 + <%= display_icon(block) %>
34 34 </div>
35   - <span><%= _(block.description) %></span>
  35 + <span><%= _(block.short_description) %></span>
36 36 </div>
37 37  
38 38 <%= draggable_element("block-#{block.name}", :revert => true) %>
... ...
app/views/box_organizer/show_block_type_info.html.erb
1 1 <div id="block-info-container">
2 2  
3 3 <div id="bs-block-header">
4   - <%= image_tag(@block.icon, height: '48', width: '48', id: 'block-info-icon', alt: '' ) %>
5   - <h1><%= @block.name %></h1>
  4 + <%= display_icon(@block) %>
  5 + <h1><%= @block.pretty_name %></h1>
6 6 <p><%= @block.short_description %></p>
7 7 </div>
8 8  
9 9 <div id="block-info-images">
10 10 <div style="white-space: nowrap;">
11   - <% if @block.previews.empty? %>
  11 + <% if @block.previews_path.empty? %>
12 12 <% for i in 0..2 %>
13 13 <%= image_tag(@block.default_preview, height: '240', width: '384', alt: '') %>
14 14 <% end %>
15 15 <% else %>
16   - <% @block.previews.each do |preview| %>
  16 + <% @block.previews_path.each do |preview| %>
17 17 <%= image_tag(preview, height: '240', width: '384', alt: '') %>
18 18 <% end %>
19 19 <% end %>
... ...
lib/noosfero/plugin.rb
... ... @@ -116,7 +116,7 @@ class Noosfero::Plugin
116 116 def available_plugin_names
117 117 available_plugins.map { |f| File.basename(f).camelize }
118 118 end
119   -
  119 +
120 120 def all
121 121 @all ||= available_plugins.map{ |dir| (File.basename(dir) + "_plugin").camelize }
122 122 end
... ... @@ -154,6 +154,13 @@ class Noosfero::Plugin
154 154 File.exists?(File.join(root_path, 'controllers', "#{name.underscore}_admin_controller.rb"))
155 155 end
156 156 end
  157 +
  158 +
  159 + #FIXME make this test
  160 + def has_block?(block)
  161 + self.class.extra_blocks.keys.include?(block)
  162 + end
  163 +
157 164  
158 165 def expanded_template(file_path, locals = {})
159 166 views_path = Rails.root.join('plugins', "#{self.class.public_name}", 'views')
... ...
plugins/breadcrumbs/public/images/blocks/communities_block/icon.png 0 → 100644

3.77 KB

plugins/breadcrumbs/public/images/blocks/communities_block/previews/edit_block.png 0 → 100644

27.9 KB

plugins/breadcrumbs/public/images/blocks/communities_block/previews/view_block.png 0 → 100644

16.1 KB

plugins/breadcrumbs/public/images/blocks/content_breadcrumbs_block/icon.png 0 → 100644

3.77 KB

plugins/breadcrumbs/public/images/blocks/content_breadcrumbs_block/icon2.png 0 → 100644

6.9 KB

plugins/breadcrumbs/public/images/blocks/content_breadcrumbs_block/previews/edit_block.png 0 → 100644

27.9 KB

plugins/breadcrumbs/public/images/blocks/content_breadcrumbs_block/previews/view_block.png 0 → 100644

16.1 KB

public/designs/themes/noosfero/images/blocks/communities_block/icon.png 0 → 100644

3.5 KB

public/designs/themes/noosfero/images/blocks/communities_block/previews/edit_block.png 0 → 100644

27.1 KB

public/designs/themes/noosfero/images/blocks/communities_block/previews/view_block.png 0 → 100644

16 KB

public/images/blocks/communities_block/icon.png 0 → 100644

3.98 KB

public/images/blocks/communities_block/icon.svg 0 → 100644
... ... @@ -0,0 +1,643 @@
  1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2 +<!-- Created with Inkscape (http://www.inkscape.org/) -->
  3 +
  4 +<svg
  5 + xmlns:dc="http://purl.org/dc/elements/1.1/"
  6 + xmlns:cc="http://creativecommons.org/ns#"
  7 + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  8 + xmlns:svg="http://www.w3.org/2000/svg"
  9 + xmlns="http://www.w3.org/2000/svg"
  10 + xmlns:xlink="http://www.w3.org/1999/xlink"
  11 + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
  12 + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
  13 + width="48px"
  14 + height="48px"
  15 + id="svg2108"
  16 + sodipodi:version="0.32"
  17 + inkscape:version="0.48.3.1 r9886"
  18 + sodipodi:docname="icon.svg"
  19 + inkscape:output_extension="org.inkscape.output.svg.inkscape"
  20 + version="1.1">
  21 + <defs
  22 + id="defs3">
  23 + <linearGradient
  24 + id="linearGradient2966">
  25 + <stop
  26 + style="stop-color:#ffd1d1;stop-opacity:1;"
  27 + offset="0"
  28 + id="stop2968" />
  29 + <stop
  30 + id="stop3006"
  31 + offset="0.5"
  32 + style="stop-color:#ff1d1d;stop-opacity:1;" />
  33 + <stop
  34 + style="stop-color:#6f0000;stop-opacity:1;"
  35 + offset="1"
  36 + id="stop2970" />
  37 + </linearGradient>
  38 + <linearGradient
  39 + id="linearGradient2974">
  40 + <stop
  41 + style="stop-color:#c1c1c1;stop-opacity:1;"
  42 + offset="0"
  43 + id="stop2976" />
  44 + <stop
  45 + style="stop-color:#acacac;stop-opacity:1;"
  46 + offset="1"
  47 + id="stop2978" />
  48 + </linearGradient>
  49 + <linearGradient
  50 + inkscape:collect="always"
  51 + id="linearGradient2984">
  52 + <stop
  53 + style="stop-color:#e7e2b8;stop-opacity:1;"
  54 + offset="0"
  55 + id="stop2986" />
  56 + <stop
  57 + style="stop-color:#e7e2b8;stop-opacity:0;"
  58 + offset="1"
  59 + id="stop2988" />
  60 + </linearGradient>
  61 + <linearGradient
  62 + id="linearGradient2994">
  63 + <stop
  64 + style="stop-color:#000000;stop-opacity:1;"
  65 + offset="0"
  66 + id="stop2996" />
  67 + <stop
  68 + style="stop-color:#c9c9c9;stop-opacity:1;"
  69 + offset="1"
  70 + id="stop2998" />
  71 + </linearGradient>
  72 + <inkscape:perspective
  73 + sodipodi:type="inkscape:persp3d"
  74 + inkscape:vp_x="0 : 24 : 1"
  75 + inkscape:vp_y="0 : 1000 : 0"
  76 + inkscape:vp_z="48 : 24 : 1"
  77 + inkscape:persp3d-origin="24 : 16 : 1"
  78 + id="perspective72" />
  79 + <linearGradient
  80 + inkscape:collect="always"
  81 + id="linearGradient4356">
  82 + <stop
  83 + style="stop-color:#000000;stop-opacity:1;"
  84 + offset="0"
  85 + id="stop4358" />
  86 + <stop
  87 + style="stop-color:#000000;stop-opacity:0;"
  88 + offset="1"
  89 + id="stop4360" />
  90 + </linearGradient>
  91 + <linearGradient
  92 + id="linearGradient4344">
  93 + <stop
  94 + style="stop-color:#727e0a;stop-opacity:1;"
  95 + offset="0"
  96 + id="stop4346" />
  97 + <stop
  98 + style="stop-color:#5b6508;stop-opacity:1.0000000;"
  99 + offset="1.0000000"
  100 + id="stop4348" />
  101 + </linearGradient>
  102 + <linearGradient
  103 + id="linearGradient4338">
  104 + <stop
  105 + id="stop4340"
  106 + offset="0.0000000"
  107 + style="stop-color:#e9b15e;stop-opacity:1.0000000;" />
  108 + <stop
  109 + id="stop4342"
  110 + offset="1.0000000"
  111 + style="stop-color:#966416;stop-opacity:1.0000000;" />
  112 + </linearGradient>
  113 + <linearGradient
  114 + id="linearGradient4163">
  115 + <stop
  116 + style="stop-color:#3b74bc;stop-opacity:1.0000000;"
  117 + offset="0.0000000"
  118 + id="stop4165" />
  119 + <stop
  120 + style="stop-color:#2d5990;stop-opacity:1.0000000;"
  121 + offset="1.0000000"
  122 + id="stop4167" />
  123 + </linearGradient>
  124 + <linearGradient
  125 + id="linearGradient3824">
  126 + <stop
  127 + style="stop-color:#ffffff;stop-opacity:1;"
  128 + offset="0"
  129 + id="stop3826" />
  130 + <stop
  131 + style="stop-color:#c9c9c9;stop-opacity:1.0000000;"
  132 + offset="1.0000000"
  133 + id="stop3828" />
  134 + </linearGradient>
  135 + <linearGradient
  136 + inkscape:collect="always"
  137 + id="linearGradient3816">
  138 + <stop
  139 + style="stop-color:#000000;stop-opacity:1;"
  140 + offset="0"
  141 + id="stop3818" />
  142 + <stop
  143 + style="stop-color:#000000;stop-opacity:0;"
  144 + offset="1"
  145 + id="stop3820" />
  146 + </linearGradient>
  147 + <linearGradient
  148 + id="linearGradient3800">
  149 + <stop
  150 + style="stop-color:#f4d9b1;stop-opacity:1.0000000;"
  151 + offset="0.0000000"
  152 + id="stop3802" />
  153 + <stop
  154 + style="stop-color:#df9725;stop-opacity:1.0000000;"
  155 + offset="1.0000000"
  156 + id="stop3804" />
  157 + </linearGradient>
  158 + <radialGradient
  159 + inkscape:collect="always"
  160 + xlink:href="#linearGradient3800"
  161 + id="radialGradient3806"
  162 + cx="29.344931"
  163 + cy="17.064077"
  164 + fx="29.344931"
  165 + fy="17.064077"
  166 + r="9.1620579"
  167 + gradientUnits="userSpaceOnUse" />
  168 + <radialGradient
  169 + inkscape:collect="always"
  170 + xlink:href="#linearGradient3816"
  171 + id="radialGradient3822"
  172 + cx="31.112698"
  173 + cy="19.008621"
  174 + fx="31.112698"
  175 + fy="19.008621"
  176 + r="8.6620579"
  177 + gradientUnits="userSpaceOnUse" />
  178 + <linearGradient
  179 + inkscape:collect="always"
  180 + xlink:href="#linearGradient3824"
  181 + id="linearGradient3830"
  182 + x1="30.935921"
  183 + y1="29.553486"
  184 + x2="30.935921"
  185 + y2="35.803486"
  186 + gradientUnits="userSpaceOnUse" />
  187 + <radialGradient
  188 + inkscape:collect="always"
  189 + xlink:href="#linearGradient4163"
  190 + id="radialGradient4169"
  191 + cx="28.089741"
  192 + cy="27.203083"
  193 + fx="28.089741"
  194 + fy="27.203083"
  195 + r="13.565360"
  196 + gradientTransform="matrix(1.297564,2.881172e-16,-1.964720e-16,0.884831,-8.358505,4.940469)"
  197 + gradientUnits="userSpaceOnUse" />
  198 + <radialGradient
  199 + inkscape:collect="always"
  200 + xlink:href="#linearGradient3800"
  201 + id="radialGradient4171"
  202 + gradientUnits="userSpaceOnUse"
  203 + cx="29.344931"
  204 + cy="17.064077"
  205 + fx="29.344931"
  206 + fy="17.064077"
  207 + r="9.1620579"
  208 + gradientTransform="matrix(0.787998,3.877637e-16,-3.877637e-16,0.787998,6.221198,3.617627)" />
  209 + <linearGradient
  210 + inkscape:collect="always"
  211 + xlink:href="#linearGradient3824"
  212 + id="linearGradient4175"
  213 + gradientUnits="userSpaceOnUse"
  214 + x1="30.935921"
  215 + y1="29.553486"
  216 + x2="30.935921"
  217 + y2="35.803486"
  218 + gradientTransform="translate(0.707108,0.000000)" />
  219 + <radialGradient
  220 + inkscape:collect="always"
  221 + xlink:href="#linearGradient3816"
  222 + id="radialGradient4179"
  223 + gradientUnits="userSpaceOnUse"
  224 + cx="31.112698"
  225 + cy="19.008621"
  226 + fx="31.112698"
  227 + fy="19.008621"
  228 + r="8.6620579" />
  229 + <linearGradient
  230 + inkscape:collect="always"
  231 + xlink:href="#linearGradient3824"
  232 + id="linearGradient4326"
  233 + gradientUnits="userSpaceOnUse"
  234 + gradientTransform="translate(-12.41789,-7.000000)"
  235 + x1="30.935921"
  236 + y1="29.553486"
  237 + x2="30.935921"
  238 + y2="35.803486" />
  239 + <radialGradient
  240 + inkscape:collect="always"
  241 + xlink:href="#linearGradient4338"
  242 + id="radialGradient4328"
  243 + gradientUnits="userSpaceOnUse"
  244 + gradientTransform="matrix(0.787998,3.877637e-16,-3.877637e-16,0.787998,6.221198,3.617627)"
  245 + cx="29.344931"
  246 + cy="17.064077"
  247 + fx="29.344931"
  248 + fy="17.064077"
  249 + r="9.1620579" />
  250 + <radialGradient
  251 + inkscape:collect="always"
  252 + xlink:href="#linearGradient3816"
  253 + id="radialGradient4330"
  254 + gradientUnits="userSpaceOnUse"
  255 + cx="31.112698"
  256 + cy="19.008621"
  257 + fx="31.112698"
  258 + fy="19.008621"
  259 + r="8.6620579" />
  260 + <linearGradient
  261 + inkscape:collect="always"
  262 + xlink:href="#linearGradient3824"
  263 + id="linearGradient4332"
  264 + gradientUnits="userSpaceOnUse"
  265 + x1="30.935921"
  266 + y1="29.553486"
  267 + x2="30.935921"
  268 + y2="35.803486"
  269 + gradientTransform="translate(-13.12500,-7.000000)" />
  270 + <radialGradient
  271 + inkscape:collect="always"
  272 + xlink:href="#linearGradient3816"
  273 + id="radialGradient4336"
  274 + gradientUnits="userSpaceOnUse"
  275 + cx="31.112698"
  276 + cy="19.008621"
  277 + fx="31.112698"
  278 + fy="19.008621"
  279 + r="8.6620579" />
  280 + <radialGradient
  281 + inkscape:collect="always"
  282 + xlink:href="#linearGradient4344"
  283 + id="radialGradient4350"
  284 + cx="16.214741"
  285 + cy="19.836468"
  286 + fx="16.214741"
  287 + fy="19.836468"
  288 + r="13.565360"
  289 + gradientTransform="matrix(1.000000,0.000000,0.000000,0.681917,0.000000,8.233773)"
  290 + gradientUnits="userSpaceOnUse" />
  291 + <linearGradient
  292 + inkscape:collect="always"
  293 + xlink:href="#linearGradient4356"
  294 + id="linearGradient4362"
  295 + x1="20.661695"
  296 + y1="35.817974"
  297 + x2="22.626925"
  298 + y2="36.217758"
  299 + gradientUnits="userSpaceOnUse"
  300 + gradientTransform="matrix(0.983375,0.181588,-0.181588,0.983375,6.231716,-2.651466)" />
  301 + <linearGradient
  302 + inkscape:collect="always"
  303 + xlink:href="#linearGradient4356"
  304 + id="linearGradient4366"
  305 + gradientUnits="userSpaceOnUse"
  306 + x1="22.686766"
  307 + y1="36.390400"
  308 + x2="21.408455"
  309 + y2="35.739632"
  310 + gradientTransform="matrix(-0.977685,0.210075,0.210075,0.977685,55.10960,-3.945209)" />
  311 + <linearGradient
  312 + inkscape:collect="always"
  313 + xlink:href="#linearGradient4356"
  314 + id="linearGradient4372"
  315 + gradientUnits="userSpaceOnUse"
  316 + gradientTransform="matrix(0.983375,0.181588,-0.181588,0.983375,-7.072120,-9.824920)"
  317 + x1="20.661695"
  318 + y1="35.817974"
  319 + x2="22.626925"
  320 + y2="36.217758" />
  321 + <linearGradient
  322 + inkscape:collect="always"
  323 + xlink:href="#linearGradient4356"
  324 + id="linearGradient4374"
  325 + gradientUnits="userSpaceOnUse"
  326 + gradientTransform="matrix(-0.977685,0.210075,0.210075,0.977685,41.80576,-11.11866)"
  327 + x1="22.686766"
  328 + y1="36.390400"
  329 + x2="21.408455"
  330 + y2="35.739632" />
  331 + <linearGradient
  332 + inkscape:collect="always"
  333 + xlink:href="#linearGradient4356"
  334 + id="linearGradient1366"
  335 + gradientUnits="userSpaceOnUse"
  336 + gradientTransform="matrix(-0.977685,0.210075,0.210075,0.977685,41.80576,-11.11866)"
  337 + x1="22.686766"
  338 + y1="36.390400"
  339 + x2="21.408455"
  340 + y2="35.739632" />
  341 + <linearGradient
  342 + inkscape:collect="always"
  343 + xlink:href="#linearGradient4356"
  344 + id="linearGradient1369"
  345 + gradientUnits="userSpaceOnUse"
  346 + gradientTransform="matrix(0.983375,0.181588,-0.181588,0.983375,-7.072120,-9.824920)"
  347 + x1="20.661695"
  348 + y1="35.817974"
  349 + x2="22.626925"
  350 + y2="36.217758" />
  351 + <linearGradient
  352 + inkscape:collect="always"
  353 + xlink:href="#linearGradient3824"
  354 + id="linearGradient1372"
  355 + gradientUnits="userSpaceOnUse"
  356 + gradientTransform="translate(-12.41789,-7.000000)"
  357 + x1="30.935921"
  358 + y1="29.553486"
  359 + x2="30.935921"
  360 + y2="35.803486" />
  361 + <radialGradient
  362 + inkscape:collect="always"
  363 + xlink:href="#linearGradient4344"
  364 + id="radialGradient1381"
  365 + gradientUnits="userSpaceOnUse"
  366 + gradientTransform="matrix(1.000000,0.000000,0.000000,0.681917,0.000000,8.233773)"
  367 + cx="16.214741"
  368 + cy="19.836468"
  369 + fx="16.214741"
  370 + fy="19.836468"
  371 + r="13.565360" />
  372 + <linearGradient
  373 + inkscape:collect="always"
  374 + xlink:href="#linearGradient2966"
  375 + id="linearGradient2682"
  376 + gradientUnits="userSpaceOnUse"
  377 + gradientTransform="translate(-22.726626,3.0433486)"
  378 + x1="48.90625"
  379 + y1="17.376184"
  380 + x2="50.988335"
  381 + y2="22.250591" />
  382 + <linearGradient
  383 + inkscape:collect="always"
  384 + xlink:href="#linearGradient2974"
  385 + id="linearGradient2684"
  386 + gradientUnits="userSpaceOnUse"
  387 + gradientTransform="translate(-22.726626,3.0433486)"
  388 + x1="46"
  389 + y1="19.8125"
  390 + x2="47.6875"
  391 + y2="22.625" />
  392 + <radialGradient
  393 + inkscape:collect="always"
  394 + xlink:href="#linearGradient2984"
  395 + id="radialGradient2686"
  396 + gradientUnits="userSpaceOnUse"
  397 + gradientTransform="matrix(2.923565,0,0,2.029717,-78.612654,-24.840821)"
  398 + cx="29.053354"
  399 + cy="27.640751"
  400 + fx="29.053354"
  401 + fy="27.640751"
  402 + r="3.2408544" />
  403 + <linearGradient
  404 + inkscape:collect="always"
  405 + xlink:href="#linearGradient2994"
  406 + id="linearGradient2688"
  407 + gradientUnits="userSpaceOnUse"
  408 + gradientTransform="translate(-22.882876,3.1683486)"
  409 + x1="25.71875"
  410 + y1="31.046875"
  411 + x2="25.514589"
  412 + y2="30.703125" />
  413 + </defs>
  414 + <sodipodi:namedview
  415 + inkscape:showpageshadow="false"
  416 + id="base"
  417 + pagecolor="#ffffff"
  418 + bordercolor="#666666"
  419 + borderopacity="1.0"
  420 + inkscape:pageopacity="0.0"
  421 + inkscape:pageshadow="2"
  422 + inkscape:zoom="5.6568542"
  423 + inkscape:cx="35.364423"
  424 + inkscape:cy="14.908213"
  425 + inkscape:current-layer="layer2"
  426 + showgrid="true"
  427 + inkscape:grid-bbox="true"
  428 + inkscape:document-units="px"
  429 + fill="#9db029"
  430 + stroke="#727e0a"
  431 + inkscape:window-width="1280"
  432 + inkscape:window-height="749"
  433 + inkscape:window-x="65"
  434 + inkscape:window-y="24"
  435 + gridtolerance="9"
  436 + inkscape:window-maximized="0">
  437 + <inkscape:grid
  438 + type="xygrid"
  439 + id="grid3460"
  440 + visible="true"
  441 + enabled="true" />
  442 + </sodipodi:namedview>
  443 + <metadata
  444 + id="metadata4">
  445 + <rdf:RDF>
  446 + <cc:Work
  447 + rdf:about="">
  448 + <dc:format>image/svg+xml</dc:format>
  449 + <dc:type
  450 + rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
  451 + <dc:title></dc:title>
  452 + <dc:creator>
  453 + <cc:Agent>
  454 + <dc:title>Jakub Steiner</dc:title>
  455 + </cc:Agent>
  456 + </dc:creator>
  457 + <dc:source>http://jimmac.musichall.cz</dc:source>
  458 + <dc:subject>
  459 + <rdf:Bag>
  460 + <rdf:li>users</rdf:li>
  461 + <rdf:li>people</rdf:li>
  462 + </rdf:Bag>
  463 + </dc:subject>
  464 + <cc:license
  465 + rdf:resource="http://creativecommons.org/licenses/publicdomain/" />
  466 + </cc:Work>
  467 + <cc:License
  468 + rdf:about="http://creativecommons.org/licenses/publicdomain/">
  469 + <cc:permits
  470 + rdf:resource="http://creativecommons.org/ns#Reproduction" />
  471 + <cc:permits
  472 + rdf:resource="http://creativecommons.org/ns#Distribution" />
  473 + <cc:permits
  474 + rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
  475 + </cc:License>
  476 + </rdf:RDF>
  477 + </metadata>
  478 + <g
  479 + id="layer1"
  480 + inkscape:label="cipek"
  481 + inkscape:groupmode="layer"
  482 + style="display:inline" />
  483 + <g
  484 + inkscape:groupmode="layer"
  485 + id="layer2"
  486 + inkscape:label="dalsi cipek"
  487 + style="display:inline">
  488 + <g
  489 + id="g3104"
  490 + inkscape:export-filename="/home/81665687568/Owncloud/projetos/noosfero/public/images/blocks/communities_block/icon.png"
  491 + inkscape:export-xdpi="98.441032"
  492 + inkscape:export-ydpi="98.441032">
  493 + <path
  494 + d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
  495 + sodipodi:ry="8.6620579"
  496 + sodipodi:rx="8.6620579"
  497 + sodipodi:cy="19.008621"
  498 + sodipodi:cx="31.112698"
  499 + id="path4177"
  500 + style="display:inline;opacity:1;color:#000000;fill:url(#radialGradient4336);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;overflow:visible"
  501 + sodipodi:type="arc"
  502 + transform="matrix(1.77551,0,0,0.959183,-37.37822,11.77153)" />
  503 + <path
  504 + sodipodi:nodetypes="cczcczc"
  505 + id="path2329"
  506 + d="M 12.861174,34.636039 L 23.467776,34.636039 C 26.472980,34.636039 29.448260,33.534107 30.538843,30.393398 C 31.574482,27.410922 30.715620,21.731340 23.998106,17.135146 L 11.446960,17.135146 C 4.7294460,21.377786 3.8899690,27.179977 5.4365530,30.570174 C 7.0121480,34.023964 9.6791930,34.636039 12.861174,34.636039 z "
  507 + style="display:inline;opacity:1;color:#000000;fill:url(#radialGradient1381);fill-opacity:1;fill-rule:evenodd;stroke:#404604;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;overflow:visible" />
  508 + <path
  509 + style="display:inline;opacity:1;color:#000000;fill:#9db029;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;overflow:visible"
  510 + d="M 17.932367,19.786797 C 17.932367,19.786797 15.781044,21.447132 15.966376,23.447330 C 13.925150,21.646536 13.866503,18.195806 13.866503,18.195806 L 17.932367,19.786797 z "
  511 + id="path3812"
  512 + sodipodi:nodetypes="cccc" />
  513 + <path
  514 + style="display:inline;opacity:0.21518983000000000;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999976000000002px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;overflow:visible"
  515 + d="M 12.966639,33.571836 L 23.283309,33.571836 C 25.923032,33.571836 28.536470,32.603917 29.494421,29.845169 C 30.404110,27.225409 29.399699,22.236555 23.499142,18.199332 L 11.974417,18.199332 C 6.0738600,21.925999 5.0864770,27.022551 6.4449710,30.000446 C 7.8289490,33.034200 10.171638,33.571836 12.966639,33.571836 z "
  516 + id="path3838"
  517 + sodipodi:nodetypes="cczcczc" />
  518 + <path
  519 + sodipodi:nodetypes="cccc"
  520 + id="path3810"
  521 + d="M 18.910795,19.786797 C 18.910795,19.786797 21.062118,21.447132 20.876786,23.447330 C 22.918012,21.646536 22.976659,18.195806 22.976659,18.195806 L 18.910795,19.786797 z "
  522 + style="display:inline;opacity:1;color:#000000;fill:#9db029;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;overflow:visible" />
  523 + <path
  524 + transform="translate(-13.25,-3.5)"
  525 + sodipodi:type="arc"
  526 + style="display:inline;opacity:1;color:#000000;fill:url(#radialGradient4330);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;overflow:visible"
  527 + id="path3814"
  528 + sodipodi:cx="31.112698"
  529 + sodipodi:cy="19.008621"
  530 + sodipodi:rx="8.6620579"
  531 + sodipodi:ry="8.6620579"
  532 + d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z" />
  533 + <path
  534 + transform="translate(-13.125,-7)"
  535 + d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
  536 + sodipodi:ry="8.6620579"
  537 + sodipodi:rx="8.6620579"
  538 + sodipodi:cy="19.008621"
  539 + sodipodi:cx="31.112698"
  540 + id="path2327"
  541 + style="display:inline;opacity:1;color:#000000;fill:url(#radialGradient4328);fill-opacity:1;fill-rule:evenodd;stroke:#6f4709;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;overflow:visible"
  542 + sodipodi:type="arc" />
  543 + <path
  544 + transform="matrix(0.877095,0,0,0.877095,-9.301073,-4.663733)"
  545 + sodipodi:type="arc"
  546 + style="display:inline;opacity:0.12658227999999999;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.14012829999999998px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;overflow:visible"
  547 + id="path3834"
  548 + sodipodi:cx="31.112698"
  549 + sodipodi:cy="19.008621"
  550 + sodipodi:rx="8.6620579"
  551 + sodipodi:ry="8.6620579"
  552 + d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z" />
  553 + <path
  554 + id="path4173"
  555 + d="M 22.583894,27.034641 L 26.826534,27.034641 L 24.351661,24.736544 L 23.821331,25.443651 L 23.291000,24.913321 L 22.583894,27.034641 z "
  556 + style="display:inline;opacity:1;color:#000000;fill:url(#linearGradient1372);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;overflow:visible" />
  557 + <path
  558 + sodipodi:nodetypes="cccc"
  559 + id="path4368"
  560 + d="M 8.5479535,33.601747 C 7.3003465,33.056778 6.7419595,31.743470 6.7419595,31.743470 C 7.5832405,27.674334 10.461885,24.697254 10.461885,24.697254 C 10.461885,24.697254 8.1825635,31.108768 8.5479535,33.601747 z "
  561 + style="display:inline;opacity:0.22784807000000001;color:#000000;fill:url(#linearGradient1369);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;overflow:visible" />
  562 + <path
  563 + style="display:inline;opacity:0.22784807000000001;color:#000000;fill:url(#linearGradient1366);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;overflow:visible"
  564 + d="M 27.453661,32.743396 C 28.684912,32.162418 29.258041,30.741075 29.258041,30.741075 C 28.298921,26.698092 25.281892,23.898254 25.281892,23.898254 C 25.281892,23.898254 27.746485,30.240856 27.453661,32.743396 z "
  565 + id="path4370"
  566 + sodipodi:nodetypes="cccc" />
  567 + <path
  568 + d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.45064,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
  569 + sodipodi:ry="8.6620579"
  570 + sodipodi:rx="8.6620579"
  571 + sodipodi:cy="19.008621"
  572 + sodipodi:cx="31.112698"
  573 + id="path4306"
  574 + style="opacity:1;color:black;fill:url(#radialGradient4179);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
  575 + sodipodi:type="arc"
  576 + transform="matrix(1.77551,0,0,0.583984,-24.25322,28.27856)" />
  577 + <path
  578 + sodipodi:nodetypes="cczcczc"
  579 + id="path4308"
  580 + d="M 25.986174,41.636039 L 36.592776,41.636039 C 39.597980,41.636039 42.573260,40.534107 43.663843,37.393398 C 44.699482,34.410922 43.840620,28.731340 37.123106,24.135146 L 24.571960,24.135146 C 17.854446,28.377786 17.014969,34.179977 18.561553,37.570174 C 20.137148,41.023964 22.804193,41.636039 25.986174,41.636039 z "
  581 + style="opacity:1.0000000;color:#000000;fill:url(#radialGradient4169);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#204a87;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
  582 + <path
  583 + sodipodi:nodetypes="cccc"
  584 + id="path4310"
  585 + d="M 26.693281,25.726136 C 29.875261,28.554563 31.289475,38.807612 31.289475,38.807612 C 31.289475,38.807612 32.703688,28.554564 35.178562,25.549360 L 26.693281,25.726136 z "
  586 + style="opacity:1.0000000;color:#000000;fill:url(#linearGradient3830);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
  587 + <path
  588 + style="opacity:1.0000000;color:#000000;fill:#729fcf;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
  589 + d="M 28.972721,26.786797 C 28.972721,26.786797 26.821398,28.447132 27.006730,30.447330 C 24.965504,28.646536 24.906857,25.195806 24.906857,25.195806 L 28.972721,26.786797 z "
  590 + id="path4312"
  591 + sodipodi:nodetypes="cccc" />
  592 + <path
  593 + style="opacity:0.21518983;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:0.99999976px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
  594 + d="M 25.914862,40.593933 L 36.408309,40.571836 C 39.048032,40.571836 41.661470,39.603917 42.619421,36.845169 C 43.529110,34.225409 42.524699,29.236555 36.624142,25.199332 L 25.099417,24.956264 C 19.198860,28.682931 18.056797,33.779483 19.437388,37.000446 C 20.817980,40.221409 22.832599,40.571836 25.914862,40.593933 z "
  595 + id="path4314"
  596 + sodipodi:nodetypes="cczcczc" />
  597 + <path
  598 + sodipodi:nodetypes="cccc"
  599 + id="path4316"
  600 + d="M 33.410795,26.786797 C 33.410795,26.786797 35.562118,28.447132 35.376786,30.447330 C 37.418012,28.646536 37.476659,25.195806 37.476659,25.195806 L 33.410795,26.786797 z "
  601 + style="opacity:1.0000000;color:#000000;fill:#729fcf;fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
  602 + <path
  603 + transform="translate(-0.125000,3.500000)"
  604 + sodipodi:type="arc"
  605 + style="opacity:1.0000000;color:#000000;fill:url(#radialGradient3822);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
  606 + id="path4318"
  607 + sodipodi:cx="31.112698"
  608 + sodipodi:cy="19.008621"
  609 + sodipodi:rx="8.6620579"
  610 + sodipodi:ry="8.6620579"
  611 + d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z" />
  612 + <path
  613 + d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z"
  614 + sodipodi:ry="8.6620579"
  615 + sodipodi:rx="8.6620579"
  616 + sodipodi:cy="19.008621"
  617 + sodipodi:cx="31.112698"
  618 + id="path4320"
  619 + style="opacity:1.0000000;color:#000000;fill:url(#radialGradient4171);fill-opacity:1.0000000;fill-rule:evenodd;stroke:#c17d11;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
  620 + sodipodi:type="arc" />
  621 + <path
  622 + transform="matrix(0.877095,0.000000,0.000000,0.877095,3.823927,2.336267)"
  623 + sodipodi:type="arc"
  624 + style="opacity:0.19620253;color:#000000;fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#ffffff;stroke-width:1.1401283px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
  625 + id="path4322"
  626 + sodipodi:cx="31.112698"
  627 + sodipodi:cy="19.008621"
  628 + sodipodi:rx="8.6620579"
  629 + sodipodi:ry="8.6620579"
  630 + d="M 39.774755 19.008621 A 8.6620579 8.6620579 0 1 1 22.450640,19.008621 A 8.6620579 8.6620579 0 1 1 39.774755 19.008621 z" />
  631 + <path
  632 + sodipodi:nodetypes="cccc"
  633 + id="path4354"
  634 + d="M 21.851790,40.775197 C 20.604183,40.230228 20.045796,38.916920 20.045796,38.916920 C 20.887077,34.847784 23.765721,31.870704 23.765721,31.870704 C 23.765721,31.870704 21.486400,38.282218 21.851790,40.775197 z "
  635 + style="opacity:0.22784807;color:#000000;fill:url(#linearGradient4362);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible" />
  636 + <path
  637 + style="opacity:0.22784807;color:#000000;fill:url(#linearGradient4366);fill-opacity:1.0000000;fill-rule:evenodd;stroke:none;stroke-width:1.0000000px;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4.0000000;stroke-dasharray:none;stroke-dashoffset:0.0000000;stroke-opacity:1.0000000;visibility:visible;display:inline;overflow:visible"
  638 + d="M 40.757497,39.916846 C 41.988748,39.335868 42.561877,37.914525 42.561877,37.914525 C 41.602757,33.871542 38.585728,31.071704 38.585728,31.071704 C 38.585728,31.071704 41.050321,37.414306 40.757497,39.916846 z "
  639 + id="path4364"
  640 + sodipodi:nodetypes="cccc" />
  641 + </g>
  642 + </g>
  643 +</svg>
... ...
public/images/blocks/communities_block/previews/edit_block.png 0 → 100644

27.6 KB

public/images/blocks/communities_block/previews/view_block.png 0 → 100644

15.7 KB

test/unit/block_test.rb
... ... @@ -7,6 +7,10 @@ class BlockTest &lt; ActiveSupport::TestCase
7 7 assert_kind_of String, Block.description
8 8 end
9 9  
  10 + should 'describe shotly itself' do
  11 + assert_kind_of String, Block.short_description
  12 + end
  13 +
10 14 should 'access owner through box' do
11 15 user = create_user('testinguser').person
12 16  
... ... @@ -284,4 +288,80 @@ class BlockTest &lt; ActiveSupport::TestCase
284 288 assert_equal block.cache_key('en'), block.cache_key('en', person)
285 289 end
286 290  
  291 + should 'pretty_name method defined' do
  292 + assert Block.respond_to?(:pretty_name)
  293 + end
  294 +
  295 + should 'previews_path return the array of preview images' do
  296 + class NewBlock < Block; end
  297 + Dir.stubs(:glob).returns(['/path/1', 'path/2'])
  298 + expected = ['blocks/block_test/new_block/previews/1', 'blocks/block_test/new_block/previews/2']
  299 + assert_equivalent expected, NewBlock.previews_path
  300 + end
  301 +
  302 + should 'return the icon block path' do
  303 + class NewBlock < Block; end
  304 + File.expects(:exists?).returns(true)
  305 + expected_path = 'path/icon.png'
  306 + File.stubs(:join).returns(expected_path)
  307 + assert_equal expected_path, NewBlock.icon_path
  308 + end
  309 +
  310 + should 'return the icon block path for plugin blocks' do
  311 + module SomeContext class SomeContext::CustomBlock1 < Block; end;;end
  312 +# class SomeContext::CustomBlock2 < Block; end;
  313 +#BreadcrumbsPlugin::ContentBreadcrumbsBlock
  314 + class Plugin1 < Noosfero::Plugin
  315 + def self.extra_blocks
  316 + {
  317 + CustomBlock1 => {},
  318 + CustomBlock2 => {}
  319 + }
  320 + end
  321 + end
  322 +
  323 +#Block.stubs(:images_filesystem_path).returns('/path')
  324 +#CustomBlock1.stubs(:images_filesystem_path).returns('/path')
  325 +File.stubs(:exists?).with('/home/81665687568/Owncloud/projetos/noosfero/public/images/blocks/block_test/custom_block1/icon.pn').returns(true)
  326 +# File.exists?(File.join(images_filesystem_path, 'icon.png')) ? icon_path : default_icon_path
  327 +
  328 +
  329 +# def self.images_filesystem_path
  330 +# Rails.root.join('public', 'images', images_base_url_path)
  331 +# end
  332 +#
  333 +# def self.images_base_url_path
  334 +# File.join('blocks', self.name.underscore)
  335 +# end
  336 +
  337 +
  338 + Environment.destroy_all
  339 + e = fast_create(Environment, :is_default => true)
  340 +
  341 +# Noosfero::Plugin.stubs(:all).returns(['ProfileTest::Plugin1', 'ProfileTest::Plugin2'])
  342 + e.enable_plugin(Plugin1)
  343 +
  344 +# class NewBlock < Block; end
  345 +# Dir.stubs(:glob).returns(['/path/1', 'path/2'])
  346 +# expected = ['blocks/block_test/new_block/previews/1', 'blocks/block_test/new_block/previews/2']
  347 +# class NewBlock < Block; end
  348 +# File.expects(:exists?).returns(true)
  349 +# expected_path = 'path/icon.png'
  350 +# File.stubs(:join).returns(expected_path)
  351 +#/plugins/container_block/images/handle_e.png
  352 + assert_equal '', SomeContext::CustomBlock1.icon_path
  353 + end
  354 +
  355 +
  356 + should 'return the default icon for blocks without icon' do
  357 + class NewBlock < Block; end
  358 + File.expects(:exists?).returns(false)
  359 + assert_equal 'icon_block.png', NewBlock.icon_path
  360 + end
  361 +
  362 + should 'previews_path return an empty array if there is no preview image' do
  363 + class NewBlock < Block; end
  364 + assert_equivalent [], NewBlock.previews_path
  365 + end
  366 +
287 367 end
... ...
test/unit/communities_block_test.rb
... ... @@ -15,6 +15,15 @@ class CommunitiesBlockTest &lt; ActiveSupport::TestCase
15 15 assert_not_equal ProfileListBlock.description, CommunitiesBlock.description
16 16 end
17 17  
  18 + should 'describe shortly itself' do
  19 + assert_not_equal Block.short_description, CommunitiesBlock.short_description
  20 + end
  21 +
  22 + should 'have a pretty name defined' do
  23 + pretty_name = CommunitiesBlock.name.gsub('Block','')
  24 + assert_not_equal pretty_name, CommunitiesBlock.pretty_name
  25 + end
  26 +
18 27 should 'list owner communities' do
19 28 block = CommunitiesBlock.new
20 29  
... ...