📄 linktag.java
字号:
/*
* Created on 2007-2-13
* Last modified on 2007-2-26
* Powered by YeQiangWei.com
*/
package com.yeqiangwei.club.view.tag;
import java.io.IOException;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.TagSupport;
import org.apache.log4j.Logger;
import com.yeqiangwei.util.ParamUtils;
import com.yeqiangwei.util.StringHelper;
import com.yeqiangwei.util.Validator;
import com.yeqiangwei.club.service.ServiceLocator;
import com.yeqiangwei.club.service.ServiceWrapper;
import com.yeqiangwei.club.service.user.OnlineService;
import com.yeqiangwei.club.view.model.ForumView;
import com.yeqiangwei.club.view.model.GroupView;
import com.yeqiangwei.club.view.model.ReplyView;
import com.yeqiangwei.club.view.model.TopicView;
import com.yeqiangwei.club.view.model.UserView;
import com.yeqiangwei.club.view.util.ViewCoder;
import com.yeqiangwei.club.view.util.UrlUtils;
import com.yeqiangwei.club.view.util.UserSetUtils;
import com.yeqiangwei.html.OutPrint;
public class LinkTag extends TagSupport{
/**
*
*/
private static final long serialVersionUID = 1L;
private static final Logger logger = Logger.getLogger(LinkTag.class);
private int idIs;
private String type;
private String url;
private String rel;
private String value;
private long lvalue;
private String param;
private String property;
private Object object;
private TopicView topic;
private ReplyView reply;
private UserView user;
private ForumView forum;
private HttpServletRequest request;
private boolean isDeleted = false;
private boolean escapeUBB = false;
public void setEscapeUBB(boolean escapeUBB) {
this.escapeUBB = escapeUBB;
}
public void setForum(ForumView forum) {
this.forum = forum;
}
public void setUser(UserView user) {
this.user = user;
}
public void setLvalue(long lvalue) {
this.lvalue = lvalue;
}
public void setRequest(HttpServletRequest request) {
this.request = request;
}
public void setReply(ReplyView reply) {
this.reply = reply;
}
public void setTopic(TopicView topic) {
this.topic = topic;
}
public void setIdIs(int idIs) {
this.idIs = idIs;
}
public void setParam(String param) {
this.param = param;
}
public void setValue(String value) {
this.value = value;
}
public void setType(String type) {
this.type = type;
}
public void setProperty(String property) {
this.property = property;
}
public void setRel(String rel) {
this.rel = rel;
}
public void setUrl(String url) {
this.url = url;
}
public void setObject(Object object) {
this.object = object;
}
public void initialize(){
if(!Validator.isEmpty(object)){
if(object instanceof TopicView){
topic = (TopicView) object;
value = topic.getTitle();
url = UrlUtils.getUrl(UrlUtils.TOPIC,topic,request);
isDeleted = topic.getIsDeleted();
}
else if(object instanceof ReplyView){
reply = (ReplyView) object;
value = reply.getTitle();
url = UrlUtils.getUrl(UrlUtils.REPLY,reply,request);
isDeleted = reply.getIsDeleted();
}
}
}
public int doEndTag() throws JspTagException{
StringBuffer sb = new StringBuffer();
if(type.equals("userName")){
this.initialize();
if(!Validator.isEmpty(user)){
sb.append(ViewCoder.userMenu(request, user, ""));
}else if(!Validator.isEmpty(topic)){
sb.append(topic.getUserName());
}else if(!Validator.isEmpty(reply)){
sb.append(reply.getUserName());
}
}
if(type.equals("userNameLink")){
sb.append(ViewCoder.userUrl(idIs,value));
}
else if(type.equals("photo")){
sb.append(ViewCoder.photo(request,user));
}
else if(type.equals("penName")){
if(!Validator.isEmpty(user)){
idIs = user.getUserId();
value = user.getPenName();
sb.append("<a href=\"");
if(!Validator.isEmpty(url)){
sb.append(url);
}
sb.append(UrlUtils.getUrl(UrlUtils.USER,idIs,0,request));
sb.append("\"");
if(!Validator.isEmpty(rel)){
sb.append(" target=\"");
sb.append(rel);
sb.append("\"");
}
sb.append(">");
sb.append(value);
sb.append("</a>");
}else{
sb.append("");
}
}
else if(type.equals("forumName")){
if(Validator.isEmpty(forum)&&idIs>0){
forum = ViewCoder.getForum(idIs);
}
if(!Validator.isEmpty(forum)){
sb.append(UrlUtils.forumUrl(forum,value,url,rel,property,request));
forum = null; //清理缓存
}else{
sb.append("");
}
}
else if(type.equals("basic")){
sb.append("<a");
if(!Validator.isEmpty(url)){
sb.append(" href=\"");
sb.append(url);
if(!Validator.isEmpty(param)){
sb.append("?");
sb.append(param);
}
sb.append("\" ");
}
if(!Validator.isEmpty(rel)){
sb.append(" rel=\"");
sb.append(rel);
sb.append("\"");
}
if(!Validator.isEmpty(property)){
sb.append(property);
}
sb.append(">");
sb.append(value);
sb.append("</a>");
}
else if(type.equals("groupName")){
GroupView gv = null ;
if(object instanceof UserView){
UserView v = (UserView) object;
gv = v.getGroupView();
}else if(object instanceof GroupView){
gv = (GroupView) object;
}
if(!Validator.isEmpty(gv)){
sb.append(gv.getGroupName());
}
}
else if(type.equals("title")){
this.initialize();
if(isDeleted){
sb.append("<font class=\"del\">"+StringHelper.htmlEncoder(value)+"</font>");
}else{
sb.append("<a href=\"");
sb.append(url);
sb.append("\"");
if(!Validator.isEmpty(rel)){
sb.append(" target=\"");
sb.append(rel);
sb.append("\"");
}
if(!Validator.isEmpty(property)){
sb.append(" title=\"");
sb.append(property);
sb.append("\"");
}
sb.append(">");
if(this.escapeUBB){
sb.append(value);
}else{
sb.append(StringHelper.htmlEncoder(value));
}
sb.append("</a>");
}
}
else if(type.equals("datetime")){
sb.append(OutPrint.isDateHtml(lvalue));
}
else if(type.equals("topicIcon")){
sb.append(ViewCoder.topicIcon(request,topic));
}
else if(type.equals("topicMenu")){
this.initialize();
if(!Validator.isEmpty(topic)){
value = ViewCoder.topicMenu(request,topic,idIs);
}else if(!Validator.isEmpty(reply)){
value = ViewCoder.topicMenu(request,reply,idIs);
}
sb.append(value);
}
else if(type.equals("tree")){
ReplyView v = (ReplyView)object;
sb.append(ViewCoder.treeHtml(v));
}
else if(type.equals("replys")){
if(object instanceof TopicView){
TopicView v = (TopicView)object;
if(!Validator.isEmpty(v)){
if(v.getReplys()>0){
sb.append(v.getReplys());
}else{
sb.append("<a href=\"post.jsp?forumId=");
sb.append(v.getForumId());
sb.append("&topicId=");
sb.append(v.getTopicId());
sb.append("&act=addreply\">沙发</a>");
}
}else{
sb.append("0");
}
}else{
sb.append("0");
}
}
else if(type.equals("replyList")){
List<ReplyView>list = topic.getReplyList(request);
String str = ViewCoder.findReplys(request,list,null);
if(!Validator.isEmpty(str)){
sb.append("<div class=\"tree left1\">");
sb.append(str);
sb.append("</div>");
}else{
sb.append("");
}
}
else if(type.equals("storey")){
sb.append(ViewCoder.getStorey(reply.getStorey()));
if(!Validator.isEmpty(topic)&&!Validator.isEmpty(reply)){
String st = sb.toString();
if(reply.getUserId()==0&&(reply.getUserIp().equals(topic.getUserIp()))){
sb.delete(0,sb.length());
sb.append("楼主 占领 ");
sb.append(st);
}
else if(reply.getUserId()==topic.getUserId()){
sb.delete(0,sb.length());
sb.append("楼主 占领 ");
sb.append(st);
}
}
}
else if(type.equals("forumStyle")){
sb.append(ViewCoder.styleMenu(request,UserSetUtils.FORUM_STYLE));
}
else if(type.equals("threadStyle")){
sb.append(ViewCoder.styleMenu(request,UserSetUtils.THREAD_STYLE));
}
else if(type.equals("forumLabel")){
sb.append(ViewCoder.forumLabel(request,forum));
}
else if(type.equals("favoriteForum")){
sb.append(ViewCoder.favoriteForum(request,forum));
}
else if(type.equals("online")){
if(this.getOnlineService().online(user)){
sb.append("<font class=\"red\">在线</font>");
}else{
sb.append("<font class=\"gray\">离线</font>");
}
}
else if(type.equals("parameter")){
sb.append(ParamUtils.getStringParameter(request,param,value));
}
else if(type.equals("nextOrPreviousUrl")){
sb.append("topic.do?forumId=");
sb.append(ParamUtils.getStringParameter(request,"forumId","0"));
sb.append("&topicId=");
sb.append(ParamUtils.getStringParameter(request,"topicId","0"));
sb.append("&act=findNextOrPrevious&go=");
sb.append(param);
}
else if(type.equals("findNextOrPrevious")){
sb.append("<a href=\"topic.do?forumId=");
sb.append(ParamUtils.getStringParameter(request,"forumId","0"));
sb.append("&topicId=");
sb.append(ParamUtils.getStringParameter(request,"topicId","0"));
sb.append("&act=findNextOrPrevious&go=");
sb.append(param);
sb.append("\">");
sb.append(value);
sb.append("</a>");
}
outWrite(sb);
sb.delete(0, sb.length());
object = null;
topic = null;
reply = null;
user = null;
return EVAL_PAGE;
}
public void outWrite(String s){
try {
pageContext.getOut().write(s);
} catch (IOException e) {
logger.error(e.toString());
}
}
public void outWrite(StringBuffer s){
try {
pageContext.getOut().write(s.toString());
} catch (IOException e) {
logger.error(e.toString());
}
}
private OnlineService getOnlineService(){
return ServiceWrapper.<OnlineService>getSingletonInstance(ServiceLocator.ONLINE);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -