article_versions.html.erb
2.48 KB
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
<div class="article-versions">
<%= button(:back, _('Go back to latest version'), @page.url) %>
</div>
<%= article_title(@page, :no_link => true) %>
<p><%= _('This is the list of all versions of this content. Select a version to see it and then revert to it.') %>.</p>
<%= form_tag({:controller => 'content_viewer', :action => 'versions_diff', :profile => profile.identifier, :page => @page.path}, :method => 'get') do %>
<ul id="article-versions">
<% @versions.each do |v| %>
<li>
<%= radio_button_tag 'v1', v.version, false, :onclick => 'versionInputClicked(this)' %>
<%= radio_button_tag 'v2', v.version, false, :onclick => 'versionInputClicked(this)' %>
<%= link_to(_("Version %s") % v.version, @page.url.merge(:version => v.version)) %>
<%= @page.version == v.version ? _('(current)') : '' %>
<span class='updated-by'><%= _('by %{author}') % {:author => link_to(@page.author_name(v.version), @page.author_url(v.version))} %></span>
<span class='updated-on'><%= show_time(v.updated_at) %></span>
</li>
<% end %>
</ul>
<script>
function versionInputClicked(input) {
var selectedColumn = input.name;
var sisterColumn = (selectedColumn == 'v1') ? 'v2' : 'v1';
var li = input.parentNode;
var checkedBrotherLi = jQuery('#article-versions input[name=' + sisterColumn + ']:checked').parent()[0];
updateColumn(selectedColumn, li);
updateColumn(sisterColumn, checkedBrotherLi);
}
function updateColumn(selectedColumn, startLi){
var sisterColumn = (selectedColumn == 'v1') ? 'v2' : 'v1';
var walkMethod = (selectedColumn == 'v1') ? 'prev' : 'next';
var li = startLi;
var foundCheckedBrother = false;
while(li = jQuery(li)[walkMethod]()[0]) {
li.className = '';
if (!foundCheckedBrother){
li.className = 'selected';
foundCheckedBrother = jQuery('input[name=' + sisterColumn + ']', li)[0].checked;
}
jQuery('input[name=' + selectedColumn + ']', li)[0].disabled = foundCheckedBrother;
}
}
var penultVersion = jQuery('#article-versions input[name=v1]')[1];
var lastVersion = jQuery('#article-versions input[name=v2]')[0];
jQuery('#article-versions input').attr('disabled', false);
if (penultVersion && lastVersion) {
penultVersion.checked = lastVersion.checked = true;
lastVersion.onclick();
}
</script>
<%= submit_button(:clock, _('Show differences between selected versions')) %>
<% end %>
<%= pagination_links @versions, :param_name => 'npage' %>