|
From: <tre...@us...> - 2007-09-07 21:40:38
|
Revision: 386
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=386&view=rev
Author: trevorolio
Date: 2007-09-07 14:40:40 -0700 (Fri, 07 Sep 2007)
Log Message:
-----------
Tweaked db log.
Added javascript login functionality such that the usual authListeners can be bypassed.
Fixed createAccount.html, which was weirdly replaced with an old ogoglio.js contents (bad cut and paste)?
Made SpaceMemberRecord creation honor the role indicated by the incoming SpaceMemberDocument.
Fixed the hanging "Receiving items..." context menu for scriptless objects.
Changed page permissions so that editors can now post contents to them.
Modified Paths:
--------------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpaceMemberPersistTasks.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpaceMemberRecord.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/SpaceScriptEngine.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java
maven/trunk/ogoglio-server/src/main/resources/siteTemplates/createAccount.html
maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpaceMemberPersistTasks.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpaceMemberPersistTasks.java 2007-09-07 21:40:36 UTC (rev 385)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpaceMemberPersistTasks.java 2007-09-07 21:40:40 UTC (rev 386)
@@ -61,7 +61,7 @@
return (SpaceMemberRecord[]) task.execute();
}
- public static SpaceMemberRecord createSpaceMember(final long spaceID, final String memberUsername, final boolean banned, SessionFactory sessionFactory) throws PersistException {
+ public static SpaceMemberRecord createSpaceMember(final long spaceID, final String memberUsername, final boolean banned, final int role, SessionFactory sessionFactory) throws PersistException {
HibernateTask task = new HibernateTask() {
public Object run(Session hibernateSession) {
Query accountQuery = hibernateSession.getNamedQuery(AccountPersistTasks.ACCOUNT_BY_USERNAME);
@@ -79,7 +79,7 @@
return null;
}
- record = new SpaceMemberRecord(spaceID, memberUsername, banned);
+ record = new SpaceMemberRecord(spaceID, memberUsername, banned, role);
hibernateSession.save(record);
return record;
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpaceMemberRecord.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpaceMemberRecord.java 2007-09-07 21:40:36 UTC (rev 385)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/persist/SpaceMemberRecord.java 2007-09-07 21:40:40 UTC (rev 386)
@@ -32,12 +32,13 @@
public SpaceMemberRecord() {
}
- public SpaceMemberRecord(long spaceID, String memberUsername, boolean banned) {
+ public SpaceMemberRecord(long spaceID, String memberUsername, boolean banned, int role) {
ArgumentUtils.assertNotNegative(spaceID);
this.spaceID = spaceID;
ArgumentUtils.assertNotNull(memberUsername);
this.memberUsername = memberUsername;
this.banned = banned;
+ setRole(role);
}
public boolean isBanned() {
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/SpaceScriptEngine.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/SpaceScriptEngine.java 2007-09-07 21:40:36 UTC (rev 385)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/script/SpaceScriptEngine.java 2007-09-07 21:40:40 UTC (rev 386)
@@ -173,17 +173,24 @@
}
} else if (SpaceEvent.THING_CONTEXT_CLICKED_EVENT.equals(event.getName())) {
Long thingID = event.getLongProperty(SpaceEvent.THING_ID);
+ String shapeName = event.getStringProperty(SpaceEvent.SHAPE_NAME);
+ String username = event.getStringProperty(SpaceEvent.USERNAME);
+ long nonce = event.getLongProperty(SpaceEvent.NONCE).longValue();
+
+ SpaceEvent resultEvent = new SpaceEvent(SpaceEvent.CONTEXT_MENU_DATA_EVENT);
+ resultEvent.setProperty(SpaceEvent.NONCE, new Long(nonce));
+
if (thingID == null) {
+ spaceSimulator.getListener().generatedSpaceEventForUser(username, resultEvent, spaceSimulator);
return;
}
+
ScriptableObject thingScope = getThingScope(thingID.longValue());
if (thingScope == null) {
+ spaceSimulator.getListener().generatedSpaceEventForUser(username, resultEvent, spaceSimulator);
return;
}
- String shapeName = event.getStringProperty(SpaceEvent.SHAPE_NAME);
- String username = event.getStringProperty(SpaceEvent.USERNAME);
- long nonce = event.getLongProperty(SpaceEvent.NONCE).longValue();
String functionName = ONCONTEXTCLICK_FUNCTION_NAME;
@@ -191,9 +198,6 @@
functionArgs[0] = username;
functionArgs[1] = shapeName;
- SpaceEvent resultEvent = new SpaceEvent(SpaceEvent.CONTEXT_MENU_DATA_EVENT);
- resultEvent.setProperty(SpaceEvent.NONCE, new Long(nonce));
-
Context context = Context.enter();
try {
Object callResult = callJavascriptFunction(context, thingScope, functionName, functionArgs);
@@ -235,10 +239,12 @@
} else if (SpaceEvent.THING_CONTEXT_SELECTION_MADE_EVENT.equals(event.getName())) {
Long thingID = event.getLongProperty(SpaceEvent.THING_ID);
if (thingID == null) {
+ spaceSimulator.log("Context selection with no thing ID!");
return;
}
ScriptableObject thingScope = getThingScope(thingID.longValue());
if (thingScope == null) {
+ spaceSimulator.log("Context selection on a thing with no script!: " + thingID);
return;
}
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2007-09-07 21:40:36 UTC (rev 385)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/sim/site/SimServlet.java 2007-09-07 21:40:40 UTC (rev 386)
@@ -32,6 +32,7 @@
import com.ogoglio.appdev.servlet.SiteResource;
import com.ogoglio.client.DecoratedInputStream;
import com.ogoglio.media.MediaService;
+import com.ogoglio.persist.AccountPersistTasks;
import com.ogoglio.persist.AccountRecord;
import com.ogoglio.persist.SimPersistTasks;
import com.ogoglio.persist.SimRecord;
@@ -43,7 +44,6 @@
import com.ogoglio.sim.script.ScriptHTTPRequest;
import com.ogoglio.sim.script.ScriptHTTPResponse;
import com.ogoglio.site.AuthServlet;
-import com.ogoglio.site.AuthenticatedSiteResource;
import com.ogoglio.site.OgoglioServletBase;
import com.ogoglio.site.SpaceServlet;
import com.ogoglio.util.Log;
@@ -456,6 +456,13 @@
return;
}
+
+ AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
+ if (!SpacePersistTasks.canReadSpace(authedAccount, spaceID, getSessionFactory())) {
+ response.setStatus(HttpServletResponse.SC_FORBIDDEN);
+ return;
+ }
+
SpaceSimulator simulator = sim.getOrCreateSpaceSimulator(spaceRecord);
long thingID = Long.parseLong(pathElements[4]);
@@ -492,7 +499,7 @@
}
AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
- if (authedAccount != null && !authedAccount.getUsername().equals(spaceRecord.getOwnerUsername())) {
+ if (!SpacePersistTasks.canWriteSpace(authedAccount, spaceID, getSessionFactory())) {
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
return;
}
@@ -765,17 +772,7 @@
}
public void doPost(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
- try {
- AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
- if (authedAccount == null) {
- response.setStatus(HttpServletResponse.SC_FORBIDDEN);
- return;
- }
- doScriptService(request, response, pathElements);
- } catch (PersistException e) {
- e.printStackTrace();
- response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
- }
+ doScriptService(request, response, pathElements);
}
public void doScriptService(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
@@ -890,7 +887,7 @@
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return;
}
-
+
AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
if (authedAccount != null && !SpacePersistTasks.canWriteSpace(authedAccount, requestedSpaceID, getSessionFactory())) {
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
@@ -1048,7 +1045,7 @@
response.setStatus(HttpServletResponse.SC_NOT_FOUND);
return;
}
-
+
AccountRecord authedAccount = AuthServlet.getAuthedAccountRecord(request, getSessionFactory());
if (authedAccount != null && !SpacePersistTasks.canWriteSpace(authedAccount, requestedSpaceID, getSessionFactory())) {
response.setStatus(HttpServletResponse.SC_FORBIDDEN);
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java 2007-09-07 21:40:36 UTC (rev 385)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/SpaceServlet.java 2007-09-07 21:40:40 UTC (rev 386)
@@ -683,7 +683,7 @@
}
SpaceMemberDocument newMemberDoc = new SpaceMemberDocument(parseXML(request.getInputStream()));
- SpaceMemberRecord rec = SpaceMemberPersistTasks.createSpaceMember(spaceID, newMemberDoc.getMemberUsername(), newMemberDoc.isBanned(), getSessionFactory());
+ SpaceMemberRecord rec = SpaceMemberPersistTasks.createSpaceMember(spaceID, newMemberDoc.getMemberUsername(), newMemberDoc.isBanned(), newMemberDoc.getRoleAsInt(), getSessionFactory());
if (rec == null) {
response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
Modified: maven/trunk/ogoglio-server/src/main/resources/siteTemplates/createAccount.html
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/siteTemplates/createAccount.html 2007-09-07 21:40:36 UTC (rev 385)
+++ maven/trunk/ogoglio-server/src/main/resources/siteTemplates/createAccount.html 2007-09-07 21:40:40 UTC (rev 386)
@@ -1,775 +1,140 @@
-var appPath = "/og"; //do not put a slash on the end
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<link rel="stylesheet" href="style.css" type="text/css" />
+<script type="text/javascript" src="/og/ogoglio.js"></script>
+<script type="text/javascript" src="site.js"></script>
-function getServiceURI(){
- var locLink = document.location;
- return locLink.protocol + "//" + locLink.host + appPath;
-}
+<title>Ogoglio Example: create account</title>
-
-//BEGIN GENERAL UTILS
-function parseLocationParameters(){
- var paramPhrases = location.search.substring(1, location.search.length).split("&");
- var paramDict = new Object();
- for(var i=0; i < paramPhrases.length; i++){
- paramDict[paramPhrases[i].split("=")[0]] = paramPhrases[i].split("=")[1];
- }
- return paramDict;
+<style type="text/css">
+#main {
+ overflow: hidden;
+ width: 750px;
}
-var locationParameters = parseLocationParameters();
-
-function getFloatParameter(paramName, defaultValue){
- var value = locationParameters[paramName];
- if(typeof value == 'undefined' || value == null){
- return defaultValue;
- }
- try {
- return parseFloat(value);
- } catch (error){
- return defaultValue;
- }
+#content {
+ width: 750px;
+ border-right: 1px solid #FFF;
+ margin-right: 1px;
+ float: left;
}
-function getIntParameter(paramName, defaultValue){
- var value = locationParameters[paramName];
- if(typeof value == 'undefined' || value == null){
- return defaultValue;
- }
- try {
- return parseInt(value);
- } catch (error){
- return defaultValue;
- }
+.section form {
+ margin-top: 10px;
}
-var isIE = false;
-if (window.ActiveXObject) {
- isIE = true;
+.section {
+ border: solid 1px #CCD;
+ border-top: solid 5px #CCD;
+ margin: 0px 25px 10px 0px;
+ padding: 0px 5px 5px 5px;
}
-function XMLRequestManager(theURL, theListener){
- var that = this;
- this.url = theURL;
- this.listener = theListener;
- this.request = getXMLHttpRequest();
- this.method = "GET";
-
- function processRequestChange() {
- if(that.request.readyState == 4){
- if(that.request.status == 200){
- if(that.request.responseXML && that.request.responseXML.documentElement && that.listener.handleResponseXML ){
- that.listener.handleResponseXML(that.request.responseXML);
- } else if(that.request.responseText != "undefined" && that.listener.handleResponseText){
- that.listener.handleResponseText(that.request.responseText);
- } else {
- that.listener.handleFailure("Found the file, but it is not a handled type (text or xml)");
- }
- } else {
- that.listener.handleFailure(that.request.statusText);
- }
- }
- }
- this.request.onreadystatechange = processRequestChange;
+#profileTable th {
+ text-align: right;
}
-XMLRequestManager.prototype.setMethod = function (newMethod) {
- this.method = newMethod;
+.includedFeedItem {
+ margin-top: 10px;
}
+</style>
+<script type="text/javascript">
-XMLRequestManager.prototype.send = function (data, contentType) {
- if(this.method == "DELETE"){ //a workaround for WebKit's tendency to do only GET and POST
- if(this.url.indexOf("?") == -1){
- this.url += "?method=DELETE";
- } else {
- this.url += "&method=DELETE";
- }
- }
-
- this.request.open(this.method, this.url, true);
- if(data){
- if(contentType != null){
- this.request.setRequestHeader('Content-Type', contentType);
- } else {
- this.request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
- }
- this.request.send(data);
- } else if(isIE){
- this.request.send();
- } else {
- this.request.send(null);
- }
-}
+var mainElement = null;
+var newUserDiv = null;
-
-function BasicHTTPListener(callbackFunction) {
- this.callback = callbackFunction;
-}
-
-BasicHTTPListener.prototype.handleResponseXML = function (responseXML) {
- this.callback(responseXML.documentElement);
-}
-
-BasicHTTPListener.prototype.handleResponseText = function (responseText) {
- this.callback(responseText);
-}
-
-BasicHTTPListener.prototype.handleFailure = function (statusText) {
- this.callback(null);
-}
-
-function getXMLHttpRequest(){
- if (window.XMLHttpRequest) {
- return new XMLHttpRequest();
- } else if (window.ActiveXObject) {
- return new ActiveXObject("Microsoft.XMLHTTP");
- }
- return null;
-}
-
-function getFirstChildByTagName(localName, parentNode){
- var children = parentNode.childNodes;
- for(var i=0; children[i]; i++){
- if(children[i].name == localName || children[i].nodeName == localName || children[i].localName == localName){
- return children[i];
- }
- }
-}
-
-function trim(str) {
- return str.replace(/^\s*|\s*$/g,"");
-}
-
-function shorten(str, len){
- if(typeof str == "undefined" || str == null || str.length <= len){
- return str;
- }
- return str.substring(0, len);
-}
-
-function trimPX(value){
- if(value.indexOf("px") != -1){
- value = value.substring(0, value.indexOf("px"));
- }
- return value;
-}
-
-function clip(text, maxLength, elipseText){
- var eLength = elipseText == null ? 0 : elipseText.length;
- if(text == null || text.length <= maxLength){
- return text;
- }
- return text.substring(0, maxLength - eLength) + (elipseText == null ? "" : elipseText);
-}
-
-function popUp(URL, decorated, width, height) {
- var id = "page-" + new Date().getTime();
- var params = "";
- if(typeof width != "undefined"){
- params += ",width=" + width;
- }
- if(typeof height != undefined){
- params += ",height=" + height;
- }
- if(decorated == null || decorated == true){
- params += ',toolbar=1,scrollbars=1,location=1,statusbar=1,menubar=1,resizable=1';
- }
- return window.open(URL, id, params);
-}
-
-function getCookie(name) {
- var dc = document.cookie;
- var prefix = name + "=";
- var begin = dc.indexOf("; " + prefix);
- if (begin == -1) {
- begin = dc.indexOf(prefix);
- if (begin != 0) return null;
- } else {
- begin += 2;
- }
- var end = document.cookie.indexOf(";", begin);
- if (end == -1) {
- end = dc.length;
- }
- return unescapeHTML(dc.substring(begin + prefix.length, end));
-}
-
-function debug(message){
- var debugDiv = document.getElementById('debugMessages');
- if(debugDiv == null || typeof debugDiv == "undefined"){
+function handleAuth(){
+ if(authedUsername == null){
+ mainElement.innerHTML = "<h2>You must log in as an admin.</h2>";
return;
}
- debugDiv.innerHTML += message + "<br/>";
+ requestAccountDocument(authedUsername, handleAdminTest);
}
-//this only serializes simple XML and it casts all tag and attribute names to lower case
-//TODO handle all the various warts of XML
-function serializeXML(xml){
- var result = "<" + xml.tagName.toLowerCase();
- var attributes = xml.attributes;
- for (var i = 0; i < attributes.length; i++){
- result += " " + attributes.item(i).name.toLowerCase() + "='" + escapeHTML(attributes.item(i).value) + "'";
- }
- var hasText = (typeof xml.text != "undefined") && xml.text.length != 0;
-
- if(!hasText && xml.childNodes.length == 0){
- result += " />";
-
- return result;
- } else {
- result += ">";
- }
-
- if(hasText){
- result += xml.text;
- }
-
- for(var i = 0; i < xml.childNodes.length; i++){
- result += serializeXML(xml.childNodes[i]);
- }
- result += "</" + xml.tagName.toLowerCase() + ">";
- return result;
-}
-
-function escapeHTML(xml){
- if(xml == null || xml.length == 0){
- return xml;
- }
- return xml.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """).replace(/'/g, "'");
-};
-
-function unescapeHTML(xml){
- return xml.replace(/'/g,"'").replace(/"/g,"\"").replace(/>/g,">").replace(/</g,"<").replace(/&/g,"&");
-};
-
-// BEGIN QUATERION CLASS
-
-function Quaternion(wValue, xValue, yValue, zValue){
- this.w = wValue;
- this.x = xValue;
- this.y = yValue;
- this.z = zValue;
- this.normalize();
-}
-
-Quaternion.prototype.set = function(wValue, xValue, yValue, zValue){
- this.w = wValue;
- this.x = xValue;
- this.y = yValue;
- this.z = zValue;
- this.normalize();
-}
-
-Quaternion.prototype.normalize = function(){
- var norm = (this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);
-
- if (norm > 0.0) {
- norm = 1.0 / Math.sqrt(norm);
- this.x *= norm;
- this.y *= norm;
- this.z *= norm;
- this.w *= norm;
- } else {
- this.x = 0.0;
- this.y = 0.0;
- this.z = 0.0;
- this.w = 0.0;
- }
-}
-
-Quaternion.prototype.mul = function(q1){
- var nw = this.w * q1.w - this.x * q1.x - this.y * q1.y - this.z * q1.z;
- var nx = this.w * q1.x + q1.w * this.x + this.y * q1.z - this.z * q1.y;
- var ny = this.w * q1.y + q1.w * this.y - this.x * q1.z + this.z * q1.x;
- this.z = this.w * q1.z + q1.w * this.z + this.x * q1.y - this.y * q1.x;
- this.w = nw;
- this.x = nx;
- this.y = ny;
- this.normalize();
-}
-
-Quaternion.prototype.rotateEuler = function(rotX, rotY, rotZ){
- var quat = new Quaternion(1, 0, 0, 0);
- quat.setEuler(rotX, rotY, rotZ);
- this.mul(quat);
-}
-
-Quaternion.prototype.toString = function(){
- return "<" + this.w + ", " + this.x + ", " + this.y + ", " + this.z + ">";
-}
-
-Quaternion.prototype.setEuler = function(rotX, rotY, rotZ){
- var c1 = Math.cos(rotY / 2);
- var c2 = Math.cos(rotX / 2);
- var c3 = Math.cos(rotZ / 2);
- var s1 = Math.sin(rotY / 2);
- var s2 = Math.sin(rotX / 2);
- var s3 = Math.sin(rotZ / 2);
-
- this.w = (c1 * c2 * c3) - (s1 * s2 * s3);
- this.x = (s1 * s2 * c3) + (c1 * c2 * s3);
- this.y = (s1 * c2 * c3) + (c1 * s2 * s3);
- this.z = (c1 * s2 * c3) - (s1 * c2 * s3);
- this.normalize();
-}
-
-Quaternion.prototype.getEuler = function(){
- var heading = 0;
- var attitude = 0;
- var bank = 0;
- if(this.x * this.y + this.z * this.w == 0.5){ //North Pole
- attitude = Math.PI / 2;
- bank = 0;
- heading = 2 * Math.atan2(this.x, this.w);
- } else if (this.x * this.y + this.z * this.w == -0.5) { // South Pole
- attitude = -Math.PI / 2;
- heading = -2 * Math.atan2(this.x, this.w)
- bank = 0;
- } else {
- heading = Math.atan2(2 * this.y * this.w - 2 * this.x * this.z, 1 - 2 * (this.y * this.y) - 2 * (this.z * this.z)) % (2 * Math.PI);
- attitude = Math.asin(2 * this.x * this.y + 2 * this.z * this.w) % (2 * Math.PI);
- bank = Math.atan2(2 * this.x * this.w - 2 * this.y * this.z , 1 - 2 * (this.x * this.x) - 2 * (this.z * this.z)) % (2 * Math.PI);
- }
- return new Array(cleanRotation(attitude), cleanRotation(heading), cleanRotation(bank));
-}
-
-function cleanRotation(rotation){ //in radians
- while(rotation < 0){
- rotation += 2 * Math.PI;
- }
- while(rotation >= 2 * Math.PI){
- rotation -= 2 * Math.PI;
- }
- if(rotation < 0.0001){
- return 0;
- }
- return rotation.toFixed(4);
-}
-
-//BEGIN AUTH UTILS
-
-var completedAuthRequest = false;
-var authedUsername = null;
-var authedUserLevel = null;
-var errorText = null;
-
-
-function logout(){
- var logoutRequestManager = new XMLRequestManager(appPath + "/auth?logout=true", new AuthListener());
- logoutRequestManager.send();
-}
-
-function addAuthListeners(authFunction, failedFunction){
- authedListeners[authedListeners.length] = authFunction;
- failedListeners[failedListeners.length] = failedFunction;
- if(completedAuthRequest){
- if(authedUsername == null){
- failedFunction();
- } else {
- authFunction();
- }
- }
-}
-
-var authedListeners = new Array();
-var failedListeners = new Array();
-
-function AuthListener() {
-}
-
-AuthListener.prototype.handleResponseXML = function (responseXML) {
- var xmlDoc = responseXML.documentElement;
- var successAttribute = xmlDoc.getAttribute('authenticated');
- var idAttribute = xmlDoc.getAttribute('username');
- var levelAttribute = xmlDoc.getAttribute('accountlevel');
-
- if(successAttribute == "true" && typeof idAttribute != "undefined" && typeof levelAttribute != "undefined") {
- authedUsername = idAttribute;
- authedUserLevel = levelAttribute;
-
- for(var i=0; i < authedListeners.length; i++){
- authedListeners[i]();
- }
- completedAuthRequest = true;
- } else {
- authedUsername = null;
- for(var i=0; i < authedListeners.length; i++){
- authedListeners[i]();
- }
- completedAuthRequest = true;
- }
-}
-
-AuthListener.prototype.handleFailure = function (statusText) {
- for(var i=0;i < failedListeners.length; i++){
- failedListeners[i]();
- }
- errorText = statusText;
- completedAuthRequest = true;
- authedUsername = null;
-}
-
-var authRequestManager = new XMLRequestManager(appPath + "/auth", new AuthListener());
-authRequestManager.send();
-
-function login(username, password){
- if(!username || trim(username).length == 0 || !password || trim(password).length == 0){
+function handleAdminTest(xml){
+ if(xml == null){
+ mainElement.innerHTML = "<h2>There was an error checking your account for admin access.</h2>";
return;
}
-
- var manager = new XMLRequestManager(appPath + "/auth", new AuthListener());
-
- manager.setMethod("POST");
- manager.send("username=" + trim(username) + "&password=" + trim(password));
-}
-
-function requestMyAuthDocument(listener){
- new XMLRequestManager(appPath + "/auth/me", new BasicHTTPListener(listener)).send();
-}
-
-function requestGuestCookie(listener){
- var manager = new XMLRequestManager(appPath + "/auth/guest", new BasicHTTPListener(listener));
- manager.setMethod("POST");
- manager.send();
-}
-
-// BEGIN ACCOUNT UTILS
-
-function createAccount(username, email, listener){
- var xml = document.createElement("account");
- xml.setAttribute("username", username);
- xml.setAttribute("email", email);
- xml.setAttribute("accountlevel", "basic");
- var manager = new XMLRequestManager(appPath + "/account/", new BasicHTTPListener(listener));
- manager.setMethod("POST");
- manager.send(serializeXML(xml));
-}
-
-function requestAccountDocument(username, listener){
- var accountListener = new BasicHTTPListener(listener);
- new XMLRequestManager(appPath + "/account/" + username, accountListener).send();
-}
-
-function updateAccountDocument(accountXML, listener){
- if(accountXML == null){
+ if("admin" != xml.getAttribute("accountlevel")){
+ mainElement.innerHTML = "<h2>You must be an admin to use this page.</h2>";
return;
}
- var username = accountXML.getAttribute("username");
- var accountListener = new BasicHTTPListener(listener);
- var manager = new XMLRequestManager(appPath + "/account/" + username, accountListener);
- manager.setMethod("POST");
- var xmlString = serializeXML(accountXML);
- manager.send(xmlString);
-}
-
-function requestAccountMembership(username, listener){
- new XMLRequestManager(appPath + "/account/" + username + "/membership", new BasicHTTPListener(listener)).send();
-}
-
-function validate(secret, listener){
- new XMLRequestManager(appPath + "/account/validate?secret=" + secret, new BasicHTTPListener(listener)).send();
-}
-
-// BEGIN SPACE UTILS
-
-function requestSpaceList(username, listener){
- new XMLRequestManager(appPath + "/account/" + username + "/space/", new BasicHTTPListener(listener)).send();
-}
-
-function requestSpaceDocument(spaceID, listener){
- new XMLRequestManager(appPath + "/space/" + spaceID, new BasicHTTPListener(listener)).send();
-}
-
-function requestSpaceMembers(spaceID, listener){
- new XMLRequestManager(appPath + "/space/" + spaceID + "/member", new BasicHTTPListener(listener)).send();
-}
-
-function addSpaceMember(spaceID, memberUsername, role, listener){
- var memberXML = document.createElement("spacemember");
- memberXML.setAttribute("spaceid", spaceID);
- memberXML.setAttribute("memberusername", memberUsername);
- memberXML.setAttribute("role", role);
- memberXML.setAttribute("banned", false);
- var manager = new XMLRequestManager(appPath + "/space/" + spaceID + "/member/", new BasicHTTPListener(listener));
- manager.setMethod("POST");
- manager.send(serializeXML(memberXML));
-}
-
-function removeSpaceMember(spaceID, memberUsername, listener){
- var manager = new XMLRequestManager(appPath + "/space/" + spaceID + "/member/" + memberUsername, new BasicHTTPListener(listener));
- manager.setMethod("DELETE");
- manager.send();
-}
-
-function updateMemberRole(spaceID, memberUsername, newRole, listener){
- var memberXML = document.createElement("spacemember");
- memberXML.setAttribute("spaceid", spaceID);
- memberXML.setAttribute("memberusername", memberUsername);
- memberXML.setAttribute("role", newRole);
- memberXML.setAttribute("banned", false);
- var manager = new XMLRequestManager(appPath + "/space/" + spaceID + "/member/" + memberUsername, new BasicHTTPListener(listener));
- manager.setMethod("POST");
- manager.send(serializeXML(memberXML));
-}
-
-function createSpace(username, spaceName, listener){
- var bodyXML = document.createElement("space");
- bodyXML.setAttribute("ownerusername", username);
- bodyXML.setAttribute("displayname", escapeHTML(spaceName));
- var manager = new XMLRequestManager(appPath + "/space/", new BasicHTTPListener(listener));
- manager.setMethod("POST");
- manager.send(serializeXML(bodyXML));
-}
-
-function deleteSpace(spaceID, listener){
- var req = new XMLRequestManager(appPath + "/space/" + spaceID, new BasicHTTPListener(listener));
- req.setMethod("DELETE");
- req.send();
-}
-
-function updateSpaceDocument(xml, listener){
- if(xml == null){
- return;
- }
- var spaceID = xml.getAttribute("spaceid");
-
- var spaceListener = new BasicHTTPListener(listener);
- var manager = new XMLRequestManager(appPath + "/space/" + spaceID, spaceListener);
- manager.setMethod("POST");
- manager.send(serializeXML(xml));
-}
-
-function requestUserList(spaceID, listener){
- new XMLRequestManager(appPath + "/space/" + spaceID + "/user", new BasicHTTPListener(listener)).send();
-}
-
-function bootUser(spaceID, username, listener){
- var req = new XMLRequestManager(appPath + "/space/" + spaceID + "/user/" + username, new BasicHTTPListener(listener));
- req.setMethod("DELETE");
- req.send();
-}
-
-function requestSettingList(spaceID, listener){
- new XMLRequestManager(appPath + "/space/" + spaceID + "/setting", new BasicHTTPListener(listener)).send();
-}
-
-function requestSetting(spaceID, key, listener){
- new XMLRequestManager(appPath + "/space/" + spaceID + "/setting/" + key, new BasicHTTPListener(listener)).send();
-}
-
-function updateSetting(spaceID, key, value, listener){
- var manager = new XMLRequestManager(appPath + "/space/" + spaceID + "/setting/" + key, new BasicHTTPListener(listener));
- manager.setMethod("POST");
- manager.send("value=" + value);
+ writeNewUserForm();
}
-function removeSetting(spaceID, key, listener){
- var manager = new XMLRequestManager(appPath + "/space/" + spaceID + "/setting/" + key, new BasicHTTPListener(listener));
- manager.setMethod("DELETE");
- manager.send();
+function writeNewUserForm(){
+ var html = "<form id='newUserForm' onsubmit='newUserGo(); return false;'>";
+ html += "<table>"
+ html += "<tr><th>username:</th><td><input type='text' name='username' /></td><td> all lower case, number and letters</td></tr>"
+ html += "<tr><th>email:</th><td><input type='text' name='email' /></td><td></td></tr>"
+ html += "<tr><th>password:</th><td><input type='text' name='password' /></td><td></td></tr>"
+ html += "<tr><td></td><td><input type='submit' value='create account' /></td></tr>";
+ html += "</form>";
+ newUserDiv.innerHTML = html;
}
-
-// BEGIN TEMPLATE UTILS
-function requestTemplateList(username, listener){
- new XMLRequestManager(appPath + "/account/" + username + "/template/", new BasicHTTPListener(listener)).send();
-}
-
-function requestTemplate(username, templateID, listener){
- new XMLRequestManager(appPath + "/account/" + username + "/template/" + templateID, new BasicHTTPListener(listener)).send();
-}
-
-function createTemplate(username, templateName, listener){
- var xml = document.createElement("template");
- xml.setAttribute("ownerusername", username);
- xml.setAttribute("displayname", escapeHTML(templateName));
- var manager = new XMLRequestManager(appPath + "/account/" + username + "/template/", new BasicHTTPListener(listener));
- manager.setMethod("POST");
- manager.send(serializeXML(xml));
-}
-
-function updateTemplate(xml, listener){
- if(xml == null){
+function newUserGo(){
+ var form = document.getElementById("newUserForm");
+ if(form == null){
return;
}
- var username = xml.getAttribute("ownerusername");
- var templateID = xml.getAttribute("templateid");
-
- var manager = new XMLRequestManager(appPath + "/account/" + username + "/template/" + templateID, new BasicHTTPListener(listener));
- manager.setMethod("POST");
- manager.send(serializeXML(xml));
+ var username = form.username.value;
+ var email = form.email.value;
+ var password = form.password.value;
+ createAccount(username, email, password, handleNewAccount);
}
-function requestTemplateScript(username, templateID, listener){
- new XMLRequestManager(appPath + "/account/" + username + "/template/" + templateID + "/script/", new BasicHTTPListener(listener)).send();
-}
-
-function updateTemplateScript(username, templateID, script, listener){
- var manager = new XMLRequestManager(appPath + "/account/" + username + "/template/" + templateID + "/script/", new BasicHTTPListener(listener));
- manager.setMethod("POST");
- manager.send(script, "text/plain");
-}
-
-function requestTemplates(idArray, listener){
- if(idArray.length == 0){
- return;
- }
- var idPathElement = "";
- for(var i = 0; i < idArray.length; i++){
- idPathElement += idArray[i];
- if(i != idArray.length - 1){
- idPathElement += ",";
- }
- }
- new XMLRequestManager(appPath + "/account/template/" + idPathElement, new BasicHTTPListener(listener)).send();
-}
-
-// BEGIN THING UTILS
-
-function requestThing(spaceID, thingID, listener){
- new XMLRequestManager(appPath + "/space/" + spaceID + "/thing/" + thingID, new BasicHTTPListener(listener)).send();
-}
-
-function requestThingList(spaceID, listener){
- new XMLRequestManager(appPath + "/space/" + spaceID + "/thing", new BasicHTTPListener(listener)).send();
-}
-
-function updateThing(spaceID, xml, listener){
+function handleNewAccount(xml){
if(xml == null){
- return;
+ alert("Could not create that account.");
+ } else {
+ document.location.href = "admin.html?username=" + xml.getAttribute('username');
}
- var thingID = xml.getAttribute("thingid");
- var manager = new XMLRequestManager(appPath + "/space/" + spaceID + "/thing/" + thingID, new BasicHTTPListener(listener));
- manager.setMethod("POST");
- manager.send(serializeXML(xml));
}
-function reloadThing(spaceID, thingID){
- var nullFunction = function(xml) {};
- new XMLRequestManager(appPath + "/space/" + spaceID + "/thing/" + thingID + "?reload=true", new BasicHTTPListener(nullFunction)).send();
-}
+function init(){
+ populateMemberMenuItem();
-// BEGIN PAGE UTILS
-
-function requestPage(spaceID, thingID, pageID, listener){
- new XMLRequestManager(appPath + "/space/" + spaceID + "/thing/" + thingID + "/page/" + pageID, new BasicHTTPListener(listener)).send();
-}
-
-function requestPageList(spaceID, thingID, listener){
- new XMLRequestManager(appPath + "/space/" + spaceID + "/thing/" + thingID + "/page/", new BasicHTTPListener(listener)).send();
-}
-
-function createPage(spaceID, thingID, width, height, contentType, listener){
- var manager = new XMLRequestManager(appPath + "/space/" + spaceID + "/thing/" + thingID + "/page/", new BasicHTTPListener(listener));
- manager.setMethod("POST");
- var xml = document.createElement("page");
- xml.setAttribute("contenttype", contentType);
- xml.setAttribute("width", width);
- xml.setAttribute("height", height);
- manager.send(serializeXML(xml));
-}
-
-// BEGIN DOOR UTILS
-
-function requestDoorList(spaceID, listener){
- new XMLRequestManager(appPath + "/space/" + spaceID + "/door/", new BasicHTTPListener(listener)).send();
-}
-
-function requestDoor(spaceID, doorID, listener){
- new XMLRequestManager(appPath + "/space/" + spaceID + "/door/" + doorID + "/", new BasicHTTPListener(listener)).send();
-}
-
-function createDoor(spaceID, displayName, templateID, templateOwner, link, listener){
- var xml = document.createElement("door");
- xml.setAttribute("displayname", escapeHTML(displayName));
- xml.setAttribute("templateid", templateID);
- xml.setAttribute("templateowner", templateOwner);
- xml.setAttribute("link", link);
- var manager = new XMLRequestManager(appPath + "/space/" + spaceID + "/door/", new BasicHTTPListener(listener));
- manager.setMethod("POST");
- manager.send(serializeXML(xml));
-}
-
-function updateDoor(spaceID, xml, listener){
- if(xml == null){
- return;
- }
- var id = xml.getAttribute("doorid");
- var manager = new XMLRequestManager(appPath + "/space/" + spaceID + "/door/" + id, new BasicHTTPListener(listener));
- manager.setMethod("POST");
- manager.send(serializeXML(xml));
-}
-
-
-// BEGIN BODY UTILS
-
-function requestBodyList(username, listener){
- var httpListener = new BasicHTTPListener(listener);
- new XMLRequestManager(appPath + "/account/" + username + "/body/", httpListener).send();
-}
-
-function requestBodyDocument(username, bodyID, listener){
- var httpListener = new BasicHTTPListener(listener);
- new XMLRequestManager(appPath + "/account/" + username + "/body/" + bodyID, httpListener).send();
-}
-
-function createBody(username, bodyName, listener){
- var bodyXML = document.createElement("body");
- bodyXML.setAttribute("ownerusername", username);
- bodyXML.setAttribute("displayname", bodyName);
- var manager = new XMLRequestManager(appPath + "/account/" + username + "/body/", new BasicHTTPListener(listener));
- manager.setMethod("POST");
- manager.send(serializeXML(bodyXML));
-}
-
-function updateBodyDocument(xml, listener){
- if(xml == null){
- return;
- }
- var username = xml.getAttribute("ownerusername");
- var bodyID = xml.getAttribute("bodyid");
- var httpListener = new BasicHTTPListener(listener);
- var manager = new XMLRequestManager(appPath + "/account/" + username + "/body/" + bodyID, httpListener);
- manager.setMethod("POST");
- var xmlString = serializeXML(xml);
- manager.send(xmlString);
-}
-
-// BEGIN POSSESSION UTILS
-
-function requestPossession(username, possessionID, listener){
- new XMLRequestManager(appPath + "/account/" + username + "/possession/" + possessionID, new BasicHTTPListener(listener)).send();
-}
-
-function requestPossessionList(username, listener){
- new XMLRequestManager(appPath + "/account/" + username + "/possession/", new BasicHTTPListener(listener)).send();
-}
-
-function createPossession(username, templateID, listener){
- var possXML = document.createElement("possession");
- possXML.setAttribute("ownerusername", username);
- possXML.setAttribute("templateid", templateID);
- var manager = new XMLRequestManager(appPath + "/account/" + username + "/possession/", new BasicHTTPListener(listener));
- manager.setMethod("POST");
- manager.send(serializeXML(possXML));
-}
-
-function updatePossession(possXML, listener){
- var username = possXML.getAttribute('ownerusername');
- var possID = possXML.getAttribute('possessionid');
- if(username == null || possID == null){
- return;
- }
+ mainElement = document.getElementById("main");
+ newUserDiv = document.getElementById("newUserDiv");
- var manager = new XMLRequestManager(appPath + "/account/" + username + "/possession/" + possID, new BasicHTTPListener(listener));
- manager.setMethod("POST");
- manager.send(serializeXML(possXML));
+ addAuthListeners(handleAuth, handleAuth);
}
+</script>
+</head>
+<body onload="init();">
+<div id="header">
+ <strong><a href="index.html">Ogoglio Example</a></strong>
+ <span id="search">
+ <!-- <form style="margin: 0px;" method="get" action="http://www.google.com/search">
+ <input type="text" size="20" name="q"/>
+ <input type="hidden" name="q" value="site:example.com"/>
+ <input type="submit" value="find"/>
+ </form> -->
+ </span>
+</div> <!-- end header -->
-function deletePossession(username, possessionID, listener){
- var manager = new XMLRequestManager(appPath + "/account/" + username + "/possession/" + possessionID, new BasicHTTPListener(listener));
- manager.setMethod("DELETE");
- manager.send();
-}
+<div id="headerMenu">
+ <a href="index.html">Home</a>
+ <span id="memberMenuItem"> </span>
+</div> <!-- end header menu -->
-// Copyright 2007 Transmutable (http://transmutable.com/) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
+<div id="main">
+ <h2 style="color: #4F4;">Create User:</h2>
+
+ <div id="content">
+ <div class="section">
+ <div id="newUserDiv">
+ </div>
+ </div>
+ </div><!-- end content -->
+</div> <!-- end main -->
+<div id="footer">
+
+</div>
+<!-- Copyright 2007 Transmutable (http://transmutable.com/) Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.-->
+</body>
+</html>
\ No newline at end of file
Modified: maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js 2007-09-07 21:40:36 UTC (rev 385)
+++ maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js 2007-09-07 21:40:40 UTC (rev 386)
@@ -422,13 +422,14 @@
var authRequestManager = new XMLRequestManager(appPath + "/auth", new AuthListener());
authRequestManager.send();
-function login(username, password){
+function login(username, password, optionalHandlerFunction){
if(!username || trim(username).length == 0 || !password || trim(password).length == 0){
return;
}
-
- var manager = new XMLRequestManager(appPath + "/auth", new AuthListener());
+ var listener = optionalHandlerFunction == null ? new AuthListener() : new BasicHTTPListener(optionalHandlerFunction);
+ var manager = new XMLRequestManager(appPath + "/auth", listener);
+
manager.setMethod("POST");
manager.send("username=" + trim(username) + "&password=" + trim(password));
}
@@ -445,10 +446,11 @@
// BEGIN ACCOUNT UTILS
-function createAccount(username, email, listener){
+function createAccount(username, email, password, listener){
var xml = document.createElement("account");
xml.setAttribute("username", username);
xml.setAttribute("email", email);
+ xml.setAttribute("password", password);
xml.setAttribute("accountlevel", "basic");
var manager = new XMLRequestManager(appPath + "/account/", new BasicHTTPListener(listener));
manager.setMethod("POST");
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|