venice-main-classic/src/com/silverwrist/venice/servlets/format/CreateCommunityDialog.java
Eric J. Bowersox 313a46818f moved the language and country lists OUT of the database and into properties
files as they are likely to change VERY infrequently; this simplifies a lot
of bits of code that would otherwise have to call through VeniceEngine, etc.
Also folded the LocaleFactory class method into the new International object
used for managing the lists.
2001-11-16 22:12:14 +00:00

166 lines
6.2 KiB
Java

/*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* (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.mozilla.org/MPL/>.
*
* Software distributed under the License is distributed on an "AS IS" basis, WITHOUT
* WARRANTY OF ANY KIND, either express or implied. See the License for the specific
* language governing rights and limitations under the License.
*
* The Original Code is the Venice Web Communities System.
*
* The Initial Developer of the Original Code is Eric J. Bowersox <erbo@silcom.com>,
* for Silverwrist Design Studios. Portions created by Eric J. Bowersox are
* Copyright (C) 2001 Eric J. Bowersox/Silverwrist Design Studios. All Rights Reserved.
*
* Contributor(s):
*/
package com.silverwrist.venice.servlets.format;
import java.util.*;
import com.silverwrist.util.StringUtil;
import com.silverwrist.venice.ValidationException;
import com.silverwrist.venice.core.*;
public class CreateCommunityDialog extends ContentDialog
{
/*--------------------------------------------------------------------------------
* Attributes
*--------------------------------------------------------------------------------
*/
private VeniceEngine engine;
/*--------------------------------------------------------------------------------
* Constructors
*--------------------------------------------------------------------------------
*/
public CreateCommunityDialog()
{
super("Create New Community",null,"createcommform","sigops");
setHiddenField("cmd","C");
Vector vec_pubpriv = new Vector(2);
vec_pubpriv.add("0|Public");
vec_pubpriv.add("1|Private");
vec_pubpriv.trimToSize();
Vector vec_hidemode = new Vector(3);
vec_hidemode.add(String.valueOf(CommunityContext.HIDE_NONE) + "|Show in both directory and search");
vec_hidemode.add(String.valueOf(CommunityContext.HIDE_DIRECTORY)
+ "|Hide in directory, but not in search");
vec_hidemode.add(String.valueOf(CommunityContext.HIDE_BOTH) + "|Hide in both directory and search");
vec_hidemode.trimToSize();
addFormField(new CDFormCategoryHeader("Basic Information"));
addFormField(new CDTextFormField("name","Community Name",null,true,32,128));
addFormField(new CDVeniceIDFormField("alias","Community Alias",null,true,32,32));
addFormField(new CDTextFormField("synopsis","Synopsis",null,false,32,255));
addFormField(new CDTextFormField("rules","Rules",null,false,32,255));
addFormField(new CDLanguageListFormField("language","Primary language",null,true));
addFormField(new CDFormCategoryHeader("Location"));
addFormField(new CDTextFormField("loc","City",null,false,32,64));
addFormField(new CDTextFormField("reg","State/Province",null,false,32,64));
addFormField(new CDTextFormField("pcode","Zip/Postal Code",null,true,32,64));
addFormField(new CDCountryListFormField("country","Country",null,true));
addFormField(new CDFormCategoryHeader("Security"));
addFormField(new CDSimplePickListFormField("comtype","Community type:",null,true,vec_pubpriv,'|'));
addFormField(new CDTextFormField("joinkey","Join key","(for private communities)",false,32,64));
addFormField(new CDSimplePickListFormField("hidemode","Community visibility:",null,true,vec_hidemode,'|'));
addCommandButton(new CDImageButton("create","bn_create.gif","Create",80,24));
addCommandButton(new CDImageButton("cancel","bn_cancel.gif","Cancel",80,24));
} // end constructor
protected CreateCommunityDialog(CreateCommunityDialog other)
{
super(other);
} // end CreateCommunityDialog
/*--------------------------------------------------------------------------------
* Overrides from class ContentDialog
*--------------------------------------------------------------------------------
*/
protected void validateWholeForm() throws ValidationException
{
if (engine.aliasExists(getFieldValue("alias"),-1))
throw new ValidationException("That alias is already used by another community on the system.");
if (getFieldValue("comtype").equals("1"))
{ // make sure if they flagged it as Private that they specified a join key
if (StringUtil.isStringEmpty(getFieldValue("joinkey")))
throw new ValidationException("Private communities must specify a join key value.");
} // end if
} // end validateWholeForm
/*--------------------------------------------------------------------------------
* External operations
*--------------------------------------------------------------------------------
*/
public void setupDialog(VeniceEngine engine)
{
this.engine = engine;
} // end setupDialog
public CommunityContext doDialog(UserContext user) throws ValidationException, DataException, AccessError
{
validate(); // validate the dialog entries
int hidemode;
try
{ // attempt to get the hide mode first...
hidemode = Integer.parseInt(getFieldValue("hidemode"));
} // end try
catch (NumberFormatException nfe)
{ // how rude!
throw new InternalStateError("somehow we got a non-numeric result from a numeric dropdown list!");
} // end catch
// Determine what the "join key" should be.
String jkey;
if (getFieldValue("comtype").equals("1"))
jkey = getFieldValue("joinkey");
else
jkey = null;
// Create the new community context.
CommunityContext rc = user.createCommunity(getFieldValue("name"),getFieldValue("alias"),
getFieldValue("language"),getFieldValue("synopsis"),
getFieldValue("rules"),jkey,hidemode);
// Get the new community's contact record and fill in the pieces of info we know.
ContactInfo ci = rc.getContactInfo();
ci.setLocality(getFieldValue("loc"));
ci.setRegion(getFieldValue("reg"));
ci.setPostalCode(getFieldValue("pcode"));
ci.setCountry(getFieldValue("country"));
rc.putContactInfo(ci);
return rc; // all done!
} // end doDialog
public void resetOnError(String message)
{
setErrorMessage(message);
} // end resetOnError
public Object clone()
{
return new CreateCommunityDialog(this);
} // end clone
} // end class CreateCommunityDialog