Добавить защиту авторских прав к помеченным темам

Здравствуйте,

Многие из наших участников создают качественные темы, статьи в блоге и т.д. К сожалению, другие воруют их (и публикуют на других сайтах как свои собственные без указания источника), даже если автор прямо указывает: «Я пишу это только для этого сайта, пожалуйста, не воруйте. Если вы хотите использовать этот контент, свяжитесь со мной заранее». Нам пришлось что-то предпринять, потому что наши авторы просто теряют мотивацию создавать новый качественный контент. Мы не хотим закрывать форум (сделать его приватным), так как многие посетители читают этот контент извне форума.

Мы понимаем, что это интернет, и не существует 100%-го решения для защиты контента от нарушений авторских прав, но мы можем усложнить или сделать менее простым кражу этого контента. Я знаю, что это может показаться пустой тратой времени, но многие воры отказываются от идеи, если простой выбор текста и копирование не работают.

Что мы делаем: используем тег copy-protected и повторно применяем решение с Disable right click on image lightbox - #7 by awesomerobot.

Мы добавили возможность для каждого участника добавлять тег #copy-protected к темам.
Этот тег имеет следующие функции:

  • отключает правый клик (по всему первому сообщению OP в классе .cooked)
  • отключает копирование и вырезание (по всему первому сообщению OP в классе .cooked)
  • для анонимов (незарегистрированных посетителей) отключает выделение текста (по всему первому сообщению OP в классе .cooked)
  • добавляет уведомление об авторском праве над заголовком темы

1. Вот код, который мы используем для этого в заголовке. Он активируется, когда авторы добавляют тег авторского права к теме.

<script type="text/discourse-plugin" version="0.8">
const TopicRoute = require("discourse/routes/topic").default;

TopicRoute.reopen({
  activate: function() {
    this._super();
    Em.run.next(function() {
      // Disable right click
      $('.tag-copy-protected #post_1 .cooked').on('contextmenu', function(e) { return false; });
      // Disable copy and cut
      $('.tag-copy-protected #post_1 .cooked').bind('cut copy', function (e) { e.preventDefault(); });
    });
  }
});
</script>

2. Для анонимов (незарегистрированных посетителей) мы используем дополнительный слой — отключение выделения текста. Для этого мы используем CSS в общем файле.

.anon {
  .tag-copy-protected {
    #post_1 .cooked {
      -webkit-user-select: none;
      -khtml-user-select: none;
      -moz-user-select: none;
      -ms-user-select: none;
      -o-user-select: none;
      user-select: none;
    }
  }
}

3. Мы также добавляем небольшое красное уведомление над заголовком темы. В нём написано: Этот контент защищён авторским правом автора!

.tag-copy-protected #topic-title .title-wrapper {
  &:before {
    content: 'Этот контент защищён авторским правом автора!';
    color: #e40202;
  }
}

4. Мы используем настройку сайта «Предотвращать загрузку файлов анонимами», чтобы файлы могли скачивать только участники.


Вот что мы сделали для решения этой проблемы. Наши авторы довольны этим решением и тем, что мы заботимся о них и ценим их труд. :slightly_smiling_face: :heart: Надеюсь, это немного поможет и даст ожидаемый результат. :crossed_fingers:

18 лайков

Отличная работа!

Похоже, это отличная возможность упаковать это в компонент темы?

4 лайка

Спасибо, Роберт! :slightly_smiling_face:

Конечно, компонент темы — отличная идея! Я был бы очень признателен, если бы вы могли это сделать, конечно, если вы хотите и у вас есть на это время :slightly_smiling_face:

3 лайка

Я с радостью помогу вам. Мы можем разместить и поддерживать проект на Pavilion, а также указать вас и Awesomerobot в качестве авторов.

Сейчас я сосредоточен на обновлении своих плагинов для совместимости с Ember-CLI от TC и исправлении нескольких ошибок, но смогу заняться этим сразу после.

Я напишу вам в личные сообщения для тестирования.

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

Возможно, это будет полезно и другим пользователям TC (@davidkingham?)

6 лайков

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

2 лайка

У меня это не работает…

Можешь уточнить немного? Я перепроверил, и всё работает как ожидалось. Я попробую создать из этого тематический компонент, чтобы его было проще использовать. :slightly_smiling_face:

1 лайк

Это было бы здорово; поскольку я не использую тему по умолчанию Discourse, но это не работает ни с одной из тем… компонент был бы хорошей идеей. Спасибо!

1 лайк

Я изменил код и создал из этого компонент. Он не совсем хорошо сочетался со спиннером загрузки, но, надеюсь, это исправит проблему. Думаю, сбой произошёл при обновлении списка классов элемента body.

Я добавил некоторые настройки.


Здесь вы можете найти это.

4 лайка

Работает отлично, только посетитель может открывать изображения и сохранять их… но остальное функционирует безупречно.

1 лайк

На видео есть три точки, через которые пользователи могут скачать файл. Я хочу отключить скачивание, оставив только просмотр… https://discourse.fotografos.online/t/fotografia-como-aumentar-a-percepcao-de-valor/223449 Я проверил настройку «Запретить анонимам скачивать файлы», но это не помогло… есть какие-то идеи? @jaymf или другие из канала поддержки? Большое спасибо!

Здравствуйте,

Вот быстрое и неидеальное решение для отключения загрузки видео.

Вставьте это в раздел Общие / Заголовок.

Используйте этот вариант, если хотите отключить только кнопку загрузки в элементах управления видео.

<script type="text/discourse-plugin" version="0.8">
  api.decorateCooked(
    $elem => $elem.find('video').attr('controlsList', 'nodownload'),
    { id: 'disable-video-download-button' }
  );
</script>

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

<script type="text/discourse-plugin" version="0.8">
  api.decorateCooked(
    $elem => $elem.find('video')
    // отключение кнопки загрузки из элементов управления
    .attr('controlsList', 'nodownload')
    // отключение контекстного меню при правом клике
    .on('contextmenu', function(e) {
      e.preventDefault()
    }),
    { id: 'disable-video-download' }
  );
</script>
1 лайк

Как это вообще может работать? Технически видео должны быть загружены перед просмотром, но даже если смысл заключается в том, чтобы убрать кнопку загрузки, мой iPhone и iPad спросят, что я хочу сделать при нажатии на видео: загрузить (сохранить как) или просмотреть.

Вы также можете просто скопировать URL из вкладки «Сеть» и передать его в wget.

Это сработало просто отлично! Большое спасибо! Мы будем блокировать премиум-контент, и это решение подойдёт идеально!

2 лайка