Orchard CMS Contrib.Review模块

时间:2014-10-15 04:46:48

标签: orchardcms orchardcms-1.8 orchard-modules

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

UPD。 您好devqon和thanx的帮助。你的回答对我很有用。根据你的建议,我正在查看部分视图文件(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中的内容不起作用。求你帮帮我。

3 个答案:

答案 0 :(得分:0)

根据项目的网站it is a known issue:从版本1.7.2中删除。

在查看Parts_Reviews.cshtml的the code时,它在第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代码出现问题时,它可能会在控制台中出错,因此当您点击“第一个撰写评论”时,请查看浏览器的控制台&#39;链接。

这可以让你更进一步,如果你不知道该怎么做请提供错误,我会尝试挖掘更多。我没有下载模块,因此我没有现场直播。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

Orchard Reviews Project Site

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

在线12&amp; 13

改变这个:

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

对此:

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

在线44&amp; 45

改变这个:

.live(
    "mouseenter",

对此:

.mouseenter(

在线48&amp; 49

改变这个:

.live(
    "mouseleave",

对此:

.mouseleave(