/* ================================================================== * Created [2009-4-27 下午11:32:55] by Jon.King * ================================================================== * TSS * ================================================================== * mailTo:jinpujun@hotmail.com * Copyright (c) Jon.King, 2009-2012 * ================================================================== */ package com.jinhe.tss.cms.action; import java.util.List; import java.util.Map; import com.jinhe.tss.cms.CMSConstants; import com.jinhe.tss.cms.entity.Channel; import com.jinhe.tss.cms.publish.PublishManger; import com.jinhe.tss.cms.service.IChannelService; import com.jinhe.tss.cms.workflow.WorkFlowManager; import com.jinhe.tss.component.dynproperty.support.IRemotePropertyService; import com.jinhe.tss.component.support.web.webwork.ProgressActionSupport; import com.jinhe.tss.core.exception.BusinessException; import com.jinhe.tss.core.util.XMLDocUtil; import com.jinhe.tss.core.web.dispaly.tree.LevelTreeParser; import com.jinhe.tss.core.web.dispaly.tree.TreeEncoder; import com.jinhe.tss.core.web.dispaly.xform.XFormEncoder; public class ChannelAction extends ProgressActionSupport { private static final long serialVersionUID = -8424497703591664847L; private IChannelService channelService; private PublishManger publishManger; private IRemotePropertyService propertyService; private Channel channel = new Channel(); // 栏目信息 private Long parentId; private Long channelId; // 栏目编号 private Long toChannelId; // 排序到的栏目ID private Integer direction; // 排序方向 -1目标上方,1目标下方 private String distributeFromIds; // 栏目的关系源id private String distributeToIds; // 栏目的目的源id private String category; // 1:增量发布 2:完全发布 /** * 获取所有的栏目树结构 */ public String getChannelAll() { List<?> list = channelService.getAllChannels(); TreeEncoder channelTreeEncoder = new TreeEncoder(list, new LevelTreeParser()); channelTreeEncoder.setNeedRootNode(false); return print("ChannelTree", channelTreeEncoder); } /** * 获取栏目xform信息 */ public String getChannelDetail() { if ( isCreateNew() ) { channel = new Channel(); Channel parent = (Channel) channelService.getChannelById(parentId); channel.setArticleTypeId(parent.getArticleTypeId()); channel.setArticleTypeName(parent.getArticleTypeName()); channel.setHotArticleRule(parent.getHotArticleRule()); channel.setNewArticleRule(parent.getNewArticleRule()); channel.setWorkflowId(parent.getWorkflowId()); channel.setWorkflowName(parent.getWorkflowName()); channel.setOverdueDate(parent.getOverdueDate()); channel.setIsSite(CMSConstants.FALSE); channel.setSiteId(parent.isSite() ? parent.getId() : parent.getSiteId()); channel.setParentId(parentId); } else { channel = channelService.getChannelById(channelId); } Map<String, String> map = propertyService.getXFormTemplate("channel", "baseXForm4Channel"); Object template = map.get(CMSConstants.CHANNEL_BASE_INFO_TAB_KEY); if( template == null ) { throw new BusinessException("栏目表单布局尚未设置,请转到动态属性进行设置."); } XFormEncoder xEncoder = new XFormEncoder(XMLDocUtil.dataXml2Doc((String) template), channel, false, false); String[] objs = WorkFlowManager.getInstance().getWorkFlowCodeAndNames(); xEncoder.setColumnAttribute("workflowId", "editorvalue", objs[0]); xEncoder.setColumnAttribute("workflowId", "editortext", objs[1]); return print("ChannelInfo", xEncoder); } /** * 新增栏目 */ public String saveChannel() { channelService.createChannel(channel); return doAfterSave(true, channel, "ChannelTree"); } /** * 更新栏目 */ public String updateChannel() { channelService.updateChannel(channel); return printSuccessMessage("修改成功!"); } /** * 逻辑删除栏目 */ public String deleteChannel() { channelService.deleteChannel(channelId); return printSuccessMessage("删除成功!"); } /** * 栏目排序 */ public String sortChannel() { channelService.sortChannel(channelId, toChannelId, direction); return printSuccessMessage("排序成功!"); } /** * 栏目移动 */ public String moveChannel() { channelService.moveChannel(channelId, toChannelId); return printSuccessMessage("移动成功!"); } /** * 实现栏目的复制和复制到的功能 */ public String copyChannel(){ List<Channel> list = channelService.copyChannel(channelId, toChannelId); TreeEncoder encoder = new TreeEncoder(list, new LevelTreeParser()); encoder.setNeedRootNode(false); return print("ChannelTree", encoder); } /** * 获取栏目的关系信息 */ public String getChannelRelationShip() { Object[] objs = channelService.getChannelRelationShip(channelId); return print(new String[]{"SiteTree", "ChannelDistributeFrom", "ChannelDistributeTo"}, objs); } /** * 保存栏目关系信息 */ public String saveChannelRelationShip() { channelService.saveChannelRelationShip(channelId, distributeFromIds, distributeToIds); return printSuccessMessage("保存成功!"); } /** * 带有进度条的栏目发布 */ public String publishChannel() { String code = publishManger.publishArticle(channelId, category); return printScheduleMessage(code); } /** * 带有进度条的站点发布 */ public String publishSite(){ String code = publishManger.publishArticle(channelId, category); return printScheduleMessage(code); } public Channel getChannel() { return channel; } public void setDistributeFromIds(String distributeFromIds) { this.distributeFromIds = distributeFromIds; } public void setDistributeToIds(String distributeToIds) { this.distributeToIds = distributeToIds; } public void setParentId(Long parentId) { this.parentId = parentId; } public void setCategory(String category) { this.category = category; } public void setDirection(Integer direction) { this.direction = direction; } public void setToChannelId(Long toChannelId) { this.toChannelId = toChannelId; } public void setChannelId(Long channelId) { this.channelId = channelId; } public void setChannelService(IChannelService channelService) { this.channelService = channelService; } public void setPropertyService(IRemotePropertyService propertyService) { this.propertyService = propertyService; } public void setPublishManger(PublishManger publishManger) { this.publishManger = publishManger; } }