Merge branch 'master' into with-dvcs
authorRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Fri, 19 Aug 2011 11:20:03 +0000 (13:20 +0200)
committerRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Fri, 19 Aug 2011 11:20:03 +0000 (13:20 +0200)
1  2 
apps/wiki/templates/wiki/tabs/summary_view.html
redakcja/settings/compress.py
redakcja/static/js/wiki/wikiapi.js
redakcja/static/js/wiki/xslt.js

@@@ -1,4 -1,5 +1,4 @@@
  {% load i18n %}
 -{% load wiki %}
  <div id="summary-view-editor" class="editor" style="display: none">
      <!-- <div class="toolbar">
      </div> -->
@@@ -8,24 -9,28 +8,28 @@@
                <h2>
                        <label for="title">{% trans "Title" %}:</label>
                        <span data-ui-editable="true" data-edit-target="meta.displayTitle"
 -                      >{{ document.name|wiki_title }}</span>
 +                      >{{ chunk.pretty_name }}</span>
                </h2>
                <p>
                        <label>{% trans "Document ID" %}:</label>
 -                      <span>{{ document.name }}</span>
 +                      <span>{{ chunk.book.slug }}/{{ chunk.slug }}</span>
                </p>
                <p>
                        <label>{% trans "Current version" %}:</label>
 -                      {{ document_info.revision }} ({{document_info.date}})
 +                      {{ chunk.revision }} ({{ chunk.head.created_at }})
                <p>
                        <label>{% trans "Last edited by" %}:</label>
 -                      {{document_info.author}}
 +                      {{ chunk.head.author }}
                </p>
                <p>
                        <label for="gallery">{% trans "Link to gallery" %}:</label>
                        <span data-ui-editable="true" data-edit-target="meta.galleryLink"
 -                      >{{ document_meta.gallery}}</span>
 +                      >{{ chunk.book.gallery }}</span>
                </p>
+               <p>
+                   <label>{% trans "Characters in document" %}:</label>
+                   <span id="charcount"></span> (<span id="charcount_pages"></span> {% trans "pages" %}<span id="charcount_untagged">, {% trans "untagged" %}</span>)
+               </p>
  
                <p><button type="button" id="publish_button">{% trans "Publish" %}</button></p>
        </div>
@@@ -30,6 -30,7 +30,7 @@@ COMPRESS_JS = 
                  'js/lib/jquery/jquery.autocomplete.js',
                  'js/lib/jquery/jquery.blockui.js',
                  'js/lib/jquery/jquery.elastic.js',
+                 'js/lib/jquery/jquery.xmlns.js',
                  'js/button_scripts.js',
                  'js/slugify.js',
  
@@@ -44,7 -45,7 +45,7 @@@
                  # dialogs
                  'js/wiki/dialog_save.js',
                  'js/wiki/dialog_revert.js',
 -                'js/wiki/dialog_addtag.js',
 +                'js/wiki/dialog_pubmark.js',
  
                  # views
                  'js/wiki/view_history.js',
         */
        function reverse() {
                var vname = arguments[0];
 -              var base_path = "/documents";
 +              var base_path = "/editor";
  
                if (vname == "ajax_document_text") {
 -                      var path = "/" + arguments[1] + "/text";
 +                      var path = "/text/" + arguments[1] + '/';
  
                if (arguments[2] !== undefined)
 -                              path += "/" + arguments[2];
 +                              path += arguments[2] + '/';
  
                        return base_path + path;
                }
  
          if (vname == "ajax_document_revert") {
 -            return base_path + "/" + arguments[1] + "/revert";
 +            return base_path + "/revert/" + arguments[1] + '/';
          }
  
  
                if (vname == "ajax_document_history") {
  
 -                      return base_path + "/" + arguments[1] + "/history";
 +                      return base_path + "/history/" + arguments[1] + '/';
                }
  
                if (vname == "ajax_document_gallery") {
  
 -                      return base_path + "/" + arguments[1] + "/gallery";
 +                      return base_path + "/gallery/" + arguments[1] + '/';
                }
  
                if (vname == "ajax_document_diff")
 -                      return base_path + "/" + arguments[1] + "/diff";
 +                      return base_path + "/diff/" + arguments[1] + '/';
  
          if (vname == "ajax_document_rev")
 -            return base_path + "/" + arguments[1] + "/rev";
 +            return base_path + "/rev/" + arguments[1] + '/';
  
 -              if (vname == "ajax_document_addtag")
 -                      return base_path + "/" + arguments[1] + "/tags";
 -
 -              if (vname == "ajax_publish")
 -                      return base_path + "/" + arguments[1] + "/publish";
 +              if (vname == "ajax_document_pubmark")
 +                      return base_path + "/pubmark/" + arguments[1] + '/';
  
                console.log("Couldn't reverse match:", vname);
                return "/404.html";
         */
        function WikiDocument(element_id) {
                var meta = $('#' + element_id);
 -              this.id = meta.attr('data-document-name');
 +              this.id = meta.attr('data-book') + '/' + meta.attr('data-chunk');
  
                this.revision = $("*[data-key='revision']", meta).text();
                this.readonly = !!$("*[data-key='readonly']", meta).text();
  
                this.galleryLink = $("*[data-key='gallery']", meta).text();
 +
 +        var diff = $("*[data-key='diff']", meta).text();
 +        diff = diff.split(',');
 +        if (diff.length == 2 && diff[0] < diff[1])
 +            this.diff = diff;
 +        else if (diff.length == 1) {
 +            diff = parseInt(diff);
 +            if (diff != NaN)
 +                this.diff = [diff - 1, diff];
 +        }
 +
                this.galleryImages = [];
                this.text = null;
                this.has_local_changes = false;
                        data[this.name] = this.value;
                });
  
 -              var metaComment = '<!--';
 -              metaComment += '\n\tgallery:' + self.galleryLink;
 -              metaComment += '\n-->\n'
 -
 -              data['textsave-text'] = metaComment + self.text;
 +              data['textsave-text'] = self.text;
  
                $.ajax({
                        url: reverse("ajax_document_text", self.id),
                        }
                });
        };
 -      WikiDocument.prototype.setTag = function(params) {
 +
 +      WikiDocument.prototype.pubmark = function(params) {
                params = $.extend({}, noops, params);
                var self = this;
                var data = {
 -                      "addtag-id": self.id,
 +                      "pubmark-id": self.id,
                };
  
                /* unpack form */
                });
  
                $.ajax({
 -                      url: reverse("ajax_document_addtag", self.id),
 +                      url: reverse("ajax_document_pubmark", self.id),
                        type: "POST",
                        dataType: "json",
                        data: data,
                });
        };
  
+     WikiDocument.prototype.getLength = function(params) {
+         var xml = this.text.replace(/\/(\s+)/g, '<br />$1');
+         var parser = new DOMParser();
+         var doc = parser.parseFromString(xml, 'text/xml');
+         var error = $('parsererror', doc);
+         if (error.length > 0) {
+             throw "Not an XML document.";
+         }
+         $.xmlns["rdf"] = "http://www.w3.org/1999/02/22-rdf-syntax-ns#"; 
+         $('rdf|RDF, motyw, pa, pe, pr, pt', doc).remove();
+         var text = $(doc).text();
+         text = $.trim(text.replace(/\s{2,}/g, ' '));
+         return text.length;
+     }
        $.wikiapi.WikiDocument = WikiDocument;
  })(jQuery);
@@@ -17,7 -17,7 +17,7 @@@ function withStylesheets(code_block, on
      if (!xml2htmlStylesheet) {
        $.blockUI({message: 'Ładowanie arkuszy stylów...'});
        $.ajax({
 -              url: STATIC_URL + 'xsl/wl2html_client.xsl?20110112',
 +              url: STATIC_URL + 'xsl/wl2html_client.xsl?20110520',
                dataType: 'xml',
                timeout: 10000,
                success: function(data) {
@@@ -40,7 -40,7 +40,7 @@@ function withThemes(code_block, onError
  {
      if (typeof withThemes.canon == 'undefined') {
          $.ajax({
 -            url: '/themes',
 +            url: '/editor/themes',
              dataType: 'text',
              success: function(data) {
                  withThemes.canon = data.split('\n');
@@@ -61,7 -61,7 +61,7 @@@
  function xml2html(options) {
      withStylesheets(function() {
          var xml = options.xml.replace(/\/(\s+)/g, '<br />$1');
-         xml = xml.replace(/([^a-zA-Z0-9ąćęłńóśźżĄĆĘŁŃÓŚŹŻ\s<>«»\\*_!,:;?%."'=#()\/-]+)/g, '<alien>$1</alien>');
+         xml = xml.replace(/([^a-zA-Z0-9ąćęłńóśźżĄĆĘŁŃÓŚŹŻ\s<>«»\\*_!,:;?&%."'=#()\/-]+)/g, '<alien>$1</alien>');
          var parser = new DOMParser();
          var serializer = new XMLSerializer();
          var doc = parser.parseFromString(xml, 'text/xml');
@@@ -85,7 -85,7 +85,7 @@@
              source.text('');
              options.error(error.text(), source_text);
          } else {
 -            options.success(doc.firstChild);
 +            options.success(doc.childNodes);
  
              withThemes(function(canonThemes) {
                  if (canonThemes != null) {
@@@ -255,11 -255,6 +255,11 @@@ HTMLSerializer.prototype.serialize = fu
                                self.result += text_buffer;
                                text_buffer = token.node.nodeValue;
                                break;
 +            case COMMENT_NODE:
 +                self.result += text_buffer;
 +                text_buffer = '';
 +                self.result += '<!--' + token.node.nodeValue + '-->';
 +                break;
                };
        };
      self.result += text_buffer;