history.html 11.3 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11
{% extends "wiki/article.html" %}
{% load wiki_tags i18n sekizai_tags %}
{% load url from future %}

{% block pagetitle %}{% trans "History" %}: {{ article.current_revision.title }}{% endblock %}

{% block wiki_contents_tab %}

{% addtoblock "js" %}
<script type="text/javascript" src="{{ STATIC_URL }}wiki/js/diffview.js"></script>
<script type="text/javascript">
12

13
    $(document).ready(function() {
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
        $('.accordion input[disabled!="disabled"][type="radio"]').first().attr('checked', 'true');

        $('a.accordion-toggle').click(function(event) {
            event.preventDefault();
            var diffUrl = $(event.target).attr('href');
            var accordionBody = $(this).parentsUntil('.accordion').find('.accordion-body');

            jsonWrapper(diffUrl, function (data) {
                if (!accordionBody.find('.diff-container tbody').length > 0) {
                    accordionBody.parentsUntil('.accordion').find('.progress').show(0 , function() {
                        tbody = pydifferviewer.as_tbody({differ_output: data.diff});
                        accordionBody.find('.diff-container table').append(tbody);
                        if (data.other_changes) {
                            for (var i=0; i < data.other_changes.length; i++) {
                                accordionBody.find('dl').append($('<dt>'+data.other_changes[i][0]+'</dt>' +
                                                                  '<dd>'+data.other_changes[i][1]+'</dd>'  ));
                            }
                        }
                        accordionBody.parentsUntil('.accordion').find('.progress').detach();
                        accordionBody.removeClass('collapse');
                        accordionBody.focus();
                    });
                } else {
                    accordionBody.toggleClass('collapse');
                    if (!accordionBody.hasClass('collapse')) {
                        accordionBody.focus();
                    }
                }
            });
        });
44 45 46 47 48 49 50 51 52 53 54 55 56 57

        $(".previewRevisionButton").each(function () {
            accessible_modal("#"+this.id, "#previewRevisionModal .close-modal", "#previewRevisionModal", ".content-wrapper");
        });
        $("#previewRevisionModalBackToHistory").click(function (e) {
            $("#previewRevisionModal .close-modal").click();
            e.preventDefault();
        });

        accessible_modal("#mergeButton", "#mergeModal .close-modal", "#mergeModal", ".content-wrapper");
        $("#mergeModalBackToHistory").click(function (e) {
            $("#mergeModal .close-modal").click();
            e.preventDefault();
        });
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
    });
</script>
{% endaddtoblock %}
{% addtoblock "css" %}
<style type="text/css">
  td.linenumber {
    width: 20px;
  }
  tr.insert td {
    background-color: #DFC;
  }
  tr.delete td {
    background-color: #FDC;
  }
  tr.equal td {
    background-color: #F2F2F2;
  }
75

76 77 78 79 80 81
  .diff-container td {
    white-space: pre; font-family: monospace;
  }
  .diff-container td,
  .diff-container th {
    padding: 2px 7px;
82
    border-right: 1px solid #DDD;
83 84 85 86 87 88
  }
  .diff-container td:last-child,
  .diff-container th:last-child {
    border-right: none;
  }
  .diff-container table {
89
    border-top: 1px solid #DDD;
90 91 92 93
  }
</style>
{% endaddtoblock %}

94 95 96
<p class="lead">
  {% trans "Click each revision to see a list of edited lines. Click the Preview button to see how the article looked at this stage. At the bottom of this page, you can change to a particular revision or merge an old revision with the current one." %}
</p>
97

98
<form method="GET" name="revisions_form">
99 100 101 102 103
  <div class="tab-content" style="overflow: visible;">
    {% for revision in revisions %}
      <div class="accordion" id="accordion{{ revision.revision_number }}">
        <div class="accordion-group">
          <div class="accordion-heading">
104
            <a class="accordion-toggle" style="float: left;" href="{% url 'wiki:diff' revision.id %}">
