Рисунок и приведенные ниже шаги объясняют процесс совместного редактирования документа в Р7 Document Server

Совместное редактирование

  1. Пользователь 1 и пользователь 2 открывают один и тот же документ в редакторе документов, т.е. при открытии файла использовался один и тот же document.key.
  2. Пользователь 1 вносит изменения в открытый документ.
  3. Редактор документов отправляет изменения, внесенные пользователем 1, в службу редактирования документов.
  4. Служба редактирования документов отправляет изменения, сделанные пользователем 1, редактору документов пользователя 2.
  5. Теперь эти изменения становятся видны пользователю 2.

Совместное редактирование

  1. Создайте пустой html-файл.
  2. Добавьте элемент div, как показано ниже.
    <div id="placeholder"></div>
  3. Укажите ссылку на Сервер документов с помощью JavaScript API, который будет использоваться для вашего веб-сайта.
    <script type="text/javascript" src="https://documentserver/web-apps/apps/api/documents/api.js"></script>

    Где documentserver — это имя сервера, на котором установлен Сервер документов Р7.
    Добавьте скрипт, инициализирующий редактор документов для элемента div с конфигурацией документа, который вы хотите открыть.

  4. new DocsAPI.DocEditor("placeholder", {
        "document": {
            "fileType": "docx",
            "key": "Khirz6zTPdfd7",
            "title": "Example Document Title.docx",
            "url": "https://example.com/url-to-example-document.docx"
        },
        "documentType": "word",
        "editorConfig": {
            "user": {
                "id": "78e1e841",
                "name": "John Smith"
            }
        }
    });
    

    Где example.com — это имя сервера, на котором установлены менеджер документов и служба хранения документов.

  5. Откройте ваш html-файл в браузере.
  6. Теперь сделайте копию вашего HTML-файла, созданного выше.
  7. Измените скрипт инициализации редактора документов в скопированном html-файле.
    new DocsAPI.DocEditor("placeholder", {
        "document": {
            "fileType": "docx",
            "key": "Khirz6zTPdfd7",
            "title": "Example Document Title.docx",
            "url": "https://example.com/url-to-example-document.docx"
        },
        "documentType": "word",
        "editorConfig": {
            "user": {
                "id": "F89d8069ba2b",
                "name": "Kate Cage"
            }
        }
    });
    

    8. Где example.com — это имя сервера, на котором установлены менеджер документов и служба хранения документов.
    Откройте скопированный и отредактированный html-файл в браузере.

Чтобы открыть документ для редактирования, при инициализации конфигурации требуется ключевой параметр, который позволяет пользователю повторно открыть документ из кеша редактора. Ключ представляет собой текстовое поле ограниченной длины и количества символов. Он генерируется интеграторами программного обеспечения и определяет уникальный идентификатор документа, используемый службой для распознавания документа.

Можно использовать ключевые символы: 0–9, a–z, A–Z, -._=. Максимальная длина ключа – 128 символов.
Поэтому важно, чтобы у пользователей был один и тот же ключ для открытия документа для совместного редактирования. Служба редактирования документов идентифицирует ключ другого пользователя (или другую вкладку/сеанс редактирования для встроенных редакторов), который пытается открыть документ, и, если этот ключ совпадает с ключом файла, пользователю разрешается открыть его. Если ключ другой, то открывается новый файл, не связанный с другими файлами и версиями файлов.

После отправки запроса на сохранение файла (значение статуса равно 2) и успешного завершения операции (значение ответа равно {«error»:0}) этот ключ не может быть использован для открытия документа для редактирования. Редактор загружается с сообщением об ошибке. Однако его можно использовать для просмотра документа из кэша, если он существует.

Если пользователь сохраняет документ до завершения редактирования (значение статуса равно 6), ключ изменить нельзя. В противном случае совместное редактирование прекращается. Обратите внимание, что после процедуры принудительного сохранения ключ также не может быть изменен для новых пользователей, которые только входят в текущую сессию редактирования.

  1. Добавьте скрипт, инициализирующий Редактор документов с ключом 1. Ключ неизвестен и указан URL для открытия файла.

Закройте Редактор документов.

new DocsAPI.DocEditor("placeholder", {
    "document": {
        "fileType": "docx",
        "key": "Khirz6zTPdfd7",
        "title": "Example Document.docx",
        "url": "https://example.com/url-to-example-document.docx"
    },
    "documentType": "word",
    ...
});

2. Где example.com – это имя сервера, на котором установлены менеджер документов и служба хранения документов.

Добавьте скрипт, инициализирующий Редактор документов с тем же ключом 1. Новый URL-адрес не используется, поскольку ключ известен и документ повторно открывается из кеша редактора.

new DocsAPI.DocEditor("placeholder", {
    "document": {
        "fileType": "docx",
        "key": "Khirz6zTPdfd7",
        "title": "Example Document 2.docx",
        "url": "https://example.com/url-to-example-document2.docx"
    },
    "documentType": "word",
    ...
});

