void Control_OnAfterDataLoad(object sender, EventArgs e) { if (Project == null) { return; } int groupId = QueryHelper.GetInteger("parentobjectid", 0); // Set group ID to user selector for project owner var ownerControl = Control.FieldControls["ProjectOwner"]; Type ownerControlType = ownerControl.GetType(); PropertyInfo groupIdProperty = ownerControlType.GetProperty("GroupID"); if (groupIdProperty != null) { groupIdProperty.SetValue(ownerControl, groupId, null); } if (Project.ProjectID > 0) { // Load progress int progress = ProjectInfoProvider.GetProjectProgress(Project.ProjectID); Control.FieldControls["ProjectProgress"].Text = ProjectTaskInfoProvider.GenerateProgressHtml(progress, true); } else { Project.ProjectGroupID = groupId; Control.FieldsToHide.Add("ProjectProgress"); Control.FieldsToHide.Add("ProjectAttachments"); } }
/// <summary> /// Control OnExternalDataBound event. /// </summary> private object Control_OnExternalDataBound(object sender, string sourceName, object parameter) { DataRowView row = null; switch (sourceName.ToLowerCSafe()) { case "delete": case "#delete": { if (CommunityGroupID != 0) { // Group project has special permission check - user has to have Manage permission or be a group admin // The default permission check is suppressed in UIElement (using custom attribute) if (!isGroupAdministrator && !hasGroupManagePermission) { CMSGridActionButton newPostButton = ((CMSGridActionButton)sender); newPostButton.Enabled = false; } } } break; case "projectprogress": row = (DataRowView)parameter; int progress = ValidationHelper.GetInteger(row["ProjectProgress"], 0); return(ProjectTaskInfoProvider.GenerateProgressHtml(progress, true)); case "statusicon": row = (DataRowView)parameter; string iconUrl = ValidationHelper.GetString(row["ProjectStatusIcon"], ""); // Get row color rowColor = ValidationHelper.GetString(row["ProjectStatusColor"], ""); if (!String.IsNullOrEmpty(iconUrl)) { string statusText = ValidationHelper.GetString(row["ProjectStatus"], ""); statusText = HTMLHelper.HTMLEncode(statusText); return("<div class=\"ProjectStatusIcon\"><img alt=\"" + statusText + "\" title=\"" + statusText + "\" src=\"" + HTMLHelper.HTMLEncode(Control.GetImageUrl(iconUrl)) + "\" class=\"ProjectStatusIcon\" /></div>"); } return(""); } return(null); }
void Control_OnAfterDataLoad(object sender, EventArgs e) { if (Project == null) { return; } if (Project.ProjectID != 0) { // Load progress int progress = ProjectInfoProvider.GetProjectProgress(Project.ProjectID); Control.FieldControls["ProjectProgress"].Text = ProjectTaskInfoProvider.GenerateProgressHtml(progress, true); } else { Control.FieldsToHide.Add("ProjectProgress"); Control.FieldsToHide.Add("ProjectAttachments"); } }
/// <summary> /// Handles UniGrid's OnExternalDataBound event. /// </summary> /// <param name="sender">Sender object (image button if it is an external databoud for action button)</param> /// <param name="sourceName">External source name of the column specified in the grid XML</param> /// <param name="parameter">Source parameter (original value of the field)</param> protected object gridElem_OnExternalDataBound(object sender, string sourceName, object parameter) { DataRowView row = null; switch (sourceName.ToLowerCSafe()) { case "projectdisplayname": string displayname = parameter.ToString(); if (displayname.Length > MAX_TITLE_LENGTH) { return("<span title=\"" + HTMLHelper.HTMLEncode(displayname) + "\">" + HTMLHelper.HTMLEncode(TextHelper.LimitLength(displayname, MAX_TITLE_LENGTH)) + "</span>"); } else { return(HTMLHelper.HTMLEncode(displayname)); } case "projectprogress": row = (DataRowView)parameter; int progress = ValidationHelper.GetInteger(row["ProjectProgress"], 0); return(ProjectTaskInfoProvider.GenerateProgressHtml(progress, true)); case "statusicon": row = (DataRowView)parameter; string statusText = ValidationHelper.GetString(row["ProjectStatus"], ""); statusText = HTMLHelper.HTMLEncode(statusText); string iconUrl = ValidationHelper.GetString(row["ProjectStatusIcon"], ""); // Get row color rowColor = ValidationHelper.GetString(row["ProjectStatusColor"], ""); if (!String.IsNullOrEmpty(iconUrl)) { return("<div style=\"text-align:center;\"><img alt=\"" + statusText + "\" title=\"" + statusText + "\" src=\"" + HTMLHelper.HTMLEncode(GetImageUrl(iconUrl)) + "\" style=\"max-width:50px; max-height: 50px;\" /></div>"); } return(""); case "ownerfullname": row = (DataRowView)parameter; string userName = ValidationHelper.GetString(row["ProjectOwnerUserName"], String.Empty); string fullName = ValidationHelper.GetString(row["ProjectOwnerFullName"], String.Empty); return(HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(userName, fullName, IsLiveSite))); case "projectdeadline": DateTime dt = ValidationHelper.GetDateTime(parameter, DateTimeHelper.ZERO_TIME); if (dt == DateTimeHelper.ZERO_TIME) { return(String.Empty); } return(TimeZoneMethods.ConvertDateTime(dt, this)); case "linkeddisplayname": row = (DataRowView)parameter; string displayName = HTMLHelper.HTMLEncode(ValidationHelper.GetString(row["ProjectDisplayName"], String.Empty)); string path = ValidationHelper.GetString(row["NodeAliasPath"], String.Empty); int projectId = ValidationHelper.GetInteger(row["ProjectID"], 0); if (!String.IsNullOrEmpty(path)) { string target = String.Empty; if (!String.IsNullOrEmpty(ProjectLinkTarget)) { target = " target=\"" + ProjectLinkTarget + "\" "; } path = URLHelper.ResolveUrl(DocumentURLProvider.GetUrl(path)); return(String.Format("<a href=\"{1}?projectid={2}\" {3} title=\"{4}\">{0}</a>", TextHelper.LimitLength(displayName, MAX_TITLE_LENGTH), path, projectId, target, HTMLHelper.HTMLEncode(displayName))); } else { return(displayName); } case "editlinkdisplayname": row = (DataRowView)parameter; string editDisplayName = ValidationHelper.GetString(row["ProjectDisplayName"], String.Empty); editDisplayName = TextHelper.LimitLength(editDisplayName, MAX_TITLE_LENGTH); int editProjectTaskID = ValidationHelper.GetInteger(row["ProjectID"], 0); return(String.Format("<a href=\"javascript:" + ControlsHelper.GetPostBackEventReference(this, editProjectTaskID.ToString()) + "\" title=\"{0}\">{1}</a>", HTMLHelper.HTMLEncode(editDisplayName), HTMLHelper.HTMLEncode(TextHelper.LimitLength(editDisplayName, MAX_TITLE_LENGTH)))); } return(parameter); }
/// <summary> /// Handles UniGrid's OnExternalDataBound event. /// </summary> /// <param name="sender">Sender object (image button if it is an external databoud for action button)</param> /// <param name="sourceName">External source name of the column specified in the grid XML</param> /// <param name="parameter">Source parameter (original value of the field)</param> protected object gridElem_OnExternalDataBound(object sender, string sourceName, object parameter) { DataRowView row = null; switch (sourceName.ToLower()) { case "up": case "down": ImageButton button = ((ImageButton)sender); button.Visible = showArrows; break; case "taskprogress": row = (DataRowView)parameter; int progress = ValidationHelper.GetInteger(row["ProjectTaskProgress"], 0); return(ProjectTaskInfoProvider.GenerateProgressHtml(progress, true)); case "projecttaskdisplayname": case "projectdisplayname": string displayname = parameter.ToString(); if (displayname.Length > MAX_TITLE_LENGTH) { return("<span title=\"" + HTMLHelper.HTMLEncode(displayname) + "\">" + HTMLHelper.HTMLEncode(TextHelper.LimitLength(displayname, MAX_TITLE_LENGTH)) + "</span>"); } else { return(HTMLHelper.HTMLEncode(displayname)); } case "projecttaskdeadline": DateTime dt = ValidationHelper.GetDateTime(parameter, DateTimeHelper.ZERO_TIME); if (dt == DateTimeHelper.ZERO_TIME) { return(String.Empty); } return(CMSContext.ConvertDateTime(dt, this)); case "taskstatus": row = parameter as DataRowView; if (row != null) { string statusName = ValidationHelper.GetString(row["TaskStatusDisplayName"], String.Empty); statusName = HTMLHelper.HTMLEncode(statusName); string iconPath = HTMLHelper.HTMLEncode(ValidationHelper.GetString(row["TaskStatusIcon"], String.Empty)); // Get row color rowColor = ValidationHelper.GetString(row["TaskStatusColor"], ""); switch (StatusDisplayType) { // Text case StatusDisplayTypeEnum.Text: return(statusName); // Icon case StatusDisplayTypeEnum.Icon: if (!String.IsNullOrEmpty(iconPath)) { return("<div style=\"text-align:center;\"><img src=\"" + URLHelper.ResolveUrl(iconPath) + "\" alt=\"" + statusName + "\" title=\"" + statusName + "\" class=\"StatusImage\" style=\"max-width:50px; max-height: 50px;\" /></div>"); } return(statusName); // Icon and text case StatusDisplayTypeEnum.IconAndText: if (!String.IsNullOrEmpty(iconPath)) { return("<img src=\"" + URLHelper.ResolveUrl(iconPath) + "\" title=\"" + statusName + "\" class=\"StatusImage\" style=\"max-width:50px; max-height: 50px;\" /> " + statusName); } return(statusName); } } return(row.ToString()); case "assigneeformattedfullname": row = (DataRowView)parameter; string assigneeUserName = ValidationHelper.GetString(row["AssigneeUserName"], String.Empty); string assigneeFullName = ValidationHelper.GetString(row["AssigneeFullName"], String.Empty); return(HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(assigneeUserName, assigneeFullName, IsLiveSite))); case "ownerformattedfullname": row = (DataRowView)parameter; string ownerUserName = ValidationHelper.GetString(row["OwnerUserName"], String.Empty); string ownerFullName = ValidationHelper.GetString(row["OwnerFullName"], String.Empty); return(HTMLHelper.HTMLEncode(Functions.GetFormattedUserName(ownerUserName, ownerFullName, IsLiveSite))); // Display name with link - used in webparts case "linkeddisplayname": row = (DataRowView)parameter; string displayName = ValidationHelper.GetString(row["ProjectTaskDisplayName"], String.Empty); int projectTaskID = ValidationHelper.GetInteger(row["ProjectTaskID"], 0); string url = SettingsKeyProvider.GetStringValue(CMSContext.CurrentSiteName + ".CMSTaskDetailPage"); return(String.Format("<a href=\"{0}\" title=\"{1}\">{2}</a>", url + "?ProjectTaskID=" + projectTaskID, HTMLHelper.HTMLEncode(displayName), HTMLHelper.HTMLEncode(TextHelper.LimitLength(displayName, MAX_TITLE_LENGTH)))); // Display name with link to ajax window case "editlinkdisplayname": row = (DataRowView)parameter; string editDisplayName = ValidationHelper.GetString(row["ProjectTaskDisplayName"], String.Empty); int editProjectTaskID = ValidationHelper.GetInteger(row["ProjectTaskID"], 0); return(String.Format("<a href=\"javascript:" + ControlsHelper.GetPostBackEventReference(this, editProjectTaskID.ToString()) + "\" title=\"{0}\">{1}</a>", HTMLHelper.HTMLEncode(editDisplayName), HTMLHelper.HTMLEncode(TextHelper.LimitLength(editDisplayName, MAX_TITLE_LENGTH)))); } return(parameter); }
/// <summary> /// Loads the data into the form. /// </summary> public void LoadData() { // Check if the projects belongs to the current site if ((this.ProjectObj != null) && (this.ProjectObj.ProjectSiteID != CMSContext.CurrentSiteID)) { return; } // If dealayed reload or not postback with not delayed reload if (((!URLHelper.IsPostback()) && (!DelayedReload)) || (DelayedReload)) { LoadDropDown(); } // Load the form from the info object if (this.ProjectObj != null) { this.txtProjectName.Text = this.ProjectObj.ProjectName; this.txtProjectDisplayName.Text = this.ProjectObj.ProjectDisplayName; this.txtProjectDescription.Text = this.ProjectObj.ProjectDescription; this.dtpProjectStartDate.SelectedDateTime = this.ProjectObj.ProjectStartDate; this.dtpProjectDeadline.SelectedDateTime = this.ProjectObj.ProjectDeadline; int progress = ProjectInfoProvider.GetProjectProgress(this.ProjectObj.ProjectID); this.ltrProjectProgress.Text = ProjectTaskInfoProvider.GenerateProgressHtml(progress, true); if (this.ProjectObj.ProjectOwner != 0) { userSelector.UniSelector.Value = this.ProjectObj.ProjectOwner; } else { userSelector.UniSelector.Value = String.Empty; } this.chkProjectAllowOrdering.Checked = this.ProjectObj.ProjectAllowOrdering; SetStatusDrp(this.ProjectObj.ProjectStatusID); if (this.ProjectObj.ProjectNodeID != 0) { SetProjectPage(this.ProjectObj.ProjectNodeID); } } else { userSelector.UniSelector.Value = ""; CurrentUserInfo cui = CMSContext.CurrentUser; if (!this.IsLiveSite || cui.UserEnabled) { // Load default data userSelector.UniSelector.Value = CMSContext.CurrentUser.UserID; } this.pageSelector.Value = String.Empty; if (ProjectNodeID != 0) { SetProjectPage(ProjectNodeID); } this.ltrProjectProgress.Text = ProjectTaskInfoProvider.GenerateProgressHtml(0, true); // Hide progress bar for a new project this.plcProgress.Visible = false; } }
/// <summary> /// Saves control with actual data. /// </summary> public bool Save() { if (!CheckPermissions("CMS.ProjectManagement", CMSAdminControl.PERMISSION_MANAGE)) { return(false); } // Validate the form if (Validate()) { // Indicates whether project is new bool isNew = false; int progress = 0; // Ensure the info object if (this.ProjectObj == null) { // New project ProjectInfo pi = new ProjectInfo(); // First initialization of the Access propery - allow authenticated users pi.ProjectAccess = 1222; pi.ProjectCreatedByID = CMSContext.CurrentUser.UserID; pi.ProjectOwner = 0; if (CommunityGroupID != 0) { pi.ProjectGroupID = CommunityGroupID; // Set default access to the group pi.ProjectAccess = 3333; } mProjectObj = pi; isNew = true; } else { // Existing project // Reset ProjectOrder if checkbox was unchecked if ((this.ProjectObj.ProjectAllowOrdering) && (!this.chkProjectAllowOrdering.Checked)) { ProjectInfoProvider.ResetProjectOrder(this.ProjectObj.ProjectID); } // Clear the hashtables if the codename has been changed if ((this.ProjectObj.ProjectGroupID > 0) && this.ProjectObj.ProjectName != this.txtProjectName.Text) { ProjectInfoProvider.Clear(true); } progress = ProjectInfoProvider.GetProjectProgress(this.ProjectObj.ProjectID); } this.ltrProjectProgress.Text = ProjectTaskInfoProvider.GenerateProgressHtml(progress, true); // Initialize object this.ProjectObj.ProjectSiteID = CMSContext.CurrentSiteID; if (DisplayMode == ControlDisplayModeEnum.Simple) { if (isNew) { this.ProjectObj.ProjectName = ValidationHelper.GetCodeName(txtProjectDisplayName.Text, 50) + ((CommunityGroupID > 0) ? "_group_" : "_general_") + this.CodenameGUID; } } else { this.ProjectObj.ProjectName = this.txtProjectName.Text.Trim(); } this.ProjectObj.ProjectDisplayName = this.txtProjectDisplayName.Text.Trim(); this.ProjectObj.ProjectDescription = this.txtProjectDescription.Text.Trim(); this.ProjectObj.ProjectStartDate = this.dtpProjectStartDate.SelectedDateTime; this.ProjectObj.ProjectDeadline = this.dtpProjectDeadline.SelectedDateTime; this.ProjectObj.ProjectOwner = ValidationHelper.GetInteger(userSelector.UniSelector.Value, 0); this.ProjectObj.ProjectStatusID = ValidationHelper.GetInteger(drpProjectStatus.SelectedValue, 0); this.ProjectObj.ProjectAllowOrdering = this.chkProjectAllowOrdering.Checked; // Set ProjectNodeID if (!this.ShowPageSelector) { // Set current node id for new project if (isNew && (CMSContext.CurrentDocument != null)) { this.ProjectObj.ProjectNodeID = CMSContext.CurrentDocument.NodeID; } } else { TreeProvider treeProvider = new TreeProvider(); TreeNode node = treeProvider.SelectSingleNode(ValidationHelper.GetGuid(this.pageSelector.Value, Guid.Empty), TreeProvider.ALL_CULTURES, CMSContext.CurrentSiteName); if (node != null) { this.ProjectObj.ProjectNodeID = node.NodeID; } else { this.ProjectObj.ProjectNodeID = 0; } } // Use try/catch due to license check try { // Save object data to database ProjectInfoProvider.SetProjectInfo(this.ProjectObj); this.ProjectID = this.ProjectObj.ProjectID; this.ItemID = this.ProjectObj.ProjectID; this.RaiseOnSaved(); // Set the info message this.lblInfo.Text = GetString("general.changessaved"); return(true); } catch (Exception ex) { lblError.Visible = true; lblError.Text = ex.Message; } } return(false); }
/// <summary> /// Loads the data into the form. /// </summary> public void LoadData() { // Check if the projects belongs to the current site if ((ProjectObj != null) && (ProjectObj.ProjectSiteID != SiteContext.CurrentSiteID)) { return; } // If delayed reload or not post back with not delayed reload if (((!URLHelper.IsPostback()) && (!DelayedReload)) || (DelayedReload)) { LoadDropDown(); } // Load the form from the info object if (ProjectObj != null) { txtProjectName.Text = ProjectObj.ProjectName; txtProjectDisplayName.Text = ProjectObj.ProjectDisplayName; txtProjectDescription.Text = ProjectObj.ProjectDescription; dtpProjectStartDate.SelectedDateTime = ProjectObj.ProjectStartDate; dtpProjectDeadline.SelectedDateTime = ProjectObj.ProjectDeadline; int progress = ProjectInfoProvider.GetProjectProgress(ProjectObj.ProjectID); ltrProjectProgress.Text = ProjectTaskInfoProvider.GenerateProgressHtml(progress, true); if (ProjectObj.ProjectOwner != 0) { userSelector.UniSelector.Value = ProjectObj.ProjectOwner; userSelector.ReloadData(); } else { userSelector.UniSelector.Value = String.Empty; } chkProjectAllowOrdering.Checked = ProjectObj.ProjectAllowOrdering; SetStatusDrp(ProjectObj.ProjectStatusID); if (ProjectObj.ProjectNodeID != 0) { SetProjectPage(ProjectObj.ProjectNodeID); } plcAttachments.Visible = true; lstAttachments.ObjectID = ProjectObj.ProjectID; lstAttachments.ReloadData(true); } else { userSelector.UniSelector.Value = ""; var cui = MembershipContext.AuthenticatedUser; if (!IsLiveSite || !cui.UserIsDisabledManually) { // Load default data userSelector.UniSelector.Value = MembershipContext.AuthenticatedUser.UserID; } pageSelector.Value = String.Empty; if (ProjectNodeID != 0) { SetProjectPage(ProjectNodeID); } ltrProjectProgress.Text = ProjectTaskInfoProvider.GenerateProgressHtml(0, true); // Hide progress bar for a new project plcProgress.Visible = false; // Hide atachments for a new project plcAttachments.Visible = false; } }