dragging overhault
authorMarcin Koziej <marcin.koziej@nowoczesnapolska.org.pl>
Wed, 16 Jan 2013 15:54:05 +0000 (16:54 +0100)
committerMarcin Koziej <marcin.koziej@nowoczesnapolska.org.pl>
Wed, 16 Jan 2013 15:54:05 +0000 (16:54 +0100)
librarian/pyhtml.py

index d3314cc..2cbc678 100644 (file)
@@ -6,7 +6,7 @@
 from lxml import etree
 from librarian import OutputFile, RDFNS, DCNS
 from xmlutils import Xmill, tag, tagged, ifoption
 from lxml import etree
 from librarian import OutputFile, RDFNS, DCNS
 from xmlutils import Xmill, tag, tagged, ifoption
+import random 
 
 class EduModule(Xmill):
     def __init__(self, *args):
 
 class EduModule(Xmill):
     def __init__(self, *args):
@@ -218,8 +218,29 @@ Overrides the returned content default handle_pytanie
 
 
 class Luki(Excercise):
 
 
 class Luki(Excercise):
+    def handle_pytanie(self, element):
+        qpre, qpost = super(Luki, self).handle_pytanie(element)
+
+        luki = list(enumerate(element.xpath("//luka")))
+        luki_html = ""
+        i = 0
+        random.shuffle(luki)
+        for (i, luka) in luki:
+            i += 1
+            luka_html = luka.text + \
+                ''.join([etree.tostring(n, encoding=unicode) for n in luka])
+            luki_html += u'<span class="draggable question-piece" data-no="%d">%s</span>' % (i, luka_html)
+        self.words_html = '<div class="words">%s</div>' % luki_html
+        
+        return qpre, qpost
+
+    def handle_opis(self, element):
+        pre, post = super(Luki, self).handle_opis(element)
+        return pre, self.words_html + post
+                
     def handle_luka(self, element):
     def handle_luka(self, element):
-        return '<input type="text" class="luka question-piece" data-solution="%s"></input>' % element.text
+        self.piece_counter += 1
+        return '<span class="placeholder" data-solution="%d"></span>' % self.piece_counter
 
 
 class Zastap(Excercise):
 
 
 class Zastap(Excercise):
@@ -248,13 +269,17 @@ class Przyporzadkuj(Excercise):
         return pre, post + '<br class="clr"/>'
 
     def handle_punkt(self, element):
         return pre, post + '<br class="clr"/>'
 
     def handle_punkt(self, element):
+        self.piece_counter += 1
         print "in punkt %s %s" % (element.attrib, self.options)
 
         if self.options['subject']:
         print "in punkt %s %s" % (element.attrib, self.options)
 
         if self.options['subject']:
-            return '<li data-solution="%(rozw)s" class="question-piece draggable">' % element.attrib, '</li>'
+            return '<li data-solution="%s" data-no="%s" class="question-piece draggable">' % (element.attrib['rozw'], self.piece_counter), '</li>'
+        
         elif self.options['predicate']:
             print etree.tostring(element, encoding=unicode)
         elif self.options['predicate']:
             print etree.tostring(element, encoding=unicode)
-            return '<li data-predicate="%(nazwa)s">' % element.attrib, '<ul class="subjects droppable"></ul></li>'
+            placeholders = u'<li class="placeholder multiple"/>'
+            return '<li data-predicate="%(nazwa)s">' % element.attrib, '<ul class="subjects">' + placeholders + '</ul></li>'
+        
         else:
             return super(Przyporzadkuj, self).handle_punkt(element)
 
         else:
             return super(Przyporzadkuj, self).handle_punkt(element)