105
              <i class="icon-plus"></i>
106
              {% include "wiki/includes/revision_info.html" with current_revision=article.current_revision %}
107 108 109 110
              <div style="color: #CCC;">
                <small>
                {% if revision.user_message %}
                  {{ revision.user_message }}
111 112
                {% elif revision.automatic_log %}
                  {{ revision.automatic_log }}
113
                {% else %}
114
                  {% trans "(no log message)" %}
115 116 117 118 119 120 121 122
                {% endif %}
                </small>
              </div>
            </a>
            <div class="progress progress-striped active" style="display: none; width: 40px; float: left; margin-top: 7px; margin-bottom: -7px;">
              <div class="bar" style="width: 100%;"></div>
            </div>
            <div class="pull-right" style="vertical-align: middle; margin: 8px 3px;">
123
              {% if not revision == article.current_revision %}
124 125 126 127 128 129 130 131 132
                <a class="btn previewRevisionButton"
                    id="previewRevisionButton{{ revision.revision_number }}"
                    href="#previewRevisionModal" rel="leanModal"
                    onclick="
                      document.revisions_form.target='previewWindow';
                      document.revisions_form.r.value='{{ revision.id }}';
                      document.revisions_form.action='{% url 'wiki:preview_revision' article.id %}';
                      $('#previewRevisionModal .switch-to-revision').attr('href', '{% url 'wiki:change_revision' path=urlpath.path article_id=article.id revision_id=revision.id %}');
                      document.revisions_form.submit();">
133
                  <i class="icon-eye-open"></i>
134 135 136 137 138 139 140 141 142 143 144
                  {% trans "Preview this revision" %}
                </a>

                {% if article|can_write:user %}
                  <input type="radio" style="margin: 0 10px;" value="{{ revision.id }}" name="revision_id"
                    switch-button-href="{% url 'wiki:change_revision' path=urlpath.path revision_id=revision.id %}"
                    merge-button-href="{% url 'wiki:merge_revision_preview' article_id=article.id revision_id=revision.id %}"
                    merge-button-commit-href="{% url 'wiki:merge_revision' path=urlpath.path article_id=article.id revision_id=revision.id %}"
                  />
                {% endif %}

145
              {% endif %}
146

147 148 149
            </div>
            <div style="clear: both"></div>
          </div>
150
          <div id="collapse{{ revision.revision_number }}" class="accordion-body collapse" tabindex="0">
151 152 153 154 155 156 157 158
            <div class="accordion-inner diff-container" style="padding: 0;">
              <dl class="dl-horizontal">
                <dt>{% trans "Auto log:" %}</dt>
                <dd>{{ revision.automatic_log|default:"-"|linebreaksbr }}</dd>
              </dl>
              <table class="table table-condensed" style="margin: 0; border-collapse: collapse;">
                <thead>
                  <tr>
159 160 161
                    <th scope="col" class="linenumber">{% if revision.previous_revision %}#{{revision.previous_revision.revision_number}}{% endif %}</th>
                    <th scope="col" class="linenumber">#{{revision.revision_number}}</th>
                    <th scope="col">{% trans "Change" %}</th>
162 163 164 165 166 167 168 169
                  </tr>
                </thead>
              </table>
            </div>
          </div>
        </div>
      </div>
    {% endfor %}
170

171
    {% include "wiki/includes/pagination.html" %}
172

173 174 175 176
    {% if revisions.count > 1 %}
    <div class="form-actions">
      <div class="pull-right">
        {% if article|can_write:user %}
177 178 179 180 181 182
          <a class="btn btn-large" id="mergeButton" href="#mergeModal" rel="leanModal"
            onclick="
              document.revisions_form.target='mergeWindow';
              document.revisions_form.action=$('input[type=radio]:checked').attr('merge-button-href');
              $('.merge-revision-commit').attr('href', $('input[type=radio]:checked').attr('merge-button-commit-href'));
              document.revisions_form.submit();">
