0

我是 Orchard CMS 的初学者,我需要为内容添加投票功能。我已经安装了 Contib.Vote 和 Contrib.Review 模块。之后,我将评论部分添加到页面内容类型。另外,我已经执行了食谱。乍一看,一切都很好,但审查链接是指带有#符号的同一页面,单击它没有任何反应。似乎模块不工作或工作不正确。请帮助解决我的问题。

UPD。嗨 devqon 和thanx 为您提供帮助。你的回答对我来说真的很有用。根据您的建议,我在 Review Part 视图文件 (Parts_Reviews.cshtml) 中查看 javascript。只是为了测试,我稍微更改了它的源代码。

@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 里面的东西不起作用。请帮我。

4

3 回答 3

0

根据该项目的网站,这是一个已知问题:从 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 代码有问题,它可能会在控制台中显示错误,因此请在单击“成为第一个写评论的人”链接时检查浏览器的控制台。

这应该让你更进一步,如果你不知道该怎么做,请提供错误,我会尝试挖掘更多。我还没有下载模块,所以我没有实时提要。

于 2014-10-15T07:37:01.327 回答
0

Firefox 的控制台告诉: $(...).live 不是一个函数。它指的是 Contrib.Stars.js 源代码文件。jquery 现在不支持此功能,我在所有地方 api.jquery.com/on 中将其替换为 .on() 函数。现在模块工作正常。

于 2014-10-26T09:15:50.760 回答
0

在下面的网站上查看我的评论,看看我是如何让它在 Orchard 1.8.1 上再次运行的:

果园评论项目网站

您基本上只需要更改 Contrib.Stars.js 文件中的 3 行不同的行,但我建议将 .js 文件与 Review 模块的不同视图一起复制到自定义主题目录,以覆盖所有内容并强制 Review 模块使用您编辑的 .js 文件:

在线12& 13:

改变这个:

$(".stars-clear").live(
    "click",

对此:

$("body").on(
    "click", ".stars-clear",

在线44& 45:

改变这个:

.live(
    "mouseenter",

对此:

.mouseenter(

在线48& 49:

改变这个:

.live(
    "mouseleave",

对此:

.mouseleave(
于 2014-12-15T14:23:17.210 回答