OSDN Git Service

Adds an helper for creating the context menu.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 4 Mar 2010 19:02:57 +0000 (19:02 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Thu, 4 Mar 2010 19:02:57 +0000 (19:02 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@3542 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/helpers/application_helper.rb
app/views/issues/index.rhtml
app/views/my/page.rhtml
public/javascripts/context_menu.js

index 593b5a4..ff877f1 100644 (file)
@@ -661,6 +661,17 @@ module ApplicationHelper
       ), :class => 'progress', :style => "width: #{width};") +
       content_tag('p', legend, :class => 'pourcent')
   end
+  
+  def context_menu(url)
+    unless @context_menu_included
+      content_for :header_tags do
+        javascript_include_tag('context_menu') +
+          stylesheet_link_tag('context_menu')
+      end
+      @context_menu_included = true
+    end
+    javascript_tag "new ContextMenu('#{ url_for(url) }')"
+  end
 
   def context_menu_link(name, url, options={})
     options[:class] ||= ''
index eac177c..66bba49 100644 (file)
@@ -78,9 +78,6 @@
 <% content_for :header_tags do %>
     <%= auto_discovery_link_tag(:atom, {:query_id => @query, :format => 'atom', :page => nil, :key => User.current.rss_key}, :title => l(:label_issue_plural)) %>
     <%= auto_discovery_link_tag(:atom, {:action => 'changes', :query_id => @query, :format => 'atom', :page => nil, :key => User.current.rss_key}, :title => l(:label_changes_details)) %>
-    <%= javascript_include_tag 'context_menu' %>
-    <%= stylesheet_link_tag 'context_menu' %>
 <% end %>
 
-<div id="context-menu" style="display: none;"></div>
-<%= javascript_tag "new ContextMenu('#{url_for(:controller => 'issues', :action => 'context_menu')}')" %>
+<%= context_menu :controller => 'issues', :action => 'context_menu' %>
index 4d4c921..608e233 100644 (file)
        <% end if @blocks['right'] %>
 </div>
 
-<% content_for :header_tags do %>
-    <%= javascript_include_tag 'context_menu' %>
-    <%= stylesheet_link_tag 'context_menu' %>
-<% end %>
-
-<div id="context-menu" style="display: none;"></div>
-<%= javascript_tag "new ContextMenu('#{url_for(:controller => 'issues', :action => 'context_menu')}')" %>
+<%= context_menu :controller => 'issues', :action => 'context_menu' %>
 
 <% html_title(l(:label_my_page)) -%>
index dac5076..bd3b726 100644 (file)
@@ -7,7 +7,8 @@ ContextMenu = Class.create();
 ContextMenu.prototype = {
        initialize: function (url) {
        this.url = url;
-
+       this.createMenu();
+       
        // prevent text selection in the issue list
        var tables = $$('table.issues');
        for (i=0; i<tables.length; i++) {
@@ -95,6 +96,15 @@ ContextMenu.prototype = {
     }
   },
   
+  createMenu: function() {
+    if (!$('context-menu')) {
+      var menu = document.createElement("div");
+      menu.setAttribute("id", "context-menu");
+      menu.setAttribute("style", "display:none;");
+      document.getElementById("content").appendChild(menu);
+    }
+  },
+  
   showMenu: function(e) {
     var mouse_x = Event.pointerX(e);
     var mouse_y = Event.pointerY(e);