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_GroupProjects : CMSAdminControl
{
#region "Variables"
private bool displayControlPerformed = false;
#endregion
#region "Properties"
///
/// Gets or sets the community group id.
///
public int CommunityGroupID
{
get
{
return ValidationHelper.GetInteger(GetValue("CommunityGroupID"), 0);
}
set
{
SetValue("CommunityGroupID", value);
}
}
///
/// Gets or sets the display mode of the control.
///
public override ControlDisplayModeEnum DisplayMode
{
get
{
return base.DisplayMode;
}
set
{
base.DisplayMode = value;
ucProjectNew.DisplayMode = value;
ucProjectEdit.DisplayMode = value;
ucProjectList.DisplayMode = value;
}
}
///
/// Gets or sets the value that indicates whether control is used on live site.
///
public override bool IsLiveSite
{
get
{
return ValidationHelper.GetBoolean(GetValue("IsLiveSite"), base.IsLiveSite);
}
set
{
base.IsLiveSite = value;
SetValue("IsLiveSite", value);
}
}
#endregion
#region "Page methods"
protected void Page_Load(object sender, EventArgs e)
{
#region "New project link"
// New item link
string[,] actions = new string[1,7];
actions[0, 0] = HeaderActions.TYPE_LINKBUTTON;
actions[0, 1] = GetString("pm.project.new");
actions[0, 2] = null;
actions[0, 4] = null;
actions[0, 5] = GetImageUrl("Objects/PM_Project/add.png");
actions[0, 6] = "new_project";
actionsElem.Actions = actions;
actionsElem.ActionPerformed += new CommandEventHandler(actionsElem_ActionPerformed);
#endregion
// Breadcrumbs back handlers
lnkEditBack.Click += new EventHandler(lnkEditBack_Click);
lnkNewBack.Click += new EventHandler(lnkEditBack_Click);
// Breadcrumb strings
lnkEditBack.Text = GetString("pm.project.list");
lnkNewBack.Text = GetString("pm.project.list");
// List settings
ucProjectList.UsePostbackOnEdit = true;
ucProjectList.OnAction += new CommandEventHandler(ucProjectList_OnAction);
ucProjectList.CommunityGroupID = CommunityGroupID;
// New item settings
ucProjectNew.CommunityGroupID = CommunityGroupID;
ucProjectNew.OnSaved += new EventHandler(ucProjectNew_OnSaved);
ucProjectNew.OnCheckPermissions += new CheckPermissionsEventHandler(controls_OnCheckPermissions);
ucProjectList.OnCheckPermissions += new CheckPermissionsEventHandler(controls_OnCheckPermissions);
ucProjectList.OnDelete += new EventHandler(ucProjectList_OnDelete);
}
///
/// OnPreRender - ensures defautl displaying.
///
protected override void OnPreRender(EventArgs e)
{
// Display list by default
if ((!displayControlPerformed) && (!RequestHelper.IsPostBack()))
{
DisplayControl("list");
}
base.OnPreRender(e);
}
#endregion
#region "Event handler methods"
///
/// New task created event handler => Display edit page
///
protected void ucProjectNew_OnSaved(object sender, EventArgs e)
{
// Set breadcrumb to currently created project
SetBreadcrumbs(ucProjectNew.ItemID);
// Set current project id
ucProjectEdit.ProjectID = ucProjectNew.ItemID;
// Display edit controls
DisplayControl("edit");
}
///
/// List action event handler.
///
protected void ucProjectList_OnAction(object sender, CommandEventArgs e)
{
// Switch by command name
switch (e.CommandName.ToString())
{
case "edit":
// Get project id from command argument
int projectID = ValidationHelper.GetInteger(e.CommandArgument, 0);
// Set breadcrumbs to edited project
SetBreadcrumbs(projectID);
// Set project id
ucProjectEdit.ProjectID = projectID;
// Display edit controls
DisplayControl("edit");
break;
}
}
///
/// Breadcrumbs back link click handler.
///
protected void lnkEditBack_Click(object sender, EventArgs e)
{
// Clear edit form
ucProjectEdit.ClearForm();
// Display project list
DisplayControl("list");
}
///
/// New project link click handler.
///
protected void actionsElem_ActionPerformed(object sender, CommandEventArgs e)
{
// Switch by command name
switch (e.CommandName.ToLowerCSafe())
{
// New project
case "new_project":
// Set breadcrumbs to new project
SetBreadcrumbs(0);
// Display new project controls
DisplayControl("new");
break;
}
}
///
/// Check permission handler.
///
protected void controls_OnCheckPermissions(string permissionType, CMSAdminControl sender)
{
// If user is group admin => allow all actions
if (!CMSContext.CurrentUser.IsGroupAdministrator(CommunityGroupID))
{
sender.StopProcessing = true;
}
}
///
/// Handles the OnDelete event of the ucProjectList control.
///
protected void ucProjectList_OnDelete(object sender, EventArgs e)
{
// Clear the ProjectID of the Edit control otherwise it could redirect you to the "Edited object no longer exists" page
ucProjectEdit.ProjectID = 0;
}
#endregion
#region "General Methods"
///
/// Display control.
///
/// Type of displayed control
public void DisplayControl(string control)
{
// Set displaying flag
displayControlPerformed = true;
// Hide all controls
plcEdit.Visible = false;
plcNew.Visible = false;
pnlBody.Visible = false;
// Switch by control type
switch (control.ToLowerCSafe())
{
// List
case "list":
pnlBody.Visible = true;
ucProjectList.ReloadData();
break;
// Edit
case "edit":
plcEdit.Visible = true;
ucProjectEdit.ReloadData();
break;
// New
case "new":
plcNew.Visible = true;
ucProjectNew.ReloadData();
break;
}
}
///
/// Sets breadcrumbs for project.
///
/// ID of project
private void SetBreadcrumbs(int projectID)
{
// If project id is defined display actual project name
if (projectID != 0)
{
// Load project info
ProjectInfo pi = ProjectInfoProvider.GetProjectInfo(projectID);
// Check whether project info is defined
if (pi != null)
{
lblEditBack.Text = " " + HTMLHelper.HTMLEncode(pi.ProjectDisplayName);
lblNewBack.Text = " " + HTMLHelper.HTMLEncode(pi.ProjectDisplayName);
}
}
// Display breadcrumbs for ne project
else
{
lblEditBack.Text = " " + GetString("pm.project.new");
lblNewBack.Text = " " + GetString("pm.project.new");
}
}
///
/// Sets the property value of the control, setting the value affects only local property value.
///
/// Property name to set
/// New property value
public override void SetValue(string propertyName, object value)
{
// Community group id
if (CMSString.Compare(propertyName, "CommunityGroupID", true) == 0)
{
int groupId = ValidationHelper.GetInteger(value, 0);
ucProjectList.CommunityGroupID = groupId;
ucProjectNew.CommunityGroupID = groupId;
ucProjectEdit.CommunityGroupID = groupId;
}
// Is livesite
else if (CMSString.Compare(propertyName, "IsLiveSite", true) == 0)
{
bool isLiveSite = ValidationHelper.GetBoolean(value, base.IsLiveSite);
ucProjectEdit.IsLiveSite = isLiveSite;
ucProjectList.IsLiveSite = isLiveSite;
ucProjectNew.IsLiveSite = isLiveSite;
}
// Call base method
base.SetValue(propertyName, value);
}
#endregion
}