1*c3437056SNickeau<?php 2*c3437056SNickeau/** 3*c3437056SNickeau * Copyright (c) 2021. ComboStrap, Inc. and its affiliates. All Rights Reserved. 4*c3437056SNickeau * 5*c3437056SNickeau * This source code is licensed under the GPL license found in the 6*c3437056SNickeau * COPYING file in the root directory of this source tree. 7*c3437056SNickeau * 8*c3437056SNickeau * @license GPL 3 (https://www.gnu.org/licenses/gpl-3.0.en.html) 9*c3437056SNickeau * @author ComboStrap <support@combostrap.com> 10*c3437056SNickeau * 11*c3437056SNickeau */ 12*c3437056SNickeau 13*c3437056SNickeaunamespace ComboStrap; 14*c3437056SNickeau 15*c3437056SNickeauuse dokuwiki\Menu\Item\AbstractItem; 16*c3437056SNickeau 17*c3437056SNickeau 18*c3437056SNickeau/** 19*c3437056SNickeau * Class MenuItem 20*c3437056SNickeau * * 21*c3437056SNickeau * @package ComboStrap 22*c3437056SNickeau * 23*c3437056SNickeau * Inspiration: 24*c3437056SNickeau * https://raw.githubusercontent.com/splitbrain/dokuwiki-plugin-dw2pdf/master/MenuItem.php 25*c3437056SNickeau */ 26*c3437056SNickeauclass QualityMenuItem extends AbstractItem 27*c3437056SNickeau{ 28*c3437056SNickeau 29*c3437056SNickeau 30*c3437056SNickeau const CLASS_HTML = "combo-quality-item"; 31*c3437056SNickeau const CANONICAL = "quality"; 32*c3437056SNickeau const CLASS_HTML_LOW = "combo-quality-item-low"; 33*c3437056SNickeau 34*c3437056SNickeau /** 35*c3437056SNickeau * @var Page 36*c3437056SNickeau */ 37*c3437056SNickeau private $page; 38*c3437056SNickeau 39*c3437056SNickeau /** 40*c3437056SNickeau * QualityMenuItem constructor. 41*c3437056SNickeau */ 42*c3437056SNickeau public function __construct() 43*c3437056SNickeau { 44*c3437056SNickeau $snippetManager = PluginUtility::getSnippetManager(); 45*c3437056SNickeau $snippetManager->attachJavascriptComboLibrary(); 46*c3437056SNickeau $snippetManager->attachJavascriptSnippetForRequest(self::CANONICAL); 47*c3437056SNickeau $this->page = Page::createPageFromRequestedPage(); 48*c3437056SNickeau if($this->page->isLowQualityPage()){ 49*c3437056SNickeau $snippetManager->attachCssSnippetForRequest(self::CANONICAL); 50*c3437056SNickeau } 51*c3437056SNickeau parent::__construct(); 52*c3437056SNickeau 53*c3437056SNickeau } 54*c3437056SNickeau 55*c3437056SNickeau 56*c3437056SNickeau /** 57*c3437056SNickeau * 58*c3437056SNickeau * @return string 59*c3437056SNickeau */ 60*c3437056SNickeau public function getLabel(): string 61*c3437056SNickeau { 62*c3437056SNickeau $suffix = ""; 63*c3437056SNickeau if ($this->page->isLowQualityPage()) { 64*c3437056SNickeau $suffix = "(Low)"; 65*c3437056SNickeau } 66*c3437056SNickeau return "Page Quality $suffix"; 67*c3437056SNickeau } 68*c3437056SNickeau 69*c3437056SNickeau public function getLinkAttributes($classprefix = 'menuitem '): array 70*c3437056SNickeau { 71*c3437056SNickeau $linkAttributes = parent::getLinkAttributes($classprefix); 72*c3437056SNickeau /** 73*c3437056SNickeau * A class and not an id 74*c3437056SNickeau * because a menu item can be found twice on 75*c3437056SNickeau * a page (For instance if you want to display it in a layout at a 76*c3437056SNickeau * breakpoint and at another in another breakpoint 77*c3437056SNickeau */ 78*c3437056SNickeau $linkAttributes['class'] = self::CLASS_HTML; 79*c3437056SNickeau if ($this->page->isLowQualityPage()) { 80*c3437056SNickeau $linkAttributes['class'] .= " ".self::CLASS_HTML_LOW; 81*c3437056SNickeau } 82*c3437056SNickeau 83*c3437056SNickeau return $linkAttributes; 84*c3437056SNickeau } 85*c3437056SNickeau 86*c3437056SNickeau public function getTitle(): string 87*c3437056SNickeau { 88*c3437056SNickeau $title = "Show the page quality"; 89*c3437056SNickeau if ($this->page->isLowQualityPage()) { 90*c3437056SNickeau $title .= "\n(This page is a low quality page)"; 91*c3437056SNickeau } else { 92*c3437056SNickeau $title .= "\n(This page has a normal quality)"; 93*c3437056SNickeau } 94*c3437056SNickeau return htmlentities($title); 95*c3437056SNickeau } 96*c3437056SNickeau 97*c3437056SNickeau public function getSvg(): string 98*c3437056SNickeau { 99*c3437056SNickeau 100*c3437056SNickeau if ($this->page->isLowQualityPage()) { 101*c3437056SNickeau /** @var string icon file */ 102*c3437056SNickeau return Resources::getImagesDirectory() . '/quality-alert.svg'; 103*c3437056SNickeau } else { 104*c3437056SNickeau /** 105*c3437056SNickeau * @var string icon file 106*c3437056SNickeau * !!! Same icon used in the landing page !!! 107*c3437056SNickeau */ 108*c3437056SNickeau return Resources::getImagesDirectory() . '/quality.svg'; 109*c3437056SNickeau } 110*c3437056SNickeau } 111*c3437056SNickeau 112*c3437056SNickeau 113*c3437056SNickeau} 114