Копировать документ Word между библиотеками документов в разных дочерних сайтах (SharePoint)
Каков наилучший (субъективный... я знаю. Извините!) Способ побудить пользователя скопировать экземпляр документа из моей библиотеки в библиотеку на его собственном сайте (в том же семействе сайтов, если это имеет значение)? Я - администратор с несколькими документами из слов, которые я создаю слишком часто, чтобы задавать определенные типы контента. Поэтому я создал библиотеку, которая содержит несколько шаблонов слов для их копирования (самое главное: включены метаданные, за исключением измененных / созданных полей).
Я попробовал несколько методов javascript/jquery, которые я поместил бы в форму отображения с текстовым полем, позволяющим им вводить URL своей библиотеки и сколько копий они хотели бы сделать, но, похоже, я не работаю хотел бы. Что было бы наиболее эффективным способом достижения этого? Используете обработчик событий? Если так, есть ли способ связать одну из них с пользовательской кнопкой на ленте (я только связал эти кнопки для функций js)?
Пример функции javascript, которую я пытался использовать:
function copyItem() {
var itemurl = $("#copyFrom").val();
var dst = $("#copyTo").val();
$().SPServices({
operation: "GetItem",
Url: itemurl,
async: false,
completefunc: function (xData, Status) {
itemstream = $(xData.responseXML).find("Stream").text();
itemfields = "";
$(xData.responseXML).find("FieldInformation").each(function(){
itemfields+=$(this).get(0).xml;
});;
}
});
$().SPServices({
operation: "CopyIntoItems",
SourceUrl: itemurl,
async: false,
DestinationUrls: [dst],
Stream: itemstream,
Fields:itemfields,
completefunc: function (xData, Status) {
var error = $(xData.responseXML).find("CopyResult").first().attr("ErrorCode");
}
}
}
вызвано:
<label>from:</label><input type="text" value="" id="copyFrom" maxlength="255">
<label>to:</label><input type="text" value="" id="copyTo" maxlength="255">
<input type="button" onclick="copyItem();" value="Copy">
примечание: я не вводю никаких значений в эти текстовые поля прямо сейчас, так как я вручную ввожу их в itemurl и dst. Но консоль говорит:
Значение свойства copyItem является нулевым или неопределенным, а не объектом Function.
1 ответ
Не рекомендуется использовать "async:false". Лучше сделать асинхронный вызов и вставить свой второй SPServices
в первый.
Кроме того, для вашего второго отсутствует закрывающая скобка SPServices
,
И, наконец, "Поля" должны быть массивом ( http://msdn.microsoft.com/en-us/library/copy.copy.copyintoitems.aspx).
Я попробовал приведенный ниже код, и он работал для меня:
var srcurl="http://my.sharepoint.com/aymeric_lab/Shared%20Documents/879258.jpeg";
var desturl="http://my.sharepoint.com/aymeric_lab/Shared%20Documents/879258_copy.jpeg";
$().SPServices({
operation: "GetItem",
Url: srcurl,
completefunc: function (xData, Status) {
var itemstream = $(xData.responseXML).find("Stream").text();
var itemfields = [];
$(xData.responseXML).find("FieldInformation").each(function(){
itemfields.push($(this).get(0).xml);
});
$().SPServices({
operation: "CopyIntoItems",
SourceUrl: srcurl,
DestinationUrls: [ desturl ],
Stream: itemstream,
Fields:itemfields,
completefunc: function (xData, Status) {
}
})
}
});