Exemplo n.º 1
0
	function __GroupRightsShowRowDefault($module_id, $ar, $value, $arSites, $arRightsUseSites, $site_id_tmp)
	{
		$GROUP_DEFAULT_RIGHT = COption::GetOptionString($module_id, "GROUP_DEFAULT_RIGHT", false, (strlen($site_id_tmp) > 0 ? $site_id_tmp : ""), (strlen($site_id_tmp) > 0));
		if (!$GROUP_DEFAULT_RIGHT)
		{
			if (strlen($site_id_tmp) == 0)
				$GROUP_DEFAULT_RIGHT = "D";
			else
				return;
		}

		$arUsedGroups[$value["ID"]] = true;
		
		$titleCol = freetrix_sessid_post()."<b>".GetMessage("MAIN_BY_DEFAULT")."</b>";

		__GroupRightsShowRow($titleCol, false, 0, $ar, $GROUP_DEFAULT_RIGHT, $site_id_tmp, $arRightsUseSites, $arSites, false);

	}	
Exemplo n.º 2
0
	function StartContent($arAdditional = array())
	{
		$this->InitSystem();

		$this->EndDescription();
		$this->bContentStarted = true;

		if ($arAdditional['buffer'])
		{
			$this->bContentBuffered = true;
			//ob_start();
			$this->cont_id = RandString(10);
			echo '<div id="'.$this->cont_id.'" style="display: none;">';
		}

		echo '<form name="'.$this->__form_name.'">'."\r\n";
		echo freetrix_sessid_post()."\r\n";

		if (is_set($_REQUEST, 'back_url'))
			echo '<input type="hidden" name="back_url" value="'.htmlspecialcharsbx($_REQUEST['back_url']).'" />'."\r\n";
	}
