⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linktag.java

📁 这是一款最新的野蔷薇论坛源码,有需要的朋友可以尽情下载
💻 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 + -