183
            <i class="icon-random"></i>
184
            {% trans "Merge selected with current..." %}
185
          </a>
186 187
        {% else %}
          <button type="submit" disabled="true" name="preview" value="1" class="btn btn-large">
188
            <i class="icon-lock"></i>
189 190 191
            {% trans "Merge selected with current..." %}
          </button>
        {% endif %}
192
        <button type="submit" name="save" value="1" class="btn btn-large btn-primary" onclick="this.form.action=$('input[type=radio]:checked').attr('switch-button-href')">
193
          <i class="icon-flag"></i>
194 195 196 197 198
          {% trans "Switch to selected version" %}
        </button>
      </div>
    </div>
    {% endif %}
199

200 201
  </div>
  <input type="hidden" name="r" value="" />
202 203
  <section id="previewRevisionModal" class="modal" aria-hidden="true">
    <div class="inner-wrapper" role="dialog" aria-labelledby="preview-title">
204
      <button class="close-modal"><i class="icon-remove"></i> <span class="sr">{% trans 'Close' %}</span></button>
205 206

      <header>
207
        <h2 id="preview-title">{% trans "Wiki Revision Preview" %}<span class="sr">, {% trans "window open" %}</span></h2>
208 209 210 211 212 213 214
        <hr/>
      </header>
      <div class="modal-body">
        <iframe name="previewWindow"></iframe>
      </div>
      <div class="modal-footer">
      <a id="previewRevisionModalBackToHistory" href="#" class="btn btn-large" data-dismiss="modal">
215
        <i class="icon-circle-arrow-left"></i>
216 217 218
        {% trans "Back to history view" %}
      </a>
      {% if article|can_write:user %}
219
        <a href="#" class="btn btn-large btn-primary switch-to-revision">
220
          <i class="icon-flag"></i>
221 222
          {% trans "Switch to this version" %}
        </a>
223 224
      {% else %}
        <a href="#" class="btn btn-large btn-primary disabled">
225
          <i class="icon-lock"></i>
226
          {% trans "Switch to this version" %}
227
        </a>
228
      {% endif %}
229
      </div>
230
    </div>
231
  </section>
232

233 234
  <section id="mergeModal" class="modal" aria-hidden="true">
    <div class="inner-wrapper" role="dialog" aria-labelledby="merge-title">
235
      <button class="close-modal"><i class="icon-remove"></i> <span class="sr">{% trans 'Close' %}</span></button>
236 237

      <header>
238
        <h2 id="merge-title">{% trans "Merge Revision" %}<span class="sr">, {% trans "window open" %}</span></h2>
239 240 241 242
        <hr/>
      </header>
      <div class="modal-header">
        <h1>{% trans "Merge with current" %}</h1>
243
        <p class="lead"><i class="icon-info-sign"></i> {% trans "When you merge a revision with the current, all data will be retained from both versions and merged at its approximate location from each revision." %} <strong>{% trans "After this, it's important to do a manual review." %}</strong></p>
244 245 246 247 248 249
      </div>
      <div class="modal-body">
        <iframe name="mergeWindow"></iframe>
      </div>
      <div class="modal-footer">
        <a id="mergeModalBackToHistory" href="#" class="btn btn-large" data-dismiss="modal">
250
          <i class="icon-circle-arrow-left"></i>
251 252 253 254
          {% trans "Back to history view" %}
        </a>
        {% if article|can_write:user %}
        <a href="#" class="btn btn-large btn-primary merge-revision-commit">
255
          <i class="icon-file"></i>
256
          {% trans "Create new merged version" %}
257 258 259
        </a>
        {% else %}
          <a href="#" class="btn btn-large btn-primary disabled">
260
            <i class="icon-lock"></i>
261 262 263 264
            {% trans "Create new merged version" %}
          </a>
        {% endif %}
      </div>
265 266 267 268
    </div>
  </div>
</form>

269
{% endblock %}