?? cmschannelact.java
字號:
package com.jeecms.cms.action;
import java.util.ArrayList;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataIntegrityViolationException;
import com.jeecms.cms.entity.ChnlModel;
import com.jeecms.cms.entity.ChnlModelItem;
import com.jeecms.cms.entity.CmsAdmin;
import com.jeecms.cms.entity.CmsChannel;
import com.jeecms.cms.entity.CmsMemberGroup;
import com.jeecms.cms.manager.ChnlModelMng;
import com.jeecms.cms.manager.CmsChannelMng;
import com.jeecms.cms.manager.CmsMemberGroupMng;
import com.jeecms.core.util.UploadRule;
import com.ponyjava.common.util.SelectTreeUtils;
@SuppressWarnings("serial")
public abstract class CmsChannelAct extends com.jeecms.cms.CmsSysAction {
private static final Logger log = LoggerFactory
.getLogger(CmsChannelAct.class);
public String left() {
// 根
treeRoot = new CmsChannel();
treeRoot.setName("根目錄");
treeRoot.setTreeLeaf(false);
ChnlModel model = new ChnlModel();
model.setShortName("");
treeRoot.setModel(model);
// 內容。取所有列表,找出父菜單。
Set<CmsChannel> chnlSet = new LinkedHashSet<CmsChannel>();
CmsChannel chnl = cmsChannelMng.getRoot(getWebId(), getSysType());
if (chnl != null) {
chnlSet.add(chnl);
}
treeRoot.setTreeChild(chnlSet);
return LEFT;
}
@SuppressWarnings("unchecked")
public String list() {
if (pid == null) {
// 列出根欄目
list = new ArrayList<CmsChannel>();
CmsChannel c = cmsChannelMng.getRoot(getWebId(), getSysType());
if (c != null) {
list.add(c);
}
// 有首頁則不能再添加首頁
hasChild = list.size() > 0 ? false : true;
} else {
// 列出父欄目的子欄目
CmsChannel c = cmsChannelMng.findById(pid);
// 欄目不控制數據權限,只控制操作權限
this.list = new ArrayList<CmsChannel>(c.getChild());
hasChild = c.getHasChild();
}
// 同一系列網站共用模型
models = chnlModelMng.getModels(getRootWebId(), getSysType(), false);
return LIST;
}
public String add() {
model = chnlModelMng.findById(modelId);
itemMap = model.getDiplayItemMap(ChnlModel.CHANNEL_ITEM);
if (pid != null) {
parent = cmsChannelMng.findById(pid);
}
handleParentRight(parent);
String root = contextPvd.getAppRoot();
tplChannlList = model.tplChannlList(getSysType(), root);
tplContentList = model.tplContentList(getSysType(), root);
// 設置上傳規則
addUploadRule();
return ADD;
}
@SuppressWarnings("unchecked")
public String edit() {
bean = cmsChannelMng.findById(id);
model = bean.getModel();
itemMap = model.getDiplayItemMap(ChnlModel.CHANNEL_ITEM);
hasChild = model.getHasChild();
if (hasChild) {
models = chnlModelMng
.getModels(getRootWebId(), getSysType(), false);
}
handleParentRight(bean.getParent());
String root = contextPvd.getAppRoot();
tplChannlList = model.tplChannlList(getSysType(), root);
String indexTpl = bean.getTplIndex();
// 當前模板不在默認方案中。
if (!StringUtils.isBlank(indexTpl) && !tplChannlList.contains(indexTpl)) {
tplChannlList.add(indexTpl);
}
tplContentList = model.tplContentList(getSysType(), root);
String contentTpl = bean.getTplContent();
// 當前模板不在默認方案中。
if (!StringUtils.isBlank(contentTpl)
&& !tplContentList.contains(contentTpl)) {
tplContentList.add(contentTpl);
}
chnlList = cmsChannelMng.getChnlsAndExclude(getWebId(), getSysType(),
bean.getId());
chnlList = SelectTreeUtils.handleTreeChild(chnlList);
chnlList = SelectTreeUtils.webTree(chnlList);
// 設置上傳規則
addUploadRule();
return EDIT;
}
public String save() {
// 拷貝父欄目數據權限
bean.setSysType(getSysType());
cmsChannelMng.saveChannel(bean, getCmsAdmin(), filterAdmins(admins),
uploadRule);
// 清除上傳規則
removeUploadRule();
log.info("添加 欄目 成功:{}", bean.getName());
return list();
}
public String update() {
bean = cmsChannelMng.updateChannel(bean, getCmsAdmin(),
filterAdmins(admins), uploadRule);
// 清除上傳規則
removeUploadRule();
log.info("修改 欄目 成功:{}", bean.getName());
return list();
}
public String delete() {
try {
if (id != null) {
bean = cmsChannelMng.deleteById(id);
log.info("刪除 欄目 成功:{}", bean.getName());
} else {
for (CmsChannel b : cmsChannelMng.deleteById(ids)) {
log.info("刪除 欄目 成功:{}", b.getName());
}
}
} catch (DataIntegrityViolationException e) {
addActionError("記錄已被引用。請先刪除文檔,再刪除欄目");
return SHOW_ERROR;
}
return list();
}
public String priorityUpdate() {
for (int i = 0; i < wids.length; i++) {
CmsChannel f = cmsChannelMng.findById(wids[i]);
f.setPriority(prioritys[i]);
cmsChannelMng.update(f);
}
return list();
}
public String checkPath() {
if (bean == null) {
return renderText("false");
}
String path = bean.getPath();
if (StringUtils.isBlank(path)) {
return renderText("false");
}
if (path.equals(origPath)) {
return renderText("true");
}
if (cmsChannelMng.getByPath(getWebId(), path) == null) {
return renderText("true");
}
return renderText("false");
}
public boolean validateList() {
if (hasErrors()) {
return true;
}
if (pid != null) {
if (vldParendRight(pid, null)) {
return true;
}
}
return false;
}
public boolean validateAdd() {
if (hasErrors()) {
return true;
}
if (pid != null) {
// 檢查父節點是否合法
if (vldParendRight(pid, null)) {
return true;
}
} else {
// 檢查是否已經有根節點
if (vldMultiRootChnl()) {
return true;
}
}
vldModel(modelId, null);
return false;
}
public boolean validateSave() {
if (hasErrors()) {
return true;
}
vldBean(bean);
// 驗證上傳規則
if (vldUploadRule()) {
return true;
}
bean.setWebsite(getWeb());
if (pid != null) {
// 檢查父節點是否合法
if (vldParendRight(pid, bean)) {
return true;
}
} else {
// 檢查是否已經有根節點
if (vldMultiRootChnl()) {
return true;
}
bean.setParent(null);
}
if (vldModel(bean.getModel().getId(), bean)) {
return true;
}
if (vldGroupContribute(bean.getGroupContribute(), bean, true)) {
return true;
}
if (vldGroupVisit(bean.getGroupVisit(), bean, true)) {
return true;
}
return false;
}
public boolean validateEdit() {
if (hasErrors()) {
return true;
}
if (vldExist(id)) {
return true;
}
if (vldWebsite(id, null)) {
return true;
}
return false;
}
public boolean validateUpdate() {
if (hasErrors()) {
return true;
}
vldBean(bean);
// 驗證上傳規則
if (vldUploadRule()) {
return true;
}
if (vldExist(bean.getId())) {
return true;
}
if (vldWebsite(bean.getId(), bean)) {
return true;
}
if (vldModel(bean.getModel().getId(), null)) {
return true;
}
if (vldGroupContribute(bean.getGroupContribute(), bean, false)) {
}
if (vldGroupVisit(bean.getGroupVisit(), bean, false)) {
return true;
}
// 檢查父欄目
CmsChannel parent = bean.getParent();
// 修改父欄目
if (parent != null) {
Long pid = parent.getId();
if (pid == null) {
addActionError("不能設置成根欄目");
return true;
}
if (pid.equals(bean.getId())) {
addActionError("不能把自己設置成自己的父欄目");
return true;
}
// 檢查是否為自己的子欄目
if (cmsChannelMng.isChild(bean.getId(), pid)) {
addActionError("不能把子欄目設置成父欄目");
return true;
}
// 檢查父節點是否合法
if (vldParendRight(pid, null)) {
return true;
}
}
return false;
}
public boolean validateDelete() {
if (hasErrors()) {
return true;
}
CmsChannel po;
if (id == null && (ids == null || ids.length <= 0)) {
addActionError("ID不能為空");
return true;
} else {
if (id != null) {
ids = new Long[] { id };
}
for (Long id : ids) {
po = cmsChannelMng.findById(id);
if (!po.getWebsite().getId().equals(getWebId())) {
addActionError("不能刪除其他站點文章");
return true;
}
Set<CmsChannel> child = po.getChild();
if (child != null && child.size() > 0) {
addActionError("請先刪除子節點");
return true;
}
}
}
return false;
}
private boolean vldMultiRootChnl() {
CmsChannel c = cmsChannelMng.getRoot(getWebId(), getSysType());
if (c != null) {
addActionError("已經存在根欄目,父欄目不能為空");
return true;
}
return false;
}
private boolean vldParendRight(Long pid, CmsChannel bean) {
CmsChannel c = cmsChannelMng.findById(pid);
if (c == null) {
addActionError("父欄目不存在:" + pid);
return true;
}
if (!getWebId().equals(c.getWebsite().getId())) {
addActionError("不能訪問其他站點的欄目:" + pid);
return true;
}
if (!getSysType().equals(c.getSysType())) {
addActionError("不是本系統的欄目:" + pid);
return true;
}
if (!c.getHasChild()) {
addActionError("該欄目不能擁有子欄目:" + pid);
return true;
}
if (bean != null) {
bean.setParent(c);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -