using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using CMS.CMSHelper;
using CMS.GlobalHelper;
using CMS.ProjectManagement;
using CMS.SettingsProvider;
using CMS.UIControls;
using CMS.ExtendedControls;
public partial class CMSModules_ProjectManagement_Controls_LiveControls_GroupTaskEdit : CMSAdminControl
{
#region "Variables"
private bool displayControlPerformed = false;
#endregion
#region "Properties"
///
/// Gets or sets the ProjectID value.
///
public int ProjectID
{
get
{
return ucTaskList.ProjectID;
}
set
{
EnsureChildControls();
ucTaskList.ProjectID = value;
ucTaskEdit.ProjectID = value;
}
}
///
/// Gets or sets the ID of selected task.
///
public int SelectedTaskID
{
get
{
return ucTaskList.SelectedItemID;
}
set
{
EnsureChildControls();
ucTaskList.SelectedItemID = value;
}
}
///
/// Gets or sets the value that indicates whether is live site.
/// f
public override bool IsLiveSite
{
get
{
return base.IsLiveSite;
}
set
{
EnsureChildControls();
base.IsLiveSite = value;
ucTaskList.IsLiveSite = value;
ucTaskEdit.IsLiveSite = value;
}
}
#endregion
#region "Methods"
protected void Page_Load(object sender, EventArgs e)
{
// Handle control events
ucTaskList.OnAction += new CommandEventHandler(ucTaskList_OnAction);
ucTaskEdit.OnSaved += new EventHandler(ucTaskEdit_OnSaved);
// Breadcrumbs for edit
lblEditBack.Text = " ";
lnkEditBack.Text = GetString("pm.tasks");
lnkEditBack.Click += new EventHandler(lnkEditBack_Click);
#region "New task link"
// New item link
string[,] actions = new string[1,7];
actions[0, 0] = HeaderActions.TYPE_LINKBUTTON;
actions[0, 1] = GetString("pm.projecttask.new");
actions[0, 2] = null;
actions[0, 4] = null;
actions[0, 5] = GetImageUrl("Objects/PM_Project/add.png");
actions[0, 6] = "new_task";
actionsElem.Actions = actions;
actionsElem.ActionPerformed += new CommandEventHandler(actionsElem_ActionPerformed);
#endregion
// Set control properties
ucTaskList.UsePostbackOnEdit = true;
ucTaskList.OrderByType = ProjectTaskOrderByEnum.ProjectOrder;
ucTaskEdit.OnSaved += new EventHandler(ucTaskEdit_OnSaved);
ucTaskEdit.OnCheckPermissions += new CheckPermissionsEventHandler(controls_OnCheckPermissions);
ucTaskList.OnCheckPermissions += new CheckPermissionsEventHandler(controls_OnCheckPermissions);
}
///
/// Check permission handler.
///
private void controls_OnCheckPermissions(string permissionType, CMSAdminControl sender)
{
ProjectInfo pi = ProjectInfoProvider.GetProjectInfo(ProjectID);
if (pi != null)
{
// If user is group admin => allow all actions
if (!CMSContext.CurrentUser.IsGroupAdministrator(pi.ProjectGroupID))
{
sender.StopProcessing = true;
}
}
}
///
/// Task saved event handler.
///
private void ucTaskEdit_OnSaved(object sender, EventArgs e)
{
// Set task id
SelectedTaskID = ucTaskEdit.ItemID;
// Display edit control
DisplayControl("edit");
}
///
/// Edit clicked on list.
///
private void ucTaskList_OnAction(object sender, CommandEventArgs e)
{
// Switch by command name
switch (e.CommandName.ToString())
{
// Edit
case "edit":
// Set task id from command argument
int taskID = ValidationHelper.GetInteger(e.CommandArgument, 0);
ucTaskEdit.ItemID = taskID;
SelectedTaskID = taskID;
// Display edit control
DisplayControl("edit");
break;
}
}
///
/// New task click handler.
///
protected void actionsElem_ActionPerformed(object sender, CommandEventArgs e)
{
// Swrich by command name
switch (e.CommandName.ToLowerCSafe())
{
case "new_task":
// Display new control
DisplayControl("new");
break;
}
}
///
/// Display given control.
///
/// Type of control to display
private void DisplayControl(string control)
{
// Set display performed falg
displayControlPerformed = true;
// Hide all controls
pnlEdit.Visible = false;
plcList.Visible = false;
// Switch by display control type
switch (control.ToLowerCSafe())
{
// List
case "list":
plcList.Visible = true;
ucTaskList.ProjectID = ProjectID;
ucTaskList.ReloadData();
break;
// New
case "new":
pnlEdit.Visible = true;
ucTaskEdit.ProjectID = ProjectID;
SelectedTaskID = -1;
SetBreadcrumbs(0);
ucTaskEdit.ItemID = 0;
ucTaskEdit.ClearForm();
ucTaskEdit.ReloadData(true);
break;
// Edit
case "edit":
pnlEdit.Visible = true;
ucTaskEdit.ProjectID = ProjectID;
SetBreadcrumbs(SelectedTaskID);
ucTaskEdit.ClearForm();
ucTaskEdit.ReloadData(true);
break;
}
}
///
/// OnPreRender override.
///
protected override void OnPreRender(EventArgs e)
{
// If display method wasn't called ensure default displaying with dependence on selected item on tab control
if (!displayControlPerformed)
{
switch (SelectedTaskID)
{
// Default list
case 0:
DisplayControl("list");
break;
// New item
case -1:
SetBreadcrumbs(0);
break;
// Edit item
default:
SetBreadcrumbs(SelectedTaskID);
break;
}
}
}
///
/// Clear the selection.
///
public void ClearControl()
{
// Un-select current task if exist
SelectedTaskID = 0;
// Display list control by default
DisplayControl("list");
}
///
/// Sets breacrumbs for edit.
///
private void SetBreadcrumbs(int projectTaskID)
{
// If project task is defined display task specific breadcrumbs
if (projectTaskID != 0)
{
// Load project name
ProjectTaskInfo pi = ProjectTaskInfoProvider.GetProjectTaskInfo(projectTaskID);
if (pi != null)
{
lblEditBack.Text = " " + HTMLHelper.HTMLEncode(pi.ProjectTaskDisplayName);
}
}
// Dsiplay new task breadcrumb
else
{
lblEditBack.Text = " " + GetString("pm.projecttask.new");
}
}
///
/// Breadcrumbs back link event handler.
///
private void lnkEditBack_Click(object sender, EventArgs e)
{
// Display list
DisplayControl("list");
}
#endregion
}