major overhaul of the manage app's api-documentation functions.
things can now be rendered to static html, new helma features are supported (prototype extension), everyhting is done in a nice and clean way with skins.
This commit is contained in:
parent
76bbe4053b
commit
7633e98eea
59 changed files with 1052 additions and 578 deletions
|
@ -149,20 +149,53 @@ function countFreeEvaluators_macro() {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Macro formatting the 5min average of requests.
|
* Macro returning the current number of objects in the cache
|
||||||
*/
|
*/
|
||||||
function getRequestAvg_macro(par) {
|
function cacheusage_macro (param) {
|
||||||
if ( app.requestStat==null || app.requestStat.get(this.name)==null )
|
return this.getCacheUsage ();
|
||||||
return 0;
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Macro returning the number of objects allowed in the cache
|
||||||
|
*/
|
||||||
|
function cachesize_macro (param) {
|
||||||
|
return this.getProperty ("cachesize", "1000");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Macro formatting the number of requests in the last 5 minutes
|
||||||
|
*/
|
||||||
|
function requestCount_macro(par) {
|
||||||
|
if (app.data.stat==null || app.data.stat.get (this.name)==null)
|
||||||
|
return "not available";
|
||||||
if (this.isActive()) {
|
if (this.isActive()) {
|
||||||
var obj = app.requestStat.get(this.name);
|
var obj = app.data.stat.get (this.name);
|
||||||
return obj.last5Min + formatCount(obj.last5Min,par);
|
return obj.requestCount + formatCount (obj.requestCount, par);
|
||||||
} else {
|
} else {
|
||||||
return 0 + formatCount (0,par);
|
return 0 + formatCount (0,par);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Macro formatting the number of errors in the last 5 minutes
|
||||||
|
*/
|
||||||
|
function errorCount_macro(par) {
|
||||||
|
if (app.data.stat==null || app.data.stat.get (this.name)==null)
|
||||||
|
return "not available";
|
||||||
|
if (this.isActive()) {
|
||||||
|
var obj = app.data.stat.get (this.name);
|
||||||
|
return obj.errorCount + formatCount (obj.errorCount, par);
|
||||||
|
} else {
|
||||||
|
return 0 + formatCount (0,par);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Macro formatting app.properties
|
* Macro formatting app.properties
|
||||||
*/
|
*/
|
||||||
|
@ -170,3 +203,8 @@ function properties_macro(par) {
|
||||||
formatProperties( this.getProperties(), par );
|
formatProperties( this.getProperties(), par );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function appdir_macro (param) {
|
||||||
|
return this.getAppDir ().toString ();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,10 @@
|
||||||
* renders AppManager
|
* renders AppManager
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ( checkAddress()==false ) return;
|
if (checkAddress()==false)
|
||||||
if ( checkAuth(this)==false ) return;
|
return;
|
||||||
|
if (checkAuth(this)==false)
|
||||||
|
return;
|
||||||
|
|
||||||
res.data.body = this.renderSkinAsString("main");
|
res.data.body = this.renderSkinAsString("main");
|
||||||
renderSkin ("global");
|
renderSkin ("global");
|
||||||
|
|
|
@ -1,42 +1,62 @@
|
||||||
<% this.skin name="head" %>
|
<% this.skin name="head" %>
|
||||||
|
|
||||||
<table width="100%" border="0" cellspacing="0" cellpadding="3">
|
<table width="100%" border="0" cellspacing="0" cellpadding="3">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="list_separator" colspan="3">application</td>
|
<td class="list_separator" colspan="3">application</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table border="0" cellspacing="0" cellpadding="3">
|
||||||
<tr>
|
<tr>
|
||||||
<td class="list_property" align="right" width="200">active sessions:</td>
|
<td class="list_property" align="left">active sessions</td>
|
||||||
<td class="list_property" width="5"> </td>
|
<td class="list_property" width="5"> </td>
|
||||||
<td class="list_property" align="left"><% this.countSessions %></td>
|
<td class="list_property" align="left"><% this.countSessions %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="list_property" align="right" width="200"><a href="<% this.href action="main" %>?showusers=true">logged-in users:</a></td>
|
<td class="list_property" align="left"><a href="<% this.href action="main" %>?showusers=true">logged-in users</a></td>
|
||||||
<td class="list_property" width="5"> </td>
|
<td class="list_property" width="5"> </td>
|
||||||
<td class="list_property" align="left"><% this.users %> </td>
|
<td class="list_property" align="left"><% this.users %> </td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="list_property" align="right" width="200">active evaluators:</td>
|
<td class="list_property" align="left">active evaluators</td>
|
||||||
<td class="list_property" width="5"> </td>
|
<td class="list_property" width="5"> </td>
|
||||||
<td class="list_property" align="left"><% this.countActiveEvaluators %></td>
|
<td class="list_property" align="left"><% this.countActiveEvaluators %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="list_property" align="right" width="200">free evaluators:</td>
|
<td class="list_property" align="left">free evaluators</td>
|
||||||
<td class="list_property" width="5"> </td>
|
<td class="list_property" width="5"> </td>
|
||||||
<td class="list_property" align="left"><% this.countFreeEvaluators %></td>
|
<td class="list_property" align="left"><% this.countFreeEvaluators %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="list_property" align="right" width="200">requests / 5 min:</td>
|
<td class="list_property" align="left">requests / 5 min</td>
|
||||||
<td class="list_property" width="5"> </td>
|
<td class="list_property" width="5"> </td>
|
||||||
<td class="list_property" align="left"><% this.getRequestAvg %></td>
|
<td class="list_property" align="left"><% this.requestCount %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="list_property" align="right" width="200">uptime:</td>
|
<td class="list_property" align="left">errors / 5 min</td>
|
||||||
|
<td class="list_property" width="5"> </td>
|
||||||
|
<td class="list_property" align="left"><% this.errorCount %></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="list_property" align="left">cache usage</td>
|
||||||
|
<td class="list_property" width="5"> </td>
|
||||||
|
<td class="list_property" align="left"><% this.cacheusage %> objects of <% this.cachesize %></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="list_property" align="left">uptime</td>
|
||||||
<td class="list_property" width="5"> </td>
|
<td class="list_property" width="5"> </td>
|
||||||
<td class="list_property" align="left"><% this.uptime %></td>
|
<td class="list_property" align="left"><% this.uptime %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="list_separator" colspan="3">app.properties</td>
|
<td class="list_property" align="left">app directory</td>
|
||||||
|
<td class="list_property" width="5"> </td>
|
||||||
|
<td class="list_property" align="left"><% this.appdir %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<% this.properties itemprefix='<tr><td class="list_property" align="right" valign="top" width="200">' separator='</td><td class="list_property" width="5"> </td><td class="list_property" align="left" valign="top">' itemsuffix='</td></tr>' % -->
|
</table>
|
||||||
|
|
||||||
|
<table width="100%" border="0" cellspacing="0" cellpadding="3">
|
||||||
|
<tr>
|
||||||
|
<td class="list_separator" colspan="3">app.properties</td>
|
||||||
|
</tr>
|
||||||
|
<% this.properties itemprefix='<tr><td class="list_property" valign="top">' separator='</td><td class="list_property" width="5"> </td><td class="list_property" valign="top">' itemsuffix='</td></tr>' %>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* prints session- and thread-stats for mrtg-tool
|
* prints session- and thread-stats for mrtg-tool
|
||||||
* doesn't check username or password, so that we don't have
|
* doesn't check username or password, so that we don't have
|
||||||
* to write them cleartext in a mrtg-configfile
|
* to write them cleartext in a mrtg-configfile but checks the
|
||||||
|
* remote address.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if ( checkAddress()==false ) return;
|
if ( checkAddress()==false )
|
||||||
|
return;
|
||||||
|
|
||||||
if ( this.isActive()==false ) {
|
if ( this.isActive()==false ) {
|
||||||
res.write ( "0\n0\n0\n0\n");
|
res.write ( "0\n0\n0\n0\n");
|
||||||
|
@ -12,12 +15,28 @@ if ( this.isActive()==false ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (req.data.action=="sessions") {
|
if (req.data.action=="sessions") {
|
||||||
res.write ( this.sessions.size() + "\n0\n0\n0\n" );
|
|
||||||
return;
|
res.write (this.sessions.size());
|
||||||
|
res.write ("\n0\n0\n0\n");
|
||||||
|
|
||||||
|
} else if (req.data.action=="threads") {
|
||||||
|
|
||||||
|
res.write (this.countActiveEvaluators () + "\n");
|
||||||
|
res.write (this.countEvaluators () + "\n");
|
||||||
|
res.write ("0\n0\n");
|
||||||
|
|
||||||
|
} else if (req.data.action=="cache") {
|
||||||
|
|
||||||
|
res.write (this.getCacheUsage () + "\n");
|
||||||
|
res.write (this.getProperty ("cachesize", "1000") + "\n");
|
||||||
|
res.write ("0\n0\n");
|
||||||
|
|
||||||
|
} else if (req.data.action=="requests") {
|
||||||
|
|
||||||
|
// res.write (
|
||||||
|
|
||||||
|
} else {
|
||||||
|
res.write ( "0\n0\n0\n0\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( req.data.action=="threads" ) {
|
|
||||||
res.write ( this.countActiveEvaluators() + "\n" + this.countFreeEvaluators() + "\n0\n0\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -2,14 +2,15 @@
|
||||||
<b><a href="<% this.href action="main" %>"><% this.title %></a></b><br />
|
<b><a href="<% this.href action="main" %>"><% this.title %></a></b><br />
|
||||||
<small><% this.countSessions singular=" Session" plural=" Sessions" %>, <% this.getRequestAvg singular=" Request" plural=" Requests" %>/5min</small>
|
<small><% this.countSessions singular=" Session" plural=" Sessions" %>, <% this.getRequestAvg singular=" Request" plural=" Requests" %>/5min</small>
|
||||||
<div align="right">
|
<div align="right">
|
||||||
<!--<table border="0" cellspacing="0" cellpadding="0">
|
<table border="0" cellspacing="0" cellpadding="0">
|
||||||
<tr>
|
<tr>
|
||||||
<td align="right" valign="top"><small>
|
<td align="right" valign="top"><small>
|
||||||
|
<a href="<% this.href action="api" %>/render">render AppDoc</a>
|
||||||
<a href="<% this.href action="api" %>/main">AppDoc</a>
|
<a href="<% this.href action="api" %>/main">AppDoc</a>
|
||||||
<a href="<% root.href action="main" %>?app=<% this.title %>&action=flush">flush</a>
|
<a href="<% root.href action="main" %>?app=<% this.title %>&action=flush">flush</a>
|
||||||
<a href="<% root.href action="main" %>?app=<% this.title %>&action=restart">restart</a>
|
<a href="<% root.href action="main" %>?app=<% this.title %>&action=restart">restart</a>
|
||||||
</small></td>
|
</small></td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>-->
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
95
DocApplication/actions.js
Normal file
95
DocApplication/actions.js
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
function main_action () {
|
||||||
|
this.renderSkin ("frameset");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function prototypes_action () {
|
||||||
|
res.data.body = this.renderSkinAsString ("prototypes");
|
||||||
|
renderSkin ("api");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function summary_action () {
|
||||||
|
res.data.body = this.renderSkinAsString ("summary");
|
||||||
|
renderSkin ("api");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function render_action () {
|
||||||
|
res.write ("<html><head><title>render</title></head><body>rendering ... " + new Date () );
|
||||||
|
var prefix = this.href ("");
|
||||||
|
this.storePage (this, "main");
|
||||||
|
this.storePage (this, "prototypes");
|
||||||
|
this.storePage (this, "summary");
|
||||||
|
var arr = this.listChildren ();
|
||||||
|
for (var i=0; i<arr.length; i++) {
|
||||||
|
this.storePage (arr[i], "list", "../");
|
||||||
|
this.storePage (arr[i], "main", "../");
|
||||||
|
res.writeln (arr[i]);
|
||||||
|
var subarr = arr[i].listChildren ();
|
||||||
|
for (var j=0; j<subarr.length; j++) {
|
||||||
|
this.storePage (subarr[j], "main", "../../");
|
||||||
|
res.writeln (subarr[j]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function getDocPrototype (obj) {
|
||||||
|
var tmp = obj;
|
||||||
|
while (tmp!=null && tmp.getType () != this.PROTOTYPE) {
|
||||||
|
tmp = tmp.getParentElement ();
|
||||||
|
}
|
||||||
|
return tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
function getDir (dir, obj) {
|
||||||
|
dir.mkdir ();
|
||||||
|
if (obj.getType () == this.APPLICATION) {
|
||||||
|
return dir;
|
||||||
|
} else if (obj.getType () == this.PROTOTYPE) {
|
||||||
|
var protoObj = this.getDocPrototype (obj);
|
||||||
|
var dir = new File (dir, protoObj.getElementName ());
|
||||||
|
dir.mkdir ();
|
||||||
|
return dir;
|
||||||
|
} else {
|
||||||
|
var protoObj = this.getDocPrototype (obj);
|
||||||
|
var dir = this.getDir (dir, protoObj);
|
||||||
|
res.writeln("dir="+dir);
|
||||||
|
dir = new File (dir, obj.getElementName ());
|
||||||
|
res.writeln("dir="+dir);
|
||||||
|
dir.mkdir ();
|
||||||
|
return dir;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function storePage (obj, action, backPath) {
|
||||||
|
var str = this.getPage (obj, action, backPath);
|
||||||
|
var appObj = this.getParentElement ();
|
||||||
|
var dir = new File (appObj.getAppDir ().getAbsolutePath (), ".docs");
|
||||||
|
dir = this.getDir (dir, obj);
|
||||||
|
var f = new File (dir, action + ".html");
|
||||||
|
f.remove ();
|
||||||
|
f.open ();
|
||||||
|
f.write (str);
|
||||||
|
f.close ();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function getPage (obj, action, backPath) {
|
||||||
|
backPath = (backPath==null) ? "" : backPath;
|
||||||
|
res.pushStringBuffer ();
|
||||||
|
eval ("obj." + action + "_action ();");
|
||||||
|
var str = res.popStringBuffer ();
|
||||||
|
var reg = new RegExp ("href=\"" + this.href ("") + "([^\"]+)\"");
|
||||||
|
reg.global = true;
|
||||||
|
str = str.replace (reg, "href=\"" + backPath + "$1.html\"");
|
||||||
|
var reg = new RegExp ("src=\"" + this.href ("") + "([^\"]+)\"");
|
||||||
|
reg.global = true;
|
||||||
|
str = str.replace (reg, "src=\"" + backPath + "$1.html\"");
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
31
DocApplication/frameset.skin
Normal file
31
DocApplication/frameset.skin
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>helma api / <% this.name %></title>
|
||||||
|
<script language="javascript"><!--
|
||||||
|
function changePrototypeList (obj) {
|
||||||
|
if (obj.href.indexOf (".html")>-1)
|
||||||
|
var newhref = obj.href.substring (0, obj.href.length-9) + "list.html";
|
||||||
|
else
|
||||||
|
var newhref = obj.href.substring (0, obj.href.length-4) + "list";
|
||||||
|
functions.location.href = newhref;
|
||||||
|
}
|
||||||
|
//--></script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<frameset cols="30%,70%">
|
||||||
|
<frameset rows="40%,60%">
|
||||||
|
<frame src="<% this.href action="prototypes" %>" name="prototypes">
|
||||||
|
<frame src="<% this.hrefRoot action="list" %>" name="functions">
|
||||||
|
</frameset>
|
||||||
|
<frame src="<% this.href action="summary" %>" name="main">
|
||||||
|
</frameset>
|
||||||
|
<noframes>
|
||||||
|
<h2>
|
||||||
|
Frame Alert</h2>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
This document is designed to be viewed using the frames feature. If you see this message, you are using a non-frame-capable web client.
|
||||||
|
</noframes>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
<P><big>AppDoc <% this.name %><br/></big></p>
|
|
||||||
<p><% param.path %></p>
|
|
||||||
<p> ->
|
|
||||||
<a href="<% this.parentlink %>">AppManager</a> |
|
|
||||||
<a href="<% this.parentlink action="redirectpublic" %>">public</a>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
|
|
||||||
<h2>AppDoc <% this.name %></h2>
|
|
||||||
<a name="Index"><!-- --></a>
|
|
||||||
|
|
||||||
|
|
||||||
<table width="100%" border="0" cellspacing="0" cellpadding="3">
|
|
||||||
<% this.index skin="indexList" %>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<br />
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* macro rendering a skin
|
* macro rendering a skin
|
||||||
* @param name name of skin
|
* @param name name of skin
|
||||||
|
@ -8,43 +9,33 @@ function skin_macro(par) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* macro-wrapper for href-function
|
* macro-wrapper for href-function
|
||||||
* @param action name of action to call on this prototype, default main
|
* @param action name of action to call on this prototype, default main
|
||||||
*/
|
*/
|
||||||
function href_macro(par) {
|
function href_macro(param) { return this.href ((param && param.action) ? param.action : "main"); }
|
||||||
return this.href( (par&&par.action)?par.action:"main" );
|
|
||||||
|
function comment_macro (param) { return renderComment (this, param); }
|
||||||
|
function content_macro (param) { return this.getContent (); }
|
||||||
|
function tags_macro (param) { return renderTags (this, param); }
|
||||||
|
function location_macro (param) { return renderLocation (this, param); }
|
||||||
|
function link_macro (param) { return renderLink (this, param); }
|
||||||
|
|
||||||
|
//// END OF COPIED FUNCTIONS
|
||||||
|
|
||||||
|
|
||||||
|
function headline_macro (param) {
|
||||||
|
res.write (this.getName ());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* macro rendering page head
|
function hrefRoot_macro (param) {
|
||||||
*/
|
var obj = this.getChildElement ("prototype_root");
|
||||||
function head_macro(par) {
|
if (obj!=null) {
|
||||||
var obj = new Object();
|
var action = (param.action) ? param.action : "main";
|
||||||
obj.path = this.getPath();
|
return obj.href (action);
|
||||||
this.renderSkin("head",obj);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* utility function for head_macro, rendering link to app
|
|
||||||
*/
|
|
||||||
function getPath() {
|
|
||||||
return( '<a href="' + this.href("main") + '">' + this.name + '</a>' );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* link to the "real" application object (ie not the DocApplication)
|
|
||||||
*/
|
|
||||||
function parentlink_macro(par) {
|
|
||||||
var url = getProperty("baseURI");
|
|
||||||
url = (url==null || url=="null") ? "" : url;
|
|
||||||
url += this.name + "/";
|
|
||||||
url += (par&&par.action)?par.action:"main";
|
|
||||||
return url;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -53,40 +44,33 @@ function parentlink_macro(par) {
|
||||||
* @param skin name of skin to render on prototype
|
* @param skin name of skin to render on prototype
|
||||||
*/
|
*/
|
||||||
function prototypes_macro(par) {
|
function prototypes_macro(par) {
|
||||||
var skin = (par && par.skin&&par.skin!="")?par.skin:"appList";
|
var skin = (par && par.skin&&par.skin!="") ? par.skin : "asPrototypeList";
|
||||||
var arr = this.listPrototypes();
|
var arr = this.listChildren ();
|
||||||
for ( var i=0; i<arr.length; i++ ) {
|
for ( var i=0; i<arr.length; i++ ) {
|
||||||
arr[i].renderSkin(skin);
|
arr[i].renderSkin(skin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
///**
|
||||||
* list all methods of all prototypes, sort and separate them alphabetically
|
// * list all methods of all prototypes, sort and separate them alphabetically
|
||||||
* @param skin name of skin to render on method
|
// * @param skin name of skin to render on method
|
||||||
* @param skinSeparator name of skin to render separator between start-letters
|
// * @param skinSeparator name of skin to render separator between start-letters
|
||||||
*/
|
// */
|
||||||
function index_macro(par) {
|
//function index_macro(par) {
|
||||||
var skin = (par && par.skin && par.skin!="") ? par.skin : "indexList";
|
// var skin = (par && par.skin && par.skin!="") ? par.skin : "indexList";
|
||||||
var skinSeparator = (par && par.skinSeparator && par.skinSeparator!="") ? par.skinSeparator : "indexListSeparator";
|
// var skinSeparator = (par && par.skinSeparator && par.skinSeparator!="") ? par.skinSeparator : "indexListSeparator";
|
||||||
var arr = this.listFunctions();
|
// var arr = this.listFunctions();
|
||||||
var lastLetter = '';
|
// var lastLetter = '';
|
||||||
for ( var i=0; i<arr.length; i++ ) {
|
// for ( var i=0; i<arr.length; i++ ) {
|
||||||
if ( arr[i].name.substring(0,1)!=lastLetter ) {
|
// if ( arr[i].name.substring(0,1)!=lastLetter ) {
|
||||||
lastLetter = arr[i].name.substring(0,1);
|
// lastLetter = arr[i].name.substring(0,1);
|
||||||
var obj = new Object();
|
// var obj = new Object();
|
||||||
obj.letter = lastLetter.toUpperCase();
|
// obj.letter = lastLetter.toUpperCase();
|
||||||
arr[i].renderSkin(skinSeparator,obj);
|
// arr[i].renderSkin(skinSeparator,obj);
|
||||||
}
|
// }
|
||||||
arr[i].renderSkin(skin);
|
// arr[i].renderSkin(skin);
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* macro escaping the request-path, used for handing over redirect urls
|
|
||||||
*/
|
|
||||||
function requestpath_macro(par) {
|
|
||||||
res.write( escape(req.path) );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
if ( checkAddress()==false ) return;
|
|
||||||
if ( checkAuth(this)==false ) return;
|
|
||||||
|
|
||||||
if ( req.data.action=="reload" ) {
|
|
||||||
var appObj = root.getChildElement(this.name);
|
|
||||||
appObj.docApp = new Packages.helma.doc.DocApplication( this.name, this.location );
|
|
||||||
if ( req.data.redirect != null && req.data.redirect != "" )
|
|
||||||
res.redirect ( getProperty("baseURI") + req.data.redirect );
|
|
||||||
else
|
|
||||||
res.redirect ( this.href("main") );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( req.data.action=="index" ) {
|
|
||||||
res.data.body = this.renderSkinAsString("index");
|
|
||||||
} else {
|
|
||||||
res.data.body = this.renderSkinAsString("main");
|
|
||||||
}
|
|
||||||
|
|
||||||
res.data.title = "Application " + this.name;
|
|
||||||
renderSkin("api");
|
|
||||||
|
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
<% this.head %>
|
|
||||||
|
|
||||||
<table width="100%" border="0" cellspacing="0" cellpadding="3">
|
|
||||||
<tr>
|
|
||||||
<td class="list_separator" colspan="3">Prototypes</td>
|
|
||||||
</tr>
|
|
||||||
<% this.prototypes skin="appList" %>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
<br />
|
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
<font size="+1"><b><% this.name %></b></font>
|
|
||||||
|
|
||||||
<div class="list_apps">
|
|
||||||
<li><b><a href="<% this.href action="main" %>?action=reload&redirect=<% this.requestpath %>">reload AppDoc</a>
|
|
||||||
<li><b><a href="<% this.href action="main" %>">Application</a></b>
|
|
||||||
<li><b><a href="<% this.href action="main" %>?action=index">Index</a>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p></p>
|
|
||||||
<p>
|
|
||||||
<i>Prototypes:</i><br />
|
|
||||||
<% this.prototypes skin="navig" %>
|
|
||||||
</p>
|
|
||||||
|
|
10
DocApplication/prototypes.skin
Normal file
10
DocApplication/prototypes.skin
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
|
||||||
|
|
||||||
|
<big class="top">Application <a href="<% this.href action="summary" %>" target="main"><% this.name %></a></big><br><br>
|
||||||
|
|
||||||
|
<% this.prototypes %>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
4
DocApplication/summary.skin
Normal file
4
DocApplication/summary.skin
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
<h2>Application <% this.headline %></h2>
|
||||||
|
|
||||||
|
<% this.comment encoding="html" %>
|
||||||
|
|
8
DocFunction/actions.js
Normal file
8
DocFunction/actions.js
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
function main_action () {
|
||||||
|
this.getParentElement ().readFiles ();
|
||||||
|
res.data.body = this.renderSkinAsString ("main");
|
||||||
|
renderSkin ("api");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
7
DocFunction/asLargeListItem.skin
Normal file
7
DocFunction/asLargeListItem.skin
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
<tr><td>
|
||||||
|
<a href="<% this.href action="main" %>" target="main"><% this.link %></a><br/>
|
||||||
|
<% this.comment length="200" %>
|
||||||
|
</td></tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
8
DocFunction/asLargeListItemSkin.skin
Normal file
8
DocFunction/asLargeListItemSkin.skin
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<tr><td>
|
||||||
|
<a href="<% this.href action="main" %>" target="main"><% this.link %></a><br/>
|
||||||
|
<% this.comment length="200" %>
|
||||||
|
<% this.skinparameters separator=", "%>
|
||||||
|
</td></tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
2
DocFunction/asListItem.skin
Normal file
2
DocFunction/asListItem.skin
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<% this.link %><br>
|
||||||
|
|
1
DocFunction/asParentListItem.skin
Normal file
1
DocFunction/asParentListItem.skin
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<% this.link %>
|
|
@ -1,7 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
function getApplication() {
|
|
||||||
return this.getParentElement().getParentElement();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
<tr>
|
|
||||||
<td width="200" class="list_property"><b><a href="<% this.prototypehref %>#<% this.name %>"><% this.name %></a></b></td>
|
|
||||||
<td class="list_property"><% this.typename %> in <% this.prototypename %>
|
|
||||||
<td class="list_property"><small>(<a href="<% this.href action="main" %>"><% this.prototypename %>/<% this.location %></a>)</small></td>
|
|
||||||
</tr>
|
|
|
@ -1,3 +0,0 @@
|
||||||
<tr>
|
|
||||||
<td class="list_separator" colspan="3"><b> <% param.letter %></b></td>
|
|
||||||
</tr>
|
|
|
@ -1,7 +0,0 @@
|
||||||
<tr>
|
|
||||||
<td class="list_property" align="right" valign="top" width="70" height="40"><font size=-1><a name="<% this.name %>"><!----></a>
|
|
||||||
<code> <% param.group %></code></font></td>
|
|
||||||
<td class="list_property" valign="top"><DL><DT><CODE><B>
|
|
||||||
<a href="<% this.href action="main" %>"><% this.name %></a></B></CODE><DT><DL><% this.comment %><br><small><% this.tags %></small></DT></DL></TD>
|
|
||||||
</tr>
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
<tr>
|
|
||||||
<td class="list_property" align="right" valign="top" width="70" height="40"><font size=-1><a name="<% this.name %>"><!----></a>
|
|
||||||
<code> <% param.group %></code></font></td>
|
|
||||||
<td class="list_property" valign="top"><DL><DT><CODE><B>
|
|
||||||
<a href="<% this.href action="main" %>"><% this.name %> (<% this.args %>)</a></B></CODE><small><i> in <% docprototype.name %>/<% this.location %></i></small><DT><DL><% this.comment %><br><small><% this.tags %></small></DT></DL></TD>
|
|
||||||
</tr>
|
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
<tr>
|
|
||||||
<td class="list_property" align="right" valign="top" width="70" height="40"><font size=-1><a name="<% this.name %>"><!----></a>
|
|
||||||
<code> <% param.group %></code></font></td>
|
|
||||||
<td class="list_property" valign="top"><dl><dt><code><b>
|
|
||||||
<a href="<% this.href action="main" %>"><% docprototype.name %>.<% this.name %></a></B></code>
|
|
||||||
<small><i> in <% docprototype.name %>/<% this.location %></i></small>
|
|
||||||
<dt><dl><% this.comment %><br><small><% this.tags %></small></dt></dl></td>
|
|
||||||
</tr>
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
<tr>
|
|
||||||
<td class="list_property" align="right" valign="top" width="70" height="40"><font size=-1><a name="<% this.name %>"><!----></a>
|
|
||||||
<code> <% param.group %></code></font></td>
|
|
||||||
<td class="list_property" valign="top"><dl><dt><code><b>
|
|
||||||
<a href="<% this.href action="main" %>"><% docprototype.name %>.<% this.name %></a></B></CODE><DT><DL><% this.comment %><br><small><% this.tags %></small></dt></dl></td>
|
|
||||||
</tr>
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
<tr>
|
|
||||||
<td class="list_property" align="right" valign="top" width="70" height="40"><font size=-1><a name="<% this.name %>"><!----></a>
|
|
||||||
<code> <% param.group %></code></font></td>
|
|
||||||
<td class="list_property" valign="top"><DL><DT><CODE><B>
|
|
||||||
<a href="<% this.href action="main" %>"><% this.name %>()</a></B></CODE><DT><DL><% this.comment %><br><small><% this.tags %></small></DT></DL></TD>
|
|
||||||
</tr>
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* macro rendering a skin
|
* macro rendering a skin
|
||||||
* @param name name of skin
|
* @param name name of skin
|
||||||
|
@ -8,120 +9,83 @@ function skin_macro(par) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* macro-wrapper for href-function
|
* macro-wrapper for href-function
|
||||||
* @param action name of action to call on this prototype, default main
|
* @param action name of action to call on this prototype, default main
|
||||||
*/
|
*/
|
||||||
function href_macro(par) {
|
function href_macro(param) { return this.href ((param && param.action) ? param.action : "main"); }
|
||||||
return this.href( (par&&par.action)?par.action:"main" );
|
|
||||||
|
function comment_macro (param) { return renderComment (this, param); }
|
||||||
|
function content_macro (param) { return this.getContent (); }
|
||||||
|
function tags_macro (param) { return renderTags (this, param); }
|
||||||
|
function location_macro (param) { return renderLocation (this, param); }
|
||||||
|
function link_macro (param) { return renderLink (this, param); }
|
||||||
|
|
||||||
|
//// END OF COPIED FUNCTIONS
|
||||||
|
|
||||||
|
|
||||||
|
function headline_macro (param) {
|
||||||
|
var p = this.getParentElement ();
|
||||||
|
var handler = (p!=null) ? p.getName () : "";
|
||||||
|
if (this.getType () == this.ACTION) {
|
||||||
|
res.write ("/" + this.getName ());
|
||||||
|
} else if (this.getType () == this.FUNCTION) {
|
||||||
|
if (handler!="" && handler!="global")
|
||||||
|
res.write (handler + ".");
|
||||||
|
res.write (this.getName () + " (");
|
||||||
|
var arr = this.listParameters ();
|
||||||
|
for (var i=0; i<arr.length; i++) {
|
||||||
|
res.write (arr[i]);
|
||||||
|
if (i<arr.length-1) {
|
||||||
|
res.write (", ");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* macro rendering page head
|
|
||||||
*/
|
|
||||||
function head_macro(par) {
|
|
||||||
var obj = new Object();
|
|
||||||
obj.path = this.getPath();
|
|
||||||
var appObj = this.getApplication();
|
|
||||||
appObj.renderSkin("head",obj);
|
|
||||||
}
|
}
|
||||||
|
res.write (")");
|
||||||
|
} else if (this.getType () == this.MACRO) {
|
||||||
/**
|
res.write ("<% ");
|
||||||
* utility function for head_macro, rendering link to app and to prototype
|
if (handler!="" && handler!="global")
|
||||||
*/
|
res.write (handler + ".");
|
||||||
function getPath() {
|
var name = this.getName ();
|
||||||
var protoObj = this.getDocPrototype();
|
if (name.indexOf("_macro")>-1)
|
||||||
var str = protoObj.getPath() + "/" + this.getFullName();
|
name = name.substring (0, name.length-6);
|
||||||
return( str );
|
res.write (name);
|
||||||
}
|
res.write (" %>");
|
||||||
|
} else if (this.getType () == this.SKIN) {
|
||||||
|
if (handler!="" && handler!="global")
|
||||||
/**
|
res.write (handler + "/");
|
||||||
* macro returning name of file this method resides in
|
res.write (this.getName ());
|
||||||
*/
|
res.write (".skin");
|
||||||
function location_macro(par) {
|
|
||||||
var f = new File ( this.getLocation() );
|
|
||||||
return f.getName();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* macro returning the type of this method (Action, Template, Skin, Macro, Function)
|
|
||||||
*/
|
|
||||||
function typename_macro(par) {
|
|
||||||
return this.getTypeName();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* macro returning a link to the prototype page
|
|
||||||
* @param action name of action to call on this prototype, default main
|
|
||||||
*/
|
|
||||||
function prototypehref_macro(par) {
|
|
||||||
return this.getDocPrototype().href( (par&&par.action)?par.action:"main" )
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* macro returning the name of the prototype this method belongs to
|
|
||||||
*/
|
|
||||||
function prototypename_macro(par) {
|
|
||||||
return this.getDocPrototype().getName();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* macro returning the comment text of this method
|
|
||||||
* (excluding the tags!)
|
|
||||||
* @param size (optional) text is cutoff after a number of chars
|
|
||||||
*/
|
|
||||||
function comment_macro(par) {
|
|
||||||
var str = this.getComment();
|
|
||||||
if ( par && par.length && str.length > par.size ) {
|
|
||||||
return ( str.substring(0,par.size) );
|
|
||||||
} else {
|
|
||||||
return ( str );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
function skinparameters_macro (param) {
|
||||||
* macro rendering the list of tags
|
if (this.getType () == this.SKIN) {
|
||||||
*/
|
this.parameters_macro (param);
|
||||||
function tags_macro() {
|
|
||||||
var arr = this.listTags();
|
|
||||||
var argCt = 0;
|
|
||||||
for ( var i in arr ) {
|
|
||||||
if ( arr[i].getKind()==Packages.helma.doc.DocTag.ARG )
|
|
||||||
argCt++;
|
|
||||||
res.write( arr[i].render(argCt,this) );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
function parameters_macro (param) {
|
||||||
* macro rendering sequence of arg1, arg2 etc
|
var separator = (param.separator) ? param.separator : ", ";
|
||||||
* according to number of arguments in doctags.
|
var arr = this.listParameters ();
|
||||||
*/
|
for (var i=0; i<arr.length ;i++) {
|
||||||
function args_macro() {
|
res.write (arr[i]);
|
||||||
var ct = this.countTags(Packages.helma.doc.DocTag.ARG);
|
if (i<arr.length-1)
|
||||||
for ( var i=0; i<ct; i++) {
|
res.write (separator);
|
||||||
res.write ( "arg" + (i+1) );
|
|
||||||
if ( i<(ct-1) ) res.write (", ");
|
|
||||||
else res.write ("");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* macro returning nicely formatted sourcecode of this method.
|
* macro returning nicely formatted sourcecode of this method.
|
||||||
* code is encoded, >% %<-tags are colorcoded, line numbers are added
|
* code is encoded, >% %<-tags are colorcoded, line numbers are added
|
||||||
*/
|
*/
|
||||||
function source_macro(par) {
|
function source_macro(par) {
|
||||||
var str = this.getSource();
|
var str = this.getContent ();
|
||||||
var arr = str.split("<%");
|
var arr = str.split("<%");
|
||||||
var str2 = "";
|
var str2 = "";
|
||||||
for ( var i=0; i<arr.length; i++ ) {
|
for ( var i=0; i<arr.length; i++ ) {
|
||||||
|
@ -140,18 +104,12 @@ function source_macro(par) {
|
||||||
var str4 = "";
|
var str4 = "";
|
||||||
for ( var i=0; i<arr.length; i++ ) {
|
for ( var i=0; i<arr.length; i++ ) {
|
||||||
str4 += '<font color="#aaaaaa">' + (i+1) + ':</font> '
|
str4 += '<font color="#aaaaaa">' + (i+1) + ':</font> '
|
||||||
if ( i<100 ) str4+=' ';
|
if (i<99) str4+=' ';
|
||||||
|
if (i<9) str4+=' ';
|
||||||
str4 += arr[i] + "<br>";
|
str4 += arr[i] + "<br>";
|
||||||
}
|
}
|
||||||
return ( str4 );
|
return ( str4 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* macro returning the fullname of this method
|
|
||||||
*/
|
|
||||||
function fullname_macro(par) {
|
|
||||||
return this.getFullName();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
if ( checkAddress()==false ) return;
|
|
||||||
if ( checkAuth(this)==false ) return;
|
|
||||||
|
|
||||||
res.data.body = this.renderSkinAsString("main");
|
|
||||||
res.data.title = "Application " + this.name;
|
|
||||||
renderSkin("api");
|
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,34 @@
|
||||||
<% this.head %>
|
<table width="90%" border="0" cellspacing="1" cellpadding="5">
|
||||||
|
<tr>
|
||||||
<div class="list_property">
|
<td class="headline">
|
||||||
<small> <i>in <% docprototype.name%>/<% this.location %>:</i></small>
|
<big><tt><% this.headline %></tt></big><br>
|
||||||
</div>
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td class="mainbox">
|
||||||
|
<% this.comment suffix="<br><br>" %>
|
||||||
|
<% this.skinparameters prefix="general parameters used in this skin:<ul><li><code>" separator="</code><li><code>" suffix="</code></ul><br>" %>
|
||||||
|
<ul>
|
||||||
|
<% this.tags type="param" skin="parameter" %>
|
||||||
|
<% this.tags type="return" skin="return" %>
|
||||||
|
<% this.tags type="author" skin="author" %>
|
||||||
|
<% this.tags type="see" skin="see" %>
|
||||||
|
<% this.tags type="deprecated" skin="deprecated" %>
|
||||||
|
<% this.tags type="overrides" skin="overrides" %>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table width="90%" border="0" cellspacing="1" cellpadding="5">
|
||||||
|
<tr>
|
||||||
|
<td>Sourcecode in <% this.location %>:
|
||||||
<pre><% this.source %></pre>
|
<pre><% this.source %></pre>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
10
DocPrototype/actions.js
Normal file
10
DocPrototype/actions.js
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
function list_action () {
|
||||||
|
res.data.body = this.renderSkinAsString ("list");
|
||||||
|
renderSkin ("api");
|
||||||
|
}
|
||||||
|
|
||||||
|
function main_action () {
|
||||||
|
res.data.body = this.renderSkinAsString ("main");
|
||||||
|
renderSkin ("api");
|
||||||
|
}
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
<tr>
|
|
||||||
|
|
||||||
<td class="list_property" align="right" valign="top" width="1%"><font size="-1"><a name="<% this.name %>"><!-- --></a><code> Prototype</code></font>
|
|
||||||
<br></td>
|
|
||||||
<td class="list_property" valign="top"><code><b><a href="<% this.href action="main" %>"><% this.name %></a></b></code><br />
|
|
||||||
<% this.comment %>
|
|
||||||
<br />
|
|
||||||
</td>
|
|
||||||
|
|
||||||
</tr>
|
|
1
DocPrototype/asInheritanceLink.skin
Normal file
1
DocPrototype/asInheritanceLink.skin
Normal file
|
@ -0,0 +1 @@
|
||||||
|
extends Prototype <a href="<% this.href action="list" %>"><% this.name %></a>
|
17
DocPrototype/asParentList.skin
Normal file
17
DocPrototype/asParentList.skin
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
|
||||||
|
<tr><td class='headline'><b>Inherited from prototype <% this.link %>:</b><br></td></tr>
|
||||||
|
|
||||||
|
<tr><td>
|
||||||
|
|
||||||
|
<% this.methods separator=", " filter="actions" skin="asParentListItem" prefix="<b>Actions: </b>" suffix="<br/>" %>
|
||||||
|
<% this.methods separator=", " filter="functions" skin="asParentListItem" prefix="<b>Functions: </b>" suffix="<br/>" %>
|
||||||
|
<% this.methods separator=", " filter="macros" skin="asParentListItem" prefix="<b>Macros: </b>" suffix="<br/>" %>
|
||||||
|
<% this.methods separator=", " filter="skins" skin="asParentListItem" prefix="<b>Skins: </b>" suffix="<br/>" %>
|
||||||
|
<% this.methods separator=", " filter="templates" skin="asParentListItem" prefix="<b>Templates: </b>" suffix="<br/>" %>
|
||||||
|
|
||||||
|
</td></tr>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
10
DocPrototype/asPrototypeList.skin
Normal file
10
DocPrototype/asPrototypeList.skin
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
|
||||||
|
<a href="<% this.href action="main" %>" onClick="parent.changePrototypeList(this);" target="main"><% this.name %></a>
|
||||||
|
|
||||||
|
<%
|
||||||
|
this.inheritance action="main" target="main"
|
||||||
|
onClick="parent.changePrototypeList(this);" hopobject="false"
|
||||||
|
prefix=" (extends " suffix=")"
|
||||||
|
%>
|
||||||
|
|
||||||
|
<br />
|
29
DocPrototype/functions.js
Normal file
29
DocPrototype/functions.js
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
|
||||||
|
///**
|
||||||
|
// * utility function for head_macro, rendering link to app and to prototype
|
||||||
|
// */
|
||||||
|
//function getPath() {
|
||||||
|
// var appObj = this.getParentElement ();
|
||||||
|
// var str = appObj.getPath();
|
||||||
|
// str += '/<a href="' + this.href("main") + '">' + this.name + '</a>';
|
||||||
|
// return( str );
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function translateType (filter) {
|
||||||
|
if (filter=="actions")
|
||||||
|
return Packages.helma.doc.DocElement.ACTION;
|
||||||
|
else if (filter=="templates")
|
||||||
|
return Packages.helma.doc.DocElement.TEMPLATE;
|
||||||
|
else if (filter=="functions")
|
||||||
|
return Packages.helma.doc.DocElement.FUNCTION;
|
||||||
|
else if (filter=="macros")
|
||||||
|
return Packages.helma.doc.DocElement.MACRO;
|
||||||
|
else if (filter=="skins")
|
||||||
|
return Packages.helma.doc.DocElement.SKIN;
|
||||||
|
else
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
11
DocPrototype/list.skin
Normal file
11
DocPrototype/list.skin
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<h3>Prototype <a href="<% this.href action="main" %>" target="main"><% this.name %></a></h3>
|
||||||
|
<% this.inheritance action="list" %>
|
||||||
|
<% this.inheritance deep="true" hopobject="true" action="main" target="main" onClick="parent.changePrototypeList(this);" separator=", " prefix="extends: " suffix="<br>" %><br>
|
||||||
|
|
||||||
|
|
||||||
|
<% this.methods filter="actions" skin="asListItem" prefix="<p><b>Actions:</b><br/>" suffix="</p> %>
|
||||||
|
<% this.methods filter="functions" skin="asListItem" prefix="<p><b>Functions:</b><br/>" suffix="</p> %>
|
||||||
|
<% this.methods filter="macros" skin="asListItem" prefix="<p><b>Macros:</b><br/>" suffix="</p> %>
|
||||||
|
<% this.methods filter="skins" skin="asListItem" prefix="<p><b>Skins:</b><br/>" suffix="</p> %>
|
||||||
|
<% this.methods filter="templates" skin="asListItem" prefix="<p><b>Templates:</b><br/>" suffix="</p> %>
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
</table>
|
|
||||||
<br />
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
<a name="<% param.desc %>"><!-- --></a>
|
|
||||||
|
|
||||||
|
|
||||||
<table width="100%" border="0" cellspacing="0" cellpadding="3">
|
|
||||||
<tr>
|
|
||||||
<td class="list_separator" colspan="3"><% param.desc %></td>
|
|
||||||
</tr>
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* macro rendering a skin
|
* macro rendering a skin
|
||||||
* @param name name of skin
|
* @param name name of skin
|
||||||
|
@ -8,105 +9,105 @@ function skin_macro(par) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* macro-wrapper for href-function
|
* macro-wrapper for href-function
|
||||||
* @param action name of action to call on this prototype, default main
|
* @param action name of action to call on this prototype, default main
|
||||||
*/
|
*/
|
||||||
function href_macro(par) {
|
function href_macro(param) { return this.href ((param && param.action) ? param.action : "main"); }
|
||||||
return this.href( (par&&par.action)?par.action:"main" );
|
|
||||||
|
function comment_macro (param) { return renderComment (this, param); }
|
||||||
|
function content_macro (param) { return this.getContent (); }
|
||||||
|
function tags_macro (param) { return renderTags (this, param); }
|
||||||
|
function location_macro (param) { return renderLocation (this, param); }
|
||||||
|
function link_macro (param) { return renderLink (this, param); }
|
||||||
|
|
||||||
|
//// END OF COPIED FUNCTIONS
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function headline_macro (param) {
|
||||||
|
res.write (this.getName ());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* macro formatting list of methods of this prototype
|
||||||
|
* @param filter actions | functions | macros | templates | skins
|
||||||
|
* @param skin skin to apply to the docfunction object
|
||||||
|
* @param separator
|
||||||
|
* @param desc Description that is passed on to the called skin
|
||||||
|
*/
|
||||||
|
function methods_macro (param) {
|
||||||
|
var skinname = (param.skin) ? param.skin : "list";
|
||||||
|
var separator = (param.separator) ? param.separator : "";
|
||||||
|
var arr = this.listChildren ();
|
||||||
|
var type = this.translateType (param.filter);
|
||||||
|
var sb = new java.lang.StringBuffer ();
|
||||||
|
for (var i=0; i<arr.length; i++) {
|
||||||
|
if (arr[i].getType () == type) {
|
||||||
|
sb.append (arr[i].renderSkinAsString (skinname, param));
|
||||||
|
sb.append (separator);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var str = sb.toString ();
|
||||||
|
if (str.length>0)
|
||||||
|
return str.substring (0, str.length - separator.length);
|
||||||
|
else
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function inheritance_macro (param) {
|
||||||
|
var action = param.action ? param.action : "main";
|
||||||
|
var target = param.target ? ('target="' + param.target + '" ') : '';
|
||||||
|
var obj = this.getParentPrototype ();
|
||||||
|
if (obj!=null) {
|
||||||
|
obj = this.inheritanceUtil (obj, param);
|
||||||
|
}
|
||||||
|
if (param.deep=="true") {
|
||||||
|
while (obj!=null) {
|
||||||
|
obj = this.inheritanceUtil (obj, param);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function inheritanceUtil (obj, param) {
|
||||||
|
if (obj.getName ()=="hopobject" && param.hopobject!="true")
|
||||||
|
return null;
|
||||||
|
var tmp = new Object ();
|
||||||
|
for (var i in param)
|
||||||
|
tmp[i] = param[i];
|
||||||
|
tmp.href = obj.href ((param.action) ? param.action : "main");
|
||||||
|
delete tmp.hopobject;
|
||||||
|
delete tmp.action;
|
||||||
|
delete tmp.deep;
|
||||||
|
delete tmp.separator;
|
||||||
|
res.write (renderLinkTag (tmp));
|
||||||
|
res.write (obj.getName () + "</a>");
|
||||||
|
if (obj.getParentPrototype ())
|
||||||
|
res.write (param.separator);
|
||||||
|
return obj.getParentPrototype ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* macro rendering page head
|
* loops through the parent prototypes and renders a skin on each
|
||||||
|
* @param skin
|
||||||
*/
|
*/
|
||||||
function head_macro(par) {
|
function parentPrototype_macro (param) {
|
||||||
var obj = new Object();
|
var skinname = (param.skin) ? param.skin : "asParentList";
|
||||||
obj.path = this.getPath();
|
var obj = this.getParentPrototype ();
|
||||||
var appObj = this.getApplication();
|
while (obj!=null) {
|
||||||
appObj.renderSkin("head",obj);
|
obj.renderSkin (skinname);
|
||||||
}
|
obj = obj.getParentPrototype ();
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* utility function for head_macro, rendering link to app and to prototype
|
|
||||||
*/
|
|
||||||
function getPath() {
|
|
||||||
var appObj = this.getApplication();
|
|
||||||
var str = appObj.getPath();
|
|
||||||
str += '/<a href="' + this.href("main") + '">' + this.name + '</a>';
|
|
||||||
return( str );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* macro returning the comment for this prototype
|
|
||||||
*/
|
|
||||||
function comment_macro(par) {
|
|
||||||
return this.getComment();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* macro formatting list of actions of this prototype
|
|
||||||
*/
|
|
||||||
function actions_macro(par) {
|
|
||||||
this.printMethods( Packages.helma.doc.DocElement.ACTION, "listElementAction","Actions" );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* macro formatting list of templates of this prototype
|
|
||||||
*/
|
|
||||||
function templates_macro(par) {
|
|
||||||
this.printMethods( Packages.helma.doc.DocElement.TEMPLATE, "listElementTemplate","Templates" );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* macro formatting list of functions of this prototype
|
|
||||||
*/
|
|
||||||
function functions_macro(par) {
|
|
||||||
this.printMethods( Packages.helma.doc.DocElement.FUNCTION, "listElementFunction","Functions" );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* macro formatting list of skins of this prototype
|
|
||||||
*/
|
|
||||||
function skins_macro(par) {
|
|
||||||
this.printMethods( Packages.helma.doc.DocElement.SKIN, "listElementSkin","Skins" );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* macro formatting list of macros of this prototype
|
|
||||||
*/
|
|
||||||
function macros_macro(par) {
|
|
||||||
this.printMethods( Packages.helma.doc.DocElement.MACRO, "listElementMacro","Macros" );
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* macro-utility: renders a list of methods of this prototype
|
|
||||||
* usage of docprototype.listHeader/listFooter skin is hardcoded
|
|
||||||
* @arg type integer - which type of methods are listed
|
|
||||||
* @arg skin skin to be called on method
|
|
||||||
* @arg desc string describing the type of method (ie "Skins", "Actions")
|
|
||||||
*/
|
|
||||||
function printMethods(type,skin,desc) {
|
|
||||||
var arr = this.listFunctions(type);
|
|
||||||
if ( arr.length > 0 ) {
|
|
||||||
var obj = new Object();
|
|
||||||
obj.desc = desc;
|
|
||||||
this.renderSkin("listHeader",obj);
|
|
||||||
for ( var i in arr ) {
|
|
||||||
arr[i].renderSkin(skin,obj);
|
|
||||||
}
|
|
||||||
this.renderSkin("listFooter",obj);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function typeProperties_macro (param) {
|
||||||
|
var props = this.getTypeProperties ();
|
||||||
|
if (props!=null) {
|
||||||
|
res.encode(props.getContent ());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
if ( checkAddress()==false ) return;
|
|
||||||
if ( checkAuth(this)==false ) return;
|
|
||||||
|
|
||||||
res.data.body = this.renderSkinAsString("main");
|
|
||||||
res.data.title = "Application " + this.name;
|
|
||||||
renderSkin ("api");
|
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,82 @@
|
||||||
<% this.head %>
|
<table width="90%" border="0" cellspacing="1" cellpadding="5">
|
||||||
|
<tr>
|
||||||
|
<td class="headline">
|
||||||
|
<big><tt>Prototype <% this.headline %></tt></big><br>
|
||||||
|
<% this.inheritance deep="true" hopobject="true" action="main" target="main" onClick="parent.changePrototypeList(this);" separator=", " prefix="extends: " suffix="<br>" %>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<a class="navig" href="#actions">ACTIONS</a> |
|
||||||
|
<a class="navig" href="#functions">FUNCTIONS</a> |
|
||||||
|
<a class="navig" href="#macros">MACROS</a> |
|
||||||
|
<a class="navig" href="#skins">SKINS</a> |
|
||||||
|
<a class="navig" href="#templates">TEMPLATES</a> |
|
||||||
|
<a class="navig" href="#typeproperties">TYPE.PROPERTIES</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<table width="90%" border="0" cellspacing="1" cellpadding="5">
|
||||||
|
<tr>
|
||||||
|
<td class="mainbox">
|
||||||
|
<% this.comment suffix="<br><br>" %>
|
||||||
|
<ul>
|
||||||
|
<% this.tags type="author" skin="author" %>
|
||||||
|
<% this.tags type="see" skin="see" %>
|
||||||
|
<% this.tags type="deprecated" skin="deprecated" %>
|
||||||
|
<% this.tags type="overrides" skin="overrides" %>
|
||||||
|
</ul>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<table width="90%" border="0" cellspacing="1" cellpadding="3">
|
||||||
|
|
||||||
|
<% this.methods separator="<tr><td class='mainbox'><img src='' width=0 height=0></td></tr>"
|
||||||
|
filter="actions"
|
||||||
|
skin="asLargeListItem"
|
||||||
|
prefix="<tr><td class='headline'>Actions<a name='actions'><!-- --></a></td></tr>"
|
||||||
|
%>
|
||||||
|
|
||||||
|
<% this.methods separator="<tr><td class='mainbox'><img src='' width=0 height=0></td></tr>"
|
||||||
|
filter="functions"
|
||||||
|
skin="asLargeListItem"
|
||||||
|
prefix="<tr><td class='headline'>Functions<a name='functions'><!-- --></a></td></tr>"
|
||||||
|
%>
|
||||||
|
|
||||||
|
<% this.methods separator="<tr><td class='mainbox'><img src='' width=0 height=0></td></tr>"
|
||||||
|
filter="macros"
|
||||||
|
skin="asLargeListItem"
|
||||||
|
prefix="<tr><td class='headline'>Macros<a name='macros'><!-- --></a></td></tr>"
|
||||||
|
%>
|
||||||
|
|
||||||
|
<% this.methods separator="<tr><td class='mainbox'><img src='' width=0 height=0></td></tr>"
|
||||||
|
filter="skins"
|
||||||
|
skin="asLargeListItemSkin"
|
||||||
|
prefix="<tr><td class='headline'>Skins<a name='skins'><!-- --></a></td></tr>"
|
||||||
|
%>
|
||||||
|
|
||||||
|
<% this.methods separator="<tr><td class='mainbox'><img src='' width=0 height=0></td></tr>"
|
||||||
|
filter="templates"
|
||||||
|
skin="asLargeListItem"
|
||||||
|
prefix="<tr><td class='headline'>Templates<a name='templates'><!-- --></a></td></tr>"
|
||||||
|
%>
|
||||||
|
|
||||||
|
<% this.parentPrototype skin="asParentList" %>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
<br/><br/><a name='typeproperties'><!-- --></a><table width='90%' border='0' cellspacing='1' cellpadding='5'><tr>
|
||||||
|
<td class="headline">type.properties</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="mainbox"><% this.typeProperties prefix="<pre>" suffix="</pre>" %></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<% this.actions %>
|
|
||||||
<% this.skins %>
|
|
||||||
<% this.macros %>
|
|
||||||
<% this.functions %>
|
|
||||||
<% this.templates %>
|
|
||||||
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
|
|
||||||
<a href="<% this.href action="main" %>"><% this.name %></a><br>
|
|
2
DocTag/author.skin
Normal file
2
DocTag/author.skin
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<li><b>Author</b><br/>
|
||||||
|
<% this.text %>
|
2
DocTag/deprecated.skin
Normal file
2
DocTag/deprecated.skin
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<li><b>Deprecated</b><br/>
|
||||||
|
<% this.text %>
|
1
DocTag/main.skin
Normal file
1
DocTag/main.skin
Normal file
|
@ -0,0 +1 @@
|
||||||
|
<li><% this.text %>
|
3
DocTag/overrides.skin
Normal file
3
DocTag/overrides.skin
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<li><b>Overrides</b><br/>
|
||||||
|
<% param.link %>
|
||||||
|
|
2
DocTag/parameter.skin
Normal file
2
DocTag/parameter.skin
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<li><b>Parameter</b> <code><% this.name %></code>:<br/>
|
||||||
|
<% this.text %>
|
|
@ -1,46 +0,0 @@
|
||||||
/**
|
|
||||||
* function renders list of tags, language is hardcoded here
|
|
||||||
* @arg number of current argument (for formatting arg1, arg2 etc)
|
|
||||||
* @arg method method-object from which we try to find other prototypes/methods
|
|
||||||
* when we're formatting a see tag
|
|
||||||
*/
|
|
||||||
function render(argCt,docFunc) {
|
|
||||||
var str = "";
|
|
||||||
if ( this.getKind() == this.ARG ) {
|
|
||||||
str = "<b>arg" + argCt + ":</b> " + format(this.text);
|
|
||||||
} else if ( this.getKind() == this.PARAM ) {
|
|
||||||
str = "<b>Parameter " + this.name;
|
|
||||||
if ( this.text!=null && this.text!="" ) {
|
|
||||||
str += ":</b> " + format(this.text);
|
|
||||||
}
|
|
||||||
} else if ( this.getKind() == this.RETURNS ) {
|
|
||||||
str = "<b>Returns:</b> " + format(this.text);
|
|
||||||
} else if ( this.getKind() == this.AUTHOR ) {
|
|
||||||
str = "<b>by " + format(this.text) + "</b>";
|
|
||||||
} else if ( this.getKind() == this.VERSION ) {
|
|
||||||
str = "<b>Version " + format(this.text) + "</b>";
|
|
||||||
} else if ( this.getKind() == this.RELEASE ) {
|
|
||||||
str = "<b>since" + format(this.text) + "</b>";
|
|
||||||
} else if ( this.getKind() == this.SEE ) {
|
|
||||||
if ( this.text.indexOf("http://")==0 ) {
|
|
||||||
str = '<a href="' + this.text + '">' + this.text + '</a>';
|
|
||||||
} else {
|
|
||||||
var tmp = new java.lang.String(this.text);
|
|
||||||
tmp = tmp.trim();
|
|
||||||
var arr = tmp.split(".");
|
|
||||||
var obj = docFunc.getApplication().getDocPrototype(arr[0]);
|
|
||||||
if( arr.length>1 && obj.getFunction(arr[1])!=null ) {
|
|
||||||
str = '<b>See also: <a href="' + obj.href("main") + '#' + obj.getFunction(arr[1]).name + '">' + format(tmp) + '</a></b>';
|
|
||||||
} else if ( obj!=null ) {
|
|
||||||
str = '<b>See also: <a href="' + obj.href("main") + '">' + format(tmp) + '</a></b>';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ( str=="" ) {
|
|
||||||
str = "<b>See also:</b> " + format(this.text);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return str + "<br />";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
2
DocTag/return.skin
Normal file
2
DocTag/return.skin
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<li><b>Returns</b><br>
|
||||||
|
<% this.text %>
|
2
DocTag/see.skin
Normal file
2
DocTag/see.skin
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
<li><b>See also</b><br>
|
||||||
|
<% param.link %>
|
|
@ -1,17 +1,67 @@
|
||||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
|
||||||
<HTML>
|
<html>
|
||||||
<% skin name="head" %>
|
|
||||||
|
<head>
|
||||||
|
<title></title>
|
||||||
|
<style type="text/css">
|
||||||
|
|
||||||
|
body, p, td, th, li {
|
||||||
|
font-family: verdana, sans-serif;
|
||||||
|
font-size: 10pt;
|
||||||
|
}
|
||||||
|
|
||||||
|
big.top {
|
||||||
|
font-size: 18pt;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
big {
|
||||||
|
font-size: 13pt;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
font-weight:bold;
|
||||||
|
color: #cc3333;
|
||||||
|
text-decoration:none;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
text-decoration:underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navig {
|
||||||
|
font-size: 9px;
|
||||||
|
text-decoration: none;
|
||||||
|
font-weight:normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
li {
|
||||||
|
padding-bottom: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.mainbox {
|
||||||
|
border-color:#999999;
|
||||||
|
padding-top:5px;
|
||||||
|
padding-bottom:5px;
|
||||||
|
border-bottom-width:1px;
|
||||||
|
border-bottom-style:dotted;
|
||||||
|
}
|
||||||
|
|
||||||
|
.headline {
|
||||||
|
font-weight:bold;
|
||||||
|
background:#dfdfdf;
|
||||||
|
border-color:#999999;
|
||||||
|
padding-top:5px;
|
||||||
|
padding-bottom:5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<table width="90%" border="0" cellspacing="1" cellpadding="5" bgcolor="#000000">
|
<% response.body %>
|
||||||
<tr>
|
|
||||||
<td width="200" nowrap align="left" valign="top" bgcolor="#cccc99">
|
|
||||||
<p><a href="<% root.href action="main" %>"><img src="<% root.href action="image" %>" title="helma" border="0" width="174" height="35" align="baseline" style="border-width:3px;border-color:white;"></a></p>
|
|
||||||
<% docapplication.skin name="navig" %></td>
|
|
||||||
<td align="left" valign="top" bgcolor="#ffffff"><% response.body %></td>
|
|
||||||
</tr>
|
|
||||||
</table>
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -10,11 +10,10 @@ function scheduler() {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* initializes app.data.requestStat storage on startup,
|
* initializes app.data.stat storage on startup,
|
||||||
* creates app.data.addressFilter
|
* creates app.data.addressFilter
|
||||||
*/
|
*/
|
||||||
function onStart() {
|
function onStart() {
|
||||||
app.data.requestStat = new HopObject();
|
|
||||||
app.data.addressFilter = createAddressFilter();
|
app.data.addressFilter = createAddressFilter();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,29 +46,28 @@ function createAddressFilter() {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* updates the request stats in app.data.requestStat every 5 minutes
|
* updates the stats in app.data.stat every 5 minutes
|
||||||
*/
|
*/
|
||||||
function appStat () {
|
function appStat () {
|
||||||
if ( app.data.requestStat==null ) {
|
if (app.data.stat==null)
|
||||||
app.data.requestStat = new HopObject();
|
app.data.stat = new HopObject ();
|
||||||
}
|
if ((new Date()-300000) < app.data.stat.lastRun)
|
||||||
if( (new Date()-300000) < app.data.requestStat.lastRun ) {
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
var arr = root.getApplications ();
|
var arr = root.getApplications ();
|
||||||
for (var i=0; i<arr.length; i++) {
|
for (var i=0; i<arr.length; i++) {
|
||||||
var tmp = app.data.requestStat.get(arr[i].getName());
|
var tmp = app.data.stat.get (arr[i].getName());
|
||||||
if (tmp==null) {
|
if (tmp==null) {
|
||||||
tmp = new HopObject();
|
tmp = new HopObject();
|
||||||
tmp.lastTotal = 0;
|
tmp.lastTotalRequestCount = 0;
|
||||||
tmp.last5Min = 0;
|
tmp.lastTotalErrorCount = 0;
|
||||||
}
|
}
|
||||||
var ct = arr[i].getRequestCount();
|
tmp.requestCount = arr[i].getRequestCount () - tmp.lastTotalRequestCount;
|
||||||
tmp.last5Min = ct - tmp.lastTotal;
|
tmp.lastTotalRequestCount = arr[i].getRequestCount ();
|
||||||
tmp.lastTotal = ct;
|
tmp.errorCount = arr[i].getErrorCount () - tmp.lastTotalErrorCount;
|
||||||
app.data.requestStat.set(arr[i].getName(), tmp);
|
tmp.lastTotalErrorCount = arr[i].getErrorCount ();
|
||||||
|
app.data.stat.set (arr[i].getName(), tmp);
|
||||||
}
|
}
|
||||||
app.data.requestStat.lastRun = new Date();
|
app.data.stat.lastRun = new Date();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -132,8 +130,6 @@ function checkAuth(appObj) {
|
||||||
// check against application
|
// check against application
|
||||||
var appUsername = appObj.getProperty("adminusername");
|
var appUsername = appObj.getProperty("adminusername");
|
||||||
var appPassword = appObj.getProperty("adminpassword");
|
var appPassword = appObj.getProperty("adminpassword");
|
||||||
if ( appUsername==null || appUsername=="" || appPassword==null || appPassword=="" )
|
|
||||||
return forceStealth();
|
|
||||||
if ( md5username==appUsername && md5password==appPassword )
|
if ( md5username==appUsername && md5password==appPassword )
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -149,7 +145,7 @@ function checkAddress() {
|
||||||
app.log("denied request from " + req.data.http_remotehost );
|
app.log("denied request from " + req.data.http_remotehost );
|
||||||
// forceStealth seems a bit like overkill here.
|
// forceStealth seems a bit like overkill here.
|
||||||
// display a message that the ip address must be added to server.properties
|
// display a message that the ip address must be added to server.properties
|
||||||
res.write ("Access to address "+req.data.http_remotehost+" denied.");
|
res.write ("Access from address "+req.data.http_remotehost+" denied.");
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
return true;
|
return true;
|
||||||
|
@ -169,14 +165,7 @@ function forceAuth(realm) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* response is reset to 404 / notfound
|
|
||||||
*/
|
|
||||||
function forceStealth() {
|
|
||||||
res.reset();
|
|
||||||
res.status = 404;
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -302,3 +291,16 @@ function formatCount(ct, par) {
|
||||||
else
|
else
|
||||||
return par.plural;
|
return par.plural;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* tries to make out if this server is running linux from java's system properties
|
||||||
|
*/
|
||||||
|
function isLinux () {
|
||||||
|
var str = java.lang.System.getProperty("os.name");
|
||||||
|
return (str!=null && str.toLowerCase().indexOf("linux")!=-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
176
Global/renderFunctions.js
Normal file
176
Global/renderFunctions.js
Normal file
|
@ -0,0 +1,176 @@
|
||||||
|
|
||||||
|
|
||||||
|
function renderLink (docEl, param) {
|
||||||
|
var text = "";
|
||||||
|
if (docEl.getType () == docEl.APPLICATION || docEl.getType () == docEl.PROTOTYPE) {
|
||||||
|
text = docEl.getName ();
|
||||||
|
} else if (docEl.getType () == docEl.SKIN) {
|
||||||
|
text = docEl.getName () + ".skin";
|
||||||
|
} else if (docEl.getType () == docEl.MACRO) {
|
||||||
|
if (docEl.getParentElement () && docEl.getParentElement().getName()!="global") {
|
||||||
|
text = docEl.getParentElement ().getName () + ".";
|
||||||
|
}
|
||||||
|
var str = docEl.getName ();
|
||||||
|
if (str.indexOf("_macro")) {
|
||||||
|
text += str.substring (0, str.length-6);
|
||||||
|
}
|
||||||
|
} else if (docEl.getType () == docEl.FUNCTION) {
|
||||||
|
var text = docEl.getName () + " (";
|
||||||
|
var arr = docEl.listParameters ();
|
||||||
|
for (var i=0; i<arr.length ;i++) {
|
||||||
|
text += arr[i];
|
||||||
|
if (i<arr.length-1)
|
||||||
|
text += ", ";
|
||||||
|
}
|
||||||
|
text += ")";
|
||||||
|
} else {
|
||||||
|
text = docEl.getName ();
|
||||||
|
}
|
||||||
|
param.href = docEl.href ("main");
|
||||||
|
if (!param.target) {
|
||||||
|
param.target = "main";
|
||||||
|
}
|
||||||
|
return renderLinkTag (param) + text + '</a>';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function renderLinkTag (param) {
|
||||||
|
var sb = new java.lang.StringBuffer ();
|
||||||
|
sb.append ('<a');
|
||||||
|
for (var i in param) {
|
||||||
|
sb.append (' ');
|
||||||
|
sb.append (i);
|
||||||
|
sb.append ('="');
|
||||||
|
sb.append (param[i]);
|
||||||
|
sb.append ('"');
|
||||||
|
}
|
||||||
|
sb.append ('>');
|
||||||
|
return sb.toString ();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* renders the name of the location relative to the application
|
||||||
|
* root.
|
||||||
|
*/
|
||||||
|
function renderLocation (docEl, param) {
|
||||||
|
var f = docEl.getLocation ();
|
||||||
|
if (f.isDirectory ())
|
||||||
|
return f.getName ();
|
||||||
|
else {
|
||||||
|
return f.getParentFile ().getName () + "/" + f.getName ();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* renders tag list.
|
||||||
|
* @param param.skin skin to render on found DocTags
|
||||||
|
* @param param.separator String printed between tags
|
||||||
|
* @param param.type type string (param|return|author|version|see) to filter tags.
|
||||||
|
*/
|
||||||
|
function renderTags (docEl, param) {
|
||||||
|
var skinname = (param.skin) ? param.skin : "main";
|
||||||
|
var type = -1;
|
||||||
|
if (param.type=="param" || param.type=="params")
|
||||||
|
type = Packages.helma.doc.DocTag.PARAMETER;
|
||||||
|
else if (param.type=="return" || param.type=="returns")
|
||||||
|
type = Packages.helma.doc.DocTag.RETURN;
|
||||||
|
else if (param.type=="author")
|
||||||
|
type = Packages.helma.doc.DocTag.AUTHOR;
|
||||||
|
else if (param.type=="version")
|
||||||
|
type = Packages.helma.doc.DocTag.VERSION;
|
||||||
|
else if (param.type=="see")
|
||||||
|
type = Packages.helma.doc.DocTag.SEE;
|
||||||
|
else if (param.type=="deprecated")
|
||||||
|
type = Packages.helma.doc.DocTag.DEPRECATED;
|
||||||
|
else if (param.type=="overrides")
|
||||||
|
type = Packages.helma.doc.DocTag.OVERRIDES;
|
||||||
|
var str = "";
|
||||||
|
var arr = docEl.listTags ();
|
||||||
|
for (var i=0; i<arr.length; i++) {
|
||||||
|
if (arr[i].getType () == type) {
|
||||||
|
if (param.type=="see" || param.type=="overrides") {
|
||||||
|
param.link = renderReference (arr[i], docEl);
|
||||||
|
}
|
||||||
|
str += arr[i].renderSkinAsString (skinname, param);
|
||||||
|
str += (param.separator) ? param.separator : "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* renders a reference to functions in other prototypes, masks
|
||||||
|
* urls in a see tag
|
||||||
|
* (see- and overrides-tags)
|
||||||
|
* @param docTagObj
|
||||||
|
* @param docEl needed to be able to walk up to application object
|
||||||
|
*/
|
||||||
|
function renderReference (docTagObj, docEl) {
|
||||||
|
// prepare the text:
|
||||||
|
var text = docTagObj.getText ();
|
||||||
|
text = new java.lang.String (text);
|
||||||
|
text = text.trim ();
|
||||||
|
if (text.indexOf("http://")==0) {
|
||||||
|
// an url is a simple job
|
||||||
|
return '<a href="' + text + '" target="_new">' + text + '</a>';
|
||||||
|
} else {
|
||||||
|
// make sure we only use the first item in the text so that unlinked comments
|
||||||
|
// can follow, store & split the that
|
||||||
|
var tok = new java.util.StringTokenizer (text);
|
||||||
|
var tmp = tok.nextToken ();
|
||||||
|
text = " " + text.substring (tmp.length + 1);
|
||||||
|
var parts = tmp.split(".");
|
||||||
|
// try to find the application object
|
||||||
|
var obj = docEl;
|
||||||
|
while (obj!=null) {
|
||||||
|
if (obj.getType () == Packages.helma.doc.DocElement.APPLICATION) {
|
||||||
|
var appObj = obj;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
obj = obj.getParentElement ();
|
||||||
|
}
|
||||||
|
var protoObj = appObj.getChildElement ("prototype_" + parts[0]);
|
||||||
|
if (protoObj==null) {
|
||||||
|
// prototype wasn't found, return the unlinked tag
|
||||||
|
return tmp + text;
|
||||||
|
}
|
||||||
|
if (parts.length==1) {
|
||||||
|
// no function specified, return the linked prototype
|
||||||
|
return '<a href="' + protoObj.href ("main") + '">' + format (tmp) + '</a>' + text;
|
||||||
|
}
|
||||||
|
// try to find a function object:
|
||||||
|
var arr = protoObj.listChildren ();
|
||||||
|
for (var i=0; i<arr.length; i++) {
|
||||||
|
if (arr[i].getName () == parts [1]) {
|
||||||
|
return '<a href="' + arr[i].href("main") + '">' + format(tmp) + '</a>' + text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// function not found:
|
||||||
|
return tmp + text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* function rendering a comment.
|
||||||
|
* @param param.length comment is shortened to the given length.
|
||||||
|
* @returns string
|
||||||
|
*/
|
||||||
|
function renderComment (docEl, param) {
|
||||||
|
var str = docEl.getComment ();
|
||||||
|
if (param.length) {
|
||||||
|
if (param.length < str.length) {
|
||||||
|
return str.substring (0, param.length) + " ...";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
|
@ -35,20 +35,20 @@ function countSessions_macro(par) {
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* macro returning the total number of sessions on this server
|
* macro returning the number of requests during the last 5 minutes
|
||||||
* @see global.formatCount
|
* @see global.formatCount
|
||||||
*/
|
*/
|
||||||
function countRequests_macro(par) {
|
function requestCount_macro(par) {
|
||||||
if ( app.requestStat==null ) {
|
if (app.data.stat==null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var arr = this.getApplications ();
|
var arr = this.getApplications ();
|
||||||
var sum = 0;
|
var sum = 0;
|
||||||
for (var i=0; i<arr.length; i++) {
|
for (var i=0; i<arr.length; i++) {
|
||||||
if ( arr[i].getName()!=app.__app__.getName() ) {
|
if (arr[i].getName() != app.__app__.getName() ) { // don't include manage app
|
||||||
var obj = app.requestStat.get(arr[i].name);
|
var obj = app.data.stat.get (arr[i].name);
|
||||||
if ( obj!=null ) {
|
if ( obj!=null ) {
|
||||||
sum += obj.last5Min;
|
sum += obj.requestCount;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -56,6 +56,29 @@ function countRequests_macro(par) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* macro returning the number of errors during the last 5 minutes
|
||||||
|
* @see global.formatCount
|
||||||
|
*/
|
||||||
|
function errorCount_macro(par) {
|
||||||
|
if (app.data.stat==null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var arr = this.getApplications ();
|
||||||
|
var sum = 0;
|
||||||
|
for (var i=0; i<arr.length; i++) {
|
||||||
|
if (arr[i].getName() != app.__app__.getName() ) { // don't include manage app
|
||||||
|
var obj = app.data.stat.get (arr[i].name);
|
||||||
|
if ( obj!=null ) {
|
||||||
|
sum += obj.errorCount;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return sum + formatCount (sum,par);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function extensions_macro (par) {
|
function extensions_macro (par) {
|
||||||
var vec = this.getExtensions ();
|
var vec = this.getExtensions ();
|
||||||
var str = "";
|
var str = "";
|
||||||
|
@ -65,7 +88,7 @@ function extensions_macro (par) {
|
||||||
str += (par && par.separator) ? par.separator : ", ";
|
str += (par && par.separator) ? par.separator : ", ";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return str;
|
return (str=="") ? null : str;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -163,28 +186,31 @@ function home_macro() {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Macro that returns the free memory in the java virtual machine
|
* Macro that returns the free memory in the java virtual machine
|
||||||
|
* @param format if "hr", value will be printed human readable
|
||||||
*/
|
*/
|
||||||
function jvmFreeMemory_macro() {
|
function jvmFreeMemory_macro (param) {
|
||||||
var m = java.lang.Runtime.getRuntime ().freeMemory ();
|
var m = java.lang.Runtime.getRuntime ().freeMemory ();
|
||||||
return formatBytes(m);
|
return (param && param.hr) ? formatBytes (m) : m;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Macro that returns the total memory available to the java virtual machine
|
* Macro that returns the total memory available to the java virtual machine
|
||||||
|
* @param format if "hr", value will be printed human readable
|
||||||
*/
|
*/
|
||||||
function jvmTotalMemory_macro() {
|
function jvmTotalMemory_macro (param) {
|
||||||
var m = java.lang.Runtime.getRuntime().totalMemory();
|
var m = java.lang.Runtime.getRuntime().totalMemory();
|
||||||
return formatBytes(m);
|
return (param && param.hr) ? formatBytes (m) : m;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Macro that returns the used memory in the java virtual machine
|
* Macro that returns the used memory in the java virtual machine
|
||||||
|
* @param format if "hr", value will be printed human readable
|
||||||
*/
|
*/
|
||||||
function jvmUsedMemory_macro() {
|
function jvmUsedMemory_macro(param) {
|
||||||
var m = java.lang.Runtime.getRuntime ().totalMemory () - java.lang.Runtime.getRuntime ().freeMemory ();
|
var m = java.lang.Runtime.getRuntime ().totalMemory () - java.lang.Runtime.getRuntime ().freeMemory ();
|
||||||
return formatBytes(m);
|
return (param && param.hr) ? formatBytes (m) : m;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -7,35 +7,40 @@
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="list_property" align="right" width="200">uptime:</td>
|
<td class="list_property">uptime:</td>
|
||||||
<td class="list_property" width="5"> </td>
|
<td class="list_property" width="5"> </td>
|
||||||
<td class="list_property" align="left"><% this.uptime %></td>
|
<td class="list_property" align="left"><% this.uptime %></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="list_property" align="right" width="200">version:</td>
|
<td class="list_property">version:</td>
|
||||||
<td class="list_property" width="5"> </td>
|
<td class="list_property" width="5"> </td>
|
||||||
<td class="list_property" align="left"><% this.version %></td>
|
<td class="list_property" align="left"><% this.version %></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="list_property" align="right" width="200">homedir:</td>
|
<td class="list_property">homedir:</td>
|
||||||
<td class="list_property" width="5"> </td>
|
<td class="list_property" width="5"> </td>
|
||||||
<td class="list_property" align="left"><% this.home %></td>
|
<td class="list_property" align="left"><% this.home %></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="list_property" align="right" width="200" valign="top">total active sessions:</td>
|
<td class="list_property" valign="top">total active sessions:</td>
|
||||||
<td class="list_property" width="5"> </td>
|
<td class="list_property" width="5"> </td>
|
||||||
<td class="list_property" align="left"><% this.countSessions default=" " %></td>
|
<td class="list_property" align="left"><% this.countSessions default=" " %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="list_property" align="right" width="200" valign="top">total requests / 5 min:</td>
|
<td class="list_property" nowrap valign="top">total requests / 5 min:</td>
|
||||||
<td class="list_property" width="5"> </td>
|
<td class="list_property" width="5"> </td>
|
||||||
<td class="list_property" align="left"><% this.countRequests default=" " %></td>
|
<td class="list_property" align="left"><% this.requestCount default=" " %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="list_property" align="right" width="200" valign="top">loaded extensions:</td>
|
<td class="list_property" norwrap valign="top">total errors / 5 min:</td>
|
||||||
|
<td class="list_property" width="5"> </td>
|
||||||
|
<td class="list_property" align="left"><% this.errorCount default=" " %></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="list_property" valign="top">loaded extensions:</td>
|
||||||
<td class="list_property" width="5"> </td>
|
<td class="list_property" width="5"> </td>
|
||||||
<td class="list_property" align="left"><% this.extensions default=" " %></td>
|
<td class="list_property" align="left"><% this.extensions default=" " %></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -45,51 +50,51 @@
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="list_property" align="right" width="200">free memory:</td>
|
<td class="list_property">free memory:</td>
|
||||||
<td class="list_property" width="5"> </td>
|
<td class="list_property" width="5"> </td>
|
||||||
<td class="list_property" align="left"><% this.jvmFreeMemory %></td>
|
<td class="list_property" align="left"><% this.jvmFreeMemory hr="true" %></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="list_property" align="right" width="200">used memory:</td>
|
<td class="list_property">used memory:</td>
|
||||||
<td class="list_property" width="5"> </td>
|
<td class="list_property" width="5"> </td>
|
||||||
<td class="list_property" align="left"><% this.jvmUsedMemory %></td>
|
<td class="list_property" align="left"><% this.jvmUsedMemory hr="true" %></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="list_property" align="right" width="200">total memory:</td>
|
<td class="list_property">total memory:</td>
|
||||||
<td class="list_property" width="5"> </td>
|
<td class="list_property" width="5"> </td>
|
||||||
<td class="list_property" align="left"><% this.jvmTotalMemory %></td>
|
<td class="list_property" align="left"><% this.jvmTotalMemory hr="true" %></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td class="list_property" align="right" width="200">java:</td>
|
<td class="list_property">java:</td>
|
||||||
<td class="list_property" width="5"> </td>
|
<td class="list_property" width="5"> </td>
|
||||||
<td class="list_property" align="left"><% this.jvm %></td>
|
<td class="list_property" align="left"><% this.jvm %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="list_property" align="right" width="200">javahome:</td>
|
<td class="list_property">javahome:</td>
|
||||||
<td class="list_property" width="5"> </td>
|
<td class="list_property" width="5"> </td>
|
||||||
<td class="list_property" align="left"><% this.jvmHome %></td>
|
<td class="list_property" align="left"><% this.jvmHome %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="list_property" align="right" width="200">os:</td>
|
<td class="list_property">os:</td>
|
||||||
<td class="list_property" width="5"> </td>
|
<td class="list_property" width="5"> </td>
|
||||||
<td class="list_property" align="left"><% this.os %></td>
|
<td class="list_property" align="left"><% this.os %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="list_property" align="right" width="200">localtime:</td>
|
<td class="list_property">localtime:</td>
|
||||||
<td class="list_property" width="5"> </td>
|
<td class="list_property" width="5"> </td>
|
||||||
<td class="list_property" align="left"><% now %></td>
|
<td class="list_property" align="left"><% now %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="list_property" align="right" width="200" valign="top">timezone:</td>
|
<td class="list_property" valign="top">timezone:</td>
|
||||||
<td class="list_property" width="5"> </td>
|
<td class="list_property" width="5"> </td>
|
||||||
<td class="list_property" align="left"><% this.timezone %></td>
|
<td class="list_property" align="left"><% this.timezone %></td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="list_property" align="right" width="200" valign="top">loaded Jars:</td>
|
<td class="list_property" valign="top">loaded Jars:</td>
|
||||||
<td class="list_property" width="5"> </td>
|
<td class="list_property" width="5"> </td>
|
||||||
<td class="list_property" align="left"><% this.jvmJars %></td>
|
<td class="list_property" align="left"><% this.jvmJars %></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
@ -98,7 +103,7 @@
|
||||||
<td class="list_separator" colspan="3">server.properties</td>
|
<td class="list_separator" colspan="3">server.properties</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<% this.properties itemprefix='<tr><td class="list_property" align="right" width="200">' separator='</td><td class="list_property" width="5"> </td><td class="list_property" align="left">' itemsuffix='</td></tr>' %>
|
<% this.properties itemprefix='<tr><td class="list_property">' separator='</td><td class="list_property" width="5"> </td><td class="list_property" align="left">' itemsuffix='</td></tr>' %>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
|
|
||||||
// strictly limit access to localhost:
|
//// strictly limit access to localhost:
|
||||||
if ( req.data.http_remotehost!="localhost" && req.data.http_remotehost!="127.0.0.1" ) {
|
//if ( req.data.http_remotehost!="localhost" && req.data.http_remotehost!="127.0.0.1" ) {
|
||||||
app.__app__.logEvent( req.data.http_remotehost + " tried to access makekey");
|
// app.logEvent( req.data.http_remotehost + " tried to access makekey");
|
||||||
|
// return;
|
||||||
|
//}
|
||||||
|
|
||||||
|
if ( checkAuth()==false )
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
if ( checkAuth()==false ) return;
|
|
||||||
|
|
||||||
createAuth();
|
createAuth();
|
||||||
|
|
||||||
|
|
37
Root/mrtg.hac
Normal file
37
Root/mrtg.hac
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
|
||||||
|
/**
|
||||||
|
* prints server-stats for mrtg-tool.
|
||||||
|
* doesn't check username or password, so that we don't have
|
||||||
|
* to write them cleartext in a mrtg-configfile but checks the
|
||||||
|
* remote address.
|
||||||
|
*/
|
||||||
|
|
||||||
|
if ( checkAddress()==false )
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
|
if (req.data.action=="memory") {
|
||||||
|
|
||||||
|
res.write (this.jvmTotalMemory_macro () + "\n");
|
||||||
|
res.write (this.jvmFreeMemory_macro () + "\n");
|
||||||
|
res.write ("0\n0\n");
|
||||||
|
|
||||||
|
} else if (req.data.action=="netstat" && isLinux ()) {
|
||||||
|
|
||||||
|
var str = (new File("/proc/net/tcp")).readAll();
|
||||||
|
var arr = str.split("\n");
|
||||||
|
res.write (arr.length-2 + "\n");
|
||||||
|
res.write ("0\n0\n0\n");
|
||||||
|
|
||||||
|
} else if (req.data.action=="loadavg" && isLinux ()) {
|
||||||
|
|
||||||
|
// load average of last 5 minutes:
|
||||||
|
var str = (new File("/proc/loadavg")).readAll();
|
||||||
|
var arr = str.split(" ");
|
||||||
|
res.write (arr[1]*100 + "\n");
|
||||||
|
res.write ("0\n0\n0\n");
|
||||||
|
|
||||||
|
} else {
|
||||||
|
res.write ( "0\n0\n0\n0\n");
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue