Merge branch 'zuber-view-refactor'
authorŁukasz Rekucki <lrekucki@gmail.com>
Mon, 28 Sep 2009 16:44:31 +0000 (18:44 +0200)
committerŁukasz Rekucki <lrekucki@gmail.com>
Mon, 28 Sep 2009 16:44:31 +0000 (18:44 +0200)
12 files changed:
apps/api/handlers/library_handlers.py
apps/api/response.py
apps/api/utils.py
apps/explorer/templatetags/explorer_tags.py
apps/explorer/views.py
apps/wysiwyg/views.py
lib/wlrepo/mercurial_backend/library.py
project/static/css/filelist.css
project/static/css/master.css
project/templates/explorer/file_list.html
project/templates/explorer/file_tree_part.html [new file with mode: 0644]
project/templates/wysiwyg.html

index b30f2e7..591d4e9 100644 (file)
@@ -175,6 +175,7 @@ class DocumentHandler(BaseHandler):
             'html_url': reverse('dochtml_view', args=[udoc.id,udoc.revision]),
             'text_url': reverse('doctext_view', args=[udoc.id,udoc.revision]),
             'dc_url': reverse('docdc_view', args=[udoc.id,udoc.revision]),
+            #'gallery_url': reverse('docdc_view', args=[udoc.id,udoc.revision]),
             'user_revision': udoc.revision,
             'public_revision': doc.revision,            
         }       
@@ -204,9 +205,6 @@ class DocumentHTMLHandler(BaseHandler):
         except RevisionNotFound:
             return response.EntityNotFound().django_response()
 
-
-
-
 #
 # Document Text View
 #
@@ -214,6 +212,7 @@ class DocumentHTMLHandler(BaseHandler):
 XINCLUDE_REGEXP = r"""<(?:\w+:)?include\s+[^>]*?href=("|')wlrepo://(?P<link>[^\1]+?)\1\s*[^>]*?>"""
 #
 #
+#
 class DocumentTextHandler(BaseHandler):
     allowed_methods = ('GET', 'PUT')
 
@@ -268,13 +267,15 @@ class DocumentTextHandler(BaseHandler):
                     f.write(json.dumps(includes))
                     f.close()
 
+                    lib._fileadd(resolve('parts'))
+
                     # update the parts cache
                     PartCache.update_cache(docid, current.owner,\
                         stored_includes, includes)
 
                 # now that the parts are ok, write xml
                 f = lib._fileopen(resolve('xml'), 'w+')
-                f.write(data)
+                f.write(data.encode('utf-8'))
                 f.close()
 
             ndoc = None
@@ -294,7 +295,9 @@ class DocumentTextHandler(BaseHandler):
                 if ndoc: lib._rollback()
                 raise e        
         except RevisionNotFound, e:
-            return response.EntityNotFound().django_response(e)
+            return response.EntityNotFound(mimetype="text/plain").\
+                django_response(e.message)
+
 
 #
 # Dublin Core handlers
@@ -350,16 +353,15 @@ class DocumentDublinCoreHandler(BaseHandler):
                     "document": ndoc.id,
                     "subview": "dc",
                     "previous_revision": current.revision,
-                    "updated_revision": ndoc.revision
+                    "updated_revision": ndoc.revision,
+                    "url": reverse("docdc_view", args=[ndoc.id, ndoc.revision])
                 }
             except Exception, e:
-                lib._rollback()
+                if ndoc: lib._rollback()
                 raise e
         except RevisionNotFound:
             return response.EntityNotFound().django_response()
 
-
-
 class MergeHandler(BaseHandler):
     allowed_methods = ('POST',)
 
@@ -438,4 +440,4 @@ class MergeHandler(BaseHandler):
             "parent_user_resivion": udoc.revision,
             "parent_revision": doc.revision,
             "revision": udoc.revision,
-        })
\ No newline at end of file
+        })
index a094f9c..0d38a3a 100644 (file)
@@ -22,8 +22,8 @@ class ResponseObject(object):
         elif self._mime == MIME_JSON:
             data = json.dumps(body, default=lambda o: repr(o) )
         else:
