Модуль Orchard CMS Contrib.Review

Я новичок в Orchard CMS, и мне нужно добавить функцию голосования в контент. Я установил модули Contib.Vote и Contrib.Review. После этого я добавил часть обзора к типу контента страницы. Кроме того, я выполнил рецепт. На первый взгляд все в порядке, но ссылка для просмотра ведет на ту же страницу с символом # и при нажатии на нее ничего не происходит. Похоже модуль не работает или работает некорректно. Пожалуйста, помогите с моей проблемой.

УПД. Привет devqon и спасибо за вашу помощь. Ваш ответ был действительно полезен для меня. По вашему совету я просматривал javascript внутри файла просмотра части обзора (Parts_Reviews.cshtml). Просто для теста я немного изменил его исходный код.

@using (Script.Foot())
{
    <script type="text/javascript">
    //<![CDATA[
    (function () {
        var numberOfReviewsToShowByDefault = 5;
        var $showAllReviewsLink = $('#showAllReviewsLink');
        var $deleteReviewConfirmationDialogDiv = $('#deleteReviewConfirmationDialogDiv');


            $deleteReviewConfirmationDialogDiv.dialog({ autoOpen: false, modal: true, resizable: false });
            $('#deleteReviewLink').click(function () {
                $('#reviewId').val($(this).attr("data-review-id"));
                ShowDeleteReviewDialog();
                return false;
            });
            $('#showReviewFormLink').click(function () {
                $('#createReviewLinkDiv').slideToggle('fast', function () { $('#reviewFormDiv').slideToggle('fast'); });
                return false;
            });
            $('#cancelCreateReviewLink').click(function () {
                $('#reviewFormDiv').slideToggle('fast', function() { $('#createReviewLinkDiv').slideToggle('fast'); });
                return false;
            });
            $('#deleteReviewForm').submit(function () {
                $('input[type=submit]', this).attr('disabled', 'disabled');
            });
            $('#cancelDeleteReviewButton').click(function () {
                CloseConfirmationDialogDiv();
                return false;
            });
            var rowCount = $('#reviewsList li').length;
            if (rowCount > numberOfReviewsToShowByDefault) {
                SetupToggle();
            }

            if (document.location.hash === '#Reviews') {
                var topPx = $('#reviews-heading').position().top;
                $('body,html').animate({ scrollTop: topPx }, 'slow');
            }

            if ($("#comment").length) {
                var characterCountUpdater = new CharacterCountUpdater($("#comment"), $("#commentCharactersLeft"));
                setInterval(function() { characterCountUpdater.UpdateCharacterCount(); }, 100);
                $("#comment").keypress(function() { characterCountUpdater.UpdateCharacterCount(); });

                if ($("#comment").val().length) {
                    $("#showReviewFormLink").trigger("click");
                }
            }
        
        function CharacterCountUpdater(commentBox, charactersLeftBox)
        {
            this.commentBox = commentBox;
            this.charactersLeftBox = charactersLeftBox;
            this.maxLength = commentBox.attr("maxlength");
            commentBox.removeAttr("maxlength");
            return this;
        }

Теперь отображается форма для просмотра. Форма выглядит хорошо, кнопка отправки работает, счетчик символов тоже работает. Но я все еще не могу применить свой рейтинг. Звезды не реагируют на нажатие. Вот почему операция отправки завершается ошибкой «Чтобы отправить отзыв, вы также должны отправить оценку». Похоже что-то внутри Parts.Stars.NoAverage.cshtml не работает. Пожалуйста помогите.


person Andrey Khramov    schedule 15.10.2014    source источник
comment
Не могли бы вы поделиться всей проблемой и как вы ее решили? Для будущих искателей stackoverflow, которые могут быть удобны   -  person devqon    schedule 17.10.2014
comment
Не похоже, что есть какой-либо скрипт, который обрабатывает рейтинг по звездочкам.   -  person devqon    schedule 23.10.2014
comment
Неважно, как вы говорите в Parts.Stars.NoAverage.cshtml. Ошибки консоли есть?   -  person devqon    schedule 23.10.2014
comment
Большое спасибо! Консоль Firefox сообщает: $(...).live не является функцией. Он относится к файлу исходного кода Contrib.Stars.js. Эта функция сейчас не поддерживается в jquery, и я заменил ее функцией .on() во всех местах api.jquery. ком/на. Теперь модуль работает нормально. Как я могу поделиться решением с сообществом?   -  person Andrey Khramov    schedule 26.10.2014


Ответы (3)


Согласно сайту проекта известно проблема: не работает с версии 1.7.2.

При просмотре кода Parts_Reviews.cshtml в строках 20-24 говорится следующее:

string showReviewUri = "#";
if (!Request.IsAuthenticated)
{
    showReviewUri = Url.Action("LogOn", "Account", new { area = "Orchard.Users", ReturnUrl = Context.Request.RawUrl });
}

и в строке 29:

<div id="createReviewLinkDiv"><span id="createReviewLinkSpan">@noReviewsYetText<a id="showReviewFormLink" href="@showReviewUri">@reviewLinkText</a></span></div>

Поэтому предполагалось, что якорь будет #, когда запрос будет аутентифицирован (вы вошли в систему). Это означает, что он, вероятно, будет обрабатываться в JavaScript, что можно увидеть в строках 105-112:

$('#showReviewFormLink').click(function () {
    $('#createReviewLinkDiv').slideToggle('fast', function () { $('#reviewFormDiv').slideToggle('fast'); });
    return false;
});
$('#cancelCreateReviewLink').click(function () {
    $('#reviewFormDiv').slideToggle('fast', function() { $('#createReviewLinkDiv').slideToggle('fast'); });
    return false;
});

Этот фрагмент кода должен позволить вам увидеть форму для написания отзыва, так что, предположительно, что-то там идет не так. Когда в этом коде jQuery что-то не так, он, вероятно, выдает ошибку в консоли, поэтому проверьте консоль браузера, когда вы нажмете ссылку «Написать отзыв первым».

Это должно продвинуть вас дальше, если вы не знаете, что делать, сообщите об ошибке, и я попытаюсь копнуть больше. Я не скачал модуль, поэтому у меня нет прямой трансляции.

person devqon    schedule 15.10.2014
comment
Спасибо за вашу помощь. Я обновил свой пост. Не могли бы вы еще раз помочь с моей проблемой? - person Andrey Khramov; 23.10.2014

Консоль Firefox сообщает: $(...).live не является функцией. Он относится к файлу исходного кода Contrib.Stars.js. Эта функция сейчас не поддерживается в jquery, и я заменил ее функцией .on() во всех местах api.jquery.com/on. Теперь модуль работает нормально.

person Andrey Khramov    schedule 26.10.2014