using System; using System.Data; using System.Web; using System.Web.UI; using CMS.Controls; using CMS.GlobalHelper; using CMS.PortalControls; using CMS.SettingsProvider; public partial class CMSWebParts_Viewers_Basic_UniPager : CMSAbstractWebPart { #region "Public properties" #region "Pager properties" /// /// Gets or sets the value that indicates whether scroll position should be cleared after post back paging /// public bool ResetScrollPositionOnPostBack { get { return ValidationHelper.GetBoolean(GetValue("ResetScrollPositionOnPostBack"), pagerElem.ResetScrollPositionOnPostBack); } set { SetValue("ResetScrollPositionOnPostBack", value); pagerElem.ResetScrollPositionOnPostBack = value; } } /// /// Gets or sets the ID of web part which should be paged. Use this property only for web parts. /// public string TargetControlName { get { return ValidationHelper.GetString(GetValue("TargetControlName"), pagerElem.FilterTypePageControl); } set { SetValue("TargetControlName", value); pagerElem.FilterTypePageControl = value; } } /// /// Gets or sets the number of records to display on a page. /// public int PageSize { get { return ValidationHelper.GetInteger(GetValue("PageSize"), pagerElem.PageSize); } set { SetValue("PageSize", value); pagerElem.PageSize = value; } } /// /// Gets or sets the number of pages displayed for current page range. /// public int GroupSize { get { return ValidationHelper.GetInteger(GetValue("GroupSize"), pagerElem.GroupSize); } set { SetValue("GroupSize", value); pagerElem.GroupSize = value; } } /// /// Gets or sets the pager mode ('querystring' or 'postback'). /// public string PagingMode { get { return ValidationHelper.GetString(GetValue("PagingMode"), "querystring"); } set { if (value != null) { SetValue("PagingMode", value); switch (value.ToLowerCSafe()) { case "postback": pagerElem.PagerMode = UniPagerMode.PostBack; break; default: pagerElem.PagerMode = UniPagerMode.Querystring; break; } } } } /// /// Gets or sets the querysting parameter. /// public string QueryStringKey { get { return ValidationHelper.GetString(GetValue("QueryStringKey"), pagerElem.QueryStringKey); } set { SetValue("QueryStringKey", value); pagerElem.QueryStringKey = value; } } /// /// Gets or sets the value that indicates whether first and last item template are displayed dynamically based on current view. /// public bool DisplayFirstLastAutomatically { get { return ValidationHelper.GetBoolean(GetValue("DisplayFirstLastAutomatically"), pagerElem.DisplayFirstLastAutomatically); } set { SetValue("DisplayFirstLastAutomatically", value); pagerElem.DisplayFirstLastAutomatically = value; } } /// /// Gets or sets the value that indicates whether first and last item template are displayed dynamically based on current view. /// public bool DisplayPreviousNextAutomatically { get { return ValidationHelper.GetBoolean(GetValue("DisplayPreviousNextAutomatically"), pagerElem.DisplayPreviousNextAutomatically); } set { SetValue("DisplayPreviousNextAutomatically", value); pagerElem.DisplayPreviousNextAutomatically = value; } } /// /// Gets or sets the value that indicates whether pager should be hidden for single page. /// public bool HidePagerForSinglePage { get { return ValidationHelper.GetBoolean(GetValue("HidePagerForSinglePage"), pagerElem.HidePagerForSinglePage); } set { SetValue("HidePagerForSinglePage", value); pagerElem.HidePagerForSinglePage = value; } } #endregion #region "Template properties" /// /// Gets or sets the pages template. /// public string PagesTemplate { get { return ValidationHelper.GetString(GetValue("Pages"), ""); } set { SetValue("Pages", value); } } /// /// Gets or sets the current page template. /// public string CurrentPageTemplate { get { return ValidationHelper.GetString(GetValue("CurrentPage"), ""); } set { SetValue("CurrentPage", value); } } /// /// Gets or sets the separator template. /// public string SeparatorTemplate { get { return ValidationHelper.GetString(GetValue("PageSeparator"), ""); } set { SetValue("PageSeparator", value); } } /// /// Gets or sets the first page template. /// public string FirstPageTemplate { get { return ValidationHelper.GetString(GetValue("FirstPage"), ""); } set { SetValue("FirstPage", value); } } /// /// Gets or sets the last page template. /// public string LastPageTemplate { get { return ValidationHelper.GetString(GetValue("LastPage"), ""); } set { SetValue("LastPage", value); } } /// /// Gets or sets the previous page template. /// public string PreviousPageTemplate { get { return ValidationHelper.GetString(GetValue("PreviousPage"), ""); } set { SetValue("PreviousPage", value); } } /// /// Gets or sets the next page template. /// public string NextPageTemplate { get { return ValidationHelper.GetString(GetValue("NextPage"), ""); } set { SetValue("NextPage", value); } } /// /// Gets or sets the previous group template. /// public string PreviousGroupTemplate { get { return ValidationHelper.GetString(GetValue("PreviousGroup"), ""); } set { SetValue("PreviousGroup", value); } } /// /// Gets or sets the next group template. /// public string NextGroupTemplate { get { return ValidationHelper.GetString(GetValue("NextGroup"), ""); } set { SetValue("NextGroup", value); } } /// /// Gets or sets the layout template. /// public string LayoutTemplate { get { return ValidationHelper.GetString(GetValue("PagerLayout"), ""); } set { SetValue("PagerLayout", value); } } /// /// Gets or sets the direct page template. /// public string DirectPageTemplate { get { return ValidationHelper.GetString(GetValue("DirectPage"), ""); } set { SetValue("DirectPage", value); } } #endregion #endregion #region "Methods" /// /// Content loaded event handler. /// public override void OnContentLoaded() { base.OnContentLoaded(); SetupControl(); } /// /// Initializes the control properties. /// public void SetupControl() { if (StopProcessing) { // Do nothing } else { // If target control is not specified do nothing if (!String.IsNullOrEmpty(TargetControlName)) { #region "Pager properties" // Set pager properties pagerElem.FilterTypePageControl = TargetControlName; pagerElem.PageSize = PageSize; pagerElem.GroupSize = GroupSize; pagerElem.QueryStringKey = QueryStringKey; pagerElem.DisplayFirstLastAutomatically = DisplayFirstLastAutomatically; pagerElem.DisplayPreviousNextAutomatically = DisplayPreviousNextAutomatically; pagerElem.HidePagerForSinglePage = HidePagerForSinglePage; pagerElem.ResetScrollPositionOnPostBack = ResetScrollPositionOnPostBack; // Set pager mode switch (PagingMode.ToLowerCSafe()) { case "postback": pagerElem.PagerMode = UniPagerMode.PostBack; break; default: pagerElem.PagerMode = UniPagerMode.Querystring; break; } #endregion #region "Pager templates" // Pages if (!String.IsNullOrEmpty(PagesTemplate)) { pagerElem.PageNumbersTemplate = CMSDataProperties.LoadTransformation(pagerElem, PagesTemplate, false); } // Current page if (!String.IsNullOrEmpty(CurrentPageTemplate)) { pagerElem.CurrentPageTemplate = CMSDataProperties.LoadTransformation(pagerElem, CurrentPageTemplate, false); } // Separator if (!String.IsNullOrEmpty(SeparatorTemplate)) { pagerElem.PageNumbersSeparatorTemplate = CMSDataProperties.LoadTransformation(pagerElem, SeparatorTemplate, false); } // First page if (!String.IsNullOrEmpty(FirstPageTemplate)) { pagerElem.FirstPageTemplate = CMSDataProperties.LoadTransformation(pagerElem, FirstPageTemplate, false); } // Last page if (!String.IsNullOrEmpty(LastPageTemplate)) { pagerElem.LastPageTemplate = CMSDataProperties.LoadTransformation(pagerElem, LastPageTemplate, false); } // Previous page if (!String.IsNullOrEmpty(PreviousPageTemplate)) { pagerElem.PreviousPageTemplate = CMSDataProperties.LoadTransformation(pagerElem, PreviousPageTemplate, false); } // Next page if (!String.IsNullOrEmpty(NextPageTemplate)) { pagerElem.NextPageTemplate = CMSDataProperties.LoadTransformation(pagerElem, NextPageTemplate, false); } // Previous group if (!String.IsNullOrEmpty(PreviousGroupTemplate)) { pagerElem.PreviousGroupTemplate = CMSDataProperties.LoadTransformation(pagerElem, PreviousGroupTemplate, false); } // Next group if (!String.IsNullOrEmpty(NextGroupTemplate)) { pagerElem.NextGroupTemplate = CMSDataProperties.LoadTransformation(pagerElem, NextGroupTemplate, false); } // Direct page if (!String.IsNullOrEmpty(DirectPageTemplate)) { pagerElem.DirectPageTemplate = CMSDataProperties.LoadTransformation(pagerElem, DirectPageTemplate, false); } // Layout if (!String.IsNullOrEmpty(LayoutTemplate)) { pagerElem.LayoutTemplate = CMSDataProperties.LoadTransformation(pagerElem, LayoutTemplate, false); } #endregion } } } /// /// OnPreRender - check visibility. /// protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); // Add event handler Page.SaveStateComplete += new EventHandler(Page_SaveStateComplete); } /// /// Checks whether current control should be visible. /// private void Page_SaveStateComplete(object sender, EventArgs e) { // Check visibility if ((HidePagerForSinglePage && pagerElem.PageCount < 2) || (pagerElem.DataSourceItemsCount == 0)) { Visible = false; } } /// /// Reload data. /// public override void ReloadData() { SetupControl(); pagerElem.ReloadData(true); base.ReloadData(); } #endregion }