Commit 1221eda459b3a82274ea4d744b88ac2a407a0345
1 parent
2253cc66
Exists in
master
and in
23 other branches
versions-diff: included js to radio_button control and adjusts on look-and-feel
AI2822
Showing
3 changed files
with
108 additions
and
10 deletions
Show diff stats
app/controllers/public/content_viewer_controller.rb
| ... | ... | @@ -127,7 +127,7 @@ class ContentViewerController < ApplicationController |
| 127 | 127 | def versions_diff |
| 128 | 128 | path = params[:page].join('/') |
| 129 | 129 | @page = profile.articles.find_by_path(path) |
| 130 | - @v1, @v2 = @page.versions.find_by_version(params[:v1]).body, @page.versions.find_by_version(params[:v2]).body | |
| 130 | + @v1, @v2 = @page.versions.find_by_version(params[:v1]), @page.versions.find_by_version(params[:v2]) | |
| 131 | 131 | p params |
| 132 | 132 | end |
| 133 | 133 | ... | ... |
app/views/content_viewer/article_versions.rhtml
| ... | ... | @@ -2,20 +2,54 @@ |
| 2 | 2 | |
| 3 | 3 | <p><%= _('This is the list of all versions of this content. Select a version to see it and then revert to it.') %>.</p> |
| 4 | 4 | |
| 5 | -<% form_tag({:controller => 'content_viewer', :action => 'versions_diff', :profile => profile.identifier, :page => @page.path.split('/')}) do %> | |
| 6 | - <ul class='article-versions'> | |
| 5 | +<% form_tag({:controller => 'content_viewer', :action => 'versions_diff', :profile => profile.identifier, :page => @page.path.split('/')}, :method => 'get') do %> | |
| 6 | + <ul id="article-versions"> | |
| 7 | 7 | <% @versions.each do |v| %> |
| 8 | - <li> | |
| 9 | - <%= radio_button_tag 'v1', v.version %> | |
| 10 | - <%= radio_button_tag 'v2', v.version %> | |
| 8 | + <li> | |
| 9 | + <%= radio_button_tag 'v1', v.version, false, :onclick => 'versionInputClicked(this)' %> | |
| 10 | + <%= radio_button_tag 'v2', v.version, false, :onclick => 'versionInputClicked(this)' %> | |
| 11 | 11 | <%= link_to(_("Version #{v.version}"), @page.url.merge(:version => v.version)) %> |
| 12 | 12 | <%= @page.version == v.version ? _('(current)') : '' %> |
| 13 | 13 | <span class='updated-by'><%= _('by %{author}') % {:author => link_to(@page.author_name(v.version), @page.author_url)} %></span> |
| 14 | - <div class='updated-on'><%= show_time(v.updated_at) %></div> | |
| 14 | + <span class='updated-on'><%= show_time(v.updated_at) %></span> | |
| 15 | 15 | </li> |
| 16 | 16 | <% end %> |
| 17 | 17 | </ul> |
| 18 | 18 | |
| 19 | - <%= submit_button(:search, _('Show differences between selected versions')) %> | |
| 19 | +<script> | |
| 20 | + function versionInputClicked(input) { | |
| 21 | + var selectedColumn = input.name; | |
| 22 | + var sisterColumn = (selectedColumn == 'v1') ? 'v2' : 'v1'; | |
| 23 | + var li = input.parentNode; | |
| 24 | + var checkedBrotherLi = jQuery('#article-versions input[name=' + sisterColumn + ']:checked').parent()[0]; | |
| 25 | + updateColumn(selectedColumn, li); | |
| 26 | + updateColumn(sisterColumn, checkedBrotherLi); | |
| 27 | + } | |
| 28 | + | |
| 29 | + function updateColumn(selectedColumn, startLi){ | |
| 30 | + var sisterColumn = (selectedColumn == 'v1') ? 'v2' : 'v1'; | |
| 31 | + var walkMethod = (selectedColumn == 'v1') ? 'prev' : 'next'; | |
| 32 | + var li = startLi; | |
| 33 | + var foundCheckedBrother = false; | |
| 34 | + while(li = jQuery(li)[walkMethod]()[0]) { | |
| 35 | + li.className = ''; | |
| 36 | + if (!foundCheckedBrother){ | |
| 37 | + li.className = 'selected'; | |
| 38 | + foundCheckedBrother = jQuery('input[name=' + sisterColumn + ']', li)[0].checked; | |
| 39 | + } | |
| 40 | + jQuery('input[name=' + selectedColumn + ']', li)[0].disabled = foundCheckedBrother; | |
| 41 | + } | |
| 42 | + } | |
| 43 | + | |
| 44 | + var penultVersion = jQuery('#article-versions input[name=v1]')[1]; | |
| 45 | + var lastVersion = jQuery('#article-versions input[name=v2]')[0]; | |
| 46 | + jQuery('#article-versions input').attr('disabled', false); | |
| 47 | + if (penultVersion && lastVersion) { | |
| 48 | + penultVersion.checked = lastVersion.checked = true; | |
| 49 | + lastVersion.onclick(); | |
| 50 | + } | |
| 51 | +</script> | |
| 52 | + <%= submit_button(:clock, _('Show differences between selected versions')) %> | |
| 20 | 53 | <% end %> |
| 21 | 54 | <%= pagination_links @versions, :param_name => 'npage' %> |
| 55 | + | ... | ... |
public/stylesheets/application.css
| ... | ... | @@ -6539,7 +6539,71 @@ li.profile-activity-item.upload_image .activity-gallery-images-count-1 img { |
| 6539 | 6539 | z-index: 1; |
| 6540 | 6540 | } |
| 6541 | 6541 | |
| 6542 | -ul.article-versions li { | |
| 6543 | - font-size: 13px; | |
| 6542 | +#article-versions { | |
| 6543 | + margin: 0 0 15px 0; | |
| 6544 | + padding: 0; | |
| 6545 | +} | |
| 6546 | + | |
| 6547 | +#article-versions li { | |
| 6548 | + list-style: none; | |
| 6549 | + margin: 0; | |
| 6544 | 6550 | padding: 3px 0px; |
| 6545 | 6551 | } |
| 6552 | + | |
| 6553 | +#article-versions input:disabled { | |
| 6554 | + opacity: 0.3; | |
| 6555 | +} | |
| 6556 | + | |
| 6557 | +#article-versions .selected { | |
| 6558 | + background: #ff9; | |
| 6559 | +} | |
| 6560 | + | |
| 6561 | +.action-content_viewer-versions_diff .diff { | |
| 6562 | + text-align: justify; | |
| 6563 | +} | |
| 6564 | + | |
| 6565 | +.diff ul { | |
| 6566 | + list-style: none; | |
| 6567 | + margin: 0; | |
| 6568 | + padding: 0; | |
| 6569 | +} | |
| 6570 | + | |
| 6571 | +.diff del, .diff ins { | |
| 6572 | + display: block; | |
| 6573 | + text-decoration: none; | |
| 6574 | +} | |
| 6575 | + | |
| 6576 | +.diff li { | |
| 6577 | + padding: 5px 10px; | |
| 6578 | + margin: 0; | |
| 6579 | + line-height: 150%; | |
| 6580 | +} | |
| 6581 | + | |
| 6582 | +.diff li.ins { | |
| 6583 | + background: #dfd; | |
| 6584 | +} | |
| 6585 | + | |
| 6586 | +.diff li.del { | |
| 6587 | + background: #fee; | |
| 6588 | +} | |
| 6589 | + | |
| 6590 | +.diff li.ins:hover { | |
| 6591 | + background: #8f8; | |
| 6592 | +} | |
| 6593 | + | |
| 6594 | +.diff li.del:hover { | |
| 6595 | + background: #f99; | |
| 6596 | +} | |
| 6597 | + | |
| 6598 | +.diff strong { | |
| 6599 | + background: rgba(255, 255, 0, 0.2); | |
| 6600 | +} | |
| 6601 | + | |
| 6602 | +.diff li.diff-comment { | |
| 6603 | + display: none; | |
| 6604 | +} | |
| 6605 | + | |
| 6606 | +.diff li.diff-block-info { | |
| 6607 | + background: none repeat scroll 0 0 gray; | |
| 6608 | +} | |
| 6609 | + | ... | ... |