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
- From: commits mugshot org
- To: online-desktop-list gnome org
- Subject: 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
- Date: Fri, 1 Feb 2008 16:56:31 -0600 (CST)
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]