Last active
March 26, 2018 10:48
-
-
Save bappi-d-great/78b06f84b446701fad3bdcca5d36c309 to your computer and use it in GitHub Desktop.
Forminator: Date field - drop down/input type - follow the date format to show the fields
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
add_filter( 'forminator_field_date_markup', function( $html, $field ) { | |
$id = $name = Forminator_Date::get_property( 'element_id', $field ); | |
$type = Forminator_Date::get_property( 'field_type', $field ); | |
$date_format = Forminator_Date::get_property( 'date_format', $field ); | |
$min_year = $max_year = ''; | |
$sep = false !== strpos( $date_format, '/' ) ? '/' : '-'; | |
$formats = explode( $sep, $date_format ); | |
$html = $icon = $type != "select" && $type != "input" ? $html : ''; | |
if( $type == "select" || $type == "input" ) | |
{ | |
$html = $icon = ''; | |
} | |
else | |
{ | |
return $html; | |
} | |
$html .= '<div class="forminator-row forminator-row--inner">'; | |
foreach( $formats as $format ) | |
{ | |
switch ( $format ) | |
{ | |
case 'dd': | |
if( $type == "select" ) | |
{ | |
// Start field | |
$html .= '<div class="forminator-col forminator-col-4">'; | |
$html .= '<div class="forminator-field forminator-field--inner">'; | |
$day_data = array( | |
'class' => 'forminator-select', | |
'name' => $id . '-day', | |
'id' => $id . '-day', | |
); | |
$html .= Forminator_Date::create_select( $day_data, __( "Day", Forminator::DOMAIN ), fp_get_day() ); | |
// End field | |
$html .= '</div>'; | |
$html .= '</div>'; | |
break; | |
} | |
elseif( $type == 'input' ) | |
{ | |
// Start field | |
$html .= '<div class="forminator-col forminator-col-4">'; | |
$html .= '<div class="forminator-field forminator-field--inner">'; | |
$day_data = array( | |
'class' => 'forminator-input', | |
'name' => $id . '-day', | |
'id' => $id . '-day', | |
); | |
$html .= Forminator_Date::create_input( $day_data, __( "Day", Forminator::DOMAIN ) ); | |
// End field | |
$html .= '</div>'; | |
$html .= '</div>'; | |
} | |
break; | |
case 'mm': | |
if( $type == "select" ) | |
{ | |
// Start field | |
$html .= '<div class="forminator-col forminator-col-4">'; | |
$html .= '<div class="forminator-field forminator-field--inner">'; | |
$month_data = array( | |
'class' => 'forminator-select', | |
'name' => $id . '-month', | |
'id' => $id . '-month', | |
); | |
$html .= Forminator_Date::create_select( $month_data, __( "Month", Forminator::DOMAIN ), fp_get_months() ); | |
// End field | |
$html .= '</div>'; | |
$html .= '</div>'; | |
} | |
elseif( $type == 'input' ) | |
{ | |
// Start field | |
$html .= '<div class="forminator-col forminator-col-4">'; | |
$html .= '<div class="forminator-field forminator-field--inner">'; | |
$month_data = array( | |
'class' => 'forminator-input', | |
'name' => $id . '-month', | |
'id' => $id . '-month', | |
); | |
$html .= Forminator_Date::create_input( $month_data, __( "Month", Forminator::DOMAIN ) ); | |
// End field | |
$html .= '</div>'; | |
$html .= '</div>'; | |
} | |
break; | |
case 'yy': | |
if( $type == "select" ) | |
{ | |
// Start field | |
$html .= '<div class="forminator-col forminator-col-4">'; | |
$html .= '<div class="forminator-field forminator-field--inner">'; | |
$year_data = array( | |
'class' => 'forminator-select', | |
'name' => $id . '-year', | |
'id' => $id . '-year', | |
); | |
$html .= Forminator_Date::create_select( $year_data, __( "Year", Forminator::DOMAIN ), fp_get_years( $min_year, $max_year ) ); | |
// End field | |
$html .= '</div>'; | |
$html .= '</div>'; | |
break; | |
} | |
elseif( $type == 'input' ) | |
{ | |
// Start field | |
$html .= '<div class="forminator-col forminator-col-4">'; | |
$html .= '<div class="forminator-field forminator-field--inner">'; | |
$year_data = array( | |
'class' => 'forminator-input', | |
'name' => $id . '-year', | |
'id' => $id . '-year', | |
); | |
$description = ''; | |
if ( !empty( $min_year ) && !empty( $max_year ) ) { | |
//Not sure if we add this | |
//$description = sprintf( __( 'Between %s and %s ', Forminator::DOMAIN ), $min_year, $max_year ); | |
} | |
$html .= Forminator_Date::create_input( $year_data, __( "Year", Forminator::DOMAIN ), $description ); | |
// End field | |
$html .= '</div>'; | |
$html .= '</div>'; | |
} | |
break; | |
} | |
} | |
$html .= '</div>'; | |
return $html; | |
}, 99, 2 ); | |
function fp_get_years( $min_year = '', $max_year = '' ) { | |
$array = array(); | |
$year = intval( date( 'Y' ) ); | |
$end = empty( $min_year ) ? $year - 100 : intval( $min_year ) - 1; | |
$start = empty( $max_year ) ? $year + 1 : intval( $max_year ); | |
for ( $i = $start; $i > $end; $i -- ) { | |
$array[] = array( | |
'label' => $i, | |
'value' => $i | |
); | |
} | |
return $array; | |
} | |
function fp_get_months() { | |
$array = array(); | |
for ( $i = 1; $i < 13; $i ++ ) { | |
$array[] = array( | |
'label' => $i, | |
'value' => $i | |
); | |
} | |
return $array; | |
} | |
function fp_get_day() { | |
$array = array(); | |
for ( $i = 1; $i < 32; $i ++ ) { | |
$array[] = array( | |
'label' => $i, | |
'value' => $i | |
); | |
} | |
return $array; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment