]> source.dussan.org Git - redmine.git/commitdiff
Adds helpers for rendering my page blocks.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 29 Oct 2016 08:10:19 +0000 (08:10 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 29 Oct 2016 08:10:19 +0000 (08:10 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@15927 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/helpers/my_helper.rb
app/views/my/_block.html.erb [deleted file]
app/views/my/page.html.erb
app/views/my/page_layout.html.erb
public/stylesheets/application.css

index 4942d7e04996bdd3948e41b09d69f83b948799e1..c7cf534996370f76dfd63179f7d70837ffc7f0d0 100644 (file)
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
 module MyHelper
+  # Renders the blocks
+  def render_blocks(blocks, user, options={})
+    s = ''.html_safe
+
+    if blocks.present?
+      blocks.each do |block|
+        content = render_block_content(block, user)
+        if content.present?
+          if options[:edit]
+            close = link_to("", {:action => "remove_block", :block => block}, :method => 'post', :class => "close-icon")
+            content = close + content_tag('div', content, :class => 'handle')
+          end
+
+          s << content_tag('div', content, :class => "mypage-box", :id => "block-#{block}")
+        end
+      end
+    end
+    s
+  end
+
+  # Renders a single block content
+  def render_block_content(block, user)
+    unless MyController::BLOCKS.keys.include?(block)
+      Rails.logger.warn("Unknown block \"#{block}\" found in #{user.login} (id=#{user.id}) preferences")
+      return
+    end
+
+    begin
+      render(:partial => "my/blocks/#{block}", :locals => {:user => user})
+    rescue ActionView::MissingTemplate
+      Rails.logger.warn("Template missing for block \"#{block}\" found in #{user.login} (id=#{user.id}) preferences")
+      return nil
+    end
+  end
+
   def calendar_items(startdt, enddt)
     Issue.visible.
       where(:project_id => User.current.projects.map(&:id)).
diff --git a/app/views/my/_block.html.erb b/app/views/my/_block.html.erb
deleted file mode 100644 (file)
index 813eb2b..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<div id="block_<%= block_name.dasherize %>" class="mypage-box">
-
-    <div style="float:right;margin-right:16px;z-index:500;">
-    <%= link_to "", {:action => "remove_block", :block => block_name}, :method => 'post', :class => "close-icon" %>
-    </div>
-
-    <div class="handle">
-    <%= render :partial => "my/blocks/#{block_name}", :locals => { :user => user } %>
-    </div>
-</div>
index 819dddeafe3f9aef2ee861c5e6be5c2b5ce44ea1..87c6e4c563e9d829245bfd4bc20c263568bb8ea2 100644 (file)
@@ -5,30 +5,15 @@
 <h2><%=l(:label_my_page)%></h2>
 
 <div id="list-top">
-  <% @blocks['top'].each do |b|
-     next unless MyController::BLOCKS.keys.include? b  %>
-  <div class="mypage-box">
-    <%= render :partial => "my/blocks/#{b}", :locals => { :user => @user } %>
-  </div>
-  <% end if @blocks['top'] %>
+  <%= render_blocks(@blocks['top'], @user) %>
 </div>
 
 <div id="list-left" class="splitcontentleft">
-  <% @blocks['left'].each do |b|
-     next unless MyController::BLOCKS.keys.include? b %>
-  <div class="mypage-box">
-    <%= render :partial => "my/blocks/#{b}", :locals => { :user => @user } %>
-  </div>
-  <% end if @blocks['left'] %>
+  <%= render_blocks(@blocks['left'], @user) %>
 </div>
 
 <div id="list-right" class="splitcontentright">
-  <% @blocks['right'].each do |b|
-     next unless MyController::BLOCKS.keys.include? b %>
-  <div class="mypage-box">
-    <%= render :partial => "my/blocks/#{b}", :locals => { :user => @user } %>
-  </div>
-  <% end if @blocks['right'] %>
+  <%= render_blocks(@blocks['right'], @user) %>
 </div>
 
 <%= context_menu issues_context_menu_path %>
index 4a60d97e1186f1491b6b386d82e68a29fa8b6270..70bf835fb28f70b5fec1b49e3e91ac8f0e1fb4c0 100644 (file)
 <h2><%=l(:label_my_page)%></h2>
 
 <div id="list-top" class="block-receiver">
-  <% @blocks['top'].each do |b|
-     next unless MyController::BLOCKS.keys.include? b %>
-  <%= render :partial => 'block', :locals => {:user => @user, :block_name => b} %>
-  <% end if @blocks['top'] %>
+  <%= render_blocks(@blocks['top'], @user, :edit => true) %>
 </div>
 
 <div id="list-left" class="splitcontentleft block-receiver">
-  <% @blocks['left'].each do |b|
-     next unless MyController::BLOCKS.keys.include? b %>
-  <%= render :partial => 'block', :locals => {:user => @user, :block_name => b} %>
-  <% end if @blocks['left'] %>
+  <%= render_blocks(@blocks['left'], @user, :edit => true) %>
 </div>
 
 <div id="list-right" class="splitcontentright block-receiver">
-  <% @blocks['right'].each do |b|
-     next unless MyController::BLOCKS.keys.include? b %>
-  <%= render :partial => 'block', :locals => {:user => @user, :block_name => b} %>
-  <% end if @blocks['right'] %>
+  <%= render_blocks(@blocks['right'], @user, :edit => true) %>
 </div>
 
 <%= javascript_tag "initMyPageSortable('top', '#{ escape_javascript url_for(:action => "order_blocks", :group => "top") }');" %>
index 34559cffb9fe3046939912087b8245ffdd5199e5..6ec614edf9f3a8cb9b43016426ef97d7a3a038d2 100644 (file)
@@ -1077,6 +1077,10 @@ div.wiki img {vertical-align:middle; max-width:100%;}
   color:#505050;
   line-height:1.5em;
 }
+.mypage-box .close-icon {
+  float:right;
+  z-index:500;
+}
 
 .handle {cursor: move;}