UIPostRules.java
/***************************************************************************
* Copyright (C) 2003-2007 eXo Platform SAS.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see<http://www.gnu.org/licenses/>.
***************************************************************************/
package org.exoplatform.forum.webui;
import org.exoplatform.commons.utils.CommonsUtils;
import org.exoplatform.forum.ForumUtils;
import org.exoplatform.forum.common.UserHelper;
import org.exoplatform.forum.common.webui.WebUIUtils;
import org.exoplatform.forum.service.ForumService;
import org.exoplatform.forum.service.UserProfile;
import org.exoplatform.webui.config.annotation.ComponentConfig;
import org.exoplatform.webui.core.UIContainer;
@ComponentConfig(
template = "app:/templates/forum/webui/UIPostRules.gtmpl"
)
public class UIPostRules extends UIContainer {
private UserProfile userProfile;
private boolean canCreateNewThread = false;
private boolean canAddPost = false;
public boolean isCanCreateNewThread() {
return canCreateNewThread;
}
public boolean isCanAddPost() {
return canAddPost;
}
public UIPostRules() throws Exception {
}
protected UserProfile getUserProfile() throws Exception {
if (this.userProfile == null) {
try {
this.userProfile = this.getAncestorOfType(UIForumPortlet.class).getUserProfile();
} catch (Exception e) {
ForumService forumService = CommonsUtils.getService(ForumService.class);
userProfile = forumService.getDefaultUserProfile(UserHelper.getCurrentUser(), ForumUtils.EMPTY_STR);
}
}
return this.userProfile;
}
public void setUserProfile(UserProfile userProfile) {
this.userProfile = userProfile;
}
public void setLock(boolean isLock) {
canCreateNewThread = !isLock;
canAddPost = !isLock;
}
public void setCanAddPost(boolean canAddPost) {
this.canAddPost = canAddPost;
}
public void setCanCreateNewThread(boolean canCreatThread) {
this.canCreateNewThread = canCreatThread;
}
protected String ruleBuilder() throws Exception {
boolean canCreatThread = true, canPost = true;
if (getUserProfile().getIsBanned() || getUserProfile().getUserRole() == UserProfile.GUEST) {
canCreatThread = false;
canPost = false;
} else {
if (isCanCreateNewThread() == false) {
canCreatThread = false;
}
if (isCanAddPost() == false) {
canPost = false;
}
}
StringBuilder builder = new StringBuilder("<ul>");
if (canCreatThread) {
builder.append("<li>").append(getLabel("YouCanCreateTopics")).append("</li>");
} else {
builder.append("<li>").append(getLabel("YouCanNotCreateTopics")).append("</li>");
}
String[] labels = new String[] { "PostReplies", "PostAttachments", "EditYourPosts" };
for (int i = 0; i < labels.length; i++) {
if (canPost) {
builder.append("<li>").append(getLabel("YouCan" + labels[i])).append("</li>");
} else {
builder.append("<li>").append(getLabel("YouCanNot" + labels[i])).append("</li>");
}
}
builder.append("</ul>");
return builder.toString();
}
private String getLabel(String label) {
return WebUIUtils.getLabel(getId(), label).replace("{0}", "<strong>").replace("{1}", "</strong>");
}
}