Ошибка виджета макета: «Вы не смогли взять под контроль документ» - PullRequest
0 голосов
/ 12 июня 2018

Hello Apostrophe CMS Wizards

Я читал учебник, найденный здесь: https://apostrophecms.org/docs/tutorials/getting-started/layout-widgets.html

Там написано:

Альтернатива contextualOnly, skipInitialModal позволяет пропустить модальный менеджер виджетов при создании виджета (например, contextualOnly), но сохраняет интерфейс редактирования для последующего использования.Это полезно для виджетов, которые имеют вторичную конфигурацию, например, устанавливают цвет фона.

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

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

Проблема

После сохранения изменений в моем пользовательском виджете вы не можете вносить изменения в то, что находится внутри областей моего виджета.Вместо этого он выдает ошибку, сообщающую, что You were unable to take control of the document.

Вы можете получить требуемую функциональность, если обновите страницу, но, очевидно, это не идеально.

Чего мне здесь не хватает?

Пример кода

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

Вот файл widget.html простого виджета:

<div class="two-column">
    <div class="column-left">
        {{ apos.area(data.widget, 'areaLeft', {
            widgets: {
                'apostrophe-images': {}
            }
        }) }}
    </div>
    <div class="column-right">
        {{ apos.area(data.widget, 'areaRight', {
            widgets: {
                'apostrophe-images': {}
            }
        }) }}
    </div>
</div>

и вот файл index.js простого виджета:

module.exports = {
    extend: 'apostrophe-widgets',
    label: 'Double Content',
    skipInitialModal: true,
    addFields: [
      {
        name: 'areaLeft',
        type: 'area',
        label: 'Left Area',
        contextual: true
      },
      {
        name: 'areaRight',
        type: 'area',
        label: 'Right Area',
        contextual: true
      }
    ]
  };

ОБНОВЛЕНИЕ 1

Как и предполагалось, я клонировал это репо и изменил виджет One Column в соответствии с настройкой, упомянутой выше.Для полноты я включил свои изменения в код здесь.Я не внес никаких других изменений в код репо.

module.exports = {
  extend: 'apostrophe-widgets',
  label: 'One Column',
  // contextualOnly: true, // removed
  skipInitialModal:true, // added
  addFields: [
    {
      name: 'one',
      type: 'area',
      contextual:true, // added
    }
  ]
};

РЕЗУЛЬТАТ

Все еще есть та же проблема.

Если это поможет, версия ApostropheCMS, использованная в приведенном выше репо, выглядит следующим образом: 2.58.0

Посмотрите на это

Я новичок здесь, так что на самом деле встраивание изображений здесьне допускается, но это все равно должно работать.Взгляните:

GIF снимка экрана сбоя

ОБНОВЛЕНИЕ 2

С новым обновлением все, кажется, имеетбыло исправлено!

Ответы [ 2 ]

0 голосов
/ 15 июня 2018

Исправление для этой давней проблемы было опубликовано в npm как Apostrophe 2.59.0.Этот новый выпуск решает эту проблему в случае, когда виджет редактируется с помощью модального режима, а также имеет контекстное вложенное редактирование, происходящее на странице.

0 голосов
/ 15 июня 2018

Первоначальная проблема, о которой сообщалось, была исправлена ​​в этом коммите https://github.com/apostrophecms/apostrophe/pull/1430 .. в настоящее время она находится в master и будет опубликована в npm в течение недели или около того.

...