view release on metacpan or search on metacpan
cp/codepress/codepress.html view on Meta::CPAN
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>CodePress - Real Time Syntax Highlighting Editor written in JavaScript</title>
<meta name="description" content="CodePress - source code editor window" />
<script type="text/javascript">
var language = 'generic';
var engine = 'older';
var ua = navigator.userAgent;
var ts = (new Date).getTime(); // timestamp to avoid cache
var lh = location.href;
if(ua.match('MSIE')) engine = 'msie';
else if(ua.match('KHTML')) engine = 'khtml';
cp/codepress/codepress.js view on Meta::CPAN
self.style.height = self.textarea.clientHeight +'px';
self.style.width = self.textarea.clientWidth +'px';
self.textarea.style.overflow = 'auto';
self.style.border = '1px solid gray';
self.frameBorder = 0; // remove IE internal iframe border
self.style.visibility = 'hidden';
self.style.position = 'absolute';
self.options = self.textarea.className;
self.initialize = function() {
self.editor = self.contentWindow.CodePress;
self.editor.body = self.contentWindow.document.getElementsByTagName('body')[0];
self.editor.setCode(self.textarea.value);
self.setOptions();
self.editor.syntaxHighlight('init');
self.textarea.style.display = 'none';
self.style.position = 'static';
self.style.visibility = 'visible';
self.style.display = 'inline';
}
// obj can by a textarea id or a string (code)
self.edit = function(obj,language) {
if(obj) self.textarea.value = document.getElementById(obj) ? document.getElementById(obj).value : obj;
if(!self.textarea.disabled) return;
self.language = language ? language : self.getLanguage();
self.src = CodePress.path+'codepress.html?language='+self.language+'&ts='+(new Date).getTime();
if(self.attachEvent) self.attachEvent('onload',self.initialize);
else self.addEventListener('load',self.initialize,false);
}
self.getLanguage = function() {
for (language in CodePress.languages)
cp/codepress/codepress.js view on Meta::CPAN
return CodePress.languages[language] ? language : 'generic';
}
self.setOptions = function() {
if(self.options.match('autocomplete-off')) self.toggleAutoComplete();
if(self.options.match('readonly-on')) self.toggleReadOnly();
if(self.options.match('linenumbers-off')) self.toggleLineNumbers();
}
self.getCode = function() {
return self.textarea.disabled ? self.editor.getCode() : self.textarea.value;
}
self.setCode = function(code) {
self.textarea.disabled ? self.editor.setCode(code) : self.textarea.value = code;
}
self.toggleAutoComplete = function() {
self.editor.autocomplete = (self.editor.autocomplete) ? false : true;
}
self.toggleReadOnly = function() {
self.textarea.readOnly = (self.textarea.readOnly) ? false : true;
if(self.style.display != 'none') // prevent exception on FF + iframe with display:none
self.editor.readOnly(self.textarea.readOnly ? true : false);
}
self.toggleLineNumbers = function() {
var cn = self.editor.body.className;
self.editor.body.className = (cn==''||cn=='show-line-numbers') ? 'hide-line-numbers' : 'show-line-numbers';
}
self.toggleEditor = function() {
if(self.textarea.disabled) {
self.textarea.value = self.getCode();
self.textarea.disabled = false;
self.style.display = 'none';
self.textarea.style.display = 'inline';
}
else {
self.textarea.disabled = true;
self.setCode(self.textarea.value);
self.editor.syntaxHighlight('init');
self.style.display = 'inline';
self.textarea.style.display = 'none';
}
}
self.edit();
return self;
}
CodePress.languages = {
csharp : 'C#',
css : 'CSS',
generic : 'Generic',
html : 'HTML',
java : 'Java',
javascript : 'JavaScript',
cp/codepress/engines/gecko.js view on Meta::CPAN
*
* Read the full licence: http://www.opensource.org/licenses/lgpl-license.php
*/
CodePress = {
scrolling : false,
autocomplete : true,
// set initial vars and start sh
initialize : function() {
if(typeof(editor)=='undefined' && !arguments[0]) return;
body = document.getElementsByTagName('body')[0];
body.innerHTML = body.innerHTML.replace(/\n/g,"");
chars = '|32|46|62|8|'; // charcodes that trigger syntax highlighting
cc = '\u2009'; // carret char
editor = document.getElementsByTagName('pre')[0];
document.designMode = 'on';
document.addEventListener('keypress', this.keyHandler, true);
window.addEventListener('scroll', function() { if(!CodePress.scrolling) CodePress.syntaxHighlight('scroll') }, false);
completeChars = this.getCompleteChars();
completeEndingChars = this.getCompleteEndingChars();
},
// treat key bindings
keyHandler : function(evt) {
keyCode = evt.keyCode;
cp/codepress/engines/gecko.js view on Meta::CPAN
if(!CodePress.completeEnding(fromChar))
CodePress.complete(fromChar);
}
else if(chars.indexOf('|'+charCode+'|')!=-1||keyCode==13) { // syntax highlighting
top.setTimeout(function(){CodePress.syntaxHighlight('generic');},100);
}
else if(keyCode==9 || evt.tabKey) { // snippets activation (tab)
CodePress.snippets(evt);
}
else if(keyCode==46||keyCode==8) { // save to history when delete or backspace pressed
CodePress.actions.history[CodePress.actions.next()] = editor.innerHTML;
}
else if((charCode==122||charCode==121||charCode==90) && evt.ctrlKey) { // undo and redo
(charCode==121||evt.shiftKey) ? CodePress.actions.redo() : CodePress.actions.undo();
evt.preventDefault();
}
else if(charCode==118 && evt.ctrlKey) { // handle paste
top.setTimeout(function(){CodePress.syntaxHighlight('generic');},100);
}
else if(charCode==99 && evt.ctrlKey) { // handle cut
//alert(window.getSelection().getRangeAt(0).toString().replace(/\t/g,'FFF'));
cp/codepress/engines/gecko.js view on Meta::CPAN
if(body.innerHTML=="<br>") body.innerHTML = "<pre> </pre>";
else body.innerHTML = "<pre>"+body.innerHTML+"</pre>";
}
return document.getElementsByTagName('pre')[0];
},
// syntax highlighting parser
syntaxHighlight : function(flag) {
//if(document.designMode=='off') document.designMode='on'
if(flag != 'init') { window.getSelection().getRangeAt(0).insertNode(document.createTextNode(cc));}
editor = CodePress.getEditor();
o = editor.innerHTML;
o = o.replace(/<br>/g,'\n');
o = o.replace(/<.*?>/g,'');
x = z = this.split(o,flag);
x = x.replace(/\n/g,'<br>');
if(arguments[1]&&arguments[2]) x = x.replace(arguments[1],arguments[2]);
for(i=0;i<Language.syntax.length;i++)
x = x.replace(Language.syntax[i].input,Language.syntax[i].output);
editor.innerHTML = this.actions.history[this.actions.next()] = (flag=='scroll') ? x : o.split(z).join(x);
if(flag!='init') this.findString();
},
getLastWord : function() {
var rangeAndCaret = CodePress.getRangeAndCaret();
words = rangeAndCaret[0].substring(rangeAndCaret[1]-40,rangeAndCaret[1]);
words = words.replace(/[\s\n\r\);\W]/g,'\n').split('\n');
return words[words.length-1].replace(/[\W]/gi,'').toLowerCase();
},
cp/codepress/engines/gecko.js view on Meta::CPAN
selct.removeAllRanges();
range.deleteContents();
range.insertNode(node);
// Move the cursor to the end of text
range2.selectNode(node);
range2.collapse(replaceCursorBefore);
selct.removeAllRanges();
selct.addRange(range2);
},
// get code from editor
getCode : function() {
if(!document.getElementsByTagName('pre')[0] || editor.innerHTML == '')
editor = CodePress.getEditor();
var code = editor.innerHTML;
code = code.replace(/<br>/g,'\n');
code = code.replace(/\u2009/g,'');
code = code.replace(/<.*?>/g,'');
code = code.replace(/</g,'<');
code = code.replace(/>/g,'>');
code = code.replace(/&/gi,'&');
return code;
},
// put code inside editor
setCode : function() {
var code = arguments[0];
code = code.replace(/\u2009/gi,'');
code = code.replace(/&/gi,'&');
code = code.replace(/</g,'<');
code = code.replace(/>/g,'>');
editor.innerHTML = code;
if (code == '')
document.getElementsByTagName('body')[0].innerHTML = '';
},
// undo and redo methods
actions : {
pos : -1, // actual history position
history : [], // history vector
undo : function() {
editor = CodePress.getEditor();
if(editor.innerHTML.indexOf(cc)==-1){
if(editor.innerHTML != " ")
window.getSelection().getRangeAt(0).insertNode(document.createTextNode(cc));
this.history[this.pos] = editor.innerHTML;
}
this.pos --;
if(typeof(this.history[this.pos])=='undefined') this.pos ++;
editor.innerHTML = this.history[this.pos];
if(editor.innerHTML.indexOf(cc)>-1) editor.innerHTML+=cc;
CodePress.findString();
},
redo : function() {
// editor = CodePress.getEditor();
this.pos++;
if(typeof(this.history[this.pos])=='undefined') this.pos--;
editor.innerHTML = this.history[this.pos];
CodePress.findString();
},
next : function() { // get next vector position and clean old ones
if(this.pos>20) this.history[this.pos-21] = undefined;
return ++this.pos;
}
}
}
cp/codepress/engines/msie.js view on Meta::CPAN
*
* Read the full licence: http://www.opensource.org/licenses/lgpl-license.php
*/
CodePress = {
scrolling : false,
autocomplete : true,
// set initial vars and start sh
initialize : function() {
if(typeof(editor)=='undefined' && !arguments[0]) return;
chars = '|32|46|62|'; // charcodes that trigger syntax highlighting
cc = '\u2009'; // carret char
editor = document.getElementsByTagName('pre')[0];
editor.contentEditable = 'true';
document.getElementsByTagName('body')[0].onfocus = function() {editor.focus();}
document.attachEvent('onkeydown', this.metaHandler);
document.attachEvent('onkeypress', this.keyHandler);
window.attachEvent('onscroll', function() { if(!CodePress.scrolling) setTimeout(function(){CodePress.syntaxHighlight('scroll')},1)});
completeChars = this.getCompleteChars();
completeEndingChars = this.getCompleteEndingChars();
setTimeout(function() { window.scroll(0,0) },50); // scroll IE to top
},
// treat key bindings
keyHandler : function(evt) {
cp/codepress/engines/msie.js view on Meta::CPAN
}
else if((keyCode==122||keyCode==121||keyCode==90) && evt.ctrlKey) { // undo and redo
(keyCode==121||evt.shiftKey) ? CodePress.actions.redo() : CodePress.actions.undo();
evt.returnValue = false;
}
else if(keyCode==34||keyCode==33) { // handle page up/down for IE
self.scrollBy(0, (keyCode==34) ? 200 : -200);
evt.returnValue = false;
}
else if(keyCode==46||keyCode==8) { // save to history when delete or backspace pressed
CodePress.actions.history[CodePress.actions.next()] = editor.innerHTML;
}
else if((evt.ctrlKey || evt.metaKey) && evt.shiftKey && keyCode!=90) { // shortcuts = ctrl||appleKey+shift+key!=z(undo)
CodePress.shortcuts(keyCode);
evt.returnValue = false;
}
else if(keyCode==86 && evt.ctrlKey) { // handle paste
window.clipboardData.setData('Text',window.clipboardData.getData('Text').replace(/\t/g,'\u2008'));
top.setTimeout(function(){CodePress.syntaxHighlight('paste');},10);
}
else if(keyCode==67 && evt.ctrlKey) { // handle cut
cp/codepress/engines/msie.js view on Meta::CPAN
else if(mid+2000>code.length) {ini=code.length-4000;end=code.length;}
else {ini=mid-2000;end=mid+2000;}
code = code.substring(ini,end);
return code.substring(code.indexOf('<P>'),code.lastIndexOf('</P>')+4);
}
},
// syntax highlighting parser
syntaxHighlight : function(flag) {
if(flag!='init') document.selection.createRange().text = cc;
o = editor.innerHTML;
if(flag=='paste') { // fix pasted text
o = o.replace(/<BR>/g,'\r\n');
o = o.replace(/\u2008/g,'\t');
}
o = o.replace(/<P>/g,'\n');
o = o.replace(/<\/P>/g,'\r');
o = o.replace(/<.*?>/g,'');
o = o.replace(/ /g,'');
o = '<PRE><P>'+o+'</P></PRE>';
o = o.replace(/\n\r/g,'<P></P>');
cp/codepress/engines/msie.js view on Meta::CPAN
o = o.replace(/<P>(<P>)+/,'<P>');
o = o.replace(/<\/P>(<\/P>)+/,'</P>');
o = o.replace(/<P><\/P>/g,'<P><BR/></P>');
x = z = this.split(o,flag);
if(arguments[1]&&arguments[2]) x = x.replace(arguments[1],arguments[2]);
for(i=0;i<Language.syntax.length;i++)
x = x.replace(Language.syntax[i].input,Language.syntax[i].output);
editor.innerHTML = this.actions.history[this.actions.next()] = (flag=='scroll') ? x : o.replace(z,x);
if(flag!='init') this.findString();
},
snippets : function(evt) {
var snippets = Language.snippets;
var trigger = this.getLastWord();
for (var i=0; i<snippets.length; i++) {
if(snippets[i].input == trigger) {
var content = snippets[i].output.replace(/</g,'<');
content = content.replace(/>/g,'>');
if(content.indexOf('$0')<0) content += cc;
else content = content.replace(/\$0/,cc);
content = content.replace(/\n/g,'</P><P>');
var pattern = new RegExp(trigger+cc,"gi");
this.syntaxHighlight('snippets',pattern,content);
}
}
},
readOnly : function() {
editor.contentEditable = (arguments[0]) ? 'false' : 'true';
},
complete : function(trigger) {
var complete = Language.complete;
for (var i=0; i<complete.length; i++) {
if(complete[i].input == trigger) {
var pattern = new RegExp('\\'+trigger+cc);
var content = complete[i].output.replace(/\$0/g,cc);
setTimeout(function () { CodePress.syntaxHighlight('complete',pattern,content)},0); // wait for char to appear on screen
}
cp/codepress/engines/msie.js view on Meta::CPAN
if(typeof document.selection != 'undefined') {
var range = document.selection.createRange();
range.text = repdeb + repfin;
range = document.selection.createRange();
range.move('character', -repfin.length);
range.select();
}
},
// get code from editor
getCode : function() {
var code = editor.innerHTML;
code = code.replace(/<br>/g,'\n');
code = code.replace(/<\/p>/gi,'\r');
code = code.replace(/<p>/i,''); // IE first line fix
code = code.replace(/<p>/gi,'\n');
code = code.replace(/ /gi,'');
code = code.replace(/\u2009/g,'');
code = code.replace(/<.*?>/g,'');
code = code.replace(/</g,'<');
code = code.replace(/>/g,'>');
code = code.replace(/&/gi,'&');
return code;
},
// put code inside editor
setCode : function() {
var code = arguments[0];
code = code.replace(/\u2009/gi,'');
code = code.replace(/&/gi,'&');
code = code.replace(/</g,'<');
code = code.replace(/>/g,'>');
editor.innerHTML = '<pre>'+code+'</pre>';
},
// undo and redo methods
actions : {
pos : -1, // actual history position
history : [], // history vector
undo : function() {
if(editor.innerHTML.indexOf(cc)==-1){
document.selection.createRange().text = cc;
this.history[this.pos] = editor.innerHTML;
}
this.pos--;
if(typeof(this.history[this.pos])=='undefined') this.pos++;
editor.innerHTML = this.history[this.pos];
CodePress.findString();
},
redo : function() {
this.pos++;
if(typeof(this.history[this.pos])=='undefined') this.pos--;
editor.innerHTML = this.history[this.pos];
CodePress.findString();
},
next : function() { // get next vector position and clean old ones
if(this.pos>20) this.history[this.pos-21] = undefined;
return ++this.pos;
}
}
}
cp/codepress/engines/opera.js view on Meta::CPAN
* Read the full licence: http://www.opensource.org/licenses/lgpl-license.php
*/
CodePress = {
scrolling : false,
autocomplete : true,
// set initial vars and start sh
initialize : function() {
if(typeof(editor)=='undefined' && !arguments[0]) return;
chars = '|32|46|62|'; // charcodes that trigger syntax highlighting
cc = '\u2009'; // control char
editor = document.getElementsByTagName('body')[0];
document.designMode = 'on';
document.addEventListener('keyup', this.keyHandler, true);
window.addEventListener('scroll', function() { if(!CodePress.scrolling) CodePress.syntaxHighlight('scroll') }, false);
completeChars = this.getCompleteChars();
// CodePress.syntaxHighlight('init');
},
// treat key bindings
keyHandler : function(evt) {
keyCode = evt.keyCode;
cp/codepress/engines/opera.js view on Meta::CPAN
else if(completeChars.indexOf('|'+String.fromCharCode(charCode)+'|')!=-1 && CodePress.autocomplete) { // auto complete
CodePress.complete(String.fromCharCode(charCode));
}
else if(chars.indexOf('|'+charCode+'|')!=-1||keyCode==13) { // syntax highlighting
CodePress.syntaxHighlight('generic');
}
else if(keyCode==9 || evt.tabKey) { // snippets activation (tab)
CodePress.snippets(evt);
}
else if(keyCode==46||keyCode==8) { // save to history when delete or backspace pressed
CodePress.actions.history[CodePress.actions.next()] = editor.innerHTML;
}
else if((charCode==122||charCode==121||charCode==90) && evt.ctrlKey) { // undo and redo
(charCode==121||evt.shiftKey) ? CodePress.actions.redo() : CodePress.actions.undo();
evt.preventDefault();
}
else if(keyCode==86 && evt.ctrlKey) { // paste
// TODO: pasted text should be parsed and highlighted
}
},
cp/codepress/engines/opera.js view on Meta::CPAN
},
// syntax highlighting parser
syntaxHighlight : function(flag) {
//if(document.designMode=='off') document.designMode='on'
if(flag!='init') {
var span = document.createElement('span');
window.getSelection().getRangeAt(0).insertNode(span);
}
o = editor.innerHTML;
// o = o.replace(/<br>/g,'\r\n');
// o = o.replace(/<(b|i|s|u|a|em|tt|ins|big|cite|strong)?>/g,'');
//alert(o)
o = o.replace(/<(?!span|\/span|br).*?>/gi,'');
// alert(o)
// x = o;
x = z = this.split(o,flag);
//alert(z)
// x = x.replace(/\r\n/g,'<br>');
x = x.replace(/\t/g, ' ');
if(arguments[1]&&arguments[2]) x = x.replace(arguments[1],arguments[2]);
for(i=0;i<Language.syntax.length;i++)
x = x.replace(Language.syntax[i].input,Language.syntax[i].output);
editor.innerHTML = this.actions.history[this.actions.next()] = (flag=='scroll') ? x : o.split(z).join(x);
if(flag!='init') this.findString();
},
getLastWord : function() {
var rangeAndCaret = CodePress.getRangeAndCaret();
words = rangeAndCaret[0].substring(rangeAndCaret[1]-40,rangeAndCaret[1]);
words = words.replace(/[\s\n\r\);\W]/g,'\n').split('\n');
return words[words.length-1].replace(/[\W]/gi,'').toLowerCase();
},
cp/codepress/engines/opera.js view on Meta::CPAN
selct.removeAllRanges();
range.deleteContents();
range.insertNode(node);
// Move the cursor to the end of text
range2.selectNode(node);
range2.collapse(replaceCursorBefore);
selct.removeAllRanges();
selct.addRange(range2);
},
// get code from editor
getCode : function() {
var code = editor.innerHTML;
code = code.replace(/<br>/g,'\n');
code = code.replace(/\u2009/g,'');
code = code.replace(/<.*?>/g,'');
code = code.replace(/</g,'<');
code = code.replace(/>/g,'>');
code = code.replace(/&/gi,'&');
return code;
},
// put code inside editor
setCode : function() {
var code = arguments[0];
code = code.replace(/\u2009/gi,'');
code = code.replace(/&/gi,'&');
code = code.replace(/</g,'<');
code = code.replace(/>/g,'>');
editor.innerHTML = code;
},
// undo and redo methods
actions : {
pos : -1, // actual history position
history : [], // history vector
undo : function() {
if(editor.innerHTML.indexOf(cc)==-1){
window.getSelection().getRangeAt(0).insertNode(document.createTextNode(cc));
this.history[this.pos] = editor.innerHTML;
}
this.pos--;
if(typeof(this.history[this.pos])=='undefined') this.pos++;
editor.innerHTML = this.history[this.pos];
CodePress.findString();
},
redo : function() {
this.pos++;
if(typeof(this.history[this.pos])=='undefined') this.pos--;
editor.innerHTML = this.history[this.pos];
CodePress.findString();
},
next : function() { // get next vector position and clean old ones
if(this.pos>20) this.history[this.pos-21] = undefined;
return ++this.pos;
}
}
}
cp/codepress/index.html view on Meta::CPAN
<td>
<a href="http://www.codepress.org/to-do.php"> To-do </a>
</td>
<td>
<a href="http://www.codepress.org/about.php" id="about"> About </a>
</td>
</tr>
</table>
<h4>
CodePress is web-based source code editor with syntax highlighting written in JavaScript that colors text in real time while it's being typed in the browser.
</h4>
<p>
Go to <strong><a href="http://codepress.org/">http://codepress.org/</a></strong> for updates.
</p>
<h3>Demo</h3>
<div id="languages">
<em>choose example in:</em>
<button onclick="cp1.edit('cp-php','php')">PHP</button>
<button onclick="cp1.edit('cp-javascript','javascript')">JavaScript</button>
<button onclick="cp1.edit('cp-java','java')">Java</button>
<button onclick="cp1.edit('cp-perl','perl')">Perl</button>
<button onclick="cp1.edit('cp-sql','sql')">SQL</button>
<button onclick="cp1.edit('cp-html','html')">HTML</button>
<button onclick="cp1.edit('cp-css','css')">CSS</button>
</div>
<textarea id="cp1" class="codepress php" style="width:700px;height:300px;" wrap="off">
<?php
// Very simple implementation of server side script
if(isset($_GET['file'])) {
$file = basename($_GET['file']);
$full_file = $path['server'].'/'.$path['webdocs'].'/'.$path['files']."/".$file;
if(file_exists($full_file)) {
cp/codepress/index.html view on Meta::CPAN
for(lang in Content.languages) {
extensions = ','+Content.languages[lang].extensions+',';
if(extensions.match(','+extension+',')) aux = lang;
}
language = (aux) ? aux : 'generic';
}
}
</textarea>
<p>
<button class="actions" onclick="alert(codepress2.getCode())">get code from editor</button>
<button class="actions" onclick="codepress2.toggleEditor()">turn on/off CodePress</button>
<button class="actions" onclick="codepress2.toggleLineNumbers()">show/hide line numbers</button>
<button class="actions" onclick="codepress2.toggleAutoComplete()">turn on/off auto-complete</button>
<button class="actions" onclick="codepress2.toggleReadOnly()">turn on/off read only</button>
</p>
<h3>Installation</h3>
<ol>
cp/codepress/index.html view on Meta::CPAN
Add the <code><textarea></code> tag to the place on your page you want CodePress to appear. CodePress will inherit the width and height of your textarea.
When the page loads, it will automatically replace your textarea with a CodePress window.
</p>
<p class="copycode">
<textarea id="myCpWindow" class="codepress javascript linenumbers-off"><br />
// your code here<br />
</textarea>
</p>
<ul>
<li>
The <code>javascript</code> portion of the class="" means that the language being edited is JavaScript.
</li>
<li>
The <code>codepress</code> portion of the class="" is mandatory and indicates a textarea to be replaced for a CodePress window.
</li>
<li>
Other class options are <code>linenumbers-off</code>, <code>autocomplete-off</code> and <code>readonly-on</code>.
</li>
<li>
Careful not to use the same id for two different CodePress windows (<code><textarea id="<strong>xx</strong>"...></code>)
</li>
</ul>
</li>
</ol>
<h3>You also can...</h3>
<ol>
<li>
Open/edit code from a different textarea.<br />
Example: <code>textarea_id.edit('other_textarea_id','language')</code><br>
</li>
<li>
Get code from CodePress window.<br />
Example: <code>textarea_id.getCode()</code><br>
</li>
<li>
Turn on/off CodePress editor and return to the regular textarea.<br />
Example: <code>textarea_id.toggleEditor()</code><br>
</li>
<li>
Turn on/off line numbers.<br />
Example: <code>textarea_id.toggleLineNumbers()</code><br>
</li>
<li>
Turn on/off read only.<br />
Example: <code>textarea_id.toggleReadOnly()</code><br>
</li>
<li>
Turn on/off auto-complete.<br />
Example: <code>textarea_id.toggleAutoComplete()</code><br>
</li>
</ol>
<!-- p>
You may want to use [id].getCode() to get the content code from CodePress window and save it to your server since CodePress only edit files and do not save them.
</p>
<p>
You may also want to open files from server. You'll have to write a server side script and replace the JavaScript call on codepress.js from codepress.html to codepress.php (if your server side language is PHP, of course).
</p -->
<h3>License</h3>
<p>
CodePress is distributed under the <a href="http://www.opensource.org/licenses/lgpl-license.php">LGPL</a>. If your software is <a href="http://www.gnu.org/philosophy/license-list.html#GPLCompatibleLicenses">compatible</a> with this licence or it is ...
</p>
</div><!--/container-->
<!-- hidden codes for loading -->
<textarea id="cp-php" class="hidden-code">
<?php
cp/codepress/index.html view on Meta::CPAN
<textarea id="cp-javascript" class="hidden-code">
CodePress = function(obj) {
var self = document.createElement('iframe');
self.textarea = obj;
self.textarea.disabled = true;
self.style.height = self.textarea.clientHeight +'px';
self.style.width = self.textarea.clientWidth +'px';
self.initialize = function() {
self.editor = self.contentWindow.CodePress;
self.editor.body = self.contentWindow.document.getElementsByTagName('body')[0];
self.editor.setCode(self.textarea.value);
self.editor.syntaxHighlight('init');
}
self.edit = function(id,language) {
self.language = (language) ? language : self.textarea.className.replace(/ ?codepress ?/,'');
self.src = cpPath+'modules/codepress.html?engine='+self.getEngine()+'&language='+self.language;
if(self.attachEvent) self.attachEvent('onload',self.initialize);
else self.addEventListener('load',self.initialize,false);
}
}
</textarea>
<textarea id="cp-autoit" class="hidden-code">
#include
cp/codepress/index.html view on Meta::CPAN
</script>
</head>
<body>
<div id="logo">
<h1><a href="http://codepress.org/">CodePress</a></h1>
<h2>Online Real Time Syntax Highlighting Editor</h2>
<img src="testimage.gif" />
</div>
<div id="languages">
<em>choose language:</em>
<button onclick="edit('codepress.php',this)" id="default">PHP</button>
<button onclick="edit('FileManager.java',this)">Java</button>
</div>
</body>
</html>
</textarea>
<textarea id="cp-css" class="hidden-code">
/* CSS comment */
body {
color:#000;