コード例 #1
0
        public IEnumerable <ElFinderContent <string> > ElGetList(string id, ElFinderListMode mode, out ElFinderWorkingDirectory <string> current)
        {
            var result = new List <ElFinderContent <string> >();

            //папка по умолчанию обязательна для указания в качестве текущей
            current = new ElFinderWorkingDirectory <string>(new ElFinderDirectory <string>(_workDirName.EncodePath())
            {
                Name     = _workDirName,
                DateTime = DateTime.Now,
                Rights   = ElFinderRights.Read
            }, _workDirName, new Uri("/files/", UriKind.Relative), new Uri("/files/tmb/", UriKind.Relative));

            if (!String.IsNullOrEmpty(id))
            {
                var relPath = id.DecodePath();
                if (relPath.StartsWith(_workDirName))                //определение корневой папки в случае если их несколько в принципе можно реализовать класс, который будет реализовывать подключение нужных IElFinderStoreInterface в зависимости от папки, реализация думаю будет не сложна
                {
                    var path = TranslatePath(_workDirName, _workDirPath, relPath);

                    //определение текущей папки для вывода
                    current = new ElFinderWorkingDirectory <string>(GetEntry(_workDirName, _workDirPath, new DirectoryInfo(path)), relPath, new Uri("/files/", UriKind.Relative), new Uri("/files/tmb/", UriKind.Relative));

                    if (mode.HasFlag(ElFinderListMode.Children))                    //вывести список папки
                    {
                        result.AddRange(Directory.GetDirectories(path).Select(d => GetEntry(_workDirName, _workDirPath, new DirectoryInfo(d))));
                        result.AddRange(Directory.GetFiles(path).Select(d => GetEntry(_workDirName, _workDirPath, new FileInfo(d))));
                    }

                    if (mode.HasFlag(ElFinderListMode.Parents))                    //вывод указанной папки и родительских для нее
                    {
                        result.Add(GetEntry(_workDirName, _workDirPath, new DirectoryInfo(path)));
                        if (!path.Equals(_workDirPath))
                        {
                            result.Add(GetEntry(_workDirName, _workDirPath, new DirectoryInfo(path).Parent));
                        }
                    }

                    if (mode.HasFlag(ElFinderListMode.ParentsToRoot))                    //вывести все родительские папки вплоть до корневой, иначе будет запрос через Parents
                    {
                    }
                }
            }
            if (mode.HasFlag(ElFinderListMode.Root))                          //вывести корневые папки
            {
                if (!result.Any(c => c.Id.Equals(_workDirName.EncodePath()))) //не выводить повторно если уже выведена
                {
                    result.Add(GetEntry(_workDirName, _workDirPath, new DirectoryInfo(_workDirPath)));
                }
            }
            return(result);
        }
コード例 #2
0
        public IEnumerable <ElFinderContent <String> > ElGetList(String id, ElFinderListMode mode, out ElFinderWorkingDirectory <String> current)
        {
            var result = new List <ElFinderContent <string> >();
            ElFinderWorkingDirectory <String> tcurrent;

            var controller = String.IsNullOrEmpty(id) ? _controllers.Values.First() : GetCurrentStoreInterface(id.DecodePath());

            result.AddRange(controller.ElGetList(id, mode, out current));

            if (mode.HasFlag(ElFinderListMode.Root))
            {
                result.AddRange(_controllers.Values.Where(v => !v.Equals(controller)).SelectMany(c => c.ElGetList(String.Empty, ElFinderListMode.Root, out tcurrent)));
            }
            return(result);
        }
コード例 #3
0
        public static IEnumerable <ElFinderContent <T> > ElGetList <T>(this IElFinderStoreInterface <T> store, T id, ElFinderListMode mode)
        {
            ElFinderWorkingDirectory <T> content;

            return(store.ElGetList(id, mode, out content));
        }