summaryrefslogtreecommitdiffstats
path: root/plugins/textviewer/textviewer.js
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/textviewer/textviewer.js')
-rw-r--r--plugins/textviewer/textviewer.js66
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,"&nbsp;");
- text=text.replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;");
+ text=text.replace(/>/g,"&gt;");
+ text=text.replace(/</g,"&lt;");
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;
+