Your IP : 3.21.234.229


Current Path : /var/www/admin_ftp_12/data/www/httpdocs/bitrix/modules/mobileapp/classes/general/
Upload File :
Current File : /var/www/admin_ftp_12/data/www/httpdocs/bitrix/modules/mobileapp/classes/general/interface.php

<?
class CAdminMobileMenu
{
	const DEFAULT_ITEM_SORT = 100;
	private static $arItems = array();

	public static function addItem($arItem)
	{
		if (!isset($arItem["sort"]))
			$arItem["sort"] = self::DEFAULT_ITEM_SORT;

		self::$arItems[] = $arItem;

		return count(self::$arItems);
	}

	public static function buildMenu($arParams)
	{
		if (!empty(self::$arItems))
			return self::$arItems;

		if (isset($arParams["MENU_FILE"]))
		{
			$arMobileMenuItems = array();

			require($_SERVER["DOCUMENT_ROOT"] . $arParams["MENU_FILE"]);

			if (!empty($arMobileMenuItems))
				foreach ($arMobileMenuItems as $arItem)
					self::addItem($arItem);
		}

		if (isset($arParams["EVENT_NAME"]))
		{
			foreach (GetModuleEvents("mobileapp", $arParams["EVENT_NAME"], true) as $arHandler)
				ExecuteModuleEventEx($arHandler);
		}

		CAdminMobilePush::OnAdminMobileGetPushSettings();

		sortByColumn(self::$arItems, "sort");

		return self::$arItems;
	}

	public static function getDefaultUrl($arParams)
	{
		if (!self::buildMenu($arParams))
			return false;

		$firstUrl = '';

		foreach (self::$arItems as $arSection)
		{
			if (!isset($arSection["items"]) || !is_array($arSection["items"]))
				continue;

			foreach ($arSection["items"] as $arItem)
			{
				if (isset($arItem["default"]) && $arItem["default"] == true && isset($arItem["data-url"]))
					return $arItem["data-url"];

				if (isset($arItem["data-url"]) && empty($firstUrl))
					$firstUrl = $arItem["data-url"];
			}
		}

		if ($firstUrl == '' && isset($arParams["MOBILE_APP_INDEX_PAGE"]))
			$firstUrl = $arParams["MOBILE_APP_INDEX_PAGE"];

		return $firstUrl;
	}
}

class CAdminMobileDetailTmpl
{
	private static function getTitleHtml($title)
	{
		return '<div class="order_title">' . $title . '</div>';
	}

	private static function getUpperButtonsHtml($arButtons)
	{
		$retHtml = '<div class="order_nav"><ul>';

		foreach ($arButtons as $arButton)
		{
			$buttonHtml = '<li';

			if (isset($arButton["CURRENT"]) && $arButton["CURRENT"])
				$buttonHtml .= ' class="current"';

			$buttonHtml .= '><a href=';

			if (isset($arButton["HREF"]))
				$buttonHtml .= '"' . $arButton["HREF"] . '"';
			else
				$buttonHtml .= '"javascript:void(0);"';

			if (isset($arButton["ONCLICK"]))
				$buttonHtml .= ' onclick="' . $arButton["ONCLICK"] . '"';

			$buttonHtml .= '>' . $arButton["TITLE"] . '</a></li>';

			$retHtml .= $buttonHtml;
		}

		$retHtml .= '</ul><div class="clb"></div></div>';

		return $retHtml;
	}

