Каков наилучший способ (субъективный метод.. Я знаю. Извините!), Чтобы побудить пользователя скопировать экземпляр документа в мою библиотеку в библиотеку на его собственном сайте (в том же семействе сайтов, если это имеет значение)? Я администратор с несколькими текстовыми документами, которые я создаю слишком часто для установки определенных типов контента. Поэтому я создал библиотеку, содержащую несколько шаблонов слов для их копирования (что наиболее важно: метаданные включены, кроме измененных/созданных полей).
Я попробовал несколько 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">
note: Я не вводил никаких значений в эти текстовые поля прямо сейчас, так как я вручную вводил их в itemurl и dst. Но консоль говорит:
Значение свойства 'copyItem' имеет значение null или undefined, а не объект Function.
Не рекомендуется использовать "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) {
}
})
}
});