# HG changeset patch # User gibus # Date 1344253335 -7200 # Node ID b7a092a52eae1cc706d577e8f5c1272d9e448495 # Parent 1d314f629611723db0af0c659fa0b0d5e92d5e10 Cleaned export. diff -r 1d314f629611 -r b7a092a52eae README.txt --- a/README.txt Tue Jul 31 16:37:23 2012 +0200 +++ b/README.txt Mon Aug 06 13:42:15 2012 +0200 @@ -34,6 +34,7 @@ - python development headers - python setuptools - python pexpect +- python cssutils - pandoc - abiword (or headless openoffice and python uno) - git @@ -43,7 +44,7 @@ Installation (development install) ============ 1. Install python2.5+ and all required libraries - (ubuntu users : 'sudo apt-get install python python-magic python-setuptools python-uno libyaml-0-1 python-yaml python-dev git-core python-utidylib python-pexpect') + (ubuntu users : 'sudo apt-get install python python-magic python-setuptools python-uno libyaml-0-1 python-yaml python-dev git-core python-utidylib python-pexpect python-cssutils') 2. Install pandoc (ubuntu users : 'sudo apt-get install pandoc') 3. Install abiword @@ -137,6 +138,8 @@ - python-uno - python-utidylib - python-yaml +- python-pexpect +- python-cssutils Icons ----- diff -r 1d314f629611 -r b7a092a52eae src/cm/converters/abi_converters.py --- a/src/cm/converters/abi_converters.py Tue Jul 31 16:37:23 2012 +0200 +++ b/src/cm/converters/abi_converters.py Mon Aug 06 13:42:15 2012 +0200 @@ -270,7 +270,10 @@ Add an HTML header to an HTML body """ - return """ + if ' @@ -281,3 +284,24 @@ """ %body + # Adds some style to fix Abiword default margins for paragraphs. + from BeautifulSoup import BeautifulSoup + import cssutils + soup = BeautifulSoup(full_html) + for p in soup.findAll(['p', 'div', 'ul', 'ol', 'dl']): + try: + css = p['style'] + s = cssutils.parseStyle(css) + if s.getProperty('margin') == None: + if s.getProperty('margin-top') == None: + s.setProperty('margin-top', '10pt') + if s.getProperty('margin-bottom') == None: + s.setProperty('margin-bottom', '10pt') + p['style'] = s.cssText + + except KeyError: + p['style'] = 'margin-top: 10pt; margin-bottom: 10pt;'; + + # for some reason having DOCTYPE declaration makes soup unhappy + output = re.sub(r']*>)>', r'\1', unicode(soup)) + return output diff -r 1d314f629611 -r b7a092a52eae src/cm/locale/bg/LC_MESSAGES/djangojs.po --- a/src/cm/locale/bg/LC_MESSAGES/djangojs.po Tue Jul 31 16:37:23 2012 +0200 +++ b/src/cm/locale/bg/LC_MESSAGES/djangojs.po Mon Aug 06 13:42:15 2012 +0200 @@ -256,6 +256,10 @@ msgid "download ebook (.epub)" msgstr "Изтегляне на ebook (.epub)" +#: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:21 +msgid "download XML file for re-importing text and comments" +msgstr "изтеглите XML файл за повторен внос текст и коментари" + #: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:13 msgid "Print text" msgstr "Отпечатване на текстa" diff -r 1d314f629611 -r b7a092a52eae src/cm/locale/en/LC_MESSAGES/djangojs.po --- a/src/cm/locale/en/LC_MESSAGES/djangojs.po Tue Jul 31 16:37:23 2012 +0200 +++ b/src/cm/locale/en/LC_MESSAGES/djangojs.po Mon Aug 06 13:42:15 2012 +0200 @@ -253,6 +253,10 @@ msgid "download ebook (.epub)" msgstr "" +#: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:21 +msgid "download XML file for re-importing text and comments" +msgstr "" + #: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:13 msgid "Print text" msgstr "" diff -r 1d314f629611 -r b7a092a52eae src/cm/locale/es/LC_MESSAGES/djangojs.po --- a/src/cm/locale/es/LC_MESSAGES/djangojs.po Tue Jul 31 16:37:23 2012 +0200 +++ b/src/cm/locale/es/LC_MESSAGES/djangojs.po Mon Aug 06 13:42:15 2012 +0200 @@ -257,6 +257,10 @@ msgid "download ebook (.epub)" msgstr "descargar archivo en formato ebook (.epub)" +#: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:21 +msgid "download XML file for re-importing text and comments" +msgstr "descargar archivo XML para la re-importación de texto y comentarios" + #: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:13 msgid "Print text" msgstr "Imprimir texto" diff -r 1d314f629611 -r b7a092a52eae src/cm/locale/fr/LC_MESSAGES/djangojs.po --- a/src/cm/locale/fr/LC_MESSAGES/djangojs.po Tue Jul 31 16:37:23 2012 +0200 +++ b/src/cm/locale/fr/LC_MESSAGES/djangojs.po Mon Aug 06 13:42:15 2012 +0200 @@ -259,6 +259,10 @@ msgid "download ebook (.epub)" msgstr "télécharger un ebook (.epub)" +#: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:21 +msgid "download XML file for re-importing text and comments" +msgstr "télécharger le fichier XML pour re-importer le texte et les commentaires" + #: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:13 msgid "Print text" msgstr "Impression du texte" diff -r 1d314f629611 -r b7a092a52eae src/cm/locale/no/LC_MESSAGES/djangojs.po --- a/src/cm/locale/no/LC_MESSAGES/djangojs.po Tue Jul 31 16:37:23 2012 +0200 +++ b/src/cm/locale/no/LC_MESSAGES/djangojs.po Mon Aug 06 13:42:15 2012 +0200 @@ -258,6 +258,10 @@ msgid "download ebook (.epub)" msgstr "last ned fil i ebok (.epub)" +#: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:21 +msgid "download XML file for re-importing text and comments" +msgstr "last ned XML-fil for re-importere tekst og kommentarer" + #: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:13 msgid "Print text" msgstr "Skriv ut tekst" diff -r 1d314f629611 -r b7a092a52eae src/cm/locale/pt_BR/LC_MESSAGES/djangojs.po --- a/src/cm/locale/pt_BR/LC_MESSAGES/djangojs.po Tue Jul 31 16:37:23 2012 +0200 +++ b/src/cm/locale/pt_BR/LC_MESSAGES/djangojs.po Mon Aug 06 13:42:15 2012 +0200 @@ -255,6 +255,10 @@ msgid "download ebook (.epub)" msgstr "baixar arquivo ebook (.epub)" +#: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:21 +msgid "download XML file for re-importing text and comments" +msgstr "baixar arquivo XML para a re-importação o texto e comentários" + #: media/js/client/f_client-min.js:1 media/js/client/f_printDialog.js:13 msgid "Print text" msgstr "Imprimir texto" diff -r 1d314f629611 -r b7a092a52eae src/cm/media/js/client/f_client-min.js --- a/src/cm/media/js/client/f_client-min.js Tue Jul 31 16:37:23 2012 +0200 +++ b/src/cm/media/js/client/f_client-min.js Mon Aug 06 13:42:15 2012 +0200 @@ -1,1 +1,1 @@ -gFormats=[{actions:["print"],extension:"html",label:gettext("print from the browser")},{actions:["export"],extension:"html",label:gettext("download html file (.html)")},{actions:["print","export"],extension:"markdown",label:gettext("download markdown file (.mkd)")},{actions:["print","export"],extension:"pdf",label:gettext("download portable object format file (.pdf)")},{actions:["print","export"],extension:"latex",label:gettext("download latex file (.tex)")},{actions:["print","export"],extension:"odt",label:gettext("download open document file (.odt)")},{actions:["print","export"],extension:"doc",label:gettext("download microsoft word file (.doc)")},{actions:["print","export"],extension:"docx",label:gettext("download microsoft word 2007 file (.docx)")}];var pandoc_version_ary=sv_pandoc_version.split(".");if(parseInt(pandoc_version_ary[0])>1||(parseInt(pandoc_version_ary[0])==1&&parseInt(pandoc_version_ary[1])>8)){gFormats.push({actions:["print","export"],extension:"epub",label:gettext("download ebook (.epub)")});}gActions={print:{dialogTitle:gettext("Print text"),chooseFormatLabel:gettext("How do you want to print?"),defaultMethod:"pdf",defaultWithColors:"no",defaultWhichComments:"all"},"export":{dialogTitle:gettext("Export text"),chooseFormatLabel:gettext("Choose file format"),defaultMethod:"pdf",defaultWithColors:"no",defaultWhichComments:"all"}};gCurrentAction=null;_populateMethod=function(g){var f=$("#p_method").val();$("#p_method").html("");for(var d=0,c=gFormats.length;d"+gFormats[d]["label"]+"").appendTo("#p_method");}}}if(f){$("#p_method").val(f);}else{$("#p_method").val(gActions[gCurrentAction]["defaultMethod"]);}};_populateMarkersColorsChoice=function(b){var a=$("#p_color").val();$("#p_color").html("");$("").appendTo("#p_color");$("").appendTo("#p_color");if(a){$("#p_color").val(a);}else{$("#p_color").val(gActions[gCurrentAction]["defaultWithColors"]);}};_populateWhichComments=function(){var c=$("#p_comments").val();$("#p_comments").html("");var a=interpolate(gettext("all (%(nb_comments)s)"),{nb_comments:frames.text_view_comments.gDb.getCommentsNb(true)},true);var b=interpolate(gettext("current filtered ones (%(nb_comments)s)"),{nb_comments:frames.text_view_comments.gDb.getCommentsNb(false)},true);$("").appendTo($("#p_comments"));$("").appendTo($("#p_comments"));$("").appendTo($("#p_comments"));if(c){$("#p_comments").val(c);}else{$("#p_comments").val(gActions[gCurrentAction]["defaultWhichComments"]);}};_manageMarkersColorsChoice=function(){var c=$("#p_method").val();var b=$("#p_comments").val();var a;if(gCurrentAction=="print"){a=((b=="none")||(c=="markdown")||(c=="html"));}if(gCurrentAction=="export"){a=((b=="none")||(c=="markdown"));}if(a){$("#p_color").val("no");}$("#p_color").attr("disabled",a);};_initPrintDialog=function(){$("#p_comments").add($("#p_method")).change(function(){_manageMarkersColorsChoice();_prepareOpenInNewWindow();});var a={};a[gettext("Go !")]=function(){var d=$("#p_comments").val();var c=$("#p_color").val();var e=$("#p_method").val();var b=(gCurrentAction=="export")?"1":(e=="html")?"0":"1";var f=$("#print_export_form").attr("target_action").replace(/FoRmAt/,e).replace(/DoWnLoAd/,b).replace(/WhIcHCoMmEnT/,d).replace(/WiThCoLoR/,c);$("#print_export_form").attr("action",f);document.print_export_form.submit();$(this).dialog("close");};a[gettext("Cancel")]=function(){$(this).dialog("close");};$("#dialog_print_export").dialog({bgiframe:true,autoOpen:false,width:450,modal:true,buttons:a,close:function(){}});};openPrintDialog=function(){_openPrintExportDialog("print");};openExportDialog=function(){_openPrintExportDialog("export");};_prepareOpenInNewWindow=function(){var a=$("#p_method").val();if((a=="html")&&(gCurrentAction=="print")){$("#print_export_form").attr("target","_blank");}else{$("#print_export_form").removeAttr("target");}};_openPrintExportDialog=function(a){gCurrentAction=a;$("#ui-dialog-title-dialog_print_export").html(gActions[gCurrentAction]["dialogTitle"]);$("#how").html(gActions[gCurrentAction]["chooseFormatLabel"]);$("#print_export_action").val(a);_populateWhichComments();_populateMarkersColorsChoice();_populateMethod();_manageMarkersColorsChoice();_prepareOpenInNewWindow();$("#dialog_print_export").dialog("open");};onFadeEnd=function(){$(this).remove();};gLoadingMsg=null;enqueueLoadingMsg=function(){gLoadingMsg=_enqueueMsg(gettext("loading..."),"",null);};removeLoadingMsg=function(){if(gLoadingMsg!=null){gLoadingMsg.remove();gLoadingMsg=null;}};_enqueueMsg=function(d,b,c){var a=$(""+d+"").appendTo("#c-msg-wrapper").addClass("f-msg-cls").addClass(b);if(c){a.animate({opacity:0.95},c).fadeOut(2000,onFadeEnd);}return a;};enqueueMsg=function(c){var a="f-msg";var b=8000;_enqueueMsg(c,a,b);};enqueueErrorMsg=function(c){var a="f-msg-e";var b=4000;_enqueueMsg(c,a,b);};var gResetOtherFieldsOnFilterFieldChange=true;var myDefaultOuterLayoutSettings={center:{paneSelector:".outer-center"},north:{size:50,spacing_open:0,closable:false,resizable:false}};var innerNorthPaneDefaults={innerNorthPaneOpened:"0",selectedTab:"0"};onInnerNorthPaneClose=function(){_setCookie("innerNorthPaneOpened","0");$("#add_comment_btn").css("top",63);if(document.getElementById("text_view_comments").contentDocument!=null){document.getElementById("text_view_comments").contentDocument.getElementById("the-toc").style.height=(parseInt(document.getElementById("text_view_comments").clientHeight)-50).toString()+"px";}return true;};onInnerNorthPaneOpen=function(){_setCookie("innerNorthPaneOpened","1");$("#add_comment_btn").css("top",149);if(document.getElementById("text_view_comments").contentDocument!=null){document.getElementById("text_view_comments").contentDocument.getElementById("the-toc").style.height=(parseInt(document.getElementById("text_view_comments").clientHeight)-50).toString()+"px";}return true;};var myDefaultInnerLayoutSettings={north:{size:88,spacing_open:8,spacing_closed:8,slidable:false,resizable:false,togglerLength_closed:"100%",togglerLength_open:"100%",togglerAlign_closed:"center",togglerTip_closed:gettext("click to show options"),togglerTip_open:gettext("click to hide options"),togglerContent_open:"arrow up",togglerContent_closed:"arrow down",initClosed:false,paneSelector:".inner-north",onopen:"onInnerNorthPaneOpen",onclose:"onInnerNorthPaneClose"}};var outerLayout,innerLayout;layoutFrames=function(){var a=$.cookie("innerNorthPaneOpened");myDefaultInnerLayoutSettings.north.initClosed=(a===null)?(innerNorthPaneDefaults.innerNorthPaneOpened=="0"):(a=="0");outerLayout=$("body").layout(myDefaultOuterLayoutSettings);innerLayout=$("div.outer-center").layout(myDefaultInnerLayoutSettings);if(myDefaultInnerLayoutSettings.north.initClosed){onInnerNorthPaneClose();}else{onInnerNorthPaneOpen();}};fillFilterTab=function(){var b=$("#c_filter");var a='
'+gettext("Text")+' 
'+gettext("Authors")+'  '+gettext("States")+' 
'+gettext("Dates")+'  '+gettext("Tags")+' 
';b.append($(a));$("#c_filter input[type='text']").add("#c_filter select").addClass("c_filter_field");$("#filter_name").add("#filter_date").add("#filter_tag").add("#filter_state").change(function(){if(frames.text_view_comments.readyForAction()){var c=$(this);frames.text_view_comments.checkForOpenedDialog(null,function(){applyFilter(c);});}});$("#c_filter_btn").click(function(){if(frames.text_view_comments.readyForAction()){var c=$("#filter_text");frames.text_view_comments.checkForOpenedDialog(null,function(){applyFilter(c);});}});$("#filter_text").keyup(function(c){if(c.keyCode==13){$("#c_filter_btn").click();}});$("#c_filterreset_btn").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){resetFilter();});}});$("#c_filterhideall_btn").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.hideAll();});}});};fillTopToolbar=function(){var l=$("#outer-north");var g=gettext("view previous comment");var h=gettext("view next comment");var k=gettext("view first comment");var b=gettext("view last next comment");var d=gettext("view all comments");var p=gettext("view all detached comments");var m=gettext("toggle advance interface");var r=gettext("toggle table of contents");var c=gettext("print document with/without comments");var q=gettext("export document with/without comments");var a=gettext("toggle full screen view");var i=gettext("text feed");var j=gettext("add a comment");var n='
'+a+''+c+''+q+''+i+'
   ('+gettext("filter:")+' /  /), '+gettext("browse by:")+' '+k+''+g+'-/'+h+''+b+''+d+''+p+''+m+''+r+'
