Skip to content

Commit

Permalink
为Article添加link属性,使文章可做为跳转链接使用。并统一格式化Article及Category的链接地址,方便前台模板调用及统一修改。
Browse files Browse the repository at this point in the history
添加了Article中Image属性的格式化,下一步进行保存时对Image路径的格式化,保证cms在不同ContextPath的迁移。
  • Loading branch information
songlai committed Aug 27, 2013
1 parent ddcfdf4 commit 808a4e6
Show file tree
Hide file tree
Showing 11 changed files with 132 additions and 30 deletions.
Binary file modified bin/refresh-db/cms/jeesite_data.xls
Binary file not shown.
1 change: 1 addition & 0 deletions bin/refresh-db/cms/jeesite_mssql.sql
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ CREATE TABLE cms_article
id bigint NOT NULL IDENTITY ,
category_id bigint NOT NULL,
title nvarchar(255) NOT NULL,
link nvarchar(255),
color nvarchar(50),
image nvarchar(255),
keywords nvarchar(255),
Expand Down
1 change: 1 addition & 0 deletions bin/refresh-db/cms/jeesite_mysql.sql
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ CREATE TABLE cms_article
id bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
category_id bigint NOT NULL COMMENT '栏目编号',
title varchar(255) NOT NULL COMMENT '标题',
link varchar(255) COMMENT '外部链接',
color varchar(50) COMMENT '标题颜色(red:红色;green:绿色;blue:蓝色;yellow:黄色;orange:橙色)',
image varchar(255) COMMENT '文章图片',
keywords varchar(255) COMMENT '关键字',
Expand Down
1 change: 1 addition & 0 deletions bin/refresh-db/cms/jeesite_oracle.sql
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ CREATE TABLE cms_article
id number(19,0) NOT NULL,
category_id number(19,0) NOT NULL,
title varchar2(255) NOT NULL,
link varchar2(255),
color varchar2(50),
image varchar2(255),
keywords varchar2(255),
Expand Down
21 changes: 21 additions & 0 deletions src/main/java/com/thinkgem/jeesite/modules/cms/entity/Article.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import javax.validation.Valid;
import javax.validation.constraints.NotNull;

