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");
        }
    }
Пример #2
0
    /// <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);
    }
Пример #3
0
    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");
        }
    }
Пример #4
0
    /// <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);
    }
Пример #5
0
    /// <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;\"  />&nbsp;" + 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);
    }
Пример #6
0
    /// <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;
        }
    }
Пример #7
0
    /// <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);
    }
Пример #8
0
    /// <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;
        }
    }