|
@@ -160,15 +160,15 @@ class BxBaseFunctions extends BxDolFactory implements iBxDolSingleton
|
|
|
'content' => $sContent
|
|
'content' => $sContent
|
|
|
));
|
|
));
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
function getIcon($sCode, $aAttrs = array())
|
|
function getIcon($sCode, $aAttrs = array())
|
|
|
{
|
|
{
|
|
|
$sIconFont = false;
|
|
$sIconFont = false;
|
|
|
$sIconA = false;
|
|
$sIconA = false;
|
|
|
$sIconUrl = false;
|
|
$sIconUrl = false;
|
|
|
- $sIconHtml = false;
|
|
|
|
|
|
|
+ $sIconHtml = false;
|
|
|
$sIconFontWithHtml = false;
|
|
$sIconFontWithHtml = false;
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
$sClass = '';
|
|
$sClass = '';
|
|
|
if(!empty($aAttrs['class'])) {
|
|
if(!empty($aAttrs['class'])) {
|
|
|
$sClass = ' ' . $aAttrs['class'] .' ';
|
|
$sClass = ' ' . $aAttrs['class'] .' ';
|
|
@@ -178,30 +178,30 @@ class BxBaseFunctions extends BxDolFactory implements iBxDolSingleton
|
|
|
$sAttrs = '';
|
|
$sAttrs = '';
|
|
|
foreach($aAttrs as $sKey => $sValue)
|
|
foreach($aAttrs as $sKey => $sValue)
|
|
|
$sAttrs .= ' ' . $sKey . '="' . bx_html_attribute($sValue) . '"';
|
|
$sAttrs .= ' ' . $sKey . '="' . bx_html_attribute($sValue) . '"';
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
if (!empty($sCode)) {
|
|
if (!empty($sCode)) {
|
|
|
- if ((int)$sCode > 0 ) {
|
|
|
|
|
|
|
+ if ((int)$sCode > 0) {
|
|
|
$oStorage = BxDolStorage::getObjectInstance(BX_DOL_STORAGE_OBJ_IMAGES);
|
|
$oStorage = BxDolStorage::getObjectInstance(BX_DOL_STORAGE_OBJ_IMAGES);
|
|
|
$sIconUrl = $oStorage ? $oStorage->getFileUrlById((int)$sCode) : false;
|
|
$sIconUrl = $oStorage ? $oStorage->getFileUrlById((int)$sCode) : false;
|
|
|
- } else {
|
|
|
|
|
- //svg
|
|
|
|
|
- if (strpos($sCode, '<svg') !== false || strpos($sCode, '<svg') !== false){
|
|
|
|
|
- if (strpos($sCode, '<svg') !== false)
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ //--- Process Inline SVG
|
|
|
|
|
+ if (strpos($sCode, '<svg') !== false || strpos($sCode, '<svg') !== false) {
|
|
|
|
|
+ if(strpos($sCode, '<svg') !== false)
|
|
|
$sIconHtml = htmlspecialchars_decode($sCode);
|
|
$sIconHtml = htmlspecialchars_decode($sCode);
|
|
|
else
|
|
else
|
|
|
$sIconHtml = $sCode;
|
|
$sIconHtml = $sCode;
|
|
|
- $sClass .= 'sys-icon sys-icon-svg ';
|
|
|
|
|
- if ($sClass != '' && strpos($sIconHtml, 'class="') !== false)
|
|
|
|
|
- $sIconHtml = str_replace('class="', 'class="' . $sClass, $sIconHtml);
|
|
|
|
|
- else
|
|
|
|
|
- $sIconHtml = str_replace('<svg', '<svg class="' . $sClass . '" ', $sIconHtml);
|
|
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
|
|
+ $sClass .= 'sys-icon sys-icon-svg ';
|
|
|
|
|
+ if ($sClass != '' && strpos($sIconHtml, 'class="') !== false)
|
|
|
|
|
+ $sIconHtml = str_replace('class="', 'class="' . $sClass, $sIconHtml);
|
|
|
|
|
+ else
|
|
|
|
|
+ $sIconHtml = str_replace('<svg', '<svg class="' . $sClass . '" ', $sIconHtml);
|
|
|
|
|
+
|
|
|
if ($sAttrs != '')
|
|
if ($sAttrs != '')
|
|
|
- $sIconHtml = str_replace('<svg', '<svg ' . $sAttrs . ' ', $sIconHtml);
|
|
|
|
|
- }
|
|
|
|
|
- else{
|
|
|
|
|
- //emoji
|
|
|
|
|
-
|
|
|
|
|
|
|
+ $sIconHtml = str_replace('<svg', '<svg ' . $sAttrs . ' ', $sIconHtml);
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
$sEmojIsRegex =
|
|
$sEmojIsRegex =
|
|
|
'/[\x{0080}-\x{02AF}'
|
|
'/[\x{0080}-\x{02AF}'
|
|
|
.'\x{0300}-\x{03FF}'
|
|
.'\x{0300}-\x{03FF}'
|
|
@@ -229,33 +229,45 @@ class BxBaseFunctions extends BxDolFactory implements iBxDolSingleton
|
|
|
.'\x{1F680}-\x{1F6FF}'
|
|
.'\x{1F680}-\x{1F6FF}'
|
|
|
.'\x{1F910}-\x{1F96B}'
|
|
.'\x{1F910}-\x{1F96B}'
|
|
|
.'\x{1F980}-\x{1F9E0}]/u';
|
|
.'\x{1F980}-\x{1F9E0}]/u';
|
|
|
- if(preg_match($sEmojIsRegex, $sCode, $aTmp)){
|
|
|
|
|
- $sIconHtml = $this->_oTemplate->parseHtmlByName('icon_emoji.html', array('icon' => $sCode, 'class' => $sClass, 'attrs' => $sAttrs));
|
|
|
|
|
- }
|
|
|
|
|
- else{
|
|
|
|
|
- if (false === strpos($sCode, '.')) {
|
|
|
|
|
- if (0 === strncmp($sCode, 'a:', 2)){
|
|
|
|
|
- $sIconA = substr($sCode, 2); // animated icon
|
|
|
|
|
- }
|
|
|
|
|
- else{
|
|
|
|
|
- $sIconFont = $sCode; // font icons
|
|
|
|
|
|
|
+
|
|
|
|
|
+ //--- Process Emoji
|
|
|
|
|
+ if(preg_match($sEmojIsRegex, $sCode, $aTmp))
|
|
|
|
|
+ $sIconHtml = $this->_oTemplate->parseHtmlByName('icon_emoji.html', array(
|
|
|
|
|
+ 'icon' => $sCode,
|
|
|
|
|
+ 'class' => $sClass,
|
|
|
|
|
+ 'attrs' => $sAttrs
|
|
|
|
|
+ ));
|
|
|
|
|
+ else {
|
|
|
|
|
+ if (strpos($sCode, '.') === false) {
|
|
|
|
|
+ //--- Process animated icon
|
|
|
|
|
+ if (strncmp($sCode, 'a:', 2) === 0)
|
|
|
|
|
+ $sIconA = substr($sCode, 2);
|
|
|
|
|
+ //--- Process font icons
|
|
|
|
|
+ else {
|
|
|
|
|
+ $sIconFont = $sCode;
|
|
|
$sIconFontWithHtml = $this->getFontIconAsHtml($sIconFont, $sClass, $sAttrs);
|
|
$sIconFontWithHtml = $this->getFontIconAsHtml($sIconFont, $sClass, $sAttrs);
|
|
|
}
|
|
}
|
|
|
- } else {
|
|
|
|
|
- $sIconUrl = $this->_oTemplate->getIconUrl($sCode);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ }
|
|
|
|
|
+ else {
|
|
|
|
|
+ //--- Process common image
|
|
|
|
|
+ if((!preg_match('/^https?:\/\//', $sCode)))
|
|
|
|
|
+ $sIconUrl = $this->_oTemplate->getIconUrl($sCode);
|
|
|
|
|
+ else
|
|
|
|
|
+ $sIconUrl = $sCode;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
return array ($sIconFont, $sIconUrl, $sIconA, $sIconHtml, $sIconFontWithHtml);
|
|
return array ($sIconFont, $sIconUrl, $sIconA, $sIconHtml, $sIconFontWithHtml);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
function getFontIconAsHtml($sIconFont, $sClass = '', $sAttrs = '')
|
|
function getFontIconAsHtml($sIconFont, $sClass = '', $sAttrs = '')
|
|
|
{
|
|
{
|
|
|
return '<i class="sys-icon ' . $sIconFont .' ' . $sClass . '"' . $sAttrs . '></i>';
|
|
return '<i class="sys-icon ' . $sIconFont .' ' . $sClass . '"' . $sAttrs . '></i>';
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
function getIconAsHtml($sCode, $aAttrs = array())
|
|
function getIconAsHtml($sCode, $aAttrs = array())
|
|
|
{
|
|
{
|
|
|
$aIcons = $this->getIcon($sCode, $aAttrs);
|
|
$aIcons = $this->getIcon($sCode, $aAttrs);
|