Exemplo n.º 3
0
	function CustomizeLHEForBlogComments()
	{
		?>
		<script>
		LHEButtons['BlogImage'] ={
			id : 'Image', // Standart image icon from editor-s CSS
			name : BX.message.Image,
			handler: function(pBut)
			{
				//pBut.pLEditor.OpenDialog({id : 'BlogImage', obj: false});
				blogShowFile();
			},
			OnBeforeCreate: function(pLEditor, pBut)
				{
					// Disable in non BBCode mode in html
					pBut.disableOnCodeView = !pLEditor.bBBCode || pLEditor.arConfig.bConvertContentFromBBCodes;
					return pBut;
				},
			parser: {
				name: 'blogimage',
				obj: {
					Parse: function(sName, sContent, pLEditor)
					{
						var i, cnt = arImages.length, j;
						if (!pLEditor.arBlogImages)
							pLEditor.arBlogImages = {};

						for(i = 0; i < cnt; i++)
						{
							if (!pLEditor.arBlogImages[arImagesId[i]])
							{
								pLEditor.arBlogImages[arImagesId[i]] = {
									src : arImages[i],
									pTitle: ''
								};
							}
						}

						sContent = sContent.replace(/\[IMG ID=((?:\s|\S)*?)(?:\s*?WIDTH=(\d+)\s*?HEIGHT=(\d+))?\]/ig, function(str, id, width, height)
						{
							if (!pLEditor.arBlogImages[id])
								return str;

							width = parseInt(width);
							height = parseInt(height);

							var
								strSize = "",
								imageSrc = pLEditor.arBlogImages[id].src,
								imageTitle = "";

							if (width && height && pLEditor.bBBParseImageSize)
								strSize = " width=\"" + width + "\" height=\"" + height + "\"";

							return '<img id="' + pLEditor.SetBxTag(false, {tag: "blogimage", params: {value : id}}) + '" src="' + imageSrc + '" title="' + imageTitle + '" ' + strSize +'>';
						});
						return sContent;
					},
					UnParse: function(bxTag, pNode, pLEditor)
					{
						if (bxTag.tag == 'blogimage')
						{
							var
								width = parseInt(pNode.arAttributes['width']),
								height = parseInt(pNode.arAttributes['height']),
								strSize = "";

							if (width && height  && pLEditor.bBBParseImageSize)
								strSize = ' WIDTH=' + width + ' HEIGHT=' + height;

							return '[IMG ID=' + bxTag.params.value + strSize + ']';
						}
						return "";
					}
				}
			}
		};


		window.LHEDailogs['BlogImage'] = function(pObj)
		{
			var str =
				'<span class="errortext" id="lhed_blog_image_error" style="display:none;"></span>' +
				'<table width="100%"><tr>' +
				'<td class="lhe-dialog-label lhe-label-imp"><?php 
echo GetMessageJS('BLOG_IMAGE');
?>
:</td>' +
				'<td class="lhe-dialog-param">' +
				'<'+'form id="' + pObj.pLEditor.id + 'img_upload_form" action="<?php 
echo CUtil::JSEscape(POST_FORM_ACTION_URI);
?>
" method="post" enctype="multipart/form-data" style="margin: 0!important; padding: 0!important;">' +
				'<?php 
echo freetrix_sessid_post();
?>
' +
				'<input type="file" size="30" name="BLOG_UPLOAD_FILE" id="bx_lhed_blog_img_input" />' +
				'<input type="hidden" value="Y" name="blog_upload_image"/>' +
				'<input type="hidden" name="post" value="Y">' +
				'</form>'+
				'</td>' +
				'</tr><tr id="' + pObj.pLEditor.id + 'lhed_blog_notice">' +
				'<td colSpan="2" style="padding: 0 0 20px 25px !important; font-size: 11px!important;"><?php 
echo GetMessageJS('BPC_IMAGE_SIZE_NOTICE', array('#SIZE#' => DoubleVal(COption::GetOptionString("blog", "image_max_size", 1000000) / 1000000)));
?>
</td>' +
			'</tr></table>';

			return {
				title: "<?php 
echo GetMessageJS('BLOG_P_IMAGE_UPLOAD');
?>
",
				innerHTML : str,
				width: 500,
				OnLoad: function()
				{
					pObj.pForm = false;
					pObj.pInput = false;

					pObj.pInput = BX('bx_lhed_blog_img_input');
					pObj.pForm = BX(pObj.pLEditor.id + 'img_upload_form');
					pObj.pLEditor.focus(pObj.pInput);

					window.obLHEDialog.adjustSizeEx();
				},
				OnSave: function()
				{
					if (pObj.pInput && pObj.pForm && pObj.pInput.value != "")
					{
						BX.showWait('bx_lhed_blog_img_input');
						BX('lhed_blog_image_error').style.display = 'none';
						BX('lhed_blog_image_error').innerHTML = '';
						BX.ajax.submit(pObj.pForm, function(){
							BX.closeWait();
							if (window.bxBlogImageId)
							{
								window.InsertBlogImage(window.bxBlogImageId, window.bxBlogImageIdWidth);
								window.obLHEDialog.Close();
								window.bxBlogImageId = false;
								window.bxBlogImageIdWidth = false;
							}
							else if(window.bxBlogImageError)
							{
								BX('lhed_blog_image_error').innerHTML = window.bxBlogImageError;
								BX('lhed_blog_image_error').style.display = 'block';
								window.obLHEDialog.adjustSizeEx();
							}
						});

						return false;
					}
				}
			};
		};

		window.InsertBlogImage = function(imageId, width)
		{
			pLEditor = window.oBlogComLHE;
			var strSize = '';

			if (!pLEditor.arBlogImages[imageId])
			{
				var imgId = window.arImagesId[imageId-1];

				var src  = window.arImages[imageId-1];
				imageId = imgId;

				if(width > 0)
				{
					if(pLEditor.arConfig.width && pLEditor.arConfig.width.indexOf('%') <= 0)
						widthC = parseInt(pLEditor.arConfig.width)*0.8;
					else
						widthC = 500;
					if(width > widthC)
						strSize = ' width="80%"';
				}

				pLEditor.arBlogImages[imageId] = {
					src : src,
					pTitle: ''
				};
			}

			if (pLEditor.sEditorMode == 'code' && pLEditor.bBBCode) // BB Codes
				pLEditor.WrapWith("", "", "[IMG ID=" + imageId + "]");
			else if(pLEditor.sEditorMode == 'html') // WYSIWYG
			{
				pLEditor.InsertHTML('<img id="' + pLEditor.SetBxTag(false, {tag: "blogImage", params: {value : imageId}}) + '" src="' + pLEditor.arBlogImages[imageId].src + '" title="' + (pLEditor.arBlogImages[imageId].pTitle.value || "") + '"' + strSize + '>');
				setTimeout('pLEditor.AutoResize();', 500);
			}
		}


		// Rename image button and change Icon
		LHEButtons['Image'].id = 'ImageLink';
		LHEButtons['Image'].src = '/freetrix/components/freetrix/blog/templates/.default/images/bbcode/font_image_upload.gif';
		LHEButtons['Image'].name = '<?php 
echo GetMessageJS("BLOG_P_IMAGE_LINK");
?>
';

		LHEButtons['BlogInputVideo'] = {
			id : 'BlogInputVideo',
			src : '/freetrix/components/freetrix/blog/templates/.default/images/bbcode/font_video.gif',
			name : '<?php 
echo GetMessageJS("FPF_VIDEO");
?>
',
			title : '<?php 
echo GetMessageJS("FPF_VIDEO");
?>
',
			handler: function(pBut)
			{
				pBut.pLEditor.OpenDialog({id : 'BlogVideo', obj: false});
			},
			parser: {
				name: 'blogvideo',
				obj: {
					Parse: function(sName, sContent, pLEditor)
					{
						sContent = sContent.replace(/\[VIDEO\s*?width=(\d+)\s*?height=(\d+)\s*\]((?:\s|\S)*?)\[\/VIDEO\]/ig, function(str, w, h, src)
						{
							var
								w = parseInt(w) || 400,
								h = parseInt(h) || 300,
								src = BX.util.trim(src);

							return '<img id="' + pLEditor.SetBxTag(false, {tag: "blogvideo", params: {value : src}}) + '" src="/freetrix/images/1.gif" class="bxed-video" width=' + w + ' height=' + h + ' title="' + BX.message.Video + ": " + src + '" />';
						});
						return sContent;
					},
					UnParse: function(bxTag, pNode, pLEditor)
					{
						if (bxTag.tag == 'blogvideo')
						{
							return "[VIDEO WIDTH=" + pNode.arAttributes["width"] + " HEIGHT=" + pNode.arAttributes["height"] + "]" + bxTag.params.value + "[/VIDEO]";
						}
						return "";
					}
				}
			}
		};

		window.LHEDailogs['BlogVideo'] = function(pObj)
		{
			var str = '<table width="100%"><tr>' +
				'<td class="lhe-dialog-label lhe-label-imp"><label for="' + pObj.pLEditor.id + 'lhed_blog_video_path"><b><?php 
echo GetMessageJS('BPC_VIDEO_P');
?>
:</b></label></td>' +
				'<td class="lhe-dialog-param">' +
				'<input id="' + pObj.pLEditor.id + 'lhed_blog_video_path" value="" size="30"/>' +
				'</td>' +
			'</tr><tr>' +
				'<td></td>' +
				'<td style="padding: 0!important; font-size: 11px!important;"><?php 
echo GetMessageJS('BPC_VIDEO_PATH_EXAMPLE');
?>
</td>' +
			'</tr><tr>' +
				'<td class="lhe-dialog-label lhe-label-imp"><label for="' + pObj.pLEditor.id + 'lhed_blog_video_width">' + BX.message.ImageSizing + ':</label></td>' +
				'<td class="lhe-dialog-param">' +
					'<input id="' + pObj.pLEditor.id + 'lhed_blog_video_width" value="" size="4"/>' +
					' x ' +
					'<input id="' + pObj.pLEditor.id + 'lhed_blog_video_height" value="" size="4" />' +
				'</td>' +
			'</tr></table>';

			return {
				title: "<?php 
echo GetMessageJS('FPF_VIDEO');
?>
",
				innerHTML : str,
				width: 480,
				OnLoad: function()
				{
					pObj.pPath = BX(pObj.pLEditor.id + "lhed_blog_video_path");
					pObj.pWidth = BX(pObj.pLEditor.id + "lhed_blog_video_width");
					pObj.pHeight = BX(pObj.pLEditor.id + "lhed_blog_video_height");

					pObj.pLEditor.focus(pObj.pPath);
				},
				OnSave: function()
				{
					pLEditor = window.oBlogComLHE;

					var
						src = BX.util.trim(pObj.pPath.value),
						w = parseInt(pObj.pWidth.value) || 400,
						h = parseInt(pObj.pHeight.value) || 300;

					if (src == "")
						return;

					if (pLEditor.sEditorMode == 'code' && pLEditor.bBBCode) // BB Codes
					{
						pLEditor.WrapWith("", "", "[VIDEO WIDTH=" + w + " HEIGHT=" + h + "]" + src + "[/VIDEO]");
					}
					else if(pLEditor.sEditorMode == 'html') // WYSIWYG
					{
						pLEditor.InsertHTML('<img id="' + pLEditor.SetBxTag(false, {tag: "blogvideo", params: {value : src}}) + '" src="/freetrix/images/1.gif" class="bxed-video" width=' + w + ' height=' + h + ' title="' + BX.message.Video + ": " + src + '" />');
						setTimeout('pLEditor.AutoResize();', 500);
					}
				}
			};
		};


		LHEButtons['CreateLinkNC'] = {
			id : 'CreateLinkNC',
			src : '/freetrix/components/freetrix/blog/templates/.default/images/bbcode/font_link.gif',
			name : '<?php 
echo GetMessageJS("BPC_LINK");
?>
',
			title : '<?php 
echo GetMessageJS("BPC_LINK");
?>
',
			handler: function(pBut)
			{
				pBut.pLEditor.OpenDialog({id : 'CreateLinkNCDialog', obj: false});
			}
		};

		window.LHEDailogs['CreateLinkNCDialog'] = function(pObj)
		{
			var str = "";
			if(document.getElementById('nocommentreason'))
				str = document.getElementById('nocommentreason').innerHTML;

			return {
				title: "<?php 
echo GetMessageJS('BPC_LINK');
?>
",
				innerHTML : str,
				width: 480,
				OnLoad: function() {},
				OnSave: function() {}
			};
		};

		// Submit form by ctrl+enter
		window.blogCommentCtrlEnterHandler = function(e)
		{
			submitComment();
		};
		</script>
		<?
	}
