plugins.html.erb 2.56 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
<%= title l(:label_plugins) %>

<% if @plugins.any? %>
<div class="autoscroll">
  <table class="list plugins">
      <% @plugins.each do |plugin| %>
          <tr id="plugin-<%= plugin.id %>">
          <td class="name"><span class="name"><%= plugin.name %></span>
              <%= content_tag('span', plugin.description, :class => 'description') unless plugin.description.blank? %>
              <%= content_tag('span', link_to(plugin.url, plugin.url), :class => 'url') unless plugin.url.blank? %>
          </td>
          <td class="author"><%= plugin.author_url.blank? ? plugin.author : link_to(plugin.author, plugin.author_url) %></td>
          <td class="version"><span class="icon"><%= plugin.version %></span></td>
          <td class="configure"><%= link_to(l(:button_configure), plugin_settings_path(plugin)) if plugin.configurable? %></td>
          </tr>
      <% end %>
  </table>
</div>
<p><a href="#" id="check-for-updates"><%= l(:label_check_for_updates) %></a></p>
<% else %>
<p class="nodata"><%= l(:label_no_data) %></p>
<% end %>

<%= javascript_tag do %>
$(document).ready(function(){
  $("#check-for-updates").click(function(e){
    e.preventDefault();
    $.ajax({
      dataType: "jsonp",
      url: "https://www.redmine.org/plugins/check_updates",
      data: <%= raw_json plugin_data_for_updates(@plugins) %>,
      timeout: 10000,
      beforeSend: function(){
        $('#ajax-indicator').show();
      },
      success: function(data){
        $('#ajax-indicator').hide();
        $("table.plugins td.version span").addClass("unknown");
        $.each(data, function(plugin_id, plugin_data){
          var s = $("tr#plugin-"+plugin_id+" td.version span");
          s.removeClass("icon-ok icon-warning unknown");
          if (plugin_data.url) {
            if (s.parent("a").length>0) {
              s.unwrap();
            }
            s.addClass("found");
            s.wrap($("<a></a>").attr("href", plugin_data.url).attr("target", "_blank"));
          }
          if (plugin_data.c == s.text()) {
            s.addClass("icon-ok");
          } else if (plugin_data.c) {
            s.addClass("icon-warning");
            s.attr("title", "<%= escape_javascript l(:label_latest_compatible_version) %>: "+plugin_data.c);
          }
        });
        $("table.plugins td.version span.unknown").addClass("icon-help").attr("title", "<%= escape_javascript l(:label_unknown_plugin) %>");
      },
      error: function(){
        $('#ajax-indicator').hide();
        alert("Unable to retrieve plugin informations from www.redmine.org");
      }
    });
  });
});
<% end if @plugins.any? %>