Пример #1
0
        private void buttonOK_Click(object sender, EventArgs e)
        {
            AddUserForm addUserForm = new AddUserForm(false);

            if (addUserForm.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            _resultUser = addUserForm.ResultUser;
            LocalTestingProvider provider     = null;
            TestHelper           selectedTest = listBox.SelectedItem as TestHelper;

            if (selectedTest.IsMasterTest)
            {
                provider = new LocalTestingProvider(DataCreator.CreateFullTestorDataSet(_testHelpers),
                                                    selectedTest);
            }
            else
            {
                provider = new LocalTestingProvider(selectedTest.TestorData,
                                                    selectedTest);
            }
            provider.SetStudentName(String.Format("{0} {1} {2}", HtmlStore.GetString(_resultUser.LastName),
                                                  HtmlStore.GetString(_resultUser.FirstName), HtmlStore.GetString(_resultUser.SecondName)));
            TestForm testForm = new TestForm(provider);

            testForm.ShowDialog();
        }
Пример #2
0
 internal override void ProcessQuestion(bool isNewQuestion)
 {
     if (isNewQuestion)
     {
         if (_index == _questIds.Count - 1)
         {
             _index = -1;
         }
         _index++;
     }
     try
     {
         int          qId       = _questIds[_index];
         AppealResult appeal    = TestClient.GetQuestionAppeal(_statistics.TestSessionId, qId, true);
         var          htmlStore = HtmlStore.GetHtmlStore(appeal.TestorData, qId);
         htmlStore.IsAppeal      = true;
         htmlStore.AppealIsRight = appeal.IsRightAnswer;
         htmlStore.Answer        = appeal.Answer;
         _currentQuestion        = htmlStore;
     }
     catch (Exception ex)
     {
         SystemMessage.ShowErrorMessage(ex);
     }
 }
Пример #3
0
        public static void CreateMasterTest()
        {
            InputBox ib = new InputBox("Имя мастер теста", "Введите имя мастер теста:");

            if (ib.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            if (ProjectState.TestHelpers.Where(c => c.TestName == ib.Input).Count() > 0)
            {
                SystemMessage.ShowWarningMessage("Данное имя теста уже используется.");
                return;
            }
            TestorData td = new TestorData();

            TestorData.CoreTestsRow testRow = HtmlStore.CreateCoreTest(td, ib.Input);
            testRow.IsMasterTest = true;
            td.CoreTests.AddCoreTestsRow(testRow);
            TestHelper testHelper = new TestHelper(ProjectState.DataPackageManager);

            testHelper.TestKey      = testRow.TestKey.ToString();
            testHelper.ConvTime     = DateTime.Now;
            testHelper.FullFileName = String.Empty;
            testHelper.TestorData   = td;
            testHelper.TestName     = ib.Input;
            testHelper.QuestCount   = 0;
            testHelper.IsMasterTest = true;
            List <TestHelper> helperList = new List <TestHelper>();

            helperList.Add(testHelper);
            ProjectState.AddTests(helperList);
        }
Пример #4
0
        public TestContentForm(TestorData data)
        {
            InitializeComponent();
            _data = data;
            int i = 0;

            foreach (var test in ProjectState.TestHelpers.OrderBy(c => c.TestName))
            {
                if (test.IsMasterTest)
                {
                    continue;
                }
                if (test.IsTestorDataLoaded && test.TestorData == data)
                {
                    _index = i;
                }
                tscbTests.Items.Add(test);
                i++;
            }
            tscbTests.SelectedIndex = _index;
            bool canBackForward = ProjectState.TestHelpers.Count > 1;

            tsbBackTest.Enabled    = canBackForward;
            tsbForwardTest.Enabled = canBackForward;

            _provider = new EditProvider(HtmlStore.GetHtmlStore(_data, 1));
            _provider.ProviderMode = ProviderMode.EditMode;
            TestingHttpServer.StartServer(_provider);
            TestingHttpServer.ServerNotStarted.WaitOne();
            webBrowserQuestion.Navigate(TestingHttpServer.BaseUrl);
        }
Пример #5
0
        public static void UpdateTest(string fileName, HtmlStore[] store)
        {
            TestHelper helper = TestHelpers.Where(c => c.FullFileName == fileName).First();
            FileInfo   fi     = new FileInfo(fileName);

            helper.ConvTime = fi.LastWriteTime;
            helper.TestorData.CoreBLOBs.Clear();
            int qCount = helper.TestorData.CoreQuestions.Count();

            double[] marks = new double[helper.TestorData.CoreQuestions.Count()];
            for (int i = 0; i < qCount; i++)
            {
                marks[i] = helper.TestorData.CoreQuestions[i].QuestionMark;
            }
            helper.TestorData.CoreAnswers.Clear();
            helper.TestorData.CoreQuestions.Clear();
            HtmlStore.AddToDataset(helper.TestorData, helper.TestorData.CoreTests[0], store);
            helper.QuestCount = helper.TestorData.CoreQuestions.Count();
            for (int i = 0; i < helper.TestorData.CoreQuestions.Count(); i++)
            {
                if (i >= qCount)
                {
                    break;
                }
                helper.TestorData.CoreQuestions[i].QuestionMark = (short)marks[i];
            }
            HasChanges = true;
            OnTestHelpersChanged();
        }
Пример #6
0
        public static QuestionType GetQuestionType(HtmlStore quest)
        {
            QuestionType retValue = QuestionType.SingleAnswerQuestion;

            if (IsDigitAnswerQuestion(quest))
            {
                retValue = QuestionType.DigitAnswerQuestion;
            }
            else
            if (IsMultiAnswerQuestion(quest))
            {
                retValue = QuestionType.MultiAnswerQuestion;
            }
            else
            if (IsStringAnswerQuestion(quest))
            {
                retValue = QuestionType.StringAnswerQuestion;
            }
            else
            if (IsMultiWordAnswerQuestion(quest))
            {
                retValue = QuestionType.MultiWordAnswerQuestion;
            }
            return(retValue);
        }
Пример #7
0
 public void CreateMasterTest(string testName)
 {
     TestorData data = new TestorData();
     TestorData.CoreTestsRow row = HtmlStore.CreateCoreTest(data, testName);
     row.IsMasterTest = true;
     data.CoreTests.Rows.Add(row);
     SendTests(data, new List<int>());
 }
Пример #8
0
 private void InitNextQuestStage()
 {
     _sb              = new StringBuilder();
     _isAnswerMode    = false;
     _currentChar     = 'a';
     _currentQuestion = new HtmlStore();
     _qIndex++;
 }
Пример #9
0
        private static bool IsStringAnswerQuestion(HtmlStore quest)
        {
            bool retValue = false;

            if (quest.SubItems.Count == 1)
            {
                retValue = quest.SubItems[0].IsTrue;
            }
            return(retValue);
        }
Пример #10
0
        private static bool IsMultiWordAnswerQuestion(HtmlStore quest)
        {
            bool retValue = false;

            if (quest.Html.IndexOf("&lt;@") > -1)
            {
                retValue = true;
            }
            return(retValue);
        }
Пример #11
0
        private static bool IsMultiAnswerQuestion(HtmlStore quest)
        {
            bool retValue  = false;
            int  trueCount = quest.SubItems.Where(c => c.IsTrue == true).Count();

            if (trueCount > 1)
            {
                retValue = true;
            }
            return(retValue);
        }
Пример #12
0
 public AppealForm(TestSessionStatistics currentSession)
 {
     InitializeComponent();
     _currentSession = currentSession;
     this.Text      += String.Format(" - {0} {1} {2}", HtmlStore.GetString(_currentSession.LastName),
                                     HtmlStore.GetString(_currentSession.FirstName), HtmlStore.GetString(_currentSession.SecondName));
     _questions = StaticServerProvider.TestClient.GetSessionQuestions(_currentSession.TestSessionId);
     _provider  = new AppealProvider(_currentSession, _questions, null);
     TestingHttpServer.StartServer(_provider);
     TestingHttpServer.ServerNotStarted.WaitOne();
     webBrowser.Navigate(TestingHttpServer.BaseUrl);
 }
Пример #13
0
        private void buttonSelectStudent_Click(object sender, EventArgs e)
        {
            ClientSelectUserForm selectUser = new ClientSelectUserForm();

            if (selectUser.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            _resultUser             = selectUser.ResultUser;
            textBoxStudentName.Text = String.Format("{0} {1} {2}", HtmlStore.GetString(_resultUser.LastName),
                                                    HtmlStore.GetString(_resultUser.FirstName), HtmlStore.GetString(_resultUser.SecondName));
        }
Пример #14
0
 private void AnsversProsess(string rtf, HtmlStore quest)
 {
     using (RichTextBox rtq = new RichTextBox())
     {
         rtq.Rtf = rtf;
         rtq.AppendText("►");
         int    start = rtq.Find("a)");
         string st    = "b)";
         bool   b     = true;
         int    n     = 98;
         using (RichTextBox Rta = new RichTextBox())
         {
             int end = rtq.Find(st, start + 2, RichTextBoxFinds.MatchCase);
             if (end == -1)
             {
                 end = rtq.Find("►", start + 2, RichTextBoxFinds.MatchCase);
                 b   = false;;
             }
             while (end != -1)
             {
                 bool isTrue = false;
                 rtq.Select(start + 2, end - start - 2);
                 Rta.Rtf = rtq.SelectedRtf;
                 start   = end;
                 n++;
                 st = (char)n + ")";
                 if (b)
                 {
                     end = rtq.Find(st, start + 2, RichTextBoxFinds.MatchCase);
                 }
                 else
                 {
                     end = -1;
                 }
                 if ((end == -1) && (b))
                 {
                     end = rtq.Find("►", start + 2, RichTextBoxFinds.MatchCase);
                     b   = false;;
                 }
                 if (Rta.Find("!!!", RichTextBoxFinds.MatchCase) > -1)
                 {
                     Rta.Select(Rta.Find("!!!", RichTextBoxFinds.MatchCase), 3);
                     Rta.SelectedText = String.Empty;
                     isTrue           = true;
                 }
                 HtmlStore answer = Rtf2HTML.GetHtml(Rta.Rtf);
                 answer.IsTrue = isTrue;
                 quest.SubItems.Add(answer);
             }
         }
     }
 }
Пример #15
0
        public QuestAnswerResult ProcessAnswer(int questId, Dictionary <string, List <string> > requestParams)
        {
            Debug.Assert(questId > 0);

            QuestAnswerResult retValue = new QuestAnswerResult();

            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                var session = (from c in dataContext.TestSessions
                               join x in dataContext.CoreTests on c.TestId equals x.TestId
                               where c.EndTime == null && c.UserId == Provider.CurrentUser.UserId
                               select new
                {
                    x.TestId,
                    x.TimeLimit,
                    c.TestSessionId,
                    c.StartTime,
                    c.AdditionalTime
                }).First();
                int timeLimit = session.TimeLimit;
                if (timeLimit != 0 && session.AdditionalTime.HasValue)
                {
                    timeLimit += session.AdditionalTime.Value;
                }
                if (session.TimeLimit != 0 && (DateTime.Now - session.StartTime).TotalMinutes > timeLimit + 1)
                {
                    throw new Exception("Время истекло");
                }
                TestorData           testorData      = GetQuestion(questId, true, false, false);
                HtmlStore            currentQuestion = HtmlStore.GetHtmlStore(testorData, questId);
                BaseQuestionProvider qp = QuestionsHtmlFactory.GetQuestionProvider(currentQuestion);
                string message          = null;
                string answer           = null;
                retValue.isRightAnswer = qp.IsRightAnswer(requestParams, ref message, ref answer);
                retValue.Message       = message;
                retValue.Score         = 0;
                if (!retValue.isRightAnswer.HasValue)
                {
                    return(retValue);
                }
                if (retValue.isRightAnswer.Value)
                {
                    retValue.Score = testorData.CoreQuestions.Where(c => c.QuestionId == questId).FirstOrDefault().QuestionMark;
                }
                var tsq = dataContext.TestSessionQuestions.Where(
                    c => c.QuestionId == questId && c.TestSessionId == session.TestSessionId).First();
                tsq.IsRightAnswer = retValue.isRightAnswer;
                tsq.Answer        = answer;
                dataContext.SubmitChanges();
            }
            return(retValue);
        }
Пример #16
0
        internal override void ProcessQuestion(bool isNewQuestion)
        {
            if (isNewQuestion)
            {
                InitNextId(0);
            }
            if (State == ProviderState.Results)
            {
                return;
            }
            int qId = _questIds[_index];

            _currentQuestion = HtmlStore.GetHtmlStore(_testorData, qId);
        }
Пример #17
0
        private void linkLabelSelectStudent_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            ClientSelectUserForm selectUser = new ClientSelectUserForm();

            if (selectUser.ShowDialog() != DialogResult.OK)
            {
                _resultUser         = null;
                textBoxStudent.Text = String.Empty;
            }
            else
            {
                _resultUser         = selectUser.ResultUser;
                textBoxStudent.Text = String.Format("{0} {1} {2}", HtmlStore.GetString(_resultUser.LastName),
                                                    HtmlStore.GetString(_resultUser.FirstName), HtmlStore.GetString(_resultUser.SecondName));
            }
            GetStatistics();
        }
Пример #18
0
        private void TestIsDone(FileInfo file, HtmlStore[] htmlStore)
        {
            string testName = String.Empty;
            EndConvertingDelegate endConvertingDelegate = new EndConvertingDelegate(EndConverting);

            if (htmlStore == null)
            {
                SystemMessage.ShowErrorMessage("Ошибка конвертации тестов.");
                _cancel = true;
                this.Invoke(endConvertingDelegate, new object[] { });
                return;
            }
            if (_isUpdate)
            {
                BeginUpdateDelegate updateDelegate = new BeginUpdateDelegate(UpdateTest);
                this.Invoke(updateDelegate, new object[] { file.FullName, htmlStore });
                return;
            }
            TestorData testorData = HtmlStore.GetDataSet(htmlStore, file, out testName);
            TestHelper testHelper = new TestHelper(ProjectState.DataPackageManager);

            testHelper.ConvTime     = file.LastWriteTime;
            testHelper.TestId       = testorData.CoreTests[0].TestId;
            testHelper.FullFileName = file.FullName;
            testHelper.TestorData   = testorData;
            testHelper.TestName     = testName;
            testHelper.QuestCount   = testorData.CoreQuestions.Count();
            foreach (var test in testorData.CoreTests)
            {
                testHelper.TestKey = test.TestKey.ToString();
            }
            _tests.Add(testHelper);
            RefreshListDelegate refreshListDelegate = new RefreshListDelegate(RefreshList);

            this.Invoke(refreshListDelegate, new object[] { testHelper.TestName });
            lock (this)
            {
                _testCount--;
                if (_testCount == 0 || _cancel)
                {
                    this.Invoke(endConvertingDelegate, new object[] { });
                    return;
                }
                ConvertNext();
            }
        }
Пример #19
0
        private void QuestionProsessAsync(object param)
        {
            object[]         paramArr   = (object[])param;
            string           rtf        = (string)paramArr[0];
            string           rtfAnswers = (string)paramArr[1];
            ManualResetEvent mre        = (ManualResetEvent)paramArr[2];
            int       questionIndex     = (int)paramArr[3] - 2;
            HtmlStore quest             = new HtmlStore();

            quest.QuestIndex = questionIndex;
            lock (_htmlStoreList)
                _htmlStoreList.Add(quest);
            Rtf2HTML.GetHtml(rtf, ref quest);
            AnsversProsess(rtfAnswers, quest);
            quest.QuestionType = QuestionTypeHelper.GetQuestionType(quest);
            mre.Set();
        }
Пример #20
0
 private void bindingSourceQuest_CurrentItemChanged(object sender, EventArgs e)
 {
     if (bindingSourceQuest.CurrencyManager.Position == -1)
     {
         return;
     }
     TestorData.CoreQuestionsRow currentRow = ((bindingSourceQuest.Current as DataRowView).Row
                                               as TestorData.CoreQuestionsRow);
     tscbMark.SelectedIndex = (int)Math.Round(currentRow.QuestionMark, 0) - 1;
     try
     {
         _provider.SetHtmlStore(HtmlStore.GetHtmlStore(_data, currentRow.QuestionId));
         webBrowserQuestion.Navigate(TestingHttpServer.BaseUrl);
     }
     catch
     {
     }
 }
Пример #21
0
        public static string GetQuestionHtml(HtmlStore store, ProviderMode mode)
        {
            if (store == null)
            {
                return(null);
            }
            StringBuilder sb = new StringBuilder();

            sb.Append(ConvertImageUris(store.Html, store.QuestIndex, mode));
            sb.Append("<table width=\"100%\" style=\"border:0px;border-collapse:collapse;margin:8px 0px 8px 0px;\" cellspacing=\"0\"><tr><td style=\"height:1px;background-color:#7d9acb;padding:0px;margin:0px;\"></td></tr></table>");
            BaseQuestionProvider questProvider = GetQuestionProvider(store);

            if (questProvider == null)
            {
                questProvider = new NoAnswerQuestionProvider(store);
            }
            sb.Append(ConvertImageUris(questProvider.ProcessHtml(), store.QuestIndex, mode));
            return(sb.ToString());
        }
Пример #22
0
        internal override void ProcessQuestion(bool isNewQuestion)
        {
            if (_webServerProvider == null)
            {
                StartTestParams startParams = StaticServerProvider.TestClient.GetNotCommitedSessions(0, false);
                if (startParams != null && startParams.AdditionalTime.HasValue)
                {
                    AdditionalTime = startParams.AdditionalTime.Value;
                    OnTimeChanged();
                }
            }

            if (isNewQuestion)
            {
                InitNextId(0);
            }
            if (State == ProviderState.Results)
            {
                return;
            }
            int qId = _questIds[_index];

            try
            {
                bool getBlobs = _webServerProvider == null;
                if (_useCompression)
                {
                    _currentQuestion = HtmlStore.GetHtmlStore(DataCompressor.DecompressData <TestorData>(TestClient.GetQuestion(qId, getBlobs)), qId);
                }
                else
                {
                    _currentQuestion = HtmlStore.GetHtmlStore(TestClient.GetQuestionData(qId, getBlobs), qId);
                }
            }
            catch (TimeoutException)
            {
                _currentQuestion = null;
            }
            catch
            {
                State = ProviderState.Results;
            }
        }
Пример #23
0
        public override string ProcessHtml()
        {
            StringBuilder sb = new StringBuilder();

            if (_htmlStore.IsAppeal)
            {
                bool isTrue = false;
                if (_htmlStore.SubItems.Count > 0)
                {
                    isTrue = _htmlStore.AppealIsRight;
                }

                string answer = HtmlStore.GetString(_htmlStore.Answer).Replace(";", String.Empty);

                sb.Append("&nbsp;&nbsp;Верный ответ:&nbsp;&nbsp;");
                sb.Append(_htmlStore.SubItems[0].Html);

                if (isTrue)
                {
                    sb.Append("<br/><font color=\"green\">");
                }
                else if (answer.Length == 0)
                {
                    sb.Append("<br/><font color=\"blue\">");
                }
                else
                {
                    sb.Append("<br/><font color=\"red\">");
                }

                sb.Append("&nbsp;&nbsp;Данный ответ:&nbsp;&nbsp;");
                sb.Append(answer);
                sb.Append("</font>");
                sb.Append("<br/>");
            }
            else
            {
                sb.Append("<br/>&nbsp;&nbsp;Введите ответ:&nbsp;&nbsp");
                sb.Append("<input type=\"text\" name=\"tcv_testortext\" size=\"50\" maxlength=\"100\" onkeydown=\"if(window.event.keyCode==13)return false;\" autocomplete=\"off\"/><br/><br/>");
            }
            return(sb.ToString());
        }
Пример #24
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Context.User.Identity.IsAuthenticated)
            {
                Response.Redirect("~/Default.aspx");
            }
            if (!IsPostBack)
            {
                InitAppointedTests();
            }
            var    currentUser = LocalUser.SecurityProvider.CurrentUser;
            string userName    = String.Format(":: {0} {1} {2}", HtmlStore.GetString(currentUser.LastName),
                                               HtmlStore.GetString(currentUser.FirstName), HtmlStore.GetString(currentUser.SecondName));
            Label lbl = (this.Master.FindControl("userName") as Label);

            if (String.IsNullOrEmpty(userName.Trim()))
            {
                lbl.Text = currentUser.Login;
            }
            else
            {
                lbl.Text = userName;
            }
            TestorCoreUser user = LocalUser.SecurityProvider.CurrentUser;

            if (LocalUser.IsIntranet)
            {
                user.Email = "скрыт";
            }
            user.UserGroups     = LocalUser.UserManagement.GetUserGroups(user.UserId);
            userForm.DataSource = new TestorCoreUser[] { user };
            userForm.DataBind();

            List <TestSessionStatistics> statistics = new List <TestSessionStatistics>();

            statistics.AddRange(LocalUser.TestClient.GetStatistics(new DateTime(1900, 1, 1), DateTime.MaxValue,
                                                                   0, 0, LocalUser.SecurityProvider.CurrentUser.UserId));
            GridViewSessions.DataSource = statistics;
            GridViewSessions.DataBind();
        }