Exemplo n.º 4
0
?>
&nbsp;&nbsp;&gt;&gt;</a></b>
</p>
<form name="rform_<?php 
echo $arResult["filter_id"];
?>
" method="post" action="<?php 
echo POST_FORM_ACTION_URI;
?>
#nav_start">
	<input type="hidden" name="WEB_FORM_ID" value="<?php 
echo $arParams["WEB_FORM_ID"];
?>
" />
	<?php 
echo freetrix_sessid_post();
?>

	<?
	if ($arParams["can_delete_some"]) 
	{
	?>
	<p><input type="submit" name="delete" value="<?php 
echo GetMessage("FORM_DELETE_SELECTED");
?>
" onClick="return OnDelete_<?php 
echo $arResult["filter_id"];
?>
()"  /></p>
	<? 
	} // endif($can_delete_some);
Exemplo n.º 5
0
	/**
	 * Public method used to put form header (<form> tag and hidden fields)
	 * Added to form template automatically
	 *
	 * @return string
	 */
	function ShowFormHeader()
	{
		global $APPLICATION;

		$res = sprintf(
			"<form name=\"%s\" action=\"%s\" method=\"%s\" enctype=\"multipart/form-data\">",
			$this->arForm["SID"],
			//$APPLICATION->GetCurPage(),
			POST_FORM_ACTION_URI,
			"POST"
		);

		$res .= freetrix_sessid_post();

		$arHiddenInputs["WEB_FORM_ID"] = $this->WEB_FORM_ID;
		if (!empty($this->RESULT_ID)) $arHiddenInputs["RESULT_ID"] = $this->RESULT_ID;
		$arHiddenInputs["lang"] = LANGUAGE_ID;

		foreach ($arHiddenInputs as $name => $value)
		{
			$res .= sprintf(
			"<input type=\"hidden\" name=\"%s\" value=\"%s\" />",
			$name, $value
			);
		}

		return $res;
	}