';l.prepend($(n));$("#add_comment_btn").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.gSync.showCommentForm(null);});}});var f=function(){$("#browse_by option").each(function(){$("#c_browse_indx_"+this.value).hide();});$("#c_browse_indx_"+$("#browse_by").val()).show();};var e=$.cookie("browse_by");e=(e==null)?"location":e;_setCookie("browse_by",$("#browse_by").val());$("#browse_by option[value="+e+"]").attr("selected",true);f();$("#browse_by").change(function(){_setCookie("browse_by",$("#browse_by").val());f();});var o=function(s){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.browse($("#browse_by").val(),s);});}};$("#c_browse_prev").click(function(){o("prev");});$("#c_browse_next").click(function(){o("next");});$("#c_browse_first").click(function(){o("first");});$("#c_browse_last").click(function(){o("last");});$("#c_browse_all").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.gSync.showAllComments();});}});$("#c_browse_scope_removed").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.gSync.showScopeRemovedComments();});}});$("#c_print_btn").click(function(){if(frames.text_view_comments.readyForAction()){var s=frames.text_view_comments.gDb.getFilteredCommentIdsAsString();frames.text_view_comments.CY.log($("#filteredIds").val(s));openPrintDialog();}});$("#c_export_btn").click(function(){if(frames.text_view_comments.readyForAction()){var s=frames.text_view_comments.gDb.getFilteredCommentIdsAsString();frames.text_view_comments.CY.log($("#filteredIds").val(s));openExportDialog();}});if(frames.text_view_comments.gLayout.isInComentSite()){$("#c_fullscreen_btn").click(function(){toggleFrameSize();});}$("#c_advanced_btn").click(function(){$(".ui-layout-toggler").click();});setThreadPref=function(){var t=frames.text_view_comments.c_readPreference("comments","threadpad");var u=sv_media_url+"/img/unthread_box.png";var s=gettext("unthread discussions");if(t=="0"){u=sv_media_url+"/img/thread_box.png";s=gettext("thread discussions");}$("#c_thread_unthread_img").attr("src",u).attr("alt",s).attr("title",s);};setThreadPref();$("#c_thread_unthread").click(function(){var t=frames.text_view_comments.c_readPreference("comments","threadpad");var s=(t=="0")?"1":"0";frames.text_view_comments.c_persistPreference("comments","threadpad",s);setThreadPref();frames.text_view_comments.gSync.animateToTop();});$("#c_toc_btn").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.toggleTocFn();});}});};onSliderStop=function(){var a=$("#c_slider").slider("value");if(a>(frames.text_view_comments.gConf.sliderFixedMin*100)){$("#c_slider").slider("value",[90]);}if(a<(frames.text_view_comments.gConf.sliderFixedMax*100)){$("#c_slider").slider("value",[10]);}frames.text_view_comments.c_setCommentsColWidth(a);frames.text_view_comments.c_persistPreference("layout","comments_col_width",a);};fillTextPreferencesTab=function(){var d=$("#c_text_preferences");d.append($("
"+gettext("Text style")+' 
'));var e=frames.text_view_comments.gTextStyles;for(var c in e){$("#c_textpref_style").append($(""));}var a=function(){var g=frames.text_view_comments.gTextStyles;var h=$("#c_textpref_style").val();for(var f in g){if(f==h){frames.text_view_comments.CY.get("#textcontainer").addClass(g[f]);}else{frames.text_view_comments.CY.get("#textcontainer").removeClass(g[f]);}}};var b=function(){var f=frames.text_view_comments.c_readPreference("text","style");$("#c_textpref_style").val(f);};$("#c_textpref_style").change(function(f){frames.text_view_comments.c_persistPreference("text","style",$("#c_textpref_style").val());a();});b();a();};fillPreferencesTab=function(){var b=$("#c_preferences");var a='
'+gettext("Animation duration")+' 
'+gettext("(0.001 to 1 second)")+"
";b.append($(a));setPreferencesFieldsValue=function(){var c=frames.text_view_comments.c_readPreference("general","animduration");$("#c_pref_animduration").val(c);};setPreferencesFieldsValue();$("#c_pref_animduration").blur(function(){var c=parseFloat($(this).val());if(isNaN(c)||(c<=0)||(c>1)){c=frames.text_view_comments.c_readDefaultPreference("general","animduration");}$(this).val(c);});$("#c_pref_reset_btn").click(function(){frames.text_view_comments.c_resetPreferences(["general"]);setPreferencesFieldsValue();enqueueMsg(gettext("preferences reset (will apply on next load)"));});$("#c_pref_save_btn").click(function(){frames.text_view_comments.c_persistPreference("general","animduration",$("#c_pref_animduration").val());enqueueMsg(gettext("preferences saved (will apply on next load)"));});};initFrame=function(){_initYesNoDialog();_initPrintDialog();$(window).resize(function(){onSliderStop();});$("#c_slider").slider({animate:true,range:"min",value:frames.text_view_comments.c_readPreference("layout","comments_col_width"),min:1,iframeFix:true,max:100,slide:function(a,b){var c=b.value;frames.text_view_comments.c_setCommentsColWidth(c);},stop:function(a,b){onSliderStop();}});_initTabs();f_interfaceFreeze();};_initTabs=function(){$(".inner-north").tabs();var a=$.cookie("selectedTab");a=(a===null)?innerNorthPaneDefaults.selectedTab:parseInt(a);$(".inner-north").tabs("select",a);$(".inner-north").bind("tabsselect",function(b,c){_setCookie("selectedTab",c.index);});};_initYesNoDialog=function(){$("#dialog_h").dialog({autoOpen:false,modal:true});};_setCookie=function(a,c){var b=new Date();b.setFullYear(2100,0,1);$.cookie(a,c,{expires:b,path:"/"});};f_getFrameFilterData=function(){var c=$("#filter_name").val();var b=$("#filter_date").val();var e=$("#filter_text").val();var a=$("#filter_tag").val();var d=$("#filter_state").val();return{name:c,date:b,text:e,tag:a,state:d};};f_setFilterValue=function(a){for(key in a){if(key.indexOf("filter_")==0){$("#"+key).val(a[key]);}}};f_isFrameFilterFieldsInit=function(){var b=f_getFrameFilterData();var a=true;for(key in b){a=a&&(b[key]=="");}return a;};initFilterFields=function(){$(".c_filter_field").val("");};resetFilter=function(){initFilterFields();frames.text_view_comments.reinit();enqueueMsg(gettext("filter reset"));};applyFilter=function(a){var b=a.val();if(gResetOtherFieldsOnFilterFieldChange){initFilterFields();a.val(b);}frames.text_view_comments.reinit();enqueueMsg(gettext("filter applied"));};f_updateFilterCountResult=function(d,a,b,e,c){$("#c_f_res_nb_dis").html(d);$("#c_f_res_nb_dis_txt").html(ngettext("discussion","discussions",d));$("#c_f_res_nb_com").html(a);$("#c_f_res_nb_tot_com").html(e);$("#c_f_res_nb_com_txt").html(ngettext("comment","comments",a));$("#c_f_res_nb_rep").html(b);$("#c_f_res_nb_tot_rep").html(c);$("#c_f_res_nb_rep_txt").html(" "+ngettext("reply","replies",b));$("#c_browse_indx_total").html(d);$("#c_filter_results").show();};f_updateFilterCountDetailed=function(a){if(a){$("#c_f_res_details").show();$("c_browse_all").val("View all (filtered) comments");}else{$("#c_f_res_details").hide();$("#c_browse_all").val("View all comments");}};f_updateFilterData=function(e){var g=$("#filter_name option:selected").attr("name");var k=gettext("all");$("#filter_name option").remove();$("#filter_name").append($(""));for(var c=0,b=e.names.length;c"+l.display+" ("+l.nb_comments+")"));}$("#filter_name option[name="+g+"]").attr("selected",true);var a=$("#filter_date option:selected").attr("name");$("#filter_date option").remove();$("#filter_date").append($(""));for(var c=0,b=e.dates.length;c"+j+""));}$("#filter_date option[name="+a+"]").attr("selected",true);var h=$("#filter_tag option:selected").attr("name");$("#filter_tag option").remove();$("#filter_tag").append($(""));for(var c=0,b=e.tags.length;c"+l.name+" ("+l.nb_comments+")"));}$("#filter_tag option[name="+h+"]").attr("selected",true);var d=$("#filter_state option:selected").attr("state");$("#filter_state option").remove();$("#filter_state").append($(""));for(var c=0,b=e.states.length;c"+gettext(l.state)+" ("+l.nb_comments+")"));}$("#filter_state option[name="+d+"]").attr("selected",true);};f_interfaceUnfreeze=function(){for(var b=0,a=$(".c_tab").length;b1||(parseInt(pandoc_version_ary[0])==1&&parseInt(pandoc_version_ary[1])>8)){gFormats.push({actions:["export"],extension:"epub",label:gettext("download ebook (.epub)")});}gFormats.push({actions:["export"],extension:"xml",label:gettext("download XML file for re-importing text and comments")});gActions={print:{dialogTitle:gettext("Print text"),chooseFormatLabel:gettext("How do you want to print?"),defaultMethod:"pdf",defaultWithColors:"no",defaultWhichComments:"all"},"export":{dialogTitle:gettext("Export text"),chooseFormatLabel:gettext("Choose file format"),defaultMethod:"pdf",defaultWithColors:"no",defaultWhichComments:"all"}};gCurrentAction=null;_populateMethod=function(g){var f=$("#p_method").val();$("#p_method").html("");for(var d=0,c=gFormats.length;d"+gFormats[d]["label"]+"").appendTo("#p_method");}}}if(f){$("#p_method").val(f);}else{$("#p_method").val(gActions[gCurrentAction]["defaultMethod"]);}};_populateMarkersColorsChoice=function(b){var a=$("#p_color").val();$("#p_color").html("");$("").appendTo("#p_color");$("").appendTo("#p_color");if(a){$("#p_color").val(a);}else{$("#p_color").val(gActions[gCurrentAction]["defaultWithColors"]);}};_populateWhichComments=function(){var c=$("#p_comments").val();$("#p_comments").html("");var a=interpolate(gettext("all (%(nb_comments)s)"),{nb_comments:frames.text_view_comments.gDb.getCommentsNb(true)},true);var b=interpolate(gettext("current filtered ones (%(nb_comments)s)"),{nb_comments:frames.text_view_comments.gDb.getCommentsNb(false)},true);$("").appendTo($("#p_comments"));$("").appendTo($("#p_comments"));$("").appendTo($("#p_comments"));if(c){$("#p_comments").val(c);}else{$("#p_comments").val(gActions[gCurrentAction]["defaultWhichComments"]);}};_manageMarkersColorsChoice=function(){var f=$("#p_method").val();var e=$("#p_comments").val();var c=frames.text_view_comments.gDb.getCommentsNb(true);var d=frames.text_view_comments.gDb.getCommentsNb(false);var b=(e=="all")?c:d;var a;if(gCurrentAction=="print"){a=((b==0)||(e=="none"));}if(gCurrentAction=="export"){a=((b==0)||(e=="none")||(f=="markdown")||(f=="latex")||(f=="epub")||(f=="odt")||(f=="doc"));}if(a){$("#p_color").val("no");}$("#p_color").attr("disabled",a);};_initPrintDialog=function(){$("#p_comments").add($("#p_method")).change(function(){_manageMarkersColorsChoice();_prepareOpenInNewWindow();});var a={};a[gettext("Go !")]=function(){var d=$("#p_comments").val();var c=$("#p_color").val();var e=$("#p_method").val();var b=(gCurrentAction=="export")?"1":(e=="html")?"0":"1";var f=$("#print_export_form").attr("target_action").replace(/FoRmAt/,e).replace(/DoWnLoAd/,b).replace(/WhIcHCoMmEnT/,d).replace(/WiThCoLoR/,c);$("#print_export_form").attr("action",f);document.print_export_form.submit();$(this).dialog("close");};a[gettext("Cancel")]=function(){$(this).dialog("close");};$("#dialog_print_export").dialog({bgiframe:true,autoOpen:false,width:500,modal:true,buttons:a,close:function(){}});};openPrintDialog=function(){_openPrintExportDialog("print");};openExportDialog=function(){_openPrintExportDialog("export");};_prepareOpenInNewWindow=function(){var a=$("#p_method").val();if((a=="html")&&(gCurrentAction=="print")){$("#print_export_form").attr("target","_blank");}else{$("#print_export_form").removeAttr("target");}};_openPrintExportDialog=function(a){gCurrentAction=a;$("#ui-dialog-title-dialog_print_export").html(gActions[gCurrentAction]["dialogTitle"]);$("#how").html(gActions[gCurrentAction]["chooseFormatLabel"]);$("#print_export_action").val(a);_populateWhichComments();_populateMarkersColorsChoice();_populateMethod();_manageMarkersColorsChoice();_prepareOpenInNewWindow();$("#dialog_print_export").dialog("open");};onFadeEnd=function(){$(this).remove();};gLoadingMsg=null;enqueueLoadingMsg=function(){gLoadingMsg=_enqueueMsg(gettext("loading..."),"",null);};removeLoadingMsg=function(){if(gLoadingMsg!=null){gLoadingMsg.remove();gLoadingMsg=null;}};_enqueueMsg=function(d,b,c){var a=$(""+d+"").appendTo("#c-msg-wrapper").addClass("f-msg-cls").addClass(b);if(c){a.animate({opacity:0.95},c).fadeOut(2000,onFadeEnd);}return a;};enqueueMsg=function(c){var a="f-msg";var b=8000;_enqueueMsg(c,a,b);};enqueueErrorMsg=function(c){var a="f-msg-e";var b=4000;_enqueueMsg(c,a,b);};var gResetOtherFieldsOnFilterFieldChange=true;var myDefaultOuterLayoutSettings={center:{paneSelector:".outer-center"},north:{size:50,spacing_open:0,closable:false,resizable:false}};var innerNorthPaneDefaults={innerNorthPaneOpened:"0",selectedTab:"0"};onInnerNorthPaneClose=function(){_setCookie("innerNorthPaneOpened","0");$("#add_comment_btn").css("top",63);if(document.getElementById("text_view_comments").contentDocument!=null){document.getElementById("text_view_comments").contentDocument.getElementById("the-toc").style.height=(parseInt(document.getElementById("text_view_comments").clientHeight)-50).toString()+"px";}return true;};onInnerNorthPaneOpen=function(){_setCookie("innerNorthPaneOpened","1");$("#add_comment_btn").css("top",149);if(document.getElementById("text_view_comments").contentDocument!=null){document.getElementById("text_view_comments").contentDocument.getElementById("the-toc").style.height=(parseInt(document.getElementById("text_view_comments").clientHeight)-50).toString()+"px";}return true;};var myDefaultInnerLayoutSettings={north:{size:88,spacing_open:8,spacing_closed:8,slidable:false,resizable:false,togglerLength_closed:"100%",togglerLength_open:"100%",togglerAlign_closed:"center",togglerTip_closed:gettext("click to show options"),togglerTip_open:gettext("click to hide options"),togglerContent_open:"arrow up",togglerContent_closed:"arrow down",initClosed:false,paneSelector:".inner-north",onopen:"onInnerNorthPaneOpen",onclose:"onInnerNorthPaneClose"}};var outerLayout,innerLayout;layoutFrames=function(){var a=$.cookie("innerNorthPaneOpened");myDefaultInnerLayoutSettings.north.initClosed=(a===null)?(innerNorthPaneDefaults.innerNorthPaneOpened=="0"):(a=="0");outerLayout=$("body").layout(myDefaultOuterLayoutSettings);innerLayout=$("div.outer-center").layout(myDefaultInnerLayoutSettings);if(myDefaultInnerLayoutSettings.north.initClosed){onInnerNorthPaneClose();}else{onInnerNorthPaneOpen();}};fillFilterTab=function(){var b=$("#c_filter");var a='
'+gettext("Text")+' 
'+gettext("Authors")+'  '+gettext("States")+' 
'+gettext("Dates")+'  '+gettext("Tags")+' 
';b.append($(a));$("#c_filter input[type='text']").add("#c_filter select").addClass("c_filter_field");$("#filter_name").add("#filter_date").add("#filter_tag").add("#filter_state").change(function(){if(frames.text_view_comments.readyForAction()){var c=$(this);frames.text_view_comments.checkForOpenedDialog(null,function(){applyFilter(c);});}});$("#c_filter_btn").click(function(){if(frames.text_view_comments.readyForAction()){var c=$("#filter_text");frames.text_view_comments.checkForOpenedDialog(null,function(){applyFilter(c);});}});$("#filter_text").keyup(function(c){if(c.keyCode==13){$("#c_filter_btn").click();}});$("#c_filterreset_btn").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){resetFilter();});}});$("#c_filterhideall_btn").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.hideAll();});}});};fillTopToolbar=function(){var l=$("#outer-north");var g=gettext("view previous comment");var h=gettext("view next comment");var k=gettext("view first comment");var b=gettext("view last next comment");var d=gettext("view all comments");var p=gettext("view all detached comments");var m=gettext("toggle advance interface");var r=gettext("toggle table of contents");var c=gettext("print document with/without comments");var q=gettext("export document with/without comments");var a=gettext("toggle full screen view");var i=gettext("text feed");var j=gettext("add a comment");var n='
'+a+''+c+''+q+''+i+'
   ('+gettext("filter:")+' /  /), '+gettext("browse by:")+' '+k+''+g+'-/'+h+''+b+''+d+''+p+''+m+''+r+'
