src/cm/views/texts.py
changeset 24 c8a95e540b79
parent 12 f69ff46d3240
child 38 be1807d390d4
--- a/src/cm/views/texts.py	Fri Dec 04 14:05:05 2009 +0100
+++ b/src/cm/views/texts.py	Tue Dec 08 16:51:48 2009 +0100
@@ -1,3 +1,4 @@
+from cm.utils.embed import embed_html
 from cm.activity import register_activity
 from cm.client import jsonize, get_filter_datas, edit_comment, remove_comment, \
     add_comment, RequestComplexEncoder, comments_thread, own_notify
@@ -15,7 +16,7 @@
     insert_comment_markers
 from cm.utils.html import cleanup_textarea
 from cm.utils.spannifier import spannify
-from cm.views import get_keys_from_dict, get_text_by_keys_or_404, redirect
+from cm.views import get_keys_from_dict, get_textversion_by_keys_or_404, get_text_by_keys_or_404, redirect
 from cm.views.export import content_export2
 from cm.views.user import AnonUserRoleForm, cm_login
 from difflib import unified_diff
@@ -169,12 +170,12 @@
     
 @has_perm_on_text('can_view_text')
 def text_view(request, key, adminkey=None):
-    
     text = get_text_by_keys_or_404(key)
     register_activity(request, "text_view", text=text)    
+    text_version = text.get_latest_version()
+    embed_code = embed_html(key, 'id="text_view_frame" name="text_view_frame"')
     
-    text_version = text.get_latest_version()
-    template_dict = { 'text' : text, 'text_version' : text_version, 'title' : text_version.title, 'content' : text_version.get_content()}
+    template_dict = { 'embed_code':embed_code, 'text' : text, 'text_version' : text_version, 'title' : text_version.title, 'content' : text_version.get_content()}
     return render_to_response('site/text_view.html', template_dict, context_instance=RequestContext(request))
 
 @has_perm_on_text('can_delete_text')
@@ -188,10 +189,13 @@
     return HttpResponse('') # no redirect because this is called by js
 
 @has_perm_on_text('can_view_text') # only protected by text_view / comment filtering done in view
-def text_view_comments(request, key, adminkey=None):
+def text_view_comments(request, key, version_key=None, adminkey=None):
     text = get_text_by_keys_or_404(key)
-    #TODO: stupid why restrict to latest ? 
-    text_version = text.get_latest_version()
+    if version_key :
+        text_version = get_textversion_by_keys_or_404(version_key, adminkey, key)
+    else :
+        text_version = text.get_latest_version()
+
     comments = get_viewable_comments(request, text_version.comment_set.filter(reply_to__isnull=True),text)
     filter_datas = get_filter_datas(request, text_version, text)
     
@@ -222,6 +226,7 @@
         #print request.POST
     elif request.POST:
         key = request.POST['key']
+        version_key = request.POST['version_key']
 
         text = Text.objects.get(key=key) ;
         #TODO: stupid why restrict to latest ? 
@@ -234,7 +239,7 @@
                 if function_name == 'editComment' :
                     ret = edit_comment(request=request, key=key, comment_key=request.POST['comment_key'])
                 elif function_name == 'addComment' :
-                    ret = add_comment(request=request, key=key)
+                    ret = add_comment(request=request, key=key, version_key=version_key)
                 elif function_name == 'removeComment' :
                     ret = remove_comment(request=request, key=key, comment_key=request.POST['comment_key'])
                     
@@ -398,11 +403,14 @@
                                   context_instance=RequestContext(request))
 
 @has_perm_on_text('can_view_text')
-def text_view_frame(request, key, adminkey=None):
+def text_view_frame(request, key, version_key=None, adminkey=None):
     text = get_text_by_keys_or_404(key)
     
-    text_version = text.get_latest_version()
-    template_dict = {'text' : text}
+    if version_key :
+        text_version = get_textversion_by_keys_or_404(version_key, adminkey, key)
+    else :
+        text_version = text.get_latest_version()
+    template_dict = {'text' : text, 'text_version' : text_version}
     return render_to_response('site/text_view_frame.html',
                               template_dict,
                               context_instance=RequestContext(request))
@@ -441,8 +449,10 @@
             vv2 = None
         paired_versions.append((vv1, vv2, colors_dict.get(vv1.get_name(), '#D9D9D9')))
 
+    embed_code = ""
+    content = ""
     if v1_nid and not v2_nid:
-        content = v1.get_content()
+        embed_code = embed_html(key, 'id="text_view_frame" name="text_view_frame"', v1.key)
     else:
         content = get_uniffied_inner_diff_table(cleanup_textarea(v1.content), cleanup_textarea(v2.content))
 
@@ -455,6 +465,7 @@
                      'version1': v1,
                      'version2': v2,
                      'content' : content,
+                     'embed_code':embed_code,
                      'author_colors' : author_colors,
                      }
     return render_to_response('site/text_history.html', template_dict, context_instance=RequestContext(request))
@@ -563,14 +574,14 @@
     title = _text_diff(text_version_1.title, text_version_2.title)
     return render_to_response('site/text_view.html', {'text' : text, 'text_version_1' : text_version_1, 'text_version_2' : text_version_2, 'title' : title, 'content' : content}, context_instance=RequestContext(request))
 
-
-@has_perm_on_text('can_view_text')
-def text_version(request, key, id_version):
-    text = get_text_by_keys_or_404(key)
-    text_version = TextVersion.objects.get(pk=id_version)
-    # TODO : assert text_v in text ...
-    # TODO : do not use db id    
-    return render_to_response('site/text_view.html', {'text' : text, 'text_version' : text_version, 'title' : text_version.title, 'content' : text_version.get_content()}, context_instance=RequestContext(request))
+# commented out, unused suspected 
+#@has_perm_on_text('can_view_text')
+#def text_version(request, key, id_version):
+#    text = get_text_by_keys_or_404(key)
+#    text_version = TextVersion.objects.get(pk=id_version)
+#    # TODO : assert text_v in text ...
+#    # TODO : do not use db id    
+#    return render_to_response('site/text_view.html', {'text' : text, 'text_version' : text_version, 'title' : text_version.title, 'content' : text_version.get_content()}, context_instance=RequestContext(request))
 
 class EditTextForm(ModelForm):
     title = forms.CharField(label=_("Title"), widget=forms.TextInput)