xref: /plugin/combo/ComboStrap/NoteTag.php (revision 04fd306c7c155fa133ebb3669986875d65988276)
1*04fd306cSNickeau<?php
2*04fd306cSNickeau
3*04fd306cSNickeaunamespace ComboStrap;
4*04fd306cSNickeau
5*04fd306cSNickeau
6*04fd306cSNickeau
7*04fd306cSNickeau/**
8*04fd306cSNickeau * Implementation of a inline note
9*04fd306cSNickeau * called an alert in <a href="https://getbootstrap.com/docs/4.0/components/badge/">bootstrap</a>
10*04fd306cSNickeau *
11*04fd306cSNickeau * Quickly created with a copy of a badge
12*04fd306cSNickeau */
13*04fd306cSNickeauclass NoteTag
14*04fd306cSNickeau{
15*04fd306cSNickeau
16*04fd306cSNickeau
17*04fd306cSNickeau    public const ATTRIBUTE_ROUNDED = "rounded";
18*04fd306cSNickeau    public const INOTE_CONF_DEFAULT_ATTRIBUTES_KEY = 'defaultInoteAttributes';
19*04fd306cSNickeau    public const TAG_INOTE = "inote";
20*04fd306cSNickeau
21*04fd306cSNickeau    const KNOWN_TYPES = [
22*04fd306cSNickeau        \syntax_plugin_combo_note::WARNING_TYPE,
23*04fd306cSNickeau        \syntax_plugin_combo_note::IMPORTANT_TYPE,
24*04fd306cSNickeau        \syntax_plugin_combo_note::TIP_TYPE,
25*04fd306cSNickeau        \syntax_plugin_combo_note::INFO_TYPE,
26*04fd306cSNickeau    ];
27*04fd306cSNickeau
28*04fd306cSNickeau
29*04fd306cSNickeau    public static function renderEnterInlineNote(TagAttributes $tagAttributes): string
30*04fd306cSNickeau    {
31*04fd306cSNickeau        $tagAttributes->addClassName("badge");
32*04fd306cSNickeau
33*04fd306cSNickeau        PluginUtility::getSnippetManager()->attachCssInternalStyleSheet(NoteTag::TAG_INOTE);
34*04fd306cSNickeau
35*04fd306cSNickeau        $type = $tagAttributes->getValue(TagAttributes::TYPE_KEY);
36*04fd306cSNickeau
37*04fd306cSNickeau        // Switch for the color
38*04fd306cSNickeau        switch ($type) {
39*04fd306cSNickeau            case "important":
40*04fd306cSNickeau                $type = "warning";
41*04fd306cSNickeau                break;
42*04fd306cSNickeau            case "warning":
43*04fd306cSNickeau                $type = "danger";
44*04fd306cSNickeau                break;
45*04fd306cSNickeau        }
46*04fd306cSNickeau
47*04fd306cSNickeau        if ($type != "tip") {
48*04fd306cSNickeau            $bootstrapVersion = Bootstrap::getBootStrapMajorVersion();
49*04fd306cSNickeau            if ($bootstrapVersion == Bootstrap::BootStrapFiveMajorVersion) {
50*04fd306cSNickeau                /**
51*04fd306cSNickeau                 * We are using
52*04fd306cSNickeau                 */
53*04fd306cSNickeau                $tagAttributes->addClassName("alert-" . $type);
54*04fd306cSNickeau            } else {
55*04fd306cSNickeau                $tagAttributes->addClassName("badge-" . $type);
56*04fd306cSNickeau            }
57*04fd306cSNickeau        } else {
58*04fd306cSNickeau            if (!$tagAttributes->hasComponentAttribute("background-color")) {
59*04fd306cSNickeau                $tagAttributes->addStyleDeclarationIfNotSet("background-color", "#fff79f"); // lum - 195
60*04fd306cSNickeau                $tagAttributes->addClassName("text-dark");
61*04fd306cSNickeau            }
62*04fd306cSNickeau        }
63*04fd306cSNickeau        $rounded = $tagAttributes->getValueAndRemove(NoteTag::ATTRIBUTE_ROUNDED);
64*04fd306cSNickeau        if (!empty($rounded)) {
65*04fd306cSNickeau            $tagAttributes->addClassName("badge-pill");
66*04fd306cSNickeau        }
67*04fd306cSNickeau
68*04fd306cSNickeau        return $tagAttributes->toHtmlEnterTag("span");
69*04fd306cSNickeau    }
70*04fd306cSNickeau
71*04fd306cSNickeau    public static function renderClosingInlineNote(): string
72*04fd306cSNickeau    {
73*04fd306cSNickeau        return '</span>';
74*04fd306cSNickeau    }
75*04fd306cSNickeau
76*04fd306cSNickeau}
77