Пример #25
0
        public TestorTreeItem CreateFolder(int parentId, string folderName)
        {
            Debug.Assert(parentId >= 0);
            Debug.Assert(!String.IsNullOrEmpty(folderName));

            Provider.TestRoles(TestorUserRole.Administrator, TestorUserRole.Teacher, TestorUserRole.Laboratorian);

            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                TestorData td = new TestorData();
                TestorData.CoreTestsRow testRow = HtmlStore.CreateCoreTest(td, folderName);
                CoreTest coreTest = new CoreTest();
                CreateCoreTest(testRow, coreTest);
                dataContext.CoreTests.InsertOnSubmit(coreTest);
                dataContext.SubmitChanges();
                int            result   = dataContext.AddTestTreeItem(GetId(parentId), (int)TestorItemType.Folder, coreTest.TestId, Provider.CurrentUser.UserId);
                TestorTreeItem retValue = new TestorTreeItem(
                    result, coreTest.TestId, folderName, TestorItemType.Folder, new TestorTreeItem[] { });
                retValue.ItemOwner = Provider.CurrentUser.UserId;
                return(retValue);
            }
        }
Пример #26
0
        public byte[] GetTestHTML(int testId)
        {
            Debug.Assert(testId > 0);

            Provider.TestRoles(TestorUserRole.Administrator, TestorUserRole.Teacher, TestorUserRole.Laboratorian);
            Provider.TestCoreTestsAccess(testId);

            List <HtmlStore> retValue = new List <HtmlStore>();

            using (DataClassesTestorCoreDataContext dataContext = new DataClassesTestorCoreDataContext(TestorSecurityProvider.ConnectionString))
            {
                var quests = from c in dataContext.CoreQuestions
                             where c.TestId == testId
                             orderby c.QuestionId
                             select c;

                foreach (var quest in quests)
                {
                    HtmlStore store = new HtmlStore();
                    store.Html = quest.Question;
                    foreach (var answer in quest.CoreAnswers)
                    {
                        HtmlStore answerStore = new HtmlStore();
                        answerStore.Html   = answer.Answer;
                        answerStore.IsTrue = answer.IsTrue;
                        store.SubItems.Add(answerStore);
                    }

                    foreach (var blob in quest.CoreBLOBs)
                    {
                        store.Images.Add(blob.BLOBId, blob.BLOBContent.ToArray());
                    }

                    retValue.Add(store);
                }
                return(DataCompressor.CompressData <HtmlStore[]>(retValue.ToArray()));
            }
        }
