Basic UI support for adding URL items.
authorgfawcett <gfawcett@6d9bc8c9-1ec2-4278-b937-99fde70a366f>
Sun, 11 Jan 2009 04:04:16 +0000 (04:04 +0000)
committergfawcett <gfawcett@6d9bc8c9-1ec2-4278-b937-99fde70a366f>
Sun, 11 Jan 2009 04:04:16 +0000 (04:04 +0000)
Will need some refactoring.

git-svn-id: svn://svn.open-ils.org/ILS-Contrib/servres/trunk@103 6d9bc8c9-1ec2-4278-b937-99fde70a366f

conifer/syrup/views.py
conifer/templates/components/item.xhtml
conifer/templates/course_detail.xhtml
conifer/templates/item_heading_detail.xhtml

index 43a92a4..3ee61b9 100644 (file)
@@ -167,30 +167,50 @@ def item_add(request, course_id, item_id):
     item_type = request.GET.get('item_type')
     assert item_type, 'No item_type parameter was provided.'
 
-    # for the moment, only HEADINGs can be added.
-    assert item_type == 'HEADING', 'Sorry, only HEADINGs can be added right now.'
+    # for the moment, only HEADINGs and URLs can be added.
+    assert item_type in ('HEADING', 'URL'), 'Sorry, only HEADINGs and URLs can be added right now.'
 
     if request.method == 'GET':
-        return g.render('item_add_heading.xhtml', **locals())
+        return g.render('item_add_%s.xhtml' % item_type.lower(),
+                        **locals())
     else:
-        title = request.POST.get('title', '').strip()
-        if not title:
-            return HttpResponseRedirect(request.get_full_path())
+        # fixme, this will need refactoring. But not yet.
+        if item_type == 'HEADING':
+            title = request.POST.get('title', '').strip()
+            if not title:
+                # fixme, better error handling.
+                return HttpResponseRedirect(request.get_full_path())
+            else:
+                item = models.Item(
+                    course=course,
+                    item_type='HEADING',
+                    parent_heading=parent_item,
+                    title=title,
+                    author=request.user.get_full_name(),
+                    activation_date=datetime.now(),
+                    last_modified=datetime.now())
+                item.save()
+                return HttpResponseRedirect(item_url(item))
+        elif item_type == 'URL':
+            title = request.POST.get('title', '').strip()
+            url = request.POST.get('url', '').strip()
+            if not (title or url):
+                # fixme, better error handling.
+                return HttpResponseRedirect(request.get_full_path())
+            else:
+                item = models.Item(
+                    course=course,
+                    item_type='URL',
+                    parent_heading=parent_item,
+                    title=title,
+                    author=request.user.get_full_name(),
+                    activation_date=datetime.now(),
+                    last_modified=datetime.now(),
+                    url = url)
+                item.save()
+                return HttpResponseRedirect(item_url(item) + 'meta/')
         else:
-            # rubber hits road.
-            item = models.Item(
-                course=course,
-                item_type='HEADING',
-                parent_heading=parent_item,
-                title=title,
-                author=request.user.get_full_name(),
-                activation_date=datetime.now(),
-                last_modified=datetime.now())
-            item.save()
-            return HttpResponseRedirect(item_url(item))
-                
-        
-        raise NotImplementedError
+            raise NotImplementedError
     
 def normalize_query(query_string,
                     findterms=re.compile(r'"([^"]+)"|(\S+)').findall,
index d759568..8771778 100644 (file)
        class="nestedtitle">
     <span py:for="n, x in enumerate(hier)"
         style="margin-left: ${n}em;"><a href="${item_url(x)}">${x.title}</a> &bull; </span>
-<h2>${item.title}</h2>
+    <h2>${item.title}</h2>
   </div>
+
+  <ul py:def="add_subs(parent=None)">
+    <li>Add a new item...</li>
+    <ul py:with="prefix = (not parent) and 'item/0/' or ''">
+      <li><a href="${prefix}add?item_type=HEADING">Add subheading</a></li>
+      <li><a href="${prefix}add?item_type=URL">Add URL</a></li>
+      <li><a href="${prefix}add?item_type=ELEC">Add Electronic Document</a></li>
+      <li><a href="${prefix}add?item_type=PHYS">Add Physical Book/Document</a></li>
+    </ul>
+  </ul>
+  
 </html>
index d97f652..4410d6e 100644 (file)
@@ -17,6 +17,6 @@ item_tree = course.item_tree()
       There are no items associated with this course yet.
     </p>
     ${show_tree(course.item_tree())}
-    <ul class="action"><li><a href="item/0/add?item_type=HEADING">Add subheading</a></li></ul>
+    ${add_subs()}
   </body>
 </html>
index 4f27a6b..d2312e4 100644 (file)
@@ -22,6 +22,6 @@ item_tree = course.item_tree(subtree=item)
     <!--   There are no items associated in this subheading. -->
     <!-- </p> -->
     ${show_tree(item_tree)}
-    <ul class="action"><li><a href="add?item_type=HEADING">Add subheading</a></li></ul>
+    ${add_subs(item)}
   </body>
 </html>