diff --git a/admin/survey/classes/class.Vprasanje.php b/admin/survey/classes/class.Vprasanje.php index f443dcfa2..bd3a019a1 100644 --- a/admin/survey/classes/class.Vprasanje.php +++ b/admin/survey/classes/class.Vprasanje.php @@ -1247,7 +1247,7 @@ class Vprasanje { if($row['tip'] <= 3) $this->edit_stat(); - if ($row['tip'] == 6) + if ($row['tip'] == 6 || $row['tip'] == 16 || $row['tip'] == 19 || $row['tip'] == 20) $this->edit_grid_dynamic(); if ($row['tip'] == 1 || $row['tip'] == 6) { @@ -3327,32 +3327,52 @@ class Vprasanje { echo ''; } - // dinamicen multigrid + // Prilagojen multigrid function edit_grid_dynamic () { global $lang; $row = Cache::srv_spremenljivka($this->spremenljivka); + $spremenljivkaParams = new enkaParameters($row['params']); echo '
'; + echo '
'; - echo ' '; + echo ' '; + + $pc_tables = $spremenljivkaParams->get('pc_tables'); - echo ' '; - echo ' '; + echo ' '; + echo ' '; + echo ' '; + echo ' '; echo ' '; echo ' '; echo '
'; + + echo '
'; + + echo ' '; + + $mobile_tables = $spremenljivkaParams->get('mobile_tables'); + + echo ' '; + echo ' '; + echo ' '; + + echo '
'; + + echo '
'; } @@ -6603,6 +6623,8 @@ class Vprasanje { || isset($_POST['sbSizeVse']) || isset($_POST['prevAnswers']) || isset($_POST['disabled_vprasanje']) + || isset($_POST['mobile_tables']) + || isset($_POST['pc_tables']) || isset($_POST['slider_handle']) || isset($_POST['slider_MinMaxNumLabel']) || isset($_POST['slider_MinMaxLabel']) @@ -6735,6 +6757,10 @@ class Vprasanje { $newParams->set('prevAnswers', $_POST['prevAnswers']); if (isset($_POST['disabled_vprasanje'])) $newParams->set('disabled_vprasanje', $_POST['disabled_vprasanje']); + if (isset($_POST['mobile_tables'])) + $newParams->set('mobile_tables', $_POST['mobile_tables']); + if (isset($_POST['pc_tables'])) + $newParams->set('pc_tables', $_POST['pc_tables']); if ( isset($_POST['slider_handle']) ) $newParams->set('slider_handle', $_POST['slider_handle']); if (isset($_POST['slider_MinMaxNumLabel'])) diff --git a/main/survey/app/Controllers/Vprasanja/MultigridMobileController.php b/main/survey/app/Controllers/Vprasanja/MultigridMobileController.php index 30696f9e7..f747bb2b2 100644 --- a/main/survey/app/Controllers/Vprasanja/MultigridMobileController.php +++ b/main/survey/app/Controllers/Vprasanja/MultigridMobileController.php @@ -61,7 +61,9 @@ class MultigridMobileController extends Controller{ // Nastavitev za prilagoditev mobilnih tabel (z razpiranjem ali brez) SurveySetting::getInstance()->Init(get('anketa')); - $tables_setting = (get('mobile') == 1) ? SurveySetting::getInstance()->getSurveyMiscSetting('mobile_tables') : SurveySetting::getInstance()->getSurveyMiscSetting('pc_tables'); + + // Pridobimo nastavitve za prikaz tabele + $tables_setting = self::getInstance()->getTableSettings($spremenljivkaParams); $gridAlign = (($spremenljivkaParams->get('gridAlign') > 0) ? $spremenljivkaParams->get('gridAlign') : 0); @@ -386,8 +388,10 @@ class MultigridMobileController extends Controller{ // Nastavitev za prilagoditev mobilnih tabel (z razpiranjem ali brez) SurveySetting::getInstance()->Init(get('anketa')); - $tables_setting = (get('mobile') == 1) ? SurveySetting::getInstance()->getSurveyMiscSetting('mobile_tables') : SurveySetting::getInstance()->getSurveyMiscSetting('pc_tables'); - + + // Pridobimo nastavitve za prikaz tabele + $tables_setting = self::getInstance()->getTableSettings($spremenljivkaParams); + $gridAlign = (($spremenljivkaParams->get('gridAlign') > 0) ? $spremenljivkaParams->get('gridAlign') : 0); $cssAlign = ''; @@ -511,10 +515,6 @@ class MultigridMobileController extends Controller{ echo ' '; - // Puscica za razpiranje ce imamo vklopljene mobilne tabele z razpiranjem - /*if($tables_setting == 2) - echo '';*/ - echo ''; @@ -699,6 +699,217 @@ class MultigridMobileController extends Controller{ echo ''; } + /** + * @desc prikaze vnosno polje za dinamicen multigrid (vcash postopno resevanje) + */ + public function radioHorizontalDynamicMultigrid($spremenljivka){ + + $loop_id = get('loop_id') == null ? " IS NULL" : " = '" . get('loop_id') . "'"; + + $row = Model::select_from_srv_spremenljivka($spremenljivka); + + $spremenljivkaParams = new enkaParameters($row['params']); + $gridWidth = (($spremenljivkaParams->get('gridWidth') > 0) ? $spremenljivkaParams->get('gridWidth') : 30); + + $diferencial_trak = ($spremenljivkaParams->get('diferencial_trak') ? $spremenljivkaParams->get('diferencial_trak') : 0); //za checkbox trak + + + // izracuni za sirino celic + $size = $row['grids']; + + # polovimo vrednosti gridov, prevedmo naslove in hkrati preverimo ali imamo missinge + $srv_grids = array(); + $mv_count = 0; # koliko je stolpcev z manjkajočimi vrednostmi + # če polje other != 0 je grid kot missing + $sql_grid = sisplet_query("SELECT * FROM srv_grid WHERE spr_id='$row[id]' ORDER BY vrstni_red"); + + while ($row_grid = mysqli_fetch_assoc($sql_grid)) { + # priredimo naslov če prevajamo anketo + $naslov = Language::srv_language_grid($row['id'], $row_grid['id']); + if ($naslov != '') { + $row_grid['naslov'] = $naslov; + } + $srv_grids[$row_grid['id']] = $row_grid; + # če je označena kot manjkajoča jo prištejemo k manjkajočim + if ($row_grid['other'] != 0) { + $mv_count++; + } + + } + + # če imamo mankajoče potem dodamo še en prazen stolpec za razmak + if ($mv_count > 0) { + $size += 1 + $mv_count; + } + if ($row['enota'] == 1) { + $size += 2; + } + + $size += 1; + + + $orderby = Model::generate_order_by_field($spremenljivka, get('usr_id')); + + # cache tabele srv_data_grid, da se ne dela vsakic posebej nov query (preberemo enkrat vse odgovore userja) + $srv_data_grid = array(); + $sql_grid = sisplet_query("SELECT * FROM srv_data_grid" . get('db_table') . " WHERE spr_id='$row[id]' AND usr_id='" . get('usr_id') . "' AND loop_id $loop_id"); + while ($row_grid = mysqli_fetch_array($sql_grid)) { + $srv_data_grid[$row_grid['vre_id']] = $row_grid; + } + + # loop skozi srv_vrednost, da izpišemo vrstice z vrednostmi + $gridRow = 1; + $hide = false; + $sql1 = sisplet_query("SELECT * FROM srv_vrednost WHERE spr_id='$row[id]' ORDER BY FIELD(vrstni_red, $orderby)"); + $countVar = mysqli_num_rows($sql1); + + // Stevilo vseh vrednosti + echo ''; + // Indikator da v js vemo ali smo ravnokar naloudali stran ali pa smo samo premaknili vrstico (potrebno zaradi prikazovanja glede na ife v dolocenih primerih) + echo ''; + + while ($row1 = mysqli_fetch_array($sql1)) { + # po potrebi prevedemo naslov + $naslov = Language::getInstance()->srv_language_vrednost($row1['id']); + if ($naslov != '') { + $row1['naslov'] = $naslov; + } + # preverimo izbrano vrednost + $grid_id = $srv_data_grid[$row1['id']]['grd_id']; + + # ugotovimo ali je na katerem gridu predhodno izbran missing + $is_missing = false; + if (count($srv_grids) > 0) { + foreach ($srv_grids AS $i => $srv_grid) { + if ($srv_grid['other'] != 0 && $srv_grids[$i]['id'] == $grid_id) { + $is_missing = true; + } + } + } + + // Datapiping + $row1['naslov'] = Helper::dataPiping($row1['naslov']); + + $ifDisplay = ($row1['if_id'] > 0 ? ' if_hide' : ''); + // Ce lahko prikazemo vrstico (se ni nobena izrisana in ni skrita z ifom) -> naslednjih ne izrisujemo vec + if ($hide == false && $row1['hidden'] == 0 && $row1['if_id'] == 0) { + $gridRowDisplay = ''; + $hide = true; + } else + $gridRowDisplay = ' style="display:none;"'; + + echo '
' . "\n"; + + echo '
'; + + echo '
'; + echo $row1['naslov']; + if ($row1['other'] == 1) { + $sql3 = sisplet_query("SELECT text FROM srv_data_text" . get('db_table') . " WHERE spr_id='$spremenljivka' AND vre_id='$row1[id]' AND usr_id='" . get('usr_id') . "' AND loop_id $loop_id"); + $row3 = mysqli_fetch_array($sql3); + + $otherWidth = ($spremenljivkaParams->get('otherWidth') ? $spremenljivkaParams->get('otherWidth') : -1); + $otherHeight = ($spremenljivkaParams->get('otherHeight') ? $spremenljivkaParams->get('otherHeight') : 1); + + if ($otherHeight > 1) + echo ' '; + else + echo ' '; + + + //echo ' '; + } + echo '
'; + + if (count($srv_grids) > 0) { + $first_missing_value = true; + foreach ($srv_grids AS $i => $srv_grid) { + if ((string)$srv_grid['other'] != '0' && $first_missing_value == true) { + # dodamo spejs pred manjkajočimi vrednostmi + $first_missing_value = false; + } + $value = $srv_grids[$i]['id']; + $grid_title = $srv_grids[$i]['naslov']; + + // Datapiping + $grid_title = Helper::dataPiping($grid_title); + + $smeski =''; + if(in_array($row['enota'], [11,12])){ + $smeski = 'visual-radio-scale visual-radio-block'; + } + + # izpišemo radio grida + echo '
'; + if ($srv_grid['other'] != 0) { + # imamo missing vrednost + echo ''; + } else { + # ni missing vrednost + echo ''; + } + echo '
'; + } + } + + // Dodamo se drug naslov ce imamo semanticni diferencial + if ($row['enota'] == 1) { + + // Datapiping + $row1['naslov2'] = Helper::dataPiping($row1['naslov2']); + + echo '
'; + echo $row1['naslov2']; + echo '
'; + } + + echo '
'; + + + echo ''; + echo ' ' . "\n"; + for ($i = 1; $i <= $countVar; $i++) { + echo ' '; + } + echo '
' . $i . '
' . "\n"; + echo ''; + + + echo '
' . "\n"; + + $bg++; + $gridRow++; + } + } + /** * @desc prikaze vnosno polje za tabelo checkbox @@ -714,8 +925,10 @@ class MultigridMobileController extends Controller{ // Nastavitev za prilagoditev mobilnih tabel (z razpiranjem ali brez) SurveySetting::getInstance()->Init(get('anketa')); - $tables_setting = (get('mobile') == 1) ? SurveySetting::getInstance()->getSurveyMiscSetting('mobile_tables') : SurveySetting::getInstance()->getSurveyMiscSetting('pc_tables'); - + + // Pridobimo nastavitve za prikaz tabele + $tables_setting = self::getInstance()->getTableSettings($spremenljivkaParams); + $gridAlign = (($spremenljivkaParams->get('gridAlign') > 0) ? $spremenljivkaParams->get('gridAlign') : 0); @@ -931,8 +1144,10 @@ class MultigridMobileController extends Controller{ // Nastavitev za prilagoditev mobilnih tabel (z razpiranjem ali brez) SurveySetting::getInstance()->Init(get('anketa')); - $tables_setting = (get('mobile') == 1) ? SurveySetting::getInstance()->getSurveyMiscSetting('mobile_tables') : SurveySetting::getInstance()->getSurveyMiscSetting('pc_tables'); - + + // Pridobimo nastavitve za prikaz tabele + $tables_setting = self::getInstance()->getTableSettings($spremenljivkaParams); + $gridAlign = (($spremenljivkaParams->get('gridAlign') > 0) ? $spremenljivkaParams->get('gridAlign') : 0); $cssAlign = ''; @@ -1265,8 +1480,10 @@ class MultigridMobileController extends Controller{ // Nastavitev za prilagoditev mobilnih tabel (z razpiranjem ali brez) SurveySetting::getInstance()->Init(get('anketa')); - $tables_setting = (get('mobile') == 1) ? SurveySetting::getInstance()->getSurveyMiscSetting('mobile_tables') : SurveySetting::getInstance()->getSurveyMiscSetting('pc_tables'); - + + // Pridobimo nastavitve za prikaz tabele + $tables_setting = self::getInstance()->getTableSettings($spremenljivkaParams); + $gridAlign = (($spremenljivkaParams->get('gridAlign') > 0) ? $spremenljivkaParams->get('gridAlign') : 0); $cssAlign = ''; @@ -1614,4 +1831,29 @@ class MultigridMobileController extends Controller{ // END grid_mobile echo ''; } + + + // Pridobimo nastavitve tabele (prikaz na mobile ali pc) + public function getTableSettings($spremenljivkaParams){ + + // Pridobimo nastavitve za mobile tabele + if(get('mobile') == 1){ + $tables_setting = $spremenljivkaParams->get('mobile_tables'); + + // Ce nimamo individualnih nastavitev pridobimo splosne nastavitve tabel + if($tables_setting == 0) + $tables_setting = SurveySetting::getInstance()->getSurveyMiscSetting('mobile_tables'); + + } + // Pridobimo nastavitve za pc tabele + else{ + $tables_setting = $spremenljivkaParams->get('pc_tables'); + + // Ce nimamo individualnih nastavitev pridobimo splosne nastavitve tabel + if($tables_setting == 0) + $tables_setting = SurveySetting::getInstance()->getSurveyMiscSetting('pc_tables'); + } + + return $tables_setting; + } } \ No newline at end of file diff --git a/main/survey/app/Controllers/Vprasanja/VprasanjaController.php b/main/survey/app/Controllers/Vprasanja/VprasanjaController.php index 32aac2383..fd8b96bf2 100644 --- a/main/survey/app/Controllers/Vprasanja/VprasanjaController.php +++ b/main/survey/app/Controllers/Vprasanja/VprasanjaController.php @@ -227,23 +227,17 @@ class VprasanjaController extends Controller $zaporedna++; } - + // JS za mobilno razpiranje tabel - SurveySetting::getInstance()->Init(get('anketa')); - $mobile_tables = SurveySetting::getInstance()->getSurveyMiscSetting('mobile_tables'); - $pc_tables = SurveySetting::getInstance()->getSurveyMiscSetting('pc_tables'); - - if(($mobile_tables == 2 && get('mobile') == 1) || ($pc_tables == 2 && get('mobile') != 1)){ - - echo ''; - } + echo ''; + // JS za razpiranje tabel znotraj bloka s to nastavitvijo echo '