Exemplo n.º 6
0
	public function GetFormHtml($arParams)
	{
		$login = '';
		$matches = array();
		if(preg_match('#id.rambler.ru/users/([^/$]+)#i', $arParams["~LAST_LOGIN"], $matches))
			$login = $matches[1];
		return '
<span class="bx-ss-icon openid"></span>
<input type="text" name="OPENID_IDENTITY_RAMBLER" value="'.htmlspecialcharsbx($login).'" size="20" />
<span>@rambler.ru</span>
'.freetrix_sessid_post().'
<input type="hidden" name="auth_service_error" value="" />
<input type="submit" class="button" name="" value="'.GetMessage("socserv_openid_login").'" />
';
	}
Exemplo n.º 7
0
$arResult["arForumUser"]["AVATAR_INPUT"] = CFile::InputFile("forum_AVATAR", 20, $arResult["arForumUser"]["AVATAR"], false, 0, "IMAGE");
if (strlen($arResult["arForumUser"]["AVATAR"])>0)
	$arResult["arForumUser"]["AVATAR_HTML"] = CFile::ShowImage($arResult["arForumUser"]["AVATAR"], 150, 150, "border=0", "", true);

$arResult["arBlogUser"]["AVATAR_INPUT"] = CFile::InputFile("blog_AVATAR", 20, $arResult["arBlogUser"]["AVATAR"], false, 0, "IMAGE");
if (strlen($arResult["arBlogUser"]["AVATAR"])>0)
	$arResult["arBlogUser"]["AVATAR_HTML"] = CFile::ShowImage($arResult["arBlogUser"]["AVATAR"], 150, 150, "border=0", "", true);