-            data = u"%s\n%s" % (self.MESSAGE, unicode(body))
-            data = data.encode('utf-8')
+            data = u"%s\n%s" % (self.MESSAGE, unicode(body))
+            data = unicode(body).encode('utf-8')
             
         return HttpResponse(content=data, status=self._code, \
                 content_type=self._mime+'; charset=utf-8' )        
index a52e555..93e54be 100644 (file)
@@ -53,8 +53,5 @@ def hglibrary(func):
         l = MercurialLibrary(settings.REPOSITORY_PATH)
         kwargs['lib'] = l
         return func(self, *args, **kwargs)
-    return decorated
-    
-            
-        
+    return decorated                   
 
index a797b3a..98af013 100755 (executable)
@@ -11,4 +11,6 @@ def bookname(fileid):
             ' '.join(s.capitalize() for s in part.split('_'))\
         for part in fileid.split('$'))
 
-
+@register.inclusion_tag('explorer/file_tree_part.html')
+def tree_part(document):
+    return {'document': document}
\ No newline at end of file
index c10e33b..eca439c 100644 (file)
@@ -59,9 +59,16 @@ def ajax_login_required(view):
 @with_repo
 def file_list(request, repo):   
     import api.forms
+    from api.resources import library_resource
+
     bookform = api.forms.DocumentUploadForm()
+
+    # short-circut the api document list
+    doctree = library_resource.handler.read(request)
+    print doctree['documents']
+        
     return direct_to_template(request, 'explorer/file_list.html', extra_context={
-        'files': repo.documents(), 'bookform': bookform,
+        'filetree': doctree['documents'], 'bookform': bookform,
     })
 
 @permission_required('explorer.can_add_files')
index e588c49..81e1690 100644 (file)
@@ -2,4 +2,8 @@
 from django.views.generic.simple import direct_to_template
 
 def index(request):
-    return direct_to_template(request, 'wysiwyg.html', extra_context={})
\ No newline at end of file
+    return direct_to_template(request,
+        'wysiwyg.html', extra_context={
+            'listA': [1,2,3,4],
+            'listB': [5,6,7,8],
+        })
\ No newline at end of file
index 7a33bf3..648ebe9 100644 (file)
@@ -97,11 +97,14 @@ class MercurialLibrary(wlrepo.Library):
 
     def get_revision(self, revid):
         revid = self._sanitize_string(revid)
-        
-        ctx = self._changectx(revid)
+
+        try:
+            ctx = self._changectx(revid)
+        except mercurial.error.RepoError, e:
+            raise wlrepo.RevisionNotFound(revid)
 
         if ctx is None:
-            raise RevisionNotFound(revid)
+            raise wlrepo.RevisionNotFound(revid)
 
         if self._revcache.has_key(ctx):
             return self._revcache[ctx]
@@ -123,7 +126,7 @@ class MercurialLibrary(wlrepo.Library):
         try:
             self._hgrepo[revid]
             return True
-        except error.RepoError:
+        except mercurial.error.RepoError:
             return False
 
     def document_create(self, docid):
index 0e4f2a0..91e9b8d 100755 (executable)
     width: 35%;
 }
 
+ul.file-tree-part {    
+    margin: 0.5em 1em;
+    padding: 0em;
+}
+
+ul.file-tree-part li {
+    list-style: square;    
+    padding: 0em;    
+}
+
+ul.file-tree-part a {
+    padding: 0em;
+}
+
 
 
 
index 8bccbcc..a3857e6 100644 (file)
@@ -37,6 +37,7 @@ body {
     background-color: white;
 }
 
