Commit 50e72f1d66dda87ca0f064ae23dad937d763031e
1 parent
deb07e92
Exists in
master
and in
27 other branches
spread: all public content can be reposted and portal community is free for all
Showing
9 changed files
with
179 additions
and
77 deletions
Show diff stats
app/controllers/my_profile/cms_controller.rb
... | ... | @@ -235,25 +235,48 @@ class CmsController < MyProfileController |
235 | 235 | render :template => 'shared/update_categories', :locals => { :category => @current_category, :object_name => 'article' } |
236 | 236 | end |
237 | 237 | |
238 | + def search_communities_to_publish | |
239 | + render :text => find_by_contents(:profiles, user.memberships, params['q'], {:page => 1}, {:fields => ['name']})[:results].map {|community| {:id => community.id, :name => community.name} }.to_json | |
240 | + end | |
241 | + | |
238 | 242 | def publish |
239 | 243 | @article = profile.articles.find(params[:id]) |
244 | + @portal_enabled = environment.portal_community && environment.enabled?('use_portal_community') | |
240 | 245 | record_coming |
241 | - @groups = profile.memberships - [profile] | |
242 | - @marked_groups = [] | |
243 | - groups_ids = profile.memberships.map{|m|m.id.to_s} | |
244 | - @marked_groups = params[:marked_groups].map do |key, item| | |
245 | - if groups_ids.include?(item[:group_id]) | |
246 | - item.merge :group => Profile.find(item.delete(:group_id)) | |
246 | + @failed = {} | |
247 | + if request.post? | |
248 | + article_name = params[:name] | |
249 | + task = ApproveArticle.create!(:article => @article, :name => article_name, :target => user, :requestor => user) | |
250 | + begin | |
251 | + task.finish | |
252 | + rescue Exception => ex | |
253 | + @failed[ex.message] ? @failed[ex.message] << item.name : @failed[ex.message] = [item.name] | |
254 | + end | |
255 | + if @failed.blank? | |
256 | + session[:notice] = _("Your publish request was sent successfully") | |
257 | + if @back_to | |
258 | + redirect_to @back_to | |
259 | + else | |
260 | + redirect_to @article.view_url | |
261 | + end | |
247 | 262 | end |
248 | - end.compact unless params[:marked_groups].nil? | |
263 | + end | |
264 | + end | |
265 | + | |
266 | + def publish_on_communities | |
249 | 267 | if request.post? |
268 | + @back_to = params[:back_to] | |
269 | + @article = profile.articles.find(params[:id]) | |
250 | 270 | @failed = {} |
271 | + article_name = params[:name] | |
272 | + params_marked = params['q'].split(',').select { |marked| user.memberships.map(&:id).include? marked.to_i } | |
273 | + @marked_groups = Profile.find(params_marked) | |
251 | 274 | @marked_groups.each do |item| |
252 | - task = ApproveArticle.create!(:article => @article, :name => item[:name], :target => item[:group], :requestor => profile) | |
275 | + task = ApproveArticle.create!(:article => @article, :name => article_name, :target => item, :requestor => user) | |
253 | 276 | begin |
254 | - task.finish unless item[:group].moderated_articles? | |
277 | + task.finish unless item.moderated_articles? | |
255 | 278 | rescue Exception => ex |
256 | - @failed[ex.message] ? @failed[ex.message] << item[:group].name : @failed[ex.message] = [item[:group].name] | |
279 | + @failed[ex.message] ? @failed[ex.message] << item.name : @failed[ex.message] = [item.name] | |
257 | 280 | end |
258 | 281 | end |
259 | 282 | if @failed.blank? |
... | ... | @@ -268,9 +291,9 @@ class CmsController < MyProfileController |
268 | 291 | end |
269 | 292 | |
270 | 293 | def publish_on_portal_community |
271 | - @article = profile.articles.find(params[:id]) | |
272 | 294 | if request.post? |
273 | - if environment.portal_community | |
295 | + @article = profile.articles.find(params[:id]) | |
296 | + if environment.portal_community && environment.enabled?('use_portal_community') | |
274 | 297 | task = ApproveArticle.create!(:article => @article, :name => params[:name], :target => environment.portal_community, :requestor => user) |
275 | 298 | begin |
276 | 299 | task.finish unless environment.portal_community.moderated_articles? | ... | ... |
app/helpers/cms_helper.rb
... | ... | @@ -40,11 +40,9 @@ module CmsHelper |
40 | 40 | end |
41 | 41 | end |
42 | 42 | |
43 | - def display_spread_button(profile, article) | |
44 | - if profile.person? | |
45 | - expirable_button article, :spread, _('Spread this'), :action => 'publish', :id => article.id | |
46 | - elsif profile.community? && environment.portal_community | |
47 | - expirable_button article, :spread, _('Spread this'), :action => 'publish_on_portal_community', :id => article.id | |
43 | + def display_spread_button(article) | |
44 | + if article.public? | |
45 | + expirable_button article, :spread, _('Spread this'), {:action => 'publish', :id => article.id}, {:class => 'colorbox'} | |
48 | 46 | end |
49 | 47 | end |
50 | 48 | ... | ... |
app/helpers/token_helper.rb
... | ... | @@ -12,6 +12,7 @@ module TokenHelper |
12 | 12 | options[:search_delay] ||= 1000 |
13 | 13 | options[:prevent_duplicates] ||= true |
14 | 14 | options[:backspace_delete_item] ||= false |
15 | + options[:zindex] ||= 999 | |
15 | 16 | options[:focus] ||= false |
16 | 17 | options[:avoid_enter] ||= true |
17 | 18 | options[:on_result] ||= 'null' |
... | ... | @@ -30,6 +31,7 @@ module TokenHelper |
30 | 31 | searchDelay: #{options[:search_delay].to_json}, |
31 | 32 | preventDuplicates: #{options[:prevent_duplicates].to_json}, |
32 | 33 | backspaceDeleteItem: #{options[:backspace_delete_item].to_json}, |
34 | + zindex: #{options[:zindex].to_json}, | |
33 | 35 | queryParam: #{name.to_json}, |
34 | 36 | tokenLimit: #{options[:token_limit].to_json}, |
35 | 37 | onResult: #{options[:on_result]}, |
... | ... | @@ -48,4 +50,4 @@ module TokenHelper |
48 | 50 | result |
49 | 51 | end |
50 | 52 | |
51 | -end | |
52 | 53 | \ No newline at end of file |
54 | +end | ... | ... |
app/views/cms/publish.html.erb
1 | -<h1><%= _('Select the groups where you want to publish your article') %></h1> | |
1 | +<script type="text/javascript" charset="utf-8"> | |
2 | + jQuery(document).ready( function() { | |
3 | + jQuery('.publish-article-title').find('label') | |
4 | + .click( function(event) { | |
5 | + if (this == event.target) { | |
6 | + jQuery(this).toggleClass('expanded'); | |
7 | + jQuery(this).next('input').slideToggle(); | |
8 | + } | |
9 | + return false; | |
10 | + }).addClass('collapsed').next('input').hide(); | |
11 | + }); | |
12 | + | |
13 | +</script> | |
14 | +<div class="select-publish-target"> | |
15 | + | |
16 | +<h2><%= _('Where do you want to publish this article?') %></h2> | |
2 | 17 | |
3 | 18 | <% if !@failed.blank? %> |
4 | 19 | <div class="errorExplanation" id="errorExplanation"> |
... | ... | @@ -14,15 +29,57 @@ |
14 | 29 | </div> |
15 | 30 | <% end %> |
16 | 31 | |
17 | -<%= form_tag do%> | |
18 | - <%= hidden_field_tag :back_to, @back_to %> | |
19 | - <% @groups.each do |group| %> | |
20 | - <%= labelled_check_box group.name, "marked_groups[#{group.id}][group_id]", group.id, @marked_groups.include?(group) %><br /> | |
21 | - <%= labelled_text_field _('Title') + ': ', "marked_groups[#{group.id}][name]", @article.name, :style => 'width: 100%' %> | |
22 | - <hr /> | |
23 | - <% end %> | |
32 | +<ul class='publish-targets'> | |
33 | + <li onmouseover="javascript: jQuery(this).addClass('mouseover')" onmouseout="jQuery(this).removeClass('mouseover')"> | |
34 | + <strong><%= _("Publish this article on your profile") %></strong> | |
35 | + <div class='description'><%= _('You can publish this article on your profile where your friends and followers will see.') %></div> | |
36 | + <%= form_tag do %> | |
37 | + <%= hidden_field_tag :back_to, @back_to %> | |
38 | + <div class='publish-article-title'> | |
39 | + <%= labelled_text_field _('Title'), 'name', @article.name %> | |
40 | + </div> | |
24 | 41 | |
25 | - <% button_bar do %> | |
26 | - <%= submit_button 'spread', _('Spread this'), :cancel => @back_to %> | |
42 | + <% button_bar do %> | |
43 | + <%= submit_button 'spread', _('Spread this') %> | |
44 | + <% end %> | |
45 | + <% end %> | |
46 | + </li> | |
47 | + | |
48 | + <li onmouseover="javascript: jQuery(this).addClass('mouseover')" onmouseout="jQuery(this).removeClass('mouseover')"> | |
49 | + <strong><%= _("Publish this article on communities you are part of") %></strong> | |
50 | + <div class='description'><%= _('You can submit this article to one or more communities you are a member of, just search for the community below.') %></div> | |
51 | + <%= form_tag :action => 'publish_on_communities', :id => @article.id do %> | |
52 | + <%= hidden_field_tag :back_to, @back_to %> | |
53 | + <% search_action = url_for(:action => 'search_communities_to_publish') %> | |
54 | + <%= token_input_field_tag(:q, 'search-communities-to-publish', search_action, { :hint_text => _('Type in a search for your community'), :zindex => 10000, :focus => false }) %> | |
55 | + | |
56 | + <div class='publish-article-title'> | |
57 | + <%= labelled_text_field _('Title'), 'name', @article.name %> | |
58 | + </div> | |
59 | + <% button_bar do %> | |
60 | + <%= submit_button 'spread', _('Spread this') %> | |
61 | + <% end %> | |
62 | + <% end %> | |
63 | + </li> | |
64 | + | |
65 | + | |
66 | +<% if @portal_enabled %> | |
67 | + <li onmouseover="javascript: jQuery(this).addClass('mouseover')" onmouseout="jQuery(this).removeClass('mouseover')"> | |
68 | + <strong><%= _("Publish your article on portal community") %></strong> | |
69 | + <div class='description'><%= _('You can suggest this article to the portal community, where it can show up on the homepage.') %></div> | |
70 | + | |
71 | + <%= form_tag :action => 'publish_on_portal_community', :id => @article.id do %> | |
72 | + <%= hidden_field_tag :back_to, @back_to %> | |
73 | + <div class='publish-article-title'> | |
74 | + <%= labelled_text_field _('Title'), :name, @article.name %> | |
75 | + </div> | |
76 | + | |
77 | + <% button_bar do %> | |
78 | + <%= submit_button 'spread', _('Spread this') %> | |
79 | + <% end %> | |
27 | 80 | <% end %> |
81 | + </li> | |
28 | 82 | <% end %> |
83 | +</ul> | |
84 | + | |
85 | +</div> | ... | ... |
app/views/cms/view.html.erb
... | ... | @@ -66,7 +66,7 @@ |
66 | 66 | <td class="article-controls"> |
67 | 67 | <%= expirable_button article, :edit, _('Edit'), {:action => 'edit', :id => article.id} if !remove_content_button(:edit) %> |
68 | 68 | <%= button_without_text :eyes, _('Public view'), article.view_url %> |
69 | - <%= display_spread_button(profile, article) unless article.folder? || remove_content_button(:spread)%> | |
69 | + <%= display_spread_button(article) unless article.folder? || remove_content_button(:spread)%> | |
70 | 70 | <% if !environment.enabled?('cant_change_homepage') && !remove_content_button(:home) %> |
71 | 71 | <% if profile.home_page != article %> |
72 | 72 | <%= expirable_button article, :home, _('Use as homepage'), { :action => 'set_home_page', :id => article.id }, :method => :post %> | ... | ... |
app/views/content_viewer/_article_toolbar.html.erb
... | ... | @@ -15,15 +15,9 @@ |
15 | 15 | <%= expirable_button @page, :delete, content, url, options %> |
16 | 16 | <% end %> |
17 | 17 | |
18 | - <% if !@page.folder? && @page.allow_spread?(user) && !remove_content_button(:spread) %> | |
19 | - <% content = content_tag( 'span', _('Spread this') ) %> | |
20 | - <% url = nil %> | |
21 | - <% if profile.kind_of?(Person) %> | |
22 | - <% url = profile.admin_url.merge({ :controller => 'cms', :action => 'publish', :id => @page.id }) %> | |
23 | - <% elsif profile.kind_of?(Community) && environment.portal_community %> | |
24 | - <% url = profile.admin_url.merge({ :controller => 'cms', :action => 'publish_on_portal_community', :id => @page.id }) %> | |
25 | - <% end %> | |
26 | - <%= expirable_button @page, :spread, content, url if url %> | |
18 | + <% if !@page.folder? && @page.public? && !remove_content_button(:spread) %> | |
19 | + <% url = profile.admin_url.merge({ :controller => 'cms', :action => 'publish', :id => @page.id }) %> | |
20 | + <%= expirable_button @page, :spread, content_tag( 'span', _('Spread this') ), url, {:class => 'colorbox'} if url %> | |
27 | 21 | <% end %> |
28 | 22 | |
29 | 23 | <% if !@page.gallery? && (@page.allow_create?(user) || (@page.parent && @page.parent.allow_create?(user))) %> | ... | ... |
public/javascripts/jquery.tokeninput.js
... | ... | @@ -35,6 +35,7 @@ var DEFAULT_SETTINGS = { |
35 | 35 | onAdd: null, |
36 | 36 | onDelete: null, |
37 | 37 | idPrefix: "token-input-", |
38 | + zindex: 999, | |
38 | 39 | backspaceDeleteItem: true |
39 | 40 | }; |
40 | 41 | |
... | ... | @@ -628,7 +629,7 @@ $.TokenList = function (input, url_or_data, options) { |
628 | 629 | position: "absolute", |
629 | 630 | top: $(token_list).offset().top + $(token_list).outerHeight(), |
630 | 631 | left: $(token_list).offset().left, |
631 | - zindex: 999 | |
632 | + 'z-index': settings.zindex | |
632 | 633 | }).show(); |
633 | 634 | else |
634 | 635 | dropdown.css({ | ... | ... |
public/stylesheets/application.css
... | ... | @@ -2137,7 +2137,7 @@ a.button.disabled, input.disabled { |
2137 | 2137 | .recent-documents-block .block-footer-content a:hover { |
2138 | 2138 | text-decoration: underline; |
2139 | 2139 | } |
2140 | -/* ==> blocks/disabled-enterprise-message-block.css <<= */ | |
2140 | +/* ==> blocks/disabled-enterprise-message-block.css <<= */ | |
2141 | 2141 | |
2142 | 2142 | |
2143 | 2143 | .disabled-enterprise-message-block { |
... | ... | @@ -2153,12 +2153,12 @@ a.button.disabled, input.disabled { |
2153 | 2153 | font-size: 80%; |
2154 | 2154 | background: #ffffa9; |
2155 | 2155 | } |
2156 | -/* ==> blocks/article-block.css <<= */ | |
2156 | +/* ==> blocks/article-block.css <<= */ | |
2157 | 2157 | |
2158 | 2158 | .article-block { |
2159 | 2159 | overflow: hidden; |
2160 | 2160 | } |
2161 | -/* ==> blocks/main-block.css <<= */ | |
2161 | +/* ==> blocks/main-block.css <<= */ | |
2162 | 2162 | |
2163 | 2163 | /* |
2164 | 2164 | Use article.css for article related css |
... | ... | @@ -2179,7 +2179,7 @@ div#activation_enterprise { |
2179 | 2179 | div#activation_enterprise label, div#activation_enterprise input, div#activation_enterprise div { |
2180 | 2180 | display: inline |
2181 | 2181 | } |
2182 | -/* ==> blocks/slideshow-block.css <<= */ | |
2182 | +/* ==> blocks/slideshow-block.css <<= */ | |
2183 | 2183 | |
2184 | 2184 | .slideshow-block .slideshow-container { |
2185 | 2185 | margin-bottom: 10px; |
... | ... | @@ -2244,7 +2244,7 @@ div#activation_enterprise label, div#activation_enterprise input, div#activation |
2244 | 2244 | display: inline-block; |
2245 | 2245 | width: 16px; |
2246 | 2246 | } |
2247 | -/* ==> blocks/products-block.css <<= */ | |
2247 | +/* ==> blocks/products-block.css <<= */ | |
2248 | 2248 | |
2249 | 2249 | .products-block ul { |
2250 | 2250 | margin: 0px; |
... | ... | @@ -2277,7 +2277,7 @@ div#activation_enterprise label, div#activation_enterprise input, div#activation |
2277 | 2277 | #content .products-block li a:hover { |
2278 | 2278 | color: #fff; |
2279 | 2279 | } |
2280 | -/* ==> blocks/blog-archives-block.css <<= */ | |
2280 | +/* ==> blocks/blog-archives-block.css <<= */ | |
2281 | 2281 | |
2282 | 2282 | #content .blog-archives-block { |
2283 | 2283 | padding: 10px 0px 10px 10px; |
... | ... | @@ -2297,7 +2297,7 @@ div#activation_enterprise label, div#activation_enterprise input, div#activation |
2297 | 2297 | padding: 5px 0px 10px 10px; |
2298 | 2298 | font-size: 12px; |
2299 | 2299 | } |
2300 | -/* ==> blocks/profile-info-block.css <<= */ | |
2300 | +/* ==> blocks/profile-info-block.css <<= */ | |
2301 | 2301 | |
2302 | 2302 | |
2303 | 2303 | .profile-info-block h2 { |
... | ... | @@ -2400,7 +2400,7 @@ div#activation_enterprise label, div#activation_enterprise input, div#activation |
2400 | 2400 | margin: 0px 0px 5px 0px; |
2401 | 2401 | padding: 2px; |
2402 | 2402 | } |
2403 | -/* ==> blocks/location-block.css <<= */ | |
2403 | +/* ==> blocks/location-block.css <<= */ | |
2404 | 2404 | |
2405 | 2405 | .location-block { |
2406 | 2406 | text-align: center; |
... | ... | @@ -2413,7 +2413,7 @@ div#activation_enterprise label, div#activation_enterprise input, div#activation |
2413 | 2413 | background: #FFF; |
2414 | 2414 | border: 1px solid #888; |
2415 | 2415 | } |
2416 | -/* ==> blocks/profile-image-block.css <<= */ | |
2416 | +/* ==> blocks/profile-image-block.css <<= */ | |
2417 | 2417 | |
2418 | 2418 | |
2419 | 2419 | .profile-image-block { |
... | ... | @@ -2448,7 +2448,7 @@ div#activation_enterprise label, div#activation_enterprise input, div#activation |
2448 | 2448 | list-style: none; |
2449 | 2449 | margin-bottom: 8px; |
2450 | 2450 | } |
2451 | -/* ==> blocks/sellers-search-block.css <<= */ | |
2451 | +/* ==> blocks/sellers-search-block.css <<= */ | |
2452 | 2452 | |
2453 | 2453 | |
2454 | 2454 | #content .sellers-search-block { |
... | ... | @@ -2507,7 +2507,7 @@ div#activation_enterprise label, div#activation_enterprise input, div#activation |
2507 | 2507 | margin: 0px; |
2508 | 2508 | float: none; |
2509 | 2509 | } |
2510 | -/* ==> blocks/feed-reader-block.css <<= */ | |
2510 | +/* ==> blocks/feed-reader-block.css <<= */ | |
2511 | 2511 | |
2512 | 2512 | #content .feed-reader-block { |
2513 | 2513 | padding: 10px 0px 10px 10px; |
... | ... | @@ -3266,6 +3266,52 @@ table.cms-articles .icon:hover { |
3266 | 3266 | background-color: transparent; |
3267 | 3267 | } |
3268 | 3268 | |
3269 | +.select-publish-target { | |
3270 | + margin: 10px 10px 0px 10px; | |
3271 | +} | |
3272 | + | |
3273 | +.publish-targets { | |
3274 | + padding: 10px; | |
3275 | + margin: 0px; | |
3276 | +} | |
3277 | + | |
3278 | +.publish-targets>li { | |
3279 | + list-style: none; | |
3280 | + padding: 10px 20px 5px 10px; | |
3281 | +} | |
3282 | + | |
3283 | +.publish-targets li.mouseover { | |
3284 | + background-color: #eeeeec; | |
3285 | +} | |
3286 | + | |
3287 | +.publish-targets div.publish-article-title, .publish-targets .description { | |
3288 | + width: 384px; | |
3289 | + margin-top: 2px; | |
3290 | +} | |
3291 | + | |
3292 | +.publish-targets div.publish-article-title .collapsed { | |
3293 | + background-image: url("../images/icons-task/closed-arrow-hover.png"); | |
3294 | + background-repeat: no-repeat; | |
3295 | + background-position: 3px 0; | |
3296 | +} | |
3297 | + | |
3298 | +.publish-targets div.publish-article-title .expanded { | |
3299 | + background-image: url("../images/icons-task/opened-arrow-hover.png"); | |
3300 | + background-repeat: no-repeat; | |
3301 | + background-position: 3px 0; | |
3302 | +} | |
3303 | + | |
3304 | +.publish-targets div.publish-article-title label { | |
3305 | + padding-left: 20px; | |
3306 | +} | |
3307 | + | |
3308 | +.publish-targets div.publish-article-title input { | |
3309 | + width: 100%; | |
3310 | + border: 1px solid #999; | |
3311 | + padding: 3px 8px; | |
3312 | + margin-bottom: 2px; | |
3313 | +} | |
3314 | + | |
3269 | 3315 | .select-article-type { |
3270 | 3316 | padding: 5px 20px; |
3271 | 3317 | width: 455px; |
... | ... | @@ -6514,7 +6560,7 @@ li.profile-activity-item.upload_image .activity-gallery-images-count-1 img { |
6514 | 6560 | |
6515 | 6561 | /* AutoComplete*/ |
6516 | 6562 | .formfield input.ui-autocomplete-loading { background: url('/images/loading-small.gif') right center no-repeat, url("../images/input-bg.gif") no-repeat left top; } |
6517 | - | |
6563 | + | |
6518 | 6564 | .ui-autocomplete-category { |
6519 | 6565 | font-weight: bold; |
6520 | 6566 | padding: .2em .4em; | ... | ... |
test/unit/cms_helper_test.rb
... | ... | @@ -48,41 +48,22 @@ class CmsHelperTest < ActionView::TestCase |
48 | 48 | result = link_to_article(file) |
49 | 49 | end |
50 | 50 | |
51 | - should 'display spread button when profile is a person' do | |
51 | + should 'display spread button when content is public' do | |
52 | 52 | plugins.stubs(:dispatch).returns([]) |
53 | 53 | profile = fast_create(Person) |
54 | 54 | article = fast_create(TinyMceArticle, :name => 'My article', :profile_id => profile.id) |
55 | 55 | expects(:link_to).with('Spread this', {:action => 'publish', :id => article.id}, :class => 'button with-text icon-spread', :title => nil) |
56 | 56 | |
57 | - result = display_spread_button(profile, article) | |
57 | + result = display_spread_button(article) | |
58 | 58 | end |
59 | 59 | |
60 | - should 'display spread button when profile is a community and env has portal_community' do | |
60 | + should 'not display spread button when content is not public' do | |
61 | 61 | plugins.stubs(:dispatch).returns([]) |
62 | - env = fast_create(Environment) | |
63 | - env.expects(:portal_community).returns(true) | |
64 | - profile = fast_create(Community, :environment_id => env.id) | |
65 | - expects(:environment).returns(env) | |
66 | - | |
67 | - article = fast_create(TinyMceArticle, :name => 'My article', :profile_id => profile.id) | |
68 | - | |
69 | - expects(:link_to).with('Spread this', {:action => 'publish_on_portal_community', :id => article.id}, :class => 'button with-text icon-spread', :title => nil) | |
70 | - | |
71 | - result = display_spread_button(profile, article) | |
72 | - end | |
73 | - | |
74 | - should 'not display spread button when profile is a community and env has not portal_community' do | |
75 | - plugins.stubs(:dispatch).returns([]) | |
76 | - env = fast_create(Environment) | |
77 | - env.expects(:portal_community).returns(nil) | |
78 | - profile = fast_create(Community, :environment_id => env.id) | |
79 | - expects(:environment).returns(env) | |
80 | - | |
81 | - article = fast_create(TinyMceArticle, :name => 'My article', :profile_id => profile.id) | |
82 | - | |
83 | - expects(:link_to).with('Spread this', {:action => 'publish_on_portal_community', :id => article.id}, :class => 'button with-text icon-spread', :title => nil).never | |
62 | + profile = fast_create(Person) | |
63 | + article = fast_create(TinyMceArticle, :name => 'My article', :profile_id => profile.id, :published => false) | |
64 | + expects(:link_to).with('Spread this', {:action => 'publish', :id => article.id}, :class => 'button with-text icon-spread', :title => nil).never | |
84 | 65 | |
85 | - result = display_spread_button(profile, article) | |
66 | + result = display_spread_button(article) | |
86 | 67 | end |
87 | 68 | |
88 | 69 | should 'display delete_button to folder' do | ... | ... |