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));
    }
示例#2
0
    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);
        }
    }
示例#3
0
 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";
    }
示例#5
0
    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();
    }
示例#6
0
    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");
        }
    }
示例#7
0
    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));
    }
示例#8
0
    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();
    }
示例#9
0
    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);
            }
        }
    }