a_cmsedituserdialog.java
来自「找了很久才找到到源代码」· Java 代码 · 共 734 行 · 第 1/2 页
JAVA
734 行
/**
* Sets the user id parameter value.<p>
*
* @param userId the user id parameter value
*/
public void setParamUserid(String userId) {
m_paramUserid = userId;
}
/**
* Sets the selfManagement.<p>
*
* @param selfManagement the selfManagement to set
*/
public void setSelfManagement(boolean selfManagement) {
m_user.setManaged(!selfManagement);
}
/**
* Sets the site.<p>
*
* @param site the site to set
*/
public void setSite(String site) {
m_site = site;
}
/**
* Creates the dialog HTML for all defined widgets of the named dialog (page).<p>
*
* This overwrites the method from the super class to create a layout variation for the widgets.<p>
*
* @param dialog the dialog (page) to get the HTML for
* @return the dialog HTML for all defined widgets of the named dialog (page)
*/
protected String createDialogHtml(String dialog) {
StringBuffer result = new StringBuffer(1024);
result.append(createWidgetTableStart());
// show error header once if there were validation errors
result.append(createWidgetErrorHeader());
if (dialog.equals(PAGES[0])) {
// create the widgets for the first dialog page
result.append(dialogBlockStart(key(Messages.GUI_USER_EDITOR_LABEL_IDENTIFICATION_BLOCK_0)));
result.append(createWidgetTableStart());
result.append(createDialogRowsHtml(0, 5));
result.append(createWidgetTableEnd());
result.append(dialogBlockEnd());
result.append(dialogBlockStart(key(Messages.GUI_USER_EDITOR_LABEL_ADDRESS_BLOCK_0)));
result.append(createWidgetTableStart());
result.append(createDialogRowsHtml(6, 9));
result.append(createWidgetTableEnd());
result.append(dialogBlockEnd());
int row = isNewUser() ? 12 : 11;
result.append(dialogBlockStart(key(Messages.GUI_USER_EDITOR_LABEL_SETTINGS_BLOCK_0)));
result.append(createWidgetTableStart());
result.append(createDialogRowsHtml(10, row));
result.append(createWidgetTableEnd());
result.append(dialogBlockEnd());
row++;
result.append(dialogBlockStart(key(Messages.GUI_USER_EDITOR_LABEL_AUTHENTIFICATION_BLOCK_0)));
result.append(createWidgetTableStart());
if (isPwdChangeAllowed(m_user)) {
result.append(createDialogRowsHtml(row, row + 3));
} else {
result.append(createDialogRowsHtml(row, row + 1));
}
result.append(createWidgetTableEnd());
result.append(dialogBlockEnd());
}
result.append(createWidgetTableEnd());
return result.toString();
}
/**
* Creates a new user.<p>
*
* @param name the name
* @param pwd the password
* @param desc the description
* @param info the additional information map
*
* @return the new user
*
* @throws CmsException if something goes wrong
*/
protected abstract CmsUser createUser(String name, String pwd, String desc, Map info) throws CmsException;
/**
* Creates the list of widgets for this dialog.<p>
*/
protected void defineWidgets() {
// initialize the user object to use for the dialog
initUserObject();
setKeyPrefix(KEY_PREFIX);
// widgets to display
if (isNewUser() && isEditable(m_user)) {
addWidget(new CmsWidgetDialogParameter(this, "name", PAGES[0], new CmsInputWidget()));
} else {
addWidget(new CmsWidgetDialogParameter(this, "name", PAGES[0], new CmsDisplayWidget()));
}
if (isEditable(m_user)) {
addWidget(new CmsWidgetDialogParameter(this, "description", "", PAGES[0], new CmsTextareaWidget(), 0, 1));
addWidget(new CmsWidgetDialogParameter(m_user, "lastname", PAGES[0], new CmsInputWidget()));
addWidget(new CmsWidgetDialogParameter(m_user, "firstname", PAGES[0], new CmsInputWidget()));
addWidget(new CmsWidgetDialogParameter(m_user, "email", PAGES[0], new CmsInputWidget()));
addWidget(new CmsWidgetDialogParameter(this, "assignedOu", PAGES[0], new CmsDisplayWidget()));
addWidget(new CmsWidgetDialogParameter(m_user, "address", "", PAGES[0], new CmsInputWidget(), 0, 1));
addWidget(new CmsWidgetDialogParameter(m_user, "zipcode", "", PAGES[0], new CmsInputWidget(), 0, 1));
addWidget(new CmsWidgetDialogParameter(m_user, "city", "", PAGES[0], new CmsInputWidget(), 0, 1));
addWidget(new CmsWidgetDialogParameter(m_user, "country", "", PAGES[0], new CmsInputWidget(), 0, 1));
addWidget(new CmsWidgetDialogParameter(this, "language", PAGES[0], new CmsSelectWidget(getLanguages())));
addWidget(new CmsWidgetDialogParameter(this, "site", PAGES[0], new CmsSelectWidget(getSites())));
if (isNewUser()) {
addWidget(new CmsWidgetDialogParameter(this, "group", PAGES[0], new CmsGroupWidget(
null,
null,
getParamOufqn())));
}
} else {
addWidget(new CmsWidgetDialogParameter(this, "description", PAGES[0], new CmsDisplayWidget()));
addWidget(new CmsWidgetDialogParameter(m_user, "lastname", PAGES[0], new CmsDisplayWidget()));
addWidget(new CmsWidgetDialogParameter(m_user, "firstname", PAGES[0], new CmsDisplayWidget()));
addWidget(new CmsWidgetDialogParameter(m_user, "email", PAGES[0], new CmsDisplayWidget()));
addWidget(new CmsWidgetDialogParameter(this, "assignedOu", PAGES[0], new CmsDisplayWidget()));
addWidget(new CmsWidgetDialogParameter(m_user, "address", PAGES[0], new CmsDisplayWidget()));
addWidget(new CmsWidgetDialogParameter(m_user, "zipcode", PAGES[0], new CmsDisplayWidget()));
addWidget(new CmsWidgetDialogParameter(m_user, "city", PAGES[0], new CmsDisplayWidget()));
addWidget(new CmsWidgetDialogParameter(m_user, "country", PAGES[0], new CmsDisplayWidget()));
addWidget(new CmsWidgetDialogParameter(this, "language", PAGES[0], new CmsDisplayWidget()));
addWidget(new CmsWidgetDialogParameter(this, "site", PAGES[0], new CmsDisplayWidget()));
}
addWidget(new CmsWidgetDialogParameter(m_user, "enabled", PAGES[0], new CmsCheckboxWidget()));
addWidget(new CmsWidgetDialogParameter(this, "selfManagement", PAGES[0], new CmsCheckboxWidget()));
if (isPwdChangeAllowed(m_user)) {
addWidget(new CmsWidgetDialogParameter(m_pwdInfo, "newPwd", PAGES[0], new CmsPasswordWidget()));
addWidget(new CmsWidgetDialogParameter(m_pwdInfo, "confirmation", PAGES[0], new CmsPasswordWidget()));
}
}
/**
* Returns the dialog class name of the list to refresh.<p>
*
* @return the list dialog class name
*/
protected abstract String getListClass();
/**
* Returns the root path for the list tool.<p>
*
* @return the root path
*/
protected abstract String getListRootPath();
/**
* @see org.opencms.workplace.CmsWidgetDialog#getPageArray()
*/
protected String[] getPageArray() {
return PAGES;
}
/**
* @see org.opencms.workplace.CmsWorkplace#initMessages()
*/
protected void initMessages() {
// add specific dialog resource bundle
addMessages(Messages.get().getBundleName());
// add default resource bundles
super.initMessages();
}
/**
* Initializes the user object to work with depending on the dialog state and request parameters.<p>
*
* Two initializations of the user object on first dialog call are possible:
* <ul>
* <li>edit an existing user</li>
* <li>create a new user</li>
* </ul>
*/
protected void initUserObject() {
Object o = null;
try {
if (CmsStringUtil.isEmpty(getParamAction()) || CmsDialog.DIALOG_INITIAL.equals(getParamAction())) {
// edit an existing user, get the user object from db
m_user = getCms().readUser(new CmsUUID(getParamUserid()));
m_pwdInfo = new CmsPasswordInfo();
CmsUserSettings settings = new CmsUserSettings(m_user);
m_language = settings.getLocale().toString();
m_site = settings.getStartSite();
return;
} else {
// this is not the initial call, get the user object from session
o = getDialogObject();
Map dialogObject = (Map)o;
m_user = (CmsUser)dialogObject.get(USER_OBJECT);
m_pwdInfo = (CmsPasswordInfo)dialogObject.get(PWD_OBJECT);
CmsUserSettings settings = new CmsUserSettings(m_user);
m_language = settings.getLocale().toString();
m_site = settings.getStartSite();
// test
m_user.getId();
return;
}
} catch (Exception e) {
// noop
}
// create a new user object
m_user = new CmsUser();
m_pwdInfo = new CmsPasswordInfo();
m_group = getParamOufqn() + OpenCms.getDefaultUsers().getGroupUsers();
m_language = CmsLocaleManager.getDefaultLocale().toString();
m_site = OpenCms.getSiteManager().getDefaultSite().getSiteRoot();
}
/**
* @see org.opencms.workplace.CmsWorkplace#initWorkplaceRequestValues(org.opencms.workplace.CmsWorkplaceSettings, javax.servlet.http.HttpServletRequest)
*/
protected void initWorkplaceRequestValues(CmsWorkplaceSettings settings, HttpServletRequest request) {
// initialize parameters and dialog actions in super implementation
super.initWorkplaceRequestValues(settings, request);
// save the current state of the user and pwd (may be changed because of the widget values)
Map dialogObject = new HashMap();
dialogObject.put(USER_OBJECT, m_user);
dialogObject.put(PWD_OBJECT, m_pwdInfo);
setDialogObject(dialogObject);
}
/**
* Tests if the given user is editable or not.<p>
*
* Not editable means that the user can only be activated and deactivated.<p>
*
* @param user the user to test
*
* @return the editable flag
*/
protected abstract boolean isEditable(CmsUser user);
/**
* Checks if the new user dialog has to be displayed.<p>
*
* @return <code>true</code> if the new user dialog has to be displayed
*/
protected boolean isNewUser() {
return getCurrentToolPath().equals(getListRootPath() + "/new");
}
/**
* Indicates if the pwd can be edited or not.<p>
*
* @param user the edited cms user
*
* @return <code>true</code> if the pwd can be edited
*/
protected boolean isPwdChangeAllowed(CmsUser user) {
return user.isUser(); // always true, just to avoid warning
}
/**
* @see org.opencms.workplace.CmsWidgetDialog#validateParamaters()
*/
protected void validateParamaters() throws Exception {
OpenCms.getRoleManager().checkRole(getCms(), CmsRole.ACCOUNT_MANAGER.forOrgUnit(getParamOufqn()));
if (!isNewUser()) {
// test the needed parameters
getCms().readUser(new CmsUUID(getParamUserid())).getName();
}
}
/**
* Writes a user to the db.<p>
*
* @param user the user to write
*
* @throws CmsException if something goes wrong
*/
protected abstract void writeUser(CmsUser user) throws CmsException;
/**
* Returns a list of options for the locale selector.<p>
*
* @return a list of options for the locale selector
*/
private List getLanguages() {
List locales = new ArrayList();
Locale defLocale = null;
if ((m_user != null) && CmsStringUtil.isNotEmptyOrWhitespaceOnly(m_user.getName())) {
defLocale = new CmsUserSettings(m_user).getLocale();
}
if (defLocale == null) {
defLocale = getCms().getRequestContext().getLocale();
}
Iterator itLocales = OpenCms.getLocaleManager().getAvailableLocales().iterator();
while (itLocales.hasNext()) {
Locale locale = (Locale)itLocales.next();
boolean selected = locale.equals(defLocale);
locales.add(new CmsSelectWidgetOption(locale.toString(), selected, locale.getDisplayName(getLocale()), null));
}
return locales;
}
/**
* Returns a list of options for the site selector.<p>
*
* @return a list of options for the site selector
*/
private List getSites() {
List sites = new ArrayList();
List sitesList = OpenCms.getSiteManager().getAvailableSites(getCms(), true, getParamOufqn());
String defSite = null;
if ((m_user != null) && CmsStringUtil.isNotEmptyOrWhitespaceOnly(m_user.getName())) {
defSite = new CmsUserSettings(m_user).getStartSite();
}
if (defSite == null) {
defSite = getCms().getRequestContext().getSiteRoot();
}
if (!defSite.endsWith("/")) {
defSite += "/";
}
Iterator itSites = sitesList.iterator();
while (itSites.hasNext()) {
CmsSite site = (CmsSite)itSites.next();
String siteRoot = site.getSiteRoot();
if (CmsStringUtil.isEmptyOrWhitespaceOnly(siteRoot)) {
if (sitesList.size() > 1) {
if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(m_user.getName())) {
if (!OpenCms.getRoleManager().hasRole(getCms(), m_user.getName(), CmsRole.DEVELOPER)) {
// skip the root site if not accessible
continue;
}
}
}
}
if (!siteRoot.endsWith("/")) {
siteRoot += "/";
}
boolean selected = defSite.equals(siteRoot);
sites.add(new CmsSelectWidgetOption(siteRoot, selected, site.getTitle(), null));
}
return sites;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?