protected void btnSaveChanges_Click(object sender, EventArgs e) { if (!IsValid) { return; } msFileFolder folderToSave; if (isEdit) { folderToSave = targetFolder; } else { folderToSave = new msFileFolder(); folderToSave.ParentFolder = targetFolder.ID; folderToSave.FileCabinet = targetFolder.FileCabinet; } folderToSave.Type = (FileFolderType)Enum.Parse(typeof(FileFolderType), rblType.SelectedValue); folderToSave.Name = tbName.Text; folderToSave.Description = tbDescription.Text; folderToSave.OnlyLeadersCanUploadFiles = cbAdmin.Checked; SaveObject(folderToSave); GoTo("BrowseFileFolder.aspx?contextID=" + targetFolder.ID, string.Format("Folder '{0}' has been saved successfully.", folderToSave.Name)); }
public static MemberSuiteObject GetFileCabinetContext(IConciergeAPIService api, msFileFolder targetFolder) { var msoCabinet = api.Get(targetFolder.FileCabinet).ResultValue; switch (msoCabinet.ClassType) { case msCommitteeFileCabinet.CLASS_NAME: return(api.Get(msoCabinet.SafeGetValue <string>(msCommitteeFileCabinet.FIELDS.Committee)).ResultValue); case msChapterFileCabinet.CLASS_NAME: return(api.Get(msoCabinet.SafeGetValue <string>(msChapterFileCabinet.FIELDS.Chapter)).ResultValue); case msSectionFileCabinet.CLASS_NAME: return(api.Get(msoCabinet.SafeGetValue <string>(msSectionFileCabinet.FIELDS.Section)).ResultValue); case msOrganizationalLayerFileCabinet.CLASS_NAME: return(api.Get(msoCabinet.SafeGetValue <string>(msOrganizationalLayerFileCabinet.FIELDS.OrganizationalLayer)).ResultValue); case msAssociationFileCabinet.CLASS_NAME: return(null); default: throw new NotSupportedException("Unknown cabinet " + msoCabinet.ClassType); } }
protected override void InitializeTargetObject() { base.InitializeTargetObject(); targetFolder = LoadObjectFromAPI <msFileFolder>(ContextID); if (targetFolder == null) { GoToMissingRecordPage(); } }
protected override void InitializeTargetObject() { base.InitializeTargetObject(); targetFolder = LoadObjectFromAPI <msFileFolder>(ContextID); if (targetFolder == null) { GoToMissingRecordPage(); } isEdit = Request.QueryString["isEdit"] == "true"; }
public static void SetupContextAndParentFolders(IConciergeAPIService api, msFileFolder targetFolder, HyperLink hlFolderContext, FolderInfo foldersAndFiles, Repeater rptParentFolders, bool includeTargetFolder) { var mso = GetFileCabinetContext(api, targetFolder); if (mso != null) { hlFolderContext.Text = mso.SafeGetValue <string>("Name"); hlFolderContext.NavigateUrl = NavigationLogic.GetUrlFor(mso); } else { hlFolderContext.Text = "My Digital Library"; hlFolderContext.NavigateUrl = "DigitalLibrary.aspx"; } // now, the parent folders List <PartialFolderInfo> parentFolders = new List <PartialFolderInfo>(); if (foldersAndFiles.ParentFolders != null) { // let's go through the parent folders and find the first one we have access to - and then // we'll start with that // we don't want to start with the root, because we may not have access bool accessEstablished = false; foreach (var folder in foldersAndFiles.ParentFolders) { if (!accessEstablished && !CanAccess(targetFolder.FileCabinet, folder.FolderID, ConciergeAPI.CurrentEntity.ID)) { // do we have access? continue; // no access yet } accessEstablished = true; // ok, we can access from now on parentFolders.Add(folder); } } if (includeTargetFolder) { parentFolders.Add(new PartialFolderInfo { FolderID = targetFolder.ID, FolderName = targetFolder.Name }); } // bind rptParentFolders.DataSource = parentFolders; rptParentFolders.DataBind(); }
protected override void InitializeTargetObject() { base.InitializeTargetObject(); targetFile = LoadObjectFromAPI <msFile>(ContextID); if (targetFile == null) { GoToMissingRecordPage(); } targetFolder = LoadObjectFromAPI <msFileFolder>(targetFile.FileFolder); if (targetFolder == null) // this isn't a folder based file { Response.Redirect("/AccessDenied.aspx"); } }
public static bool CanWriteTo(msFileFolder folder, string entityID) { // assuming that the user has access, checks to see if the person can write to the folder string fileCabinetType; using (var api = ConciergeAPIProxyGenerator.GenerateProxy()) fileCabinetType = api.DetermineObjectType(folder.FileCabinet).ResultValue; // for non-association file cabinets, if it's not protected, it's good! if (fileCabinetType != msAssociationFileCabinet.CLASS_NAME && !folder.OnlyLeadersCanUploadFiles) { return(CanAccess(folder.FileCabinet, folder.ID, entityID)); // we're good } return(HasAdministrativeAccessTo(folder, entityID)); }
protected void rptFolders_OnItemCommand(object source, RepeaterCommandEventArgs e) { var folderId = e.CommandArgument.ToString(); msFileFolder f = LoadObjectFromAPI <msFileFolder>(folderId); if (!DocumentsLogic.CanWriteTo(f, ConciergeAPI.CurrentEntity.ID)) { throw new ConciergeClientException(ConciergeErrorCode.AccessDenied, "You do not have access the delete the specified folder."); } using (var api = GetServiceAPIProxy()) api.DeleteFolderTree(folderId); QueueBannerMessage("The folder (and all subfolders and files) have been successfully deleted."); Refresh(); }
public static bool HasAdministrativeAccessTo(msFileFolder targetFolder, string entityID) { // checks to see if the entity has administrative access to the folder // ok, first, let's see what kind of file cabinet it is using (var api = ConciergeAPIProxyGenerator.GenerateProxy()) { var msoFileCabinet = api.Get(targetFolder.FileCabinet).ResultValue; switch (msoFileCabinet.ClassType) { case msCommitteeFileCabinet.CLASS_NAME: return(CommitteeLogic.IsAdministrativeMember(api, msoFileCabinet.SafeGetValue <string>( msCommitteeFileCabinet.FIELDS.Committee), ConciergeAPI.CurrentEntity.ID)); case msSectionFileCabinet.CLASS_NAME: case msChapterFileCabinet.CLASS_NAME: case msOrganizationalLayerFileCabinet.CLASS_NAME: string typeName = msoFileCabinet.ClassType.Replace("FileCabinet", ""); Search sLeaders = new Search(typeName + "Leader"); sLeaders.AddCriteria(Expr.Equals(typeName, msoFileCabinet[typeName])); sLeaders.AddCriteria(Expr.Equals(msMembershipLeader.FIELDS.Individual, entityID)); sLeaders.AddOutputColumn("ListIndex"); sLeaders.AddSortColumn("ListIndex"); return(api.GetSearchResult(sLeaders, 0, 1).TotalRowCount > 0); case msAssociationFileCabinet.CLASS_NAME: return(false); // you never have write access default: throw new NotSupportedException("Unkown file cabinet type" + msoFileCabinet.ClassType); } } }