Made tab character(s) configurable (see index.php)

master
Jordi Boggiano 14 years ago
parent 399ee95027
commit a368fe9811
  1. 1
      README.mdown
  2. 9
      index.php
  3. 102
      php-console.js

@ -36,6 +36,7 @@ Changelog
- Added a toggle button to expand/collapse all krumo sub-trees at once
- Cross-browser compatibility enhancements
- Removing a tab (i.e. 4 spaces) on backspace now
- Made tab character(s) configurable (see index.php)
- 1.0.0
- Initial Public Release

@ -1,5 +1,10 @@
<?php
$options = array(
// which string should represent a tab for indentation
'tab' => ' ',
);
/**
* PHP Console
*
@ -67,6 +72,10 @@ if (isset($_POST['code'])) {
<script type="text/javascript" src="jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="jquery.selections.js"></script>
<script type="text/javascript" src="php-console.js"></script>
<script type="text/javascript">
$.console({
tab: <?php echo json_encode($options['tab']) ?>
});
</script>
</head>
<body>

@ -11,9 +11,13 @@
*
* Source on Github http://github.com/Seldaek/php-console
*/
$(function() {
(function() {
var updateStatusBar, handleKeyPress;
var updateStatusBar, handleKeyPress, options;
options = {
tab: ' '
}
// updates the text of the status bar
updateStatusBar = function() {
@ -35,12 +39,12 @@ $(function() {
};
handleKeyPress = function(e) {
var caret, part, matches;
var caret, part, matches, re;
switch(e.keyCode) {
case 9:
// add 4 spaces when tab is pressed
e.preventDefault();
$(this).injectText(" ");
$(this).injectText(options.tab);
break;
case 13:
// submit form on ctrl-enter or alt-enter
@ -53,7 +57,7 @@ $(function() {
// indent automatically the new lines
caret = $(this).getCaret();
part = $(this).val().substr(0, caret);
matches = part.match(/(\n +)[^\r\n]*$/);
matches = part.match(/(\n[ \t]+)[^\r\n]*$/);
if (matches) {
$(this).val(function(idx, val) {
return val.substring(0, caret) + matches[1] + val.substring(caret);
@ -66,11 +70,12 @@ $(function() {
// deindent automatically on backspace
caret = $(this).getCaret();
part = $(this).val().substr(0, caret);
if (part.match(/\n( {4,})$/)) {
re = new RegExp('\n[ \t]*?'+options.tab+'$');
if (part.match(re)) {
$(this).val(function(idx, val) {
return val.substring(0, caret - 4) + val.substring(caret);
return val.substring(0, caret - options.tab.length) + val.substring(caret);
});
$(this).setCaret(caret - 4);
$(this).setCaret(caret - options.tab.length);
e.preventDefault();
}
break;
@ -79,48 +84,55 @@ $(function() {
updateStatusBar();
};
$('textarea[name="code"]')
.keyup(updateStatusBar)
.click(updateStatusBar)
.focus();
$.console = function(settings) {
$.extend(options, settings);
if ($.browser.opera) {
$('textarea[name="code"]').keypress(handleKeyPress);
} else {
$('textarea[name="code"]').keydown(handleKeyPress);
}
$(function() {
$('textarea[name="code"]')
.keyup(updateStatusBar)
.click(updateStatusBar)
.focus();
updateStatusBar();
if ($.browser.opera) {
$('textarea[name="code"]').keypress(handleKeyPress);
} else {
$('textarea[name="code"]').keydown(handleKeyPress);
}
$('input[name="subm"]').keyup(function(e) {
// set the focus back to the textarea if pressing tab moved
// the focus to the submit button (opera bug)
if (e.keyCode === 9) {
$('textarea[name="code"]').focus();
}
});
updateStatusBar();
$('form').submit(function(e){
e.preventDefault();
$('div.output').html('<img src="loader.gif" class="loader" alt="" /> Loading ...');
$.post('?js=1', $(this).serializeArray(), function(res) {
if (res.match(/#end-php-console-output#$/)) {
$('div.output').html(res.substring(0, res.length-24));
} else {
$('div.output').html(res + "<br /><br /><em>Script ended unexpectedly.</em>");
$('input[name="subm"]').keyup(function(e) {
// set the focus back to the textarea if pressing tab moved
// the focus to the submit button (opera bug)
if (e.keyCode === 9) {
$('textarea[name="code"]').focus();
}
});
$('form').submit(function(e){
e.preventDefault();
$('div.output').html('<img src="loader.gif" class="loader" alt="" /> Loading ...');
$.post('?js=1', $(this).serializeArray(), function(res) {
if (res.match(/#end-php-console-output#$/)) {
$('div.output').html(res.substring(0, res.length-24));
} else {
$('div.output').html(res + "<br /><br /><em>Script ended unexpectedly.</em>");
}
});
});
// adds a toggle button to expand/collapse all krumo sub-trees at once
if ($('.krumo-expand').length > 0) {
$('<a class="expand" href="#">Toggle all</a>')
.click(function(e) {
$('div.krumo-element.krumo-expand').each(function(idx, el) {
krumo.toggle(el);
});
e.preventDefault();
})
.prependTo('.output');
}
});
});
// adds a toggle button to expand/collapse all krumo sub-trees at once
if ($('.krumo-expand').length > 0) {
$('<a class="expand" href="#">Toggle all</a>')
.click(function(e) {
$('div.krumo-element.krumo-expand').each(function(idx, el) {
krumo.toggle(el);
});
e.preventDefault();
})
.prependTo('.output');
}
});
}());
Loading…
Cancel
Save