网奇iwms插件之“我浏览过的文章”

最近用网奇iwms系统做网站,考虑到浏览者的方便,做了一个“我浏览过的文章”的插件,演示地址:四川艺考网 http://www.scykw.cn,具体过程如下:

1.在VS中打开网站,指向路径:D:\wwwroot\scykw.cn,此路径下有iwms的系统。

2.新建项目:IWMS_Plugin,新建类TopicInfo,用于浏览历史的类,编写如下代码:

    [Serializable]
    public class TopicInfo
    {
        public TopicInfo()
        {
        }

        private string m_PageURL = "";
        private string m_PageTitle = "";
        public string PageURL
        {
            get { return m_PageURL; }
            set { m_PageURL = value; }
        }
        public string PageTitle
        {
            get { return m_PageTitle; }
            set { m_PageTitle = value; }
        }
    }

3.新建类:TopicInfoList,代码如下:

 [Serializable]
    public class TopicInfoList : System.Collections.ArrayList, System.ICloneable
    {
        public TopicInfoList()
        {

        }

        private Hashtable m_IOInfoHash = new Hashtable();

        public virtual int Add(TopicInfo info)
        {
            if (this.m_IOInfoHash.ContainsKey(info.PageURL))
                return 0;

            this.m_IOInfoHash.Add(info.PageURL, info);
            return base.Add(info);
        }

        public new virtual void Clear()
        {
            this.m_IOInfoHash.Clear();
            base.Clear();
        }
    }

4.新建 类History,用于历史记录有服务:

    public class History
    {
        public History()
        {
        }

        public static void AddHistory(TopicInfo info)
        {
            TopicInfoList oldlist = (TopicInfoList)HttpContext.Current.Session["History"];
            if (HttpContext.Current.Session["History"] == null)
            {
                TopicInfoList list = new TopicInfoList();
                list.Add(info);
                HttpContext.Current.Session["History"] = list;
            }
            else
            {
                if (!oldlist.Contains(info))
                {
                    oldlist.Add(info);
                }
            }
        }

        public static TopicInfoList GetHistory()
        {
            TopicInfoList oldlist = (TopicInfoList)HttpContext.Current.Session["History"];

            if (oldlist != null)
                return oldlist;

            return new TopicInfoList();
        }

        public static int ClearHistory()
        {
            try
            {
                TopicInfoList list = History.GetHistory();
                list.Clear();
                return 1;
            }
            catch
            {
                return 0;
            }
        }
    }

5.在网站项目中新建用户自定义控件:History.ascx,代码如下:

<%@ Control Language="C#" Inherits="IWMS_Plugin.HistoryHelp" %>
<script src="inc/jquery.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
$(function()
{
    AddHistory();
    getHistory();
});

function ClearHistory()
{
    $("#btn_clear").val("正在删除...");
    var callback=function(obj)
    {
        if(obj.value>0)
        {
            $("#HistoryList").html("");
        }else{alert("清除失败");}
        $("#btn_clear").val("清空历史记录");
    };
    
    IWMS_Plugin.HistoryHelp.ClearHistory(callback);
}

function AddHistory()
{
    var callback=function(obj)
    {
        getHistory();
    };
    
    IWMS_Plugin.HistoryHelp.AddHistory(window.location.href,$("title").html(),callback);
}

function getHistory()
{
    var callback=function(obj)
    {
        if(obj.value!=null)
        {
            $("#HistoryList").html(obj.value);
        }else{alert("读取失败");}
    };
    
    IWMS_Plugin.HistoryHelp.getHistory(callback);
}
</script>
<style type="text/css">
#HistoryList,#HistoryList li{margin:0px;padding:0px;list-style:none;}
#HistoryList li a{display:block;padding:2px;border:1px solid #fff;margin:2px;text-decoration:none;}
#HistoryList li a:hover{background:#eeeeee;border:1px solid #ccc;}
</style>
<input type="button" value="清空历史记录" onclick="ClearHistory()" id="btn_clear"/>
<ul id="HistoryList">
</ul>

5. IWMS_Plugin.HistoryHelp类代码如下:

 public class HistoryHelp : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            AjaxPro.Utility.RegisterTypeForAjax(typeof(HistoryHelp), this.Page);
        }

        [AjaxPro.AjaxMethod]
        public static string getHistory()
        {
            StringBuilder sb = new StringBuilder();
            TopicInfoList list = History.GetHistory();
            foreach (TopicInfo info in list)
            {
                sb.Append(String.Format("<li><a href=\"{0}\" title=\"{1}\">{1}</a></li>",
                                    info.PageURL,
                                    info.PageTitle
                    ));
            }

            return sb.ToString();
        }

        [AjaxPro.AjaxMethod]
        public void AddHistory(string url,string title)
        {
            TopicInfo info = new TopicInfo();
            info.PageURL = url;
            info.PageTitle = title;
            History.AddHistory(info);
        }

        [AjaxPro.AjaxMethod]
        public int ClearHistory()
        {
            return History.ClearHistory();
        }
    }

 

大功告成!!系统演示请见:www.scykw.cn

posted @ 2009-06-26 11:06  接云网络  阅读(353)  评论(0编辑  收藏  举报