';l.prepend($(n));$("#add_comment_btn").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.gSync.showCommentForm(null);});}});var f=function(){$("#browse_by option").each(function(){$("#c_browse_indx_"+this.value).hide();});$("#c_browse_indx_"+$("#browse_by").val()).show();};var e=$.cookie("browse_by");e=(e==null)?"location":e;_setCookie("browse_by",$("#browse_by").val());$("#browse_by option[value="+e+"]").attr("selected",true);f();$("#browse_by").change(function(){_setCookie("browse_by",$("#browse_by").val());f();});var o=function(s){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.browse($("#browse_by").val(),s);});}};$("#c_browse_prev").click(function(){o("prev");});$("#c_browse_next").click(function(){o("next");});$("#c_browse_first").click(function(){o("first");});$("#c_browse_last").click(function(){o("last");});$("#c_browse_all").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.gSync.showAllComments();});}});$("#c_browse_scope_removed").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.gSync.showScopeRemovedComments();});}});$("#c_print_btn").click(function(){if(frames.text_view_comments.readyForAction()){var s=frames.text_view_comments.gDb.getFilteredCommentIdsAsString();frames.text_view_comments.CY.log($("#filteredIds").val(s));openPrintDialog();}});$("#c_export_btn").click(function(){if(frames.text_view_comments.readyForAction()){var s=frames.text_view_comments.gDb.getFilteredCommentIdsAsString();frames.text_view_comments.CY.log($("#filteredIds").val(s));openExportDialog();}});if(frames.text_view_comments.gLayout.isInComentSite()){$("#c_fullscreen_btn").click(function(){toggleFrameSize();});}$("#c_advanced_btn").click(function(){$(".ui-layout-toggler").click();});setThreadPref=function(){var t=frames.text_view_comments.c_readPreference("comments","threadpad");var u=sv_media_url+"/img/unthread_box.png";var s=gettext("unthread discussions");if(t=="0"){u=sv_media_url+"/img/thread_box.png";s=gettext("thread discussions");}$("#c_thread_unthread_img").attr("src",u).attr("alt",s).attr("title",s);};setThreadPref();$("#c_thread_unthread").click(function(){var t=frames.text_view_comments.c_readPreference("comments","threadpad");var s=(t=="0")?"1":"0";frames.text_view_comments.c_persistPreference("comments","threadpad",s);setThreadPref();frames.text_view_comments.gSync.animateToTop();});$("#c_toc_btn").click(function(){if(frames.text_view_comments.readyForAction()){frames.text_view_comments.checkForOpenedDialog(null,function(){frames.text_view_comments.toggleTocFn();});}});};onSliderStop=function(){var a=$("#c_slider").slider("value");if(a>(frames.text_view_comments.gConf.sliderFixedMin*100)){$("#c_slider").slider("value",[90]);}if(a<(frames.text_view_comments.gConf.sliderFixedMax*100)){$("#c_slider").slider("value",[10]);}frames.text_view_comments.c_setCommentsColWidth(a);frames.text_view_comments.c_persistPreference("layout","comments_col_width",a);};fillTextPreferencesTab=function(){var d=$("#c_text_preferences");d.append($("
"+gettext("Text style")+' 
'));var e=frames.text_view_comments.gTextStyles;for(var c in e){$("#c_textpref_style").append($(""));}var a=function(){var g=frames.text_view_comments.gTextStyles;var h=$("#c_textpref_style").val();for(var f in g){if(f==h){frames.text_view_comments.CY.get("#textcontainer").addClass(g[f]);}else{frames.text_view_comments.CY.get("#textcontainer").removeClass(g[f]);}}};var b=function(){var f=frames.text_view_comments.c_readPreference("text","style");$("#c_textpref_style").val(f);};$("#c_textpref_style").change(function(f){frames.text_view_comments.c_persistPreference("text","style",$("#c_textpref_style").val());a();});b();a();};fillPreferencesTab=function(){var b=$("#c_preferences");var a='
'+gettext("Animation duration")+' 
'+gettext("(0.001 to 1 second)")+"
";b.append($(a));setPreferencesFieldsValue=function(){var c=frames.text_view_comments.c_readPreference("general","animduration");$("#c_pref_animduration").val(c);};setPreferencesFieldsValue();$("#c_pref_animduration").blur(function(){var c=parseFloat($(this).val());if(isNaN(c)||(c<=0)||(c>1)){c=frames.text_view_comments.c_readDefaultPreference("general","animduration");}$(this).val(c);});$("#c_pref_reset_btn").click(function(){frames.text_view_comments.c_resetPreferences(["general"]);setPreferencesFieldsValue();enqueueMsg(gettext("preferences reset (will apply on next load)"));});$("#c_pref_save_btn").click(function(){frames.text_view_comments.c_persistPreference("general","animduration",$("#c_pref_animduration").val());enqueueMsg(gettext("preferences saved (will apply on next load)"));});};initFrame=function(){_initYesNoDialog();_initPrintDialog();$(window).resize(function(){onSliderStop();});$("#c_slider").slider({animate:true,range:"min",value:frames.text_view_comments.c_readPreference("layout","comments_col_width"),min:1,iframeFix:true,max:100,slide:function(a,b){var c=b.value;frames.text_view_comments.c_setCommentsColWidth(c);},stop:function(a,b){onSliderStop();}});_initTabs();f_interfaceFreeze();};_initTabs=function(){$(".inner-north").tabs();var a=$.cookie("selectedTab");a=(a===null)?innerNorthPaneDefaults.selectedTab:parseInt(a);$(".inner-north").tabs("select",a);$(".inner-north").bind("tabsselect",function(b,c){_setCookie("selectedTab",c.index);});};_initYesNoDialog=function(){$("#dialog_h").dialog({autoOpen:false,modal:true});};_setCookie=function(a,c){var b=new Date();b.setFullYear(2100,0,1);$.cookie(a,c,{expires:b,path:"/"});};f_getFrameFilterData=function(){var c=$("#filter_name").val();var b=$("#filter_date").val();var e=$("#filter_text").val();var a=$("#filter_tag").val();var d=$("#filter_state").val();return{name:c,date:b,text:e,tag:a,state:d};};f_setFilterValue=function(a){for(key in a){if(key.indexOf("filter_")==0){$("#"+key).val(a[key]);}}};f_isFrameFilterFieldsInit=function(){var b=f_getFrameFilterData();var a=true;for(key in b){a=a&&(b[key]=="");}return a;};initFilterFields=function(){$(".c_filter_field").val("");};resetFilter=function(){initFilterFields();frames.text_view_comments.reinit();enqueueMsg(gettext("filter reset"));};applyFilter=function(a){var b=a.val();if(gResetOtherFieldsOnFilterFieldChange){initFilterFields();a.val(b);}frames.text_view_comments.reinit();enqueueMsg(gettext("filter applied"));};f_updateFilterCountResult=function(d,a,b,e,c){$("#c_f_res_nb_dis").html(d);$("#c_f_res_nb_dis_txt").html(ngettext("discussion","discussions",d));$("#c_f_res_nb_com").html(a);$("#c_f_res_nb_tot_com").html(e);$("#c_f_res_nb_com_txt").html(ngettext("comment","comments",a));$("#c_f_res_nb_rep").html(b);$("#c_f_res_nb_tot_rep").html(c);$("#c_f_res_nb_rep_txt").html(" "+ngettext("reply","replies",b));$("#c_browse_indx_total").html(d);$("#c_filter_results").show();};f_updateFilterCountDetailed=function(a){if(a){$("#c_f_res_details").show();$("c_browse_all").val("View all (filtered) comments");}else{$("#c_f_res_details").hide();$("#c_browse_all").val("View all comments");}};f_updateFilterData=function(e){var g=$("#filter_name option:selected").attr("name");var k=gettext("all");$("#filter_name option").remove();$("#filter_name").append($(""));for(var c=0,b=e.names.length;c"+l.display+" ("+l.nb_comments+")"));}$("#filter_name option[name="+g+"]").attr("selected",true);var a=$("#filter_date option:selected").attr("name");$("#filter_date option").remove();$("#filter_date").append($(""));for(var c=0,b=e.dates.length;c"+j+""));}$("#filter_date option[name="+a+"]").attr("selected",true);var h=$("#filter_tag option:selected").attr("name");$("#filter_tag option").remove();$("#filter_tag").append($(""));for(var c=0,b=e.tags.length;c"+l.name+" ("+l.nb_comments+")"));}$("#filter_tag option[name="+h+"]").attr("selected",true);var d=$("#filter_state option:selected").attr("state");$("#filter_state option").remove();$("#filter_state").append($(""));for(var c=0,b=e.states.length;c"+gettext(l.state)+" ("+l.nb_comments+")"));}$("#filter_state option[name="+d+"]").attr("selected",true);};f_interfaceUnfreeze=function(){for(var b=0,a=$(".c_tab").length;b 1 || (parseInt(pandoc_version_ary[0]) == 1 && parseInt(pandoc_version_ary[1]) > 8)) { gFormats.push({'actions':['export'], 'extension':'epub', 'label': gettext('download ebook (.epub)')}); } +gFormats.push({'actions':['export'], 'extension':'xml', 'label': gettext('download XML file for re-importing text and comments')}); + gActions = {'print':{'dialogTitle':gettext('Print text'), 'chooseFormatLabel':gettext('How do you want to print?'), 'defaultMethod':'pdf', 'defaultWithColors':"no", 'defaultWhichComments':'all'}, 'export':{'dialogTitle':gettext('Export text'), 'chooseFormatLabel':gettext('Choose file format'), 'defaultMethod':'pdf', 'defaultWithColors':"no", 'defaultWhichComments':'all'}} ; gCurrentAction = null ; @@ -74,12 +76,15 @@ _manageMarkersColorsChoice = function() { var method = $("#p_method").val(); var which = $("#p_comments").val(); + var all = frames['text_view_comments'].gDb.getCommentsNb(true); + var currents = frames['text_view_comments'].gDb.getCommentsNb(false); + var nb_comments = (which == 'all') ? all : currents; var disableMarkersColorsChoice ; if (gCurrentAction == 'print') - disableMarkersColorsChoice = ((which == 'none') || (method == 'markdown') || (method == 'html')) ; + disableMarkersColorsChoice = ((nb_comments == 0) || (which == 'none')); if (gCurrentAction == 'export') - disableMarkersColorsChoice = ((which == 'none') || (method == 'markdown')) ; + disableMarkersColorsChoice = ((nb_comments == 0) || (which == 'none') || (method == 'markdown') || (method == 'latex') || (method == 'epub') || (method == 'odt') || (method == 'doc')) ; if (disableMarkersColorsChoice) $("#p_color").val('no'); @@ -114,7 +119,7 @@ $("#dialog_print_export").dialog({ bgiframe: true, autoOpen: false, - width: 450, + width: 500, /* height: 300, autoResize: false,*/ modal: true, diff -r 1d314f629611 -r b7a092a52eae src/cm/templates/site/macros/text_comments.html --- a/src/cm/templates/site/macros/text_comments.html Tue Jul 31 16:37:23 2012 +0200 +++ b/src/cm/templates/site/macros/text_comments.html Mon Aug 06 13:42:15 2012 +0200 @@ -1,30 +1,24 @@ {% load com %} {% load i18n %} -
-{% for comment in comments %} - - - - - -
- +
+
+{% for comment in comments %} +
{% if comment.is_reply %} ({{ comment.num }}) {% else %} [{{ comment.num }}] {% endif %} -
- {{ comment.title }} -
- {% blocktrans with comment.get_name as name and comment.created|local_date:tz as date %}by {{ name }} on {{ date }}{% endblocktrans %} -
- {{ comment.content }} - {% if comment.tags %} -
 
