При входе в систему, как определить предварительный просмотр / черновик / live?

#apostrophe-cms

#apostrophe-cms

Вопрос:

При использовании рабочего процесса Apostrophe я не знаю, как определить в CSS и / или JavaScript, в каком режиме пользователь просматривает страницу.

введите описание изображения здесь

Класс .apos-workflow-draft-page CSS, похоже, присутствует как в режиме черновика, так и в режиме предварительного просмотра, и это может вызвать проблемы. Мы улучшили видимость и расположение определенных элементов, чтобы они считались редактируемыми в черновике, однако в предварительном просмотре мы не хотим показывать все эти подсказки.

Каким будет способ ApostropheCMS правильно определять эти состояния?

Ответ №1:

Вы можете проверить apos.modules['apostrophe-workflow'].locale , что закончится -draft , если в режиме черновика:

 if (apos.modules['apostrophe-workflow'].locale.match(/-draft$/)) {
  // draft mode
} else {
  // live mode
}
 

Определить режим предварительного просмотра тоже легко. Сначала проверьте режим черновика, затем проверьте data.workflowPreview в любом месте вашего шаблона:

 data.workflowPreview
 

Это не помещается в переменную javascript во внешнем интерфейсе, но вы можете сделать это самостоятельно:

 <script>
window.workflowPreview = {{ data.workflowPreview | json }};
</script>
 

Комментарии:

1. Но как мне провести различие между предварительным просмотром и черновиком? В рабочем процессе есть 3 варианта, и эта проверка предлагает только два.

2. Это все еще хороший вариант для черновика против режима live, хотя, не поймите меня неправильно 🙂

3. Упс, пропустил это. Я обновил свой ответ.

4. Да, это сработало. Я создал метод для получения режима автономным способом: github.com/jansensan/arts-et-medias/blob/master/lib/modules /… Таким образом, я могу получить его в шаблонах, где мне и нужна была эта вещь. Спасибо, я отметил ваш ответ как принятый.