|
From: <tre...@us...> - 2007-10-22 20:34:39
|
Revision: 538
http://ogoglio.svn.sourceforge.net/ogoglio/?rev=538&view=rev
Author: trevorolio
Date: 2007-10-22 13:34:44 -0700 (Mon, 22 Oct 2007)
Log Message:
-----------
Now guests can enter a display name, so we can finally get "Guest Gandalfs" at every event.
Modified Paths:
--------------
maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AuthServlet.java
maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js
maven/trunk/ogoglio-server/src/main/resources/siteTemplates/spaceui.js
Modified: maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AuthServlet.java
===================================================================
--- maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AuthServlet.java 2007-10-22 20:34:39 UTC (rev 537)
+++ maven/trunk/ogoglio-server/src/main/java/com/ogoglio/site/AuthServlet.java 2007-10-22 20:34:44 UTC (rev 538)
@@ -227,7 +227,8 @@
}
public void doPost(HttpServletRequest request, HttpServletResponse response, String[] pathElements) throws ServletException, IOException {
- String cookie = generateGuestCookie();
+ String requestedGuestNameParameter = request.getParameter(WebConstants.REQUESTED_GUEST_NAME_PARAMETER);
+ String cookie = generateGuestCookie(requestedGuestNameParameter);
Cookie newCookie = new Cookie(WebConstants.AUTH_COOKIE, cookie);
newCookie.setPath("/");
newCookie.setMaxAge(-1);
@@ -243,17 +244,46 @@
public static final String COOKIE_CHARS = "abcdefghijklmnopqrstuvwxyz1234567890";
- public static final String[] GUEST_NAMES = { "Moon", "Spoon", "Plume", "Bloom", "Thyme", "Rhyme", "Steel", "Boat", "Vase", "Book", "Screen", "Fenestra", "Farmer", "Door", "Squid", "Rocket", "Picker", "Page", "Lawn", "Food", "Plate", "Bean", "Horse", "Cat", "Fireplace", "Frame", "Chair", "Table", "Sofa", "Stair", "Counter", "Shelf", "Phone", "Robot", "Tree", "Key" };
+ public static final String[] GUEST_NAMES = { "Moon", "Spoon", "Plume", "Bloom", "Thyme", "Rhyme", "Steel", "Boat", "Vase", "Book", "Screen", "Fenestra", "Farmer", "Door", "Squid", "Rocket", "Picker", "Page", "Lawn", "Food", "Plate", "Bean", "Horse", "Cat", "Fireplace", "Frame", "Chair", "Table", "Sofa", "Stair", "Counter", "Shelf", "Phone", "Robot", "Tree", "Key", "Pony"};
- private String generateGuestCookie() {
+ private String generateGuestCookie(String requestedGuestName) {
StringBuffer result = new StringBuffer();
result.append(WebConstants.GUEST_COOKIE_PREFIX);
for (int i = 0; i < 3; i++) {
result.append("_" + GUEST_NAMES[Math.abs(random.nextInt()) % GUEST_NAMES.length]);
}
+ String cleanedGuestName = cleanGuestName(requestedGuestName);
+ if(cleanedGuestName != null){
+ result.append("_" + cleanedGuestName);
+ }
return result.toString();
}
+ private String cleanGuestName(String requestedGuestName) {
+ if(requestedGuestName == null){
+ return null;
+ }
+ requestedGuestName = requestedGuestName.trim();
+ StringBuffer result = new StringBuffer();
+
+ int numNonWhitespace = 0;
+ for (int i = 0; i < requestedGuestName.length(); i++) {
+ if(Character.isDigit(requestedGuestName.charAt(i))){
+ numNonWhitespace++;
+ result.append(requestedGuestName.charAt(i));
+ } else if(Character.isLetter(requestedGuestName.charAt(i))){
+ result.append(requestedGuestName.charAt(i));
+ numNonWhitespace++;
+ } else if(Character.isWhitespace(requestedGuestName.charAt(i))){
+ result.append("_");
+ }
+ }
+ if(numNonWhitespace == 0){
+ return null;
+ }
+ return result.toString();
+ }
+
private String generateAuthCookie(boolean guest) {
StringBuffer result = new StringBuffer(14);
if (guest) {
Modified: maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js 2007-10-22 20:34:39 UTC (rev 537)
+++ maven/trunk/ogoglio-server/src/main/resources/siteTemplates/ogoglio.js 2007-10-22 20:34:44 UTC (rev 538)
@@ -1,5 +1,7 @@
var appPath = "/og"; //do not put a slash on the end
var loginCookieName = "loginCookie";
+var guestCookiePrefix = "guest_";
+var guestDisplayNamePrefix = "Guest ";
function getServiceURI(){
var locLink = document.location;
@@ -454,12 +456,33 @@
new XMLRequestManager(appPath + "/auth/me", new BasicHTTPListener(listener)).send();
}
-function requestGuestCookie(listener){
- var manager = new XMLRequestManager(appPath + "/auth/guest", new BasicHTTPListener(listener));
+function requestGuestCookie(suggestedGuestName, listener){
+ var guestNameParameter = ""
+ if(suggestedGuestName != null && suggestedGuestName.length > 0){
+ guestNameParameter = "?requestedGuestName=" + escape(suggestedGuestName);
+ }
+ var manager = new XMLRequestManager(appPath + "/auth/guest" + guestNameParameter, new BasicHTTPListener(listener));
manager.setMethod("POST");
manager.send();
}
+// there are always at least three random tokens separated by _ after "guest_"
+// a guest cookie which looks like guest_Moon_Unit_Zappa will return like so "Guest Moon Unit Zappa"
+// if there are more than three (as when a user suggests a guest name) the tokens > 3 will be used
+// a guest cookie which looks like guest_Moon_Unit_Zappa_Kurt_Vonnegut will return like so "Guest Kurt Vonnegut"
+function convertGuestCookieToDisplayName(guestCookie){
+ if(guestCookie == null || guestCookie.indexOf(guestCookiePrefix) != 0){
+ return null;
+ }
+ var username = guestDisplayNamePrefix;
+ var tokens = guestCookie.substring(6).split("_");
+ var startIndex = tokens.length > 3 ? 3 : 0;
+ for(var i=startIndex; i < tokens.length; i++){
+ username += " " + tokens[i];
+ }
+ return username;
+}
+
// BEGIN ACCOUNT UTILS
function createAccount(username, email, password, listener){
Modified: maven/trunk/ogoglio-server/src/main/resources/siteTemplates/spaceui.js
===================================================================
--- maven/trunk/ogoglio-server/src/main/resources/siteTemplates/spaceui.js 2007-10-22 20:34:39 UTC (rev 537)
+++ maven/trunk/ogoglio-server/src/main/resources/siteTemplates/spaceui.js 2007-10-22 20:34:44 UTC (rev 538)
@@ -21,13 +21,22 @@
var allowsGuests = parseInt(xml.getAttribute("maxguests")) > 0;
if(authedUsername == null){
if(allowsGuests && typeof autoGuest != "undefined" && autoGuest){
- if(getLoginCookie() != null && getLoginCookie().indexOf("guest_") == 0){
+ if(getLoginCookie() != null && getLoginCookie().indexOf(guestCookiePrefix) == 0){
enterTheSpace();
return;
}
- enterAsGuest();
+ enterAsGuest(null);
} else if(allowsGuests){
- spaceDiv.innerHTML = "<div style='width: 100%; text-align: center; margin-top: 20px; font-weight: bold; color: #000;'>Would you like to <a href='signin.html'>sign in</a> or <a href='space.html' onclick='enterAsGuest(); return false;'>enter as a guest</a>?";
+ var guestMessage = "<div style='width: 100%; text-align: center; margin-top: 20px; font-weight: bold; color: #000;'>";
+ guestMessage += "<a href='signin.html'>Click here to login</a>";
+ guestMessage += "<h1>or</h1>";
+ guestMessage += "Enter a name: ";
+ guestMessage += "<form action='index.html' onsubmit='enterAsGuest(this.guestNameInput.value); return false;'>";
+ guestMessage += "<input type='text' name='guestNameInput' id='guestNameInput' size='12' />";
+ guestMessage += "<input type='submit' value='enter as a guest' />";
+ guestMessage += "</form>";
+ guestMessage += "</div>";
+ spaceDiv.innerHTML = guestMessage;
} else {
spaceDiv.innerHTML = "You must <a href='signin.html'>sign in</a> to enter this space." ;
}
@@ -36,8 +45,8 @@
}
}
-function enterAsGuest(){
- requestGuestCookie(guestCookieHandler);
+function enterAsGuest(guestNameInput){
+ requestGuestCookie(guestNameInput, guestCookieHandler);
}
function guestCookieHandler(guestCookie){
@@ -127,12 +136,10 @@
var text = null;
if(message.indexOf(":") != -1){
username = message.substring(0, message.indexOf(":"));
- if(username.indexOf("guest_") == 0){
- username = "Guest " + username.substring(6);
- while(username.indexOf('_') != -1){
- username = username.substring(0, username.indexOf('_')) + " " + username.substring(username.indexOf('_') + 1);
- }
+ if(username.indexOf(guestCookiePrefix) == 0){
+ username = convertGuestCookieToDisplayName(username);
}
+
text = message.substring(message.indexOf(":") + 1);
} else {
username = "system";
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|