import com.thinkgem.jeesite.modules.cms.utils.CmsUtils;
import org.apache.commons.lang3.StringUtils;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
Expand Down Expand Up @@ -57,6 +58,7 @@ public class Article extends DataEntity {
private Long id; // 编号
private Category category;// 分类编号
private String title; // 标题
private String link; // 外部链接
private String color; // 标题颜色(red:红色;green:绿色;blue:蓝色;yellow:黄色;orange:橙色)
private String image; // 文章图片
private String keywords;// 关键字
Expand Down Expand Up @@ -120,6 +122,15 @@ public void setTitle(String title) {
this.title = title;
}

@Length(min=0, max=255)
public String getLink() {
return link;
}

public void setLink(String link) {
this.link = link;
}

@Length(min=0, max=50)
public String getColor() {
return color;
Expand Down Expand Up @@ -218,6 +229,16 @@ public List<String> getPosidList() {
public void setPosidList(List<Long> list) {
posid = ","+StringUtils.join(list, ",")+",";
}

@Transient
public String getUrl() {
return CmsUtils.getUrlDynamic(this);
}

@Transient
public String getImageSrc() {
return CmsUtils.formatImageSrcToWeb(this.image);
}

}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import javax.persistence.Transient;
import javax.validation.constraints.NotNull;

import com.thinkgem.jeesite.modules.cms.utils.CmsUtils;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.annotations.DynamicInsert;
Expand Down Expand Up @@ -333,4 +334,9 @@ public boolean isRoot(){
public static boolean isRoot(Long id){
return id != null && id.equals(1L);
}

@Transient
public String getUrl() {
return CmsUtils.getUrlDynamic(this);
}
}
76 changes: 71 additions & 5 deletions src/main/java/com/thinkgem/jeesite/modules/cms/utils/CmsUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import java.util.List;
import java.util.Map;

import com.thinkgem.jeesite.common.config.Global;
import org.apache.commons.lang.StringUtils;

import com.thinkgem.jeesite.common.mapper.JsonMapper;
Expand All @@ -23,6 +24,8 @@
import com.thinkgem.jeesite.modules.cms.service.LinkService;
import com.thinkgem.jeesite.modules.cms.service.SiteService;

import javax.servlet.ServletContext;

/**
* 内容管理工具类
* @author ThinkGem
Expand All @@ -34,6 +37,7 @@ public class CmsUtils {
private static CategoryService categoryService = SpringContextHolder.getBean(CategoryService.class);
private static ArticleService articleService = SpringContextHolder.getBean(ArticleService.class);
private static LinkService linkService = SpringContextHolder.getBean(LinkService.class);
private static ServletContext context = SpringContextHolder.getBean(ServletContext.class);

private static final String CMS_CACHE = "cmsCache";

Expand All @@ -54,7 +58,7 @@ public static List<Site> getSiteList(){

/**
* 获得站点信息
* @param id 站点编号
* @param siteId 站点编号
*/
public static Site getSite(long siteId){
long id = 1L;
Expand Down Expand Up @@ -91,7 +95,7 @@ public static List<Category> getMainNavList(long siteId){

/**
* 获取栏目
* @param id 栏目编号
* @param categoryId 栏目编号
* @return
*/
public static Category getCategory(long categoryId){
Expand Down Expand Up @@ -120,7 +124,7 @@ public static List<Category> getCategoryList(long siteId, long parentId, int num

/**
* 获取栏目
* @param ids 栏目编号
* @param categoryIds 栏目编号
* @return
*/
public static List<Category> getCategoryListByIds(String categoryIds){
Expand All @@ -129,7 +133,7 @@ public static List<Category> getCategoryListByIds(String categoryIds){

/**
* 获取文章
* @param id 文章编号
* @param articleId 文章编号
* @return
*/
public static Article getArticle(long articleId){
Expand Down Expand Up @@ -170,7 +174,7 @@ public static List<Article> getArticleList(long siteId, long categoryId, int num

/**
* 获取链接
* @param id 文章编号
* @param linkId 文章编号
* @return
*/
public static Link getLink(long linkId){
Expand Down Expand Up @@ -210,4 +214,66 @@ public static void putCache(String key, Object value) {
public static void removeCache(String key) {
CacheUtils.remove(CMS_CACHE, key);
}

/**
* 获得文章动态URL地址
* @param article
* @return url
*/
public static String getUrlDynamic(Article article) {
if(StringUtils.isNotBlank(article.getLink())){
return article.getLink();
}
StringBuilder str = new StringBuilder();
str.append(context.getContextPath()).append(Global.getFrontPath());
str.append("/view-").append(article.getCategory().getId()).append("-").append(article.getId()).append(Global.getUrlSuffix());
return str.toString();
}

/**
* 获得栏目动态URL地址
* @param category
* @return url
*/
public static String getUrlDynamic(Category category) {
if(StringUtils.isNotBlank(category.getHref())){
if(!category.getHref().contains("://")){
return context.getContextPath()+category.getHref();
}else{
return category.getHref();
}
}
StringBuilder str = new StringBuilder();
str.append(context.getContextPath()).append(Global.getFrontPath());
str.append("/list-").append(category.getId()).append(Global.getUrlSuffix());
return str.toString();
}

/**
* 从图片地址中去除ContextPath地址
* @param src
* @return src
*/
public static String formatImageSrcToDb(String src) {
if(StringUtils.isBlank(src)) return src;
if(src.startsWith(context.getContextPath() + "/userfiles")){
return src.substring(context.getContextPath().length());
}else{
return src;
}
}

/**
* 从图片地址中加入ContextPath地址
* @param src
* @return src
*/
public static String formatImageSrcToWeb(String src) {
if(StringUtils.isBlank(src)) return src;
if(src.startsWith(context.getContextPath() + "/userfiles")){
return src;
}else{
return context.getContextPath()+src;
}
}
}
34 changes: 24 additions & 10 deletions src/main/webapp/WEB-INF/views/modules/cms/articleForm.jsp
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,22 @@
<meta name="decorator" content="default"/>
<script type="text/javascript">
$(document).ready(function() {
if($("#link").val()){
$('#linkBody').show();
$('#url').attr("checked", true);
}
$("#title").focus();
$("#inputForm").validate({
submitHandler: function(form){
if ($("#categoryId").val()==""){
$("#categoryName").focus();
top.$.jBox.tip('请选择归属栏目','warning');
}else if (CKEDITOR.instances.content.getData()==""){
top.$.jBox.tip('请填写正文','warning');
}else{
loading('正在提交,请稍等...');
form.submit();
}
if ($("#categoryId").val()==""){
$("#categoryName").focus();
top.$.jBox.tip('请选择归属栏目','warning');
}else if (CKEDITOR.instances.content.getData()=="" && $("#link").val().trim()==""){
top.$.jBox.tip('请填写正文','warning');
}else{
loading('正在提交,请稍等...');
form.submit();
}
},
errorContainer: "#messageBox",
errorPlacement: function(error, element) {
Expand All @@ -44,7 +48,10 @@
<label class="control-label">归属栏目:</label>
<div class="controls">
<tags:treeselect id="category" name="category.id" value="${article.category.id}" labelName="category.name" labelValue="${article.category.name}"
title="栏目" url="/cms/category/treeData" module="article" selectScopeModule="true" notAllowSelectRoot="false" notAllowSelectParent="true" cssClass="required"/>
title="栏目" url="/cms/category/treeData" module="article" selectScopeModule="true" notAllowSelectRoot="false" notAllowSelectParent="true" cssClass="required"/>&nbsp;
<span>
<input id="url" type="checkbox" onclick="if(this.checked){$('#linkBody').show()}else{$('#linkBody').hide()}$('#link').val()"><label for="url">外部链接</label>
</span>
</div>
</div>
<div class="control-group">
Expand All @@ -58,6 +65,13 @@
</form:select>
</div>
</div>
<div id="linkBody" class="control-group" style="display:none">
<label class="control-label">外部链接:</label>
<div class="controls">
<form:input path="link" htmlEscape="false" maxlength="200" class="input-xlarge"/>
<span class="help-inline">绝对或相对地址。</span>
</div>
</div>
<div class="control-group">
<label class="control-label">关键字:</label>
<div class="controls">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,25 +13,25 @@
<c:set var="article" value="${fnc:getArticle(2)}"/>
<h1>${fns:abbr(article.title,28)}</h1><p></p>
<p>${fns:abbr(fns:replaceHtml(article.articleData.content),260)}</p>
<p><a href="${ctx}/view-${article.category.id}-${article.id}${urlSuffix}" class="btn btn-primary btn-large">&nbsp;&nbsp;&nbsp;查看详情 &raquo;&nbsp;&nbsp;&nbsp;</a></p>
<p><a href="${article.url}" class="btn btn-primary btn-large">&nbsp;&nbsp;&nbsp;查看详情 &raquo;&nbsp;&nbsp;&nbsp;</a></p>
</div>
<div class="row">
<div class="span4">
<h4><small><a href="${ctx}/list-2${urlSuffix}" class="pull-right">更多&gt;&gt;</a></small>组织机构</h4>
<ul><c:forEach items="${fnc:getArticleList(site.id, 2, 8, '')}" var="article">
<li><span class="pull-right"><fmt:formatDate value="${article.updateDate}" pattern="yyyy.MM.dd"/></span><a href="${ctx}/view-${article.category.id}-${article.id}${urlSuffix}" style="color:${article.color}">${fns:abbr(article.title,28)}</a></li>
<li><span class="pull-right"><fmt:formatDate value="${article.updateDate}" pattern="yyyy.MM.dd"/></span><a href="${article.url}" style="color:${article.color}">${fns:abbr(article.title,28)}</a></li>
</c:forEach></ul>
</div>
<div class="span4">
<h4> <small><a href="${ctx}/list-6${urlSuffix}" class="pull-right">更多&gt;&gt;</a></small>质量监督</h4>
<ul><c:forEach items="${fnc:getArticleList(site.id, 6, 8, '')}" var="article">
<li><span class="pull-right"><fmt:formatDate value="${article.updateDate}" pattern="yyyy.MM.dd"/></span><a href="${ctx}/view-${article.category.id}-${article.id}${urlSuffix}" style="color:${article.color}">${fns:abbr(article.title,28)}</a></li>
<li><span class="pull-right"><fmt:formatDate value="${article.updateDate}" pattern="yyyy.MM.dd"/></span><a href="${article.url}" style="color:${article.color}">${fns:abbr(article.title,28)}</a></li>
</c:forEach></ul>
</div>
<div class="span4">
<h4><small><a href="${ctx}/list-10${urlSuffix}" class="pull-right">更多&gt;&gt;</a></small>政策法规</h4>
<ul><c:forEach items="${fnc:getArticleList(site.id, 10, 8, '')}" var="article">
<li><span class="pull-right"><fmt:formatDate value="${article.updateDate}" pattern="yyyy.MM.dd"/></span><a href="${ctx}/view-${article.category.id}-${article.id}${urlSuffix}" style="color:${article.color}">${fns:abbr(article.title,28)}</a></li>
<li><span class="pull-right"><fmt:formatDate value="${article.updateDate}" pattern="yyyy.MM.dd"/></span><a href="${article.url}" style="color:${article.color}">${fns:abbr(article.title,28)}</a></li>
</c:forEach></ul>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
<h4>${category.name}</h4>
<c:if test="${category.module eq 'article'}">
<ul><c:forEach items="${page.list}" var="article">
<li><span class="pull-right"><fmt:formatDate value="${article.updateDate}" pattern="yyyy.MM.dd"/></span><a href="${ctx}/view-${article.category.id}-${article.id}${urlSuffix}" style="color:${article.color}">${fns:abbr(article.title,96)}</a></li>
<li><span class="pull-right"><fmt:formatDate value="${article.updateDate}" pattern="yyyy.MM.dd"/></span><a href="${article.url}" style="color:${article.color}">${fns:abbr(article.title,96)}</a></li>
</c:forEach></ul>
<div class="pagination">${page}</div>
<script type="text/javascript">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,16 +23,8 @@
<ul id="main_nav" class="nav nav-pills">
<li class="${isIndex?'active':''}"><a href="${ctx}/index-1${fns:getUrlSuffix()}"><span>${site.id eq 1?'首  页':'返回主站'}</span></a></li>
<c:forEach items="${fnc:getMainNavList(site.id)}" var="category" varStatus="status"><c:if test="${status.index lt 6}">
<c:choose>
<c:when test="${not empty category.href}">
<c:choose>
<c:when test="${fn:indexOf(category.href, '://') eq -1}"><c:set var="url" value="${ctx}${category.href}"/></c:when>
<c:otherwise><c:set var="url" value="${category.href}"/></c:otherwise>
</c:choose>
</c:when>
<c:otherwise><c:set var="url" value="${ctx}/list-${category.id}${fns:getUrlSuffix()}"/></c:otherwise>
</c:choose><c:set var="menuCategoryId" value=",${category.id},"/>
<li class="${requestScope.category.id eq category.id||fn:indexOf(requestScope.category.parentIds,menuCategoryId) ge 1?'active':''}"><a href="${url}" target="${category.target}"><span>${category.name}</span></a></li>
<c:set var="menuCategoryId" value=",${category.id},"/>
<li class="${requestScope.category.id eq category.id||fn:indexOf(requestScope.category.parentIds,menuCategoryId) ge 1?'active':''}"><a href="${category.url}" target="${category.target}"><span>${category.name}</span></a></li>
</c:if></c:forEach>
<li id="siteSwitch" class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#" title="站点"><i class="icon-retweet"></i></a>
Expand Down

0 comments on commit 808a4e6

Please sign in to comment.