1<?php 2 3/* Copyright (c) 1998-2014 ILIAS open source, Extended GPL, see docs/LICENSE */ 4 5/** 6 * 7 * 8 * @author Alex Killing <alex.killing@gmx.de> 9 * @version $Id\$ 10 * @ingroup 11 */ 12class ilChecklistGUI 13{ 14 /** 15 * @var ilLanguage 16 */ 17 protected $lng; 18 19 protected $items = array(); 20 21 const STATUS_OK = "ok"; 22 const STATUS_NOT_OK = "nok"; 23 const STATUS_NO_STATUS = "no_status"; 24 25 public function __construct() 26 { 27 global $DIC; 28 29 $this->lng = $DIC->language(); 30 } 31 32 /** 33 * Add item 34 * 35 * @param string $a_txt text 36 */ 37 public function addEntry($a_txt, $a_href, $a_status = self::STATUS_NO_STATUS, $a_highlighted = false, $a_info_texts = array()) 38 { 39 $this->items[] = array( 40 "txt" => $a_txt, 41 "href" => $a_href, 42 "status" => $a_status, 43 "highlighted" => $a_highlighted, 44 "info" => $a_info_texts 45 ); 46 } 47 48 /** 49 * Set heading 50 * 51 * @param string $a_val heading 52 */ 53 public function setHeading($a_val) 54 { 55 $this->heading = $a_val; 56 } 57 58 /** 59 * Get heading 60 * 61 * @return string heading 62 */ 63 public function getHeading() 64 { 65 return $this->heading; 66 } 67 68 /** 69 * Get HTML 70 */ 71 public function getHTML() 72 { 73 $lng = $this->lng; 74 75 include_once("./Services/UIComponent/Panel/classes/class.ilPanelGUI.php"); 76 $panel = ilPanelGUI::getInstance(); 77 $panel->setPanelStyle(ilPanelGUI::PANEL_STYLE_SECONDARY); 78 $panel->setHeadingStyle(ilPanelGUI::HEADING_STYLE_BLOCK); 79 $panel->setHeading($this->getHeading()); 80 include_once("./Services/UIComponent/GroupedList/classes/class.ilGroupedListGUI.php"); 81 $list = new ilGroupedListGUI(); 82 foreach ($this->items as $i) { 83 $item_tpl = new ilTemplate("tpl.checklist_item.html", true, true, "Services/UIComponent/Checklist"); 84 85 if (!is_array($i["info"]) && $i["info"] != "") { 86 $i["info"] = array($i["info"]); 87 } 88 if (is_array($i["info"]) && count($i["info"]) > 0) { 89 foreach ($i["info"] as $info) { 90 $item_tpl->setCurrentBlock("info"); 91 $item_tpl->setVariable("INFO_MSG", $info); 92 $item_tpl->parseCurrentBlock(); 93 } 94 } 95 96 $item_tpl->setVariable("TXT_STEP", $i["txt"]); 97 switch ($i["status"]) { 98 case self::STATUS_OK: 99 $item_tpl->setVariable("STATUS_IMG", ilUtil::getImagePath("icon_ok.svg")); 100 $item_tpl->setVariable("STATUS_ALT", $lng->txt("uic_checklist_ok")); 101 break; 102 103 case self::STATUS_NOT_OK: 104 $item_tpl->setVariable("STATUS_IMG", ilUtil::getImagePath("icon_not_ok.svg")); 105 $item_tpl->setVariable("STATUS_ALT", $lng->txt("uic_checklist_not_ok")); 106 break; 107 } 108 $list->addEntry($item_tpl->get(), $i["href"], "", "", $i["highlighted"] ? "ilHighlighted" : ""); 109 } 110 $ch_tpl = new ilTemplate("tpl.checklist.html", true, true, "Services/UIComponent/Checklist"); 111 $ch_tpl->setVariable("LIST", $list->getHTML()); 112 $panel->setBody($ch_tpl->get()); 113 return $panel->getHTML(); 114 } 115} 116