using System;
using System.Web.UI.WebControls;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Web.UI;
using CMS.GlobalHelper;
using CMS.UIControls;
using CMS.WorkflowEngine;
using CMS.ExtendedControls.ActionsConfig;
using CMS.SettingsProvider;
using CMS.CMSHelper;
public partial class CMSModules_Workflows_Workflow_List : CMSWorkflowPage
{
protected void Page_Load(object sender, EventArgs e)
{
Title = "Workflows - Workflow List";
// Set master page elements
InitializeMasterPage();
// Control initialization
UniGridWorkflows.OnAction += UniGridWorkflows_OnAction;
UniGridWorkflows.OnExternalDataBound += UniGridWorkflows_OnExternalDataBound;
UniGridWorkflows.OnBeforeDataReload += UniGridWorkflows_OnBeforeDataReload;
UniGridWorkflows.ZeroRowsText = GetString("general.nodatafound");
UniGridWorkflows.WhereCondition = string.Format("WorkflowType != {0} OR WorkflowType IS NULL", (int)WorkflowTypeEnum.Automation);
}
///
/// Initializes master page elements.
///
private void InitializeMasterPage()
{
HeaderAction basic = new HeaderAction()
{
Text = GetString("Development-Workflow_List.NewWorkflow"),
ImageUrl = GetImageUrl("Objects/CMS_Workflow/add.png"),
RedirectUrl = "~/CMSModules/Workflows/Workflow_New.aspx"
};
AddHeaderAction(basic);
if (WorkflowInfoProvider.IsAdvancedWorkflowAllowed())
{
HeaderAction advanced = new HeaderAction()
{
// Advanced workflow link
Text = GetString("Development-Workflow_List.NewAdvancedWorkflow"),
ImageUrl = GetImageUrl("Objects/CMS_Workflow/add_advanced.png"),
RedirectUrl = "~/CMSModules/Workflows/Workflow_New.aspx?type=1"
};
AddHeaderAction(advanced);
}
}
protected object UniGridWorkflows_OnExternalDataBound(object sender, string sourceName, object parameter)
{
switch (sourceName.ToLowerCSafe())
{
case "type":
DataRowView drv = (DataRowView)parameter;
bool versioning = ValidationHelper.GetBoolean(drv.Row["WorkflowAutoPublishChanges"], false);
int type = ValidationHelper.GetInteger(drv.Row["WorkflowType"], 0);
return WorkflowHelper.GetWorkflowTypeString((WorkflowTypeEnum)type, versioning);
case "scope":
string types = ValidationHelper.GetString(parameter, "");
var typeList = TypeHelper.GetTypes(types);
if (typeList.Count == 0)
{
typeList.Add(PredefinedObjectType.GROUP_DOCUMENTS);
}
string list = "";
typeList.ForEach(s => list += ResHelper.GetString(ResHelper.GetAPIString("ObjectTasks." + s.Replace(".", "_").Replace("#", "_"), s)) + ", ");
return list.Trim().TrimEnd(',');
}
return parameter;
}
private void UniGridWorkflows_OnBeforeDataReload()
{
// Hide allowed objects column when not in development mode
UniGridWorkflows.NamedColumns["scope"].Visible = SettingsKeyProvider.DevelopmentMode;
}
///
/// Handles the UniGrid's OnAction event.
///
/// Name of item (button) that threw event
/// ID (value of Primary key) of corresponding data row
protected void UniGridWorkflows_OnAction(string actionName, object actionArgument)
{
int workflowid = Convert.ToInt32(actionArgument);
switch (actionName)
{
case "edit":
URLHelper.Redirect("Workflow_Edit.aspx?workflowid=" + workflowid);
break;
case "delete":
// Check if documents use the workflow
List documentNames = new List();
if (WorkflowInfoProvider.CheckDependencies(workflowid, ref documentNames))
{
// Encode and localize names
StringBuilder sb = new StringBuilder();
documentNames.ForEach(item => sb.Append("
", HTMLHelper.HTMLEncode(ResHelper.LocalizeString(item))));
ShowError(GetString("Workflow.CannotDeleteUsed"), GetString("workflow.documentlist") + sb.ToString(), null);
return;
}
else
{
// Delete the workflow
WorkflowInfoProvider.DeleteWorkflowInfo(workflowid);
}
break;
}
}
}