📄 skin-reader.ascx
字号:
<%@ Control Language="c#" %>
<%@ Register TagPrefix="CS" Namespace="CommunityServer.Controls" Assembly="CommunityServer.Controls" %>
<%@ Register TagPrefix="CSR" Namespace="CommunityServer.Reader.Controls" Assembly="CommunityServer.Reader" %>
<%@ Register TagPrefix="CA" Namespace="ComponentArt.Web.UI" Assembly="ComponentArt.Web.UI" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import NameSpace="CommunityServer.Reader.Components" %>
<%@ Import NameSpace="CommunityServer.Components" %>
<script runat="server" language="C#">
public string GetFeedId(Object item)
{
FeedPost post = (FeedPost) item;
return post.FeedId.ToString();
}
public string GetTitle(Object item)
{
FeedPost post = (FeedPost) item;
return post.Title;
}
public string GetPostId(Object item)
{
FeedPost post = (FeedPost) item;
return post.FeedPostId.ToString();
}
public string GetItemClass(Object item, string itemType)
{
FeedPost post = (FeedPost) item;
bool hasRead = post.HasRead;
string itemClass = (itemType == "alt" ? "Alternate" : "") + "PostListingItem" + (hasRead == false ? "Unread" : "");
return itemClass;
}
public string GetPostBody(object item)
{
FeedPost post = (FeedPost) item;
int length = 300;
string description = post.Description;
if (Formatter.RemoveHtml(description, 0).Length > length)
description = Formatter.RemoveHtml(description, 0).Substring(0, length) + "... [<a href=\"" + post.Link + "\" target=\"_blank\">read more</a>]";
else
description = Formatter.RemoveHtml(description, 0);
return description;
}
</script>
<script language="javascript">
function slResizeFolderListingPane(domElementId, newPaneHeight, newPaneWidth)
{
var listing = document.getElementById('FeedReaderFolderListing');
var header = document.getElementById('FeedReaderFolderListingHeader');
if (listing && header)
{
try
{
listing.style.height = (newPaneHeight - parseInt(header.offsetHeight)) + 'px';
<%=tvFolderList.ClientID%>.Render();
}
catch (err)
{
}
}
}
function slResizePostListingPane(domElementId, newPaneHeight, newPaneWidth)
{
var listing = document.getElementById('FeedReaderPostListing');
var header = document.getElementById('FeedReaderPostListingHeader');
if (listing && header)
{
try
{
listing.style.height = (newPaneHeight - parseInt(header.offsetHeight)) + 'px';
}
catch (err)
{
}
}
}
var postDisplayPaneHeight = 300;
var postDisplayPaneWidth = 200;
function slResizePostDisplayPane(domElementId, newPaneHeight, newPaneWidth)
{
postDisplayPaneHeight = newPaneHeight;
postDisplayPaneWidth = newPaneWidth;
slResizePostDisplayContents();
}
function slResizePostDisplayContents()
{
var container = document.getElementById('FeedReaderPostDisplayContainer');
var body = document.getElementById('FeedReaderPostDisplayBody');
var header = document.getElementById('FeedReaderPostDisplayHeader');
if (container && body)
{
try
{
container.style.height = (postDisplayPaneHeight - 18) + 'px';
container.style.width = (postDisplayPaneWidth - 18) + 'px';
if (header)
{
header.style.width = (postDisplayPaneWidth - 36) + 'px';
body.style.width = (postDisplayPaneWidth - 36) + 'px';
body.style.height = (postDisplayPaneHeight - parseInt(header.offsetHeight) - 56) + 'px';
}
else
{
body.style.height = (postDisplayPaneHeight - 36) + 'px';
body.style.width = (postDisplayPaneWidth - 36) + 'px';
}
}
catch (err)
{
}
}
}
function classSwap(divObject, unreadClassName, readClassName)
{
if (divObject.className != 'PostListingItemSelected')
{
if (divObject.className.indexOf('Unread') > 0)
divObject.className = unreadClassName;
else
divObject.className = readClassName;
}
}
function highlightRow(divObject)
{
classSwap(divObject, 'PostListingItemHoverUnread', 'PostListingItemHover');
}
function unhighlightRow(divObject)
{
classSwap(divObject, 'PostListingItemUnread', 'PostListingItem');
}
function highlightAltRow(divObject)
{
classSwap(divObject, 'AlternatePostListingItemHoverUnread', 'AlternatePostListingItemHover');
}
function unhighlightAltRow(divObject)
{
classSwap(divObject, 'AlternatePostListingItemUnread', 'AlternatePostListingItem');
}
var prevSelectedPostListDiv = null;
var prevSelectedPostListDivType = null;
function selectRow(divObject, feedPostId)
{
if (divObject.className.indexOf('Selected') < 0)
{
var markRead = divObject.className.indexOf('Unread') > 0;
if (prevSelectedPostListDiv != null)
prevSelectedPostListDiv.className = (prevSelectedPostListDivType == 'alt' ? 'AlternatePostListingItem' : 'PostListingItem');
prevSelectedPostListDiv = divObject;
prevSelectedPostListDivType = (divObject.className.indexOf('Alternate') >= 0 ? 'alt' : 'item');
divObject.className = 'PostListingItemSelected';
<%=this.Parent.ClientID%>.SelectPost(feedPostId, markRead);
}
}
</script>
<CA:Splitter runat="server" ID="Splitter1" FillHeight="true" HeightAdjustment="0" FillWidth="true" WidthAdjustment="78">
<Layouts>
<CA:SplitterLayout>
<Panes
SplitterBarCollapseImageUrl="../themes/default/images/readerimages/splitter_col.gif"
SplitterBarExpandImageUrl="../themes/default/images/readerimages/splitter_exp.gif"
SplitterBarCollapseImageWidth="6"
SplitterBarCollapseImageHeight="116"
SplitterBarCollapsedCssClass="SplitterBarCollapsed"
SplitterBarCssClass="SplitterBar"
SplitterBarActiveCssClass="ActiveSplitterBar"
SplitterBarWidth="5"
Orientation="Horizontal">
<CA:SplitterPane
PaneContentId="TreeViewContent"
ClientSideOnResize="slResizeFolderListingPane"
Width="220"
MinWidth="100"
CssClass="SplitterPane" />
<CA:SplitterPane
PaneContentId="GridContent"
ClientSideOnResize="slResizePostListingPane"
Width="250"
MinWidth="100"
CssClass="SplitterPane" />
<CA:SplitterPane
PaneContentId="DetailsContent"
ClientSideOnResize="slResizePostDisplayPane"
CssClass="SplitterPane" />
</Panes>
</CA:SplitterLayout>
</Layouts>
<Content>
<CA:SplitterPaneContent id="TreeViewContent">
<div class="FolderListHeading" id="FeedReaderFolderListingHeader"><CSR:ResourceControl ResourceName="reader_folder_list_heading" runat="server" ID="Resourcecontrol1" NAME="Resourcecontrol1"/></div>
<div class="FolderListingContainer" id="FeedReaderFolderListing">
<!-- Main tree view listing -->
<CA:TreeView id="tvFolderList"
AutoPostBackOnSelect="False"
NodeEditingEnabled="True"
DragAndDropEnabled="True"
KeyboardEnabled="True"
ExpandNodeOnSelect="True"
CollapseNodeOnSelect="False"
CssClass="TreeView"
NodeCssClass="TreeNode"
SelectedNodeCssClass="SelectedTreeNode"
HoverNodeCssClass="HoverTreeNode"
LineImageWidth="19"
LineImageHeight="20"
DefaultImageWidth="16"
DefaultImageHeight="16"
NodeLabelPadding="3"
ImagesBaseUrl="../themes/default/images/readerimages/"
ParentNodeImageUrl="images/folder.gif"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -