public Add_Setting ( string Option_Key, object Option_Value ) : void | ||
Option_Key | string | Key for the user option |
Option_Value | object | Value for this user option |
return | void |
private static User_Object build_user_object_from_dataset(DataSet ResultSet) { User_Object user = new User_Object(); DataRow userRow = ResultSet.Tables[0].Rows[0]; user.ShibbID = userRow["ShibbID"].ToString(); user.UserID = Convert.ToInt32(userRow["UserID"]); user.UserName = userRow["username"].ToString(); user.Email = userRow["EmailAddress"].ToString(); user.Given_Name = userRow["FirstName"].ToString(); user.Family_Name = userRow["LastName"].ToString(); user.Send_Email_On_Submission = Convert.ToBoolean(userRow["SendEmailOnSubmission"]); user.Can_Submit = Convert.ToBoolean(userRow["Can_Submit_Items"]); user.Is_Temporary_Password = Convert.ToBoolean(userRow["isTemporary_Password"]); user.Nickname = userRow["Nickname"].ToString(); user.Organization = userRow["Organization"].ToString(); user.Organization_Code = userRow["OrganizationCode"].ToString(); user.Department = userRow["Department"].ToString(); user.College = userRow["College"].ToString(); user.Unit = userRow["Unit"].ToString(); user.Default_Rights = userRow["Rights"].ToString(); user.Preferred_Language = userRow["Language"].ToString(); user.Is_Internal_User = Convert.ToBoolean(userRow["Internal_User"]); user.Edit_Template_Code_Simple = userRow["EditTemplate"].ToString(); user.Edit_Template_Code_Complex = userRow["EditTemplateMarc"].ToString(); user.Can_Delete_All = Convert.ToBoolean(userRow["Can_Delete_All_Items"]); user.Is_System_Admin = Convert.ToBoolean(userRow["IsSystemAdmin"]); user.Is_Portal_Admin = Convert.ToBoolean(userRow["IsPortalAdmin"]); user.Is_Host_Admin = Convert.ToBoolean(userRow["IsHostAdmin"]); user.Include_Tracking_In_Standard_Forms = Convert.ToBoolean(userRow["Include_Tracking_Standard_Forms"]); user.Receive_Stats_Emails = Convert.ToBoolean(userRow["Receive_Stats_Emails"]); user.Has_Item_Stats = Convert.ToBoolean(userRow["Has_Item_Stats"]); user.LoggedOn = true; user.Internal_Notes = userRow["InternalNotes"].ToString(); user.Processing_Technician = Convert.ToBoolean(userRow["ProcessingTechnician"]); user.Scanning_Technician = Convert.ToBoolean(userRow["ScanningTechnician"]); if (Convert.ToInt32(userRow["descriptions"]) > 0) user.Has_Descriptive_Tags = true; foreach (DataRow thisRow in ResultSet.Tables[1].Rows) { user.Add_Template(thisRow["TemplateCode"].ToString(), Convert.ToBoolean(thisRow["GroupDefined"].ToString())); } foreach (DataRow thisRow in ResultSet.Tables[2].Rows) { user.Add_Default_Metadata_Set(thisRow["MetadataCode"].ToString(), Convert.ToBoolean(thisRow["GroupDefined"].ToString())); } user.Items_Submitted_Count = ResultSet.Tables[3].Rows.Count; foreach (DataRow thisRow in ResultSet.Tables[3].Rows) { if (!user.BibIDs.Contains(thisRow["BibID"].ToString().ToUpper())) user.Add_BibID(thisRow["BibID"].ToString().ToUpper()); } // Add links to regular expressions foreach (DataRow thisRow in ResultSet.Tables[4].Rows) { user.Add_Editable_Regular_Expression(thisRow["EditableRegex"].ToString()); } // Add links to aggregationPermissions foreach (DataRow thisRow in ResultSet.Tables[5].Rows) { user.Add_Aggregation(thisRow["Code"].ToString(), thisRow["Name"].ToString(), Convert.ToBoolean(thisRow["CanSelect"]), Convert.ToBoolean(thisRow["CanEditMetadata"]), Convert.ToBoolean(thisRow["CanEditBehaviors"]), Convert.ToBoolean(thisRow["CanPerformQc"]), Convert.ToBoolean(thisRow["CanUploadFiles"]), Convert.ToBoolean(thisRow["CanChangeVisibility"]), Convert.ToBoolean(thisRow["CanDelete"]), Convert.ToBoolean(thisRow["IsCollectionManager"]), Convert.ToBoolean(thisRow["OnHomePage"]), Convert.ToBoolean(thisRow["IsAggregationAdmin"]), Convert.ToBoolean(thisRow["GroupDefined"])); } // Add the current folder names Dictionary<int, User_Folder> folderNodes = new Dictionary<int, User_Folder>(); List<User_Folder> parentNodes = new List<User_Folder>(); foreach (DataRow folderRow in ResultSet.Tables[6].Rows) { string folderName = folderRow["FolderName"].ToString(); int folderid = Convert.ToInt32(folderRow["UserFolderID"]); int parentid = Convert.ToInt32(folderRow["ParentFolderID"]); bool isPublic = Convert.ToBoolean(folderRow["isPublic"]); User_Folder newFolderNode = new User_Folder(folderName, folderid) { IsPublic = isPublic }; if (parentid == -1) parentNodes.Add(newFolderNode); folderNodes.Add(folderid, newFolderNode); } foreach (DataRow folderRow in ResultSet.Tables[6].Rows) { int folderid = Convert.ToInt32(folderRow["UserFolderID"]); int parentid = Convert.ToInt32(folderRow["ParentFolderID"]); if (parentid > 0) { folderNodes[parentid].Add_Child_Folder(folderNodes[folderid]); } } foreach (User_Folder rootFolder in parentNodes) user.Add_Folder(rootFolder); // Get the list of BibID/VID associated with this foreach (DataRow itemRow in ResultSet.Tables[7].Rows) { user.Add_Bookshelf_Item(itemRow["BibID"].ToString(), itemRow["VID"].ToString()); } // Add the user groups to which this user is a member foreach (DataRow groupRow in ResultSet.Tables[8].Rows) { user.Add_User_Group(groupRow[0].ToString()); } // Get all the user settings foreach (DataRow settingRow in ResultSet.Tables[9].Rows) { user.Add_Setting(settingRow["Setting_Key"].ToString(), settingRow["Setting_Value"].ToString(), false); } return user; }
/// <summary> Constructor for a new instance of the Related_Images_ItemViewer class, used to display /// the thumbnail images (i.e., related images) associated with a digital resource </summary> /// <param name="BriefItem"> Digital resource object </param> /// <param name="CurrentUser"> Current user, who may or may not be logged on </param> /// <param name="CurrentRequest"> Information about the current request </param> /// <param name="Tracer"> Trace object keeps a list of each method executed and important milestones in rendering </param> /// <param name="ViewerCode"> Viewer code for the related images viewer </param> public Related_Images_ItemViewer(BriefItemInfo BriefItem, User_Object CurrentUser, Navigation_Object CurrentRequest, Custom_Tracer Tracer, string ViewerCode) { // Save the arguments for use later briefItem = BriefItem; currentRequest = CurrentRequest; // Get the proper number of thumbnails per page if (CurrentUser != null) { // First, pull the thumbnails per page from the user options thumbnailsPerPage = CurrentUser.Get_Setting("Related_Images_ItemViewer:ThumbnailsPerPage", 50); // Or was there a new value in the URL? if ((currentRequest.Thumbnails_Per_Page.HasValue) && (currentRequest.Thumbnails_Per_Page.Value >= -1)) { CurrentUser.Add_Setting("Related_Images_ItemViewer:ThumbnailsPerPage", currentRequest.Thumbnails_Per_Page); thumbnailsPerPage = currentRequest.Thumbnails_Per_Page.Value; } } else { int tempValue = 50; object sessionValue = HttpContext.Current.Session["Related_Images_ItemViewer:ThumbnailsPerPage"]; if (sessionValue != null) { int.TryParse(sessionValue.ToString(), out tempValue); } thumbnailsPerPage = tempValue; // Or was there a new value in the URL? if ((currentRequest.Thumbnails_Per_Page.HasValue) && (currentRequest.Thumbnails_Per_Page.Value >= -1)) { HttpContext.Current.Session["Related_Images_ItemViewer:ThumbnailsPerPage"] = currentRequest.Thumbnails_Per_Page; thumbnailsPerPage = currentRequest.Thumbnails_Per_Page.Value; } } // -1 means to display all thumbnails if (thumbnailsPerPage == -1) thumbnailsPerPage = int.MaxValue; // Now, reset the value in the navigation object, since we won't need to set it again currentRequest.Thumbnails_Per_Page = -100; // Get the proper size of thumbnails per page if (CurrentUser != null) { // First, pull the thumbnails per page from the user options thumbnailSize = CurrentUser.Get_Setting("Related_Images_ItemViewer:ThumbnailSize", 1); // Or was there a new value in the URL? if ((currentRequest.Size_Of_Thumbnails.HasValue) && (currentRequest.Size_Of_Thumbnails.Value > -1)) { CurrentUser.Add_Setting("Related_Images_ItemViewer:ThumbnailSize", currentRequest.Size_Of_Thumbnails); thumbnailSize = currentRequest.Size_Of_Thumbnails.Value; } } else { int tempValue = 1; object sessionValue = HttpContext.Current.Session["Related_Images_ItemViewer:ThumbnailSize"]; if (sessionValue != null) { int.TryParse(sessionValue.ToString(), out tempValue); } thumbnailSize = tempValue; // Or was there a new value in the URL? if ((currentRequest.Size_Of_Thumbnails.HasValue) && (currentRequest.Size_Of_Thumbnails.Value > -1)) { HttpContext.Current.Session["Related_Images_ItemViewer:ThumbnailSize"] = currentRequest.Size_Of_Thumbnails; thumbnailSize = currentRequest.Size_Of_Thumbnails.Value; } } // Now, reset the value in the navigation object, since we won't need to set it again currentRequest.Size_Of_Thumbnails = -1; // Get the number of thumbnails for this item pageCount = briefItem.Images != null ? briefItem.Images.Count : 0; // Determine the page page = 1; if (!String.IsNullOrEmpty(CurrentRequest.ViewerCode)) { int tempPageParse; if (Int32.TryParse(CurrentRequest.ViewerCode.Replace(ViewerCode.Replace("#", ""), ""), out tempPageParse)) page = tempPageParse; } // Just a quick range check if (page > pageCount) page = 1; }
/// <summary> Constructor for a new instance of the QC_ItemViewer class, used to perform quality control and /// create the structural metadata ( page names and divisions ) for an online digital resource </summary> /// <param name="BriefItem"> Digital resource object </param> /// <param name="CurrentUser"> Current user, who may or may not be logged on </param> /// <param name="CurrentRequest"> Information about the current request </param> /// <param name="Tracer"> Trace object keeps a list of each method executed and important milestones in rendering </param> public QC_ItemViewer(BriefItemInfo BriefItem, User_Object CurrentUser, Navigation_Object CurrentRequest, Custom_Tracer Tracer ) { // Save the arguments for use later this.BriefItem = BriefItem; this.CurrentUser = CurrentUser; this.CurrentRequest = CurrentRequest; // If there is no user, send to the login if (CurrentUser == null) { CurrentRequest.Mode = Display_Mode_Enum.My_Sobek; CurrentRequest.My_Sobek_Type = My_Sobek_Type_Enum.Logon; UrlWriterHelper.Redirect(CurrentRequest); return; } // If the user cannot edit this item, go back if (!CurrentUser.Can_Edit_This_Item(BriefItem.BibID, BriefItem.Type, BriefItem.Behaviors.Source_Institution_Aggregation, BriefItem.Behaviors.Holding_Location_Aggregation, BriefItem.Behaviors.Aggregation_Code_List)) { CurrentRequest.ViewerCode = String.Empty; UrlWriterHelper.Redirect(CurrentRequest); return; } //If there are no pages for this item, redirect to the image upload screen if ((BriefItem.Images == null ) || ( BriefItem.Images.Count == 0 )) { CurrentRequest.Mode = Display_Mode_Enum.My_Sobek; CurrentRequest.My_Sobek_Type = My_Sobek_Type_Enum.Page_Images_Management; UrlWriterHelper.Redirect(CurrentRequest); return; } // Get the links for the METS string greenstoneLocation = BriefItem.Web.Source_URL + "/"; complete_mets = greenstoneLocation + BriefItem.BibID + "_" + BriefItem.VID + ".mets.xml"; // MAKE THIS USE THE FILES.ASPX WEB PAGE if this is restricted (or dark) if ((BriefItem.Behaviors.Dark_Flag) || (BriefItem.Behaviors.IP_Restriction_Membership > 0)) { complete_mets = CurrentRequest.Base_URL + "files/" + BriefItem.BibID + "/" + BriefItem.VID + "/" + BriefItem.BibID + "_" + BriefItem.VID + ".mets.xml"; } // Get the special qc_item, which matches the passed in Current_Object, at least the first time. // If the QC work is already in process, we may find a temporary METS file to read. // Determine the in process directory for this userInProcessDirectory = UI_ApplicationCache_Gateway.Settings.Servers.In_Process_Submission_Location + "\\" + CurrentUser.UserName.Replace(".", "").Replace("@", "") + "\\qcwork\\" + BriefItem.BibID + "_" + BriefItem.VID; if (CurrentUser.ShibbID.Trim().Length > 0) userInProcessDirectory = UI_ApplicationCache_Gateway.Settings.Servers.In_Process_Submission_Location + "\\" + CurrentUser.ShibbID + "\\qcwork\\" + BriefItem.BibID + "_" + BriefItem.VID; // Make the folder for the user in process directory if (!Directory.Exists(userInProcessDirectory)) Directory.CreateDirectory(userInProcessDirectory); // Create the name for the tempoary METS file? metsInProcessFile = userInProcessDirectory + "\\" + BriefItem.BibID + "_" + BriefItem.VID + ".mets.xml"; // Is this work in the user's SESSION state? qc_item = HttpContext.Current.Session[BriefItem.BibID + "_" + BriefItem.VID + " QC Work"] as SobekCM_Item; if (qc_item == null) { //// Try to pull the full item //Tracer.Add_Trace("Edit_Item_Behaviors_MySobekViewer.Constructor", "Try to pull this sobek complete item"); //qc_item = SobekEngineClient.Items.Get_Sobek_Item(BriefItem.BibID, BriefItem.VID, CurrentUser.UserID, Tracer); //if (qc_item == null) //{ // Tracer.Add_Trace("Edit_Item_Behaviors_MySobekViewer.Constructor", "Unable to build complete item"); // CurrentRequest.Mode = Display_Mode_Enum.Error; // CurrentRequest.Error_Message = "Invalid Request : Unable to build complete item"; // return; //} ////Save to the User's session //HttpContext.Current.Session[BriefItem.BibID + "_" + BriefItem.VID + " QC Work"] = qc_item; // Is there a temporary METS for this item, which is not expired? if ((File.Exists(metsInProcessFile)) && (File.GetLastWriteTime(metsInProcessFile).Subtract(DateTime.Now).Hours < 8)) { // Read the temporary METS file, and use that to build the qc_item qc_item = SobekCM_Item_Factory.Get_Item(metsInProcessFile, BriefItem.BibID, BriefItem.VID, null, Tracer); qc_item.Source_Directory = SobekFileSystem.Resource_Network_Uri(BriefItem); } else { // Just read the normal otherwise ( if we had the ability to deep copy a SobekCM_Item, we could skip this ) qc_item = SobekCM_Item_Factory.Get_Item(BriefItem.BibID, BriefItem.VID, null, Tracer); } // Save to the session, so it is easily available for next time HttpContext.Current.Session[BriefItem.BibID + "_" + BriefItem.VID + " QC Work"] = qc_item; } // If no QC item, this is an error if (qc_item == null) { throw new ApplicationException("Unable to retrieve the item for Quality Control in QC_ItemViewer.Constructor"); } // perform pre-display work Perform_PreDisplay_Work(Tracer); // If there are NO pages, then send this to the upload if (qc_item.Divisions.Page_Count == 0) { CurrentRequest.Mode = Display_Mode_Enum.My_Sobek; CurrentRequest.My_Sobek_Type = My_Sobek_Type_Enum.Page_Images_Management; UrlWriterHelper.Redirect(CurrentRequest); return; } // Get the default QC profile qc_profile = UI_ApplicationCache_Gateway.Configuration.QualityControlTool.Get_Default_Profile(); // If this was a post-back keep the required height and width for the qc area allThumbnailsOuterDiv1Width = -1; allThumbnailsOuterDiv1Height = -1; string temp_width = HttpContext.Current.Request.Form["QC_window_width"] ?? String.Empty; string temp_height = HttpContext.Current.Request.Form["QC_window_height"] ?? String.Empty; if ((temp_width.Length > 0) && (temp_height.Length > 0)) { // Parse the values and save to the session if (Int32.TryParse(temp_width, out allThumbnailsOuterDiv1Width)) HttpContext.Current.Session["QC_AllThumbnailsWidth"] = allThumbnailsOuterDiv1Width; if (Int32.TryParse(temp_height, out allThumbnailsOuterDiv1Height)) HttpContext.Current.Session["QC_AllThumbnailsHeight"] = allThumbnailsOuterDiv1Height; } else { object session_width = HttpContext.Current.Session["QC_AllThumbnailsWidth"]; if (session_width != null) allThumbnailsOuterDiv1Width = (int)session_width; object session_height = HttpContext.Current.Session["QC_AllThumbnailsHeight"]; if (session_height != null) allThumbnailsOuterDiv1Height = (int)session_height; } // See if there were hidden requests hidden_request = HttpContext.Current.Request.Form["QC_behaviors_request"] ?? String.Empty; hidden_main_thumbnail = HttpContext.Current.Request.Form["Main_Thumbnail_File"] ?? String.Empty; hidden_move_relative_position = HttpContext.Current.Request.Form["QC_move_relative_position"] ?? String.Empty; hidden_move_destination_fileName = HttpContext.Current.Request.Form["QC_move_destination"] ?? String.Empty; autonumber_number_system = HttpContext.Current.Request.Form["Autonumber_number_system"] ?? String.Empty; string temp = HttpContext.Current.Request.Form["autonumber_mode_from_form"] ?? "0"; Int32.TryParse(temp, out autonumber_mode_from_form); autonumber_text_only = HttpContext.Current.Request.Form["Autonumber_text_without_number"] ?? String.Empty; autonumber_number_only = HttpContext.Current.Request.Form["Autonumber_number_only"] ?? String.Empty; autonumber_number_system = HttpContext.Current.Request.Form["Autonumber_number_system"] ?? String.Empty; hidden_autonumber_filename = HttpContext.Current.Request.Form["Autonumber_last_filename"] ?? String.Empty; temp = HttpContext.Current.Request.Form["QC_sortable_option"] ?? "-1"; // Check for sortable ( aka, Drag and drop pages ) setting - is it different than user's setting? if (Int32.TryParse(temp, out makeSortable) && (makeSortable > 0) && (makeSortable <= 3)) { if (makeSortable.ToString() != CurrentUser.Get_Setting("QC_ItemViewer:SortableMode", "NULL")) { CurrentUser.Add_Setting("QC_ItemViewer:SortableMode", makeSortable); SobekCM_Database.Set_User_Setting(CurrentUser.UserID, "QC_ItemViewer:SortableMode", makeSortable.ToString()); } } // Check for the autonumber option - is it different than user's setting? temp = HttpContext.Current.Request.Form["QC_autonumber_option"] ?? "-1"; if ((Int32.TryParse(temp, out autonumber_mode)) && (autonumber_mode >= 0) && (autonumber_mode <= 2)) { if (autonumber_mode.ToString() != CurrentUser.Get_Setting("QC_ItemViewer:AutonumberingMode", "NULL")) { CurrentUser.Add_Setting("QC_ItemViewer:AutonumberingMode", autonumber_mode); SobekCM_Database.Set_User_Setting(CurrentUser.UserID, "QC_ItemViewer:AutonumberingMode", autonumber_mode.ToString()); } } // Check for size of thumbnail specified from the URL - is it different than user's settings? if (CurrentRequest.Size_Of_Thumbnails > 0) { if (CurrentRequest.Size_Of_Thumbnails.ToString() != CurrentUser.Get_Setting("QC_ItemViewer:ThumbnailSize", "NULL")) { CurrentUser.Add_Setting("QC_ItemViewer:ThumbnailSize", CurrentRequest.Size_Of_Thumbnails); SobekCM_Database.Set_User_Setting(CurrentUser.UserID, "QC_ItemViewer:ThumbnailSize", CurrentRequest.Size_Of_Thumbnails.ToString()); } } //Get any notes/comments entered by the user notes = HttpContext.Current.Request.Form["txtComments"] ?? String.Empty; if (!(Int32.TryParse(HttpContext.Current.Request.Form["QC_Sortable"], out makeSortable))) makeSortable = 3; // If the hidden move relative position is BEFORE, it is before the very first page if (hidden_move_relative_position == "Before") hidden_move_destination_fileName = "[BEFORE FIRST]"; try { //Call the JavaScript autosave function based on the option selected bool autosaveCacheValue = true; bool autosaveCache = false; //Conversion result of autosaveCacheValue(conversion successful or not) saved in autosaveCache if (HttpContext.Current.Session["autosave_option"] != null) autosaveCache = bool.TryParse(HttpContext.Current.Session["autosave_option"].ToString(), out autosaveCacheValue); bool convert = bool.TryParse(HttpContext.Current.Request.Form["Autosave_Option"], out autosave_option); if (!convert && !autosaveCache) { autosave_option = true; } else if (!convert && autosaveCache) { autosave_option = autosaveCacheValue; } else { HttpContext.Current.Session["autosave_option"] = autosave_option; } } catch (Exception e) { throw new ApplicationException("Error retrieving auto save option. " + e.Message); } // Check for a previously set main thumbnail, or one from the requesting form if (!String.IsNullOrEmpty(hidden_main_thumbnail)) { HttpContext.Current.Session["main_thumbnail_" + qc_item.BibID + "_" + qc_item.VID] = hidden_main_thumbnail; } else if (HttpContext.Current.Session["main_thumbnail_" + qc_item.BibID + "_" + qc_item.VID] == null) { hidden_main_thumbnail = qc_item.Behaviors.Main_Thumbnail.Replace("thm.jpg", ""); HttpContext.Current.Session["main_thumbnail_" + qc_item.BibID + "_" + qc_item.VID] = hidden_main_thumbnail; } else { hidden_main_thumbnail = HttpContext.Current.Session["main_thumbnail_" + qc_item.BibID + "_" + qc_item.VID].ToString(); } //Get the list of associated errors for this item from the database int itemID = SobekCM_Item_Database.Get_ItemID(BriefItem.BibID, BriefItem.VID); Get_QC_Errors(itemID); // Perform any requested actions switch (hidden_request) { case "autosave": case "save": case "complete": //Save the current time HttpContext.Current.Session["QC_timeUpdated"] = DateTime.Now.ToString("hh:mm tt"); // Read the data from the http form, perform all requests, and // update the qc_item (also updates the session and temporary files) // Save this updated information in the temporary folder's METS file for reading later if necessary. if ((Save_From_Form_Request_To_Item(String.Empty, String.Empty)) && ((hidden_request == "save") || (hidden_request == "complete"))) { // If the user selected SAVE or COMPLETE, roll out the new version Move_Temp_Changes_To_Production(); // Redirect differently depending on SAVE or COMPLETE if (hidden_request == "save") { // Forward back to the QC form HttpContext.Current.Response.Redirect(HttpContext.Current.Request.RawUrl, false); HttpContext.Current.ApplicationInstance.CompleteRequest(); CurrentRequest.Request_Completed = true; } else if (hidden_request == "complete") { // Forward to the item CurrentRequest.ViewerCode = String.Empty; UrlWriterHelper.Redirect(CurrentRequest); } } break; case "cancel": Cancel_Current_QC(); // Forward back to the default item view CurrentRequest.ViewerCode = String.Empty; UrlWriterHelper.Redirect(CurrentRequest); break; case "clear_pagination": ClearPagination(); HttpContext.Current.Response.Redirect(HttpContext.Current.Request.RawUrl, false); HttpContext.Current.ApplicationInstance.CompleteRequest(); CurrentRequest.Request_Completed = true; break; case "clear_reorder": Clear_Pagination_And_Reorder_Pages(); HttpContext.Current.Response.Redirect(HttpContext.Current.Request.RawUrl, false); HttpContext.Current.ApplicationInstance.CompleteRequest(); CurrentRequest.Request_Completed = true; break; case "save_error": string error_code = HttpContext.Current.Request.Form["QC_error_number"] ?? String.Empty; string affected_page_index = HttpContext.Current.Request.Form["QC_affected_file"] ?? String.Empty; SaveQcError(itemID, error_code, affected_page_index); break; case "delete_page": // Read the data from the http form, perform all requests, and // update the qc_item (also updates the session and temporary files) string filename_to_delete = HttpContext.Current.Request.Form["QC_affected_file"] ?? String.Empty; if (Save_From_Form_Request_To_Item(String.Empty, filename_to_delete)) { Delete_Resource_File(filename_to_delete); } // Since we deleted a page, we need to roll out our new version Move_Temp_Changes_To_Production(); HttpContext.Current.Response.Redirect(HttpContext.Current.Request.RawUrl, false); HttpContext.Current.ApplicationInstance.CompleteRequest(); CurrentRequest.Request_Completed = true; break; case "delete_selected_pages": // Read the data from the http form, perform all requests, and // update the qc_item (also updates the session and temporary files) List<QC_Viewer_Page_Division_Info> selected_page_div_from_form; if (Save_From_Form_Request_To_Item(String.Empty, String.Empty, out selected_page_div_from_form)) { foreach (QC_Viewer_Page_Division_Info thisPage in selected_page_div_from_form) { if (( thisPage.METS_StructMap_Page_Node.Files != null ) && ( thisPage.METS_StructMap_Page_Node.Files.Count > 0 )) Delete_Resource_File(thisPage.METS_StructMap_Page_Node.Files[0].File_Name_Sans_Extension); } } // Since we deleted a page, we need to roll out our new version Move_Temp_Changes_To_Production(); HttpContext.Current.Response.Redirect(HttpContext.Current.Request.RawUrl, false); HttpContext.Current.ApplicationInstance.CompleteRequest(); CurrentRequest.Request_Completed = true; break; case "move_selected_pages": // Read the data from the http form, perform all requests, and // update the qc_item (also updates the session and temporary files) Save_From_Form_Request_To_Item(hidden_move_destination_fileName, String.Empty); HttpContext.Current.Response.Redirect(HttpContext.Current.Request.RawUrl, false); HttpContext.Current.ApplicationInstance.CompleteRequest(); CurrentRequest.Request_Completed = true; break; } // Get the pages pre-order to be used everywhere else static_pages = qc_item.Divisions.Physical_Tree.Pages_PreOrder_With_Files; if (static_pages == null) static_pages = new List<abstract_TreeNode>(); }