2025-11-26 09:31:54 +00:00
sub common_min_load_params {
for my $ p ( $ q - > param ) {
my $ val = $ q - > param ( $ p ) ;
$ val =~ s/\"//g ;
$ i { $ p } = $ val ;
# &common_min_debug("$p - $val") ;
}
} #------------------------------------------------------------------------------------------
sub common_min_alert_type {
if ( $ error ) {
$ alert = & common_min_alert ( 'danger' , "$error" , 'remove-sign' ) ;
}
elsif ( $ warning ) {
$ alert = & common_min_alert ( 'warning' , "$warning" ) ;
}
elsif ( $ success ) {
$ alert = & common_min_alert ( 'success' , "$success" , 'ok' ) ;
}
} #------------------------------------------------------------------------------------------
sub common_min_alert {
my ( $ type , $ msg , $ glyphicon , $ id ) = @ _ ;
unless ( $ id ) { $ id = 'alertmsg' ; }
unless ( $ glyphicon ) { $ glyphicon = 'exclamation-sign' ; }
my $ alert = qq( <div class="alert alert-$type" id="$id" role="alert"><i class="glyphicon glyphicon-$glyphicon"></i> $msg</div> ) ;
return ( $ alert ) ;
} #------------------------------------------------------------------------------------------
sub common_min_add_form {
my ( $ table , $ action , $ label_col , $ field_col , $ ignore_colpart , $ skip ) = @ _ ;
our ( $ lcol , $ fcol ) = & common_min_columns ( $ label_col , $ field_col ) ;
my $ form = '' ;
$ form . = & common_min_forms_start ( $ table , $ skip ) ;
if ( % sort_field ) {
foreach my $ cnt ( sort { $ a <=> $ b } keys % sort_field ) {
$ col = $ sort_field { $ cnt } ;
& common_debug ( "common_min_add_form [sort_field] = $col [$cnt]" ) ;
$ form . = & common_min_forms_loop ( '' , $ table , $ ignore_colpart ) ;
}
}
else
{
foreach ( sort { $ col_name { $ a } cmp $ col_name { $ b } } keys % col_name ) {
$ col = $ col_name { $ _ } ;
& common_debug ( "common_min_add_form = $col [$_]" ) ;
$ form . = & common_min_forms_loop ( '' , $ table , $ ignore_colpart ) ;
}
}
$ form . = & common_min_forms_end ( '' , $ table , $ action , $ skip ) ;
return ( $ form ) ;
} #------------------------------------------------------------------------------------------
sub common_min_edit_form {
my ( $ iid , $ table , $ action , $ label_col , $ field_col , $ ignore_colpart , $ skip ) = @ _ ;
our ( $ lcol , $ fcol ) = & common_min_columns ( $ label_col , $ field_col ) ;
my $ form = '' ;
$ form . = & common_min_forms_start ( $ table , $ skip ) ;
if ( % sort_field ) {
foreach my $ cnt ( sort { $ a <=> $ b } keys % sort_field ) {
$ col = $ sort_field { $ cnt } ;
$ form . = & common_min_forms_loop ( $ iid , $ table , $ ignore_colpart ) ;
}
}
else
{
foreach $ col ( sort keys % { $ db { $ table } { $ iid } } ) {
$ form . = & common_min_forms_loop ( $ iid , $ table , $ ignore_colpart ) ;
}
}
$ form . = & common_min_forms_end ( $ iid , $ table , $ action , $ skip ) ;
return ( $ form ) ;
} #------------------------------------------------------------------------------------------
sub common_min_forms_start {
my ( $ table , $ skip ) = @ _ ;
if ( $ skip ) { return ; }
my $ form = qq( <form role="form" name="form_$table" id="$table-form" method="post" enctype="multipart/form-data"> ) ;
$ form . = $ extra_form_fields_start ;
return ( $ form ) ;
} #------------------------------------------------------------------------------------------
sub common_min_forms_loop {
my ( $ iid , $ table , $ ignore_colpart ) = @ _ ;
unless ( $ col ) { return ( '' ) ; }
if ( $ hidden { $ col } ) { return ( '' ) ; }
if ( $ ignore { $ col } ) { return ( '' ) ; }
my ( $ colpart ) = split ( /\_/ , $ col ) ;
if ( ( $ ignore_colpart ) and ( $ ignore { $ colpart } ) ) { return ( '' ) ; }
$ ucfirst_col = ucfirst $ col ;
my $ val = $ db { $ table } { $ iid } { $ col } ;
# $tindex++ ;
my $ form = '' ;
if ( $ checkbox { $ col } ) {
if ( $ val ) { $ checked = 'CHECKED' ; } else { $ checked = '' ; }
$ form . = & common_min_form_checkbox ( $ col , $ val , $ checked ) ;
return ( $ form ) ;
}
if ( $ radio { $ col } ) {
$ form . = & common_min_form_radio ( $ col , $ val ) ;
return ( $ form ) ;
}
& common_min_forms_required ;
# $req_glyph = '' ;
# if ($required{$col}) {
# if ($required{$col} == 1){ $required{$col} = 'data-validation="required"' ; }
# elsif ($required{$col} == 2){ $required{$col} = 'data-validation="length alphanumeric" data-validation-length="6-6"' ; }
# elsif ($required{$col} == 3){ $required{$col} = 'data-validation="alphanumeric"' ; }
# elsif ($required{$col} == 4){ $required{$col} = 'data-validation="number"' ; }
# elsif ($required{$col} == 5){ $required{$col} = 'data-validation="number" data-validation-allowing="range[0;1]"' ; }
# elsif ($required{$col} == 6){ $required{$col} = 'data-validation="email"' ; }
# elsif ($required{$col} == 7){ $required{$col} = 'data-validation="url"' ; }
# $req_glyph = qq(<i class="glyphicon glyphicon-asterisk yellow"></i>) ;
# }
if ( $ datetimepicker { $ col } ) {
unless ( $ val ) { $ val = $ now_ccyy_mm_dd . " $now_hour:$now_min:$now_sec" ; }
$ form . = & common_min_form_datetimepicker ( $ col , $ val ) ;
return ( $ form ) ;
}
if ( $ datepicker { $ col } ) {
unless ( $ val ) { $ val = $ now_ccyy_mm_dd ; }
$ form . = & common_min_form_datepicker ( $ col , $ val ) ;
return ( $ form ) ;
}
if ( $ select { $ col } ) {
$ form . = & common_min_form_select ( $ col , $ val ) ;
return ( $ form ) ;
}
if ( $ textarea { $ col } ) {
$ form . = & common_min_form_textarea ( $ col , $ val ) ;
return ( $ form ) ;
}
if ( $ label { $ col } ) {
$ form . = & common_min_form_label ( $ col , $ val ) ;
return ( $ form ) ;
}
if ( $ add_col { $ col } ) {
$ form . = & common_min_form_input_col ( $ col , $ val ) ;
} else {
$ form . = & common_min_form_input ( $ col , $ val ) ;
}
return ( $ form ) ;
} #------------------------------------------------------------------------------------------
sub common_min_forms_required {
$ req_glyph { $ col } = '' ;
if ( $ required { $ col } ) {
if ( $ required { $ col } == 1 ) { $ required { $ col } = 'data-validation="required"' ; }
elsif ( $ required { $ col } == 2 ) { $ required { $ col } = 'data-validation="length alphanumeric" data-validation-length="6-6"' ; }
elsif ( $ required { $ col } == 3 ) { $ required { $ col } = 'data-validation="alphanumeric"' ; }
elsif ( $ required { $ col } == 4 ) { $ required { $ col } = 'data-validation="number"' ; }
elsif ( $ required { $ col } == 5 ) { $ required { $ col } = 'data-validation="number" data-validation-allowing="range[0;1]"' ; }
elsif ( $ required { $ col } == 6 ) { $ required { $ col } = 'data-validation="email"' ; }
elsif ( $ required { $ col } == 7 ) { $ required { $ col } = 'data-validation="url"' ; }
elsif ( $ required { $ col } == 8 ) { $ required { $ col } = 'data-validation="" data-validation-allowing="" data-validation-decimal-separator=""' ; }
elsif ( $ required { $ col } == 9 ) { $ required { $ col } = 'data-validation="custom" data-validation-regexp="^\d+(\.\d{1,2})?$"' ; } # New condition
elsif ( $ required { $ col } == 10 ) { $ required { $ col } = 'data-validation="length number" data-validation-length="10-20"' ; } # 0846758345 or 27846758345
$ req_glyph { $ col } = qq( <i class="glyphicon glyphicon-asterisk yellow"></i> ) ;
}
} #------------------------------------------------------------------------------------------
sub common_min_forms_end {
my ( $ iid , $ table , $ action , $ skip ) = @ _ ;
if ( $ skip ) { return ; }
my $ form = '' ;
$ form . = $ extra_form_fields ;
foreach ( keys % hidden ) {
$ form . = qq~<input type="hidden" name="$_" value="$db{$table}{$iid}{$_}">~ ;
}
if ( $ dialog ) {
$ varbtn = qq~ <button type="button" class="btn btn-default" onclick="parent.BootstrapDialog.closeAll();">Close</button>~ ;
} else {
$ varbtn = qq~ <button type="button" class="btn btn-default" onclick="history.go(-1);">Back</button>~ ;
}
# if ($savjqy) { $savbtn = qq(<button type="button" class="btn btn-primary" id="savebutt">Save</button>) ;} else { $savbtn = qq(<button type="submit" class="btn btn-primary">Save</button>) ; }
if ( $ savjqy ) {
my $ custom_class = ( $ invoice_exists && ! $ useropts { super } { $ username } && ! $ useropts { it } { $ username } ) ? "custom" : "primary" ;
my $ custom_tooltip = ( $ invoice_exists ) ? qq~title data-toggle="tooltip" data-placement="top" data-original-title="Invoice Nr Exists!!!"~ : qq~~ ;
$ savbtn = qq~ <button type="button" class="btn btn-$custom_class" id="savebutt" $custom_tooltip>Save</button> ~ ;
} elsif ( $ srchjqy ) {
$ savbtn = qq~ <button type="button" class="btn btn-primary" id="srchbutt">Search</button>~ ;
} elsif ( $ srchscr ) {
$ savbtn = qq~ <button type="submit" class="btn btn-primary">Search</button>~ ;
} else {
$ savbtn = qq~ <button type="submit" id="submitbutt" class="btn btn-primary">Save</button>~ ;
}
if ( $ addbkb ) {
$ bakbtn = qq~ <button type="button" class="btn btn-default" onclick="history.go(-1);">Back</button>~ ;
} else {
$ bakbtn = qq~~ ;
}
if ( $ addcpb ) {
$ cpybtn = qq~ <button type="button" class="btn btn-success" onclick="return copyMinItem('$iid');">Copy</button>~ ;
& common_min_footer ( 'id' , "$lcpage\s" ) ;
} else {
$ cpybtn = qq~~ ;
}
my $ custom_class = ( $ cancel_butt & $ invoice_exists && ! $ useropts { super } { $ username } && ! $ useropts { it } { $ username } ) ? "custom" : "danger" ;
my $ custom_tooltip = ( $ invoice_exists ) ? qq~title data-toggle="tooltip" data-placement="top" data-original-title="Invoice Nr Exists!!!"~ : qq~~ ;
$ canxbtn = ( $ cancel_butt ) ? qq~ <button type="button" class="btn btn-$custom_class" id="cancelbutt" $custom_tooltip>Cancel</button> ~ : '' ;
$ varbtn = $ custom_back_button if $ custom_back_button ;
$ savbtn = qq~~ if $ skip_save_btn ;
$ form . = qq ~ < input type = "hidden" name = "iaction" value = "$action" >
< div class = 'row' > < div class = "col-md-12" > & nbsp ; </div> </div>
< div class = "row" > < div class = "col-md-12" > $ savbtn $ canxbtn $ cpybtn $ varbtn $ bakbtn </div> </div> < div class = "row" > < div class = "col-md-12" > & nbsp ; </div> </div>
</form> ~ ;
return ( $ form ) ;
} #------------------------------------------------------------------------------------------
sub common_min_columns {
my ( $ label_col , $ field_col ) = @ _ ;
unless ( $ label_col ) { $ lcol = 2 ; } else { $ lcol = $ label_col ; }
unless ( $ field_col ) { $ fcol = 4 ; } else { $ fcol = $ field_col ; }
return ( $ lcol , $ fcol ) ;
} #------------------------------------------------------------------------------------------
sub common_min_status {
my ( $ closed , $ deleted ) = @ _ ;
my ( $ class , $ txt ) ;
if ( $ deleted == 1 ) { $ class = 'danger' ; $ txt = 'DELETED' ; $ del { $ iaction } = 1 ; }
elsif ( $ closed == 1 ) { $ class = 'success' ; $ txt = 'CLOSED' ; $ clo { $ iaction } = 1 ; }
elsif ( $ closed == 0 ) { $ class = 'warning' ; $ txt = 'ACTIVE' ; $ act { $ iaction } = 1 ; }
return ( $ class , $ txt ) ;
} #------------------------------------------------------------------------------------------
sub common_min_form_view {
my ( $ field , $ val , $ type , $ addclass , $ dont_end_row ) = @ _ ;
my $ ucfirst_field = ucfirst $ field ;
my $ print_field = & common_min_print_field ( $ field ) ; if ( $ preferred_title { $ field } ) { $ print_field = $ preferred_title { $ field } ; }
# $vrowcnt++; if ($vrowcnt % 2 == 0) { $bgcolor = '#cecbcb' ; } else { $bgcolor = '#eeeeee' ; }
$ bgcolor = '#eeeeee' ;
unless ( $ val ) { $ val = ' ' ; }
my $ row = qq( <div class='row'>
< div class = 'fieldname col-md-$lcol' >
< label class = 'control-label' for = 'input$ucfirst_field' > $ print_field </label>
</div>
< div class = 'col-md-$fcol' style = "background-color:$bgcolor;" >
< div class = 'control-group' >
< div class = 'controls' >
< ! - - < span style = "font-size:90%;" > <em> $ val </em> </span> - - >
< span style = "font-size:90%;" > $ val </span>
</div>
</div>
</div> ) ;
unless ( $ dont_end_row ) { $ row . = qq( </div> ) ; }
$ row = qq~$row<div class='row' style="height:12.5px;"><br></div>~ if $ val =~ /<br>/ ;
return ( $ row ) ;
} #------------------------------------------------------------------------------------------
sub common_min_form_view_col {
my ( $ val ) = @ _ ;
# my $ucfirst_field = ucfirst $field ;
# my $print_field = &common_min_print_field($field) ; if ($preferred_title{$field}) { $print_field = $preferred_title{$field} ; }
# $vrowcnt++; if ($vrowcnt % 2 == 0) { $bgcolor = '#cecbcb' ; } else { $bgcolor = '#eeeeee' ; } <div class='col-md-$fcol' style="background-color:$bgcolor;">
unless ( $ val ) { $ val = ' ' ; }
my $ row = qq ~
< div class = 'col-md-$fcol' >
< div class = 'control-group' >
< div class = 'controls' >
< span style = "font-size:90%;" > <em> $ val </em> </span>
</div>
</div>
</div> ~ ;
return ( $ row ) ;
} #------------------------------------------------------------------------------------------
sub common_min_form_input {
my ( $ field , $ val , $ type , $ addclass , $ dont_end_row ) = @ _ ;
if ( $ field eq 'password' ) { $ type = 'password' ; } unless ( $ type ) { $ type = 'text' ; } if ( $ cust_class { $ field } ) { $ addclass = $ cust_class { $ field } ; }
my $ ucfirst_field = ucfirst $ field ;
my $ print_field = & common_min_print_field ( $ field ) ; if ( $ preferred_title { $ field } ) { $ print_field = $ preferred_title { $ field } ; }
if ( $ type eq 'hidden' ) { return ( "<input type='$type' name='$field' id='input$ucfirst_field' value='$val'>" ) ; }
my $ labelid = '' ; if ( $ label_id { $ field } ) { $ labelid = $ label_id { $ field } ; }
$ tindex + + ;
$ fcol = $ fcol { $ field } if $ fcol { $ field } ;
my $ row = '' ;
if ( $ add_finish_div { $ field } ) { $ row . = qq~</div>~ ; }
$ row . = qq ~ < div class = 'row' >
< div class = 'fieldname col-md-$lcol' >
< label class = 'control-label' for = 'input$ucfirst_field' $ labelid > $ print_field & nbsp ; $ req_glyph { $ field } & nbsp ; $ info_glyph_tooltip { $ field } </label>
</div>
< div class = 'col-md-$fcol' >
< div class = 'control-group' >
< div class = 'controls' >
< input type = '$type' name = '$field' class = 'form-control $addclass' id = 'input$ucfirst_field' placeholder = '$print_field' value = "$val" $ readonly { $ field } $ required { $ field } tabindex = "$tindex" >
</div>
</div>
</div> $ dlg { $ field } ~ ;
if ( not $ dont_end_row and not $ dont_end_row { $ field } ) { $ row . = qq~</div>~ ; }
return ( $ row ) ;
} #------------------------------------------------------------------------------------------
sub common_min_form_input_col {
my ( $ field , $ val ) = @ _ ;
unless ( $ type ) { $ type = 'text' ; }
my $ ucfirst_field = ucfirst $ field ;
my $ print_field = & common_min_print_field ( $ field ) ; if ( $ preferred_title { $ field } ) { $ print_field = $ preferred_title { $ field } ; }
my $ placeholder = $ print_field ; if ( $ preferred_placeholder { $ field } ) { $ placeholder = $ preferred_placeholder { $ field } ; }
my $ field_id = "input$ucfirst_field" ;
# unless ($excl_on_change{$field}) { push @jquery_workings_trigger_fields, $field_id ; }
unless ( $ excl_on_change { $ field } ) { push @ jquery_trigger_fields , $ field_id ; }
if ( $ type eq 'hidden' ) { return ( "<input type='$type' name='$field' id='$field_id' value='$val'>" ) ; }
$ tindex + + ;
$ fcol = $ fcol { $ field } if $ fcol { $ field } ;
my $ row = qq ~
< div class = 'col-md-$fcol' >
< div class = 'control-group' >
< div class = 'controls' >
< input type = '$type' name = '$field' class = 'form-control $cust_class{$field}' id = '$field_id' $ input_style { $ field } placeholder = '$placeholder' value = "$val" $ readonly { $ field } $ required { $ field } tabindex = "$tindex" >
</div>
</div>
</div>
$ dlg { $ field } ~ ;
return ( $ row ) ;
} #------------------------------------------------------------------------------------------
sub common_min_form_label {
my ( $ field , $ val ) = @ _ ;
$ hidden { $ field } = 1 ;
my $ ucfirst_field = ucfirst $ field ;
my $ print_field = & common_min_print_field ( $ field ) ; if ( $ preferred_title { $ field } ) { $ print_field = $ preferred_title { $ field } ; }
my $ field_id = "label$ucfirst_field" ;
my $ row . = qq ~ < div class = 'row' >
< div class = 'fieldname col-md-$lcol' >
< label class = 'control-label' for = 'input$ucfirst_field' $ labelid > $ print_field & nbsp ; </label>
</div>
< div class = 'col-md-$fcol' >
< div class = "col-md-12" > $ val </div>
</div> $ dlg { $ field } ~ ;
return ( $ row ) ;
} #------------------------------------------------------------------------------------------
sub common_min_form_label_col {
my ( $ field ) = @ _ ;
my $ ucfirst_field = ucfirst $ field ;
my $ print_field = & common_min_print_field ( $ field ) ; if ( $ preferred_title { $ field } ) { $ print_field = $ preferred_title { $ field } ; }
my $ field_id = "label$ucfirst_field" ;
my $ row = qq ~ < div class = 'fieldname col-md-$lcol' >
< label class = 'control-label' for = 'input$ucfirst_field' label $ ucfirst_field style = 'white-space:nowrap;' > $ print_field $ req_glyph { $ field } $ info_glyph_tooltip { $ field } </label>
</div> ~ ;
unless ( $ excl_on_change { $ field } ) { push @ jquery_trigger_fields , $ field_id ; }
# unless ($excl_on_change{$field}) { push @jquery_workings_trigger_fields, $field_id ; }
return ( $ row ) ;
} #------------------------------------------------------------------------------------------
sub common_min_form_textarea {
my ( $ field , $ val , $ height ) = @ _ ;
if ( $ textarea_height { $ field } ) { $ height = $ textarea_height { $ field } ; }
unless ( $ height ) { $ height = 100 ; }
my $ ucfirst_field = ucfirst $ field ;
my $ print_field = & common_min_print_field ( $ field ) ; if ( $ preferred_title { $ field } ) { $ print_field = $ preferred_title { $ field } ; }
$ tindex + + ;
my $ row = qq ~ < div class = 'row' >
< div class = 'fieldname col-md-$lcol' >
< label class = 'control-label' for = 'textarea$ucfirst_field' > $ print_field $ req_glyph { $ field } $ info_glyph_tooltip { $ field } </label>
</div>
< div class = 'col-md-$fcol' >
< div class = "controls" >
< textarea name = "$field" style = "width:100%;height:$height\px;" id = 'textarea$ucfirst_field' class = "form-control" placeholder = "$print_field" $ readonly { $ field } $ required { $ field } tabindex = "$tindex" > $ val </textarea>
</div>
</div>
</div> ~ ;
return ( $ row ) ;
} #------------------------------------------------------------------------------------------
sub common_min_form_textarea_col {
my ( $ field , $ val , $ height , $ hide ) = @ _ ;
if ( $ textarea_height { $ field } ) { $ height = $ textarea_height { $ field } ; }
unless ( $ height ) { $ height = 100 ; }
my $ ucfirst_field = ucfirst $ field ;
my $ print_field = & common_min_print_field ( $ field ) ; if ( $ preferred_title { $ field } ) { $ print_field = $ preferred_title { $ field } ; }
$ tindex + + ;
my $ hide = ( $ hide ) ? "none" : "" ;
my $ row = qq ~
< div class = 'col-md-$fcol' >
< div class = "controls" >
< textarea name = "$field" style = "width:100%;height:$height\px;display:$hide;" id = 'textarea$ucfirst_field' class = "form-control" placeholder = "$print_field" $ readonly { $ field } $ required { $ field } tabindex = "$tindex" > $ val </textarea>
</div>
</div> ~ ;
return ( $ row ) ;
} #------------------------------------------------------------------------------------------
sub common_min_form_checkbox {
my ( $ field , $ val , $ checked , $ classic ) = @ _ ;
my $ ucfirst_field = ucfirst $ field ;
my $ print_field = & common_min_print_field ( $ field ) ; if ( $ preferred_title { $ field } ) { $ print_field = $ preferred_title { $ field } ; }
my $ check_class = ( $ classic ) ? 'class="iphone-toggle"' : '' ;
# <input name="$field" data-no-uniform="true" type="checkbox" class="iphone-toggle" id="checkbox$ucfirst_field" $checked value="1" tabindex="$tindex">
$ tindex + + ;
my $ row = qq( <div class='row'>
< div class = "fieldname col-md-$lcol" > < label class = "control-label" for = "checkbox$ucfirst_field" > $ print_field </label> </div>
< div class = "col-md-$fcol" >
< input name = "$field" data - no - uniform = "true" type = "checkbox" $ check_class id = "checkbox$ucfirst_field" $ checked value = "1" tabindex = "$tindex" >
</div>
</div> ) ;
# <input name="$field" data-no-uniform="true" type="checkbox" class="iphone-toggle" id="checkbox$ucfirst_field" $checked value="1" tabindex="$tindex">
return ( $ row ) ;
} #------------------------------------------------------------------------------------------
sub common_min_form_checkbox_col {
my ( $ field , $ val , $ checked , $ classic ) = @ _ ;
my $ ucfirst_field = ucfirst $ field ;
my $ print_field = & common_min_print_field ( $ field ) ; if ( $ preferred_title { $ field } ) { $ print_field = $ preferred_title { $ field } ; }
my $ field_id = "checkbox$ucfirst_field" ;
my $ check_class = ( $ classic ) ? 'class="iphone-toggle"' : '' ;
my $ label = '' ; if ( $ label { $ field } ) { $ label = "<label for='$field_id' $style_field{$field}></label>" ; }
$ tindex + + ;
my $ row = qq( <div class="col-md-$fcol checkbox_checked" id="c_$field">
< input name = "$field" data - no - uniform = "true" type = "checkbox" $ check_class id = "$field_id" $ style_field { $ field } $ checked value = "1" tabindex = "$tindex" >
$ label
</div> ) ;
unless ( $ excl_on_change { $ field } ) { push @ jquery_trigger_fields , $ field_id ; }
# unless ($excl_on_change{$field}) { push @jquery_workings_trigger_fields, $field_id ; }
return ( $ row ) ;
} #------------------------------------------------------------------------------------------
sub common_min_form_radio {
my ( $ field , $ val , $ opts ) = @ _ ;
my $ ucfirst_field = ucfirst $ field ;
my $ print_field = & common_min_print_field ( $ field ) ; if ( $ preferred_title { $ field } ) { $ print_field = $ preferred_title { $ field } ; }
my @ opts = split ( /\+/ , $ radio_opts { $ field } ) ;
foreach ( @ opts ) {
if ( $ _ eq $ val ) { $ checked = 'CHECKED' ; } else { $ checked = '' ; }
$ print_radios . = qq( <input type="radio" name="$field" id="radio$val" value="$val" $checked> $_ ) ;
}
my $ row = qq( <div class='row'>
< div class = "fieldname col-md-$lcol" > < label class = "control-label" for = "radio$ucfirst_field" > $ print_field </label> </div>
< div class = "radio col-md-$fcol" >
<label>
$ print_radios
</label>
</div>
</div> ) ;
return ( $ row ) ;
} #------------------------------------------------------------------------------------------
sub common_min_form_select {
my ( $ field , $ val , $ dont_end_row ) = @ _ ;
if ( $ multiple { $ field } ) { $ setmultiple = 'multiple' ; } else { $ setmultiple = '' ; }
my $ ucfirst_field = ucfirst $ field ;
my $ print_field = & common_min_print_field ( $ field ) ; if ( $ preferred_title { $ field } ) { $ print_field = $ preferred_title { $ field } ; }
$ tindex + + ;
my $ row = qq ~ < div class = "row" >
< div class = "fieldname col-md-$lcol" > < label class = "control-label" for = "select$ucfirst_field" > $ print_field $ req_glyph { $ field } $ info_glyph_tooltip { $ field } </label> </div>
< div class = "col-md-$fcol" >
< div class = "control-group" >
< div class = "controls" >
< select class = "form-control" style = "margin:2px 0 2px 0;" name = "$field" id = "select$ucfirst_field" $ setmultiple data - placeholder = "Select $print_field" data - rel = "chosen" $ required { $ field } tabindex = "$tindex" >
< option value = "" > </option>
$ opts { $ field }
</select>
</div>
</div>
</div>
$ dlg { $ field } ~ ;
unless ( $ dont_end_row ) { $ row . = qq~</div>~ ; }
if ( $ allow_deselect { $ field } ) {
if ( $ minify_jquery ) {
push @ all_select_ids , "#select$ucfirst_field" if $ ucfirst_field ;
} else {
$ trigger_jquery_raw . = qq~\$("#select$ucfirst_field").chosen({ allow_single_deselect:true,search_contains:true });~ ;
}
}
# if ($val) {
# $trigger_jquery_raw .= qq~\$("#select$ucfirst_field").val($val) ; \$("#select$ucfirst_field").trigger("chosen:updated"); ~ ;
# }
return ( $ row ) ;
} #------------------------------------------------------------------------------------------
sub common_min_form_select_col {
my ( $ field , $ val ) = @ _ ;
my $ ucfirst_field = ucfirst $ field ;
my $ print_field = & common_min_print_field ( $ field ) ; if ( $ preferred_title { $ field } ) { $ print_field = $ preferred_title { $ field } ; }
if ( $ multiple { $ field } ) { $ setmultiple = 'multiple' ; } else { $ setmultiple = '' ; }
$ tindex + + ;
my $ row = qq ~ < div class = "col-md-$fcol" >
< div class = "control-group" >
< div class = "controls" >
< select class = "form-control" style = "margin:2px 0 2px 0;" name = "$field" id = "select$ucfirst_field" $ setmultiple data - placeholder = "Select $print_field" data - rel = "chosen" $ required { $ field } tabindex = "$tindex" >
< option value = "" > </option>
$ opts { $ field }
</select>
$ dlg_operator { $ field }
</div>
</div>
</div>
$ dlg { $ field } ~ ;
if ( $ allow_deselect { $ field } ) {
if ( $ minify_jquery ) {
push @ all_select_ids , "#select$ucfirst_field" if $ ucfirst_field ;
} else {
$ trigger_jquery_raw . = qq~\$("#select$ucfirst_field").chosen({ allow_single_deselect:true });~ ;
}
}
# if ($val) {
# $trigger_jquery_raw .= qq~\$("#select$ucfirst_field").val($val) ; \$("#select$ucfirst_field").trigger("chosen:updated"); ~ ;
# }
return ( $ row ) ;
} #------------------------------------------------------------------------------------------
sub common_min_form_datetimepicker {
my ( $ field , $ val , $ diff ) = @ _ ;
$ diff = 10 unless $ diff ;
my $ ucfirst_field = ucfirst $ field ;
my $ print_field = & common_min_print_field ( $ field ) ; if ( $ preferred_title { $ field } ) { $ print_field = $ preferred_title { $ field } ; }
$ tindex + + ;
# if ($field eq 'date_from') { $val = "$now_ccyy_mm_dd $now_hour:00:00" unless $val ; }
if ( $ field eq 'date_from' ) { $ val = "$now_ccyy_mm_dd 08:00:00" unless $ val ; }
if ( $ field eq 'date_to' ) { my $ hr = sprintf ( "%02s" , $ now_hour + 2 ) ; $ val = "$now_ccyy_mm_dd $hr:00:00" unless $ val ; }
my $ row = qq( <div class="row">
< div class = "fieldname col-md-$lcol" > < label class = "control-label" for = "datetimepicker$ucfirst_field" > $ print_field $ req_glyph { $ field } $ info_glyph_tooltip { $ field } </label> </div>
< div class = "col-md-$fcol" >
< div class = "control-group" >
< div style = "margin:2px 0 2px 0;" class = "input-group controls input-append date" data - date = "$val" id = "datetimepicker$ucfirst_field" >
< input style = "margin:0;" data - format = "yyyy-MM-dd hh:mm:ss" class = "form-control" name = "$field" READONLY value = "$val" tabindex = "$tindex" >
< span class = "input-group-addon add-on" >
< i data - time - icon = "icon-time" data - date - icon = "icon-calendar" >
</i>
</span>
</div>
</div>
</div>
</div> ) ;
$ trigger_jquery_raw . = qq( \ $ ( '#datetimepicker$ucfirst_field' ) .datetimepicker ( {language: 'pt-BR'} ) ; ) ;
my @ field_name_parts = split ( /\_/ , $ field ) ;
if ( $ field_name_parts [ - 1 ] eq 'from' && ! ( $ ENV { 'SCRIPT_NAME' } =~ /event_quotes/ && ( $ ENV { 'QUERY_STRING' } =~ /edit/ || $ ENV { 'QUERY_STRING' } =~ /add/ ) ) ) {
pop @ field_name_parts ; my $ field_prefix = join ( "_" , @ field_name_parts ) ; my $ ucfirst_field_prefix = ucfirst $ field_prefix ;
if ( $ ENV { 'QUERY_STRING' } =~ /filter/ || $ ENV { 'QUERY_STRING' } =~ /search/ || $ ENV { 'SCRIPT_NAME' } =~ /report/ ) {
$ trigger_jquery_raw . = qq ~
\ $( '#datetimepicker$ucfirst_field_prefix\_from' ) . on ( 'changeDate' , function ( e ) {
var datetimepickerDate_from = \ $( "input[name='$field_prefix\_from']" ) . val ( ) ;
var datetimepickerDate_to = \ $( "input[name='$field_prefix\_to']" ) . val ( ) ;
var newDatetimepickerDate_from = new Date ( datetimepickerDate_from ) ;
var newDatetimepickerDate_to = new Date ( datetimepickerDate_to ) ;
if ( newDatetimepickerDate_from > newDatetimepickerDate_to ) {
newDatetimepickerDate_to = new Date ( datetimepickerDate_from ) ;
}
console . log ( "datetimepickerDate_from=" + datetimepickerDate_from ) ;
newDatetimepickerDate_from . setHours ( + 2 ) ;
newDatetimepickerDate_from . setMinutes ( 0 ) ;
newDatetimepickerDate_from . setSeconds ( 0 ) ;
newDatetimepickerDate_from . setMilliseconds ( 0 ) ;
console . log ( "newDatetimepickerDate_from=" + newDatetimepickerDate_from ) ;
\ $( "#datetimepicker$ucfirst_field_prefix\_from" ) . datetimepicker ( "setDate" , newDatetimepickerDate_from ) ;
console . log ( "datetimepickerDate_to=" + newDatetimepickerDate_to ) ;
newDatetimepickerDate_to . setHours ( 23 + 2 ) ;
newDatetimepickerDate_to . setMinutes ( 59 ) ;
newDatetimepickerDate_to . setSeconds ( 59 ) ;
newDatetimepickerDate_to . setMilliseconds ( 59 ) ;
console . log ( "newDatetimepickerDate_to=" + newDatetimepickerDate_to ) ;
\ $( "#datetimepicker$ucfirst_field_prefix\_to" ) . datetimepicker ( "setDate" , newDatetimepickerDate_to ) ;
} ) ;
\ $( '#datetimepicker$ucfirst_field_prefix\_to' ) . on ( 'changeDate' , function ( e ) {
var datetimepickerDate_to = \ $( "input[name='$field_prefix\_to']" ) . val ( ) ;
var newDatetimepickerDate_to = new Date ( datetimepickerDate_to ) ;
console . log ( "datetimepickerDate_to=" + datetimepickerDate_to ) ;
newDatetimepickerDate_to . setHours ( 23 + 2 ) ;
newDatetimepickerDate_to . setMinutes ( 59 ) ;
newDatetimepickerDate_to . setSeconds ( 59 ) ;
newDatetimepickerDate_to . setMilliseconds ( 59 ) ;
console . log ( "newDatetimepickerDate_to=" + newDatetimepickerDate_to ) ;
\ $( "#datetimepicker$ucfirst_field_prefix\_to" ) . datetimepicker ( "setDate" , newDatetimepickerDate_to ) ;
} ) ;
~ ;
} else {
$ trigger_jquery_raw . = qq ~
if ( \ $( "#datetimepicker$ucfirst_field_prefix\_to" ) . length ) {
\ $( '#datetimepicker$ucfirst_field_prefix\_from' ) . on ( 'changeDate' , function ( e ) {
var datetimepickerDate_from = \ $( "input[name='$field_prefix\_from']" ) . val ( ) ;
console . log ( "datetimepickerDate_from=" + datetimepickerDate_from ) ;
if ( datetimepickerDate_from ) {
// Parse datetimepickerDate_from value to a Date object
var datetimepickerDate_to = new Date ( datetimepickerDate_from ) ;
console . log ( "datetimepickerDate_to=" + datetimepickerDate_to ) ;
// Add 2 hours to datetimepickerDate_from value
// datetimepickerDate_to . setHours ( datetimepickerDate_to . getHours ( ) + $ diff ) ;
datetimepickerDate_to . setHours ( datetimepickerDate_to . getHours ( ) + $ diff ) ;
console . log ( "datetimepickerDate_to=" + datetimepickerDate_to ) ;
\ $( "#datetimepicker$ucfirst_field_prefix\_to" ) . datetimepicker ( "setDate" , datetimepickerDate_to ) ;
}
} ) ;
}
~ ;
}
}
return ( $ row ) ;
# <input style="margin:0;" data-format="yyyy-MM-dd hh:mm:ss" class="form-control" name="$field" value="$val" READONLY tabindex="$tindex">
} #------------------------------------------------------------------------------------------
sub common_min_form_datepicker {
my ( $ field , $ val , $ label , $ dont_end_row ) = @ _ ;
my $ ucfirst_field = ucfirst $ field ;
my $ print_field = & common_min_print_field ( $ field ) ; if ( $ label ) { $ print_field = $ label ; } if ( $ preferred_title { $ field } ) { $ print_field = $ preferred_title { $ field } ; }
if ( $ val eq '0000-00-00' ) { $ val = '' ; }
$ tindex + + ;
my $ row = qq ~ < div class = "row" >
< div class = "fieldname col-md-$lcol" > < label class = "control-label" for = "datepicker$ucfirst_field" > $ print_field $ req_glyph { $ field } $ info_glyph_tooltip { $ field } </label> </div>
< div class = "col-md-$fcol" >
< div class = "control-group" >
< div style = "margin:2px 0 2px 0;" class = "input-group controls input-append date" data - date = "$val" id = "datepicker$ucfirst_field" >
< input style = "margin:0;" class = 'form-control' name = "$field" value = "$val" $ required { $ field } placeholder = 'ccyy-mm-dd' tabindex = '$tindex' $ readonly { $ field } >
< span class = "input-group-addon add-on" >
< span style = "cursor:pointer;" class = "glyphicon glyphicon-calendar" > </span>
</span>
</div>
</div>
</div>
~ ;
unless ( $ dont_end_row ) {
$ row . = qq ~
</div>
~ ;
}
& common_min_form_datepicker_jquery ( $ ucfirst_field ) ;
return ( $ row ) ;
# <input style="margin:0;" class='form-control' name="$field" value="$val" READONLY tabindex='$tindex'>
} #------------------------------------------------------------------------------------------
sub common_min_form_datepicker_col {
my ( $ field , $ val , $ end_row ) = @ _ ;
my $ ucfirst_field = ucfirst $ field ;
my $ print_field = & common_min_print_field ( $ field ) ; if ( $ preferred_title { $ field } ) { $ print_field = $ preferred_title { $ field } ; }
$ tindex + + ;
if ( $ val eq '0000-00-00' ) { $ val = '' ; }
my $ row = qq( <div class="col-md-$fcol">
< div class = "control-group" >
< div style = "margin:2px 0 2px 0;" class = "input-group controls input-append date" data - date = "$val" id = "datepicker$ucfirst_field" >
< input id = "datepick$ucfirst_field" style = "margin:0;" class = 'form-control' name = "$field" value = "$val" $ required { $ field } placeholder = 'ccyy-mm-dd' tabindex = '$tindex' $ readonly { $ field } >
< span class = "input-group-addon add-on" >
< span style = "cursor:pointer;" class = "glyphicon glyphicon-calendar" > </span>
</span>
</div>
</div>
</div> ) ;
$ row . = qq~</div>~ if $ end_row ;
& common_min_form_datepicker_jquery ( $ ucfirst_field ) ;
return ( $ row ) ;
} #------------------------------------------------------------------------------------------
sub common_min_form_datepicker_jquery {
my ( $ ucfirst_field ) = @ _ ;
$ trigger_jquery_raw . = qq ~
\ $( '#datepicker$ucfirst_field' ) . datepicker ( {
format : "yyyy-mm-dd" } ) . on ( 'changeDate' , function ( ev ) {
\ $( '.datepicker' ) . hide ( ) ;
} ) ;
~ ;
my $ lc_field = lc $ ucfirst_field ;
my @ field_name_parts = split ( /\_/ , $ lc_field ) ;
# if ($field_name_parts[-1] eq 'from') {
# pop @field_name_parts ; my $field_prefix = join("_",@field_name_parts) ; my $ucfirst_field_prefix = ucfirst $field_prefix ;
# $trigger_jquery_raw .= qq~
# if (\$("#datepicker$ucfirst_field_prefix\_to").length) {
# // \$('#datepicker$ucfirst_field_prefix\_from').on('changeDate', function(e) {
# // var datepickerDate_from = \$("input[name='$field_prefix\_from']").val();
# // console.log("datepickerDate_from [$field_prefix\_from]="+datepickerDate_from) ;
# // if (datepickerDate_from) {
# // // Parse datepickerDate_from value to a Date object
# // var datepickerDate_to = new Date(datepickerDate_from);
# // console.log("datepickerDate_to="+datepickerDate_to) ;
# // // Add 1 month to datepickerDate_from value
# // datepickerDate_to.setMonth(datepickerDate_to.getMonth() + 1);
# // // var formattedDate = \$("#datepicker$ucfirst_field_prefix\_to").formatDate("yyyy-mm-dd", new Date(datepickerDate_to));
# // // console.log("datepickerDate_to [datepicker$ucfirst_field_prefix\_to]="+datepickerDate_to+" ["+formattedDate+"]") ;
# // console.log("datepickerDate_to [datepicker$ucfirst_field_prefix\_to]="+datepickerDate_to) ;
# // // \$("#datepicker$ucfirst_field_prefix\_to").datepicker("setDate", new Date(datepickerDate_to));
# // // \$("#datepicker$ucfirst_field_prefix\_to").setDate(datepickerDate_to);
# // }
# // }) ;
# var nowTemp = new Date();
# var now = new Date(nowTemp.getFullYear(), nowTemp.getMonth(), nowTemp.getDate(), 0, 0, 0, 0);
# var from = \$('#datepicker$ucfirst_field_prefix\_from').datepicker({
# format: "yyyy-mm-dd",
# onRender: function (date) {
# return date.valueOf() < now.valueOf() ? 'disabled' : '';
# }
# }).on('changeDate', function (ev) {
# if (ev.date.valueOf() > to.date.valueOf()) {
# var newDate = new Date(ev.date)
# newDate.setDate(newDate.getDate() + 30);
# to.setValue(newDate);
# }
# // from.hide();
# \$('#datepicker$ucfirst_field_prefix\_to')[0].focus();
# }).data('datepicker');
# var to = \$('#datepicker$ucfirst_field_prefix\_to').datepicker({
# format: "yyyy-mm-dd",
# onRender: function (date) {
# return (date.valueOf() < now.valueOf()) && (date.valueOf() >= from.date.valueOf()) ? 'disabled' : '';
# }
# }).on('changeDate', function (ev) {
# // to.hide();
# }).data('datepicker');
# }
# ~;
# }
} #------------------------------------------------------------------------------------------
# sub common_min_form_datepicker {
# my ($field,$val) = @_ ;
# my $ucfirst_field = ucfirst $field ;
# my $print_field = &common_min_print_field($field) ;
# my $row = qq(<div class="row">
# <div class="fieldname col-md-$lcol"><label class="control-label" for="datepicker$ucfirst_field">$print_field $req_glyph{$field} $info_glyph_tooltip{$field}</label></div>
# <div class="col-md-$fcol">
# <div class="control-group">
# <div style="margin:2px 0 2px 0;" class="input-group controls input-append date" data-date="$val" id="datetimepicker$ucfirst_field">
# <input style="margin:0;" data-format="yyyy-MM-dd hh:mm:ss" class="form-control" name="$field" value="$val" READONLY tabindex="2">
# <span class="input-group-addon add-on">
# <i data-time-icon="icon-time" data-date-icon="icon-calendar">
# </i>
# </span>
# </div>
# </div>
# </div>
# </div>) ;
# $trigger_jquery_raw .= qq(\$('#datetimepicker$ucfirst_field').datetimepicker({language: 'pt-BR'}); ) ;
# # $trigger_jquery_raw .= qq(
# # \$('#datepicker$ucfirst_field').datepicker({
# # format: "yyyy-mm-dd"}).on('changeDate', function (ev) {
# # \$('.datepicker').hide();
# # }) ;
# # ) ;
# return ($row) ;
# } #------------------------------------------------------------------------------------------
sub common_min_form_timepicker_col {
my ( $ field , $ val , $ diff ) = @ _ ;
$ diff = 10 unless $ diff ;
my $ ucfirst_field = ucfirst $ field ;
my $ print_field = ( $ preferred_title { $ field } ) ? $ preferred_title { $ field } : & common_min_print_field ( $ field ) ;
$ tindex + + ;
my $ row = qq ~
< div class = "col-md-$fcol" >
< div class = "control-group" >
< div style = "margin: 2px 0 2px 0;$custom_style{$field}" class = "input-group controls input-append date" data - date = "$val" id = "timepicker$ucfirst_field" >
< input style = "margin: 0;" data - format = "hh:mm:ss" class = "form-control" name = "$field" READONLY value = "$val" tabindex = "$tindex" >
< span class = "input-group-addon add-on" >
< i data - time - icon = "icon-time" data - date - icon = "icon-calendar" > </i>
</span>
</div>
</div>
</div>
~ ;
$ trigger_jquery_raw . = qq( \ $ ( '#timepicker$ucfirst_field' ) .datetimepicker ( {language:'pt-BR',pickDate:false} ) ; ) ;
return $ row ;
} #------------------------------------------------------------------------------------------
# # sub common_min_form_radio_col {
# # my ($field,$val,$opts) = @_ ;
# # my $ucfirst_field = ucfirst $field ;
# # my $print_field = &common_min_print_field($field) ; if ($preferred_title{$field}) { $print_field = $preferred_title{$field} ; }
# # my @opts = split(/\+/,$radio_opts{$field}); my $cnt = 0 ;
# # foreach (@opts) {
# # my $value = $_ ; $value = lc $value ; $value =~ s/ /\_/g ; $cnt++ ;
# # if ($value eq $val) { $checked = 'CHECKED'; } else { $checked = ''; }
# # $print_radios .= qq~<div class="fieldname col-md-$fcol"><input type="radio" name="$field" id="radio_$cnt" value="$value" $checked><span style="font-size:95%;"> $_</span></div>~ ; #### WHY NOT class="radio col-md-$fcol" ?????????????
# # }
# # my $row = qq~<div class="fieldname col-md-$lcol">
# # <label class="control-label" for="radio$ucfirst_field">$print_field</label>
# # <input name="selected_$field" id="selected_$field" value="" style="display:none;">
# # </div>
# # $print_radios~ ;
# # for (1 .. $cnt) {
# # $trigger_jquery_raw .= qq~
# # \$("#radio_$_").change(function () {
# # if(\$(this).is(":checked")) {
# # let sel_val = \$("#radio_$_").val() ;
# # console.log("sel_val : "+sel_val) ;
# # \$("#selected_$field").val(sel_val) ;
# # }
# # }) ;
# # ~ ;
# # }
# # return ($row) ;
# # } #------------------------------------------------------------------------------------------
sub common_min_form_radio_col {
my ( $ field , $ val , $ opts , $ columns , $ nr_of_columns_to_display , $ radio_row_id , $ row_cnt , $ display_horizontally ) = @ _ ;
# my $print_field = &common_min_print_field($field) ; if ($preferred_title{$field}) { $print_field = $preferred_title{$field} ; }
$ nr_of_columns_to_display = $ columns unless $ nr_of_columns_to_display ;
$ row_cnt = 1 unless $ row_cnt ;
my % display = ( ) ;
for ( $ nr_of_columns_to_display + 1 .. 10 ) {
$ display { $ _ } = qq~style="display:none;"~ ;
}
$ display { row } = qq~style="display:none;"~ if $ nr_of_columns_to_display < 0 ; ## HIDE SECOND ROW BY DEFAULT
my @ default_checked = split ( /\;/ , $ val ) ; my $ print_radios = qq~~ ; my @ opts = split ( /\+/ , $ radio_opts { $ field } ) ; my $ cnt = 0 ; my $ ucfirst_field = ucfirst $ field ;
$ print_radios . = qq~<div class="row" id="$row_id" $display{row}>~ if $ display_horizontally ;
foreach my $ option ( @ opts ) {
2026-02-03 12:35:43 +00:00
2025-11-26 09:31:54 +00:00
$ cnt + + ;
my $ row_id = ( $ radio_row_id ) ? "$radio_row_id\_$cnt" : "" ;
# my $print_field = ucfirst $option;
$ print_radios . = qq~<div class="row" id="$row_id" $display{row}>~ unless $ display_horizontally ;
my $ align = qq~align='right'~ if $ display_horizontally ;
$ print_radios . = qq ~
< div class = "fieldname col-md-$lcol" $ align >
< label class = "control-label" for = "radio$ucfirst_field" > $ option </label>
</div> ~ ;
for ( 1 .. $ columns ) {
my $ value = $ option ; $ value = lc $ value ; $ value =~ s/ /\_/g ;
my $ radio_nr = ( $ display_horizontally ) ? $ display_horizontally : ( $ row_cnt * $ columns - $ columns ) + $ _ ;
2026-02-03 12:35:43 +00:00
# print "\n value : $value eq default_checked : $default_checked[$radio_nr - 1]" if $useropts{it}{$username} ;
2025-11-26 09:31:54 +00:00
if ( $ value eq $ default_checked [ $ radio_nr - 1 ] ) { $ checked = 'CHECKED' ; } else { $ checked = '' ; }
$ print_radios . = qq~<input name="selected_$radio_nr\_$field" id="selected_$radio_nr\_$field" value="" style="display:none;">~ if $ cnt == 1 ;
$ print_radios . = qq ~
< div class = "fieldname col-md-$fcol" >
< input type = "radio" name = "$field\_$radio_nr" id = "radio_$radio_nr\_$cnt" value = "$cnt" $ checked $ display { $ _ } >
</div>
~ ;
}
$ print_radios . = qq ~
</div>
~ unless $ display_horizontally ; #### WHY NOT class="radio col-md-$fcol" ?????????????
}
$ print_radios . = qq ~
</div>
~ if $ display_horizontally ;
my $ row = qq~$print_radios~ ;
my @ radio_ids = ( ) ; my $ radio_to_selected = qq~~ ;
for my $ option_cnt ( 1 .. $ cnt ) {
for ( 1 .. $ columns ) {
push @ radio_ids , "#radio_$_\_$option_cnt" ;
$ radio_to_selected . = qq~"radio_$_\_$option_cnt":"selected_$_\_$option_cnt",~ ;
}
}
chop $ radio_to_selected if $ radio_to_selected ;
my $ radio_ids_string = join ( "," , @ radio_ids ) ;
$ trigger_jquery_raw . = qq ~
\ $( "$radio_ids_string" ) . change ( function ( ) {
if ( \ $ ( this ) . is ( ":checked" ) ) {
const id = this . id ;
const radio_to_selected = { $ radio_to_selected } ;
let sel_val = \ $ ( this ) . val ( ) ;
// console . log ( "sel_val : " + sel_val ) ;
\ $( "#" + radio_to_selected [ id ] ) . val ( sel_val ) ;
}
} ) ;
~ ;
return ( $ row ) ;
} #------------------------------------------------------------------------------------------
sub common_min_print_field {
my ( $ txt ) = @ _ ;
if ( ( $ testing == 1 ) and ( $ username eq 'rory' ) ) { return ( $ txt ) ; }
if ( $ addid { $ txt } ) { $ addtxt = ' ID' ; } else { $ addtxt = '' ; }
$ txt =~ s/\_id/ /gi ;
@ strings = split ( /\_/ , $ txt ) ;
@ strings_ucf = map ( ucfirst , map ( lc , @ strings ) ) ;
$ txt = join ( ' ' , @ strings_ucf ) ;
$ txt . = $ addtxt ;
return ( $ txt ) ;
} #------------------------------------------------------------------------------------------
sub common_min_table {
my ( $ id , $ page , $ list , $ sort_col , $ do_not_auto_sort_table ) = @ _ ;
unless ( $ sort_col ) { $ sort_col = 0 ; } if ( $ fnsortcol ) { $ sort_col = $ fnsortcol ; }
my $ sort_order = ( $ do_not_auto_sort_table ) ? '' : 'desc' ; if ( $ fnsortorder ) { $ sort_order = $ fnsortorder ; }
$ print_box_content_rows . = qq ~
< table id = "itv-table" class = "table table-striped table-bordered bootstrap-datatable datatable responsive" >
$ print_thead
<tbody>
$ print_tbody
</tbody>
</table> ~ ;
if ( $ list ) { $ trigger_jquery . = qq~var oTable = \$('#itv-table').dataTable(); oTable.fnSort( [ [$sort_col,'$sort_order'] ] );~ ; }
& common_min_footer ( $ id , $ page ) ;
} #------------------------------------------------------------------------------------------
sub common_min_footer {
my ( $ id , $ page ) = @ _ ;
if ( $ uniq_id ) { $ id = $ uniq_id ; }
$ print_footer_jscript = qq(
<script>
function viewMinItem ( id )
{
document . view_min_form . $ id . value = id ;
\ $( '#view-min-form' ) . submit ( ) ;
}
function editMinItem ( id , page )
{
document . edit_min_form . $ id . value = id ;
if ( page && typeof page != 'undefined' ) { \ $( '#edit-min-form' ) . attr ( 'action' , 'edit-' + page ) ; }
\ $( '#edit-min-form' ) . submit ( ) ;
}
function copyMinItem ( id )
{
document . copy_min_form . $ id . value = id ;
\ $( '#copy-min-form' ) . submit ( ) ;
}
function deleteMinItem ( name , id )
{
BootstrapDialog . confirm ( {
title: 'Confirm Delete' ,
message: 'Are you sure you want to delete <strong>' + name + '</strong>?' ,
type: BootstrapDialog . TYPE_DANGER , // < - - Default value is BootstrapDialog . TYPE_PRIMARY < - - Default value is BootstrapDialog . TYPE_WARNING
callback: function ( result ) {
if ( result ) {
document . delete_min_form . $ id . value = id ;
\ $( '#delete-min-form' ) . submit ( ) ;
}
}
} ) ;
}
</script> ) ;
if ( $ page && $ ENV { SCRIPT_NAME } =~ /\_test/ ) { $ page . = '-test' ; }
if ( $ page ) { $ action_delete = qq( delete-$page ) ; $ action_edit = qq( edit-$page ) ; $ action_view = qq( view-$page ) ; $ action_copy = qq( copy-$page ) ; } else { $ action_delete = '' ; $ action_edit = '' ; $ action_view = '' ; $ action_copy = '' ; }
if ( $ blank_action ) { $ action_delete = '' ; $ action_edit = '' ; $ action_view = '' ; $ action_copy = '' ; }
$ print_footer_forms . = qq ~
< form name = "delete_min_form" id = "delete-min-form" action = "$action_delete" method = "post" >
< input type = "hidden" name = "iaction" value = "delete" >
< input type = "hidden" name = "$id" value = "" >
</form>
< form name = "edit_min_form" id = "edit-min-form" action = "$action_edit" $ open_new_tab method = "post" >
< input type = "hidden" name = "iaction" value = "edit" >
< input type = "hidden" name = "$id" value = "" >
$ extra_edit_hidden_inputs
</form>
< form name = "view_min_form" id = "view-min-form" action = "$action_view" $ open_new_tab method = "post" >
< input type = "hidden" name = "iaction" value = "view" >
< input type = "hidden" name = "$id" value = "" >
</form>
< form name = "copy_min_form" id = "copy-min-form" action = "$action_copy" $ open_new_tab method = "post" >
< input type = "hidden" name = "iaction" value = "copy" >
< input type = "hidden" name = "$id" value = "" >
$ extra_edit_hidden_inputs
</form>
~ ;
} #------------------------------------------------------------------------------------------
# sub common_min_select_opts {
# my ($field,$table,$valfield,$fid,$required,$addfield,$where) = @_ ;
# $select{$field} = 1 ;
# if ($required) { $required{$field} = 1 ; }
# &db_min_ro($table,'*',$where,'','') ;
# foreach my $id (keys %{$db{$table}}) {
# if ($fid == $id) { $selected = 'selected="selected"'; } else { $selected = ''; }
# # &common_min_debug("common_min_select_opts - $fid == $id [$valfield] [$table] [$db{$table}{$id}{$valfield}] [[$table][$id][$valfield]]") ;
# if ($db{$table}{$id}{$addfield}) { $disp_addfield = " ($db{$table}{$id}{$addfield})" ; } else { $disp_addfield = '' ; }
# if ($extra{$table}{$id}{$addfield}) { $disp_addfield = " $extra{$table}{$id}{$addfield}" ; } else { $disp_addfield = '' ; }
# $opts{$field} .= qq(<option value="$id" $selected>$db{$table}{$id}{$valfield}$disp_addfield</option>) ;
# }
# } #------------------------------------------------------------------------------------------
sub common_min_select_opts {
my ( $ field , $ table , $ dispfield , $ fid , $ required , $ addfield , $ where , $ valfield , $ addmore , $ select , $ order_dropdown ) = @ _ ;
$ select { $ field } = 1 ;
my $ val = '' ;
# $select = '*' unless $select;
unless ( $ select ) { $ select = '*' ; }
# &common_min_debug("common_min_select_opts:$field,$table,$dispfield,$fid,$required,$addfield,$where,$valfield,$addmore,$select") ;
if ( $ required ) { $ required { $ field } = 1 ; }
# if ($dispfield){
# my $orderby = "' $dispfield '" ;
# } else {
# my $orderby = ' id DESC ' ;
# }
my $ orderby = ( $ dispfield ) ? "' $dispfield '" : ' id DESC' ;
& db_min_ro ( $ table , $ select , $ where , $ orderby , '' ) ;
$ order_dropdown = $ dispfield if $ dispfield and not $ order_dropdown ;
unless ( $ order_dropdown ) {
foreach my $ id ( keys % { $ db { $ table } } ) {
foreach ( keys % { $ db { $ table } { $ id } } ) {
$ order_dropdown = $ _ ;
last ;
}
last ;
}
}
foreach my $ id ( sort { $ db { $ table } { $ a } { $ order_dropdown } cmp $ db { $ table } { $ b } { $ order_dropdown } } keys % { $ db { $ table } } ) {
$ selected = ( $ fid && ( $ fid eq $ db { $ table } { $ id } { $ valfield } || $ fid == $ id ) ) ? 'SELECTED' : '' ;
# if ($table eq 'regions') { &common_debug("$selected = ($fid and ($fid eq $db{$table}{$id}{$valfield} || $fid == $id)) ? 'SELECTED' : '' ;") ; }
if ( $ db { $ table } { $ id } { $ addfield } && $ db { $ table } { $ id } { $ dispfield } ne $ db { $ table } { $ id } { $ addfield } ) { $ disp_addfield = " [$db{$table}{$id}{$addfield}]" ; } else { $ disp_addfield = '' ; }
my $ disp_addmore = '' ;
if ( $ display_addmore { $ table } { $ addmore } ) {
my $ glyph = '' ;
if ( $ db { $ table } { $ id } { $ addmore } == 1 ) {
# $glyph = qq(<i class="glyphicons glyphicons-tick"></i>);
$ disp_addmore = " - $addmore" ;
}
}
if ( $ valfield ) { $ val = $ db { $ table } { $ id } { $ valfield } ; } else { $ val = $ id ; }
# if ($table eq 'regions') { &common_debug("filter_select_opts = $filter_select_opts{$table}, filter_val = $filter_val{$table}{$val} [$val] valfield=$valfield") ; }
if ( $ filter_select_opts { $ table } == 1 ) {
next unless $ filter_val { $ table } { $ val } == 1 ;
}
# if ($table eq 'countries') { &common_debug("$field : [$val] $db{$table}{$id}{$dispfield}$disp_addfield$disp_addmore") ; }
# &common_debug("table=$table, id=$id, val=$val, dispfield=$dispfield [$db{$table}{$id}{$dispfield}]") ;
$ opts { $ field } . = qq~<option value="$val" $selected $selected_multi{$val}>$db{$table}{$id}{$dispfield}$disp_addfield$disp_addmore</option>~ ;
}
} #------------------------------------------------------------------------------------------
sub common_min_box_top {
my ( $ glyphicon , $ title , $ bgcolor , $ boxicon , $ chevronid ) = @ _ ;
# f5af19
if ( $ bgcolor ) { $ box_header_style = qq~style="background:#$bgcolor;color:#ffffff;"~ ; } else { $ box_header_style = '' ; }
if ( $ chevronid ) { $ box_chevron_id = qq~id="$chevronid"~ ; } else { $ box_chevron_id = '' ; }
my $ box = qq~<div class='row'><div class="box col-md-12"><div class="box-inner"><div class="box-header well" data-original-title="" $box_header_style><h2><i class="glyphicon glyphicon-$glyphicon"></i> $title</h2><div class="box-icon">$boxicon<a href="#" class="btn btn-minimize btn-round btn-default"><i class="glyphicon glyphicon-chevron-up" $box_chevron_id></i></a></div></div><div class="box-content">~ ;
return ( $ box ) ;
} #------------------------------------------------------------------------------------------
sub common_min_box_foot {
my $ box = qq( </div></div></div></div> ) ;
return ( $ box ) ;
} #------------------------------------------------------------------------------------------
sub common_min_extra_crumb {
my ( $ crumb_url , $ crumb_txt ) = @ _ ;
$ crumb_txt =~ s/\-/ /g ; my @ crumbs = split ( / / , $ crumb_txt ) ; my @ crumbs_ucf = map ucfirst , @ crumbs ; $ crumb_txt = join ( ' ' , @ crumbs_ucf ) ;
$ insert_crumbs . = qq( <li><a href="$useropts{'folder'}/$crumb_url">$crumb_txt</a></li> ) ;
& config_set_breadcrumbs ;
} #------------------------------------------------------------------------------------------
sub common_min_dialog {
$ dialog { 'common' } { 'head' } = qq( <!DOCTYPE html>
< html lang = "en" >
<head>
< meta charset = "utf-8" >
<title> $ useropts { title } </title>
< meta name = "viewport" content = "width=device-width, initial-scale=1" >
< link href = "$useropts{'css'}/bootstrap-datetimepicker.min.css" rel = 'stylesheet' >
< link href = "$useropts{'css'}/bootstrap-itv.min.css" rel = "stylesheet" >
< link href = "$useropts{'css'}/custom-itv.css" rel = "stylesheet" >
< link href = "$useropts{'css'}/charisma-app.css" rel = "stylesheet" >
< link href = "$useropts{'bower_components'}/chosen/chosen.min.css" rel = 'stylesheet' >
< link href = "$useropts{'bower_components'}/colorbox/example3/colorbox.css" rel = 'stylesheet' >
< link href = "$useropts{'bower_components'}/responsive-tables/responsive-tables.css" rel = 'stylesheet' >
< link href = "$useropts{'css'}/elfinder.min.css" rel = 'stylesheet' >
< link href = "$useropts{'css'}/elfinder.theme.css" rel = 'stylesheet' >
< link href = "$useropts{'css'}/jquery.iphone.toggle.css" rel = 'stylesheet' >
< script src = "$useropts{'bower_components'}/jquery/jquery.min.js" > </script>
$ extra_dialog_js
< ! - - The HTML5 shim , for IE6 - 8 support of HTML5 elements - - >
< ! - - [ if lt IE 9 ] >
< script src = "http://html5shim.googlecode.com/svn/trunk/html5.js" > </script>
<![endif]-->
<style>
$ useropts { 'common' } { 'css' }
</style>
</head>
<body> ) ;
# table>thead>tr>th, .table>thead>tr>th, table>tbody>tr>th, .table>tbody>tr>th, table>tfoot>tr>th, .table>tfoot>tr>th, table>thead>tr>td, .table>thead>tr>td, table>tbody>tr>td, .table>tbody>tr>td, table>tfoot>tr>td, .table>tfoot>tr>td { border: 1px solid black; }
# .table>caption+thead>tr:first-child>th, .table>colgroup+thead>tr:first-child>th, .table>thead:first-child>tr:first-child>th, .table>caption+thead>tr:first-child>td, .table>colgroup+thead>tr:first-child>td, .table>thead:first-child>tr:first-child>td { border-top: 1px solid black; }
$ dialog { 'common' } { 'js' } = qq( <script src="$useropts{'bower_components'}/bootstrap/dist/js/bootstrap.min.js"></script>
< ! - - library for cookie management - - >
< script src = "$useropts{'js'}/jquery.cookie.js" > </script>
< ! - - calender plugin - - >
< script src = "$useropts{'bower_components'}/moment/min/moment.min.js" > </script>
< ! - - data table plugin - - >
< script src = "$useropts{'js'}/jquery.dataTables.min.js" > </script>
< ! - - select or dropdown enhancer - - >
< script src = "$useropts{'bower_components'}/chosen/chosen.jquery.min.js" > </script>
< ! - - plugin for gallery image view - - >
< script src = "$useropts{'bower_components'}/colorbox/jquery.colorbox-min.js" > </script>
< ! - - notification plugin - - >
< script src = "$useropts{'js'}/jquery.noty.js" > </script>
< ! - - library for making tables responsive - - >
< script src = "$useropts{'bower_components'}/responsive-tables/responsive-tables.js" > </script>
< ! - - tour plugin - - >
< script src = "$useropts{'bower_components'}/bootstrap-tour/build/js/bootstrap-tour.min.js" > </script>
< ! - - star rating plugin - - >
< script src = "$useropts{'js'}/jquery.raty.min.js" > </script>
< ! - - for iOS style toggle switch - - >
< script src = "$useropts{'js'}/jquery.iphone.toggle.js" > </script>
< ! - - autogrowing textarea plugin - - >
< script src = "$useropts{'js'}/jquery.autogrow-textarea.js" > </script>
< ! - - multiple file upload plugin - - >
< script src = "$useropts{'js'}/jquery.uploadify-3.1.min.js" > </script>
< ! - - history . js for cross - browser state change on ajax - - >
< script src = "$useropts{'js'}/jquery.history.js" > </script>
< ! - - application script for Charisma demo - - >
< script src = "$useropts{'js'}/charisma.js" > </script>
< ! - - application script for bootstrap dialog customisation - - >
< script src = "$useropts{'js'}/bootstrap-datetimepicker.min.js" > </script>
< script src = "$useropts{'js'}/jquery.form-validator.min.js" > </script>
< script src = "$useropts{'js'}/bootstrap-dialog.js" > </script>
) ;
} #------------------------------------------------------------------------------------
sub common_min_commify {
local ( $ _ ) = shift ;
1 while s/^(-?\d+)(\d{3})/$1,$2/ ;
return $ _ ;
} #-------------------------------------------------------------------------------
sub common_min_debug {
my ( $ msg ) = @ _ ;
unless ( $ username eq 'rory' ) { return ; }
unless ( ( $ testing == 1 ) or ( $ debug == 1 ) ) { return ; }
print "\n" . $ msg ;
} #------------------------------------------------------------------------------------------
sub common_min_action {
if ( $ iaction eq 'add' ) {
& common_min_add_screen ;
& common_min_screen1 ;
}
if ( $ iaction eq 'list' or $ iaction eq 'detailed' or $ iaction eq 'summary' or $ iaction eq 'accepted' or $ iaction eq 'pending' or $ iaction eq 'closed' or $ iaction eq 'all' or $ iaction eq 'open' or $ iaction eq 'active' ) {
& list_screen ;
& common_min_screen3 ;
}
if ( $ iaction eq 'display' ) {
& list_screen ;
& common_min_screen3 ;
}
if ( $ iaction eq 'view' ) {
& common_min_load_params ;
& common_min_view_screen ;
& common_min_screen1 ;
}
if ( $ iaction eq 'edit' ) {
& common_min_load_params ;
& common_min_edit_screen ;
& common_min_screen1 ;
}
if ( $ iaction eq 'save' ) {
& common_min_load_params ;
& validate ;
& insert ;
& common_min_screen2 ;
}
if ( $ iaction eq 'update' ) {
& common_min_load_params ;
& update ;
& common_min_screen2 ;
}
if ( $ iaction eq 'delete' ) {
& common_min_load_params ;
& common_min_delete ;
& common_min_screen2 ;
}
if ( $ iaction eq 'copy' ) {
& common_min_load_params ;
& duplicate ; ### Will cause error if using use File::Copy;, do not use sub copy { .. } ...
& common_min_edit_screen ;
& common_min_screen1 ;
}
if ( $ iaction eq 'search' ) {
$ srchscr = 1 ;
& report_screen ;
}
if ( $ iaction eq 'filter' ) {
$ srchscr = 1 ;
& filter_screen ;
}
if ( $ iaction eq 'report' ) {
& common_min_load_params ;
& report_ifields ;
& list_screen ;
& common_min_screen3 ;
}
} #------------------------------------------------------------------------------------------
sub common_min_add_screen {
& add_screen ;
% col_name = ( ) ;
my $ dbid = 'id' ; if ( $ uniq_id ) { $ dbid = $ uniq_id ; }
& db_min_ro ( $ table , '*' , "$dbid > 0 AND $dbid < 10" , '' , '' ) ;
$ page_title = 'Add' ;
& add_db_fields ;
unless ( $ double_box_layout ) { $ print_box_content_rows = & common_min_add_form ( $ table , 'save' ) ; }
} #------------------------------------------------------------------------------------------
sub common_min_error_screen {
$ page_title = ( $ iaction eq 'save' ) ? 'Add' : "Edit $i{id}" ;
foreach ( keys % i ) { $ db { $ table } { '' } { $ _ } = $ i { $ _ } ; } # reset other fields after &db_common_ro($table,'*','','id DESC',1) ; ## ALSO CHECK THAT THIS INCLUDES ALL THE FIELD IN ON SCREEN!!!
& add_screen ; # must occur before %col_name set to blank otherwise will include all previous columns
% col_name = ( ) ;
& add_db_fields ;
unless ( $ double_box_layout ) { $ print_box_content_rows = & common_min_add_form ( $ table , 'save' ) ; }
} #------------------------------------------------------------------------------------------
sub common_min_edit_screen {
my $ dbid = 'id' ; if ( $ uniq_id ) { $ dbid = $ uniq_id ; }
unless ( $ i { $ dbid } ) { $ warning = uc "NO $dbid" ; return ; }
& db_min_ro ( $ table , '*' , "`$dbid`='$i{$dbid}'" , '' , '' ) ;
$ page_title = 'Edit' ;
$ page_title . = " : $i{$dbid}" ;
& edit_db_fields ;
& edit_screen ;
unless ( $ double_box_layout ) { $ print_box_content_rows = & common_min_edit_form ( $ i { $ dbid } , $ table , 'update' ) ; }
} #------------------------------------------------------------------------------------------
sub common_min_view_screen {
my $ dbid = 'id' ; if ( $ uniq_id ) { $ dbid = $ uniq_id ; }
unless ( $ i { $ dbid } ) { $ warning = uc "NO $dbid" ; return ; }
& db_min_ro ( $ table , '*' , "`$dbid`='$i{$dbid}'" , '' , '' ) ;
$ page_title = 'View' ;
$ page_title . = " : $i{$dbid}" ;
& view_db_fields ;
& view_screen ( $ i { $ dbid } ) ;
} #------------------------------------------------------------------------------------------
sub common_min_delete {
my $ dbid = 'id' ; if ( $ uniq_id ) { $ dbid = $ uniq_id ; }
unless ( $ i { $ dbid } ) { $ error = uc "NO $dbid" ; return ; }
& db_min_delete ( $ table , "$dbid='$i{$dbid}'" ) ;
} #------------------------------------------------------------------------------------------
sub common_min_search_screen {
& thead ;
& common_min_alert_type ;
require _blank ;
exit ;
} #------------------------------------------------------------------------------------------
sub common_min_thead {
$ print_thead = qq( <THEAD><TR> ) ;
foreach ( @ sql_col_display ) {
my $ coltitle = $ _ ; $ coltitle =~ s/\_id//g ; $ coltitle =~ s/\_/ /g ; $ coltitle = uc $ coltitle ; $ coltitle = $ replace_blank_table_top_right if $ coltitle eq '' and $ replace_blank_table_top_right ;
# $custom_column_styles{$_} = qq~style="min-width:120px;"~ unless $custom_column_styles{$_} ;
$ print_thead . = qq( <TH class="dt-center" $custom_column_styles{$_}>$coltitle</TH> ) ;
}
if ( $ add_th_row ) { $ print_thead . = $ add_th_row ; } # used in agent_commission_report.pl and cruiseline_commission_report.pl
$ print_thead . = qq( </TR></THEAD> ) ;
} #-------------------------------------------------------------------------------
sub common_min_split_sql_date_time {
my ( $ datetime ) = @ _ ;
my ( $ date , $ time ) = split ( / / , $ datetime ) ;
my $ dy = substr ( $ date , 0 , 4 ) ;
my $ dm = substr ( $ date , 5 , 2 ) ;
my $ dd = substr ( $ date , 8 , 2 ) ;
my ( $ th , $ tm , $ ts ) = split ( /:/ , $ time ) ;
return ( $ dy , $ dm , $ dd , $ th , $ tm , $ ts ) ;
} #-------------------------------------------------------------------------------
sub common_min_convert_sql_date_time {
my ( $ datetime ) = @ _ ;
my ( $ date , $ time ) = split ( / / , $ datetime ) ;
my $ dy = substr ( $ date , 0 , 4 ) ;
my $ dm = substr ( $ date , 5 , 2 ) ;
my $ dd = substr ( $ date , 8 , 2 ) ;
my ( $ th , $ tm , $ ts ) = split ( /:/ , $ time ) ;
my $ return = "$dy$dm$dd" ; if ( $ time ) { $ return . = "$th$tm$ts" ; }
return ( $ return ) ;
} #-------------------------------------------------------------------------------
sub common_min_restriction_super {
unless ( $ useropts { super } { lc $ username } ) { print "This page is restricted!" ; exit ; }
} #-------------------------------------------------------------------------------
sub common_min_add_extras {
my $ page = "$lcpage\s" ; if ( $ s { no } ) { $ page = $ lcpage ; }
$ box_icon = qq( <div class="box-icon"><a class="btn btn-default btn-round" href="/add-$page" style="padding-top:1px;"><i class="glyphicon glyphicon-plus icon-white"></i></a></div> ) ;
$ useropts { 'common' } { 'css' } . = qq( .box-icon a i { top:1px; } .iPhoneCheckContainer { margin:2px 0 2px 0; } .iPhoneCheckContainer label { font-size: 14px; line-height: 14px; padding-top:7px; } .iPhoneCheckLabelOff { padding-right:5px; } ) ;
# $extra_css .= qq~<link href="$useropts{'css'}/custom-itv.css" rel="stylesheet">~ ;
} #------------------------------------------------------------------------------------------
sub common_min_add_box_icon {
my $ page = "$lcpage\s" ; if ( $ s { no } ) { $ page = $ lcpage ; }
$ box_icon = qq( <div class="box-icon"><a class="btn btn-default btn-round" href="/add-$page" style="padding-top:1px;"><i class="glyphicon glyphicon-plus icon-white"></i></a></div> ) ;
} #------------------------------------------------------------------------------------------
sub common_min_screen1 {
& thead ;
& common_min_alert_type ;
my $ page = "$lcpage\s" ; if ( $ s { no } ) { $ page = $ lcpage ; }
my $ ucfpage = "$ucfirstpage\s" ; if ( $ s { no } ) { $ ucfpage = $ ucfirstpage ; }
unless ( $ redirtype ) { $ redirtype = 'list' ; } my $ pname = ucfirst $ redirtype ;
& common_min_extra_crumb ( "$redirtype-$page" , "$pname $ucfpage" ) ;
# &common_min_extra_crumb("list-$page","List $ucfpage") ;
if ( $ cust_cols or $ double_box_layout ) {
require _blank_3 ;
}
else
{
require _blank ;
}
exit ;
} #------------------------------------------------------------------------------------------
sub common_min_screen2 {
my $ page = "$lcpage\s" ; if ( $ s { no } ) { $ page = $ lcpage ; }
unless ( $ redirsave ) { $ redirsave = 'list' ; }
# unless ($redirsave) { $redirsave = 'edit' ; }
if ( $ i { id } and $ iaction ne 'delete' ) {
& common_min_edit_screen ;
& common_min_screen1 ;
# $input_hidden_id = qq~<input type="hidden" name="id" value="$i{id}">~ ;
}
# # if ($i{id} && $redirsave eq 'edit') {
# if ($redirsave eq 'edit') {
# $input_hidden_id = qq~<input type="hidden" name="id" value="$i{id}">~ ;
# }
# my $doc_ready_jquery = qq~\$(document).ready(function(){ \$('#$redirsave-form').submit(); })~ unless $username eq 'rory' ;
my $ form_name = $ redirsave . 'form' ;
& common_min_alert_type ;
print << ENDOFTEXT ;
< ! DOCTYPE html >
< html lang = "en" >
<head>
< meta charset = "utf-8" >
<title> $ useropts { title } </title>
< script src = "$useropts{'bower_components'}/jquery/jquery.min.js" > </script>
</head>
<body>
<script>
\ $ ( document ) . ready ( function ( ) { \ $( '#$redirsave-form' ) . submit ( ) ; } )
</script>
</body>
< form role = "form" name = "$form_name" id = "$redirsave-form" method = "post" action = "$redirsave-$page" >
< input type = "hidden" name = "iaction" value = "$redirsave" >
< input type = "hidden" name = "isaved" value = "$success" >
$ input_hidden_id
</form>
</html>
ENDOFTEXT
#
exit ;
} #------------------------------------------------------------------------------------------
sub common_min_screen3 {
& thead ;
if ( $ isaved ) { $ alert = & common_min_alert ( 'success' , "$ucpage $isaved!" , 'ok' ) ; } else { & common_min_alert_type ; }
my $ page = "$lcpage\s" ; if ( $ s { no } ) { $ page = $ lcpage ; }
& common_min_table ( 'id' , $ page , 'list' ) ;
# &common_min_extra_crumb("manage-$lcpage\s","Manage $ucfirstpage\s") ;
require _blank ;
exit ;
} #------------------------------------------------------------------------------------------
sub common_min_opts {
my ( $ whichone , $ field , $ deselect ) = @ _ ;
if ( $ whichone eq 'leave_type' ) {
$ required { $ field } = 1 ;
$ select { $ field } = 1 ;
$ opts { $ field } = qq( <option value="annual" $selected{$field}{'annual'}>Annual</option>
< option value = "compassionate" $ selected { $ field } { 'compassionate' } > Compassionate </option>
< option value = "maternity" $ selected { $ field } { 'maternity' } > Maternity </option>
< option value = "sick" $ selected { $ field } { 'sick' } > Sick </option>
) ;
}
my $ ucfirst_field = ucfirst $ field ;
if ( $ deselect ) {
$ trigger_jquery_raw . = qq( \ $ ( "#select$ucfirst_field" ) .chosen ( { allow_single_deselect:true } ) ; ) ;
}
} #------------------------------------------------------------------------------------------
sub common_min_dialog_load_screen {
& dialog_common ;
print << ENDOFTEXT ;
$ dialog { 'common' } { 'head' }
< div id = "content" class = "col-lg-12 col-sm-12" >
< ! - - content starts - - >
$ alert
< div class = "row" >
< div class = "box col-md-12" >
< div class = "box-inner" >
< div class = "box-content" >
$ print_box_content_rows
</div>
</div>
</div>
</div> <!--/row-->
</div> <!--/fluid-row-->
</div> <!--/.fluid-container-->
< ! - - external javascript - - >
< script src = "$useropts{'bower_components'}/chosen/chosen.jquery.min.js" > </script>
< script src = "$useropts{'bower_components'}/bootstrap/dist/js/bootstrap.min.js" > </script>
< script src = "$useropts{'js'}/jquery.form-validator.min.js" > </script>
<script>
\ $ . validate ( ) ;
$ trigger_jquery_raw
</script>
</body>
</html>
ENDOFTEXT
#
exit ;
} #------------------------------------------------------------------------------------------
sub common_min_dialog_save_screen {
print << ENDOFTEXT ;
< ! DOCTYPE html >
< html lang = "en" >
<head>
< meta charset = "utf-8" >
<title> ITV Admin </title>
< script src = "$useropts{'bower_components'}/jquery/jquery.min.js" > </script>
</head>
<body>
<script>
\ $ ( function ( ) {
$ trigger_jquery_raw
} ) ;
</script>
</body>
</html>
ENDOFTEXT
#
exit ;
} #------------------------------------------------------------------------------------------
sub common_min_table_validate_date_inputs_jquery {
my $ date_value_ids_str = join ( "," , @ date_value_ids ) ;
return unless $ date_value_ids_str ;
$ trigger_jquery_raw . = qq ~
function isLeapYear ( year ) {
return ( year % 4 === 0 && year % 100 != = 0 ) || ( year % 400 === 0 ) ;
}
function isValidDate ( dateString ) {
let count_comp = 0 ; let found_non_int = 0 ;
for ( let key in dateString . split ( '-' ) . map ( Number ) ) {
count_comp + + ;
if ( dateString . split ( '-' ) . map ( Number ) [ key ] != parseInt ( dateString . split ( '-' ) . map ( Number ) [ key ] ) ) {
found_non_int = 1 ;
}
}
if ( count_comp != 3 || found_non_int ) {
return false
} else {
return true ;
}
}
\ $( "$date_value_ids_str" ) . change ( function ( ) {
// console . log ( "date_value_ids_str : $date_value_ids_str" ) ;
const dateInput = \ $ ( this ) . val ( ) ;
if ( ! dateInput ) {
return ;
}
let result = "" ;
if ( ! isValidDate ( dateInput ) ) {
result = "Invalid Date Format!!!" ;
}
let [ inputYear , inputMonth , inputDay ] = dateInput . split ( "-" ) . map ( Number ) ;
if ( inputYear > 2100 || inputYear < 2000 ) {
if ( result ) {
result = result + "<br>" ;
}
result = result + "Invalid Year!!!" ;
}
if ( inputMonth < 1 || inputMonth > 12 ) {
if ( result ) {
result = result + "<br>" ;
}
result = result + "Invalid Month!!!" ;
}
const daysInMonth = [ 31 , ( isLeapYear ( inputYear ) ? 29 : 28 ) , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 ] ;
if ( inputDay < 1 || inputDay > daysInMonth [ inputMonth - 1 ] ) {
if ( result ) {
result = result + "<br>" ;
}
result = result + "Invalid Day!!!" ;
}
if ( result ) {
noty ( { text:result , layout: "center" , type: "error" , timeout:3000 } ) ;
} else {
let correct_day_or_month_format = 0 ;
if ( inputMonth > 0 && inputMonth < 10 ) {
inputMonth = inputMonth . toString ( ) ;
inputMonth = inputMonth . padStart ( 2 , '0' ) ;
correct_day_or_month_format = 1 ;
}
if ( inputDay > 0 && inputDay < 10 ) {
inputDay = inputDay . toString ( ) ;
inputDay = inputDay . padStart ( 2 , '0' ) ;
correct_day_or_month_format = 1 ;
}
if ( correct_day_or_month_format ) {
\ $( "#" + this . id ) . val ( inputYear + "-" + inputMonth + "-" + inputDay ) ;
}
}
} ) ;
~ ;
} #------------------------------------------------------------------------------------------
sub common_min_table_update_checkbox_col_default {
my $ default_javascript_by_id_str = join "," , @ default_javascript_by_id ;
if ( $ default_javascript_by_id_str ) {
$ trigger_jquery_raw . = qq ~
let all_def_vals = { $ default_javascript_by_id_str } ;
~ ;
}
} #------------------------------------------------------------------------------------------
sub common_min_table_update_checkbox_col_jquery {
my ( $ nr_of_characters_in_id_to_determine_row , $ content_id , $ update_fields_short_1 , $ update_fields_short_2 ) = @ _ ;
$ content_id = "content" unless $ content_id ;
$ nr_of_characters_in_id_to_determine_row = 1 unless $ nr_of_characters_in_id_to_determine_row ;
my $ jquery_on_change_1 = "" ;
my $ jquery_on_change_2 = "" ;
if ( $ update_fields_short_1 || $ update_fields_short_2 ) {
## NEW WAY
$ jquery_on_change_1 = qq~\$("#$content_id").on("change","$update_fields_short_1", function (event) {~ if $ update_fields_short_1 ; # EXAMPLE: [id^='selectFixture_check_'],[id^='selectStatus_']
$ jquery_on_change_2 = qq~\$("#$content_id").on("changeDate","$update_fields_short_2", function (event) {~ if $ update_fields_short_2 ;
} else {
## OLD WAY
my @ all_update_field_ids_1 = ( ) ; my @ all_update_field_ids_2 = ( ) ;
foreach my $ fields ( @ all_update_field_ids ) {
foreach ( split ( /\,/ , $ fields ) ) {
if ( $ _ =~ /#datepicker/ || $ _ =~ /#datetimepicker/ || $ _ =~ /#timepicker/ ) {
push @ all_update_field_ids_2 , $ _ ;
} else {
push @ all_update_field_ids_1 , $ _ ;
}
}
}
# my $all_update_field_ids_str = join "," , @all_update_field_ids ;
my $ all_update_field_ids_str_1 = join "," , @ all_update_field_ids_1 ;
my $ all_update_field_ids_str_2 = join "," , @ all_update_field_ids_2 ;
$ jquery_on_change_1 = qq~\$("$all_update_field_ids_str_1").change( function (event) {~ if $ all_update_field_ids_str_1 ;
$ jquery_on_change_2 = qq~\$("$all_update_field_ids_str_2").on('changeDate',function() {~ if $ all_update_field_ids_str_2 ;
}
chop $ multi_select_ids if $ multi_select_ids ;
if ( $ jquery_on_change_1 || $ jquery_on_change_2 ) {
$ trigger_jquery_raw . = qq ~
function get_row_nr ( id , nr_of_characters_in_id_to_determine_row ) {
// console . log ( "get_row_nr : " + id ) ;
// console . log ( "nr_of_characters_in_id_to_determine_row : " + nr_of_characters_in_id_to_determine_row ) ;
let lastIndex = id . lastIndexOf ( '_' ) ;
lastIndex = parseInt ( lastIndex ) ;
let row_nr_1 = id . substring ( 1 + lastIndex ) ;
if ( ! nr_of_characters_in_id_to_determine_row || nr_of_characters_in_id_to_determine_row == 1 ) {
return row_nr_1 ;
}
let id_2 = id . substring ( 0 , lastIndex ) ;
lastIndex = id_2 . lastIndexOf ( '_' ) ;
lastIndex = parseInt ( lastIndex ) ;
let row_nr_2 = id_2 . substring ( 1 + lastIndex ) ;
if ( nr_of_characters_in_id_to_determine_row == 2 ) {
return row_nr_2 + "_" + row_nr_1 ;
}
let id_3 = id_2 . substring ( 0 , lastIndex ) ;
lastIndex = id_3 . lastIndexOf ( '_' ) ;
lastIndex = parseInt ( lastIndex ) ;
let row_nr_3 = id_3 . substring ( 1 + lastIndex ) ;
if ( nr_of_characters_in_id_to_determine_row == 3 ) {
// console . log ( "return : " + row_nr_3 + "_" + row_nr_2 + "_" + row_nr_1 ) ;
return row_nr_3 + "_" + row_nr_2 + "_" + row_nr_1 ;
}
}
function check_whether_to_update ( changed_id ) {
let row_nr = get_row_nr ( changed_id ) ;
$ trigger_jquery_raw_default_alt
let nr_of_characters_in_id_to_determine_row = "$nr_of_characters_in_id_to_determine_row" ;
if ( row_nr == "row" ) {
row_nr = "add_row" ;
} else if ( nr_of_characters_in_id_to_determine_row == "2" ) {
// Nothing Yet
row_nr = get_row_nr ( changed_id , 2 ) ;
} else if ( nr_of_characters_in_id_to_determine_row == "3" ) {
row_nr = get_row_nr ( changed_id , 3 ) ;
}
let def_vals = all_def_vals [ row_nr ] ;
console . log ( "changed_id val : " + \ $( "#" + changed_id ) . val ( ) ) ;
let tick_update = 0 ;
let multi_select_ids = { $ multi_select_ids } ;
for ( const id in def_vals ) {
console . log ( "def_vals : " + \ $( "#" + id ) . val ( ) ) ;
if ( ( \ $( "#" + id ) . attr ( 'type' ) == 'radio' && ( \ $( "#" + id ) . is ( ":checked" ) != = ( def_vals [ id ] === "true" ) ) ) || ( id . includes ( 'input[name' ) && def_vals [ id ] != \ $ ( id ) . val ( ) ) ) {
tick_update = 1 ;
} else if ( id . includes ( 'datepicker' ) || id . includes ( 'timepicker' ) ) {
console . log ( "1 tick_update : " + tick_update ) ;
console . log ( "11 def_vals : " + def_vals [ id ] ) ;
console . log ( "22 def_vals : " + \ $( "#" + id ) . data ( "date" ) ) ;
if ( def_vals [ id ] != \ $( "#" + id ) . data ( "date" ) ) {
tick_update = 1 ;
}
console . log ( "2 tick_update : " + tick_update ) ;
} else if ( \ $( "#" + id ) . attr ( 'type' ) == 'checkbox' ) {
if ( ( \ $( "#" + id ) . is ( ":checked" ) != = ( def_vals [ id ] === "true" ) ) || ( ! \ $( "#" + id ) . is ( ":checked" ) != = ( def_vals [ id ] === "false" ) ) ) {
tick_update = 1 ;
}
} else if ( ! multi_select_ids [ id ] && ! id . includes ( 'input[name' ) && \ $( "#" + id ) . attr ( 'type' ) != 'radio' ) {
let sel_val = \ $( "#" + id ) . val ( ) ;
if ( sel_val == null ) {
sel_val = '' ;
}
if ( sel_val != def_vals [ id ] ) {
tick_update = 1 ;
}
} else if ( multi_select_ids [ id ] ) {
let select_multi = \ $( "#" + id ) . chosen ( ) . val ( ) ;
if ( select_multi == null ) { select_multi = "" ; }
if ( select_multi != def_vals [ id ] ) {
tick_update = 1 ;
}
}
}
if ( tick_update && ! \ $( "#checkboxUpdate_" + row_nr ) . is ( ":checked" ) ) {
\ $( "#checkboxUpdate_" + row_nr ) . prop ( "checked" , true ) ;
} else if ( ! tick_update && \ $( "#checkboxUpdate_" + row_nr ) . is ( ":checked" ) ) {
\ $( "#checkboxUpdate_" + row_nr ) . prop ( "checked" , false ) ;
}
}
~ ;
# $trigger_jquery_raw .= ($ids_short) ? qq~
# \$("#$content_id").on("change","$update_fields_short_1", function (event) { // EXAMPLE: [id^='selectFixture_check_'],[id^='selectStatus_']
# event.preventDefault();
# check_whether_to_update(this.id);
# });
# ~ : qq~
# // \$("$all_update_field_ids_str_1").change( function (event) {
# $jquery_on_change_1
# event.preventDefault();
# $trigger_jquery_raw_on_change_1
# check_whether_to_update(this.id) ;
# }) ;
# ~ ;
$ trigger_jquery_raw . = qq ~
$ jquery_on_change_1
event . preventDefault ( ) ;
check_whether_to_update ( this . id ) ;
} ) ;
~ if $ jquery_on_change_1 ;
$ trigger_jquery_raw . = qq ~
$ jquery_on_change_2
$ trigger_jquery_raw_on_change_2
check_whether_to_update ( this . id ) ;
} ) ;
~ if $ jquery_on_change_2 && ! $ no_dates_in_table ;
# unless $no_dates_in_table ;
}
} #------------------------------------------------------------------------------------------
sub common_min_table_update_checkbox_col {
my ( $ nr_of_characters_in_id_to_determine_row , $ content_id , $ ids_short_1 , $ ids_short_2 ) = @ _ ;
& common_min_table_update_checkbox_col_default ;
& common_min_table_update_checkbox_col_jquery ( $ nr_of_characters_in_id_to_determine_row , $ content_id , $ ids_short_1 , $ ids_short_2 ) ;
} #------------------------------------------------------------------------------------------
sub common_min_table_checkbox {
my ( $ field_id , $ default_val , $ only_display_val , $ table_row , $ table_col , $ background_color , $ default_val_is_saved ) = @ _ ;
if ( ! $ only_display_val ) {
my $ ucfirstfield = ( $ ucfirstfield { $ field_id } ) ? $ ucfirstfield { $ field_id } : "checkbox" . ucfirst $ field_id ;
$ val = qq~<input name="$field_id" data-no-uniform="true" type="checkbox" id="$ucfirstfield" value="1" tabindex="$tindex">~ ;
} else {
$ val = qq~<i class="glyphicon glyphicon-remove"></i>~ ;
}
$ val_min = '' ;
return $ val ;
} #------------------------------------------------------------------------------------------
sub common_min_table_textarea {
my ( $ field_id , $ default_val , $ only_display_val , $ table_row , $ table_col , $ background_color , $ default_val_is_saved , $ col_name , $ table_id , $ hide_textarea ) = @ _ ;
$ val = '' ; $ val_min = 'MUSTBEBLANK' ;
$ table_id = "itv-table" unless $ table_id ;
if ( ! $ only_display_val && $ table_col ) {
$ found_editable = 1 ;
# my $print_field = ($preferred_placeholder{$field_id}) ? $preferred_placeholder{$field_id} : &common_min_print_field($field_id) ;
my $ print_field = ( $ preferred_placeholder { $ field_id } ) ? $ preferred_placeholder { $ field_id } : ( $ preferred_title { $ field_id } ) ? $ preferred_title { $ field_id } : & common_min_print_field ( $ field_id ) ;
$ tindex + + ;
$ val_min = $ default_val if $ default_val ;
my $ ucfirstfield = ( $ ucfirstfield { $ field_id } ) ? $ ucfirstfield { $ field_id } : "textarea" . ucfirst $ field_id ;
# my $style = ($default_val && $default_val =~ /\n/) ? qq~style="height:100%;"~ : qq~~ ;
# $default_val =~ s/\\n/\n/g ;
$ hide_textarea = ( $ hide_textarea ) ? qq~display:none;~ : qq~~ ;
$ val = qq ~
< div class = "control-group" >
< div class = 'controls' >
2026-02-03 12:35:43 +00:00
< textarea type = 'text' class = 'form-control' name = '$field_id' id = '$ucfirstfield' placeholder = '$print_field' value = "$defualt" tabindex = "$tindex" $ readonly { $ field_id } style = "width:100%;$hide_textarea" > $ default_val </textarea>
2025-11-26 09:31:54 +00:00
</div>
</div>
~ ;
# $default_val =~ s/\n/\\n/g ;
$ default_val =~ s/[\n\r]+/\\n/g ;
if ( $ default_val && $ default_val_is_saved ) {
$ background_color = "#424949" unless $ background_color ;
$ table_with_default_ids { $ background_color } . = "#$table_id tr:eq($table_row) td:nth-last-child($table_col)," ;
# $trigger_jquery .= qq~ \$("#$ucfirstfield").css("width","100%") ;~ ;
$ default_javascript . = qq~"$ucfirstfield":"$default_val",~ ;
} elsif ( $ default_val && ! $ default_val_is_saved ) {
$ default_javascript . = qq~"$ucfirstfield":"$default_val",~ ;
} else {
$ default_javascript . = qq~"$ucfirstfield":"",~ ;
}
# box-sizing:border-box;overflow:hidden;
# box-sizing:border-box;overflow: hidden;
# oninput="adjustHeight(this)" row="1"
# $trigger_jquery .= qq~
# window.onload = function() {
# var textarea = document.getElementById('$ucfirstfield');
# adjustHeight(textarea,'$ucfirstfield');
# };
# ~ ;
# $trigger_jquery .= qq~
# \$("#$ucfirstfield").css("width","100%") ;
# ~ ;
#$trigger_jquery_raw .= qq~
# \$('#$ucfirstfield').on('input', function() {
# // this.style.height = 'auto' ;
# // this.style.height = (this.clientHeight) + 'px';
# }) ;
# \$('#$ucfirstfield').trigger('input');
# ~ ;
} elsif ( $ default_val ) {
$ val = $ default_val ;
$ val_min = $ val ;
$ val =~ s/\n/\<br>/g ;
}
$ val_min =~ s/\\n/ /g ;
return $ val ;
} #------------------------------------------------------------------------------------------
sub common_min_table_input {
my ( $ field_id , $ default_val , $ only_display_val , $ table_row , $ table_col , $ background_color , $ default_val_is_saved , $ col_name , $ table_id , $ hide_input_field ) = @ _ ;
$ val = '' ; $ val_min = 'MUSTBEBLANK' ;
if ( ! $ only_display_val ) {
$ found_editable = 1 ;
# my $print_field = ($preferred_placeholder{$field_id}) ? $preferred_placeholder{$field_id} : &common_min_print_field($field_id) ;
my $ print_field = ( $ preferred_placeholder { $ field_id } ) ? $ preferred_placeholder { $ field_id } : ( $ preferred_title { $ field_id } ) ? $ preferred_title { $ field_id } : & common_min_print_field ( $ field_id ) ;
$ tindex + + ;
my $ ucfirstfield = ( $ ucfirstfield { $ field_id } ) ? $ ucfirstfield { $ field_id } : "input" . ucfirst $ field_id ;
$ hide_input_field = qq~display:none;~ if $ hide_input_field ;
$ val = qq ~ < div class = "control-group" > < div class = 'controls' > < input type = 'text' class = 'form-control' name = '$field_id' id = '$ucfirstfield' placeholder = '$print_field' value = "$default_val" $ readonly { $ field_id } tabindex = "$tindex" style = "width:100%;$hide_input_field" >
</div> </div> ~ ;
# $trigger_jquery .= qq~ \$("#$ucfirstfield").css("width","100%") ;~ ;
if ( $ default_val && $ default_val_is_saved ) {
$ background_color = "#424949" unless $ background_color ;
$ table_with_default_ids { $ background_color } . = "#itv-table tr:eq($table_row) td:nth-last-child($table_col)," ;
$ default_javascript . = qq~"$ucfirstfield":"$default_val",~ ;
$ val_min = $ default_val ;
} else {
$ val_min = '' ;
$ default_javascript . = qq~"$ucfirstfield":"",~ ;
}
} else {
$ val = $ default_val ;
$ val_min = $ val ;
}
return $ val ;
} #------------------------------------------------------------------------------------------
sub common_min_table_select {
my ( $ field_id , $ default_val , $ only_display_val , $ table_row , $ table_col , $ background_color , $ default_val_is_saved , $ col_name , $ table_id , $ tooltip_1_text ) = @ _ ;
if ( $ multiple { $ field_id } ) { $ setmultiple = 'multiple' ; } else { $ setmultiple = '' ; }
$ table_id = "itv-table" unless $ table_id ;
$ val = '' ;
# $val_min = 'MUSTBEBLANK' ;
# if (!$only_display_val && $table_col) {
if ( ! $ only_display_val ) {
$ found_editable = 1 ;
my $ ucfirstfield = ( $ ucfirstfield { $ field_id } ) ? $ ucfirstfield { $ field_id } : "select" . ucfirst $ field_id ;
my $ print_field = ( $ preferred_placeholder { $ field_id } ) ? $ preferred_placeholder { $ field_id } : ( $ preferred_title { $ field_id } ) ? "Select $preferred_title{$field_id}" : "Select " . & common_min_print_field ( $ field_id ) ;
2026-02-03 12:35:43 +00:00
unless ( $ dont_allow_deselect_in_table { $ field_id } ) {
push @ all_select_ids , "#$ucfirstfield" if $ ucfirstfield ;
}
2025-11-26 09:31:54 +00:00
if ( $ multiple { $ field_id } ) {
push @ all_multi_select_ids , "#$ucfirstfield" if $ ucfirstfield ;
$ multi_select_ids . = qq~"$ucfirstfield":"1",~ if $ ucfirstfield ;
push @ dropdown_multi_chosen_ids , "#$ucfirstfield\_chosen" if $ ucfirstfield ;
}
# $table_select_rows{$table_row} .= qq~#itv-table tr:eq($table_row) td:nth-last-child($table_col),~ ;
# $trigger_jquery_raw .= qq~
# \$("#$ucfirstfield").chosen({ allow_single_deselect:true }) ; \$("#itv-table tr:eq($table_row) td:nth-last-child($table_col)").css("z-index","$table_row") ;
# ~ ;
# my $tooltip_1 = qq~~ ;
# if ($tooltip_1_text) {
# $tooltip_1 = qq~title data-toggle='tooltip' data-placement='top' data-original-title='$tooltip_1_text'~ ;
# }
if ( $ tooltip_1_text ) {
$ add_tooltip { $ tooltip_1_text } . = "#$ucfirstfield\_chosen," ;
}
if ( ! $ col_name ) {
$ val = qq ~
< select class = "form-control" name = "$field_id" id = "$ucfirstfield" $ setmultiple data - placeholder = "$print_field" data - rel = "chosen" $ tooltip_1 >
< option value = "" > </option>
$ opts { $ field_id }
</select>
~ ;
} else {
$ val = qq ~
< select class = "form-control" name = "$field_id" id = "$ucfirstfield" $ setmultiple data - placeholder = "$print_field" data - rel = "chosen" $ tooltip_1 >
</select>
~ ;
$ opts { $ col_name } = $ opts { $ field_id } unless $ opts { $ col_name } ;
$ col_name_select_ids { $ col_name } . = "#$ucfirstfield," ;
}
if ( $ default_val ) {
unless ( $ val_min ) {
$ val_min = $ default_val ;
$ val_min =~ s/\_/ \[/g ;
$ val_min . = qq~]~ if $ val_min =~ /\[/ ;
}
push @ selects_with_default_ids , "#$ucfirstfield" if $ ucfirstfield ;
# foreach (split(/\,/,$default_val)) {
$ selects_by_def_val { $ default_val } . = "#$ucfirstfield," if $ ucfirstfield ;
# }
# $trigger_jquery_raw .= qq~
# \$("#$ucfirstfield").val("$default_val") ;
# ~ ;
# if ($default_val_is_saved) {
if ( $ default_val_is_saved && $ table_col ) {
$ background_color = "#424949" unless $ background_color ;
$ table_with_default_ids { $ background_color } . = "#$table_id tr:eq($table_row) td:nth-last-child($table_col)," ;
$ default_javascript . = qq~"$ucfirstfield":"$default_val",~ ;
} elsif ( $ default_val_is_saved && ! $ table_col ) {
$ default_javascript . = qq~"$ucfirstfield":"$default_val",~ ;
} else {
$ default_javascript . = qq~"$ucfirstfield":"",~ ;
}
} else {
$ default_javascript . = qq~"$ucfirstfield":"",~ ;
}
if ( $ ucfirstfield ) { push @ dropdown_chosen_ids , "#$ucfirstfield\_chosen" unless $ multiple { $ field_id } ; }
} elsif ( $ default_val ) {
$ val = $ default_val ;
$ val_min = $ default_val ;
$ val_min =~ s/\_/ \[/g ;
$ val_min . = qq~]~ if $ val_min =~ /\[/ ;
# $val =~ s/\_/\[/g ;
$ val =~ s/\_//g ;
# $val .= qq~]~ ;
# $val_min = $val unless $val_min ;
$ table_with_default_ids { $ background_color } . = "#$table_id tr:eq($table_row) td:nth-last-child($table_col)," if $ background_color && $ background_color ne "#424949" ;
}
return $ val ;
} #------------------------------------------------------------------------------------------
sub common_min_table_textarea_jquery {
# $trigger_jquery .= qq~
# function adjustHeight(textarea,id) {
# textarea.style.height = 'auto'; // Reset height to auto to get the scroll height
# // textarea.style.height = textarea.scrollHeight + 'px'; // Set the height to the scroll height
# \$("#"+id).css("height",textarea.scrollHeight+"px") ;
# console.log("scrollHeight : "+textarea.scrollHeight) ;
# console.log("textarea : "+textarea) ;
# console.log("id : "+id) ;
# }
# ~ ;
} #------------------------------------------------------------------------------------------
sub common_min_table_select_jquery {
my ( $ columns_with_selects , $ table_id ) = @ _ ;
& common_min_table_select_fixed_width_jquery ( $ columns_with_selects ) ;
& common_min_table_select_prevent_dropdown_overlap_jquery ( $ table_id ) ;
& common_min_table_select_default_values_jquery ;
& common_min_table_multi_select_jquery ;
} #------------------------------------------------------------------------------------------
sub common_min_table_select_fixed_width_jquery {
my ( $ columns_with_selects ) = @ _ ;
return unless $ columns_with_selects ;
$ trigger_jquery_raw . = qq ~
\ $( "$columns_with_selects" ) . css ( "position" , "relative" ) ;
\ $( "$columns_with_selects" ) . css ( "text-align" , "center" ) ;
~ ;
my $ dropdown_chosen_ids_str = join ( ',' , @ dropdown_chosen_ids ) ;
my $ dropdown_multi_chosen_ids_str = join ( ',' , @ dropdown_multi_chosen_ids ) ;
$ trigger_jquery . = qq ~
\ $( "$dropdown_multi_chosen_ids_str" ) . css ( "width" , "100%" ) ; ~ if $ dropdown_multi_chosen_ids_str ;
return unless $ dropdown_chosen_ids_str ;
$ trigger_jquery . = qq ~
\ $( "$dropdown_chosen_ids_str" ) . css ( "position" , "absolute" ) ; ~ ;
$ trigger_jquery . = qq ~
\ $( "$dropdown_chosen_ids_str" ) . css ( "width" , "90%" ) ; ~ ;
$ trigger_jquery . = qq ~
\ $( "$dropdown_chosen_ids_str" ) . css ( "left" , "5%" ) ; ~ ;
$ trigger_jquery . = qq ~
\ $( "$dropdown_chosen_ids_str" ) . css ( "top" , "50%" ) ; ~ ;
$ trigger_jquery . = qq ~
\ $( "$dropdown_chosen_ids_str" ) . css ( "transform" , "translateY(-50%)" ) ; ~ ;
foreach ( keys % add_tooltip ) {
chop $ add_tooltip { $ _ } ;
$ trigger_jquery . = qq ~
\ $( "$add_tooltip{$_}" ) . attr ( {
title : '' ,
'data-original-title' : '$_' ,
'data-toggle' : 'tooltip' ,
'data-placement' : 'top'
} ) ;
~ ;
}
} #------------------------------------------------------------------------------------------
sub common_min_table_select_prevent_dropdown_overlap_jquery_1 {
my ( $ table_id ) = @ _ ;
$ table_id = "$useropts{table_id}" unless $ table_id ;
$ trigger_jquery . = qq ~
function prevent_drop_down_overlap ( loading_page ) {
const table_ = \ $( '#$table_id' ) . DataTable ( ) . _ ( 'tr' ) ;
// var table_ = \ $( "#$table_id" ) . find ( 'tr' ) ;
let row_nr = 1 ;
let z_index = 1 ;
for ( let i = table_ . length ; i >= 1 ; i - - ) {
if ( loading_page ) {
$ hide_other_column_for_logistics_report
$ hide_columns_by_default
}
if ( ! \ $( "#$table_id tr:eq(" + i + ") td:nth-last-child(1)" ) . find ( 'input' ) . length && ! \ $( "#$table_id tr:eq(" + i + ") td:nth-last-child(2)" ) . find ( 'input' ) . length ) {
continue ;
}
let columns = table_ [ row_nr - 1 ] ;
for ( let col_nr = 1 ; col_nr <= columns . length ; col_nr + + ) {
if ( ! \ $( "#$table_id tr:eq(" + i + ") td:nth-last-child(" + col_nr + ")" ) . find ( 'select' ) . length ) {
continue ;
}
\ $( "#$table_id tr:eq(" + i + ") td:nth-last-child(" + col_nr + ")" ) . css ( "z-index" , z_index ) ;
z_index + + ;
}
row_nr + + ;
}
// table_ = "" ;
}
\ $( '#$table_id th' ) . on ( 'click' , function ( ) {
prevent_drop_down_overlap ( 0 ) ;
} ) ;
// \ $( "#select_temp_calibrators_2_length" ) . css ( "display" , "none" ) ;
// \ $( "#select_temp_calibrators_2_filter" ) . css ( "display" , "none" ) ;
// \ $( "#select_temp_calibrators_2_info" ) . css ( "display" , "none" ) ;
// \ $( "#select_temp_calibrators_2_paginate" ) . css ( "display" , "none" ) ;
~ ;
} #------------------------------------------------------------------------------------------
sub common_min_table_select_prevent_dropdown_overlap_jquery_2 {
$ trigger_jquery . = qq ~
prevent_drop_down_overlap ( 1 ) ;
~ ;
} #------------------------------------------------------------------------------------------
sub common_min_table_select_prevent_dropdown_overlap_jquery {
my ( $ table_id ) = @ _ ;
& common_min_table_select_prevent_dropdown_overlap_jquery_1 ( $ table_id ) ;
& common_min_table_select_prevent_dropdown_overlap_jquery_2 ;
} #------------------------------------------------------------------------------------------
sub common_min_table_select_default_values_jquery {
foreach my $ col_name ( keys % col_name_select_ids ) {
chop $ col_name_select_ids { $ col_name } if $ col_name_select_ids { $ col_name } ;
$ opts { $ col_name } =~ s/\"/\'/g ;
$ opts { $ col_name } =~ s/\' >/\'>/g ;
$ opts { $ col_name } =~ s/\' >/\'>/g ;
$ trigger_jquery_raw . = qq ~
\ $( "$col_name_select_ids{$col_name}" ) . html ( "<option value=''></option>$opts{$col_name}" ) . trigger ( "chosen:updated" ) ;
~ ;
}
my $ all_select_ids_str = join ( "," , @ all_select_ids ) ;
$ trigger_jquery_raw . = qq~\$("$all_select_ids_str").chosen({ allow_single_deselect:true }) ;~ ;
# $trigger_jquery_raw .= qq~
# \$("$all_select_ids_str").on("change", function () {
# console.log("FOCUS!!!!") ;
# event.preventDefault() ;
# }) ;
# ~ ;
# $trigger_jquery_raw .= qq~
# // \$("$all_select_ids_str").change( function () {
# // console.log("preventDefault") ;
# // event.preventDefault() ;
# // let scrollContainer = \$('#itv-table_wrapper') ;
# // let scrollPosition = scrollContainer.scrollLeft() ;
# // console.log("scrollPosition : "+scrollPosition) ;
# // scrollContainer.scrollLeft(scrollPosition) ;
# // }) ;
# ~ ;
foreach ( keys % table_with_default_ids ) {
chop $ table_with_default_ids { $ _ } if $ table_with_default_ids { $ _ } ;
$ trigger_jquery_raw . = qq ~
\ $( "$table_with_default_ids{$_}" ) . css ( "background-color" , "$_" ) ;
~ ;
}
foreach my $ def_val ( keys % selects_by_def_val ) {
chop $ selects_by_def_val { $ def_val } if $ selects_by_def_val { $ def_val } ;
my $ def_val2 = $ def_val ;
if ( $ def_val2 =~ /,/ ) {
$ def_val2 =~ s/\,/\','/g ;
$ def_val2 = qq~['$def_val2']~ ;
$ trigger_jquery_raw . = qq ~
\ $( "$selects_by_def_val{$def_val}" ) . val ( $ def_val2 ) . trigger ( "chosen:updated" ) ;
~ ;
} else {
# foreach (split(/\,/,$selects_by_def_val{$def_val})) {
# $trigger_jquery_raw .= qq~
# \$("$_").val("$def_val2").trigger("chosen:updated") ;
# ~ ;
# }
$ trigger_jquery_raw . = qq ~
\ $( "$selects_by_def_val{$def_val}" ) . val ( "$def_val2" ) . trigger ( "chosen:updated" ) ;
~ ;
}
}
# my $selects_with_default_ids_str = join(',',@selects_with_default_ids) ;
# $trigger_jquery_raw .= qq~
# \$("$selects_with_default_ids_str").trigger("chosen:updated") ;
# ~ ;
} #------------------------------------------------------------------------------------------
sub common_min_table_multi_select_jquery {
# my $all_multi_select_ids_str = join(",",@all_multi_select_ids) ;
# foreach (@all_multi_select_ids) {
# $trigger_jquery_raw .= qq~set_row_height("$_") ; ~ ;
# }
# $trigger_jquery_raw .= qq~
# function set_row_height (multi_id) {
# let row_nr = get_row_nr(multi_id) ;
# let numOptions = \$(multi_id).find('option:selected').length;
# var optionHeight = 25;
# var padding = 40 ;
# let numOptions2 = Math.floor(numOptions/3) ;
# var newHeight = numOptions * optionHeight + padding;
# console.log("set_row_height : "+multi_id) ;
# if (numOptions == '3' || numOptions2 == '0') {
# newHeight = 0 ;
# }
# \$("#"+row_nr).height(newHeight);
# }
# \$("$all_multi_select_ids_str").change( function() {
# set_row_height("#"+this.id) ;
# });
# ~ ;
} #------------------------------------------------------------------------------------------
sub common_min_table_datepicker {
my ( $ field_id , $ default_val , $ only_display_val , $ table_row , $ table_col , $ background_color , $ default_val_is_saved , $ col_name , $ table_id , $ icon_color , $ tooltip_text , $ tooltip_1_text , $ tooltip_2_text ) = @ _ ;
if ( $ default_val eq '0000-00-00' ) { $ default_val = '' ; }
if ( ! $ only_display_val ) {
my $ ucfirstfield = ( $ ucfirstfield { $ field_id } ) ? $ ucfirstfield { $ field_id } : "datepicker" . ucfirst $ field_id ;
$ tindex + + ;
my $ tooltip_1 = qq~~ ; my $ tooltip_2 = qq~~ ;
if ( $ tooltip_1_text ) {
$ tooltip_1 = qq~title data-toggle='tooltip' data-placement='top' data-original-title='$tooltip_1_text'~ ;
}
if ( $ default_val && $ add_datepicker_tooltip { $ field_id } ) {
$ tooltip_2 = qq~title data-toggle='tooltip' data-placement='top' data-original-title='$default_val'~ ;
} elsif ( $ tooltip_2_text ) {
$ tooltip_2 = qq~title data-toggle='tooltip' data-placement='top' data-original-title='$tooltip_2_text'~ ;
}
if ( ! $ default_val ) { $ default_val = "$now_year-$now_mm-$now_dd" ; } ;
$ icon_color = ( ! $ icon_color ) ? 'black' : $ icon_color ;
$ val = qq ~
< div style = "margin:2px 0 2px 0;" class = "input-group controls input-append date" data - date = "$default_val" id = "$ucfirstfield" $ tooltip_1 >
< input style = "margin:0;" class = 'form-control' name = "$field_id" value = "$default_val" placeholder = 'ccyy-mm-dd' tabindex = '$tindex' $ readonly { $ field_id } READONLY >
< span class = "input-group-addon add-on" >
< span style = "cursor:pointer;color:$icon_color;" class = "glyphicon glyphicon-calendar" $ tooltip_2 > </span>
</span>
</div>
~ ;
if ( $ default_val_is_saved ) {
$ background_color = "#424949" unless $ background_color ;
$ table_with_default_ids { $ background_color } . = "#itv-table tr:eq($table_row) td:nth-last-child($table_col)," if $ table_row && $ table_col ;
$ default_javascript . = qq~"$ucfirstfield":"$default_val",~ if $ ucfirstfield ;
$ val_min = $ default_val ;
} else {
$ default_javascript . = qq~"$ucfirstfield":"",~ if $ ucfirstfield ;
$ val_min = '' ;
}
push @ all_datepicker_ids , "#$ucfirstfield" if $ ucfirstfield ;
push @ all_datepicker_names , "input[name='$field_id']" if $ field_id ;
} else {
$ val = $ default_val ;
$ val_min = $ val ;
}
# &common_min_form_datepicker_jquery($ucfirst_field);
return ( $ val ) ;
} #------------------------------------------------------------------------------------------
sub common_min_table_datepicker_jquery {
our $ all_datepicker_ids_str = join ( "," , @ all_datepicker_ids ) ;
$ trigger_jquery_raw . = qq ~
\ $( '$all_datepicker_ids_str' ) . datepicker ( { format : "yyyy-mm-dd" } ) . on ( 'changeDate' , function ( ev ) {
\ $( '.datepicker' ) . hide ( ) ;
\ $( "input[name='" + this . id . substring ( 10 ) . toLowerCase ( ) + "']" ) . val ( \ $( "#" + this . id ) . data ( "date" ) ) ;
} ) ;
~ ;
} #------------------------------------------------------------------------------------------
sub common_min_table_timepicker {
my ( $ field_id , $ default_val , $ only_display_val , $ table_row , $ table_col , $ background_color , $ default_val_is_saved , $ col_name , $ table_id , $ icon_color , $ tooltip_1_text , $ tooltip_2_text ) = @ _ ;
$ tindex + + ;
$ val = '' ; $ val_min = '' ;
if ( ! $ only_display_val ) {
my $ ucfirstfield = ( $ ucfirstfield { $ field_id } ) ? $ ucfirstfield { $ field_id } : "timepicker" . ucfirst $ field_id ;
if ( ! $ default_val ) { $ default_val = "$now_hour:$now_min:$now_sec" ; } ;
my $ tooltip_1 = qq~~ ; my $ tooltip_2 = qq~~ ;
if ( $ tooltip_1_text ) {
$ tooltip_1 = qq~title data-toggle='tooltip' data-placement='top' data-original-title='$tooltip_1_text'~ ;
}
if ( $ default_val && $ add_timepicker_tooltip { $ field_id } ) {
$ tooltip_2 = qq~title data-toggle='tooltip' data-placement='top' data-original-title='$default_val'~ ;
} elsif ( $ tooltip_2_text ) {
$ tooltip_2 = qq~title data-toggle='tooltip' data-placement='top' data-original-title='$tooltip_2_text'~ ;
}
$ icon_color = ( ! $ icon_color ) ? 'black' : $ icon_color ;
# <span class="input-group-addon add-on">
# <span style="cursor:pointer;" class="glyphicon glyphicon-calendar"></span>
# </span>
# <i data-time-icon="icon-time" data-date-icon="icon-calendar" $tooltip ></i>
$ val = qq ~
< div style = "margin: 2px 0 2px 0;$custom_style{$field_id}" class = "input-group controls input-append date" data - date = "$default_val" id = "$ucfirstfield" $ tooltip_1 >
< input style = "margin: 0;" data - format = "hh:mm:ss" class = "form-control" name = "$field_id" READONLY value = "$default_val" tabindex = "$tindex" >
< span class = "input-group-addon add-on" >
< span style = "cursor:pointer;color:$icon_color;" class = "glyphicon glyphicon-time" $ tooltip_2 > </span>
</span>
</div>
~ ;
if ( $ default_val && $ default_val_is_saved ) {
$ background_color = "#424949" unless $ background_color ;
$ table_with_default_ids { $ background_color } . = "#itv-table tr:eq($table_row) td:nth-last-child($table_col)," if $ table_row && $ table_col ;
$ default_javascript . = qq~"$ucfirstfield":"$default_val",~ if $ ucfirstfield && $ default_val ;
$ val_min = $ default_val ;
} else {
$ default_javascript . = qq~"$ucfirstfield":"$default_val",~ if $ ucfirstfield ;
$ val_min = '' ;
}
push @ all_timepicker_ids , "#$ucfirstfield" if $ ucfirstfield ;
push @ all_timepicker_names , "input[name='$field_id']" if $ field_id ;
# $trigger_jquery_raw .= qq(\$('#timepicker$ucfirst_field').datetimepicker({language:'pt-BR',pickDate:false});) ;
} else {
$ val = $ default_val ;
$ val_min = $ val ;
}
return $ val ;
} #------------------------------------------------------------------------------------------
sub common_min_table_timepicker_jquery {
my ( $ ids_short ) = @ _ ;
if ( $ ids_short ) {
$ trigger_jquery_raw . = qq~\$("$ids_short").datetimepicker({language:'pt-BR',pickDate:false});~ ;
return ;
}
our $ all_timepicker_ids = join ( "," , @ all_timepicker_ids ) ;
$ trigger_jquery_raw . = qq~\$('$all_timepicker_ids').datetimepicker({language:'pt-BR',pickDate:false});~ ;
} #------------------------------------------------------------------------------------------
sub common_min_get_event_quote_button {
my ( $ event_id , $ table , $ page_url_part ) = @ _ ;
$ table = "event_quotes" unless $ table ;
return unless $ event_id ;
my $ class = 'info' ; my $ style = '' ; my $ does_not_exist = 0 ;
if ( $ db { $ table } { $ event_id } { demo_id } ) {
$ style = 'style="background-color:rgb(255,64,255);border-color:rgb(255,64,255);"' ; # pink
$ tt_txt = 'Demo' ;
if ( $ db { $ table } { $ event_id } { quote_completed } ) {
$ tt_txt = 'Completed ' . $ tt_txt ;
} elsif ( $ db { $ table } { $ event_id } { quote_accepted } ) {
$ tt_txt = 'Accepted ' . $ tt_txt ;
} elsif ( $ db { $ table } { $ event_id } { quote_rejected } ) {
$ tt_txt = 'Rejected ' . $ tt_txt ;
} elsif ( $ db { $ table } { $ event_id } { quote_cancelled } ) {
$ tt_txt = 'Cancelled ' . $ tt_txt ;
} elsif ( $ db { $ table } { $ event_id } { quote_created } ) {
$ tt_txt = 'Pending, Created by School Manager ' . $ tt_txt ;
} elsif ( $ db { $ table } { $ event_id } { quote_pending } ) {
$ tt_txt = 'Pending ' . $ tt_txt ;
}
} elsif ( $ analytics_events { $ event_id } ) {
$ style = 'style="background-color:rgb(255,129,0);border-color:rgb(255,129,0);"' ; # pink
$ tt_txt = 'Analytics Event' ;
if ( $ db { $ table } { $ event_id } { quote_completed } ) {
$ tt_txt = 'Completed ' . $ tt_txt ;
} elsif ( $ db { $ table } { $ event_id } { quote_accepted } ) {
$ tt_txt = 'Accepted ' . $ tt_txt ;
} elsif ( $ db { $ table } { $ event_id } { quote_rejected } ) {
$ tt_txt = 'Rejected ' . $ tt_txt ;
} elsif ( $ db { $ table } { $ event_id } { quote_cancelled } ) {
$ tt_txt = 'Cancelled ' . $ tt_txt ;
} elsif ( $ db { $ table } { $ event_id } { quote_created } ) {
$ tt_txt = 'Pending, Created by School Manager ' . $ tt_txt ;
} elsif ( $ db { $ table } { $ event_id } { quote_pending } ) {
$ tt_txt = 'Pending ' . $ tt_txt ;
}
} elsif ( $ db { $ table } { $ event_id } { quote_completed } || $ db { $ table } { $ event_id } { event_completed } || $ quote_completed ) {
$ class = 'success' ; # green
$ tt_txt = 'Completed' ;
} elsif ( $ db { $ table } { $ event_id } { quote_accepted } || $ db { $ table } { $ event_id } { event_completed } || $ quote_accepted ) {
$ class = 'info' ; # blue
$ tt_txt = 'Accepted' ;
my @ fixed_system_overall_statuses = split ( /\;/ , $ db { $ table } { $ event_id } { fixed_system_overall_status } ) ;
my @ event_system_ids = split ( /\;/ , $ db { $ table } { $ event_id } { event_system_id_multiple } ) ;
my $ event_sys_cnt = 0 ; my $ event_sys_test_status = 0 ; my $ got_some_fixed = 0 ; my $ fixed_status_color = '164473' ; # Dark Blue
foreach my $ event_id ( @ event_system_ids ) {
if ( $ db { event_systems } { $ event_id } { system_type } eq 'fixed' ) {
$ tt_txt = 'Accepted and tests show All Clear for the Fixed Systems' if $ tt_txt eq 'Accepted' ;
$ got_some_fixed = 1 ;
if ( $ fixed_system_overall_statuses [ $ event_sys_cnt ] == 3 ) { # Not Clear
$ fixed_status_color = '5d09d3' ; # Dark Purple
$ tt_txt = 'Accepted but Not Clear on some Fixed Systems' ;
} elsif ( $ fixed_system_overall_statuses [ $ event_sys_cnt ] == 2 ) { # Sound Issue
$ fixed_status_color = '5d092c' ;
$ tt_txt = 'Accepted but Sound Issue found on some Fixed Systems' ;
}
}
$ event_sys_cnt + + ;
}
if ( $ got_some_fixed ) { $ style = "style='background-color:#$fixed_status_color;border-color:#$fixed_status_color'" ; }
} elsif ( $ db { $ table } { $ event_id } { quote_rejected } || $ db { $ table } { $ event_id } { event_rejected } || $ quote_rejected ) {
$ style = 'style="background-color:#ca0ad3;border-color:#ca0ad3"' ; # purple
$ tt_txt = 'Rejected' ;
} elsif ( $ db { $ table } { $ event_id } { quote_cancelled } || $ db { $ table } { $ event_id } { event_cancelled } || $ quote_cancelled ) {
$ class = 'danger' ; # red
$ tt_txt = 'Cancelled' ;
} elsif ( $ db { $ table } { $ event_id } { quote_created } || $ db { $ table } { $ event_id } { event_created } || $ quote_created ) { # create by schools_manager
$ style = 'style="background-color:#f6e305;border-color:#f6e305"' ; # yellow
$ tt_txt = 'Pending, Created by School Manager' ;
} elsif ( $ db { $ table } { $ event_id } { quote_pending } || $ db { $ table } { $ event_id } { event_pending } || $ quote_pending ) {
$ class = 'warning' ; # orange
$ tt_txt = ( $ db { $ table } { $ event_id } { sssadmin_quote_nr } ) ? 'Pending [Created by SSS platform]' : 'Pending' ;
} elsif ( ! $ db { $ table } { $ event_id } { id } ) {
$ style = 'style="background-color:black;border-color:black"' ;
$ tt_txt = 'Does not Exist!!!' ;
$ does_not_exist = 1 ;
}
my $ tt = qq~data-toggle="tooltip" data-placement="right" data-title="$tt_txt"~ ;
# ($glod_user_level < 3 && !$is_operator)
my $ glod_user_level_eff = ( $ glod_user_level == 2 && $ is_operator ) ? 3 : $ glod_user_level ;
my $ href = ( $ page_url_part ) ? qq~javascript:editMinItem('$event_id','$page_url_part');~ : qq~javascript:editMinItem('$event_id');~ ;
my $ event_quote_btn = ( $ glod_user_level_eff < 3 || $ db { $ table } { $ event_id } { quote_cancelled } || $ does_not_exist ) ? qq~<a class="btn btn-$class btn-xs" href="javascript:void(0);" $style $tt>$event_id</a>~ : qq~<a class="btn btn-$class btn-xs" href="$href" $style $tt>$event_id</a>~ ;
# || ($db{$table}{$event_id}{quote_completed} && $glod_user_level <= 3)
return ( $ event_quote_btn ) ;
} #------------------------------------------------------------------------------------------
sub common_min_get_quote_button {
my ( $ quote_id , $ table ) = @ _ ;
$ table = "quotes" unless $ table ;
return unless $ quote_id ;
my $ class = 'info' ; my $ style = '' ; my $ tt_txt = '' ;
if ( $ db { $ table } { $ quote_id } { quote_cancelled } ) {
$ class = 'danger' ;
$ tt_txt = 'Cancelled' ;
} elsif ( $ db { $ table } { $ quote_id } { quote_accepted } ) {
$ class = 'success' ;
$ tt_txt = 'Accepted' ;
} elsif ( $ quote_expiry and $ quote_expiry < "$now_year$now_mm$now_dd" ) { ### $quote_expiry must be defined
$ class = 'danger' ;
$ tt_txt = 'Expired' ;
} elsif ( $ db { $ table } { $ quote_id } { quote_pending } ) {
$ class = 'warning' ;
$ tt_txt = 'Pending' ;
}
my $ tt = qq~data-toggle="tooltip" data-placement="right" data-title="$tt_txt"~ ;
my $ quote_btn = qq~<a class="btn btn-$class btn-xs" href="javascript:editMinItem('$quote_id');" $style $tt>$db{$table}{$quote_id}{quote_nr}</a>~ ;
return ( $ quote_btn ) ;
} #------------------------------------------------------------------------------------------
# sub common_min_date_as_string {
# my ($date) = @_ ;
# my ($yr,$mon,$day) = split("-",$date) ; ## our @months = ("","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec") ;
# return ("$day-$months[$mon]-$yr") ;
# } #------------------------------------------------------------------------------------------
sub common_min_date_as_string {
my ( $ date ) = @ _ ;
return if $ date !~ /(\d+)/g ;
my ( $ yr , $ mon , $ day ) = split ( "-" , substr ( $ date , 0 , 10 ) ) ; ## our @months = ("","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec") ;
if ( substr ( $ date , 11 , 5 ) ) {
return ( "$day-$months[$mon]-$yr \@ " . substr ( $ date , 11 , 5 ) ) ;
} else {
return ( "$day-$months[$mon]-$yr" ) ;
}
} #------------------------------------------------------------------------------------------
sub greater_date_time {
local ( $ date_time_1 , $ date_time_2 ) = @ _ ;
return Time::Piece - > strptime ( $ date_time_1 , '%Y-%m-%d %H:%M:%S' ) <= Time::Piece - > strptime ( $ date_time_2 , '%Y-%m-%d %H:%M:%S' ) ;
} #------------------------------------------------------------------------------------------
sub common_min_greater_date_time {
local ( $ date_time_1 , $ date_time_2 ) = @ _ ;
return Time::Piece - > strptime ( $ date_time_1 , '%Y-%m-%d %H:%M:%S' ) <= Time::Piece - > strptime ( $ date_time_2 , '%Y-%m-%d %H:%M:%S' ) ;
} #------------------------------------------------------------------------------------------
sub common_min_greater_date {
local ( $ date_1 , $ date_2 ) = @ _ ;
return Time::Piece - > strptime ( $ date_1 , '%Y-%m-%d' ) <= Time::Piece - > strptime ( $ date_2 , '%Y-%m-%d' ) ;
} #------------------------------------------------------------------------------------------
sub common_min_calc_time_diff {
local ( $ date_time_1 , $ date_time_2 ) = @ _ ;
return "blank_date" if ! $ date_time_1 || ! $ date_time_2 ;
return ( Time::Piece - > strptime ( $ date_time_2 , '%Y-%m-%d %H:%M:%S' ) - Time::Piece - > strptime ( $ date_time_1 , '%Y-%m-%d %H:%M:%S' ) ) ;
} #------------------------------------------------------------------------------------------
sub common_min_calc_day_diff {
local ( $ date_1 , $ date_2 ) = @ _ ;
return 1 + abs ( Time::Piece - > strptime ( substr ( $ date_2 , 0 , 10 ) , '%Y-%m-%d' ) - Time::Piece - > strptime ( substr ( $ date_1 , 0 , 10 ) , '%Y-%m-%d' ) ) - > days ;
} #------------------------------------------------------------------------------------------
sub common_min_delete_files {
my ( $ dir , $ file_name ) = @ _ ;
return if ! $ dir || ( $ dir && not - d $ dir ) || ( $ file_name && not - f "$dir/$file_name" ) ;
my @ files = ( ) ; my $ dh ;
if ( $ file_name ) {
push @ files , $ file_name ;
} else {
opendir ( $ dh , $ dir ) or die "Cannot open directory: $!" ;
@ files = grep { ! /^\.\.?$/ } readdir ( $ dh ) ;
}
foreach my $ file ( @ files ) {
my $ file_path = "$dir/$file" ;
if ( - f $ file_path ) {
unlink ( "$file_path" ) or print "\n unable to unlink - $file_path : $!" ;
}
}
if ( ! $ file_name ) {
closedir ( $ dh ) ;
}
} #------------------------------------------------------------------------------------------
sub common_min_copy_files {
# # # # use File::Copy; Make Sure THis is called ;
my ( $ dir_from , $ dir_to , $ file_name ) = @ _ ;
return if ! $ dir_from || ! $ dir_to || not - d $ dir_from || ( $ file_name && not - f "$dir_from/$file_name" ) ;
mkdir $ dir_to if not - d $ dir_to ;
my @ files = ( ) ; my $ dh ;
if ( $ file_name ) {
push @ files , $ file_name ;
} else {
opendir ( $ dh , $ dir_from ) or die "Can't open $dir_from: $!" ;
my $ file_counter = 0 ;
@ files = readdir ( $ dh ) ;
}
foreach my $ file ( @ files ) {
next if $ file =~ /^\.\.?$/ ;
my $ src_file = "$dir_from/$file" ;
my $ dst_file = "$dir_to/$file" ;
if ( - f $ src_file ) {
copy ( "$src_file" , "$dst_file" ) or die "File cannot be copied." ;
}
}
if ( ! $ file_name ) {
closedir ( $ dh ) ;
}
} #------------------------------------------------------------------------------------------
1 ;