Пример #27
0
        private void AddAnswer(string answerHTML)
        {
            HtmlStore answer = new HtmlStore();

            if (answerHTML.Contains("!!!"))
            {
                answer.IsTrue = true;
                answerHTML    = answerHTML.Replace("!!!", String.Empty);
            }
            else
            {
                string aHTML       = ReplaceFont(answerHTML);
                Regex  trueRegular = new Regex(@"![#]*![#]*!");
                Match  match       = trueRegular.Match(aHTML);
                if (match.Success)
                {
                    answer.IsTrue = true;
                    answerHTML    = answerHTML.Remove(match.Index, match.Length);
                }
            }
            answer.Html = answerHTML.Trim();
            _currentQuestion.SubItems.Add(answer);
        }
Пример #28
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (LocalUser.IsIntranet && !Context.User.Identity.IsAuthenticated)
            {
                Response.Redirect("~/Login.aspx");
            }
            StartTestParams ncs = LocalUser.TestClient.GetNotCommitedSessions(0, false);

            if (ncs != null)
            {
                Server.Transfer("~/Testing.aspx");
            }
            MultiViewMain.ActiveViewIndex = 0;
            LabelTestname.Visible         = false;
            requirementsPanel.Visible     = false;
            if (Context.User.Identity.IsAuthenticated)
            {
                var currentUser = LocalUser.SecurityProvider.CurrentUser;
                if (currentUser == null)
                {
                    FormsAuthentication.SignOut();
                    Response.Redirect("~/Login.aspx");
                }
                string userName = String.Format(":: {0} {1} {2}", HtmlStore.GetString(currentUser.LastName),
                                                HtmlStore.GetString(currentUser.FirstName), HtmlStore.GetString(currentUser.SecondName));
                Label lbl = (this.Master.FindControl("userName") as Label);
                if (String.IsNullOrEmpty(userName.Trim()))
                {
                    lbl.Text = currentUser.Login;
                }
                else
                {
                    lbl.Text = userName;
                }
            }
            if (InitPageMode())
            {
                InitTree();
            }
            else
            {
                InitTestList();
                InitNavigator();
                if (_currentItem.ItemType == TestorItemType.Test ||
                    _currentItem.ItemType == TestorItemType.MasterTest)
                {
                    MultiViewMain.ActiveViewIndex = 2;
                    postButton.Text = "Приступить к тестированию";
                    _currentTest    = DataCompressor.DecompressData <TestorData>(
                        LocalUser.TestEdit.GetTestSettings(_currentItem.TestId.Value));
                    testDetails.Text = HttpHandler.GetPreTestingHtml(_currentTest.CoreTests[0]);
                    TestorData.CoreTestsRow test = _currentTest.CoreTests[0];
                    LabelTestname.Visible = true;
                    RemoteTestingProvider _provider = new RemoteTestingProvider(LocalUser.WebServerProvider, _currentItem,
                                                                                _currentTest, null, false);
                    if (!_provider.IsTestActive)
                    {
                        postButton.Enabled      = false;
                        LabelTestname.ForeColor = Color.Red;
                        LabelTestname.Text      = _provider.NotActiveMessage;
                        if (_provider.RequirementsTests != null)
                        {
                            postButton.Enabled              = false;
                            LabelTestname.Text              = "Перед прохлждением данного теста необходимо пройти предыдущие тесты";
                            LabelTestname.ForeColor         = Color.Red;
                            requirementsPanel.Visible       = true;
                            requirementsRepeater.DataSource = _provider.RequirementsTests;
                            requirementsRepeater.DataBind();
                        }
                        return;
                    }
                    if (LocalUser.SecurityProvider.CurrentUser.UserRole == TestorUserRole.Administrator ||
                        LocalUser.SecurityProvider.CurrentUser.UserRole == TestorUserRole.Teacher ||
                        LocalUser.SecurityProvider.CurrentUser.UserRole == TestorUserRole.Laboratorian)
                    {
                        LabelTestname.Text = String.Format("Тест: <a href=\"/Manage/Statistics.aspx?testId={0}\">{1}</a>", _currentItem.TestId, _currentItem.ItemName.Trim());
                    }
                    else
                    {
                        LabelTestname.Text = String.Format("Тест: \"{0}\"", _currentItem.ItemName.Trim());
                    }
                    if (postButton.Attributes[BUTTON_MODE] == NULL_VALUE)
                    {
                        postButton.Attributes[BUTTON_MODE] = NTMODE_VALUE;
                    }
                    else
                    {
                        postButton.Attributes[BUTTON_MODE] = TESTING_VALUE;
                    }
                    postButton.Attributes[BUTTON_VALUE] = _currentItem.ItemId.ToString();
                }
            }
        }
Пример #29
0
 public EditProvider(HtmlStore quest)
 {
     _currentQuestion = quest;
     State            = ProviderState.Testing;
 }
Пример #30
0
 public void SetHtmlStore(HtmlStore quest)
 {
     _currentQuestion = quest;
 }