- tags: {{ comment.tags }} - {% endif %} -
-
+
+
+

+ {{ comment.title }}
+ {% blocktrans with comment.get_name as name and comment.created|local_date:tz as date %}by {{ name }} on {{ date }}{% endblocktrans %}
+ {{ comment.content }} +

+ {% if comment.tags %} +

tags: {{ comment.tags }}

+ {% endif %} +
{% endfor %} diff -r 1d314f629611 -r b7a092a52eae src/cm/templates/site/text_view_comments.html --- a/src/cm/templates/site/text_view_comments.html Tue Jul 31 16:37:23 2012 +0200 +++ b/src/cm/templates/site/text_view_comments.html Mon Aug 06 13:42:15 2012 +0200 @@ -110,7 +110,7 @@ {% else %} - + {% endif %} diff -r 1d314f629611 -r b7a092a52eae src/cm/templates/site/text_view_frame.html --- a/src/cm/templates/site/text_view_frame.html Tue Jul 31 16:37:23 2012 +0200 +++ b/src/cm/templates/site/text_view_frame.html Mon Aug 06 13:42:15 2012 +0200 @@ -37,7 +37,7 @@ {% else %} - + {% endif %} + +%s + +""" + def content_export2(request, content, title, content_format, format, use_pandoc, download_response): # TODO : formats must be imported from converters # import pdb;pdb.set_trace() @@ -38,12 +53,11 @@ else: if use_pandoc : # markdown2pdf is buggy => convert to HTML and use abiword to export in PDF - if format == 'pdf' and USE_ABI: + if format in ('pdf', 'odt', 'docx', 'doc') and USE_ABI: html_content = pandoc_convert(content, content_format, 'html', full=True) from cm.converters.abi_converters import AbiFileConverter converter = AbiFileConverter() - full_content = converter.add_html_header(html_content) - fix_content = do_tidy(full_content) + fix_content = converter.add_html_header(html_content) export_content = converter.convert_from_html(fix_content, format) else: export_content = pandoc_convert(content, content_format, format, full=True) @@ -53,8 +67,7 @@ if USE_ABI: from cm.converters.abi_converters import AbiFileConverter converter = AbiFileConverter() - full_content = converter.add_html_header(content) - fix_content = do_tidy(full_content) + fix_content = converter.add_html_header(content) else: from cm.converters.oo_converters import combine_css_body fix_content = combine_css_body(content, '') @@ -85,59 +98,7 @@ else: return _response_write(export_content) -def content_export_new(request, content, title, src_format, format, use_pandoc, download_response): - # TODO : formats must be imported from converters - if format == 'raw' : - export_content = content - elif src_format == format and format == 'html': - export_content = HTML_HEADER % content - else: - if use_pandoc : - export_content = pandoc_convert(content, src_format, format, full=True) - else : - fix_content = content - if src_format == 'html': - from cm.converters.oo_converters import combine_css_body - fix_content = combine_css_body(content, '') - from cm.converters.oo_converters import convert_html as oo_convert - export_content = oo_convert(fix_content, format) - - export_infos = EXPORT_INFOS[format] - format_download = export_infos[0] - - if download_response: - return _response_download(export_content, export_infos[1], export_infos[2]) ; - else: - return _response_write(export_content) - -# read conversion chain -# execute chain -# ready to send response -# # TODO : formats must be imported from converters -# if format == 'raw' : -# export_content = content -# elif src_format == format and format == 'html': -# export_content = HTML_HEADER % content -# else: -# if use_pandoc : -# export_content = pandoc_convert(content, src_format, format, full=True) -# else : -# fix_content = content -# if src_format == 'html': -# fix_content = combine_css_body(content, '') -# export_content = oo_convert(fix_content, format) -# -## send response -# export_infos = EXPORT_INFOS[format] -# mimetype = export_infos['mimetype'] -# extension = export_infos['extension'] -# -# if download: -# return _response_download(export_content, mimetype, extension) -# else : -# return _response_write(export_content) -# def _response_download(content, title, mimetype, extension): response = HttpResponse(mimetype=mimetype) file_title = title + '.' + extension @@ -154,88 +115,9 @@ response.write(content) return response - -EXPORT_INFOS = { -# key -> [ download?, mimetype, extension] -'s5' : [False , ], -'pdf' : [True , 'application/pdf' , 'pdf'], -'markdown' : [True , 'text/plain' , 'mkd'], -'odt' : [True , 'application/vnd.oasis.opendocument.text', 'odt'], -'doc' : [True , 'application/msword', 'odt'], -'docx' : [True , 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'docx'], -'latex' :[True , 'text/x-tex', 'tex'], -'html' :[True , 'text/html', 'html'], -'epub' :[True , 'application/epub+zip', 'epub'], -# raw export -'raw' : [True, 'text/plain', 'txt'] -} -HTML_HEADER = u""" - - - - -%s - -""" -EXPORT_FORMATS = EXPORT_INFOS.keys() - -def content_export(request, content, title, src_format, format, use_pandoc): - # TODO : formats must be imported from converters - if format == 'raw' : - export_content = content - elif src_format == format and format == 'html': - export_content = HTML_HEADER % content - else: - if use_pandoc : - export_content = pandoc_convert(content, src_format, format, full=True) - else : - fix_content = content - if src_format == 'html': - from cm.converters.oo_converters import combine_css_body - fix_content = combine_css_body(content, '') - from cm.converters.oo_converters import convert_html as oo_convert - export_content = oo_convert(fix_content, format) - - export_infos = EXPORT_INFOS[format] - format_download = export_infos[0] - - if format_download: - format_mimetype = export_infos[1] - format_extension = export_infos[2] - - response = HttpResponse(mimetype=format_mimetype) - file_title = title + '.' + format_extension - from email.header import Header - encoded_name = str(Header(file_title.encode('utf8'), charset='utf8', maxlinelen=500)) - response['Content-Disposition'] = u'attachment; filename=%s' % encoded_name - response.write(export_content) - return response - else: - response = HttpResponse() - response.write(export_content) - return response - - -def text_export(request, key, format): - # TODO : formats must be imported from converters - format = format.lower() - if format not in EXPORT_FORMATS: - raise Exception("Unsupported format %s (supported formats %s)" % (format, ' '.join(EXPORT_FORMATS))) - text = Text.objects.get(key=key) - text_version = text.get_latest_version() - - return content_export(request, text_version.content, text_version.title, text_version.format, format) - -def text_feed(request, key): - return "" - def xml_export(request, text_version, whichcomments): # Text version infos - template_dict = { 'title': text_version.title, 'date': text_version.modified, 'format': text_version.format, 'content': text_version.get_content(), 'tags': text_version.tags, } + template_dict = { 'title': text_version.title, 'date': text_version.modified, 'format': text_version.format, 'content': text_version.content, 'tags': text_version.tags, } # Comments comments = [] # whichcomments=="none" diff -r 1d314f629611 -r b7a092a52eae src/cm/views/texts.py --- a/src/cm/views/texts.py Tue Jul 31 16:37:23 2012 +0200 +++ b/src/cm/views/texts.py Mon Aug 06 13:42:15 2012 +0200 @@ -16,7 +16,7 @@ insert_comment_markers from cm.utils.spannifier import spannify 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, content_export, xml_export +from cm.views.export import content_export2, xml_export from cm.views.user import AnonUserRoleForm, cm_login from difflib import unified_diff from django import forms @@ -324,9 +324,6 @@ comments = [] # whichcomments=="none" if whichcomments == "filtered" or whichcomments == "all": - #comments = text_version.comment_set.filter(reply_to__isnull=True)# whichcomments=="all" - #comments = get_viewable_comments(request, text_version.comment_set.filter(reply_to__isnull=True), text, order_by=('start_wrapper','start_offset','end_wrapper','end_offset'))# whichcomments=="all" - _comments = text_version.comment_set.all() if whichcomments == "filtered" : filteredIds = [] @@ -338,36 +335,34 @@ comments = get_viewable_comments(request, _comments, text, order_by=('start_wrapper','start_offset','end_wrapper','end_offset'))# whichcomments=="all" # decide to use pandoc or not - if with_color : - use_pandoc = False # pandoc wouldn't preserve comments scope background colors - else : - if format in ('markdown', 'latex', 'epub') : - use_pandoc = True - elif format in ('pdf', 'odt') : - use_pandoc = (original_format == "markdown") - elif format in ('docx', 'doc', 'html', 'xml') : - use_pandoc = False + if format in ('markdown', 'latex', 'epub') : + use_pandoc = True + else: + use_pandoc = (original_format == 'markdown' or original_format == 'rst') # correct attach path => real path - if format in ('pdf','odt') : + if format in ('pdf', 'odt', 'doc', 'docx') : original_content = from_html_links_to_abs_links(original_content) if len(comments) == 0 : #want to bypass html conversion in this case - return content_export2(request, original_content, text_version.title, original_format, format, use_pandoc, download_response) + # Prepends title + if original_format == 'html': + original_content = "

%s

%s" %(text_version.title, original_content) + elif original_format == 'markdown': + original_content = "%s\n======\n%s" %(text_version.title, original_content) + elif original_format == 'rst': + underline = '=' * len(text_version.title) + original_content = "%s\n%s\n%s" %(text_version.title, underline, original_content) + + return content_export2(request, original_content, text_version.title, original_format, format, use_pandoc, download_response) else : # case comments to be added - #comments = comments.order_by('start_wrapper','start_offset','end_wrapper','end_offset') html = pandoc_convert(original_content, original_format, 'html') wrapped_text_version, _ , _ = spannify(html) with_markers = True marked_content = insert_comment_markers(wrapped_text_version, comments, with_markers, with_color) - + # Prepends title + marked_content = "

%s

%s" %(text_version.title, marked_content) viewable_comments = comments_thread(request, text_version, text) - # viewable_commentsnoreply = get_viewable_comments(request, commentsnoreply, text, order_by = ('start_wrapper','start_offset','end_wrapper','end_offset')) - # viewable_comments = [] - # for cc in viewable_commentsnoreply : - # viewable_comments += list_viewable_comments(request, [cc], text) - - # numerotation{ id --> numbered as a child} extended_comments = {} nb_children = {} for cc in viewable_comments : @@ -384,85 +379,13 @@ if cc.is_reply() : cc.num = "%s.%s"%(extended_comments[cc.reply_to_id].num, cc.num) - # viewable_comments += list_viewable_comments(request, viewable_commentsnoreply, text) html_comments=render_to_string('site/macros/text_comments.html',{'comments':viewable_comments }, context_instance=RequestContext(request)) content = "%s%s"%(marked_content, html_comments) content_format = "html" - # impossible to satisfy because of color then no colors instead: - if with_color and format in ('markdown', 'tex') : #TODO : add S5 - with_color = False return content_export2(request, content, text_version.title, content_format, format, use_pandoc, download_response) -def text_print(request, key, adminkey=None): - text, admin = get_text_and_admin(key, adminkey) - - text_version = text.get_latest_version() - -# chosen default url behaviour is export all comments + bckcolor + pdf - comments = Comment.objects.filter(text_version=text_version, reply_to__isnull=True) - - with_markers = True - with_colors = True - download_requested = True - action = 'export' # client origine dialog - requested_format = 'pdf' # requested output format - - if request.method == 'POST': - # colors or not ? - with_colors = (u'yes' == request.POST.get('p_color', u'no')) - - # restrict comments to ones that should be exported / printed - p_comments = request.POST.get('p_comments') - if p_comments == "filtered" or p_comments == "none" : - filteredIds = [] # "none" case - if p_comments == "filtered" : - ll = request.POST.get('filteredIds').split(",") - filteredIds = [ int(l) for l in ll if l] - - comments = comments.filter(id__in=filteredIds) - - # print or export ? - action = request.POST.get('print_export_action') - requested_format = request.POST.get('p_method') - - comments = comments.order_by('start_wrapper','start_offset','end_wrapper','end_offset') - - download_requested = (action == 'export') or (action == 'print' and requested_format != 'html') - - ori_format = text_version.format # BD : html or markdown for now ... - src_format = ori_format # as expected by convert functions ... - src = text_version.content - - if len(comments) > 0 and (with_markers or with_colors) : - html = text_version.get_content() - wrapped_text_version, _ , _ = spannify(html) - marked_text_version = insert_comment_markers(wrapped_text_version, comments, with_markers, with_colors) - - src_format = 'html' - src = marked_text_version - html_comments=render_to_string('site/macros/text_comments.html',{'comments':comments}, context_instance=RequestContext(request)) - src += html_comments - - if download_requested : - use_pandoc = (requested_format == 'html' or requested_format == 'markdown') - return content_export(request, src, text_version.title, src_format, requested_format, use_pandoc) - else : # action == 'print' and requested_format == 'html' (no colors) - template_dict = {'text' : text, - 'text_version' : text_version, - 'title' : text_version.title, # TODO use it ... - 'comments': comments, - 'content' : marked_text_version, - 'client_date_fmt' : settings.CLIENT_DATE_FMT - } - if admin: - template_dict['adminkey'] = text.adminkey - template_dict['admin'] = True - return render_to_response('site/text_print.html', - template_dict, - context_instance=RequestContext(request)) - @has_perm_on_text('can_view_text') def text_view_frame(request, key, version_key=None, adminkey=None): text = get_text_by_keys_or_404(key)