from djangoblog.plugin_manage.base_plugin import BasePlugin
from djangoblog.plugin_manage import hooks
from djangoblog.plugin_manage.hook_constants import ARTICLE_CONTENT_HOOK_NAME


class ArticleCopyrightPlugin(BasePlugin):
    """
    文章版权声明插件
    功能：在文章正文末尾自动添加版权声明信息
    """

    # 插件基本信息配置
    PLUGIN_NAME = '文章结尾版权声明'  # 插件显示名称
    PLUGIN_DESCRIPTION = '一个在文章正文末尾添加版权声明的插件。'  # 插件功能描述
    PLUGIN_VERSION = '0.2.0'  # 插件版本号
    PLUGIN_AUTHOR = 'liangliangyy'  # 插件作者

    # 2. 实现 register_hooks 方法，专门用于注册钩子
    def register_hooks(self):
        """
        注册钩子函数
        这个方法在插件初始化时被自动调用，用于将插件的功能方法注册到系统的钩子上
        """
        # 将 add_copyright_to_content 方法注册到文章内容钩子
        # 当系统处理文章内容时，会自动调用这个方法来添加版权信息
        hooks.register(ARTICLE_CONTENT_HOOK_NAME, self.add_copyright_to_content)

    def add_copyright_to_content(self, content, *args, **kwargs):
        """
        文章内容处理函数 - 在文章末尾添加版权声明

        参数:
            content: str - 原始的文章内容
            *args, **kwargs: 其他参数，其中包含文章对象

        返回值:
            str - 添加了版权声明后的完整内容
        """
        # 从参数中获取文章对象
        article = kwargs.get('article')

        # 如果没有文章对象，直接返回原内容（避免错误）
        if not article:
            return content

        # 构建版权声明HTML代码
        copyright_info = f"\n<hr><p>本文由 {article.author.username} 原创，转载请注明出处。</p>"

        # 将版权信息追加到文章内容末尾
        return content + copyright_info


# 3. 实例化插件。
# 这会自动调用 BasePlugin.__init__，然后 BasePlugin.__init__ 会调用我们上面定义的 register_hooks 方法。
plugin = ArticleCopyrightPlugin()
