Ejemplo n.º 1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            try
            {
                // grab CourseID parameter from the querystring
                AssignmentManager.Common.Functions f = new AssignmentManager.Common.Functions();
                int courseId = f.ValidateNumericQueryStringParameter(this.Request, "CourseID");

                UserM user = UserM.Load(SharedSupport.GetUserIdentity());
                if (!user.IsInCourse(courseId))
                {
                    Response.Redirect(@"../Error.aspx?ErrorDetail=" + "Global_Unauthorized");
                }

                //Cleanup temporary files after project downloads. Page does not need to load.
                if (Request.QueryString.Get("Action").ToLower() == "cleanupdirectory")
                {
                    CleanupTempDirectory();
                }

                Nav1.Feedback.Text = String.Empty;
                Nav1.SideTabId     = AssignmentManager.Common.constants.SIDE_NAV_STUDENT_COURSE;
                Nav1.TopTabId      = AssignmentManager.Common.constants.TOP_NAV_STUDENT_COURSE_ASSIGNMENTS;
                Nav1.relativeURL   = @"../";

                //GoBack1.GoBack_HelpUrl = SharedSupport.HelpRedirect("vstskAddingAssignment");
                GoBack1.GoBack_HelpUrl = SharedSupport.HelpRedirect("tskSubmittingAssignmentUsingAssignmentManager");

                GoBack1.GoBackIncludeBack = true;
                GoBack1.GoBack_top        = "24px";
                //GoBack1.GoBack_left = "-10px";

                switch (Request.QueryString.Get("Action").ToLower())
                {
                case "uploadsubmission":
                    Nav1.Title = SharedSupport.GetLocalizedString("UploadDownload_StudentUploadTitle");
                    break;

                case "downloadstarter":
                    Nav1.Title = SharedSupport.GetLocalizedString("UploadDownload_StudentDownloadTitle");
                    break;

                default:
                    throw new ApplicationException(SharedSupport.GetLocalizedString("UploadDownload_StudentTitleError"));
                }



                int assignmentId = f.ValidateNumericQueryStringParameter(this.Request, "AssignmentID");
                if (!IsPostBack)
                {
                    //
                    // Evals true first time browser hits the page
                    //
                    //Give the client the upload and download locations
                    if (SharedSupport.UsingSsl)
                    {
                        txtUploadLocation.Value         = "https://" + Request.ServerVariables.Get("HTTP_HOST") + Constants.ASSIGNMENTMANAGER_UPLOAD_DIRECTORY;
                        txtDownloadFolderLocation.Value = "https://" + Request.ServerVariables.Get("HTTP_HOST") + Constants.ASSIGNMENTMANAGER_DOWNLOAD_DIRECTORY;
                    }
                    else
                    {
                        txtUploadLocation.Value         = "http://" + Request.ServerVariables.Get("HTTP_HOST") + Constants.ASSIGNMENTMANAGER_UPLOAD_DIRECTORY;
                        txtDownloadFolderLocation.Value = "http://" + Request.ServerVariables.Get("HTTP_HOST") + Constants.ASSIGNMENTMANAGER_DOWNLOAD_DIRECTORY;
                    }
                    txtMaxUploadSize.Value = SharedSupport.GetSetting(AssignmentManager.Constants.MAX_PROJECT_SETTING).ToString();
                    btnDownload.Value      = UploadDownload_Download_Text;

                    lblSelectProject.Text            = UploadDownload_SelectProject;
                    lblAssignmentName.Text           = UploadDownload_AssignmentName;
                    lblUploadSubTitle.Text           = SharedSupport.GetLocalizedString("UploadDownload_StudentUploadTitle");
                    lblUploadDescription.Text        = UploadDownload_UploadDescription;
                    lblDownloadStudentTitle.Text     = UploadDownload_Download_Student_Title;
                    lblDownloadLocationForFiles.Text = UploadDownload_Location_For_Download_Files_Text;
                    if (!assignmentId.Equals(0))
                    {
                        AssignmentM assign = AssignmentM.Load(assignmentId);
                        if (assign.IsValid)
                        {
                            txtAssignmentName.Enabled = false;
                            txtAssignmentName.Text    = assign.ShortName;
                        }
                    }
                    txtNewGUID.Value = System.Guid.NewGuid().ToString();
                    txtCancel.Value  = "0";
                    txtDirSize.Value = SharedSupport.GetSetting(Constants.MAX_PROJECT_SETTING);
                    //Download assignment starter project
                    if (Request.QueryString.Get("Action").ToLower() == "downloadstarter")
                    {
                        //Check to make sure that you got an AssignmentID and a CourseID
                        if (!courseId.Equals(null) && !assignmentId.Equals(null))
                        {
                            //Call browse starter to get all files to appropriate location
                            AssignmentM assign = AssignmentM.Load(assignmentId);
                            if (assign.IsValid)
                            {
                                if (assign.AssignmentURL.Trim() != String.Empty)
                                {
                                    UploadDownload_DownloadRedirectUrl = Server.HtmlEncode(assign.AssignmentURL);
                                }
                                else
                                {
                                    UploadDownload_DownloadRedirectUrl = "AssignmentGrade.aspx?AssignmentID=" + assignmentId.ToString() + "&CourseID=" + courseId.ToString() + "&Exp=1";
                                }
                                System.Guid guid = System.Guid.NewGuid();
                                txtSolutionName.Value     = assign.ShortName;
                                txtDownloadFilesXML.Value = assign.StarterFilesXML(guid);
                                txtNewGUID.Value          = guid.ToString();
                            }
                            else
                            {
                                throw new ApplicationException(SharedSupport.GetLocalizedString("UploadDownload_AssignmentError"));
                            }
                        }
                        else
                        {
                            throw new ApplicationException(SharedSupport.GetLocalizedString("UploadDownload_AssignmentIDCourseIDError"));
                        }
                    }
                }
                else
                {
                    //If this is coming back from the client see what the action
                    //is on the query string and perform accordingly

                    //make sure that the we or the user didn't cancel the upload
                    if (txtCancel.Value != "1")
                    {
                        //Student Submitting an assignment
                        if (Request.QueryString.Get("Action").ToLower() == "uploadsubmission")
                        {
                            StudentAssignmentM sa       = new StudentAssignmentM();
                            string             xmlFiles = txtFilesUploadedXML.Value.ToString();
                            string             pathGUID = txtNewGUID.Value.ToString();
                            sa.Submit(assignmentId, courseId, xmlFiles, pathGUID);
                            Response.Redirect("Assignments.aspx?" + Request.QueryString.ToString(), false);
                        }
                        //Cleanup temporary files after project downloads.
                        if (Request.QueryString.Get("Action").ToLower() == "cleanupdirectory")
                        {
                            // Grab the querystring parameters.
                            string tempGUID       = Request.QueryString.Get("GUID");
                            bool   addQuerystring = Convert.ToBoolean(Request.QueryString.Get("AddQS"));
                            string targetUrl      = Request.QueryString.Get("TargetURL");

                            // Test whether the GUID that identifies the directory to be deleted exists.
                            if (tempGUID == "" || tempGUID == string.Empty)
                            {
                                // The GUID is missing, try and continue the redirect without deleting the directory.
                            }
                            else
                            {
                                // Delete the temporary download directory from the AMWeb virtual directory.
                                string downloadRoot = Request.MapPath(Request.ApplicationPath.ToString());
                                //string downloadRoot = Request.MapPath(Constants.ASSIGNMENTMANAGER_DOWNLOAD_DIRECTORY);
                                DeleteTempDirectory(tempGUID);
                            }
                            if (addQuerystring == true)
                            {
                                // Remove the QueryString parameters used for this action then pass the leftovers on the redirect.
                                string tempQuerystring = Request.Url.Query.ToString();
                                tempQuerystring = tempQuerystring.Substring(0, tempQuerystring.IndexOf("&GUID"));
                                Response.Redirect(targetUrl + tempQuerystring);
                            }
                            else
                            {
                                Response.Redirect(targetUrl);
                            }
                        }
                    }
                    else
                    {
                        //reset the cancel flag so the user can fix the problem and resubmit
                        txtCancel.Value = "0";
                    }
                }
            }
            catch (Exception ex)
            {
                Nav1.Feedback.Text = ex.Message.ToString();
            }
        }