$arResult["IS_ADMIN"] = $USER->IsAdmin();

$arCountries = GetCountryArray();
$arResult["COUNTRY_SELECT"] = SelectBoxFromArray("PERSONAL_COUNTRY", $arCountries, $arResult["arUser"]["PERSONAL_COUNTRY"], GetMessage("USER_DONT_KNOW"));
$arResult["COUNTRY_SELECT_WORK"] = SelectBoxFromArray("WORK_COUNTRY", $arCountries, $arResult["arUser"]["WORK_COUNTRY"], GetMessage("USER_DONT_KNOW"));

$arResult["strProfileError"] = $strError;
$arResult["FX_SESSION_CHECK"] = freetrix_sessid_post();

$arResult["DATE_FORMAT"] = CLang::GetDateFormat("SHORT");

$arResult["COOKIE_PREFIX"] = COption::GetOptionString("main", "cookie_name", "FREETRIX_SM");
if (strlen($arResult["COOKIE_PREFIX"]) <= 0) 
	$arResult["COOKIE_PREFIX"] = "BX";

// ********************* User properties ***************************************************
$arResult["USER_PROPERTIES"] = array("SHOW" => "N");
if (!empty($arParams["USER_PROPERTY"]))
{
	$arUserFields = $USER_FIELD_MANAGER->GetUserFields("USER", $arResult["ID"], LANGUAGE_ID);
	if (count($arParams["USER_PROPERTY"]) > 0)
	{
		foreach ($arUserFields as $FIELD_NAME => $arUserField)
Exemplo n.º 8
0
function show_tip()
{
	?>
	<form name="check" action="">
	<input type="submit" value="<?=GetMessage("RDB_CHECK_TABLES")?>" class="adm-btn-save">
	<input type="hidden" value="Y" name="check_tables">
	<?
	if(!isset($_REQUEST["login"]) && !isset($_REQUEST["password"]))
		echo freetrix_sessid_post();
	if(isset($_REQUEST["login"]))
		echo '<input type="hidden" value="'.htmlspecialcharsbx($_REQUEST["login"]).'" name="login">';
	if(isset($_REQUEST["password"]))
		echo '<input type="hidden" value="'.htmlspecialcharsbx($_REQUEST["password"]).'" name="password">';
	if(isset($_REQUEST["lang"]))
		echo '<input type="hidden" value="'.htmlspecialcharsbx($_REQUEST["lang"]).'" name="lang">';
	echo '</form>';
}
Exemplo n.º 9
0
		}

		if ($arResult["arForm"]["USE_CAPTCHA"] == "Y") $arResult["CAPTCHACode"] = $APPLICATION->CaptchaGetCode();

		// define variables to assign
		$arResult = array_merge(
			$arResult,
			array(
				"isFormNote"			=> strlen($arResult["FORM_NOTE"]) ? "Y" : "N", // flag "is there a form note"
				"isAccessFormParams"	=> $arResult["F_RIGHT"] >= 25 ? "Y" : "N", // flag "does current user have access to form params"
				"isStatisticIncluded"	=> CModule::IncludeModule('statistic') ? "Y" : "N", // flag "is statistic module included"

				"FORM_HEADER" => sprintf( // form header (<form> tag and hidden inputs)
					"<form name=\"%s\" action=\"%s\" method=\"%s\" enctype=\"multipart/form-data\">",
					$arResult["arForm"]["SID"], POST_FORM_ACTION_URI, "POST"
				).$res .= freetrix_sessid_post().'<input type="hidden" name="WEB_FORM_ID" value="'.$arParams['WEB_FORM_ID'].'" />',

				"FORM_TITLE"			=> trim(htmlspecialcharsbx($arResult["arForm"]["NAME"])), // form title

				"FORM_DESCRIPTION" => // form description
					$arResult["arForm"]["DESCRIPTION_TYPE"] == "html" ?
					trim($arResult["arForm"]["DESCRIPTION"]) :
					nl2br(htmlspecialcharsbx(trim($arResult["arForm"]["DESCRIPTION"]))),

				"isFormTitle"			=> strlen($arResult["arForm"]["NAME"]) > 0 ? "Y" : "N", // flag "does form have title"
				"isFormDescription"		=> strlen($arResult["arForm"]["DESCRIPTION"]) > 0 ? "Y" : "N", // flag "does form have description"
				"isFormImage"			=> intval($arResult["arForm"]["IMAGE_ID"]) > 0 ? "Y" : "N", // flag "does form have image"
				"isUseCaptcha"			=> $arResult["arForm"]["USE_CAPTCHA"] == "Y", // flag "does form use captcha"
				"DATE_FORMAT"			=> CLang::GetDateFormat("SHORT"), // current site date format
				"REQUIRED_SIGN"			=> CForm::ShowRequired("Y"), // "required" sign
				"FORM_FOOTER"			=> "</form>", // form footer (close <form> tag)
Exemplo n.º 10
0
	function Display()
	{
		global $APPLICATION;

		foreach(GetModuleEvents("main", "OnAdminSubListDisplay", true) as $arEvent)
		{
			ExecuteModuleEventEx($arEvent, array(&$this));
		}

		echo '<div id="form_'.$this->table_id.'" class="adm-sublist">';

		if($this->bEditMode && !$this->bCanBeEdited)
			$this->bEditMode = false;

		$boolCloseMessage = true;
		$errmsg = '';
		foreach ($this->arFilterErrors as $err)
			$errmsg .= ($errmsg<>''? '<br>': '').$err;
		foreach ($this->arUpdateErrors as $err)
			$errmsg .= ($errmsg<>''? '<br>': '').$err[0];
		foreach ($this->arGroupErrors as $err)
			$errmsg .= ($errmsg<>''? '<br>': '').$err[0];
		if($errmsg<>'')
		{
			CAdminSubMessage::ShowMessage(array("MESSAGE"=>GetMessage("admin_lib_error"), "DETAILS"=>$errmsg, "TYPE"=>"ERROR"));
			$boolCloseMessage = false;
		}

		$successMessage = '';
		for ($i = 0, $cnt = count($this->arActionSuccess); $i < $cnt; $i++)
			$successMessage .= ($successMessage != '' ? '<br>' : '').$this->arActionSuccess[$i];
		if ($successMessage != '')
		{
			CAdminSubMessage::ShowMessage(array("MESSAGE" => GetMessage("admin_lib_success"), "DETAILS" => $successMessage, "TYPE" => "OK"));
			$boolCloseMessage = false;
		}

		if ($this->bPublicMode && $boolCloseMessage)
		{
			echo '<script type="text/javascript">top.BX.WindowManager.Get().hideNotify();</script>';
		}

		echo $this->sPrologContent;

		if($this->sContent===false)
		{
			echo '<div class="adm-list-table-wrap'.($this->context ? '' : ' adm-list-table-without-header').(count($this->arActions)<=0 && !$this->bCanBeEdited ? ' adm-list-table-without-footer' : '').'">';
		}

		if ($this->context)
			$this->context->Show();

		//!!! insert filter's hiddens
		echo freetrix_sessid_post();

		if($this->sContent!==false)
		{
			echo $this->sContent;
			return;
		}

		$bShowSelectAll = (count($this->arActions)>0 || $this->bCanBeEdited);

		$this->bShowActions = false;
		foreach($this->aRows as $row)
		{
			if(!empty($row->aActions))
			{
				$this->bShowActions = true;
				break;
			}
		}

		$colSpan = 0;

echo '<table class="adm-list-table" id="'.$this->table_id.'">
	<thead>
		<tr class="adm-list-table-header">';

		if($bShowSelectAll)
		{
			echo '<td class="adm-list-table-cell adm-list-table-checkbox" onclick="this.firstChild.firstChild.click(); return BX.PreventDefault(event);"><div class="adm-list-table-cell-inner"><input class="adm-checkbox adm-designed-checkbox" type="checkbox" id="'.$this->table_id.'_check_all" '.($this->bEditMode ? 'disabled' : 'onclick="'.$this->table_id.'.SelectAllRows(this); return BX.eventCancelBubble(event);"').' title="'.GetMessage("admin_lib_list_check_all").'" /><label for="'.$this->table_id.'_check_all" class="adm-designed-checkbox-label"></label></div></td>';
			$colSpan++;
		}
		if($this->bShowActions)
		{
			echo '<td class="adm-list-table-cell adm-list-table-popup-block" title="'.GetMessage("admin_lib_list_act").'"><div class="adm-list-table-cell-inner"></div></td>';
			$colSpan++;
		}
		foreach($this->aHeaders as $column_id=>$header)
		{
			if(!in_array($column_id, $this->arVisibleColumns))
				continue;

			$bSort = $this->sort && !empty($header["sort"]);

			if ($bSort)
				//$attrs = $this->sort->Show($header["content"], $header["sort"], $header["title"], "adm-list-table-cell");
				$attrs = $this->sort->Show($header["content"], $header["sort"], $header["title"], "adm-list-table-cell");
			else
				$attrs = 'class="adm-list-table-cell"';


			echo '<td '.$attrs.'>
				<div class="adm-list-table-cell-inner">'.$header["content"].'</div>'.($bSort ? '<span class="adm-sub-sort"></span>' : '').'
			</td>';

			$colSpan++;
		}
		echo '</tr></thead><tbody>';

		if(!empty($this->aRows))
		{
			foreach($this->aRows as $row)
			{
				$row->Display();
			}
		}
		elseif(!empty($this->aHeaders))
		{
			echo '<tr><td colspan="'.$colSpan.'" class="adm-list-table-cell adm-list-table-empty">'.GetMessage("admin_lib_no_data").'</td></tr>';
		}

		echo '</tbody></table>';

		$this->ShowActionTable();

		echo $this->sEpilogContent;
		echo '</div>';
		echo $this->sNavText;
	}