public static System.Web.WebPages.HelperResult Block(AbstractQuestionBlock block, BlockRenderContext context)
        {
            return(new System.Web.WebPages.HelperResult(__razor_helper_writer => {
                var mark = "";
                var style = "";
                QuizBlockData model = context.GetBlockData(block);
                if (model.QuizState != QuizState.NotPassed)
                {
                    if (model.QuizModel != null && model.QuizModel.ResultsForQuizes != null)
                    {
                        bool res;
                        res = model.QuizModel.ResultsForQuizes.TryGetValue(block.Id, out res) && res;
                        mark = "glyphicon " + (res ? "glyphicon-ok" : "glyphicon-remove");
                        style = "color: " + (res ? "green" : "red");
                    }
                }

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\t<h4><i class=\"");


                WebViewPage.WriteTo(@__razor_helper_writer, mark);

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\" style=\"");


                WebViewPage.WriteTo(@__razor_helper_writer, style);

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\"></i> ");


                WebViewPage.WriteTo(@__razor_helper_writer, block.QuestionIndex);

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, ". ");


                WebViewPage.WriteTo(@__razor_helper_writer, block.Text.RenderTex());

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "</h4>\r\n");



                WebViewPage.WriteTo(@__razor_helper_writer, QuizBlock((dynamic)block, context));



                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\t<hr class=\"quiz-block-delimiter\" />\r\n");
            }));
        }
