PluginProbe
Wp-Insert / 1.6.2
Wp-Insert v1.6.2
trunk 1.0 1.1 1.2 1.2.1 1.2.2 1.3.0 1.3.1 1.3.3 1.4 1.5.0 1.5.1 1.5.2 1.5.3 1.6.0 1.6.1 1.6.2 1.7 1.7.1 1.7.2 1.7.3 1.7.4 1.7.5 1.7.6 2.0 All 63 releases
wp-insert / codepress / codepress.js

codepress.js in Wp-Insert 1.6.2, at codepress/codepress.js

139 lines 4.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /*
2 * CodePress - Real Time Syntax Highlighting Editor written in JavaScript - http://codepress.org/
3 *
4 * Copyright (C) 2006 Fernando M.A.d.S. <fermads@gmail.com>
5 *
6 * This program is free software; you can redistribute it and/or modify it under the terms of the
7 * GNU Lesser General Public License as published by the Free Software Foundation.
8 *
9 * Read the full licence: http://www.opensource.org/licenses/lgpl-license.php
10 */
11
12 CodePress = function(obj) {
13 var self = document.createElement('iframe');
14 self.textarea = obj;
15 self.textarea.disabled = true;
16 self.textarea.style.overflow = 'hidden';
17 self.style.height = self.textarea.clientHeight +'px';
18 self.style.width = self.textarea.clientWidth +'px';
19 self.textarea.style.overflow = 'auto';
20 self.style.border = '1px solid gray';
21 self.frameBorder = 0; // remove IE internal iframe border
22 self.style.visibility = 'hidden';
23 self.style.position = 'absolute';
24 self.options = self.textarea.className;
25
26 self.initialize = function() {
27 self.editor = self.contentWindow.CodePress;
28 self.editor.body = self.contentWindow.document.getElementsByTagName('body')[0];
29 self.editor.setCode(self.textarea.value);
30 self.setOptions();
31 self.editor.syntaxHighlight('init');
32 self.textarea.style.display = 'none';
33 self.style.position = 'static';
34 self.style.visibility = 'visible';
35 self.style.display = 'inline';
36 }
37
38 // obj can by a textarea id or a string (code)
39 self.edit = function(obj,language) {
40 if(obj) self.textarea.value = document.getElementById(obj) ? document.getElementById(obj).value : obj;
41 if(!self.textarea.disabled) return;
42 self.language = language ? language : self.getLanguage();
43 self.src = CodePress.path+'codepress.html?language='+self.language+'&ts='+(new Date).getTime();
44 if(self.attachEvent) self.attachEvent('onload',self.initialize);
45 else self.addEventListener('load',self.initialize,false);
46 }
47
48 self.getLanguage = function() {
49 for (language in CodePress.languages)
50 if(self.options.match('\\b'+language+'\\b'))
51 return CodePress.languages[language] ? language : 'generic';
52 }
53
54 self.setOptions = function() {
55 if(self.options.match('autocomplete-off')) self.toggleAutoComplete();
56 if(self.options.match('readonly-on')) self.toggleReadOnly();
57 if(self.options.match('linenumbers-off')) self.toggleLineNumbers();
58 }
59
60 self.getCode = function() {
61 return self.textarea.disabled ? self.editor.getCode() : self.textarea.value;
62 }
63
64 self.setCode = function(code) {
65 self.textarea.disabled ? self.editor.setCode(code) : self.textarea.value = code;
66 }
67
68 self.toggleAutoComplete = function() {
69 self.editor.autocomplete = (self.editor.autocomplete) ? false : true;
70 }
71
72 self.toggleReadOnly = function() {
73 self.textarea.readOnly = (self.textarea.readOnly) ? false : true;
74 if(self.style.display != 'none') // prevent exception on FF + iframe with display:none
75 self.editor.readOnly(self.textarea.readOnly ? true : false);
76 }
77
78 self.toggleLineNumbers = function() {
79 var cn = self.editor.body.className;
80 self.editor.body.className = (cn==''||cn=='show-line-numbers') ? 'hide-line-numbers' : 'show-line-numbers';
81 }
82
83 self.toggleEditor = function() {
84 if(self.textarea.disabled) {
85 self.textarea.value = self.getCode();
86 self.textarea.disabled = false;
87 self.style.display = 'none';
88 self.textarea.style.display = 'inline';
89 }
90 else {
91 self.textarea.disabled = true;
92 self.setCode(self.textarea.value);
93 self.editor.syntaxHighlight('init');
94 self.style.display = 'inline';
95 self.textarea.style.display = 'none';
96 }
97 }
98
99 self.edit();
100 return self;
101 }
102
103 CodePress.languages = {
104 csharp : 'C#',
105 css : 'CSS',
106 generic : 'Generic',
107 html : 'HTML',
108 java : 'Java',
109 javascript : 'JavaScript',
110 perl : 'Perl',
111 ruby : 'Ruby',
112 php : 'PHP',
113 text : 'Text',
114 sql : 'SQL',
115 vbscript : 'VBScript'
116 }
117
118
119 CodePress.run = function() {
120 s = document.getElementsByTagName('script');
121 for(var i=0,n=s.length;i<n;i++) {
122 if(s[i].src.match('codepress.js')) {
123 CodePress.path = s[i].src.replace('codepress.js','');
124 }
125 }
126 t = document.getElementsByTagName('textarea');
127 for(var i=0,n=t.length;i<n;i++) {
128 if(t[i].className.match('codepress')) {
129 id = t[i].id;
130 t[i].id = id+'_cp';
131 eval(id+' = new CodePress(t[i])');
132 t[i].parentNode.insertBefore(eval(id), t[i]);
133 }
134 }
135 }
136
137 if(window.attachEvent) window.attachEvent('onload',CodePress.run);
138 else window.addEventListener('DOMContentLoaded',CodePress.run,false);
139