| using System; |
| using System.Collections.Generic; |
| using System.Linq; |
| using System.Web; |
| using Telerik.Cms.Web.UI; |
| using Telerik.Web.UI; |
| using System.Collections; |
| using Telerik.Cms.Engine; |
| using Telerik.News; |
| using System.Web.UI.WebControls; |
| using Telerik.News.WebControls.Admin; |
| |
| /// <summary> |
| /// Summary description for GridContentEditor |
| /// </summary> |
| public class GridContentEditor : SimpleControl |
| { |
| public GridContentEditor() |
| { |
| |
| } |
| #region Properties |
| |
| public override string LayoutTemplatePath |
| { |
| get |
| { |
| return "~/CustomControls/GridContentEditorTemplate.ascx"; |
| } |
| } |
| |
| public string ProviderName |
| { |
| get |
| { |
| return Combo.SelectedItem.Text; |
| } |
| } |
|
| #endregion |
|
| #region Methods |
| |
| protected override void InitializeControls(System.Web.UI.Control controlContainer) |
| { |
| base.InitializeControls(controlContainer); |
| this.Combo.DataSource = GCProviders(); |
| this.Combo.AutoPostBack = true; |
| this.Combo.DataBind(); |
| Grid.PreRender += new EventHandler(Grid_PreRender); |
| Grid.UpdateCommand += new GridCommandEventHandler(Grid_UpdateCommand); |
| Grid.DeleteCommand += new GridCommandEventHandler(Grid_DeleteCommand); |
| Grid.NeedDataSource += new GridNeedDataSourceEventHandler(Grid_NeedDataSource); |
| Grid.InsertCommand += new GridCommandEventHandler(Grid_InsertCommand); |
|
| Grid.AllowMultiRowEdit = true; |
| } |
| |
| void Grid_PreRender(object sender, EventArgs e) |
| { |
| foreach (GridColumn column in Grid.Columns) |
| { |
| if (column.UniqueName == "Name") |
| { |
| if (this.ProviderName == WikiProviderName || this.ProviderName == GenericContentProviderName) |
| { |
| (column as GridBoundColumn).DataField = "Name"; |
| break; |
| } |
| |
| (column as GridBoundColumn).DataField = "Title"; |
| } |
| |
| } |
| Grid.Rebind(); |
| } |
| |
| void Grid_InsertCommand(object source, GridCommandEventArgs e) |
| { |
| manager = new ContentManager(ProviderName); |
| GridEditableItem editedItem = e.Item as GridEditableItem; |
| |
| Hashtable newValues = new Hashtable(); |
| e.Item.OwnerTableView.ExtractValuesFromItem(newValues, editedItem); |
| IContent insertContent = manager.CreateContent("text/html"); |
| if (CheckProvider(ProviderName)) |
| { |
| insertContent.SetMetaData("Title", newValues["Title"]); |
| insertContent.Content = newValues["Content"]; |
| manager.SaveContent(insertContent); |
| } |
| else |
| { |
| this.MetaData = "Name"; |
| insertContent.SetMetaData(MetaData, newValues[MetaData]); |
| insertContent.Content = newValues["Content"]; |
| manager.SaveContent(insertContent); |
| } |
| |
| Grid.Rebind(); |
| } |
| |
| void Grid_UpdateCommand(object source, GridCommandEventArgs e) |
| { |
| manager = new ContentManager(ProviderName); |
| GridEditableItem editedItem = e.Item as GridEditableItem; |
| Guid cntId = (Guid)editedItem.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["ID"]; |
| |
| Hashtable newValues = new Hashtable(); |
| e.Item.OwnerTableView.ExtractValuesFromItem(newValues, editedItem); |
| IContent UpdatedContent = manager.GetContent(cntId); |
| if (CheckProvider(ProviderName)) |
| { |
| UpdatedContent.SetMetaData("Title", newValues["Title"]); |
| UpdatedContent.Content = newValues["Content"]; |
| manager.SaveContent(UpdatedContent); |
| } |
| else |
| { |
| this.MetaData = "Name"; |
| UpdatedContent.SetMetaData(MetaData, newValues[MetaData]); |
| UpdatedContent.Content = newValues["Content"]; |
| manager.SaveContent(UpdatedContent); |
| } |
| } |
| |
| |
| void Grid_DeleteCommand(object source, GridCommandEventArgs e) |
| { |
| manager = new ContentManager(ProviderName); |
| Guid deleteITemID = (Guid)e.Item.OwnerTableView.DataKeyValues[e.Item.ItemIndex]["ID"]; |
| IContent newCnt = manager.GetContent(deleteITemID) as IContent; |
| manager.DeleteContent(newCnt.ID); |
| } |
| |
| void Grid_NeedDataSource(object source, GridNeedDataSourceEventArgs e) |
| { |
| Grid.DataSource = GridDataSource(); |
| } |
| |
| public IList GridDataSource() |
| { |
| manager = new ContentManager(ProviderName); |
| IList allItems = manager.GetContent(); |
| return allItems; |
| } |
| |
| public IList GCProviders() |
| { |
| |
| List<string> providers = new List<string>(ContentManager.Providers.Count); |
| foreach (ContentProviderBase provider in ContentManager.Providers.Values) |
| { |
| if (provider !=null) |
| { |
| providers.Add(provider.Name); |
| } |
| |
| } |
| return providers.ToArray(); |
| |
| } |
| |
| private bool CheckProvider(string providerName) |
| { |
| if ((providerName != GenericContentProviderName) && (providerName != WikiProviderName)) |
| { |
| return true; |
| } |
| else |
| { |
| return false; |
| } |
| } |
|
| #endregion |
|
| #region Control references |
| |
| public virtual RadGrid Grid |
| { |
| get |
| { |
| return base.Container.GetControl<RadGrid>("RadGrid1", true); |
| } |
| } |
| |
| |
| public virtual RadComboBox Combo |
| { |
| get |
| { |
| return base.Container.GetControl<RadComboBox>("RadComboBox1", true); |
| } |
| } |
|
| #endregion |
|
|
| #region Private constraints |
| |
| |
| private ContentManager manager; |
| private string GenericContentProviderName = "Generic_Content"; |
| private string WikiProviderName = "Wiki"; |
| private string MetaData; |
|
| #endregion |
| |
| |
| } |
| |