예제 #1
0
        public Course LoadCourse(DirectoryInfo dir)
        {
            var courseId = dir.Name;

            var courseXmls = dir.GetFiles("course.xml", SearchOption.AllDirectories).ToList();

            if (courseXmls.Count == 1)
            {
                dir = courseXmls[0].Directory;
            }
            else
            {
                dir = dir.HasSubdirectory("Slides") ? dir.Subdirectory("Slides") : dir;
            }

            var settings = CourseSettings.Load(dir);

            if (string.IsNullOrEmpty(settings.Title))
            {
                settings.Title = GetCourseTitleFromFile(dir);
            }

            var units  = LoadUnits(dir, settings).ToList();
            var slides = units.SelectMany(u => u.Slides).ToList();

            CheckDuplicateSlideIds(slides);
            AddDefaultScoringGroupIfNeeded(units, slides, settings);
            CalculateScoringGroupScores(units, settings);

            return(new Course(courseId, units, settings, dir));
        }
예제 #2
0
        public Course LoadCourse(DirectoryInfo dir)
        {
            var courseId = dir.Name;

            dir = dir.HasSubdirectory("Slides") ? dir.Subdirectory("Slides") : dir;
            var settings = CourseSettings.Load(dir);
            var slides   = LoadSlides(dir, settings).ToArray();

            CheckDuplicateSlideIds(slides);
            var notes = LoadInstructorNotes(dir, courseId);
            var title = settings.Title ?? GetTitle(dir);

            return(new Course(courseId, title, slides, notes, settings, dir));
        }
예제 #3
0
        public Course LoadCourse(DirectoryInfo dir)
        {
            var courseId = dir.Name;

            var courseXmls = dir.GetFiles("course.xml", SearchOption.AllDirectories).ToList();

            if (courseXmls.Count == 1)
            {
                dir = courseXmls[0].Directory;
            }
            else
            {
                dir = dir.HasSubdirectory("Slides") ? dir.GetSubdirectory("Slides") : dir;
            }

            var settings = CourseSettings.Load(dir);

            if (string.IsNullOrEmpty(settings.Title))
            {
                try
                {
                    settings.Title = GetCourseTitleFromFile(dir);
                }
                catch (Exception e)
                {
                    throw new CourseLoadingException(
                              "Не удалось прочитать настройки курса. Скорее всего, отсутствует или неправильно заполнен файл course.xml."
                              );
                }
            }

            var units  = LoadUnits(dir, settings, courseId).ToList();
            var slides = units.SelectMany(u => u.Slides).ToList();

            CheckDuplicateSlideIds(slides);
            AddDefaultScoringGroupIfNeeded(units, slides, settings);
            CalculateScoringGroupScores(units, settings);

            return(new Course(courseId, units, settings, dir));
        }