[svn-commits] twilson: branch 1.8 r291575 - in /branches/1.8: ./ static-http/

SVN commits to the Digium repositories svn-commits at lists.digium.com
Wed Oct 13 17:24:49 CDT 2010


Author: twilson
Date: Wed Oct 13 17:24:44 2010
New Revision: 291575

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=291575
Log:
Add a simple AMI client web page

This patch uses the XML docs to parse all of the available AMI commands
and allows you to enter the command name and be presented with a form with
the available fields. You can then rapidly tab through the fields and submit
the command and view the response. It is much faster/easier than having to
use telnet for testing purposes.

Added:
    branches/1.8/static-http/mantest.html   (with props)
Modified:
    branches/1.8/Makefile

Modified: branches/1.8/Makefile
URL: http://svnview.digium.com/svn/asterisk/branches/1.8/Makefile?view=diff&rev=291575&r1=291574&r2=291575
==============================================================================
--- branches/1.8/Makefile (original)
+++ branches/1.8/Makefile Wed Oct 13 17:24:44 2010
@@ -449,7 +449,7 @@
 	rm -rf doc/api
 	rm -f build_tools/menuselect-deps
 
-datafiles: _all
+datafiles: _all doc/core-en_US.xml
 	CFLAGS="$(_ASTCFLAGS) $(ASTCFLAGS)" build_tools/mkpkgconfig $(DESTDIR)$(libdir)/pkgconfig;
 # Should static HTTP be installed during make samples or even with its own target ala
 # webvoicemail?  There are portions here that *could* be customized but might also be
@@ -458,6 +458,7 @@
 	for x in static-http/*; do \
 		$(INSTALL) -m 644 $$x $(DESTDIR)$(ASTDATADIR)/static-http ; \
 	done
+	$(INSTALL) -m 644 doc/core-en_US.xml $(DESTDIR)$(ASTDATADIR)/static-http;
 	if [ -d doc/tex/asterisk ] ; then \
 		$(INSTALL) -d $(DESTDIR)$(ASTDATADIR)/static-http/docs ; \
 		for n in doc/tex/asterisk/* ; do \

Added: branches/1.8/static-http/mantest.html
URL: http://svnview.digium.com/svn/asterisk/branches/1.8/static-http/mantest.html?view=auto&rev=291575
==============================================================================
--- branches/1.8/static-http/mantest.html (added)
+++ branches/1.8/static-http/mantest.html Wed Oct 13 17:24:44 2010
@@ -1,0 +1,177 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+	<style type="text/css">
+		#container {
+			margin: 0 auto;
+			width: 100%;
+			height: 100%;
+			background: #fff;
+		}
+		#top {
+			float: left;
+			width: 100%;
+			background: #fff;
+		}
+		#bottom {
+			float: left;
+			width: 100%;
+			background: #fff;
+		}
+		#sender {
+			clear: left;
+			float: left;
+			width: 20%;
+			display: inline;
+			overflow: auto;
+		}
+		#output {
+			float: right;
+			width: 79%;
+			display: inline;
+			overflow: auto;
+			border: thin solid black;
+		}
+		.required {
+			color: red;
+		}
+	</style>
+	<title>Manager Utility</title>
+	<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
+
+	<script type="text/javascript">
+
+$(document).ready(function() {
+	$('#output').height($(document).height() - $('#top').height() - 100);
+	$.ajax({
+		type: "GET",
+		url: "core-en_US.xml",
+		dataType: "xml",
+		success: parseXml
+	});
+
+	$("#login").submit(function() {
+		$("#output").empty();
+		submitCommand($(this));
+		$("#command").focus();
+		return false;
+	});
+
+	$("#search_button").click(function() {
+		var command = $("#command").val();
+		$("#command").val("");
+		$("#output").empty();
+		if (commands) {
+			commands.each(function() {
+				if ($(this).attr("name").toLowerCase() == command.toLowerCase()) {
+					buildCommandForm($(this));
+				}
+			});
+		}
+		$('#output').height($(document).height() - $('#top').height() - 100);
+		return false;
+	});
+	$('#command').keyup(function(event) {
+		if (event.keyCode == '13') {
+			return;
+		}
+		var matches = [];
+		var search = $("#command").val().toLowerCase();
+		$("#output").empty();
+		if (search.length && commands) {
+			commands.each(function() {
+				var com = $(this).attr("name").toLowerCase();
+				if (com.substr(0, search.length) === search) {
+					matches.push(com);
+				}
+			});
+		}
+		if (matches.length) {
+			$("#output").append(matches.sort().join("<br/>"));
+		}
+	});
+});
+
+function parseXml(xml) {
+	commands = $(xml).find("manager")
+}
+
+function buildCommandForm(command) {
+	var name = command.attr("name");
+	var i = 0;
+	$("#sendcommand").empty();
+	$("#sendcommand").unbind('submit');
+	$("#sendcommand").append('<label>Action:&nbsp;</label><input name="action" readonly="readonly" value="'+name+'"/><br />');
+	command.find("parameter").each(function() {
+		var param = $(this).attr("name");
+		if (param != "ActionID") {
+			$("#sendcommand").append('<label for="'+param+'">'+param+':&nbsp;</label><input name="'+param+'" /><br />');
+			if ($(this).attr("required")) {
+				$('label[for='+param+']').addClass("required");
+			}
+			if (i == 0) {
+				$("input[name="+param+"]").focus();
+			}
+			i++;
+		}
+	});
+	$("#sendcommand").append('<button type="submit" id="commandbutton">Send</button>');
+	$("#sendcommand").submit(function() {
+		$("#output").empty();
+		submitCommand($(this));
+		$("#command").focus();
+		return false;
+	});
+
+	// If we don't have any fields to fill in, go ahead and submit!
+	if (i == 0) {
+		$("#sendcommand").submit();
+	}
+}
+
+function submitCommand(form) {
+	$.ajax({
+		type: "GET",
+		url: "../rawman",
+		dataType: "text",
+		data: $(form).serializeArray(),
+		success: displayResponse,
+		failure: function() {alert("Error!");}
+	});
+	return false;
+}
+
+function displayResponse(data) {
+	data = data.replace(/\r\n/g, "<br />");
+	$("#output").append(data);
+	return false;
+}
+
+	</script>
+</head>
+
+<body>
+	<div id="container">
+		<div id="top">
+			<form id="login" name="login">
+				<label for="username">Username:&nbsp;</label><input id="username" name="username" />
+				<label for="secret">Secret:&nbsp;</label><input id="secret" name="secret" type="password"/>
+				<input type="hidden" name="action" value="login" />
+				<button id="login_button" type="submit">Submit</button>
+			</form>
+			<hr />
+			<form id="search" name="search">
+				<label for="txt">Action:&nbsp;</label><input name="command" id="command"/>
+				<button id="search_button">Submit</button>
+			</form>
+		</div>
+		<hr />
+		<div id="bottom">
+			<div id="sender">
+				<form id="sendcommand" name="sendcommand"></form>
+			</div>
+			<div id="output"></div>
+		</div>
+	</div>
+</body>
+</html>

Propchange: branches/1.8/static-http/mantest.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: branches/1.8/static-http/mantest.html
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Propchange: branches/1.8/static-http/mantest.html
------------------------------------------------------------------------------
    svn:mime-type = text/plain




More information about the svn-commits mailing list