Где example.com – это имя сервера, на котором установлены менеджер документов и служба хранения документов.

3. Добавьте скрипт, инициализирующий другой Редактор документов с ключом 2. Ключ неизвестен и указан URL для открытия файла. Даже если этот URL-адрес и URL-адрес из первого сценария совпадают, существует два независимых сеанса редактирования.

Закройте Редактор документов.

new DocsAPI.DocEditor("placeholder", {
    "document": {
        "fileType": "docx",
        "key": "Mgetl3dYUppf2",
        "title": "Example Document.docx",
        "url": "https://example.com/url-to-example-document.docx"
    },
    "documentType": "word",
    ...
});

Где example.com – это имя сервера, на котором установлены менеджер документов и служба хранения документов.

4. Добавьте скрипт, инициализирующий другой редактор документов с ключом 1. Ключ известен, и документ повторно открывается из кэша редактора. Поскольку этот ключ и ключ из второго сценария совпадают, документ открывается в режиме совместного редактирования.

Получить текущее состояние документа, не закрывая документ. Параметр forcesave позволяет сделать это в разделе настройки инициализации редактора.

new DocsAPI.DocEditor("placeholder", {
    "document": {
        "fileType": "docx",
        "key": "Khirz6zTPdfd7",
        "title": "Example Document.docx",
        "url": "https://example.com/url-to-example-document.docx"
    },
    "documentType": "word",
    "editorConfig": {
        "customization": {
            "forcesave": true 
        }
    },
    ...
});

Где example.com – это имя сервера, на котором установлены менеджер документов и служба хранения документов.

5. Добавьте скрипт, инициализирующий другой редактор документов. Ключ не меняется для новых пользователей текущего сеанса редактирования после успешной процедуры принудительного сохранения. Следовательно, ключ 1 должен использоваться для доступа к тому же сеансу совместного редактирования, что и пользователи из второго и четвертого сценариев.

Закройте все три сеанса редактирования ключом 1. Все изменения успешно сохранены. При сохранении документа ключ необходимо сгенерировать заново.

new DocsAPI.DocEditor("placeholder", {
    "document": {
        "fileType": "docx",
        "key": "Khirz6zTPdfd7",
        "title": "Example Document.docx",
        "url": "https://example.com/url-to-example-document.docx"
    },
    "documentType": "word",
    "editorConfig": {
        "callbackUrl": "https://example.com/url-to-callback.ashx"
    },
    ...
});

Где example.com – это имя сервера, на котором установлены менеджер документов и служба хранения документов.

6. Добавьте скрипт, инициализирующий Редактор документов для просмотра созданного документа. Можно использовать ключ 1.

new DocsAPI.DocEditor("placeholder", {
    "document": {
        "fileType": "docx",
        "key": "Khirz6zTPdfd7",
        "title": "Example Document.docx",
        "url": "https://example.com/url-to-example-document.docx"
    },
    "documentType": "word",
    "editorConfig": {
        "mode": "view"
    },
    ...
});

Где example.com – это имя сервера, на котором установлены менеджер документов и служба хранения документов.

7. Добавьте скрипт, инициализирующий Редактор документов для редактирования созданного документа. Ключ 1 нельзя использовать, так как он был изменен после сохранения файла. Возникает ошибка.

Закройте Редактор документов.

new DocsAPI.DocEditor("placeholder", {
    "document": {
        "fileType": "docx",
        "key": "Khirz6zTPdfd7",
        "title": "Example Document.docx",
        "url": "https://example.com/url-to-example-document.docx"
    },
    "documentType": "word",
    "editorConfig": {
        "mode": "edit"
    },
    ...
});

Где example.com – это имя сервера, на котором установлены менеджер документов и служба хранения документов.

Существует два режима совместной работы над документами в режиме реального времени — Fast и Strict.

Вы можете изменить режим совместного редактирования с помощью параметра editorConfig.coEditing

var docEditor = new DocsAPI.DocEditor("placeholder", {
    "editorConfig": {
        "coEditing": {
            "mode": "fast",
            "change": true
        },
        ...
    },
    ...
});

Быстрый режим используется по умолчанию и определяет совместное редактирование в реальном времени. Все изменения сохраняются автоматически, и возможность повторить последнюю отмененную операцию недоступна. В этом режиме отображаются пользовательские курсоры и всплывающие подсказки с их именами, когда они редактируют текст.

 

В строгом режиме вам нужно использовать кнопку Сохранить, чтобы синхронизировать изменения, внесенные вами и другими пользователями. Пока вы не нажмете эту кнопку, изменения, сделанные другими, будут скрыты. Когда документ редактируется одновременно несколькими пользователями, редактируемый текст выделяется пунктирными линиями разного цвета.

Когда пользователь сохранит изменения, нажав кнопку «Сохранить», остальные получат уведомление об обновлениях. Чтобы принять их и сохранить собственные изменения, чтобы показать их другим пользователям, нажмите кнопку  в левом верхнем углу верхней панели инструментов. Обновления будут выделены.