r7282 - in dumbhippo/trunk/server: src/com/dumbhippo/server/impl src/com/dumbhippo/web src/com/dumbhippo/web/pages web/javascript/dh web/tags/3



Author: marinaz
Date: 2008-02-01 16:56:30 -0600 (Fri, 01 Feb 2008)
New Revision: 7282

Modified:
   dumbhippo/trunk/server/src/com/dumbhippo/server/impl/HttpMethodsBean.java
   dumbhippo/trunk/server/src/com/dumbhippo/web/SigninBean.java
   dumbhippo/trunk/server/src/com/dumbhippo/web/pages/AccountPage.java
   dumbhippo/trunk/server/web/javascript/dh/account.js
   dumbhippo/trunk/server/web/javascript/dh/util.js
   dumbhippo/trunk/server/web/tags/3/accountEditTable.tag
   dumbhippo/trunk/server/web/tags/3/accountEditTableExternals.tag
Log:
Set GNOME account type when someone gets authenticated on a GNOME Online page.
Set publicPage to true when someone gets authenticated on a Mugshot page.

Rearrange stuff on the Account pages to correspond to and explain the split.

Modified: dumbhippo/trunk/server/src/com/dumbhippo/server/impl/HttpMethodsBean.java
===================================================================
--- dumbhippo/trunk/server/src/com/dumbhippo/server/impl/HttpMethodsBean.java	2008-02-01 16:48:15 UTC (rev 7281)
+++ dumbhippo/trunk/server/src/com/dumbhippo/server/impl/HttpMethodsBean.java	2008-02-01 22:56:30 UTC (rev 7282)
@@ -55,6 +55,7 @@
 import com.dumbhippo.identity20.Guid.ParseException;
 import com.dumbhippo.live.LiveGroup;
 import com.dumbhippo.live.LiveState;
+import com.dumbhippo.persistence.AccountType;
 import com.dumbhippo.persistence.AimResource;
 import com.dumbhippo.persistence.Application;
 import com.dumbhippo.persistence.ApplicationCategory;
@@ -1240,8 +1241,10 @@
 		// TODO: we can check if we are accepting terms of use from online.gnome.org here
 		// and not set publicPage to true, but we would also need a different place where
 		// we would set it to true (possibly when the person visits there Mugshot account
