2020-08-14 13:36:36 +02:00
< ? php
/***************************************
* Description : Number
*
* Vprašanje je prisotno :
* tip 7
*
* Autor : Robert Šmalc
* Created date : 09.03 . 2016
*****************************************/
namespace App\Controllers\Vprasanja ;
// Osnovni razredi
use App\Controllers\CheckController as Check ;
use App\Controllers\Controller ;
use App\Controllers\HelperController as Helper ;
use App\Controllers\LanguageController as Language ;
use App\Controllers\Vprasanja\SystemVariableController as SystemVariable ;
use App\Models\Model ;
use enkaParameters ;
class NumberController extends Controller
{
public function __construct ()
{
parent :: getGlobalVariables ();
}
/************************************************
* Get instance
************************************************/
private static $_instance ;
public static function getInstance ()
{
if ( self :: $_instance )
return self :: $_instance ;
return new NumberController ();
}
public function display ( $spremenljivka , $oblika )
{
$row = Model :: select_from_srv_spremenljivka ( $spremenljivka );
$loop_id = get ( 'loop_id' ) == null ? " IS NULL " : " = ' " . get ( 'loop_id' ) . " ' " ;
$spremenljivkaParams = new enkaParameters ( $row [ 'params' ]);
$selected = Model :: getOtherValue ( $spremenljivka );
$checkbox_limit = ( $spremenljivkaParams -> get ( 'checkbox_limit' ) ? $spremenljivkaParams -> get ( 'checkbox_limit' ) : 0 );
//tvorjenje omejitve za sliderje v mobile razlicici********************************************************************************
$slider_MinNumLabel = ( $spremenljivkaParams -> get ( 'slider_MinNumLabel' ) ? $spremenljivkaParams -> get ( 'slider_MinNumLabel' ) : 0 );
$slider_MaxNumLabel = ( $spremenljivkaParams -> get ( 'slider_MaxNumLabel' ) ? $spremenljivkaParams -> get ( 'slider_MaxNumLabel' ) : 100 );
$limit_slider_mobile = '(min ' . $slider_MinNumLabel . ', max ' . $slider_MaxNumLabel . ')' ;
//**************************************************************************************************
//***************************
if ( $row [ 'num_useMin' ] == 1 && $row [ 'num_useMax' ] == 1 && $row [ 'vsota_min' ] == $row [ 'vsota_limit' ])
$limit = '(' . $row [ 'vsota_min' ] . ')' ;
elseif ( $row [ 'num_useMin' ] == 1 && $row [ 'num_useMax' ] == 1 )
$limit = '(min ' . $row [ 'vsota_min' ] . ', max ' . $row [ 'vsota_limit' ] . ')' ;
elseif ( $row [ 'num_useMin' ] == 1 )
$limit = '(min ' . $row [ 'vsota_min' ] . ')' ;
elseif ( $row [ 'num_useMax' ] == 1 )
$limit = '(max ' . $row [ 'vsota_limit' ] . ')' ;
else
$limit = '' ;
if ( $row [ 'size' ] == 2 ) {
if ( $row [ 'num_useMin2' ] == 1 && $row [ 'num_useMax2' ] == 1 && $row [ 'num_min2' ] == $row [ 'num_max2' ])
$limit2 = '(' . $row [ 'num_min2' ] . ')' ;
elseif ( $row [ 'num_useMin2' ] == 1 && $row [ 'num_useMax2' ] == 1 )
$limit2 = '(min ' . $row [ 'num_min2' ] . ', max ' . $row [ 'num_max2' ] . ')' ;
elseif ( $row [ 'num_useMin2' ] == 1 )
$limit2 = '(min ' . $row [ 'num_min2' ] . ')' ;
elseif ( $row [ 'num_useMax2' ] == 1 )
$limit2 = '(max ' . $row [ 'num_max2' ] . ')' ;
else
$limit2 = '' ;
}
# preverimo ali je vrednost v bazi missing
$missing = Check :: getInstance () -> checkMissingForSpremenljivka ( $spremenljivka , $loop_id );
if (( int ) $missing > 0 ) {
$srv_data_vrednost [ $missing ] = true ;
}
echo '<div class="variabla' . $oblika [ 'cssFloat' ] . '">' ;
$sql1 = sisplet_query ( " SELECT text, text2 FROM srv_data_text " . get ( 'db_table' ) . " WHERE spr_id=' $spremenljivka ' AND usr_id=' " . get ( 'usr_id' ) . " ' AND loop_id $loop_id " );
$row1 = mysqli_fetch_array ( $sql1 );
$taWidth = ( $spremenljivkaParams -> get ( 'taWidth' ) ? $spremenljivkaParams -> get ( 'taWidth' ) : - 1 );
//default sirina
if ( $taWidth == - 1 )
$taWidth = 10 ;
//preverjanje praznega vnosa (-1)
$row1 [ 'text' ] != - 1 ? $text = $row1 [ 'text' ] : $text = '' ;
$row1 [ 'text2' ] != - 1 ? $text2 = $row1 [ 'text2' ] : $text2 = '' ;
$row1 [ 'text' ] != - 1 ? $value [ 1 ] = $row1 [ 'text' ] : $value [ 1 ] = '' ;
$row1 [ 'text2' ] != - 1 ? $value [ 2 ] = $row1 [ 'text2' ] : $value [ 2 ] = '' ;
$sql2 = sisplet_query ( " SELECT id, naslov, vrstni_red, other FROM srv_vrednost WHERE spr_id=' $spremenljivka ' order BY vrstni_red " );
$array_others = array ();
# zloopamo skozi vrednosti in ločeno pohandlamo veljavne in neveljavnej
while ( $row2 = mysqli_fetch_assoc ( $sql2 )) {
# po potrebi prevedemo naslov
$naslov = Language :: getInstance () -> srv_language_vrednost ( $row2 [ 'id' ]);
if ( $naslov == null || $naslov == '' ) {
$naslov = $row2 [ 'naslov' ];
}
// Datapiping
$naslov = Helper :: dataPiping ( $naslov );
if (( int ) $row2 [ 'other' ] == 0 ) {
# normalna vrednost
# po potrebi dodamo prelom
if ( $taWidth > 40 && $row2 [ 'vrstni_red' ] > 1 ) {
echo '<br>' ;
}
# če imamo enoto na levi jo izpišemo
if ( $row [ 'enota' ] == 1 ) {
echo $naslov ;
}
echo ' <input type="text" class="width_' . $taWidth . '" name="vrednost_' . $spremenljivka . '[]"'
#. ' id="vrednost_'.$spremenljivka.'_'.$row2['vrstni_red'].'" value="'.$value[$row2['vrstni_red']].'"'
. ' id="spremenljivka_' . $spremenljivka . '_vrednost_' . $row2 [ 'vrstni_red' ] . '" value="' . ( ! $missing ? $value [ $row2 [ 'vrstni_red' ]] : '' ) . '"'
. ' onkeypress="checkNumber(this, ' . $row [ 'cela' ] . ', ' . $row [ 'decimalna' ] . ');"'
. ' onkeyup="checkNumber(this, ' . $row [ 'cela' ] . ', ' . $row [ 'decimalna' ] . '); checkBranching();"'
. ( ! $missing ? '' : ' disabled' ) . '> ' . " \n " ;
# če imamo enoto na desni jo izpišemo
if ( $row [ 'enota' ] == 2 ) {
echo $naslov ;
}
2022-06-02 01:36:24 +02:00
echo '<label for="spremenljivka_' . $spremenljivka . '_vrednost_' . $row2 [ 'vrstni_red' ] . '" ' . ( $row [ 'ranking_k' ] == '1' && get ( 'mobile' ) == 0 ? ' style="display:none;"' : '' ) . '>' ;
2020-08-14 13:36:36 +02:00
echo '</label>' ;
} else {
# imamo polje drugo - ne vem, zavrnil...
$array_others [ $row2 [ 'id' ]] = array (
'naslov' => $naslov ,
'vrstni_red' => $row2 [ 'vrstni_red' ],
'value' => $text [ $row2 [ 'vrstni_red' ]],
);
}
//omejitev vnosa
if ( $row [ 'vsota_show' ] == 1 && ( $row [ 'ranking_k' ] != '1' /*|| get('mobile') != 0*/ )) {
if ( $row2 [ 'vrstni_red' ] > 1 )
echo ' <label class="limit">' . $limit2 . '</label>' ;
else
echo ' <label class="limit">' . $limit . '</label>' ;
}
}
// slider na PC, no mobile
if ( $row [ 'ranking_k' ] == '1' ) { //slider na PC, tablici in mobilniku
$spremenljivkaParams = new enkaParameters ( $row [ 'params' ]);
$slider_handle = ( $spremenljivkaParams -> get ( 'slider_handle' ) ? $spremenljivkaParams -> get ( 'slider_handle' ) : 0 );
$slider_window_number = ( $spremenljivkaParams -> get ( 'slider_window_number' ) ? $spremenljivkaParams -> get ( 'slider_window_number' ) : 0 );
$slider_nakazi_odgovore = ( $spremenljivkaParams -> get ( 'slider_nakazi_odgovore' ) ? $spremenljivkaParams -> get ( 'slider_nakazi_odgovore' ) : 0 ); //za checkbox
$slider_MinMaxNumLabelNew = ( $spremenljivkaParams -> get ( 'slider_MinMaxNumLabelNew' ) ? $spremenljivkaParams -> get ( 'slider_MinMaxNumLabelNew' ) : 0 );
$slider_MinMaxLabel = ( $spremenljivkaParams -> get ( 'slider_MinMaxLabel' ) ? $spremenljivkaParams -> get ( 'slider_MinMaxLabel' ) : 0 );
$slider_VmesneNumLabel = ( $spremenljivkaParams -> get ( 'slider_VmesneNumLabel' ) ? $spremenljivkaParams -> get ( 'slider_VmesneNumLabel' ) : 0 );
$slider_VmesneDescrLabel = ( $spremenljivkaParams -> get ( 'slider_VmesneDescrLabel' ) ? $spremenljivkaParams -> get ( 'slider_VmesneDescrLabel' ) : 0 );
$slider_VmesneCrtice = ( $spremenljivkaParams -> get ( 'slider_VmesneCrtice' ) ? $spremenljivkaParams -> get ( 'slider_VmesneCrtice' ) : 0 );
$slider_handle_step = ( $spremenljivkaParams -> get ( 'slider_handle_step' ) ? $spremenljivkaParams -> get ( 'slider_handle_step' ) : 1 );
$slider_MinLabel = ( $spremenljivkaParams -> get ( 'slider_MinLabel' ) ? $spremenljivkaParams -> get ( 'slider_MinLabel' ) : " Minimum " );
$slider_MaxLabel = ( $spremenljivkaParams -> get ( 'slider_MaxLabel' ) ? $spremenljivkaParams -> get ( 'slider_MaxLabel' ) : " Maximum " );
if ( get ( 'lang_id' ) != null ){
$lang_id = get ( 'lang_id' );
$ank_id = get ( 'anketa' );
$sqlString = " SELECT label, label_id FROM srv_language_slider WHERE ank_id=' $ank_id ' AND spr_id=' $spremenljivka ' AND lang_id=' $lang_id ' ORDER BY label_id " ;
$sqlSlider = sisplet_query ( $sqlString );
while ( $row = mysqli_fetch_array ( $sqlSlider )) {
if ( $row [ 'label_id' ] == 1 ){
$MinLabel = $row [ 'label' ];
}
elseif ( $row [ 'label_id' ] == 2 ){
$MaxLabel = $row [ 'label' ];
} elseif ( $row [ 'label_id' ] == 0 ){
$custom = $row [ 'label' ];
}
}
if ( $custom != '' ){
$custom_ar = explode ( '; ' , $custom ); //polje za prevedene opisne labele drsnika
}
// Ce slucajno nimamo prevedeno uporabimo original
$MinLabel = ( $MinLabel == '' ) ? ( $spremenljivkaParams -> get ( 'MinLabel' ) ? $spremenljivkaParams -> get ( 'MinLabel' ) : self :: $lang [ 'srv_new_text' ]) : $MinLabel ;
$MaxLabel = ( $MaxLabel == '' ) ? ( $spremenljivkaParams -> get ( 'MaxLabel' ) ? $spremenljivkaParams -> get ( 'MaxLabel' ) : self :: $lang [ 'srv_new_text' ]) : $MaxLabel ;
}
else {
$MinLabel = ( $spremenljivkaParams -> get ( 'MinLabel' ) ? $spremenljivkaParams -> get ( 'MinLabel' ) : self :: $lang [ 'srv_new_text' ]);
$MaxLabel = ( $spremenljivkaParams -> get ( 'MaxLabel' ) ? $spremenljivkaParams -> get ( 'MaxLabel' ) : self :: $lang [ 'srv_new_text' ]);
}
$slider_NumofDescrLabels = ( $spremenljivkaParams -> get ( 'slider_NumofDescrLabels' ) ? $spremenljivkaParams -> get ( 'slider_NumofDescrLabels' ) : 5 );
$slider_DescriptiveLabel_defaults = ( $spremenljivkaParams -> get ( 'slider_DescriptiveLabel_defaults' ) ? $spremenljivkaParams -> get ( 'slider_DescriptiveLabel_defaults' ) : 0 );
$slider_DescriptiveLabel_defaults_naslov1 = ( $spremenljivkaParams -> get ( 'slider_DescriptiveLabel_defaults_naslov1' ) ? $spremenljivkaParams -> get ( 'slider_DescriptiveLabel_defaults_naslov1' ) : 0 );
$displayMinMaxLabel = ( $slider_MinMaxLabel == 0 ) ? ' style="display:none;"' : '' ;
//za custom opisne labele
//moznosti urejanja opisnih label drsnika
if ( $slider_VmesneDescrLabel ){
for ( $i = 1 ; $i <= $slider_NumofDescrLabels ; $i ++ ){
if ( $custom == '' ){ //ce nimamo prevoda opisnih label za drsnika
$slider_CustomDescriptiveLabelsTmp = ( $spremenljivkaParams -> get ( 'slider_Labela_opisna_' . $i ) ? $spremenljivkaParams -> get ( 'slider_Labela_opisna_' . $i ) : '' );
} else { //ce mamo prevod opisnih label za drsnika
$slider_CustomDescriptiveLabelsTmp = $custom_ar [ $i - 1 ];
}
$slider_CustomDescriptiveLabelsTmp = preg_replace ( " / \ s| / " , ' ' , $slider_CustomDescriptiveLabelsTmp ); //za odstranitev morebitnih presledkov, ki lahko delajo tezave pri polju za drsnik
if ( $i == 1 ){
$slider_CustomDescriptiveLabels = $slider_CustomDescriptiveLabelsTmp ;
} else {
$slider_CustomDescriptiveLabels .= " ; " . $slider_CustomDescriptiveLabelsTmp ;
}
}
}
//za custom opisne labele - konec
//spremenljivke za labele podrocij
$slider_labele_podrocij = ( $spremenljivkaParams -> get ( 'slider_labele_podrocij' ) ? $spremenljivkaParams -> get ( 'slider_labele_podrocij' ) : 0 ); //za checkbox
$display_labele_podrocij = ( $slider_labele_podrocij == 0 ) ? ' style="display:none;"' : '' ;
$slider_StevLabelPodrocij = ( $spremenljivkaParams -> get ( 'slider_StevLabelPodrocij' ) ? $spremenljivkaParams -> get ( 'slider_StevLabelPodrocij' ) : 3 );
$slider_table_td_width = 100 / $slider_StevLabelPodrocij ; //spremenljivka za razporeditev sirine sliderja po podrocjih
for ( $i = 1 ; $i <= $slider_StevLabelPodrocij ; $i ++ ) {
$slider_Labela_podrocja [ $i ] = ( $spremenljivkaParams -> get ( 'slider_Labela_podrocja_' . $i . '' ) ? $spremenljivkaParams -> get ( 'slider_Labela_podrocja_' . $i . '' ) : self :: $lang [ 'srv_new_text' ]);
}
echo '<div style="width:95%">' ;
$default_value = round (( $slider_MaxNumLabel - $slider_MinNumLabel ) / 2 ) + $slider_MinNumLabel ;
$vrednost = ( $value [ 1 ] == '' ) ? $default_value : $value [ 1 ];
if ( get ( 'mobile' ) == 0 || get ( 'mobile' ) == 2 ) { //ce PC ali tablica
echo '<table ' . $displayMinMaxLabel . ' class="slider_minmaxlabel">' ;
}
else if ( get ( 'mobile' ) == 1 ) { //ce mobilnik
echo '<table ' . $displayMinMaxLabel . ' class="slider_minmaxlabel_mobile">' ;
}
echo '<tr>' ;
echo '<td align="left">' . $MinLabel . '</td>' ;
echo '<td align="right">' . $MaxLabel . '</td>' ;
echo '</tr>' ;
echo '</table>' ;
echo '<div class="sliderText" id="sliderText_' . $spremenljivka . '">' . $vrednost . '</div>' ;
// ce PC ali tablica
if ( get ( 'mobile' ) == 0 || get ( 'mobile' ) == 2 ) {
echo '<div id="slider_' . $spremenljivka . '" class="slider"></div>' ;
$slider_podrocja_table_width = 85 ;
}
// ce mobilnik
else if ( get ( 'mobile' ) == 1 ) {
echo '<div id="slider_' . $spremenljivka . '" class="slider_mobile"></div>' ;
$slider_podrocja_table_width = 100 ;
}
echo '</div>' ;
?>
< script >
$ ( function () {
slider_init ( < ? = get ( 'mobile' ) ?> , <?=$spremenljivka?>, <?=$slider_MinNumLabel?>, <?=$slider_MaxNumLabel?>, <?=$vrednost?>, <?=$slider_handle?>, <?=$slider_handle_step?>, <?=$slider_VmesneNumLabel?>, <?=$slider_VmesneCrtice?>, <?=$slider_MinMaxNumLabelNew?>, <?=$slider_window_number?>, '<?=$slider_DescriptiveLabel_defaults_naslov1?>', <?=$slider_DescriptiveLabel_defaults?>, <?=$default_value?>, <?=$slider_nakazi_odgovore?>, <?=$slider_VmesneDescrLabel?>, '<?=$slider_CustomDescriptiveLabels?>', '<?=$custom?>');
});
</ script >
< ?
echo '<br /><br />' ;
//tabela za labele podrocij in podrocja
echo '<table ' . $display_labele_podrocij . ' style="width:' . $slider_podrocja_table_width . '%; left: 5px;">' ;
//vrstica z graficnim prikazom podrocja
echo '<tr>' ;
for ( $i = 1 ; $i <= $slider_StevLabelPodrocij ; $i ++ ) {
echo '<td width="' . $slider_table_td_width . '%" class="label_podrocje_prikaz"><div ></div></td>' ;
}
echo '</tr>' ;
//vrstica z labelami podrocji
echo '<tr>' ;
for ( $j = 1 ; $j <= $slider_StevLabelPodrocij ; $j ++ ) {
echo '<td class="inline_labele_podrocij"><div id="slider_Labela_podrocja_' . $j . '_' . $spremenljivka . '" name="slider_Labela_podrocja_' . $j . '" class="inline_labele_podrocij" style="float:none; display:inline" ' . ( strpos ( $slider_Labela_podrocja [ $j ], self :: $lang [ 'srv_new_text' ]) !== false || get ( 'lang_id' ) != null ? ' default="1"' : '' ) . '>' . $slider_Labela_podrocja [ $j ] . '</div></td>' ;
}
echo '</tr>' ;
echo '</table>' ;
}
echo '</div>' ;
if ( count ( $array_others ) > 0 ) {
$missing = 1 ;
foreach ( $array_others AS $oKey => $other ) {
# missing vrednost
$_id = 'missing_value_spremenljivka_' . $spremenljivka . '_vrednost_' . $oKey ;
if ( $srv_data_vrednost [ $oKey ]) {
$sel = true ;
} else {
$sel = false ;
}
# če nimamo missingov in je trenutni enak izbranemu, ali če imamo misinge inje trenutni enak izbranemu misingu
$_checked = ( $sel ? ' checked' : '' );
// Tole ni definirano in ne more delat?? zakaj bi sploh kadarkoli bil missing disabled??
//$_disabled = ($is_missing && ($row1['other'] == 0 || $row1['other'] == 1) ? true : false);
$_disabled = false ;
// Ali skrivamo missing ne vem in ga prikazemo sele ob opozorilu
$hide_missing = false ;
$already_set_mv = array ();
$sql_grid_mv = sisplet_query ( " SELECT naslov, other FROM srv_vrednost WHERE spr_id=' " . $spremenljivka . " ' AND other != 0 " );
while ( $row_grid_mv = mysqli_fetch_array ( $sql_grid_mv )) {
$already_set_mv [ $row_grid_mv [ 'other' ]] = $row_grid_mv [ 'naslov' ];
}
if ((( $row [ 'alert_show_99' ] > 0 && isset ( $already_set_mv [ '-99' ]) && $already_set_mv [ '-99' ] == $other [ 'naslov' ])
|| ( $row [ 'alert_show_98' ] > 0 && isset ( $already_set_mv [ '-98' ]) && $already_set_mv [ '-98' ] == $other [ 'naslov' ])
|| ( $row [ 'alert_show_97' ] > 0 && isset ( $already_set_mv [ '-97' ]) && $already_set_mv [ '-97' ] == $other [ 'naslov' ]))
&& $_checked == ''
)
$hide_missing = true ;
echo '<div class="variabla' . $oblika [ 'cssFloat' ] . ' missing" id="vrednost_if_' . $oKey . '"' . ' ' . ( $hide_missing ? ' style="display:none"' : '' ) . '>' ;
echo '<input type="checkbox" name="vrednost_mv_' . $spremenljivka . '[]" id="' . $_id . '" value="' . $oKey . '"' . $_checked . ( $_disabled ? ' disabled' : '' ) . ' data-calculation="0" onclick="checkBranching(); ' . ( $checkbox_limit > 0 ? 'checkboxLimit(\'' . $spremenljivka . '\', \'' . $oKey . '\', \'' . $checkbox_limit . '\');' : '' ) . ' checkMissing(this);"> ' ;
// Font awesome checkbox
2022-06-02 01:36:24 +02:00
echo '<label for="' . $_id . '">' ;
2020-08-14 13:36:36 +02:00
echo '<span class="enka-checkbox-radio" ' . (( Helper :: getCustomCheckbox () != 0 ) ? 'style="font-size:' . Helper :: getCustomCheckbox () . 'px;"' : '' ) . '></span>' ;
echo '' . $other [ 'naslov' ] . '</label>' ;
echo '</div>' ;
}
}
SystemVariable :: display ( $spremenljivka , $oblika );
}
}