1*37748cd8SNickeau<?php 2*37748cd8SNickeau 3*37748cd8SNickeaunamespace ComboStrap; 4*37748cd8SNickeau 5*37748cd8SNickeauuse dokuwiki\Extension\Plugin; 6*37748cd8SNickeau 7*37748cd8SNickeauclass Message 8*37748cd8SNickeau{ 9*37748cd8SNickeau 10*37748cd8SNickeau 11*37748cd8SNickeau const SIGNATURE_CLASS = "signature"; 12*37748cd8SNickeau const TAG = "message"; 13*37748cd8SNickeau private $content = ""; 14*37748cd8SNickeau private $type = self::TYPE_CLASSIC; 15*37748cd8SNickeau 16*37748cd8SNickeau const TYPE_CLASSIC = 'Classic'; 17*37748cd8SNickeau const TYPE_WARNING = 'Warning'; 18*37748cd8SNickeau 19*37748cd8SNickeau /** 20*37748cd8SNickeau * @var Plugin 21*37748cd8SNickeau */ 22*37748cd8SNickeau private $plugin; 23*37748cd8SNickeau private $signatureCanonical; 24*37748cd8SNickeau private $signatureName; 25*37748cd8SNickeau /** 26*37748cd8SNickeau * @var TagAttributes 27*37748cd8SNickeau */ 28*37748cd8SNickeau private $tagAttributes; 29*37748cd8SNickeau 30*37748cd8SNickeau /** 31*37748cd8SNickeau * @param Plugin $plugin 32*37748cd8SNickeau */ 33*37748cd8SNickeau public function __construct($plugin = null) 34*37748cd8SNickeau { 35*37748cd8SNickeau $this->plugin = $plugin; 36*37748cd8SNickeau $this->tagAttributes = TagAttributes::createEmpty("message") 37*37748cd8SNickeau ->addClassName("alert") 38*37748cd8SNickeau ->addHtmlAttributeValue("role", "alert"); 39*37748cd8SNickeau } 40*37748cd8SNickeau 41*37748cd8SNickeau 42*37748cd8SNickeau public function addContent($message) 43*37748cd8SNickeau { 44*37748cd8SNickeau $this->content .= $message; 45*37748cd8SNickeau } 46*37748cd8SNickeau 47*37748cd8SNickeau public function setType($type) 48*37748cd8SNickeau { 49*37748cd8SNickeau $this->type = $type; 50*37748cd8SNickeau } 51*37748cd8SNickeau 52*37748cd8SNickeau public function setSignatureCanonical($canonical) 53*37748cd8SNickeau { 54*37748cd8SNickeau $this->signatureCanonical = $canonical; 55*37748cd8SNickeau } 56*37748cd8SNickeau 57*37748cd8SNickeau public function setClass($class) 58*37748cd8SNickeau { 59*37748cd8SNickeau $this->tagAttributes->addClassName($class); 60*37748cd8SNickeau } 61*37748cd8SNickeau 62*37748cd8SNickeau public function getContent() 63*37748cd8SNickeau { 64*37748cd8SNickeau return $this->content; 65*37748cd8SNickeau } 66*37748cd8SNickeau 67*37748cd8SNickeau public function getType() 68*37748cd8SNickeau { 69*37748cd8SNickeau return $this->type; 70*37748cd8SNickeau } 71*37748cd8SNickeau 72*37748cd8SNickeau public function setSignatureName($signatureName) 73*37748cd8SNickeau { 74*37748cd8SNickeau $this->signatureName = $signatureName; 75*37748cd8SNickeau } 76*37748cd8SNickeau 77*37748cd8SNickeau /** 78*37748cd8SNickeau * Used when sending message and in the main content 79*37748cd8SNickeau * @return string 80*37748cd8SNickeau */ 81*37748cd8SNickeau public function toHtml() 82*37748cd8SNickeau { 83*37748cd8SNickeau 84*37748cd8SNickeau PluginUtility::getSnippetManager()->upsertCssSnippetForRequest(self::TAG); 85*37748cd8SNickeau $message = ""; 86*37748cd8SNickeau if ($this->getContent() <> "") { 87*37748cd8SNickeau 88*37748cd8SNickeau if ($this->getType() == Message::TYPE_CLASSIC) { 89*37748cd8SNickeau $this->tagAttributes->addClassName("alert-success"); 90*37748cd8SNickeau } else { 91*37748cd8SNickeau $this->tagAttributes->addClassName("alert-warning"); 92*37748cd8SNickeau } 93*37748cd8SNickeau 94*37748cd8SNickeau $message = $this->tagAttributes->toHtmlEnterTag("div"); 95*37748cd8SNickeau $message .= $this->getContent(); 96*37748cd8SNickeau 97*37748cd8SNickeau /** 98*37748cd8SNickeau * If this is a test call without a plugin 99*37748cd8SNickeau * we have no plugin attached 100*37748cd8SNickeau */ 101*37748cd8SNickeau $firedByLang = "This message was fired by the "; 102*37748cd8SNickeau if($this->plugin!=null){ 103*37748cd8SNickeau $firedByLang = $this->plugin->getLang('message_come_from'); 104*37748cd8SNickeau } 105*37748cd8SNickeau 106*37748cd8SNickeau $message .= '<div class="' . self::SIGNATURE_CLASS . '">' . $firedByLang . PluginUtility::getUrl($this->signatureCanonical, $this->signatureName, false) . '</div>'; 107*37748cd8SNickeau $message .= '</div>'; 108*37748cd8SNickeau 109*37748cd8SNickeau /** 110*37748cd8SNickeau * In dev, to spot the XHTML compliance error 111*37748cd8SNickeau */ 112*37748cd8SNickeau if (PluginUtility::isDevOrTest()){ 113*37748cd8SNickeau $isXml = XmlUtility::isXml($message); 114*37748cd8SNickeau if (!$isXml){ 115*37748cd8SNickeau LogUtility::msg("This message is not xml compliant ($message)"); 116*37748cd8SNickeau $message =<<<EOF 117*37748cd8SNickeau<div class='alert alert-warning'> 118*37748cd8SNickeau <p>This message is not xml compliant</p> 119*37748cd8SNickeau <pre>$message</pre> 120*37748cd8SNickeau</div> 121*37748cd8SNickeauEOF; 122*37748cd8SNickeau } 123*37748cd8SNickeau } 124*37748cd8SNickeau 125*37748cd8SNickeau } 126*37748cd8SNickeau return $message; 127*37748cd8SNickeau } 128*37748cd8SNickeau 129*37748cd8SNickeau} 130