Создайте копию документа в библиотеке документов SharePoint 2010, используя JavaScript - PullRequest
1 голос
/ 04 октября 2011

Я хочу создать копию документа в библиотеке документов SharePoint.
По сути, давайте предположим, что есть шаблон, и каждый пользователь откроет документ, щелкнув по нему.Я хочу создать копию файла, который пользователь щелкнул, и откройте этот файл для редактирования.
Я попытался использовать Клиентская объектная модель JavaScript SharePoint .Но примеры предназначены для манипулирования элементами списка, но не для библиотеки документов.
Может ли кто-нибудь указать на любые источники, которые я могу использовать для манипулирования файлами в библиотеке документов

Единственное ограничение - мне нужно использовать JavaScript объектная модель или веб-сервисы для реализации этой функциональности.то есть NO серверный код

Ниже приведен код, который я получил до сих пор

  1. Подход, который я планирую использовать, заключается в копировании существующего файлового объекта
  2. Переименуйте его и
  3. Сохраните его в другой библиотеке документов

Пожалуйста, игнорируйте форматирование, поскольку я не могу сделать это правильно, и это находится в стадии разработки

    <script type="text/javascript">
 var clientContext = null;
        var web = null;
        var meetingItems = null;
        var filePath = null;
        var file = null;
        debugger;
        ExecuteOrDelayUntilScriptLoaded(Initialize, "sp.js");


        function Initialize() {
            clientContext = new SP.ClientContext.get_current();
            web = clientContext.get_web();

            this.list = web.get_lists().getByTitle("Documents");

            clientContext.load(list, 'Title', 'Id');
            var queryStart = "<View>"+ "<Query>"+ "<Where>"+ "<Eq>"+ "<FieldRef Name='Title'/>" + "<Value Type='Text'>"; 
                    var queryEnd = "</Value>"+ "</Eq>"+ "</Where>"+ "</Query>"+ "</View>";

camlQuery = new SP.CamlQuery(); 


queryMeeting = queryStart + 'DevCookbook'+ queryEnd;

camlQuery.set_viewXml(queryMeeting);

meetingItems = list.getItems(camlQuery);
clientContext.load(meetingItems);

            clientContext.executeQueryAsync(Function.createDelegate(this, this.onListLoadSuccess), Function.createDelegate(this, this.onQueryFailed));
        }

        function onListLoadSuccess(sender, args) {
        filePath = meetingItems.get_item(0).get_path();
        file = meetingItems.get_item(0);
        debugger;
        clientContext.load(file);

            clientContext.executeQueryAsync(Function.createDelegate(this, this.onFileLoadSuccess), Function.createDelegate(this, this.onFileFailed));

           // alert("List title : " + this.list.get_title() + "; List ID : " + this.list.get_id());

           // doclist();        
        }
function doclist()
{
var path = file.get_title();
path = meetingItems.get_item(0).get_file().get_title();
}
        function onQueryFailed(sender, args) {
            alert('request failed ' + args.get_message() + '\n' + args.get_stackTrace());
        }

        function onFileLoadSuccess(sender, args) {
        debugger;
      alert("List title : " + this.list.get_title() + "; List ID : " + this.list.get_id());


        }
        function onFileFailed(sender, args) {
            alert('request failed ' + args.get_message() + '\n' + args.get_stackTrace());
        }


        </script>

1 Ответ

1 голос
/ 23 ноября 2011

Я использовал copy webservice для выполнения функций.
Подход - комбинация функций объектной модели и JavaScript

  1. Скопируйте файл из библиотеки шаблонов.
  2. Извлечение файла с помощью функции "CheckoutDocument"
  3. Добавить метаданные в фоновом режиме
  4. Показать правки метаданных, всплывающие у пользователя с помощью

    var oDialog = { url: "../Library/Forms/Edit.aspx?ID=" + itemID, title: «Создать новый документ» }; SP.UI.ModalDialog.showModalDialog (oDialog)

  5. После ввода пользователя проверьте документ
...