-		// page for the first time.
-		viewpoint.getViewer().getAccount().setPublicPage(true);
+		// page for the first time).
+		if (viewpoint.getViewer().getAccount().getAccountType() == AccountType.MUGSHOT) {
+		    viewpoint.getViewer().getAccount().setPublicPage(true);
+		}
 	}
 	
 	public void doSetNeedsDownload(UserViewpoint viewpoint, boolean needsDownload) {

Modified: dumbhippo/trunk/server/src/com/dumbhippo/web/SigninBean.java
===================================================================
--- dumbhippo/trunk/server/src/com/dumbhippo/web/SigninBean.java	2008-02-01 16:48:15 UTC (rev 7281)
+++ dumbhippo/trunk/server/src/com/dumbhippo/web/SigninBean.java	2008-02-01 22:56:30 UTC (rev 7282)
@@ -13,6 +13,7 @@
 import com.dumbhippo.Site;
 import com.dumbhippo.identity20.Guid;
 import com.dumbhippo.persistence.Account;
+import com.dumbhippo.persistence.AccountType;
 import com.dumbhippo.persistence.Client;
 import com.dumbhippo.persistence.User;
 import com.dumbhippo.server.AccountSystem;
@@ -180,12 +181,23 @@
 	public static String initializeAuthentication(HttpServletRequest request, HttpServletResponse response, Client client) {
 		Account account = client.getAccount();
 		User user = account.getOwner();
+		Site site = getSiteForRequest(request);
+		
+		// If the user is ever authenticated at the GNOME site, we can transfer their
+		// account to be a GNOME account. 
+		// If the user is ever authenticated at the Mugshot site and they have accepted
+		// terms of use, we should make their page public.
+		if (site.getAccountType() == AccountType.GNOME)
+			account.setAccountType(AccountType.GNOME);
+		else if (site.getAccountType() == AccountType.MUGSHOT && account.getHasAcceptedTerms())
+			account.setPublicPage(true);
+		
 		if (account.isActive()) {
-			setCookie(getSiteForRequest(request), response, user.getGuid(), client.getAuthKey());
+			setCookie(site, response, user.getGuid(), client.getAuthKey());
 		} else {
 			SigninBean.storeGuid(request.getSession(), user.getGuid());
 			request.getSession().setAttribute(CLIENT_ID_KEY, client.getId());
-			setAuthenticatedCookie(getSiteForRequest(request), response);
+			setAuthenticatedCookie(site, response);
 		}		
 
 		return "/";
@@ -201,6 +213,20 @@
 	public static void initializeAuthenticationNoCookie(HttpServletRequest request, Client client) {
 		Account account = client.getAccount();
 		User user = account.getOwner();
+		Site site = getSiteForRequest(request);
+		
+		// If the user is ever authenticated at the GNOME site, we can transfer their
+		// account to be a GNOME account. 
+		// If the user is ever authenticated at the Mugshot site and they have accepted
+		// terms of use, we should make their page public.
+		// TODO: make sure this method doesn't get called in situations when the user is
+		// not using mugshot.org explicitly; this only gets called from HttpAuthentication
+		// as "a hack to use DAV with apps that don't use the browser cookies"
+		if (site.getAccountType() == AccountType.GNOME)
+			account.setAccountType(AccountType.GNOME);
+		else if (site.getAccountType() == AccountType.MUGSHOT && account.getHasAcceptedTerms())
+			account.setPublicPage(true);
+		
 		if (account.isActive()) {
 			;
 		} else {
@@ -223,11 +249,24 @@
 			try {
 				Client client = accountSystem.getExistingClient(userId, clientId);
 				Account account = client.getAccount();
+				Site site = getSiteForRequest(request);
+				
+				// If the user is ever authenticated at the GNOME site, we can transfer their
+				// account to be a GNOME account. 
+				// If the user is ever authenticated at the Mugshot site and they have accepted
+				// terms of use, we should make their page public.
+				// TODO: make sure this method doesn't get called in situations when the user is
+				// not using mugshot.org explicitly; this is only called from HttpMethodsServlet2
+				if (site.getAccountType() == AccountType.GNOME)
+					account.setAccountType(AccountType.GNOME);
+				else if (site.getAccountType() == AccountType.MUGSHOT && account.getHasAcceptedTerms())
+					account.setPublicPage(true);
+				
 				if (account.isActive())
-					setCookie(getSiteForRequest(request), response, userId, client.getAuthKey());
+					setCookie(site, response, userId, client.getAuthKey());
 				else {
 					unsetCookie(response);
-					setAuthenticatedCookie(getSiteForRequest(request), response);
+					setAuthenticatedCookie(site, response);
 				}
 			} catch (NotFoundException e) {
 				// Client must have been deleted since we first authorized the session, do nothing

Modified: dumbhippo/trunk/server/src/com/dumbhippo/web/pages/AccountPage.java
===================================================================
--- dumbhippo/trunk/server/src/com/dumbhippo/web/pages/AccountPage.java	2008-02-01 16:48:15 UTC (rev 7281)
+++ dumbhippo/trunk/server/src/com/dumbhippo/web/pages/AccountPage.java	2008-02-01 22:56:30 UTC (rev 7282)
@@ -406,4 +406,12 @@
     public List<XmppResource> getClaimedXmppResources() {
     	return claimVerifier.getPendingClaimedResources(signin.getUser(), XmppResource.class);
     }
+    
+    public String getBaseUrlGnome() {
+    	return config.getBaseUrlGnome().toExternalForm();
+    }
+    
+    public String getBaseUrlMugshot() {
+    	return config.getBaseUrlMugshot().toExternalForm();
+    }
 }

Modified: dumbhippo/trunk/server/web/javascript/dh/account.js
===================================================================
--- dumbhippo/trunk/server/web/javascript/dh/account.js	2008-02-01 16:48:15 UTC (rev 7281)
+++ dumbhippo/trunk/server/web/javascript/dh/account.js	2008-02-01 22:56:30 UTC (rev 7282)
@@ -134,8 +134,10 @@
 }
 
 dh.account.createImEntry = function() {
-    dh.account.imEntry = new dh.textinput.Entry(document.getElementById('dhXmppEntry'), 'your name example com', '');
-   	dh.account.imAccountType = 'aim';
+    if (dh.util.exists('dhXmppEntry')) {
+        dh.account.imEntry = new dh.textinput.Entry(document.getElementById('dhXmppEntry'), 'your name example com', '');
+   	    dh.account.imAccountType = 'aim';
+   	}
 }
 
 dh.account.showImAccountPopup = function() {
@@ -818,47 +820,50 @@
 }
 
 dhAccountInit = function() {
-	function exists(id) {
-		return document.getElementById(id) != null;
-	}
-
 	if (!dh.account.active) {
 	    // we want to disable editing, but still display all the data we have
 		dh.dom.disableChildren(document.getElementById("dhAccountContents"));
 	}
-	var usernameEntry = new dh.formtable.ExpandableTextInput('dhUsernameEntry', "J. Doe");
-	usernameEntry.setDescription("The name you appear to others as.");
-	usernameEntry.setChangedPost('renameperson', 'name');
+	
+	if (dh.util.exists('dhUsernameEntry')) {
+	    var usernameEntry = new dh.formtable.ExpandableTextInput('dhUsernameEntry', "J. Doe");
+	    usernameEntry.setDescription("The name you appear to others as.");
+	    usernameEntry.setChangedPost('renameperson', 'name');
+    }
 
-    if (exists('dhBioEntry')) {
+    if (dh.util.exists('dhBioEntry')) {
 	    var bioEntry = new dh.formtable.ExpandableTextInput('dhBioEntry', "I grew up in Kansas.");
 	    bioEntry.setChangedPost('setbio', 'bio');
 	}
 	
-	if (exists('dhWebsiteEntry')) {
+	if (dh.util.exists('dhWebsiteEntry')) {
 		var websiteEntry = new dh.formtable.ExpandableTextInput('dhWebsiteEntry', 'Your website URL');
 		websiteEntry.setDescription("Your website will be linked from your Mugshot page.");
 		websiteEntry.setChangedXmlMethod('setwebsiteaccount', 'url');
 	}
 	
-	if (exists('dhBlogEntry')) {
+	if (dh.util.exists('dhBlogEntry')) {
 		var blogEntry = new dh.formtable.ExpandableTextInput('dhBlogEntry', 'Your blog URL');
 		blogEntry.setDescription("Your friends will get updates when you post to your blog.")
 		blogEntry.setChangedXmlMethod('setblogaccount', 'url');
 	}
 	
-	// add some event handlers on the file input
-	dh.account.photoEntry = new dh.fileinput.Entry(document.getElementById('dhPictureEntry'));
-	// the div below could be null
-	dh.account.photoEntry.setBrowseButtonDiv(document.getElementById('dhStyledPictureEntry'));
+	if (dh.util.exists('dhPictureEntry')) {
+	    // add some event handlers on the file input
+	    dh.account.photoEntry = new dh.fileinput.Entry(document.getElementById('dhPictureEntry'));
+	    // the div below could be null
+	    dh.account.photoEntry.setBrowseButtonDiv(document.getElementById('dhStyledPictureEntry'));
+	}
 	
-	// make pressing enter submit the email verify
-	var emailEntryNode = document.getElementById('dhEmailEntry');
-	emailEntryNode.onkeydown = function(ev) {
-		var key = dh.event.getKeyCode(ev);
-		if (key == ENTER) {
-			dh.account.verifyEmail();
-		}
+	if (dh.util.exists('dhEmailEntry')) {
+	    // make pressing enter submit the email verify
+	    var emailEntryNode = document.getElementById('dhEmailEntry');
+	    emailEntryNode.onkeydown = function(ev) {
+		    var key = dh.event.getKeyCode(ev);
+		    if (key == ENTER) {
+			    dh.account.verifyEmail();
+		    }
+	    }
 	}
 	
     dh.account.createImEntry();
@@ -868,7 +873,7 @@
 	// We assume if one of these exists, they all exist. If the division between the
 	// online.gnome.org and mugshot version of the account page changes, then this needs
 	// to be adjusted
-	if (exists('dhMySpaceFormContainer')) {
+	if (dh.util.exists('dhMySpaceFormContainer')) {
 	    dh.account.createMyspaceEntry();
 		dh.account.createYouTubeEntry();
 		dh.account.createLastFmEntry();

Modified: dumbhippo/trunk/server/web/javascript/dh/util.js
===================================================================
--- dumbhippo/trunk/server/web/javascript/dh/util.js	2008-02-01 16:48:15 UTC (rev 7281)
+++ dumbhippo/trunk/server/web/javascript/dh/util.js	2008-02-01 22:56:30 UTC (rev 7282)
@@ -1093,5 +1093,9 @@
             }                 
         }
     }                          
+}    
+    
+dh.util.exists = function(id) {
+    return document.getElementById(id) != null;
 }
         

Modified: dumbhippo/trunk/server/web/tags/3/accountEditTable.tag
===================================================================
--- dumbhippo/trunk/server/web/tags/3/accountEditTable.tag	2008-02-01 16:48:15 UTC (rev 7281)
+++ dumbhippo/trunk/server/web/tags/3/accountEditTable.tag	2008-02-01 22:56:30 UTC (rev 7282)
@@ -34,16 +34,27 @@
 </c:choose>
 
 <dht2:formTable tableId="dhAccountInfoForm">
-	<dht3:formTableRowSeparator>
-	    <div class="dh-section-header">Public Info</div>
-	    <div class="dh-section-explanation">This information will be visible on your <a href="/person">Home</a> page.</div>
-    </dht3:formTableRowSeparator>
-	<dht2:formTableRow label="My name" controlId='dhUsernameEntry'>
-		<dht2:textInput id="dhUsernameEntry" extraClass="dh-name-input"/>
-		<div id="dhUsernameEntryDescription" style="display: none"></div>
-	</dht2:formTableRow>
+    <c:if test="${dh:enumIs(site, 'MUGSHOT')}">	
+	    <dht3:formTableRowSeparator>
+	        <div class="dh-section-header">Public Info</div>
+	        <div class="dh-section-explanation">
+	            This information will be visible on your <a href="/person">Home</a> page.
+	            <c:if test="${dh:enumIs(signin.user.account.accountType, 'GNOME')}">
+	                You can modify your name, picture, and other information on your <a href="${account.baseUrlGnome}/account">GNOME Online</a> account page.
+	            </c:if>
+	        </div>
+        </dht3:formTableRowSeparator>    
+    </c:if>
+    <!-- we have name, picture, e-mail and IM inputs on the GNOME site if the person has GNOME account type,
+         but have those inputs on the Mugshot site if their account is of type Mugshot -->
+    <c:if test="${dh:enumIs(site, 'GNOME') || !dh:enumIs(signin.user.account.accountType, 'GNOME')}">
+	    <dht2:formTableRow label="My name" controlId='dhUsernameEntry'>
+		    <dht2:textInput id="dhUsernameEntry" extraClass="dh-name-input"/>
+		    <div id="dhUsernameEntryDescription" style="display: none"></div>
+	    </dht2:formTableRow>
+	</c:if>    
 	<c:if test="${dh:enumIs(site, 'MUGSHOT')}">	
-		<dht2:formTableRow label="About me" altRow="true" controlId="dhBioEntry">
+		<dht2:formTableRow label="About me" altRow="${dh:enumIs(signin.user.account.accountType, 'MUGSHOT')}" controlId="dhBioEntry">
 			<div>
 				<dht2:textInput id="dhBioEntry" multiline="true"/>
 				<div id="dhBioEntryDescription" style="display: none"></div>
@@ -58,33 +69,35 @@
 		</div>
 	</dht2:formTableRow>
 	-->
-	<dht2:formTableRow label="My picture">
-		<div id="dhHeadshotImageContainer" class="dh-image">
-			<dht2:headshot person="${account.person}" size="60" customLink="javascript:dh.photochooser.show(document.getElementById('dhChooseStockLinkContainer'), dh.account.reloadPhoto);" />
-		</div>
-		<div class="dh-next-to-image">
-			<div class="dh-picture-instructions">Upload new picture:</div>
-			<c:set var="location" value="/headshots" scope="page"/>
-			<c:url value="/upload${location}" var="posturl"/>
-			<form id='dhPictureForm' enctype="multipart/form-data" action="${posturl}" method="post">
-				<input id='dhPictureEntry' class="${browseInputClass}" type="file" name="photo" size="${browseInputSize}"/>
-				<c:if test="${browseInputClass == 'dh-hidden-file-upload'}">
-				    <div id='dhStyledPictureEntry' class="dh-styled-file-upload">
-				        <img src="${browseButton}">
-				    </div>
-				</c:if>
-				<input type="hidden" name="groupId" value=""/>
-				<input type="hidden" name="reloadTo" value="/account"/>
-			</form>
-			<div class="dh-picture-more-instructions">
-			    or <a href="javascript:dh.photochooser.show(document.getElementById('dhChooseStockLinkContainer'), dh.account.reloadPhoto);" title="Choose from a library of pictures">choose a stock picture</a>						
-			</div>
-			<div id="dhChooseStockLinkContainer">
-			</div>
-		</div>
-		<div class="dh-grow-div-around-floats"><div></div></div>
-	</dht2:formTableRow>
-	<dht2:formTableRow label="Accounts" altRow="true">
+	<c:if test="${dh:enumIs(site, 'GNOME') || dh:enumIs(signin.user.account.accountType, 'MUGSHOT')}">
+	    <dht2:formTableRow label="My picture" altRow="${dh:enumIs(site, 'GNOME')}">
+		    <div id="dhHeadshotImageContainer" class="dh-image">
+			    <dht2:headshot person="${account.person}" size="60" customLink="javascript:dh.photochooser.show(document.getElementById('dhChooseStockLinkContainer'), dh.account.reloadPhoto);" />
+		    </div>
+		    <div class="dh-next-to-image">
+			    <div class="dh-picture-instructions">Upload new picture:</div>
+			    <c:set var="location" value="/headshots" scope="page"/>
+			    <c:url value="/upload${location}" var="posturl"/>
+			    <form id='dhPictureForm' enctype="multipart/form-data" action="${posturl}" method="post">
+				    <input id='dhPictureEntry' class="${browseInputClass}" type="file" name="photo" size="${browseInputSize}"/>
+				    <c:if test="${browseInputClass == 'dh-hidden-file-upload'}">
+				        <div id='dhStyledPictureEntry' class="dh-styled-file-upload">
+				            <img src="${browseButton}">
+				        </div>
+				    </c:if>
+				    <input type="hidden" name="groupId" value=""/>
+				    <input type="hidden" name="reloadTo" value="/account"/>
+			    </form>
+			    <div class="dh-picture-more-instructions">
+			        or <a href="javascript:dh.photochooser.show(document.getElementById('dhChooseStockLinkContainer'), dh.account.reloadPhoto);" title="Choose from a library of pictures">choose a stock picture</a>						
+			    </div>
+			    <div id="dhChooseStockLinkContainer">
+			    </div>
+		    </div>
+		    <div class="dh-grow-div-around-floats"><div></div></div>
+	    </dht2:formTableRow>
+	</c:if>    
+	<dht2:formTableRow label="Accounts" altRow="${dh:enumIs(site, 'MUGSHOT')}">
 		<dht3:accountEditTableExternals account="${account}"/>
 	</dht2:formTableRow>
 	<c:if test="${dh:enumIs(site, 'MUGSHOT')}">	
@@ -117,11 +130,12 @@
 			</div>
 			</div>
 		</dht2:formTableRow>
-	</c:if><%-- End of !GNOME site --%>
-	<dht2:formTableRow label="GNOME Online services" altRow="true">
+	</c:if><%-- End of MUGSHOT site --%>
+	<c:if test="${dh:enumIs(site, 'GNOME')}">	
+  	    <dht2:formTableRow label="GNOME Online services" altRow="true">
 		<div id="dhApplicationUsagePreferences"
 			class="dh-account-preferences-row">
-		    Save application usage statistics (<a href="/applications">Read more</a>)
+		    Save application usage statistics (<a href="/applications">Learn more</a>)
 		    <c:choose>
 			<c:when
 				test="${signin.user.account.applicationUsageEnabledWithDefault}">
@@ -148,9 +162,8 @@
 			</c:otherwise>
 		</c:choose>
 		</div>
-	</dht2:formTableRow>
-	<c:if test="${dh:enumIs(site, 'GNOME')}">
-	<dht2:formTableRow label="Google services" altRow="true">
+	    </dht2:formTableRow>
+	    <dht2:formTableRow label="Google services">
 		<div id="dhGoogleServices"
 			class="dh-account-preferences-row">
 			<table>
@@ -178,12 +191,27 @@
 				</c:forEach>
 			</table>
 		</div>
-	</dht2:formTableRow>	
-	</c:if>	
-	<dht3:formTableRowSeparator>
-	    <div class="dh-section-header">Private Info</div>
-	    <div class="dh-section-explanation">Nobody sees this stuff but you.</div>
-    </dht3:formTableRowSeparator>
+	    </dht2:formTableRow>	
+	    <dht2:formTableRow label="Mugshot" icon="/images3/${buildStamp}/mugshot_icon.png" altRow="true">
+	    <div class="dh-account-preferences-row">
+			<c:choose>
+			    <c:when test="${signin.user.account.publicPage}">
+			        Enabled <a href="${account.baseUrlMugshot}/account">Visit Your Account</a>    
+			    </c:when>
+			    <c:otherwise>
+			        Disabled <a href="${account.baseUrlMugshot}/account">Log in to Enable</a>  
+			    </c:otherwise>
+			</c:choose>    
+			(<a href="${account.baseUrlMugshot}/features">Learn more</a>)
+		</div>	
+	    </dht2:formTableRow>
+	</c:if>
+    <c:if test="${dh:enumIs(site, 'MUGSHOT')}">		
+	    <dht3:formTableRowSeparator>
+	        <div class="dh-section-header">Private Info</div>
+	        <div class="dh-section-explanation">Nobody sees this stuff but you.</div>
+        </dht3:formTableRowSeparator>
+    </c:if>    
 	<dht2:formTableRowStatus controlId='dhPasswordEntry'></dht2:formTableRowStatus>
 	<dht2:formTableRow label="Set a password">
 	    <div class="dh-explanation">
@@ -205,9 +233,23 @@
 	</dht2:formTableRow>
 	<dht2:formTableRow label="Disable account" altRow="true">
 	    <div class="dh-explanation">
-		Disabling your account means we won't show any information on your
-		public Home page, and we will never send you email for any reason.
-		You can enable your account again at any time.
+	    <c:choose>	    
+	        <c:when test="${dh:enumIs(site, 'GNOME')}">
+	            Disabling your account means that we will not use any information about you
+	            for any of the GNOME Online services, and we will never send you email for any reason.
+	            <c:if test="${signin.user.account.publicPage}">	            
+		            This will also disable your Mugshot account.
+		        </c:if>	     	            	        
+	        </c:when>
+	        <c:otherwise>
+	            Disabling your account means we won't show any information on your
+		        public Home page, and we will never send you email for any reason.
+		        You can enable your account again at any time.		            	
+	            <c:if test="${dh:enumIs(signin.user.account.accountType, 'GNOME')}">	            
+		            This will not disable your GNOME Online account.
+		        </c:if>	        
+	        </c:otherwise>
+        </c:choose>     
 		</div>
 		<a name="accountStatus"></a>
 		<c:if test="${termsOfUseNote=='true'}">

Modified: dumbhippo/trunk/server/web/tags/3/accountEditTableExternals.tag
===================================================================
--- dumbhippo/trunk/server/web/tags/3/accountEditTableExternals.tag	2008-02-01 16:48:15 UTC (rev 7281)
+++ dumbhippo/trunk/server/web/tags/3/accountEditTableExternals.tag	2008-02-01 22:56:30 UTC (rev 7282)
@@ -6,8 +6,9 @@
 <%@ attribute name="account" required="true" type="com.dumbhippo.web.pages.AccountPage" %>
 
 <dht2:formTable tableId="dhAccounts" hasInfoCells="true">
-	<dht2:formTableRowStatus controlId='dhEmailEntry'></dht2:formTableRowStatus>
-	<dht2:formTableRow label="Email"
+    <c:if test="${dh:enumIs(site, 'GNOME') || dh:enumIs(signin.user.account.accountType, 'MUGSHOT')}">
+	    <dht2:formTableRowStatus controlId='dhEmailEntry'></dht2:formTableRowStatus>
+	    <dht2:formTableRow label="Email"
 		icon="/images3/${buildStamp}/mail_icon.png"
 		info='${dh:enumIs(site, "MUGSHOT") ? "Only your Mugshot friends see this." : ""}'>
 		<table cellpadding="0" cellspacing="0" class="dh-address-table">
@@ -45,9 +46,9 @@
 		</tr>
 		</tbody>
 		</table>
-	</dht2:formTableRow>
-	<dht2:formTableRowStatus controlId='dhXmppEntry'></dht2:formTableRowStatus>
-	<dht2:formTableRow label="IM"
+	    </dht2:formTableRow>
+	    <dht2:formTableRowStatus controlId='dhXmppEntry'></dht2:formTableRowStatus>
+	    <dht2:formTableRow label="IM"
 		icon="/images3/${buildStamp}/chat16x16.png"
 		info='${dh:enumIs(site, "MUGSHOT") ? "Only your Mugshot friends see this." : ""}'>
 		<table id="dhImTable" cellpadding="0" cellspacing="0" class="dh-address-table">
@@ -125,7 +126,8 @@
 		</tbody>
 		</table>
 		<dht3:addImAccount/>
-	</dht2:formTableRow>
+	    </dht2:formTableRow>
+	</c:if>    
 	<c:if test="${dh:enumIs(site, 'MUGSHOT')}">
 		<dht2:formTableRow label="Website"
 			icon="/images3/${buildStamp}/homepage_icon.png"
@@ -211,5 +213,5 @@
 				</c:choose>
 			</dht2:formTableRow>
 		</c:forEach>
-	</c:if><%-- End of !GNOME site --%>
+	</c:if><%-- End of if MUGSHOT site --%>
 </dht2:formTable>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]