/// <summary>
        ///  Over rides OnPreRender.
        /// </summary>
        /// <param name="e">An EventArgs that contains the event data.</param>
        protected override void OnPreRender(EventArgs e)
        {
            base.OnPreRender(e);

            if (!Page.IsPostBack)
            {
                try
                {
                    this.SetResourceText();


                    if (
                            (SlkStore.IsInstructor(SPWeb) && (Status == LearnerAssignmentState.Completed || Status == LearnerAssignmentState.Final))
                            || SlkStore.IsLearner(SPWeb) ||
                            (SlkStore.IsObserver(SPWeb) && Status == LearnerAssignmentState.Final)
                        )
                    {
                        BuildPageContent();
                    }
                    else
                    {
                        string exceptionMessage;

                        if (SlkStore.IsInstructor(SPWeb))
                        {
                            exceptionMessage = PageCulture.Resources.SubmittedFilesTeacherNoAccessException;
                        }
                        else
                        {
                            exceptionMessage = PageCulture.Resources.SubmittedFilesLearnerNoAccessException;
                        }

                        throw new SafeToDisplayException(exceptionMessage);
                    }
                }
                catch (Exception ex)
                {
                    this.contentPanel.Visible = false;
                    this.errorBanner.Clear();
                    this.errorBanner.AddException(SlkStore, ex);
                }
            }
        }
        void LoadAssignmentProperties()
        {
            if (SlkStore.IsInstructor(SPWeb))
            {
                this.assignmentProperties = SlkStore.LoadAssignmentPropertiesForLearner(LearnerAssignmentGuid, SlkRole.Instructor);
            }
            else if (SlkStore.IsLearner(SPWeb))
            {
                this.assignmentProperties = SlkStore.LoadAssignmentPropertiesForLearner(LearnerAssignmentGuid, SlkRole.Learner);
            }
            else if (SlkStore.IsObserver(SPWeb))
            {
               this.assignmentProperties = SlkStore.LoadAssignmentPropertiesForLearner(LearnerAssignmentGuid, SlkRole.Learner);
            }
            else
            {
                this.assignmentProperties = SlkStore.LoadAssignmentPropertiesForLearner(LearnerAssignmentGuid, SlkRole.None);
            }

            learnerAssignmentProperties = assignmentProperties.Results[0];
        }
Example #3
0
        /// <summary>
        /// Provides an option to override and update the cached data about the
        /// current learner assignment.
        /// </summary>
        /// <param name="forceUpdate">If false, the value is cached.</param>
        /// <returns></returns>
        protected LearnerAssignmentProperties GetLearnerAssignment(bool forceUpdate)
        {
            // If the current value has not been set, or if we have to update it, get
            // the information from the base class.
            if (learnerAssignmentProperties == null || forceUpdate)
            {
                SlkRole slkRole;
                if (SlkStore.IsObserver(SPWeb) && AssignmentView == AssignmentView.StudentReview)
                {
                    // If the user is an observer and the AssignmentView is 'StudentReview', then
                    // set the slkrole to 'Observer'; Otherwise get the role using GetSlkRole method
                    slkRole = SlkRole.Observer;
                }
                else
                {
                    slkRole = GetSlkRole(AssignmentView);
                }

                AssignmentProperties assignment = SlkStore.LoadAssignmentPropertiesForLearner(LearnerAssignmentGuidId, slkRole);
                learnerAssignmentProperties = assignment.Results[0];
            }

            return(learnerAssignmentProperties);
        }
Example #4
0
        /// <summary>Process a view request to determine if it's valid. The AssignmentView must be set before calling this method.</summary>
        protected bool ProcessViewRequest(LearnerAssignmentState learnerStatus, SessionView sessionView)
        {
            switch (AssignmentView)
            {
            case AssignmentView.Execute:
            {
                // Verify that session view matches what you expect
                if (sessionView != SessionView.Execute)
                {
                    throw new InvalidOperationException(SlkFrameset.FRM_UnexpectedViewRequestHtml);
                }

                // Can only access active assignments in Execute view
                if (learnerStatus != LearnerAssignmentState.Active)
                {
                    RegisterError(SlkFrameset.FRM_AssignmentNotAvailableTitle,
                                  SlkFrameset.FRM_AssignmentTurnedInMsgHtml, false);

                    return(false);
                }
                break;
            }

            case AssignmentView.Grading:
            {
                // Verify that session view matches what you expect
                if (sessionView != SessionView.Review)
                {
                    throw new InvalidOperationException(SlkFrameset.FRM_UnexpectedViewRequestHtml);
                }

                // Grading is not available if the assignment has not been submitted.
                if ((learnerStatus == LearnerAssignmentState.Active) ||
                    (learnerStatus == LearnerAssignmentState.NotStarted))
                {
                    RegisterError(SlkFrameset.FRM_AssignmentNotGradableTitle,
                                  SlkFrameset.FRM_AssignmentCantBeGradedMsgHtml, false);
                    return(false);
                }
                break;
            }

            case AssignmentView.InstructorReview:
            {
                // Verify that session view matches what you expect
                if (sessionView != SessionView.Review)
                {
                    throw new InvalidOperationException(SlkFrameset.FRM_UnexpectedViewRequestHtml);
                }

                // Only available if student has started the assignment
                if (learnerStatus == LearnerAssignmentState.NotStarted)
                {
                    RegisterError(SlkFrameset.FRM_ReviewNotAvailableTitle,
                                  SlkFrameset.FRM_ReviewNotAvailableMsgHtml, false);
                    return(false);
                }

                break;
            }

            case AssignmentView.StudentReview:
            {
                // Verify that session view matches what you expect
                if (sessionView != SessionView.Review)
                {
                    throw new InvalidOperationException(SlkFrameset.FRM_UnexpectedViewRequestHtml);
                }

                // If the user is an observer and the assignment state is equal to 'Completed' or 'NotStarted',
                // then register error message
                if (SlkStore.IsObserver(SPWeb) && ((learnerStatus == LearnerAssignmentState.Completed) || (learnerStatus == LearnerAssignmentState.NotStarted)))
                {
                    RegisterError(SlkFrameset.FRM_ObserverReviewNotAvailableTitle, SlkFrameset.FRM_ObserverReviewNotAvailableMsgHtml, false);
                    return(false);
                }
                // If requesting student review, the assignment state must be final
                if (!SlkStore.IsObserver(SPWeb) && learnerStatus != LearnerAssignmentState.Final)
                {
                    RegisterError(SlkFrameset.FRM_ReviewNotAvailableTitle,
                                  SlkFrameset.FRM_LearnerReviewNotAvailableMsgHtml, false);
                    return(false);
                }

                break;
            }

            default:
                break;
            }
            return(true);
        }