Adds "Check for updates" for installed plugins (#3177).
git-svn-id: http://svn.redmine.org/redmine/trunk@13042 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
4920bb9d4d
commit
43d7036051
|
@ -24,4 +24,12 @@ module AdminHelper
|
||||||
[l(:project_status_closed), '5'],
|
[l(:project_status_closed), '5'],
|
||||||
[l(:project_status_archived), '9']], selected.to_s)
|
[l(:project_status_archived), '9']], selected.to_s)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def plugin_data_for_updates(plugins)
|
||||||
|
data = {"v" => Redmine::VERSION.to_s, "p" => {}}
|
||||||
|
plugins.each do |plugin|
|
||||||
|
data["p"].merge! plugin.id => {"v" => plugin.version, "n" => plugin.name, "a" => plugin.author}
|
||||||
|
end
|
||||||
|
data
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -9,11 +9,55 @@
|
||||||
<%= content_tag('span', link_to(h(plugin.url), plugin.url), :class => 'url') unless plugin.url.blank? %>
|
<%= content_tag('span', link_to(h(plugin.url), plugin.url), :class => 'url') unless plugin.url.blank? %>
|
||||||
</td>
|
</td>
|
||||||
<td class="author"><%= plugin.author_url.blank? ? h(plugin.author) : link_to(h(plugin.author), plugin.author_url) %></td>
|
<td class="author"><%= plugin.author_url.blank? ? h(plugin.author) : link_to(h(plugin.author), plugin.author_url) %></td>
|
||||||
<td class="version"><%=h plugin.version %></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>
|
<td class="configure"><%= link_to(l(:button_configure), plugin_settings_path(plugin)) if plugin.configurable? %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% end %>
|
<% end %>
|
||||||
</table>
|
</table>
|
||||||
|
<p><a href="#" id="check-for-updates">Check for updates</a>
|
||||||
<% else %>
|
<% else %>
|
||||||
<p class="nodata"><%= l(:label_no_data) %></p>
|
<p class="nodata"><%= l(:label_no_data) %></p>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
|
<%= javascript_tag do %>
|
||||||
|
$(document).ready(function(){
|
||||||
|
$("#check-for-updates").click(function(e){
|
||||||
|
e.preventDefault();
|
||||||
|
$.ajax({
|
||||||
|
dataType: "jsonp",
|
||||||
|
url: "http://www.redmine.org/plugins/check_updates",
|
||||||
|
data: <%= raw_json plugin_data_for_updates(@plugins) %>,
|
||||||
|
timeout: 3000,
|
||||||
|
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-checked 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-checked");
|
||||||
|
} else if (plugin_data.c) {
|
||||||
|
s.addClass("icon-warning");
|
||||||
|
s.attr("title", "Latest compatible version: "+plugin_data.c);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$("table.plugins td.version span.unknown").addClass("icon-help").attr("title", "Unknown plugin");
|
||||||
|
},
|
||||||
|
error: function(){
|
||||||
|
$('#ajax-indicator').hide();
|
||||||
|
alert("Unable to retrieve plugin informations from www.redmine.org");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
<% end if @plugins.any? %>
|
||||||
|
|
Loading…
Reference in New Issue