FELIX-2189 Hide the shell form if the ShellService is not available. Also rename the "console"
script variable to "konsole" to prevent a naming conflict with Firebug ....
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@922248 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ShellServlet.java b/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ShellServlet.java
index 8798038..20ed945 100644
--- a/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ShellServlet.java
+++ b/webconsole/src/main/java/org/apache/felix/webconsole/internal/misc/ShellServlet.java
@@ -29,6 +29,7 @@
import javax.servlet.http.HttpServletResponse;
import org.apache.felix.shell.ShellService;
+import org.apache.felix.webconsole.DefaultVariableResolver;
import org.apache.felix.webconsole.SimpleWebConsolePlugin;
import org.apache.felix.webconsole.WebConsoleUtil;
import org.apache.felix.webconsole.internal.OsgiManagerPlugin;
@@ -125,6 +126,14 @@
*/
protected void renderContent( HttpServletRequest request, HttpServletResponse response ) throws IOException
{
+ DefaultVariableResolver vr = ( DefaultVariableResolver ) WebConsoleUtil.getVariableResolver( request );
+ if ( getShellService() == null )
+ {
+ vr.put( "shell.status", "Shell Service not available" );
+ vr.put( "shell.disabled", "true" );
+ } else {
+ vr.put( "shell.disabled", "false" );
+ }
response.getWriter().print(TEMPLATE);
}
diff --git a/webconsole/src/main/resources/res/ui/shell.js b/webconsole/src/main/resources/res/ui/shell.js
index 8a79c8e..7d34014 100644
--- a/webconsole/src/main/resources/res/ui/shell.js
+++ b/webconsole/src/main/resources/res/ui/shell.js
@@ -17,14 +17,14 @@
// elements cache
var consoleframe = false;
-var console = false;
+var konsole = false;
var command = false;
function executeCommand(cmd) {
$.post(document.location.href, { 'command' : encodeURIComponent(cmd) },
function(result) {
- console.removeClass('ui-helper-hidden').append(result);
- consoleframe.attr('scrollTop', console.attr('scrollHeight'));
+ konsole.removeClass('ui-helper-hidden').append(result);
+ consoleframe.attr('scrollTop', konsole.attr('scrollHeight'));
command.val('');
shellCommandFocus();
}, 'html');
@@ -34,22 +34,32 @@
// automatically executed on load
$(document).ready(function(){
- // init cache
- consoleframe = $('#consoleframe').click(shellCommandFocus);
- console = $('#console');
- command = $('#command').focus();
-
- // attach action handlers
- $('#clear').click(function() {
- console.addClass('ui-helper-hidden').html('');
- consoleframe.attr('scrollTop', 0);
- shellCommandFocus();
- });
- $('#help').click(function() {
- executeCommand('help');
- });
- $('form').submit(function() {
- executeCommand(command.val());
- return false;
- });
+
+ // disable the shell form if the shell service is not available
+ if (shellDisabled) {
+
+ $('#shell_form').hide();
+
+ } else {
+
+ // init cache
+ consoleframe = $('#consoleframe').click(shellCommandFocus);
+ konsole = $('#console');
+ command = $('#command').focus();
+
+ // attach action handlers
+ $('#clear').click(function() {
+ konsole.addClass('ui-helper-hidden').html('');
+ consoleframe.attr('scrollTop', 0);
+ shellCommandFocus();
+ });
+ $('#help').click(function() {
+ executeCommand('help');
+ });
+ $('form').submit(function() {
+ executeCommand(command.val());
+ return false;
+ });
+
+ }
});
diff --git a/webconsole/src/main/resources/templates/shell.html b/webconsole/src/main/resources/templates/shell.html
index 9a648a4..f0ed65c 100644
--- a/webconsole/src/main/resources/templates/shell.html
+++ b/webconsole/src/main/resources/templates/shell.html
@@ -1,8 +1,12 @@
<script type="text/javascript" src="res/ui/shell.js"></script>
-
+<script type="text/javascript">
+// <![CDATA[
+var shellDisabled = ${shell.disabled};
+// ]]>
+</script>
<p class="statline">${shell.status}</p>
-<form method="post" action="${pluginRoot}">
+<form id="shell_form" method="post" action="${pluginRoot}">
<!-- top header -->
<div class="ui-widget-header ui-corner-top buttonGroup">
<input id="help" value="${help}" type="button" />