Example #1
0
 void HeadBarControl1_GetInboxUnreadCount(object sender,
     GetInboxUnreadCountEventArgs e)
 {
     if (sessioninfo == null)
         return;
     int nUntouched = sessioninfo.Channel.GetUntouchedMessageCount(
         BoxesInfo.INBOX);
     /*
     if (nUntouched == -1)
     {
         return -1;
     }*/
     e.UnreadCount = nUntouched;
 }
Example #2
0
        void CreateColumns()
        {
            // 获得配置参数
            OpacApplication app = (OpacApplication)this.Page.Application["app"];
            /*
             * 
	<titleBarControl>
		<leftAnchor lang='zh'>
			<a href="http://dp2003.com">图书馆主页</a>
		</leftAnchor>
		<leftAnchor lang='en'>
			<a href="http://dp2003.com">Library Homepage</a>
		</leftAnchor>        ...
             */
            string strLeftHtml = "";
            // XmlNode nodeLeftAnchor = app.WebUiDom.DocumentElement.SelectSingleNode("titleBarControl/leftAnchor");
            XmlNode parent = app.WebUiDom.DocumentElement.SelectSingleNode("titleBarControl");
            if (parent != null)
            {
                // 从一个元素的下级的多个<strElementName>元素中, 提取语言符合的XmlNode
                // parameters:
                //      bReturnFirstNode    如果找不到相关语言的,是否返回第一个<strElementName>
                XmlNode nodeLeftAnchor = DomUtil.GetLangedNode(
                    this.Lang,
                    parent,
                    "leftAnchor");
                if (nodeLeftAnchor != null)
                {
                    strLeftHtml = nodeLeftAnchor.InnerXml;
                }
            }

            // 左边第一个
            AutoIndentLiteral literal = new AutoIndentLiteral();
            literal.Text = "<%normal%><td class='left'>"
                + strLeftHtml
                + "</td>";
            this.Controls.Add(literal);

            // bool bPublic = IsPublic();
            LoginState loginstate = GlobalUtil.GetLoginState(this.Page);

            // if (this.CurrentColumn != TitleColumn.None)
            {

                string strClass = "normal";

                HyperLink hyperlink = null;

                if (loginstate == LoginState.Librarian
                    && this.ReaderBarcode != "")
                {

                    // 其余栏目

                    // 读者的综合信息
                    if (this.CurrentColumn == TitleColumn.ReaderInfo)
                        strClass = "active";
                    else
                        strClass = "normal";
                    literal = new AutoIndentLiteral();
                    literal.Text = "<%normal%><td class='" + strClass + "'>";
                    this.Controls.Add(literal);

                    hyperlink = new HyperLink();
                    hyperlink.ID = "ReaderInfo";
                    hyperlink.Text = this.GetString("读者")
                        + " " + this.ReaderBarcode;
                    hyperlink.NavigateUrl = "./readerinfo.aspx?barcode=" + this.ReaderBarcode;
                    this.Controls.Add(hyperlink);

                    literal = new AutoIndentLiteral();
                    literal.Text = "</td>";
                    this.Controls.Add(literal);

                }

                if (loginstate == LoginState.Reader)
                {

                    // 其余栏目

                    // 借阅信息
                    if (this.CurrentColumn == TitleColumn.BorrowInfo)
                        strClass = "active";
                    else
                        strClass = "normal";
                    literal = new AutoIndentLiteral();
                    literal.Text = "<%normal%><td class='" + strClass + "'>";
                    this.Controls.Add(literal);

                    hyperlink = new HyperLink();
                    hyperlink.ID = "BorrowInfo";
                    hyperlink.Text = this.GetString("借阅信息");
                    hyperlink.NavigateUrl = "./borrowinfo.aspx";
                    this.Controls.Add(hyperlink);

                    literal = new AutoIndentLiteral();
                    literal.Text = "</td>";
                    this.Controls.Add(literal);

                }

                if (loginstate == LoginState.Reader)
                {

                    // 预约
                    if (this.CurrentColumn == TitleColumn.ReservationInfo)
                        strClass = "active";
                    else
                        strClass = "normal";
                    literal = new AutoIndentLiteral();
                    literal.Text = "<%normal%><td class='" + strClass + "'>";
                    this.Controls.Add(literal);

                    hyperlink = new HyperLink();
                    hyperlink.ID = "ReservationInfo";
                    hyperlink.Text = this.GetString("预约");
                    hyperlink.NavigateUrl = "./reservationinfo.aspx";
                    this.Controls.Add(hyperlink);

                    literal = new AutoIndentLiteral();
                    literal.Text = "</td>";
                    this.Controls.Add(literal);

                }
#if NO
                if (loginstate == LoginState.Reader)
                {
                    // 违约
                    if (this.CurrentColumn == TitleColumn.FellBackInfo)
                        strClass = "active";
                    else
                        strClass = "normal";
                    literal = new AutoIndentLiteral();
                    literal.Text = "<%normal%><td class='" + strClass + "'>";
                    this.Controls.Add(literal);

                    hyperlink = new HyperLink();
                    hyperlink.ID = "FellBackInfo";
                    hyperlink.Text = this.GetString("违约_and_交费");   // "违约/交费"
                    hyperlink.NavigateUrl = "./fellbackinfo.aspx";
                    this.Controls.Add(hyperlink);

                    literal = new AutoIndentLiteral();
                    literal.Text = "</td>";
                    this.Controls.Add(literal);

                }
#endif

#if NO
                if (loginstate == LoginState.Reader)
                {
                    // 借阅历史
                    if (this.CurrentColumn == TitleColumn.BorrowHistory)
                        strClass = "active";
                    else
                        strClass = "normal";

                    literal = new AutoIndentLiteral();
                    literal.Text = "<%normal%><td class='" + strClass + "'>";
                    this.Controls.Add(literal);

                    hyperlink = new HyperLink();
                    hyperlink.ID = "BorrowHistory";
                    hyperlink.Text = this.GetString("借阅历史");
                    hyperlink.NavigateUrl = "./borrowhistory.aspx";
                    this.Controls.Add(hyperlink);

                    literal = new AutoIndentLiteral();
                    literal.Text = "</td>";
                    this.Controls.Add(literal);

                }
#endif

                // 检索
                if (this.CurrentColumn == TitleColumn.Search)
                    strClass = "active";
                else
                    strClass = "normal";

                literal = new AutoIndentLiteral();
                literal.Text = "<%normal%><td class='" + strClass + "'>";
                this.Controls.Add(literal);

                hyperlink = new HyperLink();
                hyperlink.ID = "Search";
                hyperlink.Text = this.GetString("检索");
                hyperlink.NavigateUrl = "./searchbiblio.aspx";
                this.Controls.Add(hyperlink);

                literal = new AutoIndentLiteral();
                literal.Text = "</td>";
                this.Controls.Add(literal);

                // 浏览
                string strAspx = this.Page.Server.MapPath("./browse.aspx");
                string strBrowseXml = app.DataDir + "/browse/browse.xml";
                string strSidebarXml = app.DataDir + "/browse/browse_sidebar.xml";

                if (File.Exists(strAspx) == true
                    && File.Exists(strBrowseXml) == true)
                {
                    if (this.CurrentColumn == TitleColumn.Browse)
                        strClass = "active";
                    else
                        strClass = "normal";

                    literal = new AutoIndentLiteral();
                    literal.Text = "<%normal%><td class='" + strClass + "'>";
                    this.Controls.Add(literal);

                    hyperlink = new HyperLink();
                    hyperlink.ID = "browse";
                    hyperlink.Text = this.GetString("浏览");
                    hyperlink.NavigateUrl = "./browse.aspx?datafile=browse.xml";
                    if (File.Exists(strSidebarXml) == true)
                        hyperlink.NavigateUrl += "&sidebar=browse_sidebar.xml";
                    this.Controls.Add(hyperlink);

                    literal = new AutoIndentLiteral();
                    literal.Text = "</td>";
                    this.Controls.Add(literal);
                }

                // 书评
                bool bEnableBookReview = true;
                strAspx = this.Page.Server.MapPath("./column.aspx");
                XmlNode nodeBookReview = app.WebUiDom.DocumentElement.SelectSingleNode("bookReview");
                if (nodeBookReview != null)
                {
                    string strError = "";
                    DomUtil.GetBooleanParam(nodeBookReview,
                        "enable",
                        true,
                        out bEnableBookReview,
                        out strError);
                }

                if (File.Exists(strAspx) == true
                    && bEnableBookReview == true)
                {
                    if (this.CurrentColumn == TitleColumn.BookReview)
                        strClass = "active";
                    else
                        strClass = "normal";

                    literal = new AutoIndentLiteral();
                    literal.Text = "<%normal%><td class='" + strClass + "'>";
                    this.Controls.Add(literal);

                    hyperlink = new HyperLink();
                    hyperlink.ID = "bookReview";
                    hyperlink.Text = this.GetString("书评");
                    hyperlink.NavigateUrl = "./column.aspx";
                    this.Controls.Add(hyperlink);

                    literal = new AutoIndentLiteral();
                    literal.Text = "</td>";
                    this.Controls.Add(literal);
                }

                if (loginstate == LoginState.Librarian
                    || loginstate == LoginState.Reader)
                {

                    // 消息
                    if (this.CurrentColumn == TitleColumn.Message)
                        strClass = "active";
                    else
                        strClass = "normal";

                    // 这里可以做适当cache
                    int nUnreadCount = 0;

#if NO
                    if (this.GetInboxUnreadCount != null)
                    {
                        GetInboxUnreadCountEventArgs e = new GetInboxUnreadCountEventArgs();

                        this.GetInboxUnreadCount(this, e);
                        nUnreadCount = e.UnreadCount;
                    }

                    // 2007/7/7
                    // 如果和曾经记忆的不同
                    if (nUnreadCount != this.UnreadMessageCount)
                    {
                        SessionInfo sessioninfo = (SessionInfo)this.Page.Session["sessioninfo"];
                        // 触发清除读者记录缓存
                        // 这样做的目的是,假如读者接到了通知信件,那可能是读者记录发生了改变(例如预约到书等),这里及时清除缓存,能确保读者读到的信件和预约状态等显示保持同步,防止出现迷惑读者的信息新旧状态不同的情况
                        // 当然,页面上的Refresh命令也能起到同样的作用
                        if (sessioninfo != null)
                            sessioninfo.Clear();

                        // 记忆新值
                        this.UnreadMessageCount = nUnreadCount;
                    }
#endif

                    string strText = this.GetString("消息");

                    if (nUnreadCount != 0)
                        strText += "(" + nUnreadCount.ToString() + ")";


                    literal = new AutoIndentLiteral();
                    literal.Text = "<%normal%><td class='" + strClass + " messagecolumn'>";
                    this.Controls.Add(literal);

                    hyperlink = new HyperLink();
                    hyperlink.ID = "Message";
                    hyperlink.Text = strText;
                    hyperlink.NavigateUrl = "./mymessage.aspx";
                    this.Controls.Add(hyperlink);

                    literal = new AutoIndentLiteral();
                    literal.Text = "</td>";
                    this.Controls.Add(literal);

                }

                if (loginstate == LoginState.Reader)
                {
                    // 我的书架
                    if (this.CurrentColumn == TitleColumn.MyBookShelf)
                        strClass = "active";
                    else
                        strClass = "normal";
                    literal = new AutoIndentLiteral();
                    literal.Text = "<%normal%><td class='" + strClass + "'>";
                    this.Controls.Add(literal);

                    hyperlink = new HyperLink();
                    hyperlink.ID = "MyBookShelf";
                    hyperlink.Text = this.GetString("我的书架");
                    hyperlink.NavigateUrl = "./mybookshelf.aspx";
                    this.Controls.Add(hyperlink);

                    literal = new AutoIndentLiteral();
                    literal.Text = "</td>";
                    this.Controls.Add(literal);
                }

                if (loginstate == LoginState.Reader)
                {

                    // 个人信息
                    if (this.CurrentColumn == TitleColumn.PersonalInfo)
                        strClass = "active";
                    else
                        strClass = "normal";
                    literal = new AutoIndentLiteral();
                    literal.Text = "<%normal%><td class='" + strClass + "'>";
                    this.Controls.Add(literal);

                    hyperlink = new HyperLink();
                    hyperlink.ID = "PersonalInfo";
                    hyperlink.Text = this.GetString("个人信息");
                    hyperlink.NavigateUrl = "./PersonalInfo.aspx";
                    this.Controls.Add(hyperlink);

                    literal = new AutoIndentLiteral();
                    literal.Text = "</td>";
                    this.Controls.Add(literal);

                }

                // 统计信息
                XmlNode nodeStatisColumn = app.WebUiDom.DocumentElement.SelectSingleNode("titleBarControl/statisColumn");
                string strStatisColumnVisible = "";
                if (nodeStatisColumn == null)
                {
                    // 元素缺乏时的缺省值
                    strStatisColumnVisible = "reader,librarian";
                }
                else
                {
                    // 一旦元素具备,就没有缺省值了
                    strStatisColumnVisible = DomUtil.GetAttr(nodeStatisColumn, "visible");
                }

                if (StringUtil.IsInList("all", strStatisColumnVisible) == true
                    || (loginstate == LoginState.Librarian && StringUtil.IsInList("librarian", strStatisColumnVisible) == true)
                    || (loginstate == LoginState.Reader && StringUtil.IsInList("reader", strStatisColumnVisible) == true)
                    || (loginstate == LoginState.Public && StringUtil.IsInList("public", strStatisColumnVisible) == true)
                    || (loginstate == LoginState.NotLogin && StringUtil.IsInList("notlogin", strStatisColumnVisible) == true)
                    )
                {

                    if (this.CurrentColumn == TitleColumn.Statis)
                        strClass = "active";
                    else
                        strClass = "normal";

                    literal = new AutoIndentLiteral();
                    literal.Text = "<%normal%><td class='" + strClass + "'>";
                    this.Controls.Add(literal);

                    hyperlink = new HyperLink();
                    hyperlink.ID = "Statis";
                    hyperlink.Text = this.GetString("统计信息");
                    hyperlink.NavigateUrl = "./statis.aspx";
                    this.Controls.Add(hyperlink);

                    literal = new AutoIndentLiteral();
                    literal.Text = "</td>";
                    this.Controls.Add(literal);
                }

                if (loginstate == LoginState.Librarian
&& String.IsNullOrEmpty(this.ReaderBarcode) == true)
                {

                    // 工作人员的管理功能
                    if (this.CurrentColumn == TitleColumn.Management)
                        strClass = "active";
                    else
                        strClass = "normal";
                    literal = new AutoIndentLiteral();
                    literal.Text = "<%normal%><td class='" + strClass + "'>";
                    this.Controls.Add(literal);

                    hyperlink = new HyperLink();
                    hyperlink.ID = "Management";
                    hyperlink.Text = this.GetString("管理");
                    hyperlink.NavigateUrl = "./management.aspx";
                    this.Controls.Add(hyperlink);

                    literal = new AutoIndentLiteral();
                    literal.Text = "</td>";
                    this.Controls.Add(literal);
                }
            }

            // 右端占据空格的栏目
            literal = new AutoIndentLiteral();
            literal.Text = "<%normal%><td class='right'>";
            this.Controls.Add(literal);

            literal = new AutoIndentLiteral();
            literal.Text = "</td>";
            this.Controls.Add(literal);

        }