from django.contrib.sites.shortcuts import get_current_site
from django.utils.translation import gettext_lazy as _

from cms.plugin_base import CMSPluginBase
from cms.plugin_pool import plugin_pool

from .helpers import get_link
from .models import Link


class LinkPlugin(CMSPluginBase):
    model = Link
    name = _("Link")
    text_enabled = True
    text_icon = (
        '<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-link-45deg" '
        'viewBox="0 0 16 16"><path d="M4.715 6.542 3.343 7.914a3 3 0 1 0 4.243 4.243l1.828-1.829A3 3 0 0 0 8.586 '
        "5.5L8 6.086a1 1 0 0 0-.154.199 2 2 0 0 1 .861 3.337L6.88 11.45a2 2 0 1 1-2.83-2.83l.793-.792a4 4 0 0 "
        '1-.128-1.287z"/><path d="M6.586 4.672A3 3 0 0 0 7.414 9.5l.775-.776a2 2 0 0 1-.896-3.346L9.12 3.55a2 2 0 '
        '1 1 2.83 2.83l-.793.792c.112.42.155.855.128 1.287l1.372-1.372a3 3 0 1 0-4.243-4.243z"/></svg>'
    )
    allow_children = True

    fieldsets = [
        (
            None,
            {
                "fields": (
                    "name",
                    "link",
                    "target",
                )
            },
        ),
        (
            _("Advanced settings"),
            {
                "classes": ("collapse",),
                "fields": (
                    "template",
                    "attributes",
                ),
            },
        ),
    ]

    def get_render_template(self, context, instance, placeholder):
        return f"djangocms_link/{instance.template}/link.html"

    def render(self, context, instance, placeholder):
        context["link"] = get_link(
            instance.link, getattr(get_current_site(context["request"]), "id", None)
        )
        return super().render(context, instance, placeholder)


plugin_pool.register_plugin(LinkPlugin)
