Current File : /pages/54/47/d0016649/home/htdocs/ob_maxi/wp-content/plugins/digimember/system/helper/html.php |
<?php
function ncore_renderButtonStyle( $button, $prefix='' )
{
$style = '';
$color = ncore_retrieve( $button, array( $prefix.'fg_color', $prefix.'fg' ) );
if ($color)
{
$style .= "color: $color;";
}
$color = ncore_retrieve( $button, array( $prefix.'bg_color', $prefix.'bg' ) );
if ($color)
{
$style .= "background-color: $color;";
}
$radius = ncore_retrieve( $button, $prefix.'radius', false );
if ($radius !== false)
{
$style .= "border-radius: ${radius}px;";
}
return $style;
}
function ncore_imgUrl( $img_path, $api=null )
{
$path = "/webinc/image/$img_path";
$url = empty($api)
? ncore_api()->pluginUrl( $path )
: $api->pluginUrl( $path );
return $url;
}
function ncore_icon( $icon, $tooltip = '', $api=null, $attr = array(), $color = '' )
{
// see https://api.jqueryui.com/theming/icons/
// $ui_icons = [
// 'view_page' => 'ui-icon-arrowreturnthick-1-e',
// ];
// $ui_icon = ncore_retrieve( $ui_icons, $icon );
// if ($ui_icon)
// {
// ncore_addCssClass( $attr, "ncore_ui_icon ui-icon $ui_icon" );
// $attr_text = ncore_renderAttributes( $attr );
// $html = "<span $attr_text title=\"$tooltip\"></span>";
// }
// else
// {
// $url = ncore_imgUrl( "icon/$icon.png", $api );
//
// $attr[ 'src' ] = $url;
//
// ncore_addCssClass( $attr, "ncore_icon digimember_$icon ncore_$icon" );
//
// $attr_text = ncore_renderAttributes( $attr );
//
// $html = "<img $attr_text title=\"$tooltip\" />";
// }
ncore_api()->load->helper('html_input');
$color = $color ? ' dm-color-'.$color : ' dm-color-'.$icon;
$html = '<span class="dm-icon icon-' . ncore_getIconClassFromMap($icon) . $color . '"></span>';
return $html;
}
function ncore_attribute( $tag, $value )
{
if (is_array($value))
{
$value = implode( ' ', $value );
}
$value = trim($value);
$find = array( '"' );
$repl = array( '"' );
$value = str_replace( $find, $repl, $value );
$tag = ncore_washText( $tag );
$have_value = (bool) $value || $value === '0';
return $have_value
? " $tag=\"$value\" "
: '';
}
function ncore_mergeAttributes( $attr1, $attr2 )
{
$seperators = array(
'class' => ' ',
);
if (!$attr1)
{
$attr1 = array();
}
if (!$attr2)
{
$attr2 = array();
}
$result = $attr1;
foreach ($attr2 as $key => $value)
{
if (isset($result[$key]))
{
$seperator = ncore_retrieve( $seperators, $key, ' ' );
$result[$key] .= $seperator . $value;
}
else
{
$result[$key] = $value;
}
}
return $result;
}
function ncore_addCssClass( &$attributes, $new_css_class, $key = 'class' )
{
$class = ncore_retrieve( $attributes, $key );
$class .= " $new_css_class";
$attributes[ $key ] = trim( $class );
}
function ncore_renderAttributes( $attributes )
{
$use_jquery_handler = ncore_retrieveAndUnset( $attributes, 'use_jquery_handler', false );
$onclick_js = ncore_retrieveAndUnset( $attributes, 'onclick' );
$onchange_js = ncore_retrieveAndUnset( $attributes, 'onchange' );
$raw_attr = ncore_retrieveAndUnset( $attributes, 'raw' );
$have_js = false;
if ($onclick_js)
{
$have_js = true;
$onclick_js .= ';';
}
$onclick_js .= 'return true;';
$confirm_keys = array( 'confirm2', 'confirm' );
foreach ($confirm_keys as $key)
{
$confirm = ncore_retrieveAndUnset( $attributes, $key );
unset( $attributes[ $confirm ] );
if ($confirm)
{
$have_js = true;
$confirm = str_replace( "|", "\\n\\n", $confirm );
$onclick_js = "if (confirm(\"$confirm\")) { $onclick_js }";
$use_jquery_handler = true;
}
}
if ($have_js)
{
$onclick_js .= '; return false;';
if ($use_jquery_handler)
{
$input_id = ncore_addId( $attributes, 'js_button' );
$js = "ncoreJQ( '#$input_id' ).click( function(){ $onclick_js; return false; } );";
ncore_addJsOnLoad( $js );
}
else
{
$attributes[ 'onload' ] = $onclick_js;
}
}
if ($onchange_js)
{
$input_id = ncore_addId( $attributes, 'js_change' );
$js = "ncoreJQ( '#$input_id' ).change( function(){ $onchange_js; return true; } );";
ncore_addJsOnLoad( $js );
}
$attr_tags = '';
$tooltip = ncore_retrieveAndUnset( $attributes, 'tooltip' );
if ($tooltip)
{
$tooltip_attr = ncore_tooltipAttr( $tooltip );
$attributes = ncore_mergeAttributes( $attributes, $tooltip_attr );
}
foreach ($attributes as $tag => $value)
{
$attr_tags .= ' ' . ncore_attribute( $tag, $value );
}
$attr_tags .= ' ' . $raw_attr;
return $attr_tags ;
}
function ncore_htmlLink( $url, $label, $attributes=array() )
{
$as_popup = ncore_retrieveAndUnset( $attributes, 'as_popup', false );
if ($as_popup && empty($attributes['target'])) {
$attributes['target'] = '_blank';
}
$attr_html = ncore_renderAttributes( $attributes );
$is_absolute_url = $url && $url[0] == '/';
$has_protocol = strpos( $url, '://' ) !== false;
if (!$is_absolute_url && !$has_protocol)
{
$url = 'http://'.$url;
}
return "<a href='$url' $attr_html>$label</a>";
}
function ncore_tooltip( $tooltip_text, $inner_html='', $attributes=array() )
{
if (!$tooltip_text)
{
return $inner_html;
}
ncore_addCssClass($attributes, 'dm-tooltip');
$tooltip_text = ncore_paragraphs( $tooltip_text, array( 'also_include_first_parapraphend' => true ) );
$attributes['data-title'] = $tooltip_text;
$html_attr = ncore_renderAttributes( $attributes );
$tag = ncore_retrieveAndUnset( $attributes, 'tag', 'span' );
return '<' . $tag . ' '.$html_attr.'></' . $tag . '>';
}
function ncore_AdminTabs( $metas )
{
if (!$metas)
{
return '';
}
ncore_api()->load->helper( 'array' );
$metas = array_values( $metas );
$have_selected = (bool) ncore_elementsWithKey( $metas, 'selected', true );
if (!$have_selected)
{
$metas[0]['selected'] = true;
}
$html = '<div class="dm-tabs">
<ul class="dm-tabs-header">';
foreach ($metas as $index => $meta)
{
$label = ncore_retrieve( $meta, 'label', 'TAB_LABEL_MISSING' );
$div_id = ncore_retrieve( $meta, 'div_id' );
$url = ncore_retrieve( $meta, 'url', '#' );
$selected = ncore_retrieve( $meta, 'selected', false );
$css = '';
if ($selected)
{
$css .= ' selected';
}
$for = $div_id ? $div_id : $url;
$html .= "<li class='dm-tabs-header-item$css' data-for='$for'>
$label
</li>";
}
$html .= '
</ul>
</div>';
return $html;
}
function ncore_isFirst( $what )
{
global $ncore_is_first;
$is_first = empty( $ncore_is_first[ $what ] );
$ncore_is_first[ $what ] = true;
return $is_first;
}
function ncore_resetFirst( $what )
{
global $ncore_is_first;
unset( $ncore_is_first[ $what ] );
}
function ncore_paragraphs( $text_or_lines, $settings=array())
{
if (!$text_or_lines)
{
return '';
}
$use_double_linebreaks = ncore_retrieve( $settings, 'use_double_linkbreaks', false );
$begin = ncore_retrieve( $settings, 'begin', '<p>' );
$end = ncore_retrieve( $settings, 'end', '</p>' );
$do_also_include_first_parapraph = ncore_retrieve( $settings, 'also_include_first_parapraphend', false );
if ($use_double_linebreaks)
{
$lines = is_array( $text_or_lines )
? $text_or_lines
: explode( "\n", $text_or_lines );
$had_line_break = true;
$current_index = 0;
$parts = array();
foreach ($lines as $index => $line)
{
$line = trim( $line );
$is_line_break = $line == '';
if ($is_line_break) {
if ($parts[$current_index] && !$had_line_break) {
$current_index++;
}
$had_line_break = true;
continue;
}
else
{
$had_line_break = false;
}
if (empty( $parts[ $current_index ] ))
{
$parts[ $current_index ] = $line;
}
else
{
$parts[ $current_index ] .= ' ' . $line;
}
}
$text_or_lines = implode( '|', $parts );
}
if (!empty($parts))
{
//ok
}
elseif (is_array($text_or_lines))
{
$parts = $text_or_lines;
}
else
{
$parts = explode( '|', $text_or_lines );
}
if ($do_also_include_first_parapraph) {
$text = '';
}
else
{
$text = $parts[0];
unset( $parts[0] );
}
if ($parts)
{
$text .= $begin . implode( "$end$begin", $parts ) . $end;
}
return $text;
}
function ncore_addId( &$attributes, $basename='html' )
{
// When html elements are added in ajax calls, prevent duplicate use of the same id.
// This is ugly, but duplicate ids do not work well is jquery.
$is_ajax = defined( 'NCORE_IS_AJAX' ) && NCORE_IS_AJAX;
if ($is_ajax || empty( $attributes['id'] ))
{
$id = ncore_id( $basename );
$attributes['id'] = $id;
}
else
{
$id = $attributes['id'] ;
}
return $id;
}
function ncore_setJsChange( $selector, $js_onchange )
{
$api = ncore_api();
$model = $api->load->model ('logic/html' );
$model->jsChange( $selector, $js_onchange );
}
function ncore_addJsOnLoad( $js_onload )
{
$api = ncore_api();
$model = $api->load->model ('logic/html' );
$model->jsOnLoad( $js_onload );
}
function ncore_renderHtmlList( $list, $type='and', $prefix='', $suffix='' )
{
if (empty($list)) {
return '';
}
if (count($list)==1) {
$last = end( $list );
return "$prefix$last$suffix";
}
switch ($type)
{
// case 'ol':
// case 'ul':
// $html = "<$type class='htmllist'>";
// foreach ($list as $one)
// {
// $html .= "<li>$prefix$one$suffix</li>";
// }
// $html .= "</$type>";
// return $html;
case 'and':
case 'or':
$last = array_pop( $list );
$html = $list
? $prefix . implode( "$suffix, $prefix", $list ) . $suffix
. ' '
. ($type == 'and' ? _ncore( 'and' ) : _ncore( 'or' ) )
. ' '
: '';
$html .= "$prefix$last$suffix";
return $html;
}
}
function ncore_FileTypeIconUrl( $type, $size='large' )
{
$sizes = array(
's' => '16px',
'm' => '32px',
'l' => '48px',
);
$valid_types = ' aac ai aiff avi bmp c cpp css dat dmg doc dotx dwg dxf eps'
. ' exe flv gif h hpp html ics iso java jpg js key less mid mp3'
. ' mp4 mpg odf ods odt otp ots ott pdf php png ppt psd py qt'
. ' rar rb rtf sass scss sql tga tgz tiff txt wav xls xlsx xml'
. ' yml zip ';
if (NCORE_DEBUG) {
assert( $valid_types[0] == ' ' );
assert( substr( $valid_types, -1 ) == ' ' );
}
$size = $size[0];
$dir = empty( $sizes[ $size ] )
? $sizes[ 's' ]
: $sizes[ $size ];
$type = strtolower( $type );
$is_type_valid = strpos( $valid_types, " $type " ) !== false;
if (!$is_type_valid)
{
$type = '_page'; // '_blank' or '_page'
}
$url = "file_types/$dir/$type.png";
return ncore_imgUrl( $url );
}