271 lines
11 KiB
Java
271 lines
11 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.security.Role;
|
|
import com.silverwrist.venice.core.*;
|
|
|
|
public class EditSIGProfileDialog extends ContentDialog
|
|
{
|
|
/*--------------------------------------------------------------------------------
|
|
* Attributes
|
|
*--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
private VeniceEngine engine;
|
|
private int sigid;
|
|
|
|
/*--------------------------------------------------------------------------------
|
|
* Constructors
|
|
*--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
public EditSIGProfileDialog(List country_list, List language_list)
|
|
{
|
|
super("Edit SIG Profile:",null,"sigprofform","sigadmin");
|
|
setHiddenField("cmd","P");
|
|
setHiddenField("sig","");
|
|
|
|
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(SIGContext.HIDE_NONE) + "|Show in both directory and search");
|
|
vec_hidemode.add(String.valueOf(SIGContext.HIDE_DIRECTORY) + "|Hide in directory, but not in search");
|
|
vec_hidemode.add(String.valueOf(SIGContext.HIDE_BOTH) + "|Hide in both directory and search");
|
|
vec_hidemode.trimToSize();
|
|
|
|
addFormField(new CDFormCategoryHeader("Basic Information"));
|
|
addFormField(new CDTextFormField("name","SIG Name",null,true,32,128));
|
|
addFormField(new CDVeniceIDFormField("alias","SIG 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,language_list));
|
|
addFormField(new CDTextFormField("url","Home page",null,false,32,255));
|
|
addFormField(new CDFormCategoryHeader("Location"));
|
|
addFormField(new CDTextFormField("company","Company",null,false,32,255));
|
|
addFormField(new CDTextFormField("addr1","Address",null,false,32,255));
|
|
addFormField(new CDTextFormField("addr2","Address","(line 2)",false,32,255));
|
|
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,country_list));
|
|
addFormField(new CDFormCategoryHeader("Security"));
|
|
addFormField(new CDSimplePickListFormField("comtype","SIG type",null,true,vec_pubpriv,'|'));
|
|
addFormField(new CDTextFormField("joinkey","Join key","(for private SIGs)",false,32,64));
|
|
addFormField(new CDCheckBoxFormField("membersonly","Allow only members to access this SIG",null,"Y"));
|
|
addFormField(new CDSimplePickListFormField("hidemode","SIG visibility",null,true,vec_hidemode,'|'));
|
|
addFormField(new CDRoleListFormField("read_lvl","Security level required to read contents",null,true,
|
|
Role.getSIGReadList()));
|
|
addFormField(new CDRoleListFormField("write_lvl","Security level required to update profile",null,true,
|
|
Role.getSIGWriteList()));
|
|
addFormField(new CDRoleListFormField("create_lvl","Security level required to create new subobjects",
|
|
null,true,Role.getSIGCreateList()));
|
|
addFormField(new CDRoleListFormField("delete_lvl","Security level required to delete SIG",null,true,
|
|
Role.getSIGDeleteList()));
|
|
addFormField(new CDRoleListFormField("join_lvl","Security level required to join SIG",null,true,
|
|
Role.getSIGJoinList()));
|
|
// TODO: add logo selection/uploading method here
|
|
addCommandButton(new CDImageButton("update","bn_update.gif","Update",80,24));
|
|
addCommandButton(new CDImageButton("cancel","bn_cancel.gif","Cancel",80,24));
|
|
|
|
} // end EditSIGProfileDialog
|
|
|
|
protected EditSIGProfileDialog(EditSIGProfileDialog other)
|
|
{
|
|
super(other);
|
|
|
|
} // end constructor
|
|
|
|
/*--------------------------------------------------------------------------------
|
|
* Internal functions
|
|
*--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
private void doDisable(SIGContext sig)
|
|
{
|
|
if (sig.isAdminSIG())
|
|
{ // make sure certain fields are disabled for admin SIGs
|
|
setFieldEnabled("comtype",false);
|
|
setFieldEnabled("joinkey",false);
|
|
setFieldEnabled("membersonly",false);
|
|
setFieldEnabled("hidemode",false);
|
|
setFieldEnabled("read_lvl",false);
|
|
setFieldEnabled("write_lvl",false);
|
|
setFieldEnabled("create_lvl",false);
|
|
setFieldEnabled("delete_lvl",false);
|
|
setFieldEnabled("join_lvl",false);
|
|
|
|
} // end if
|
|
|
|
} // end doDisable
|
|
|
|
/*--------------------------------------------------------------------------------
|
|
* Overrides from class ContentDialog
|
|
*--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
protected void validateWholeForm() throws ValidationException
|
|
{
|
|
if (engine.aliasExists(getFieldValue("alias"),sigid))
|
|
throw new ValidationException("That alias is already used by another SIG 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 SIGs must specify a join key value.");
|
|
|
|
} // end if
|
|
|
|
} // end validateWholeForm
|
|
|
|
/*--------------------------------------------------------------------------------
|
|
* External operations
|
|
*--------------------------------------------------------------------------------
|
|
*/
|
|
|
|
public void setupDialogBasic(VeniceEngine engine, SIGContext sig)
|
|
{
|
|
this.engine = engine;
|
|
this.sigid = sig.getSIGID();
|
|
|
|
} // end setupDialogBasic
|
|
|
|
public void setupDialog(VeniceEngine engine, SIGContext sig) throws DataException, AccessError
|
|
{
|
|
setupDialogBasic(engine,sig);
|
|
ContactInfo ci = sig.getContactInfo();
|
|
|
|
setHiddenField("sig",String.valueOf(sig.getSIGID()));
|
|
setFieldValue("name",sig.getName());
|
|
setFieldValue("alias",sig.getAlias());
|
|
setFieldValue("synopsis",sig.getSynopsis());
|
|
setFieldValue("rules",sig.getRules());
|
|
setFieldValue("language",sig.getLanguageCode());
|
|
setFieldValue("url",ci.getURL());
|
|
setFieldValue("company",ci.getCompany());
|
|
setFieldValue("addr1",ci.getAddressLine1());
|
|
setFieldValue("addr2",ci.getAddressLine2());
|
|
setFieldValue("loc",ci.getLocality());
|
|
setFieldValue("reg",ci.getRegion());
|
|
setFieldValue("pcode",ci.getPostalCode());
|
|
setFieldValue("country",ci.getCountry());
|
|
if (sig.isPublicSIG())
|
|
{ // public SIG - no join key
|
|
setFieldValue("comtype","0");
|
|
setFieldValue("joinkey","");
|
|
|
|
} // end if
|
|
else
|
|
{ // private SIG - display the join key
|
|
setFieldValue("comtype","1");
|
|
setFieldValue("joinkey",sig.getJoinKey());
|
|
|
|
} // end else
|
|
|
|
if (sig.getMembersOnly())
|
|
setFieldValue("membersonly","Y");
|
|
setFieldValue("hidemode",String.valueOf(sig.getHideMode()));
|
|
setFieldValue("read_lvl",String.valueOf(sig.getReadLevel()));
|
|
setFieldValue("write_lvl",String.valueOf(sig.getWriteLevel()));
|
|
setFieldValue("create_lvl",String.valueOf(sig.getCreateLevel()));
|
|
setFieldValue("delete_lvl",String.valueOf(sig.getDeleteLevel()));
|
|
setFieldValue("join_lvl",String.valueOf(sig.getJoinLevel()));
|
|
|
|
doDisable(sig);
|
|
|
|
} // end setupDialog
|
|
|
|
public void doDialog(SIGContext sig) throws ValidationException, DataException, AccessError
|
|
{
|
|
final String yes = "Y"; // the "yes" string
|
|
validate(); // validate the dialog entries
|
|
|
|
int hidemode, read_lvl, write_lvl, create_lvl, delete_lvl, join_lvl;
|
|
try
|
|
{ // convert the values of some dropdowns to real numbers
|
|
hidemode = Integer.parseInt(getFieldValue("hidemode"));
|
|
read_lvl = Integer.parseInt(getFieldValue("read_lvl"));
|
|
write_lvl = Integer.parseInt(getFieldValue("write_lvl"));
|
|
create_lvl = Integer.parseInt(getFieldValue("create_lvl"));
|
|
delete_lvl = Integer.parseInt(getFieldValue("delete_lvl"));
|
|
join_lvl = Integer.parseInt(getFieldValue("join_lvl"));
|
|
|
|
} // end try
|
|
catch (NumberFormatException nfe)
|
|
{ // how rude!
|
|
throw new InternalStateError("somehow we got a non-numeric result from a numeric dropdown list!");
|
|
|
|
} // end catch
|
|
|
|
// save off the ContactInfo-related fields first
|
|
ContactInfo ci = sig.getContactInfo();
|
|
ci.setURL(getFieldValue("url"));
|
|
ci.setCompany(getFieldValue("company"));
|
|
ci.setAddressLine1(getFieldValue("addr1"));
|
|
ci.setAddressLine2(getFieldValue("addr2"));
|
|
ci.setLocality(getFieldValue("loc"));
|
|
ci.setRegion(getFieldValue("reg"));
|
|
ci.setPostalCode(getFieldValue("pcode"));
|
|
ci.setCountry(getFieldValue("country"));
|
|
sig.putContactInfo(ci);
|
|
|
|
// now save the big text fields
|
|
sig.setName(getFieldValue("name"));
|
|
sig.setAlias(getFieldValue("alias"));
|
|
sig.setSynopsis(getFieldValue("synopsis"));
|
|
sig.setRules(getFieldValue("rules"));
|
|
sig.setLanguage(getFieldValue("language"));
|
|
|
|
if (!(sig.isAdminSIG()))
|
|
{ // save off the security information
|
|
String jkey;
|
|
if (getFieldValue("comtype").equals("1"))
|
|
jkey = getFieldValue("joinkey");
|
|
else
|
|
jkey = null;
|
|
sig.setJoinKey(jkey);
|
|
sig.setMembersOnly(yes.equals(getFieldValue("membersonly")));
|
|
sig.setHideMode(hidemode);
|
|
sig.setSecurityLevels(read_lvl,write_lvl,create_lvl,delete_lvl,join_lvl);
|
|
|
|
} // end if
|
|
|
|
} // end doDialog
|
|
|
|
public void resetOnError(SIGContext sig, String message)
|
|
{
|
|
setErrorMessage(message);
|
|
doDisable(sig);
|
|
|
|
} // end resetOnError
|
|
|
|
public Object clone()
|
|
{
|
|
return new EditSIGProfileDialog(this);
|
|
|
|
} // end clone
|
|
|
|
} // end class EditSIGProfileDialog
|
|
|