Skip to content

Instantly share code, notes, and snippets.

@bappi-d-great
Last active March 26, 2018 10:48
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bappi-d-great/78b06f84b446701fad3bdcca5d36c309 to your computer and use it in GitHub Desktop.
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
<?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