Umbraco - 用于自定义部分的模态弹出窗口中的媒体选择器

时间:2014-02-04 11:31:05

标签: umbraco

我有这段代码打开带有内容选择器的模型窗口,并为任何选定的节点返回breadrumb字符串。这适用于自定义区域。

我想要做的是,在自定义区域中,在模式弹出窗口中打开媒体选择器,这样我就可以获得所选媒体项的ID。我希望只是改编这个代码('内容' - >'媒体'作为一个开始),但我的改变没有奏效,我也不知道它是否有意义。 'GetPickerurl'是令人沮丧但我不知道是否有新方法?我正在使用umbraco 6.1.6。非常感谢

<script>
function showTree() {
    var treePicker = parent.UmbClientMgr.openModalWindow('@(umbraco.uicontrols.TreeUrlGenerator.GetPickerUrl(true,"content","content"))', 'Select', true, 600, 425, null, null, null, function (args) {
        $.ajax({
            type: "POST",
            url: '/umbraco/webservices/legacyAjaxCalls.asmx/GetNodeBreadcrumbs',
            data: '{ "nodeId": ' + args.outVal + ' }',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                var a = msg.d;
                var name = a[a.length - 1];
                var breadcrumbs = a.join(" > ");

                $('p#pickedContent').html(breadcrumbs);
            }
        });
    });
}
</script>
<a href="javascript: showTree();">Pick Content</a>
<p id="pickedContent"></p>

2 个答案:

答案 0 :(得分:0)

我之前没有看过您的方法,但您可以使用内置媒体和内容选择器控件。 将其包含在aspx文件的头部

<%@ Register Namespace="umbraco.uicontrols.TreePicker" Assembly="controls" TagPrefix="umbtree"  %>

获取媒体选择器控件

<umbtree:SimpleMediaPicker runat="server" id="MediaSimpleContentPicker" />

和内容选择器

<umbtree:SimpleContentPicker runat="server" id="TreeSimpleContentPicker" />

答案 1 :(得分:0)

发现问题。在查看弹出窗口中的url后,我可以看到该字符串未被正确编码 -

/dialogs/treepicker.aspx?rnd=b235c90e995344f6a2e299a21013c7a8&amp;id=-1&amp;treeType=media&amp;contextMenu=true&amp;isDialog=false&amp

它只需要围绕通话的Html.Raw - 还要注意“媒体”参数。

parent.UmbClientMgr.openModalWindow('@(Html.Raw(umbraco.uicontrols.TreeUrlGenerator.GetPickerUrl("media", "media")))