diff options
Diffstat (limited to 'plugins/textviewer/textviewer.js')
-rw-r--r-- | plugins/textviewer/textviewer.js | 66 |
1 files changed, 61 insertions, 5 deletions
diff --git a/plugins/textviewer/textviewer.js b/plugins/textviewer/textviewer.js index 788396d3d70..6b031ccd843 100644 --- a/plugins/textviewer/textviewer.js +++ b/plugins/textviewer/textviewer.js @@ -1,14 +1,58 @@ OC_TextViewer=new Object(); +OC_TextViewer.type=''; +OC_TextViewer.types={ + 'ac3':'shBrushAS3.js', + 'applescript':'shBrushAppleScript.js', + 'bash':'shBrushBash.js', + 'sh':'shBrushBash.js', + 'csharp':'shBrushCSharp.js', + 'coldfusion':'shBrushColdFusion.js', + 'cpp':'shBrushCpp.js', + 'css':'shBrushCss.js', + 'delphi':'shBrushDelphi.js', + 'diff':'shBrushDiff.js', + 'erlang':'shBrushErlang.js', + 'groovy':'shBrushGroovy.js', + 'javascript':'shBrushJScript.js', + 'js':'shBrushJScript.js', + 'java':'shBrushJava.js', + 'javafx':'shBrushJavaFX.js', + 'perl':'shBrushPerl.js', + 'php':'shBrushPhp.js', + 'plain':'shBrushPlain.js', + 'powershell':'shBrushPowerShell.js', + 'python':'shBrushPython.js', + 'py':'shBrushPython.js', + 'ruby':'shBrushRuby.js', + 'sass':'shBrushSass.js', + 'scala':'shBrushScala.js', + 'sql':'shBrushSql.js', + 'vb':'shBrushVb.js', + 'xml':'shBrushXml.js', +} + OC_TextViewer.loader=new OCXMLLoader(); OC_TextViewer.showText=function(dir,file){ + var type; + var parts=file.split('.'); + var ext=parts[parts.length-1]; + if(OC_TextViewer.types[ext]){ + type=ext; + }else{ + type='plain'; + } + OC_TextViewer.type=type; + OC_TextViewer.loadHighlighter(); var path=WEBROOT+'/files/open_file.php?dir='+encodeURIComponent(dir)+'&file='+encodeURIComponent(file); var div=document.createElement('div'); div.setAttribute('id','textframe'); div.setAttribute('class','center'); div.addEvent('onclick',OC_TextViewer.hideText) OC_TextViewer.textFrame=document.createElement('div'); + OC_TextViewer.textFrame.pre=document.createElement('pre'); div.appendChild(OC_TextViewer.textFrame); + OC_TextViewer.textFrame.appendChild(OC_TextViewer.textFrame.pre); body=document.getElementsByTagName('body').item(0); body.appendChild(div); OC_TextViewer.loader.setCallBack(OC_TextViewer.showTexCallback); @@ -17,7 +61,9 @@ OC_TextViewer.showText=function(dir,file){ OC_TextViewer.showTexCallback=function(req){ var text=req.responseText; - OC_TextViewer.textFrame.innerHTML=OC_TextViewer.prepareText(text); + OC_TextViewer.textFrame.pre.innerHTML=OC_TextViewer.prepareText(text); + OC_TextViewer.textFrame.pre.setAttribute('class','brush: '+OC_TextViewer.type+';'); + SyntaxHighlighter.highlight(null,OC_TextViewer.textFrame.pre); } OC_TextViewer.hideText=function(){ @@ -26,12 +72,21 @@ OC_TextViewer.hideText=function(){ } OC_TextViewer.prepareText=function(text){ - text=text.replace(/\n/g,"<br/>\n"); - text=text.replace(/ /g," "); - text=text.replace(/\t/g," "); + text=text.replace(/>/g,">"); + text=text.replace(/</g,"<"); return text; } +OC_TextViewer.loadedTypes=new Array(); +OC_TextViewer.loadHighlighter=function(){ + OC_TextViewer.type=(OC_TextViewer.types[OC_TextViewer.type])?OC_TextViewer.type:'plain'; + if(!OC_TextViewer.loadedTypes[OC_TextViewer.type]){ + loadScript('plugins/textviewer/syntaxhighlighter/scripts/'+OC_TextViewer.types[OC_TextViewer.type]) + OC_TextViewer.loadedTypes[OC_TextViewer.type]=true; + SyntaxHighlighter.vars.discoveredBrushes=null; //force the highlighter to refresh it's cache + } +} + if(!OC_FILES.fileActions.text){ OC_FILES.fileActions.text=new Object() } @@ -39,4 +94,5 @@ OC_FILES.fileActions.text.show=function(){ OC_TextViewer.showText(this.dir,this.file); } -OC_FILES.fileActions.text['default']=OC_FILES.fileActions.text.show;
\ No newline at end of file +OC_FILES.fileActions.text['default']=OC_FILES.fileActions.text.show; + |