	private static function getSectionHtml($arSection)
	{
		$retHtml = '<div class="order_infoblock';

		if (!isset($arSection["OPEN"]) || !$arSection["OPEN"])
			$retHtml .= ' close';

		if (isset($arSection["TOTAL"]) && $arSection["TOTAL"])
			$retHtml .= ' total';

		$retHtml .= '">
			<div class="order_infoblock_title" onclick="BX.toggleClass(this.parentNode,\'close\');">' .
			$arSection["TITLE"] . '<span></span></div>';

		if ($arSection["TYPE"] == "container")
		{
			$retHtml .= $arSection["HTML"];
		}
		else
		{
			$retHtml .= '
			<div class="order_infoblock_content">
				<table class="order_infoblock_content_table">';

			if(is_array($arSection["ROWS"]))
			{
				foreach ($arSection["ROWS"] as $row)
				{
					$retHtml .= '<tr';

					if (isset($row["HIGLIGHTED"]) && $row["HIGLIGHTED"] == true)
						$retHtml .= ' class="order_detail_container_itogi_table_td_green"';

					$retHtml .= '>
							<td class="order_infoblock_content_table_tdtitle">' . $row["TITLE"] . '</td>
							<td class="order_infoblock_content_table_tdvalue';

					$retHtml .= '">' . $row["VALUE"] . '</td></tr>';
				}
			}

			$retHtml .= '</table>';

			if (isset($arSection["BOTTOM"]) && isset($arSection["BOTTOM"]["VALUE"]))
			{
				$retHtml .= '<div class=';
				if (isset($arSection["BOTTOM"]["STYLE"]))
				{
					if ($arSection["BOTTOM"]["STYLE"] == 'green')
						$retHtml .= '"order_infoblock_order_green">';
					else
						$retHtml .= '"order_infoblock_order_canceled">';
				}

				$retHtml .= $arSection["BOTTOM"]["VALUE"] . '</div>';
			}

			$retHtml .= '</div>';
		}

		$retHtml .= '</div>';

		return $retHtml;
	}

	public static function getHtml($arAdminDetail)
	{
		$retHtml = '';

		if (isset($arAdminDetail["TITLE"]))
			$retHtml .= self::getTitleHtml($arAdminDetail["TITLE"]);

		if (isset($arAdminDetail["UPPER_BUTTONS"]))
			$retHtml .= self::getUpperButtonsHtml($arAdminDetail["UPPER_BUTTONS"]);

		if (isset($arAdminDetail["SECTIONS"]) && is_array($arAdminDetail["SECTIONS"]))
			foreach ($arAdminDetail["SECTIONS"] as $arSection)
				$retHtml .= self::getSectionHtml($arSection);

		return $retHtml;
	}
}

class CAdminMobileDetail
{
	private $arDetail;

	public function setTitle($strTitle)
	{

		$this->arDetail["TITLE"] = $strTitle;
	}

	public function addUpperButton($arButton)
	{
		$this->arDetail["UPPER_BUTTONS"][] = $arButton;
	}

	public function addSection($arSection)
	{
		$this->arDetail["SECTIONS"][] = $arSection;
	}

	public function getHtml()
	{
		return CAdminMobileDetailTmpl::getHtml($this->arDetail);
	}

	public function getItem()
	{
		return $this->arDetail;
	}
}

class CAdminMobileInterface
{
	public static function getCheckBoxesHtml($arCB, $strTitle = '', $arChecked = array(), $arParams = array())
	{
		if (!is_array($arCB) || empty($arCB))
			return false;

		$arCBParams["ITEMS"] = $arCB;

		if ($strTitle <> '')
			$arCBParams["TITLE"] = $strTitle;

		if (!empty($arChecked))
			$arCBParams["CHECKED"] = $arChecked;

		if (is_array($arParams))
			foreach ($arParams as $key => $param)
				$arCBParams[$key] = $param;

		ob_start();
		$GLOBALS["APPLICATION"]->IncludeComponent(
			'bitrix:mobileapp.interface.checkboxes',
			'.default',
			$arCBParams,
			false
		);

		$resultHtml = ob_get_contents();
		ob_end_clean();

		return $resultHtml;
	}
}

class CMobileLazyLoad
{
	public static function getBase64Stub()
	{
		return "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQIW2N88f7jfwAJWAPJBTw90AAAAABJRU5ErkJggg==";
	}
}

class CAdminMobileEdit
{
	private static function getCustomAttribs($arField)
	{
		$strResult = '';

		if(isset($arField["CUSTOM_ATTRS"]) && is_array($arField["CUSTOM_ATTRS"]))
		{
			$strResult .= ' ';
			foreach ($arField["CUSTOM_ATTRS"] as $attrName => $attrVal)
				$strResult .= ' '.$attrName.'="'.$attrVal.'"';
		}

		return $strResult;
	}

