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; }
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); }