+/*
 ul {
     margin: 20px;
     padding: 0;
@@ -46,7 +47,7 @@ li {
     margin: 0;
     padding: 0;
     list-style: none;
-}
+} */
 
 a {
     text-decoration: none;
index 9628f04..a9b59e4 100644 (file)
@@ -64,12 +64,12 @@ $(function() {
         <input type="reset" value="Wyczyść" id="file-list-reset-button"/>
     </p>
     </form>
-    <div id="file-list">
     {% load explorer_tags %}
-    {% for file in files %}
-    <p title="{{file|bookname}}"><a href="{% url editor_view file %}">{{ file|bookname }}</a></p>
+    <ul class="file-tree-part file-tree-top">
+    {% for file in filetree %}    
+        {% tree_part file %}            
     {% endfor %}
-    </div>
+    </ul>
 </div>
 
 <div id="recent-file-list">
diff --git a/project/templates/explorer/file_tree_part.html b/project/templates/explorer/file_tree_part.html
new file mode 100644 (file)
index 0000000..f65cf28
--- /dev/null
@@ -0,0 +1,13 @@
+{% load explorer_tags %}
+
+<li class="file-tree-entry" title="{{document.name|bookname}}">
+    <a href="{% url editor_view document.name %}">{{ document.name|bookname }}</a>
+    {% if document.parts %}
+    <ul class="file-tree-part">
+        {% for part in document.parts %}
+        {% tree_part part %}
+        {% endfor %}
+    </ul>
+    {% endif %}
+</li>
+
index 409e4f2..ec6eaed 100644 (file)
@@ -1,42 +1,15 @@
 {% extends 'base.html' %}
 
-{% block extrahead %}
-<style type="text/css">
-    #loremIpsum {
-        position: relative;        
-    }
-
-    /* #lorepmIpsum * {
-        position: relative;
-    } */
-
-    .element-overlay {
-        position: absolute;
-        opacity: 1;
-        background: green;
-        z-index: 100;
-        padding: 0px;
-    }
-
-    .element-overlay textarea {
-        opacity: 1;
-        background: white;
-        color: black;
-        border: 1px dashed red;
-        margin: 0px;
-        
-        
-        width: 100%;
-        height: 100%;
-    }
-</style>
-{% endblock %}
-
 {% block maincontent %}
 <h1>Wysiwyg editor</h1>
 <div>This part is not editable!</div>
 <div id="loremIpsum">
 
+ {% for a,b in listA,listB %}
+
+ {{ a }} / {{ b }}
+ {% endfor %}
+
 <p>
 <p>Lorem <b>ipsum</b> dolor sit amet, consectetur adipiscing elit.
     Suspendisse a urna eu enim rutrum elementum nec sed nibh. Quisque sed tortor
 
 <p>Donec semper tempus ante, eget gravida erat varius et. Suspendisse aliquam rutrum nunc ac pulvinar. Aliquam erat volutpat. Nulla consectetur ultricies imperdiet. Nulla tincidunt est vitae augue porttitor a faucibus odio facilisis. In nec nisl odio. Aliquam et libero tortor, eu tincidunt mi. Vivamus suscipit erat sed mi hendrerit fringilla. Integer iaculis tempus nulla, at egestas velit faucibus ut. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Vestibulum vel massa enim. Aliquam erat volutpat. In ligula tortor, fermentum eu suscipit at, posuere vel nunc. Nullam nibh magna, sollicitudin at semper et, mattis ut quam. Curabitur accumsan semper elit ac posuere. Sed sit amet lorem tortor, vel porttitor justo. Fusce odio metus, bibendum ut bibendum sit amet, luctus a ipsum. </p>
 </div>
-{% endblock %}
-
-{% block extrabody %}
-<script type="text/javascript">
-$(function() {
-    var lorem = $('#loremIpsum');
-    
-    var x = $('#loremIpsum *');
-    
-    x.click( function(event)
-    {
-        var e = $(this);
-        $.log("Overlaying element: ", this);        
-        var p = e.offsetParent();
-        var pos = e.position();
-        var marginTop = parseInt(e.css('margin-top'));
-
-        $.log("Offset: ", pos, p);
-        var overlay = $('<div class="element-overlay"><textarea></textarea></div>');
-        var text = $('textarea', overlay);
-        text.val(e.text());
-                
-        p.prepend(overlay);
-        
-        overlay.css({ top: pos.top+marginTop, left: pos.left, width: e.width(), height: e.height()});
-        
-        return false;
-    })
-});
-</script>
 {% endblock %}
\ No newline at end of file