	private static function getCommonAttribs($arField)
	{
		$strResult = '';
		$arCommonAttrs = array("ID", "NAME", "HIDDEN");

		if(is_array($arField))
		{
			$strResult .= ' ';
			foreach ($arCommonAttrs as $attrName)
			{
				if(isset($arField[$attrName]))
				{
					$strResult .= ' '.mb_strtolower($attrName).'="'.$arField[$attrName].'"';
				}
			}
		}

		return $strResult;
	}

	public static function getFieldHtml($arField)
	{
		global $APPLICATION;
		$resultHtml = '';
		$someAttribs = self::getCommonAttribs($arField);
		$someAttribs .= self::getCustomAttribs($arField);



		switch ($arField["TYPE"])
		{
			case 'BLOCK':
				$resultHtml =
					'<div class="mapp_edit_infoblock"'.
					$someAttribs.
					'>'.
						'<div class="mapp_edit_infoblock_title">'.$arField["TITLE"].'</div>';

				if(is_array($arField["DATA"]))
					foreach ($arField["DATA"] as $fieldData)
						$resultHtml .= self::getFieldHtml($fieldData);

				$resultHtml .= '</div>';

				break;

			case 'TEXT_RO':
				$resultHtml =
					'<ul>
						<li>
							<div class="mapp_edit_li_container"'.
							$someAttribs.
							'>
								<label>'.$arField["VALUE"].'</label>
							</div>
						</li>
					</ul>';

				break;

			case 'HIDDEN':
				$resultHtml = '<input type="hidden" value="'.$arField["VALUE"].'"'.$someAttribs.'>';
				break;

			case 'CHECKBOXES':
				$arFieldParams = array(
					"NOWRAP" => "Y",
					"NAME" => $arField["NAME"],
					"ITEMS" => $arField["VALUES"]
					);

				if(isset($arField["CHECKED"]) && is_array($arField["CHECKED"]))
					$arFieldParams["CHECKED"] = $arField["CHECKED"];

				ob_start();
				$APPLICATION->IncludeComponent(
					'bitrix:mobileapp.interface.checkboxes',
					'.default',
					$arFieldParams,
					false);

				$resultHtml = ob_get_contents();
				ob_end_clean();

				break;

			case 'CHECKBOX':

				$arItemParams = array(
					"NAME" => $arField["NAME"],
					"TITLE" => $arField["TITLE"]
				);

				if(isset($arField["VALUE"]) && $arField["VALUE"] == true)
					$arItemParams["VALUE"] = $arField["VALUE"];

				if(isset($arField["CHECKED"]) && $arField["CHECKED"] == true)
					$arItemParams["CHECKED"] = $arField["CHECKED"];

				if(isset($arField["TITLE"]) && $arField["TITLE"] == true)
					$arItemParams["TITLE"] = $arField["TITLE"];

				$arFieldParams = array(
					"NOWRAP" => "Y",
					"ITEMS" => array($arItemParams)
					);

				ob_start();
				$APPLICATION->IncludeComponent(
					'bitrix:mobileapp.interface.checkboxes',
					'.default',
					$arFieldParams,
					false);

				$resultHtml = ob_get_contents();
				ob_end_clean();

				break;

			case 'RADIO':

				$arFieldsParams = array(
					"ITEMS" => $arField["VALUES"],
					"TITLE" => $arField["TITLE"],
					"RADIO_NAME" => $arField["NAME"],
					"NOWRAP" => "Y"
					);

				if(isset($arField["SELECTED"]))
					$arFieldsParams["SELECTED"] = $arField["SELECTED"];

				ob_start();

				$APPLICATION->IncludeComponent(
					'bitrix:mobileapp.interface.radiobuttons',
					'.default',
					$arFieldsParams,
					false);

				$resultHtml = ob_get_contents();
				ob_end_clean();

				break;

			case 'TEXT':
				if(!isset($arField["VALUES"]))
					$values = array($arField["VALUE"]);
				else
					$values = $arField["VALUES"];

					$resultHtml = '<ul>';

					foreach ($values as $value)
					{
						$resultHtml .= '
							<li>
								<div class="mapp_edit_input_container">
									<input '.$someAttribs.' type="text"';

						if($value == '' && isset($arField["TITLE"]))
						{
							$resultHtml .= ' onblur="if (this.value==\'\'){this.value=\''.$arField["TITLE"].'\'; BX.addClass(this, \'mapp_edit_input_empty\');}"'.
								' value="'.$arField["TITLE"].'"'.
								' onfocus="if (this.value==\''.$arField["TITLE"].'\') {this.value=\'\';  BX.removeClass(this, \'mapp_edit_input_empty\');}"'.
								' class = "mapp_edit_input_empty"';
						}
						elseif($value <> '')
						{
							$resultHtml .= ' value="'.$value.'"';
						}

						$resultHtml .='>
								</div>
							</li>';
					}

				$resultHtml .= '</ul>';
				break;

			case 'BUTTON':
				$resultHtml = '<input type="button" class="mapp_edit_button"'.$someAttribs;

				if(isset($arField["VALUE"]))
					$resultHtml .= ' value="'.$arField["VALUE"].'"';

				$resultHtml .= '>';
				break;

			case 'TEXTAREA':
				$resultHtml = '';

				if(!isset($arField["TITLE"]))
					$arField["TITLE"] = "";

				$resultHtml .= '<div class="mapp_edit_textarea_title">'.
									$arField["TITLE"].
								'</div>';

				$resultHtml .= '
				<div class="mapp_edit_textarea_container">
					<textarea'.
						' class="mapp_edit_textarea"'.$someAttribs;

						$resultHtml .= '>'.$arField["VALUE"].
					'</textarea>
				</div>';

				if(!isset($arField["HINT"]))
					$arField["HINT"] = "";

				$resultHtml .= '<span class="mapp_edit_textarea_hint">'.
									$arField["HINT"].
								'</span>';

				break;

			case '2_RADIO_BUTTONS':

				if(isset($arField["ID"]))
					$id = $arField["ID"];
				else
					$id = "2rb_".rand();

				$value = isset($arField['VALUE']) && $arField['VALUE'] == 'Y' ? 'Y' : 'N';

				$resultHtml .= '
						<div class="mapp_edit_li_container mapp_edit_tac">
							<div class="mapp_edit_title_tac">'.$arField["TITLE"].'</div>
							<div class="mapp_edit_button_yn">
								<a'.
									' id="'.$id.'_b1'.'"'.
									' href="javascript:void(0);"'.
									($value == 'Y' ? ' class="current"' : '').
									self::getCustomAttribs($arField["BUTT_Y"]).
								'>'.
									$arField["BUTT_Y"]["TITLE"].
								'</a>
								<a'.
									' id="'.$id.'_b2'.'"'.
									' href="javascript:void(0);"'
									.($value != 'Y' ? ' class="current"' : '').
								'>'
									.$arField["BUTT_N"]["TITLE"].
									self::getCustomAttribs($arField["BUTT_N"]).
								'</a>
								<input'.
									' type="hidden"'.
									' name="'.$arField["NAME"].'"'.
									' id="'.$id.'"'.
									' value ="'.$value.'"'.
									self::getCustomAttribs($arField).
								'>
								<div class="mapp_edit_clb"></div>
							</div>
						</div>
					<script type="text/javascript">
						new FastButton(BX("'.$id.'_b1'.'"), function(){ toggle'.$id.'(); '.$arField["BUTT_Y"]["ONCLICK"].'}, false);
						new FastButton(BX("'.$id.'_b2'.'"), function(){ toggle'.$id.'(); '.$arField["BUTT_N"]["ONCLICK"].'}, false);
						function toggle'.$id.'()
						{
							BX.toggleClass(BX("'.$id.'_b1'.'"),"current");
							BX.toggleClass(BX("'.$id.'_b2'.'"),"current");

							var input = BX("'.$id.'");

							if(input && input.value)
							{
								if(input.value == "Y")
									input.value = "N";
								else
									input.value = "Y";
							}
						}
					</script>
					';

				break;

			case 'CUSTOM':
						$resultHtml = $arField["HTML_DATA"];
				break;

		}

		return $resultHtml;
	}
}
?>