Измените массив выбранных изображений в модальном режиме мультимедиа


Я создаю плагин, который проверяет наличие дубликатов медиафайлов при загрузке. Если файл загружен, и он уже существует в библиотеке мультимедиа, я предоставляю пользователю возможность удалить загруженный файл и вставить вместо него существующий файл.

В модальном окне мультимедиа (которое появляется при нажатии кнопки "Добавить медиа" над редактором сообщений) У меня есть все, чтобы обнаружить дубликат файла, и предложить флажок, который пользователь может нажать, чтобы удалить дубликат (через "wp_ajax_save-вложение-сопоставление"). После того, как пользователь удалил новый файл, мне нужно найти способ изменить массив JavaScript выбранных в данный момент медиаэлементов, чтобы заменить идентификатор записи удаленного файла идентификатором записи дубликата, поэтому, когда пользователь нажимает "Вставить в сообщение", будет вставлено правильное изображение.

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

( function( $ ) {

    var _AttachmentDisplay = wp.media.view.Settings.AttachmentDisplay;
    wp.media.view.Settings.AttachmentDisplay = _AttachmentDisplay.extend({
        render: function() {
            _AttachmentDisplay.prototype.render.apply(this, arguments);
            selection = this.controller.state().get('selection').first().toJSON();
            //selection = this.controller.state().get('selection');

            filename = selection.filename;

            attachment = wp.media.attachment(id);  // get attachment with id

            console.dir(filename);
            console.dir(selection);
        }
    });

} )( jQuery );
Author: bcorkins, 2014-04-07

1 answers

Я могу сделать следующее в модальном режиме мультимедиа:

          var selection = wp.media.frame.state().get('selection'); // get selected collection
          attachment = wp.media.attachment(id);  // get attachment with id
          attachment.fetch();
          selection.add(attachment);  // add attachment to selection collection

Должен быть .remove() метод или что-то подобное.

 3
Author: Dmitry Mukhin, 2014-04-21 05:11:59