Преглед на файлове

fixed render static content in TableAjax and added setRowFunctions

Piotr Labudda преди 9 години
родител
ревизия
202f04fc65
променени са 1 файла, в които са добавени 170 реда и са изтрити 141 реда
  1. 170 141
      SE/se-lib/TableAjax.php

+ 170 - 141
SE/se-lib/TableAjax.php

@@ -144,6 +144,30 @@ class TableAjax extends ViewAjax {
 		$this->_saveState();
 	}
 
+	public function setRowFunctions($functions) {
+		$this->_rowFunctions = [];
+		$defaultRowFunction = array();
+		$defaultRowFunction['edit'] = array('href'=>'#EDIT/{0}', 'ico'=>'glyphicon glyphicon-pencil', 'title'=>'Edytuj rekord');
+		$defaultRowFunction['hist'] = array('href'=>'#HIST/{0}', 'ico'=>'glyphicon glyphicon-book', 'title'=>'Historia');
+		$defaultRowFunction['files'] = array('href'=>'#FILES/{0}', 'ico'=>'glyphicon glyphicon-folder-open', 'title'=>'Pliki');
+		$defaultRowFunction['cp'] = array('href'=>'#', 'ico'=>'glyphicon glyphicon-plus-sign', 'title'=>'Kopiuj rekord', 'onclick'=>'return tableAjaxCopy({0});');
+		$defaultRowFunction['msgs'] = array('href'=>"index.php?_route=TableMsgs&_task=tableRow&idTable={$this->_zasobID}&idRow={0}", 'ico'=>'glyphicon glyphicon-envelope', 'title'=>'Wiadomości');
+
+		foreach ($functions as $funName => $params) {
+			if (true === $params) {
+				if (array_key_exists($funName, $defaultRowFunction)) {
+					$this->_rowFunctions[$funName] = $defaultRowFunction[$funName];
+				} else {
+					throw new Exception("Row function not defined '{$funName}'");
+				}
+			}
+			if (is_array($params)) {
+				$this->_rowFunctions[$funName] = $params;
+			}
+		}
+		$this->_saveState('_rowFunctions');
+	}
+
 	public function addRowFunction($funName, $funParams = array()) {
 		$defaultRowFunction = array();
 		//$defaultRowFunction['edit'] = '<a href="#EDIT/{0}" class="glyphicon glyphicon-pencil" title="Edytuj rekord"></a>';
@@ -224,6 +248,148 @@ class TableAjax extends ViewAjax {
 		return false;
 	}
 
+	public function renderStatic() {
+		static $_rendered = false;
+		if ($_rendered) return;
+
+		if ($tblAjaxMap) $tblAjaxMap->printCSS();
+		if ($tblAjaxMap) $tblAjaxMap->printJS();
+		echo UI::h('script', ['src'=>"stuff/jquery-ui-1.10.4.custom.min.js"]);
+		echo UI::h('script', ['src'=>"static/sweetalert2.min.js"]);
+		echo UI::h('script', ['src'=>"static/jquery.doubleScroll.js"]);
+		echo UI::h('link', ['rel'=>"stylesheet", 'type'=>"text/css", 'href'=>"stuff/jquery-ui-smoothness/jquery-ui-1.10.4.custom.min.css"]);
+		echo UI::h('link', ['rel'=>"stylesheet", 'type'=>"text/css", 'href'=>"static/sweetalert2.min.css"]);
+		echo UI::h('style', ['type'=>"text/css"], "
+			.AjaxTable{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;}
+
+			.AjaxTableCont {position:relative; margin:10px 0; width:100%; overflow-x:auto; border:none;}
+			.AjaxTable *,
+			.AjaxTable.table {white-space:nowrap; width:auto;}
+			.AjaxTable .popover * {white-space:normal;}
+			.AjaxTable p {margin:0;}
+			.AjaxTable td, .AjaxTable th {line-height:18px;}
+			.AjaxTable i {margin: 0 0 0 2px;opacity: 0.5;}
+			.AjaxTable span.filter {background-color:#999;}
+			.AjaxTable .indeterminate {opacity: 0.4;-ms-filter:\"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)\";filter:alpha(opacity=40);}
+			.AjaxTable .columnpicker li, .AjaxTable .actions li {padding-left:5px;}
+			.AjaxTableCont .btn-toolbar {margin:2px 0 0 0;}
+			.AjaxTableCont .btn-toolbar .btn-group {vertical-align:top;}
+			.AjaxTable input[type=checkbox] {margin:0;padding:0;height:13px;}
+			.AjaxTable input[type=text].filter {margin:0;padding:0 5px;box-shadow:none;width:100%;background:#eee;color:#000;}
+			.AjaxTable input[type=text].filter {border-width:2px 0;border-color:#eee;border-style:solid;}
+			.AjaxTable input[type=text].filter-active {border-color:#00ACCC;}
+			.AjaxTable .date-wrap {width:100%;min-width:115px;}
+			.AjaxTable .dateWrap .add-on {margin:0;padding:0;background:none;border:none;float:right;cursor:pointer;}
+			.AjaxTable .actions a {padding:0;margin:0;}
+			.AjaxTableCont .text-right {text-align:right}
+			.AjaxTableCont .breadcrumb em {color:#bbb;}
+
+			.AjaxTable-loading .head-info {background:url(./icon/loading.gif) no-repeat left top; background-position:0 6px;}
+			.AjaxTable-loading .loading-info,
+			.AjaxTableCont .tblAjax__inlineEditBox .loading-info {display:block; padding:0 0 0 20px; background:url(./icon/loading.gif) no-repeat left top;}
+			.AjaxTableCont .loading-info {display:none;}
+			.AjaxTableCont .tblAjax__inlineEditBox .loading-info {display:block;}
+			.AjaxTableCont .table {margin-bottom:0px;}
+			.AjaxTableCont .stickyCol1 a { color:#333; }
+			.AjaxTableCont .stickyCol1 a:hover { color:#337AB7; text-decoration:none; }
+			.AjaxTableTaskCnt {padding:0 10px 10px 10px;}
+
+			.AjaxTable .tbl-short-txt{max-width:140px; overflow:hidden;}
+			.AjaxTable .tbl-short-txt span{display:block; height:18px;}
+			.AjaxTable .tooltip-inner{white-space:normal;}
+			.AjaxTable thead .sort .ta-ordering {cursor:pointer;}
+			.AjaxTable thead .sort .ta-ordering span {margin:0 10px 0 0; padding:0; background-repeat:no-repeat; background-position:right top;}
+			.AjaxTable thead .sort .ta-ordering-down span:after{content:\"\\e252\";font-family:\"Glyphicons Halflings\";line-height:1;margin:0 0 0 3px;display:inline-block;color:#bbb;}
+			.AjaxTable thead .sort .ta-ordering-up   span:after{content:\"\\e253\";font-family:\"Glyphicons Halfling\";line-height:1;margin:0 0 0 3px;display:inline-block;color:#bbb;}
+			.AjaxTable thead .sort .ta-ordering {position:relative;}
+
+			.AjaxTable thead .sort th .hover-show:hover{background-color:#000; background-image:url(stuff/twitter-bootstrap/img/glyphicons-halflings-white.png);}
+			.AjaxTable thead .sort th .hover-show{display:none;}
+			.AjaxTable thead .sort th:hover .hover-show{display:inline;}
+
+			.AjaxTable thead .sort .ta-ordering .remove-cell {position:absolute; top:6px; right:2px; display:none; color:#f00;}
+			.AjaxTable thead .sort .ta-ordering:hover .remove-cell {display:block;}
+
+			 .AjaxTableCont .pagination { margin:0; }
+			 .AjaxTableCont .pagination a { line-height:16px; }
+
+			.AjaxTableCont .AjaxTableEdit-label { display:block; margin:0 0 3px 0; font-size:12px !important; line-height:16px !important; }
+			.AjaxTableCont .AjaxTableEdit-label code { padding:0; white-space:nowrap; background-color:transparent; border:none; color:#777; font-size:10px !important; line-height:14px !important; }
+			.AjaxTableCont .AjaxTableEdit .show-last-value .button-appendBack .glyphicon,
+			.AjaxTableCont .AjaxFrmHorizontalEdit .show-last-value .button-appendBack .glyphicon {display:none;}
+			.AjaxTableHist em {color:silver;}
+
+			.AjaxTableCont .foot * { font-size:12px !important; }
+			.AjaxTableCont .foot { margin:10px; }
+			.AjaxTableCont .foot .foot-info { float:left; padding:0 20px; }
+			 .AjaxTableCont .foot .foot-info p { line-height:16px; margin:5px 0; }
+			.AjaxTable-loading .foot .foot-info {padding-left:20px; background:url(./icon/loading.gif) no-repeat left top;}
+
+			.tblAjax__head__specialFilter {margin:0;padding:4px 4px 4px 127px;}
+			.tblAjax__head__specialFilter .btn-group {margin:0 4px;padding:0;}
+			.tblAjax__head__specialFilter .btn-group .glyphicon-remove {color:#f00;}
+			.tblAjax__head__specialFilter .btn-group button.disabled .glyphicon-remove {color:#bbb;}
+
+			/* overwrite bootstrap table border */
+			.AjaxTable,    .AjaxTableEdit,
+			.AjaxTable td, .AjaxTableEdit td,
+			.AjaxTable th, .AjaxTableEdit th { border-color:#999; }
+
+			/* cell A_STATUS */
+			.AjaxTable .cell-A_STATUS-NORMAL { background:#aeffae; color:#000; text-align:center; }
+			.AjaxTable .cell-A_STATUS-WAITING { background:#ffd2ff; color:#000; text-align:center; }
+			.AjaxTable .cell-A_STATUS-MONITOR { background:#cccaff; color:#000; text-align:center; }
+			.AjaxTable .cell-A_STATUS-WARNING { background:#ffbaba; color:#000; text-align:center; }
+			.AjaxTable .cell-A_STATUS-DELETED { background:#e0e0e0; color:#808080; text-align:center; }
+			.AjaxTable .cell-A_STATUS-OFF_SOFT { background:#fce3b7; color:#808080; text-align:center; }
+			.AjaxTable .cell-A_STATUS-OFF_HARD { background:#eee; color:#808080; text-align:center; }
+
+			/* cell Status */
+			.AjaxTable .cell-Status-U  { background:rgb(0,176,80); color:#000; text-align:center; }
+			.AjaxTable .cell-Status-NU { background:#f00; color:#000; text-align:center; }
+			.AjaxTable .cell-Status-P  { background:rgb(112,48,160); color:#000; text-align:center; }
+			.AjaxTable .cell-Status-PT { background:rgb(127,127,127); color:#000; text-align:center; }
+			.AjaxTable .cell-Status-O  { background:rgb(0,176,240); color:#000; text-align:center; }
+			.AjaxTable .cell-Status-DZ { background:rgb(0,112,192); color:#000; text-align:center; }
+			.AjaxTable .cell-Status-Z  {}
+
+			/* map */
+			.AjaxTable .cell-mapfld { cursor:pointer; }
+			.AjaxTable .cell-mapfld:hover { opacity:1; }
+			 .AjaxTable .cell-mapfld-remove { display:none; }
+			 .AjaxTable .cell-mapfld-hasValue .cell-mapfld-select { color:#f00; }
+			 .AjaxTable .cell-mapfld-hasValue .cell-mapfld-remove { display:inline-block; }
+			.AjaxTableCont .mapEditor { position:absolute; bottom:0; right:6px; width:512px; height:318px; overflow:hidden; color:#eee; border:1px solid #999; }
+			 .AjaxTableCont .mapEditor-panel { height:16px; padding:0 6px; background:#999; border-bottom:1px solid #eee; }
+			  .AjaxTableCont .mapEditor-panel a { display:block; float:right; padding:0 6px; font-weight:bold; font-size:12px; line-height:16px; color:#fff; }
+			  .AjaxTableCont .mapEditor-panel a:hover { color:#006CD7; text-decoration:none; }
+			  .AjaxTableCont .mapEditor-panel a.mapEditor-panel-close:hover { color:#f00; }
+			 .AjaxTableCont .mapEditor-map { background:#fff; height:400px; }
+			.AjaxTableCont-mapEditorContainer .mapEditor-map { border:1px solid #999; overflow:hidden; }
+			/* .mapEditor-btnBackToWindow \"olControlSave\",overview_replacement */
+			.olControlEditingToolbar .mapEditor-btnBackToWindowItemInactive,
+			.olControlEditingToolbar .mapEditor-btnBackToWindowItemActive {
+				background-image: url(icon/map.window.png);
+				background-position: 0 0;
+				background-repeat: no-repeat;
+			}
+			/*
+			.mapEditor-btnBackToWindowItemInactive { background-image: url(stuff/open-layers/theme/default/img/overview_replacement.gif); }
+			.mapEditor-btnBackToWindowItemActive { background-image: url(stuff/open-layers/theme/default/img/overview_replacement.gif); }
+			*/
+			.ui-dialog-content .mapEditor-btnBackToWindowItemInactive,
+			.ui-dialog-content .mapEditor-btnBackToWindowItemActive { display:none; }
+
+			.AjaxTableCont .valign-btns-bottom a { vertical-align:text-bottom; font-weight:normal; font-size:12px; line-height:14px; }
+
+			.ui-resizable-s { bottom:0; }
+			.ui-resizable-e { right:0; }
+			.AjaxTableCont-mapEditorContainer .ui-resizable-s { background-color:#ddd; }
+			.AjaxTableCont-mapEditorContainer .ui-resizable-s:hover { background-color:#888; }
+		");
+		$_rendered = true;
+	}
+
 	public function render() {
 		$acl = $this->_acl;
 		$hasGeomFlds = Core_AclHelper::hasGeomFields($acl);
@@ -232,148 +398,11 @@ class TableAjax extends ViewAjax {
 
 		$jsToogleFiltrProcesuFunctionName = 'tableAjaxToggleFiltrProcesInit';
 		ob_start();
+		$this->renderStatic();
+		UI::startContainer();
+		UI::showMessagesForTable($this->_tbl);
+		UI::endContainer();
 		?>
-
-		<div class="container">
-			<?php UI::showMessagesForTable($this->_tbl); ?>
-		</div>
-
-		<?php if ($tblAjaxMap) $tblAjaxMap->printCSS(); ?>
-		<?php if ($tblAjaxMap) $tblAjaxMap->printJS(); ?>
-		<script src="stuff/jquery-ui-1.10.4.custom.min.js"></script>
-		<script src="static/sweetalert2.min.js"></script>
-		<script src="static/jquery.doubleScroll.js"></script>
-		<link rel="stylesheet" type="text/css" href="stuff/jquery-ui-smoothness/jquery-ui-1.10.4.custom.min.css">
-		<link rel="stylesheet" type="text/css" href="static/sweetalert2.min.css">
-		<style type="text/css">
-.AjaxTable{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0;}
-
-.AjaxTableCont {position:relative; margin:10px 0; width:100%; overflow-x:auto; border:none;}
-.AjaxTable *,
-.AjaxTable.table {white-space:nowrap; width:auto;}
-.AjaxTable .popover * {white-space:normal;}
-.AjaxTable p {margin:0;}
-.AjaxTable td, .AjaxTable th {line-height:18px;}
-.AjaxTable i {margin: 0 0 0 2px;opacity: 0.5;}
-.AjaxTable span.filter {background-color:#999;}
-.AjaxTable .indeterminate {opacity: 0.4;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=40)";filter:alpha(opacity=40);}
-.AjaxTable .columnpicker li, .AjaxTable .actions li {padding-left:5px;}
-.AjaxTableCont .btn-toolbar {margin:2px 0 0 0;}
-.AjaxTableCont .btn-toolbar .btn-group {vertical-align:top;}
-.AjaxTable input[type=checkbox] {margin:0;padding:0;height:13px;}
-.AjaxTable input[type=text].filter {margin:0;padding:0 5px;box-shadow:none;width:100%;background:#eee;color:#000;}
-.AjaxTable input[type=text].filter {border-width:2px 0;border-color:#eee;border-style:solid;}
-.AjaxTable input[type=text].filter-active {border-color:#00ACCC;}
-.AjaxTable .date-wrap {width:100%;min-width:115px;}
-.AjaxTable .dateWrap .add-on {margin:0;padding:0;background:none;border:none;float:right;cursor:pointer;}
-.AjaxTable .actions a {padding:0;margin:0;}
-.AjaxTableCont .text-right {text-align:right}
-.AjaxTableCont .breadcrumb em {color:#bbb;}
-
-.AjaxTable-loading .head-info {background:url(./icon/loading.gif) no-repeat left top; background-position:0 6px;}
-.AjaxTable-loading .loading-info,
-.AjaxTableCont .tblAjax__inlineEditBox .loading-info {display:block; padding:0 0 0 20px; background:url(./icon/loading.gif) no-repeat left top;}
-.AjaxTableCont .loading-info {display:none;}
-.AjaxTableCont .tblAjax__inlineEditBox .loading-info {display:block;}
-.AjaxTableCont .table {margin-bottom:0px;}
-.AjaxTableCont .stickyCol1 a { color:#333; }
-.AjaxTableCont .stickyCol1 a:hover { color:#337AB7; text-decoration:none; }
-.AjaxTableTaskCnt {padding:0 10px 10px 10px;}
-
-.AjaxTable .tbl-short-txt{max-width:140px; overflow:hidden;}
-.AjaxTable .tbl-short-txt span{display:block; height:18px;}
-.AjaxTable .tooltip-inner{white-space:normal;}
-.AjaxTable thead .sort .ta-ordering {cursor:pointer;}
-.AjaxTable thead .sort .ta-ordering span {margin:0 10px 0 0; padding:0; background-repeat:no-repeat; background-position:right top;}
-.AjaxTable thead .sort .ta-ordering-down span:after{content:"\e252";font-family:"Glyphicons Halflings";line-height:1;margin:0 0 0 3px;display:inline-block;color:#bbb;}
-.AjaxTable thead .sort .ta-ordering-up   span:after{content:"\e253";font-family:"Glyphicons Halflings";line-height:1;margin:0 0 0 3px;display:inline-block;color:#bbb;}
-.AjaxTable thead .sort .ta-ordering {position:relative;}
-
-.AjaxTable thead .sort th .hover-show:hover{background-color:#000; background-image:url(stuff/twitter-bootstrap/img/glyphicons-halflings-white.png);}
-.AjaxTable thead .sort th .hover-show{display:none;}
-.AjaxTable thead .sort th:hover .hover-show{display:inline;}
-
-.AjaxTable thead .sort .ta-ordering .remove-cell {position:absolute; top:6px; right:2px; display:none; color:#f00;}
-.AjaxTable thead .sort .ta-ordering:hover .remove-cell {display:block;}
-
- .AjaxTableCont .pagination { margin:0; }
- .AjaxTableCont .pagination a { line-height:16px; }
-
-.AjaxTableCont .AjaxTableEdit-label { display:block; margin:0 0 3px 0; font-size:12px !important; line-height:16px !important; }
-.AjaxTableCont .AjaxTableEdit-label code { padding:0; white-space:nowrap; background-color:transparent; border:none; color:#777; font-size:10px !important; line-height:14px !important; }
-.AjaxTableCont .AjaxTableEdit .show-last-value .button-appendBack .glyphicon,
-.AjaxTableCont .AjaxFrmHorizontalEdit .show-last-value .button-appendBack .glyphicon {display:none;}
-.AjaxTableHist em {color:silver;}
-
-.AjaxTableCont .foot * { font-size:12px !important; }
-.AjaxTableCont .foot { margin:10px; }
-.AjaxTableCont .foot .foot-info { float:left; padding:0 20px; }
- .AjaxTableCont .foot .foot-info p { line-height:16px; margin:5px 0; }
-.AjaxTable-loading .foot .foot-info {padding-left:20px; background:url(./icon/loading.gif) no-repeat left top;}
-
-.tblAjax__head__specialFilter {margin:0;padding:4px 4px 4px 127px;}
-.tblAjax__head__specialFilter .btn-group {margin:0 4px;padding:0;}
-.tblAjax__head__specialFilter .btn-group .glyphicon-remove {color:#f00;}
-.tblAjax__head__specialFilter .btn-group button.disabled .glyphicon-remove {color:#bbb;}
-
-/* overwrite bootstrap table border */
-.AjaxTable,    .AjaxTableEdit,
-.AjaxTable td, .AjaxTableEdit td,
-.AjaxTable th, .AjaxTableEdit th { border-color:#999; }
-
-/* cell A_STATUS */
-.AjaxTable .cell-A_STATUS-NORMAL { background:#aeffae; color:#000; text-align:center; }
-.AjaxTable .cell-A_STATUS-WAITING { background:#ffd2ff; color:#000; text-align:center; }
-.AjaxTable .cell-A_STATUS-MONITOR { background:#cccaff; color:#000; text-align:center; }
-.AjaxTable .cell-A_STATUS-WARNING { background:#ffbaba; color:#000; text-align:center; }
-.AjaxTable .cell-A_STATUS-DELETED { background:#e0e0e0; color:#808080; text-align:center; }
-.AjaxTable .cell-A_STATUS-OFF_SOFT { background:#fce3b7; color:#808080; text-align:center; }
-.AjaxTable .cell-A_STATUS-OFF_HARD { background:#eee; color:#808080; text-align:center; }
-
-/* cell Status */
-.AjaxTable .cell-Status-U  { background:rgb(0,176,80); color:#000; text-align:center; }
-.AjaxTable .cell-Status-NU { background:#f00; color:#000; text-align:center; }
-.AjaxTable .cell-Status-P  { background:rgb(112,48,160); color:#000; text-align:center; }
-.AjaxTable .cell-Status-PT { background:rgb(127,127,127); color:#000; text-align:center; }
-.AjaxTable .cell-Status-O  { background:rgb(0,176,240); color:#000; text-align:center; }
-.AjaxTable .cell-Status-DZ { background:rgb(0,112,192); color:#000; text-align:center; }
-.AjaxTable .cell-Status-Z  {}
-
-/* map */
-.AjaxTable .cell-mapfld { cursor:pointer; }
-.AjaxTable .cell-mapfld:hover { opacity:1; }
- .AjaxTable .cell-mapfld-remove { display:none; }
- .AjaxTable .cell-mapfld-hasValue .cell-mapfld-select { color:#f00; }
- .AjaxTable .cell-mapfld-hasValue .cell-mapfld-remove { display:inline-block; }
-.AjaxTableCont .mapEditor { position:absolute; bottom:0; right:6px; width:512px; height:318px; overflow:hidden; color:#eee; border:1px solid #999; }
- .AjaxTableCont .mapEditor-panel { height:16px; padding:0 6px; background:#999; border-bottom:1px solid #eee; }
-  .AjaxTableCont .mapEditor-panel a { display:block; float:right; padding:0 6px; font-weight:bold; font-size:12px; line-height:16px; color:#fff; }
-  .AjaxTableCont .mapEditor-panel a:hover { color:#006CD7; text-decoration:none; }
-  .AjaxTableCont .mapEditor-panel a.mapEditor-panel-close:hover { color:#f00; }
- .AjaxTableCont .mapEditor-map { background:#fff; height:400px; }
-.AjaxTableCont-mapEditorContainer .mapEditor-map { border:1px solid #999; overflow:hidden; }
-/* .mapEditor-btnBackToWindow "olControlSave",overview_replacement */
-.olControlEditingToolbar .mapEditor-btnBackToWindowItemInactive,
-.olControlEditingToolbar .mapEditor-btnBackToWindowItemActive {
-	background-image: url(icon/map.window.png);
-	background-position: 0 0;
-	background-repeat: no-repeat;
-}
-/*
-.mapEditor-btnBackToWindowItemInactive { background-image: url(stuff/open-layers/theme/default/img/overview_replacement.gif); }
-.mapEditor-btnBackToWindowItemActive { background-image: url(stuff/open-layers/theme/default/img/overview_replacement.gif); }
-*/
-.ui-dialog-content .mapEditor-btnBackToWindowItemInactive,
-.ui-dialog-content .mapEditor-btnBackToWindowItemActive { display:none; }
-
-.AjaxTableCont .valign-btns-bottom a { vertical-align:text-bottom; font-weight:normal; font-size:12px; line-height:14px; }
-
-.ui-resizable-s { bottom:0; }
-.ui-resizable-e { right:0; }
-.AjaxTableCont-mapEditorContainer .ui-resizable-s { background-color:#ddd; }
-.AjaxTableCont-mapEditorContainer .ui-resizable-s:hover { background-color:#888; }
-	</style>
-
 		<div class="AjaxTableCont">
 			<ul class="breadcrumb">
 				<li><a href="#" onclick="return tableAjaxBackToTable();"><?php echo $this->getLabelHtml(); ?></a></li>