Esempio n. 2
0
 /// <summary>
 /// Create <see cref="QuizBlock"/> with <see cref="QuizBlockData"/>
 /// </summary>
 /// <param name="data">Data to add</param>
 public QuizBlock(QuizBlockData data) : this() => Data = data;
        public static System.Web.WebPages.HelperResult QuizBlock(FillInBlock block, BlockRenderContext context)
        {
            return(new System.Web.WebPages.HelperResult(__razor_helper_writer => {
                var value = "";
                var quizRes = "";
                QuizBlockData model = context.GetBlockData(block) ?? new QuizBlockData(new QuizModel(), 1, QuizState.NotPassed);
                if (model.QuizState != QuizState.NotPassed && model.QuizModel.AnswersToQuizes[block.Id].FirstOrDefault() != null)
                {
                    value = model.QuizModel.AnswersToQuizes[block.Id].FirstOrDefault();
                    quizRes = (model.QuizState == QuizState.Total)
                        ? (model.QuizModel.AnswersToQuizes[block.Id][1] == "False" ? "wrong-quiz" : "right-quiz") : "";
                }
                var sample = block.Sample;

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\t<div class=\"quiz quiz-block-input\">\r\n\t\t<label ");


                WebViewPage.WriteTo(@__razor_helper_writer, GetGuestOnclick(context.IsGuest));

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, ">\r\n\t\t\t<input autocomplete=\"off\" class=\"form-control ");


                WebViewPage.WriteTo(@__razor_helper_writer, quizRes);

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\" value=\"");


                WebViewPage.WriteTo(@__razor_helper_writer, value);

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\" id=\'");


                WebViewPage.WriteTo(@__razor_helper_writer, block.Id + "quizBlock");

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\' maxlength=\"");


                WebViewPage.WriteTo(@__razor_helper_writer, QuizController.MAX_FILLINBLOCK_SIZE);

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\" ");


                WebViewPage.WriteTo(@__razor_helper_writer, GetGuestDisable(context.IsGuest));

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, ">\r\n\t\t</label>\r\n\t</div>\r\n");


                if (model.QuizState == QuizState.Total)
                {
                    WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\t\t<div>Правильный ответ: ");


                    WebViewPage.WriteTo(@__razor_helper_writer, sample);

                    WebViewPage.WriteLiteralTo(@__razor_helper_writer, "</div>\r\n");


                    if (!string.IsNullOrEmpty(block.Explanation))
                    {
                        WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\t\t\t<div class=\"text-muted\">");


                        WebViewPage.WriteTo(@__razor_helper_writer, block.Explanation);

                        WebViewPage.WriteLiteralTo(@__razor_helper_writer, "</div>\r\n");
                    }
                }
            }));
        }
        public static System.Web.WebPages.HelperResult QuizBlock(IsTrueBlock block, BlockRenderContext context)
        {
            return(new System.Web.WebPages.HelperResult(__razor_helper_writer => {
                var tchecked = "";
                var fchecked = "";
                var trueItemClass = "";
                var falseItemClass = "";
                var ttitle = "";
                var ftitle = "";
                QuizBlockData model = context.GetBlockData(block) ?? new QuizBlockData(new QuizModel(), 1, QuizState.NotPassed);
                if (model.QuizState != QuizState.NotPassed && model.QuizModel.AnswersToQuizes[block.Id].FirstOrDefault() != null)
                {
                    var userAnswer = model.QuizModel.AnswersToQuizes[block.Id].FirstOrDefault() == "True";
                    tchecked = userAnswer ? "checked" : "";
                    fchecked = userAnswer ? "" : "checked";
                    if (model.QuizState == QuizState.Total)
                    {
                        trueItemClass = block.Answer ? "right-quiz" : userAnswer ? "wrong-quiz" : "";
                        falseItemClass = !block.Answer ? "right-quiz" : !userAnswer ? "wrong-quiz" : "";
                    }
                }
                if (model.QuizState == QuizState.Total)
                {
                    ttitle = (block.Answer ? "Правильный" : "Неправильный") + " вариант";
                    ftitle = (!block.Answer ? "Правильный" : "Неправильный") + " вариант";
                }

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\t<div class=\"radio quiz-block-mark\" id=\"");


                WebViewPage.WriteTo(@__razor_helper_writer, block.Id + "_quizBlock");

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\">\r\n\t\t<div class=\"quiz\">\r\n\t\t\t<label class=\"");


                WebViewPage.WriteTo(@__razor_helper_writer, trueItemClass);

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\" title=\"");


                WebViewPage.WriteTo(@__razor_helper_writer, ttitle);

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\" ");


                WebViewPage.WriteTo(@__razor_helper_writer, GetGuestOnclick(context.IsGuest));

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, ">\r\n\t\t\t\t<input autocomplete=\"off\" ");


                WebViewPage.WriteTo(@__razor_helper_writer, tchecked);

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, " id=\'");


                WebViewPage.WriteTo(@__razor_helper_writer, block.Id + "quizBlock" + "True");

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\' name=\'");


                WebViewPage.WriteTo(@__razor_helper_writer, block.Id + "group");

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\' type=\"radio\" ");


                WebViewPage.WriteTo(@__razor_helper_writer, GetGuestDisable(context.IsGuest));

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, ">\r\n\t\t\t\tВерно\r\n\t\t\t</label>\r\n");


                if (model.QuizState == QuizState.Total && block.Answer)
                {
                    WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\t\t\t\t<i class=\"glyphicon glyphicon-ok\" style=\"color: green\" title=\"");


                    WebViewPage.WriteTo(@__razor_helper_writer, ttitle);

                    WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\"></i>\r\n");
                }

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\t\t</div>\r\n\t\t<div class=\"quiz\">\r\n\t\t\t<label class=\"");


                WebViewPage.WriteTo(@__razor_helper_writer, falseItemClass);

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\" title=\"");


                WebViewPage.WriteTo(@__razor_helper_writer, ftitle);

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\" ");


                WebViewPage.WriteTo(@__razor_helper_writer, GetGuestOnclick(context.IsGuest));

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, ">\r\n\t\t\t\t<input autocomplete=\"off\" ");


                WebViewPage.WriteTo(@__razor_helper_writer, fchecked);

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, " id=\'");


                WebViewPage.WriteTo(@__razor_helper_writer, block.Id + "quizBlock" + "False");

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\' name=\'");


                WebViewPage.WriteTo(@__razor_helper_writer, block.Id + "group");

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\' type=\"radio\" ");


                WebViewPage.WriteTo(@__razor_helper_writer, GetGuestDisable(context.IsGuest));

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, ">\r\n\t\t\t\tНеверно\r\n\t\t\t</label>\r\n");


                if (model.QuizState == QuizState.Total && !block.Answer)
                {
                    WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\t\t\t\t<i class=\"glyphicon glyphicon-ok\" style=\"color: green\" title=\"");


                    WebViewPage.WriteTo(@__razor_helper_writer, ftitle);

                    WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\"></i>\r\n");
                }

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\t\t</div>\r\n\t</div>\r\n");


                if (model.QuizState == QuizState.Total && !string.IsNullOrEmpty(block.Explanation))
                {
                    WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\t\t<div class=\"text-muted\">");


                    WebViewPage.WriteTo(@__razor_helper_writer, block.Explanation);

                    WebViewPage.WriteLiteralTo(@__razor_helper_writer, "</div>\r\n");
                }
            }));
        }
        public static System.Web.WebPages.HelperResult QuizBlock(ChoiceBlock block, BlockRenderContext context)
        {
            return(new System.Web.WebPages.HelperResult(__razor_helper_writer => {
                var items = block.ShuffledItems();
                var isMultiply = block.Multiple;
                var typeInp = isMultiply ? "checkbox" : "radio";
                QuizBlockData model = context.GetBlockData(block) ?? new QuizBlockData(new QuizModel(), 1, QuizState.NotPassed);

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\t<div class=\"quiz-block-mark ");


                WebViewPage.WriteTo(@__razor_helper_writer, typeInp);

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\" id=\'");


                WebViewPage.WriteTo(@__razor_helper_writer, block.Id + "_quizBlock");

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\'>\r\n");


                for (var itemIndex = 0; itemIndex < items.Length; itemIndex++)
                {
                    var item = items[itemIndex];
                    var id = isMultiply ? itemIndex + "noMult" : model.BlockIndex.ToString();
                    var itemChecked = model.QuizState != QuizState.NotPassed && model.QuizModel.AnswersToQuizes[block.Id].Contains(item.Id);
                    var ans = itemChecked ? "checked" : "";
                    var itemClass = "";
                    var title = "";
                    if (model.QuizState == QuizState.Total)
                    {
                        itemClass = item.IsCorrect ? "right-quiz" : itemChecked ? "wrong-quiz" : "";
                        title = (item.IsCorrect ? "Правильный" : "Неправильный") + " вариант";
                    }

                    WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\t\t\t<div class=\"quiz\">\r\n\t\t\t\t<label class=\"");


                    WebViewPage.WriteTo(@__razor_helper_writer, itemClass);

                    WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\" title=\"");


                    WebViewPage.WriteTo(@__razor_helper_writer, title);

                    WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\" ");


                    WebViewPage.WriteTo(@__razor_helper_writer, GetGuestOnclick(context.IsGuest));

                    WebViewPage.WriteLiteralTo(@__razor_helper_writer, ">\r\n\t\t\t\t\t<input ");


                    WebViewPage.WriteTo(@__razor_helper_writer, ans);

                    WebViewPage.WriteLiteralTo(@__razor_helper_writer, " autocomplete=\"off\" id=\'");


                    WebViewPage.WriteTo(@__razor_helper_writer, block.Id + "quizBlock" + item.Id);

                    WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\' name=");


                    WebViewPage.WriteTo(@__razor_helper_writer, "group" + id);

                    WebViewPage.WriteLiteralTo(@__razor_helper_writer, " type=\"");


                    WebViewPage.WriteTo(@__razor_helper_writer, typeInp);

                    WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\" ");


                    WebViewPage.WriteTo(@__razor_helper_writer, GetGuestDisable(context.IsGuest));

                    WebViewPage.WriteLiteralTo(@__razor_helper_writer, ">\r\n\t\t\t\t\t");


                    WebViewPage.WriteTo(@__razor_helper_writer, item.Description.RenderTex());

                    WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\r\n\t\t\t\t</label>\r\n");


                    if (model.QuizState == QuizState.Total && item.IsCorrect)
                    {
                        WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\t\t\t\t\t<i class=\"glyphicon glyphicon-ok\" style=\"color: green\" title=\"");


                        WebViewPage.WriteTo(@__razor_helper_writer, title);

                        WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\"></i>\r\n");
                    }


                    if (model.QuizState == QuizState.Total && !string.IsNullOrEmpty(item.Explanation))
                    {
                        WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\t\t\t\t\t<p class=\"text-muted\">");


                        WebViewPage.WriteTo(@__razor_helper_writer, item.Explanation);

                        WebViewPage.WriteLiteralTo(@__razor_helper_writer, "</p>\r\n");
                    }

                    WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\t\t\t</div>\r\n");
                }

                WebViewPage.WriteLiteralTo(@__razor_helper_writer, "\t</div>\r\n");
            }));
        }