using System; using System.Data; using System.Text; using System.Web.UI.WebControls; using CMS.CMSHelper; using CMS.CMSImportExport; using CMS.Controls; using CMS.GlobalHelper; using CMS.SettingsProvider; using CMS.Synchronization; using CMS.UIControls; public partial class CMSModules_ImportExport_Controls_ExportGridTasks : CMSUserControl, IUniPageable { #region "Variables" protected string codeNameColumnName = ""; protected string displayNameColumnName = ""; protected string taskPreposition = "etchck_"; private SiteExportSettings mSettings = null; protected int pagerForceNumberOfResults = -1; private StringBuilder sbAvailable = new StringBuilder(); #endregion #region "Public properties" /// /// Export settings. /// public SiteExportSettings Settings { get { return mSettings; } set { mSettings = value; } } /// /// Current object type. /// public string ObjectType { get { return ValidationHelper.GetString(ViewState["ObjectType"], CMSObjectHelper.GROUP_OBJECTS); } set { ViewState["ObjectType"] = value; } } /// /// True if site object. /// public bool SiteObject { get { return ValidationHelper.GetBoolean(ViewState["SiteObject"], false); } set { ViewState["SiteObject"] = value; } } /// /// Gets current page size from pager. /// protected int CurrentPageSize { get { return pagerElem.CurrentPageSize; } } /// /// Gets current offset. /// protected int CurrentOffset { get { return CurrentPageSize * (pagerElem.CurrentPage - 1); } } /// /// Pager control. /// public UniGridPager PagerControl { get { return pagerElem; } } #endregion protected void Page_Load(object sender, EventArgs e) { pagerElem.PagedControl = this; if (RequestHelper.IsPostBack()) { if (Settings != null) { // Process the results of the available tasks string[] available = hdnAvailableTasks.Value.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (available != null) { foreach (string item in available) { int taskId = ValidationHelper.GetInteger(item, 0); string name = GetCheckBoxName(taskId); if (Request.Form[name] == null) { // Unchecked Settings.DeselectTask(ObjectType, taskId, SiteObject); } else { // Checked Settings.SelectTask(ObjectType, taskId, SiteObject); } } } } } } protected override void OnPreRender(EventArgs e) { base.OnPreRender(e); // Render the available task IDs hdnAvailableTasks.Value = (sbAvailable != null) ? sbAvailable.ToString() : string.Empty; } /// /// Returns the ID for the checkbox. /// /// Task ID protected string GetCheckBoxId(object taskId) { if (sbAvailable == null) { sbAvailable = new StringBuilder(); } else { sbAvailable.Append(";"); } sbAvailable.Append(taskId); return taskPreposition + taskId; } /// /// Returns the name for the checkbox. /// /// Task ID protected string GetCheckBoxName(object taskId) { return taskPreposition + taskId; } /// /// Bind the data. /// public void Bind() { sbAvailable = null; if (!string.IsNullOrEmpty(ObjectType)) { pnlGrid.Visible = true; // Initialize strings btnAllTasks.Text = GetString("ImportExport.All"); btnNoneTasks.Text = GetString("export.none"); lblTasks.Text = GetString("Export.Tasks"); // Get object info GeneralizedInfo info = CMSObjectHelper.GetReadOnlyObject(ObjectType); if (info != null) { plcGrid.Visible = true; codeNameColumnName = info.CodeNameColumn; displayNameColumnName = info.DisplayNameColumn; // Task fields TemplateField taskCheckBoxField = (TemplateField)gvTasks.Columns[0]; taskCheckBoxField.HeaderText = GetString("General.Export"); TemplateField titleField = (TemplateField)gvTasks.Columns[1]; titleField.HeaderText = GetString("Export.TaskTitle"); BoundField typeField = (BoundField)gvTasks.Columns[2]; typeField.HeaderText = GetString("general.type"); BoundField timeField = (BoundField)gvTasks.Columns[3]; timeField.HeaderText = GetString("Export.TaskTime"); // Load tasks int siteId = (SiteObject ? Settings.SiteId : 0); DataSet ds = ExportTaskInfoProvider.SelectTaskList(siteId, ObjectType, null, "TaskTime DESC", 0, null, CurrentOffset, CurrentPageSize, ref pagerForceNumberOfResults); // Set correct ID for direct page contol pagerElem.DirectPageControlID = ((float)pagerForceNumberOfResults / pagerElem.CurrentPageSize > 20.0f) ? "txtPage" : "drpPage"; // Call page binding event if (OnPageBinding != null) { OnPageBinding(this, null); } if (!DataHelper.DataSourceIsEmpty(ds) && (ValidationHelper.GetBoolean(Settings.GetSettings(ImportExportHelper.SETTINGS_TASKS), true))) { plcTasks.Visible = true; gvTasks.DataSource = ds; gvTasks.DataBind(); } else { plcTasks.Visible = false; } } else { plcGrid.Visible = false; } } else { pnlGrid.Visible = false; } } /// /// Ensure tasks preselection. /// /// Task ID protected string IsTaskChecked(object taskId) { int id = ValidationHelper.GetInteger(taskId, 0); if (Settings.IsTaskSelected(ObjectType, id, SiteObject)) { return " checked=\"checked\" "; } return ""; } protected void btnAll_Click(object sender, EventArgs e) { // Load all selection DateTime originalTS = Settings.TimeStamp; Settings.TimeStamp = DateTimeHelper.ZERO_TIME; Settings.LoadDefaultSelection(ObjectType, SiteObject, ExportTypeEnum.All, false, true); Settings.TimeStamp = originalTS; } protected void btnNone_Click(object sender, EventArgs e) { // Load none selection Settings.LoadDefaultSelection(ObjectType, SiteObject, ExportTypeEnum.None, false, true); } #region "IUniPageable Members" /// /// Pager data item. /// public object PagerDataItem { get { return gvTasks.DataSource; } set { gvTasks.DataSource = value; } } /// /// Pager control. /// public UniPager UniPagerControl { get; set; } public int PagerForceNumberOfResults { get { return pagerForceNumberOfResults; } set { pagerForceNumberOfResults = value; } } /// /// Occurs when the control bind data. /// public event EventHandler OnPageBinding; /// /// Occurs when the pager change the page and current mode is postback => reload data /// public event EventHandler OnPageChanged; /// /// Evokes control databind. /// public virtual void ReBind() { if (OnPageChanged != null) { OnPageChanged(this, null); } } #endregion }