为标记的主题添加版权保护

你好,

我们的许多会员都有优质话题、博客文章等。不幸的是,其他人会窃取这些内容(并将其公开到其他网站,冒充自己的内容,而不注明任何来源),即使作者明确说明。“我只在此网站上撰写,请勿窃取。如果您想使用此内容,请先与我联系。”我们不得不采取一些措施,因为我们的作者只是因为创作新优质内容而感到沮丧。我们不想将论坛设为封闭(私有),因为许多访客都在论坛外阅读这些内容。

我们知道这是互联网,无法对版权内容提供 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. 对于匿名用户(未注册访客),我们使用额外的保护层,禁用文本选择。 我们在 common 中使用 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: 'This content has been copyright-protected by the author!';
    color: #e40202;
  }
}

4. 我们使用“prevent anons from downloading files”站点设置,只允许会员下载文件。


这就是我们处理此问题的方法。我们的作者对这个解决方案感到满意,并感谢我们关心并重视他们。 :slightly_smiling_face: :heart: 希望这能有所帮助并带来预期的结果。 :crossed_fingers:

18 个赞

干得漂亮!

听起来这是将它打包成主题组件(Theme Component)的好机会?

4 个赞

谢谢你,Robert! :slightly_smiling_face:

当然,主题组件是个好主意!如果你愿意并且有时间的话,我将非常感激你能去做这件事 :slightly_smiling_face:

3 个赞

我很乐意帮助你。我们可以在 Pavilion 上托管和支持它,我会将你和 Awesomerobot 列为作者。

我目前的重点是让我的插件和 TC 的 Ember-CLI 兼容性以及修复一些错误,但我可以接下来处理这件事。

我会给你发私信进行测试。

也许我们可以添加一些设置,如果开关有用的话?也许我们可以添加一个设置来选择特定的标签等。

也许还有其他人会觉得这个有用,比如 TC(@davidkingham?)

6 个赞

将此作为 TC 供他人使用是个好主意,但我确实不需要我已有的右键单击保护之外的额外功能。

2 个赞

它对我不起作用。

您能再解释一下吗?我仔细检查过了,它按预期工作。我将尝试创建一个主题组件,以便更容易使用。:slightly_smiling_face:

1 个赞

那太好了;因为我没有使用默认的 Discourse 主题;但它对两个主题都不起作用……组件是个好主意……谢谢!

1 个赞

我更改了代码,并将其制作成了一个组件。它与加载微调器不太兼容,希望这能解决问题。我认为它在 body 类列表刷新时中断了。

我添加了一些设置。


你可以在这里找到它。

4 个赞

运行完美,只是访客可以打开/保存图片……但其他功能都正常。

1 个赞

视频上有三个点,用户可以下载。我想禁用下载——只允许查看… https://discourse.fotografos.online/t/fotografia-como-aumentar-a-percepcao-de-valor/223449 我已经检查了“防止匿名用户下载文件”,但这不起作用… 有什么想法吗?@jaymf 或支持频道中的其他人?非常感谢!

你好,

这是一个快速且粗糙的禁用视频下载的解决方案。

将其粘贴到 Common / Header

如果只想禁用视频控件中的下载按钮,请使用此代码。

<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 在点击视频时会询问我想做什么:下载(另存为)还是查看。

你也可以直接从网络选项卡中获取网址并使用 wget。

这简直太棒了!非常感谢!我们将锁定高级内容,而这会完美地发挥作用!

2 个赞