using System;
using System.Collections;
using System.Linq;
using System.Web.UI.WebControls;
using Telerik.Cms.Web.UI;
using Telerik.Libraries.WebControls.Admin;
using WorldVision.Sitefinity.Data.Data;
using WorldVision.Sitefinity.Data.Data.Linq;
namespace WorldVision.Sitefinity.Modules.Extensions.Libraries
{
public class WvaLibrariesList : LibraryList<LibrariesView>
{
public TextBox SearchTerm
{
get
{
return Page.FindControlRecursive<TextBox>("searchTerm");
}
}
public DropDownList SearchField
{
get
{
return Page.FindControlRecursive<DropDownList>("searchField");
}
}
public Button Search
{
get
{
return Page.FindControlRecursive<Button>("search");
}
}
protected override void InitializeControls(System.Web.UI.Control viewContainer)
{
Search.Click += search_Click;
var objectDataSource = Page.FindControlRecursive<ObjectDataSource>("LibrariesDataSource");
//objectDataSource.TypeName = typeof(LibraryManagerExtension).FullName;
objectDataSource.SelectMethod = "GetAllLibraries";
objectDataSource.SelectCountMethod = "GetFilteredTotal";
objectDataSource.MaximumRowsParameterName = "max";
objectDataSource.StartRowIndexParameterName = "from";
objectDataSource.SortParameterName = "sortExp";
objectDataSource.EnablePaging = true;
//objectDataSource.ObjectCreating += objectDataSource_ObjectCreating;
objectDataSource.Selecting += objectDataSource_Selecting;
objectDataSource.Selected += objectDataSource_Selected;
objectDataSource.SelectParameters.Clear();
objectDataSource.SelectParameters.Add("fieldName", SearchField.SelectedValue);
objectDataSource.SelectParameters.Add("fieldValue", SearchTerm.Text);
base.InitializeControls(viewContainer);
}
private void objectDataSource_Selected
(
object sender,
ObjectDataSourceStatusEventArgs e)
{
if (!(e.ReturnValue is int)) return;
var count = Convert.ToDouble(e.ReturnValue);
CreatePaging(count);
}
public Repeater LibrariesRepeater
{
get
{
return Page.FindControlRecursive<Repeater>("librariesRepeater");
}
}
public GridView LibrariesGrid { get { return Page.FindControlRecursive<GridView>("librariesGrid"); } }
public Pager TopPager { get { return Page.FindControlRecursive<Pager>("TopPager"); } }
public Pager BottomPager { get { return Page.FindControlRecursive<Pager>("BottomPager"); } }
protected override object SaveViewState()
{
ViewState.Add("SearchField", SearchField.SelectedValue);
ViewState.Add("SearchTerm", SearchTerm.Text);
return base.SaveViewState();
}
protected override void LoadViewState(object savedState)
{
base.LoadViewState(savedState);
SearchField.SelectedValue = Convert.ToString(ViewState["SearchField"] ?? SearchField.Items[0].Value);
SearchTerm.Text = Convert.ToString(ViewState["SearchTerm"] ?? SearchTerm.Text);
}
protected void Page_Load
(
object sender,
EventArgs e)
{
var selector = ContentSelectorFactory.Create(ContentType.Library);
var items = selector.GetSearchableMetaKeys()
.Select(info => new ListItem(info.Caption, info.Key))
.ToArray();
SearchField.Items.Clear();
SearchField.Items.AddRange(items);
Page.FindControlRecursive<Pager>("pager1").SelectedPageChanged += pager_SelectedPageChanged;
Page.FindControlRecursive<Pager>("pager2").SelectedPageChanged += pager_SelectedPageChanged;
TopPager.SelectedPageChanged += pager_SelectedPageChanged;
BottomPager.SelectedPageChanged += pager_SelectedPageChanged;
}
protected void search_Click
(
object sender,
EventArgs e)
{
SetCurrentPage(1);
DisplaySearchResults();
}
private void CreatePaging
(
double count)
{
ConfigurePager(TopPager, CurrentPage, count);
ConfigurePager(BottomPager, CurrentPage, count);
}
protected int CurrentPage { get; set; }
private static void ConfigurePager
(
Pager pager,
int currentPage,
double count)
{
pager.SelectedPage = currentPage;
pager.PageCount = (int)Math.Ceiling(count / 50);
pager.Visible = true;
}
private void pager_SelectedPageChanged
(
object sender,
EventArgs e)
{
var currentPage = ((Pager)sender).SelectedPage;
SetCurrentPage(currentPage);
DisplaySearchResults();
}
private void SetCurrentPage(int currentPage)
{
CurrentPage = currentPage;
}
private void objectDataSource_Selecting
(
object sender,
ObjectDataSourceSelectingEventArgs e)
{
e.InputParameters["fieldName"] = SearchField.SelectedValue;
e.InputParameters["fieldValue"] = SearchTerm.Text;
e.Arguments.RetrieveTotalRowCount = true;
}
private void DisplaySearchResults()
{
if (LibrariesRepeater != null)
{
LibrariesRepeater.DataSource = GetFilteredDataSource();
LibrariesRepeater.DataSourceID = null;
LibrariesRepeater.DataBind();
}
if (LibrariesGrid == null) return;
LibrariesGrid.DataSourceID = null;
LibrariesGrid.DataSource = GetFilteredDataSource();
LibrariesGrid.DataBind();
}
private IList GetFilteredDataSource()
{
var pager1 = Page.FindControlRecursive<Pager>("pager1");
var pager2 = Page.FindControlRecursive<Pager>("pager2");
pager1.Visible = pager2.Visible = false;
return new LibraryManagerExtension().GetAllLibraries(SearchField.SelectedValue, SearchTerm.Text.Trim(), "asc", pager1.PageCount, pager1.SelectedPage);
}
}
}
In the Telerik.Sitefinity.Configuration.ControlsConfig.xml I've modified the following
but when I go to the Libraries Module page the custom class isn't used. The page loads fine but it doesn't use my created class.