如何为 Sitefinity 10 中的其他动态项目创建内部 URL
How do you create an internal URL to other dynamic items in Sitefinity 10
我想知道如何在后端为项目创建 link。
我已经设置了一个仪表板小部件,它列出了我所有的自定义动态模块项目,但我需要一种方法来通过 URL 在内部制作这些 clickable/editable 而不是导航到在后台手动选择项目。
看起来这依赖于 iFrame 和 Kendo UI 等。有人对此有什么建议吗?
我似乎找不到任何类似过程的提及!
谢谢!
我认为不可能为动态项目创建特定的URL,但您可以创建 JS 函数并在需要时调用此 JS 函数:
function OpenForEdit(data){
var template = '<iframe id="sfEditingWindowFrame" style="width:100%; height:100%;" frameBorder="0" border="0" src=""></iframe>';
this.kendoWindow = jQuery("<div>").append(template).kendoWindow(this.windowOptions).data("kendoWindow");
this.contentFrame = $(this.kendoWindow.wrapper).find("#sfEditingWindowFrame");
$(this.kendoWindow.wrapper).addClass("sfMaximizedWindowWithIframe");
this.contentFrame.prop("src", function() {
var src = "/Sitefinity/Dialog/ContentViewEditDialog?ControlDefinitionName="+data.ControlDefinitionName+"&ViewName="+data.ViewName+"&IsInlineEditingMode=true";
return src;
});
this.kendoWindow.maximize();
this.kendoWindow.open();
var that = this;
this.contentFrame.one("load", function() {
var frameHandle = that.contentFrame.get(0).contentWindow;
if (frameHandle) {
var showMoreActionsWorkflowMenu = true;
var hideLanguageList = false;
var commandName, params, key, commandArgument, dataItem;
var isEditMode = true;
commandName = "edit";
params = {
IsEditable: true
};
key = {
Id: data.ItemId
};
commandArgument = {
languageMode: "edit",
language: data.Culture
};
dataItem = {
Id: data.ItemId,
ProviderName: data.ProviderName
};
if (frameHandle.createEditingWindow) {
frameHandle.createEditingWindow(commandName, dataItem, params, key, commandArgument, function(a, b) { window.location=data.ReturnUrl}, showMoreActionsWorkflowMenu, hideLanguageList);
}
}
});
}
在此函数中,您需要像这样传递对象:
var data = {
"ItemId": "76a1e9f5-d32e-642d-aa3a-ff0000a20aad",
"ControlDefinitionName": "Telerik.Sitefinity.DynamicTypes.Model.Contest.ImageBackendDefinition",
"ViewName": "ImageBackendEditView",
"ProviderName": "OpenAccessProvider",
"Culture": "en",
"ReturnUrl": "/Sitefinity/dashboard"
};
您只需更改此对象中与您的动态项相关的数据。
我想知道如何在后端为项目创建 link。
我已经设置了一个仪表板小部件,它列出了我所有的自定义动态模块项目,但我需要一种方法来通过 URL 在内部制作这些 clickable/editable 而不是导航到在后台手动选择项目。
看起来这依赖于 iFrame 和 Kendo UI 等。有人对此有什么建议吗?
我似乎找不到任何类似过程的提及!
谢谢!
我认为不可能为动态项目创建特定的URL,但您可以创建 JS 函数并在需要时调用此 JS 函数:
function OpenForEdit(data){
var template = '<iframe id="sfEditingWindowFrame" style="width:100%; height:100%;" frameBorder="0" border="0" src=""></iframe>';
this.kendoWindow = jQuery("<div>").append(template).kendoWindow(this.windowOptions).data("kendoWindow");
this.contentFrame = $(this.kendoWindow.wrapper).find("#sfEditingWindowFrame");
$(this.kendoWindow.wrapper).addClass("sfMaximizedWindowWithIframe");
this.contentFrame.prop("src", function() {
var src = "/Sitefinity/Dialog/ContentViewEditDialog?ControlDefinitionName="+data.ControlDefinitionName+"&ViewName="+data.ViewName+"&IsInlineEditingMode=true";
return src;
});
this.kendoWindow.maximize();
this.kendoWindow.open();
var that = this;
this.contentFrame.one("load", function() {
var frameHandle = that.contentFrame.get(0).contentWindow;
if (frameHandle) {
var showMoreActionsWorkflowMenu = true;
var hideLanguageList = false;
var commandName, params, key, commandArgument, dataItem;
var isEditMode = true;
commandName = "edit";
params = {
IsEditable: true
};
key = {
Id: data.ItemId
};
commandArgument = {
languageMode: "edit",
language: data.Culture
};
dataItem = {
Id: data.ItemId,
ProviderName: data.ProviderName
};
if (frameHandle.createEditingWindow) {
frameHandle.createEditingWindow(commandName, dataItem, params, key, commandArgument, function(a, b) { window.location=data.ReturnUrl}, showMoreActionsWorkflowMenu, hideLanguageList);
}
}
});
}
在此函数中,您需要像这样传递对象:
var data = {
"ItemId": "76a1e9f5-d32e-642d-aa3a-ff0000a20aad",
"ControlDefinitionName": "Telerik.Sitefinity.DynamicTypes.Model.Contest.ImageBackendDefinition",
"ViewName": "ImageBackendEditView",
"ProviderName": "OpenAccessProvider",
"Culture": "en",
"ReturnUrl": "/Sitefinity/dashboard"
};
您只需更改此对象中与您的动态项相关的数据。