2260 lines
99 KiB
PHP
2260 lines
99 KiB
PHP
<?php
|
||
|
||
/** *
|
||
* Ime: Samoocena hierarhija
|
||
* Opis: Class skrbi za izdelavo hierarhije za administratorja/osebo s
|
||
* pravicami za gradnjo hierarhije na nivoju posamezne ankete Avtor: Robert
|
||
* Šmalc
|
||
*/
|
||
|
||
namespace Hierarhija;
|
||
|
||
use Cache;
|
||
use Common;
|
||
use Export;
|
||
use finfo;
|
||
use Help;
|
||
use Hierarhija\Model\HierarhijaOnlyQuery;
|
||
use Hierarhija\Model\HierarhijaQuery;
|
||
use MailAdapter;
|
||
use SurveyInfo;
|
||
use SurveySetting;
|
||
use TrackingClass;
|
||
use function is_null;
|
||
|
||
|
||
class Hierarhija {
|
||
|
||
#v konstruktor poberemo vse globalne spremenljivke, ki jih omenjen razrred uporablja
|
||
protected $anketa;
|
||
|
||
/**
|
||
* Funkcija poišče ustrezne srv_vrednost-i za določeno spremenljivko, kjer
|
||
* moramo izbrati "variablo" te spremenljivke
|
||
*
|
||
* @param (string) $var
|
||
*
|
||
* @return (array) or null
|
||
*/
|
||
|
||
protected $var;
|
||
|
||
public function __construct($anketa)
|
||
{
|
||
global $lang, $global_user_id, $site_url, $admin_type;
|
||
|
||
$this->anketa = $anketa;
|
||
$this->lang = $lang;
|
||
$this->hierarhija_type = HierarhijaHelper::preveriTipHierarhije($this->anketa);
|
||
$this->user = $global_user_id;
|
||
$this->admin_type = $admin_type;
|
||
$this->url = $site_url;
|
||
$this->modul = \SurveyInfo::getSurveyModules();
|
||
}
|
||
|
||
/**
|
||
* Inicializacija hierarhije
|
||
*
|
||
* @param
|
||
*
|
||
* @return
|
||
*/
|
||
public static function hierarhijaInit($anketa)
|
||
{
|
||
$new = new Hierarhija($anketa);
|
||
$new->DolociPraviceUporabniku();
|
||
$new->izrisisSistemskoVprsanjeVloga();
|
||
$new->hierarhijaSuperadminSifranti();
|
||
}
|
||
|
||
/**
|
||
* Uporabniku določimo pravice, če vključi anketo dobi type 1 - admin
|
||
* hierarhije
|
||
*/
|
||
public function dolociPraviceUporabniku()
|
||
{
|
||
if (is_null($this->hierarhija_type)) {
|
||
|
||
// Preverimo, kdo je anketo ustvaril
|
||
$sql_dostop = sisplet_query("SELECT type FROM srv_hierarhija_users WHERE anketa_d='".$this->anketa."' AND user_id='".$this->user."'", "obj");
|
||
|
||
if(empty($sql_dostop))
|
||
$user_query = sisplet_query("INSERT INTO srv_hierarhija_users (user_id, anketa_id, type) VALUES ('".$this->user."', '$this->anketa', 1)");
|
||
|
||
|
||
if (!$user_query && $this->admin_type == 0) {
|
||
echo mysqli_error($GLOBALS['connect_db']);
|
||
}
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Ko se kativira anketa se določi prvo sistemsko vprašanje VLOGA (učenece,
|
||
* učitelj) to vprašanje samo 1 izrišemo in potem nikoli več
|
||
*/
|
||
public function izrisisSistemskoVprsanjeVloga()
|
||
{
|
||
//Preverimo, če je sistemsko vprašanje vloga že ustvarjeno
|
||
$grup_id = sisplet_query("SELECT id, vrstni_red FROM srv_grupa WHERE ank_id='" . $this->anketa . "' ORDER BY vrstni_red LIMIT 0,1", "obj");
|
||
$sql_vpisane_spr = sisplet_query("SELECT id, gru_id, variable, vrstni_red FROM srv_spremenljivka WHERE gru_id='" . $grup_id->id . "' AND variable='vloga'");
|
||
|
||
//V kolikor je vloga že vnešena in ni postavljena na prvo mesto, potem jo moramo premakniti na prvo mesto
|
||
if (mysqli_num_rows($sql_vpisane_spr) == 0) {
|
||
|
||
//preštevilčimo ostala vprašanja za 1
|
||
(new HierarhijaAjax($this->anketa))->prestevilciBranching(0, TRUE);
|
||
|
||
//vedno ustavimo vlogo (učenec - učitelj)
|
||
$vloga = [$grup_id->id, 'vloga', 'vloga', '2', '1'];
|
||
(new HierarhijaQuery())->insertSpremenljivkaBranching($vloga, NULL, $this->anketa, 1);
|
||
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Prikaže nastavitve za dodajanje nivojev in šifrantov - SUPERADMIN
|
||
* HIERARHIJA
|
||
*
|
||
* @return html page
|
||
*/
|
||
public function hierarhijaSuperadminSifranti()
|
||
{
|
||
$aktivna = $this->preveriCeJeAktivirana();
|
||
$this->preverimoCeJeVnesenaStruktura();
|
||
|
||
if ($_GET['e'] == 'null') {
|
||
echo '<div style="color: #ffa608; font-style: italic;">' . $this->lang['srv_hierarchy_element_missing'] . '</div>';
|
||
}
|
||
|
||
if ($aktivna && (is_null($this->hierarhija_type) || $this->hierarhija_type < 4)) {
|
||
echo '<div id="hierarhija-app">';
|
||
|
||
// meni na levi strani
|
||
echo '<div class="hierarhija-levi-meni">';
|
||
echo '<div>' . $this->lang['srv_hierarchy_save_list'] . '</div>';
|
||
echo '<div class="h-tabela">';
|
||
echo '<table><tbody>';
|
||
echo '<tr v-for="shranjena in shranjenaHierarhija">';
|
||
echo '<td class="h-ime-shranjeno"
|
||
v-show="!imeHierarhije.urejanje"
|
||
v-on:click="pregledShranjeneHierarhije($index, shranjena.id, shranjena.struktura)"';
|
||
// v-on:click="uporabiShranjenoHierarhijo($index, shranjena.id, shranjena.struktura)"
|
||
echo 'v-bind:class="[{ \'active\': $index == imeHierarhije.index }]"
|
||
>
|
||
<div class="h-ime-prikaz">
|
||
{{ shranjena.ime }}
|
||
<span class="stevilo-evalvirancev" title="Število uporabnikov, ki so že dodani k strukturi" v-if="shranjena.stUporabnikov > 0">({{ shranjena.stEvalvirancev }})</span>
|
||
</div>
|
||
<td>';
|
||
echo '<td class="h-brisi-shranjeno" v-show="imeHierarhije.urejanje" v-on:click="izbrisiShranjenoHierarhijo($index, shranjena.id)"><span class="faicon delete_circle icon-orange_link" title="' . $this->lang['srv_hierarchy_help_1'] . '"></span></td>';
|
||
echo '<td class="h-ime-shranjeno"
|
||
v-show="imeHierarhije.urejanje"
|
||
v-on:click="imeHierarhije.index = $index"
|
||
v-bind:class="[{ \'editable-hierarhija\': $index == imeHierarhije.index && imeHierarhije.urejanje}]"
|
||
v-bind="{ contenteditable: $index == imeHierarhije.index && imeHierarhije.urejanje }"
|
||
v-on:blur="preimenujHierarhijo($index, shranjena.id)">
|
||
<div class="h-ime-prikaz h-urejanje">
|
||
{{ shranjena.ime }}
|
||
<span class="stevilo-evalvirancev" title="Število uporabnikov, ki so že dodani k strukturi" v-if="shranjena.stUporabnikov > 0 && imeHierarhije.index != $index"">({{ shranjena.stEvalvirancev }})</span>
|
||
</div>
|
||
<td>';
|
||
echo '</tr>';
|
||
echo '</tbody></table>';
|
||
echo '</div>';
|
||
echo '<div>
|
||
<span style="float: left; padding: 6px 15px 5px 0;">Urejanje</span>
|
||
<div class="onoffswitch" style="float: left; margin: 6px;">
|
||
<input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" v-model="imeHierarhije.urejanje" id="urejanje-imen" v-on:click="posodobiOpcijeHierarhije()">
|
||
<label class="onoffswitch-label" for="urejanje-imen">
|
||
<span class="onoffswitch-inner"></span>
|
||
<span class="onoffswitch-switch"></span>
|
||
</label>
|
||
</div>
|
||
</div>';
|
||
echo '<div style="float: left;">
|
||
<span style="margin: 10px 15px 0 0;display: inline-block;float: left;">Uvoz/Izvoz</span>
|
||
<span class="faicon import hierarhija-ikona"
|
||
title="Uvoz hierarhije"
|
||
style="margin: 8px 15px 0 0"
|
||
@click="uvozHierarhije"
|
||
></span>
|
||
<a href="index.php?anketa=' . $this->anketa . '&a=hierarhija_superadmin&m=' . M_ADMIN_IZVOZ_SIFRANTOV . '">
|
||
<span class="faicon export hierarhija-ikona"
|
||
title="Izvoz hierarhije"
|
||
style="margin: 8px 10px 0 0"
|
||
></span>
|
||
</a>
|
||
</div>';
|
||
echo '</div>';
|
||
|
||
// Uvodno besedilo, ko se aktivira modul hierarhija$anketa
|
||
echo '<div v-if="imeHierarhije.aktivna.length == 0 &&
|
||
imeHierarhije.shrani.length == 0 &&
|
||
previewHierarhije.ime.length == 0"
|
||
style="width: 650px;"
|
||
>';
|
||
echo '<h1>' . $this->lang['srv_hierarchy_wellcome_title'] . '</h1>';
|
||
echo $this->lang['srv_hierarchy_wellcome_text'] . '<br /><br />';
|
||
echo '<button class="btn btn-moder"
|
||
v-on:click="izbrisiCelotnoHierarhijo()"
|
||
style="float:right; margin: 20px 60px;"
|
||
>
|
||
Ustvari novo hierarhijo
|
||
</button>';
|
||
echo '</div>';
|
||
|
||
|
||
// Omogočimo predogled hierarhije
|
||
echo '<div class="hierarhija_fieldset" v-show="previewHierarhije.vklop && previewHierarhije.ime.length > 0" style="display:none;">';
|
||
echo '<h1>Predogled hierarhije: <span class="oranzna">{{ previewHierarhije.ime }}</span></h1>';
|
||
|
||
echo '<div v-if="shranjenaHierarhija[previewHierarhije.index] && shranjenaHierarhija[previewHierarhije.index].stUporabnikov > 0">Hierarhija ima {{ shranjenaHierarhija[previewHierarhije.index].stEvalvirancev }} evalvacij in {{ shranjenaHierarhija[previewHierarhije.index].stUporabnikov }} uporabnikov.</div>';
|
||
|
||
// Tabela nivojev in šifrantov
|
||
echo '<div id="primer-sifrantov" v-show="previewHierarhije.input.length > 0">';
|
||
echo '<table>';
|
||
echo '<thead style="text-align: left;">';
|
||
echo '<tr>';
|
||
echo '<th>' . $this->lang['srv_hierarchy_table_header_1'] . '</th>';
|
||
echo '<th>' . $this->lang['srv_hierarchy_table_header_2'] . '</th>';
|
||
echo '</tr>';
|
||
echo '</thead>';
|
||
echo '<tbody>';
|
||
|
||
// Vuejs dinamično kreiranje novih nivojev
|
||
echo '<tr id="nivo-{{ nivo.id }}" v-for="nivo in previewHierarhije.input" track-by="$index">';
|
||
echo '<td><label> {{ nivo.st}}. {{ nivo.ime }}</label></td>';
|
||
echo '<td><select name="nivo" data-opcije="{{ nivo.id }}">';
|
||
echo '<option value = "#" v-for="sifrant in nivo.sifranti">{{ sifrant.ime }}</option >';
|
||
echo '</select></td>';
|
||
echo '</tr>';
|
||
|
||
echo '</tbody></table></div>';
|
||
echo '<div v-else>Hierarhija je prazna in ima določen samo naslov.</div>';
|
||
|
||
// Gumbi
|
||
echo '<div style="padding:20px 10px; float: right;">';
|
||
echo '<button class="btn btn-moder" @click="izklopiPredogled()" style="margin: 0 10px;">' . $this->lang['back'] . '</button>';
|
||
echo '<button class="btn btn-moder"
|
||
@click="aktivirajIzbranoHierarhijo()"
|
||
v-if="previewHierarhije.input.length > 0"
|
||
>
|
||
Uporabi omenjeno hierarhijo
|
||
</button>';
|
||
echo '</div>';
|
||
echo '</div>';
|
||
|
||
|
||
// naslov hierarhije
|
||
echo '<div class="hierarhija_fieldset" v-if="(imeHierarhije.aktivna > 0 || imeHierarhije.shrani.length > 0) && !previewHierarhije.vklop">';
|
||
echo '<div class="left-float">';
|
||
echo '<h1>Hierarhija
|
||
<span class="oranzna">
|
||
<span v-if="imeHierarhije.shrani != imeHierarhije.aktivna">{{ (imeHierarhije.shrani.length > 30 ? (imeHierarhije.shrani.substring(0,30)+\' ...\') }}</span>
|
||
<span v-else>{{ (imeHierarhije.aktivna.length > 30 ? (imeHierarhije.aktivna.substring(0,30)+\' ...\') : imeHierarhije.aktivna) }}</span>
|
||
</span>
|
||
</h1>';
|
||
echo '</div>';
|
||
echo '<div class="left-float" style="padding: 20px 10px;">
|
||
<a href="#"
|
||
class="surveycomment"
|
||
v-on:click="dodajKomentar()"
|
||
title="Dodaj komentar k hierarhiji"
|
||
>
|
||
<span class="faicon inline_comment"></span> Dodaj komentar
|
||
</a>
|
||
</div>';
|
||
echo '<div class="left-float" style="padding: 20px 0px;">
|
||
<a href="#" class="logo-upload" v-on:click="logoUpload()" title="Naloži logotip za izpis pri poročilih">
|
||
<i class="fa fa-lg fa-file-image-o" aria-hidden="true"></i> Naloži logo
|
||
</a>
|
||
</div>';
|
||
|
||
// V kolikor imamo že strukturo prikažemo tudi številke
|
||
echo '<div style="clear:both;" v-if="shranjenaHierarhija[imeHierarhije.index] && shranjenaHierarhija[imeHierarhije.index].stUporabnikov > 0">Hierarhija ima {{ shranjenaHierarhija[imeHierarhije.index].stEvalvirancev }} evalvacij in {{ shranjenaHierarhija[imeHierarhije.index].stUporabnikov }} uporabnikov.</div>';
|
||
|
||
// Dodajanje nivojev in njihovih nazivov
|
||
echo '<div v-if="!vpisanaStruktura" style="clear: both;">';
|
||
echo '<h2 v-if="!vpisanaStruktura">' . $this->lang['srv_hierarchy_create_code'] . '</h2>';
|
||
echo '<div class="hierarhija-nov-nivo"
|
||
v-on:click="izbrisiCelotnoHierarhijo()"
|
||
v-if="!vpisanaStruktura"
|
||
style="float: right;display: block;margin:-30px -35px 0 0;">
|
||
Ustvari novo hierarhijo<span class="faicon edit small icon-as_link pointer h-edit-nivo hierarhija-inline"></span>
|
||
</div>';
|
||
echo '<div>';
|
||
echo '<table v-if="!vpisanaStruktura">';
|
||
echo '<thead style="text-align: left;">';
|
||
echo '<tr>';
|
||
echo '<th>' . $this->lang['srv_hierarchy_table_header_nivo_1'] . '</th>';
|
||
echo '<th style="padding-left: 15px;">' . $this->lang['srv_hierarchy_table_header_nivo_2'] . '</th>';
|
||
echo '</tr>';
|
||
echo '</thead>';
|
||
echo '<tbody>';
|
||
|
||
// Vuejs dinamično kreiranje novih nivojev
|
||
echo '<tr>';
|
||
echo '<td>';
|
||
echo '<span class="hierarhija-elementi">{{ novaHierarhijaSt }}.</span>';
|
||
echo '</td>';
|
||
echo '<td>';
|
||
echo '<input type="text" size="50" class="hierarhija-elementi" v-model="imeNivoja" v-on:keyup.enter="dodajNivoHierarhije()">';
|
||
echo '<div class="hierarhija-nov-nivo" v-on:click="dodajNivoHierarhije()">' . $this->lang['srv_hierarchy_input_name_nivo'] . '<span class="hierarhija-plus"></span></div>';
|
||
echo '</td>';
|
||
echo '</tr>';
|
||
|
||
echo '</tbody></table>';
|
||
echo '</div>';
|
||
echo '</div>';
|
||
echo '<div class="clear"></div>';
|
||
|
||
|
||
// Selectbox s šifranti za posamezen nivo, vpis šifrantov dovolimo šele ko imamo vpisano prvo raven
|
||
echo '<div v-show="inputNivo[0]">';
|
||
echo '<div class="h-sa-list">';
|
||
echo '<div style="margin-top: 16px;">';
|
||
echo '<h2 style="float: left; display: inline-block; margin-top: 0;">' . $this->lang['srv_hierarchy_code_lists'] . '</h2>';
|
||
|
||
echo '<div class="hierarhija-urejanje">
|
||
<div class="onoffswitch">
|
||
<input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" v-model="vklopiUrejanje" id="vklopi-urejanje-hierarhije" checked v-on:click="getSaveOptions(\'admin_skrij_urejanje_nivojev\', !vklopiUrejanje)">
|
||
<label class="onoffswitch-label" for="vklopi-urejanje-hierarhije">
|
||
<span class="onoffswitch-inner"></span>
|
||
<span class="onoffswitch-switch"></span>
|
||
</label>
|
||
</div>
|
||
</div>';
|
||
echo '<span class="toolbox_add_title"> ' . Help::display('srv_hierarchy_edit_elements') . '</span>';
|
||
|
||
echo '</div>';
|
||
|
||
echo '<div class="clear"></div>';
|
||
|
||
// izris primera šifrantov
|
||
echo '<div id="primer-sifrantov">';
|
||
echo '<table>';
|
||
echo '<thead style="text-align: left;">';
|
||
echo '<tr>';
|
||
echo '<th>' . $this->lang['srv_hierarchy_table_header_1'] . '</th>';
|
||
echo '<th>' . $this->lang['srv_hierarchy_table_header_2'] . '</th>';
|
||
echo '<th>' . $this->lang['srv_hierarchy_table_header_3'] . '</th>';
|
||
echo '<th v-show="vklopiUrejanje">' . $this->lang['srv_hierarchy_table_header_4'] . '</th>';
|
||
echo '</tr>';
|
||
echo '</thead>';
|
||
echo '<tbody>';
|
||
|
||
// Vuejs dinamično kreiranje novih nivojev
|
||
echo '<tr id="nivo-{{ nivo.id }}" v-for="nivo in inputNivo">';
|
||
echo '<td><label> {{ nivo.st}}. <span contenteditable="true" class="h-edit-nivo editable" data-labela="{{ nivo.id }}" v-on:blur="preimenujLabeloNivoja(nivo.id)">{{ nivo.ime }}</span></label></td>';
|
||
echo '<td><select name="nivo" data-opcije="{{ nivo.id }}">';
|
||
echo '<option value = "#" v-for="sifrant in nivo.sifranti">{{ sifrant.ime }}</option >';
|
||
echo '</select></td>';
|
||
|
||
echo '<td>';
|
||
echo '<span class="faicon delete_circle icon-orange_link spaceLeft hierarhija-inline" v-on:click="odstraniNivoHierarhije($index, nivo.id)" v-show="vklopiUrejanje && vpisanaStruktura == 0" title="' . $this->lang['srv_hierarchy_help_1'] . '"></span>';
|
||
echo '<span class="faicon edit small icon-as_link pointer h-edit-nivo hierarhija-inline" v-on:click="brisiSifrant(nivo.id)" v-show="vklopiUrejanje" title="' . $this->lang['srv_hierarchy_help_2'] . '"></span>';
|
||
|
||
## Vstavimo checkboc od kje naprej se lahko šifranti ponavljajo
|
||
echo '<input type="checkbox" name="unikatni-sifranti" class="hierarhija-inline" style="cursor: pointer;" value="1" :checked="nivo.unikaten == 1" v-on:click="posodobiUnikatnega(nivo.id, nivo)" title="' . $this->lang['srv_hierarchy_help_3'] . '">';
|
||
echo '</td>';
|
||
echo '<td>';
|
||
echo '<input type="text" class="hierarhija-inline" size="40" data-nivo="{{ nivo.id }}" v-show="vklopiUrejanje" v-on:keyup.enter="dodajSifrant( $index, nivo.id )" placeholder="' . $this->lang['srv_hierarchy_input_name_sifrant'] . '"/>';
|
||
echo '<div class="hierarhija-nov-nivo" v-show="vklopiUrejanje" v-on:click="dodajSifrant( $index, nivo.id )">' . $this->lang['srv_hierarchy_input_name_sifrant'] . '<span class="hierarhija-plus"></span></div>';
|
||
echo '</td>';
|
||
echo '</tr>';
|
||
|
||
echo '</tbody></table>';
|
||
echo '</div>';
|
||
|
||
// Naprej na naslednji korak
|
||
echo '<div>';
|
||
// Shranjevanje hierarhije
|
||
echo '<div style="padding: 20px 0 10px;" v-show="prikaziImeZaShranjevanje">';
|
||
echo '<b>Shrani trenutno hierarhijo pod imenom: </b>';
|
||
echo '<input size="50" type="text" v-model="imeHierarhije.shrani">';
|
||
echo '</div>';
|
||
|
||
echo '<div style="float: right; width: 100%; text-align: right; padding: 7px 0;">
|
||
<input type="checkbox" v-model="prikaziImeZaShranjevanje" value="1"> Hierarhijo želim shraniti pod novim imenom.
|
||
</div>';
|
||
|
||
echo '<div style="padding:20px;float:right;">';
|
||
echo '<button v-on:click="shraniTrenutnoHierarhijo()" v-show="prikaziImeZaShranjevanje" class="btn btn-moder" style="margin-right: 15px;">' . $this->lang['save'] . '</button>';
|
||
echo '<button v-on:click="premikNaprej(\'' . M_UREDI_UPORABNIKE . '\')" class="btn btn-moder" style="margin-right: 15px;">' . $this->lang['next1'] . '</button>';
|
||
echo '</div>';
|
||
echo '</div>';
|
||
|
||
echo '</div>';
|
||
|
||
|
||
echo '</fieldset>';
|
||
echo '</div>';
|
||
echo '</div>';
|
||
|
||
// popup za urejanje vrednosti
|
||
echo '<div id="vrednost_edit" class="divPopUp">';
|
||
echo '</div>';
|
||
|
||
// fade pri fullscreen urejanje spremenljivke
|
||
echo '<div id="fade">';
|
||
echo '</div>';
|
||
|
||
} else {
|
||
echo '<div id="hierarhija-app">';
|
||
// Naslov
|
||
echo '<div class="hierarhija_fieldset">';
|
||
echo '<div class="left-float"><h1 v-show="imeHierarhije.aktivna">Hierarhija: <span style="color: #fa4913">{{ imeHierarhije.aktivna }}</span></h1></div>';
|
||
echo '<div class="left-float" style="padding: 20px;"><a href="#" class="surveycomment" title="Dodaj komentar o vprašanju"> <span class="faicon inline_comment"></span> Dodaj komentar</a></div>';
|
||
echo '<div class="left-float" style="padding: 20px 0px;">
|
||
<a href="#" class="logo-upload" v-on:click="logoUpload()" title="Naloži logotip za izpis pri poročilih">
|
||
<i class="fa fa-lg fa-file-image-o" aria-hidden="true"></i> Naloži logo
|
||
</a>
|
||
</div>';
|
||
echo '</div>';
|
||
|
||
echo '<div class="clear"></div>';
|
||
|
||
// Podatki o aktivaciji hierarhije
|
||
$hierarhija_options = new HierarhijaQuery();
|
||
$cas_aktivacije = $hierarhija_options->getDeleteHierarhijaOptions($this->anketa, 'cas_aktivacije_hierarhije', NULL, NULL, FALSE);
|
||
$uporabnik_aktivacije = $hierarhija_options->getDeleteHierarhijaOptions($this->anketa, 'uporabnik_aktiviral_hierarhijo', NULL, NULL, FALSE);
|
||
$uporabnik = HierarhijaQuery::getUserSurvey($uporabnik_aktivacije);
|
||
|
||
echo '<div class="okvircek" style="padding-bottom: 3px;">';
|
||
echo '<h3>Čas aktivacije: <b>' . $cas_aktivacije . '</b></h3>';
|
||
echo '<h3>Hierarhijo je aktiviral uporabnik: <b>' . $uporabnik->name . ' ' . $uporabnik->surname . '</b> (' . $uporabnik->email . ') <a class="btn" href="index.php?anketa=' . $this->anketa . '&a=hierarhija_superadmin&m=aktivacija-strukture-ankete">Podrobnosti</a></h3>';
|
||
echo '</div>';
|
||
|
||
echo '<div class="clear"></div>';
|
||
|
||
// Tabela nivojev in šifrantov
|
||
echo '<div id="primer-sifrantov" class="pregled">';
|
||
echo '<table>';
|
||
echo '<thead style="text-align: left;">';
|
||
echo '<tr>';
|
||
echo '<th>' . $this->lang['srv_hierarchy_table_header_1'] . '</th>';
|
||
echo '<th>' . $this->lang['srv_hierarchy_table_header_2'] . '</th>';
|
||
echo '</tr>';
|
||
echo '</thead>';
|
||
echo '<tbody>';
|
||
|
||
// Vuejs dinamično kreiranje novih nivojev
|
||
echo '<tr id="nivo-{{ nivo.id }}" v-for="nivo in inputNivo">';
|
||
echo '<td><label> {{ nivo.st}}. {{ nivo.ime }}</label></td>';
|
||
echo '<td><select name="nivo" data-opcije="{{ nivo.id }}">';
|
||
echo '<option value = "#" v-for="sifrant in nivo.sifranti">{{ sifrant.ime }}</option >';
|
||
echo '</select></td>';
|
||
echo '</tr>';
|
||
|
||
echo '</tbody></table>';
|
||
echo '</div>';
|
||
|
||
echo '<div style="width:35%;text-align: right;">';
|
||
echo '<a class="btn btn-moder" href="index.php?anketa=' . $this->anketa . '&a=hierarhija_superadmin&m=' . M_ADMIN_IZVOZ_SIFRANTOV . '">Izvoz šifrantov</a>';
|
||
echo '</div>';
|
||
|
||
echo '</div>';
|
||
}
|
||
}
|
||
|
||
/**
|
||
* V kolikor je hierarhija aktivirana potem jo ni mogoče več urejati
|
||
*
|
||
* @return boolean
|
||
*/
|
||
|
||
private function preveriCeJeAktivirana()
|
||
{
|
||
|
||
if ($this->modul['hierarhija'] == 2 && $this->hierarhija_type < 4) {
|
||
echo $this->lang['srv_hierarchy_active_text'];
|
||
return FALSE;
|
||
}
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
/**
|
||
* Preverimo, če je bila struktura vnešena
|
||
*
|
||
* @return boolean
|
||
*/
|
||
|
||
private function preverimoCeJeVnesenaStruktura()
|
||
{
|
||
|
||
$hierarhija_opcije = (new HierarhijaQuery())->getDeleteHierarhijaOptions($this->anketa, 'vpisana_struktura', NULL, NULL, FALSE);
|
||
|
||
if (sizeof($hierarhija_opcije) > 0 && isset($hierarhija_opcije['vpisana_struktura']) && $hierarhija_opcije['vpisana_struktura'] == 1) {
|
||
$sql_str = sisplet_query("SELECT id FROM srv_hierarhija_struktura WHERE anketa_id='" . $this->anketa . "'");
|
||
|
||
if ($sql_str->num_rows == 0) {
|
||
(new HierarhijaQuery())->getDeleteHierarhijaOptions($this->anketa, 'vpisana_struktura', $id = NULL, 1);
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
/**
|
||
* Ko se aktivira anketa se posreduje email učiteljem za reševanje ankete
|
||
*/
|
||
|
||
public static function aktivacijaAnketePosljiEmail($anketa)
|
||
{
|
||
# Dobimo samo uporabnike na zadnjem nivoju
|
||
$users_upravicen_do_evalvacije = (new HierarhijaOnlyQuery())->queryStrukturaUsers($anketa, ' AND hs.level=(SELECT MAX(level) FROM srv_hierarhija_struktura WHERE anketa_id=' . $anketa . ') GROUP BY users.id');
|
||
|
||
if ($users_upravicen_do_evalvacije->num_rows == 0) {
|
||
return FALSE;
|
||
}
|
||
|
||
# Če imamo uporabnike potem gremo za vsak id uporabnika preverit kakšno ima strukturo
|
||
while ($uporabnik = $users_upravicen_do_evalvacije->fetch_object()) {
|
||
$vloga_poizvedba = self::spremenljivkaVloga('vloga', $anketa);
|
||
$url_hierarhija = self::hierarhijaUrl($anketa, $uporabnik->user_id);
|
||
|
||
// generiramo kode za vse
|
||
foreach ($url_hierarhija as $struktura_id => $url) {
|
||
// generiranje kode
|
||
foreach ($vloga_poizvedba as $v) {
|
||
if ($v->variable == 1) {
|
||
$vloga = 'ucenec';
|
||
}
|
||
|
||
if ($v->variable == 2) {
|
||
$vloga = 'ucitelj';
|
||
}
|
||
|
||
// Url parametri hierarhije (nivoji in vloga)
|
||
$url_baza = 'vloga=' . $v->id . $url;
|
||
|
||
// Url parametre vstavimo v tabelo in generiramo kodo, Pri kodi trenutno uporabimo brez šumnikov, kar zadošča za 60.466.176 različnih kod (36 unikatnih znakov), če bi primanjkovalo se doda šumnik in je nato 90.224.199 kod.
|
||
|
||
$vpis_kode_loop = FALSE;
|
||
while (!$vpis_kode_loop) {
|
||
$vpis_kode_loop = sisplet_query("INSERT INTO
|
||
srv_hierarhija_koda
|
||
(koda, anketa_id, url, vloga, user_id, hierarhija_struktura_id, datetime)
|
||
VALUES
|
||
(CONCAT(SUBSTRING('abcdefghijklmnoprstuvzwxq0123456789', RAND()*34+1, 1),
|
||
SUBSTRING('abcdefghijklmnoprstuvzwxq0123456789', RAND()*34+1, 1),
|
||
SUBSTRING('abcdefghijklmnoprstuvzwxq0123456789', RAND()*34+1, 1),
|
||
SUBSTRING('abcdefghijklmnoprstuvzwxq0123456789', RAND()*34+1, 1),
|
||
SUBSTRING('abcdefghijklmnoprstuvzwxq0123456789', RAND()*34+1, 1)
|
||
), '" . $anketa . "', '" . $url_baza . "', '" . $vloga . "', '" . $uporabnik->user_id . "', '" . $struktura_id . "', NOW())");
|
||
|
||
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
if (HierarhijaQuery::getOptionsPosljiKode($anketa) == 'nikomur') {
|
||
HierarhijaQuery::saveOptions($anketa, 'obvesti_samo_ucitelje', 0);
|
||
} else {
|
||
self::posljiEmailSkodamiUcencemAliSamoUciteljem($anketa);
|
||
}
|
||
|
||
return TRUE;
|
||
}
|
||
|
||
private static function spremenljivkaVloga($var, $anketa)
|
||
{
|
||
$spremenljivke = Cache::cache_all_srv_spremenljivka($anketa, TRUE);
|
||
|
||
$spremenljivka_id = NULL;
|
||
foreach ($spremenljivke as $spr) {
|
||
if ($spr['variable'] == $var) {
|
||
$spremenljivka_id = $spr['id'];
|
||
}
|
||
}
|
||
|
||
if (!is_null($spremenljivka_id)) {
|
||
return Cache::cache_all_srv_vrednost($spremenljivka_id);
|
||
}
|
||
|
||
return NULL;
|
||
}
|
||
|
||
private static function hierarhijaUrl($anketa, $user = NULL)
|
||
{
|
||
$hierarhija = (new HierarhijaQuery())->pridobiHierarhijoNavzgor($anketa, NULL, $user);
|
||
|
||
// če hierarhija še ni narejena
|
||
if (is_null($hierarhija)) {
|
||
return [];
|
||
}
|
||
|
||
$max_level = sisplet_query("SELECT MAX(level) AS level FROM srv_hierarhija_ravni WHERE anketa_id='" . $anketa . "'", "obj");
|
||
|
||
//najprej moramo priti do polja z ustreznimi nivjo
|
||
foreach ($hierarhija as $key => $array) {
|
||
|
||
// če smo res na zadnjem nivoju
|
||
if ($max_level->level == sizeof($array)) {
|
||
//gremo po nivojih ter sestavimo URL naslov
|
||
$url_zacasni = NULL;
|
||
foreach ($array as $nivoji) {
|
||
$id = (new HierarhijaQuery())->getVrednostIdFromPivot($nivoji['id']);
|
||
$url_zacasni .= '&' . $nivoji['nivo'] . '=' . $id;
|
||
}
|
||
|
||
//sestavljen url dodamo v polje, kot ključ uporabimo ID strukture hierarhije
|
||
$url[$key] = $url_zacasni;
|
||
}
|
||
}
|
||
|
||
return $url;
|
||
}
|
||
|
||
/**
|
||
* Funkcija za pošiljanja kode učiteljem pri hierarhiji
|
||
*
|
||
* @param (int) $anketa
|
||
*
|
||
* @return send email | error
|
||
*/
|
||
|
||
public static function posljiEmailSkodamiUcencemAliSamoUciteljem($anketa)
|
||
{
|
||
global $site_url;
|
||
global $lang;
|
||
|
||
$ucitelji = sisplet_query("SELECT user_id FROM srv_hierarhija_koda WHERE anketa_id='" . $anketa . "' AND vloga='ucitelj' GROUP BY user_id");
|
||
$koda_za_resevanje_ankete = HierarhijaQuery::getOptionsPosljiKode($anketa);
|
||
|
||
if (mysqli_num_rows($ucitelji) == 0) {
|
||
return 'Ni podatka o učiteljih';
|
||
}
|
||
|
||
|
||
while ($ucitelj = $ucitelji->fetch_object()) {
|
||
$kode = sisplet_query("SELECT koda, hierarhija_struktura_id FROM srv_hierarhija_koda WHERE anketa_id='" . $anketa . "' AND vloga='ucitelj' AND user_id='" . $ucitelj->user_id . "'");
|
||
|
||
// Email naslov
|
||
$subject = 'Povezava do samooevalvacije za anketo: ' . SurveyInfo::getSurveyTitle();
|
||
|
||
// Email besedilo
|
||
$email = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||
<style>
|
||
body {
|
||
width: 100% !important;
|
||
min-width: 100%;
|
||
-webkit-text-size-adjust: 100%;
|
||
-ms-text-size-adjust: 100%;
|
||
margin: 0;
|
||
Margin: 0;
|
||
padding: 0;
|
||
-moz-box-sizing: border-box;
|
||
-webkit-box-sizing: border-box;
|
||
box-sizing: border-box;
|
||
}
|
||
|
||
table {
|
||
border-spacing: 0;
|
||
border-collapse: collapse;
|
||
}
|
||
|
||
td {
|
||
word-wrap: break-word;
|
||
-webkit-hyphens: auto;
|
||
-moz-hyphens: auto;
|
||
hyphens: auto;
|
||
border-collapse: collapse !important;
|
||
}
|
||
|
||
|
||
tr, td, th {
|
||
text-align: left;
|
||
padding: 8px 10px;
|
||
border-color: #dddddd;
|
||
border-width: 1px;
|
||
border-style: solid;
|
||
}
|
||
|
||
|
||
th {
|
||
background-color: #EFF2F7;
|
||
}
|
||
|
||
.center{
|
||
text-align: center !important;
|
||
}
|
||
</style>
|
||
</head><body>';
|
||
|
||
$email .= $lang['srv_hierarchy_teacher_email_1'];
|
||
$email .= '<p>' . $lang['srv_hierarchy_teacher_email_2'] . '»<b>' . SurveyInfo::getSurveyTitle() . '</b>«' . $lang['srv_hierarchy_teacher_email_3'] . '<a href="' . $site_url . 'sa" target="_blank">' . $site_url . 'sa</a></p>';
|
||
|
||
$email .= '<br /><table cellspacing="0" style="border-collapse: collapse;">';
|
||
$email .= '<thead>';
|
||
$email .= '<tr>
|
||
<th border="1" cellpadding="0">Hierarhija</th>';
|
||
|
||
if (SurveyInfo::getSurveyModules('hierarhija') == 2 || in_array($koda_za_resevanje_ankete, ['vsem', 'ucitelju'])) {
|
||
$email .= '<th border="1" cellspacing="0" class="center">Koda za učitelja</th>';
|
||
}
|
||
|
||
// V kolikor nimamo nikakršne izbere potem posredujemo kodo tudi za učence
|
||
if (in_array($koda_za_resevanje_ankete, ['vsem', 'ucencem'])) {
|
||
$email .= '<th border="1" cellspacing="0" class="center">Koda za učence</th>';
|
||
}
|
||
|
||
$email .= '<tr>';
|
||
$email .= '</thead>';
|
||
$email .= '<tbody>';
|
||
|
||
// generiranje kode
|
||
while ($koda = mysqli_fetch_object($kode)) {
|
||
$email .= '<tr>';
|
||
$email .= '<td border="1" cellspacing="0">' . HierarhijaHelper::hierarhijaPrikazNaslovovpriUrlju($anketa, $koda->hierarhija_struktura_id, TRUE) . '</td>';
|
||
|
||
if (SurveyInfo::getSurveyModules('hierarhija') == 2 || in_array($koda_za_resevanje_ankete, ['vsem', 'ucitelju'])) {
|
||
$email .= '<td border="1" cellspacing="0" class="center"><span style="letter-spacing: 1px; font-size:16px; font-weight: bold;">' . strtoupper($koda->koda) . '</span></td>';
|
||
}
|
||
|
||
// V kolikor prejme učitelj email tudi s kodami za učence
|
||
if (in_array($koda_za_resevanje_ankete, ['vsem', 'ucencem'])) {
|
||
$koda_ucenci = sisplet_query("SELECT koda FROM srv_hierarhija_koda WHERE anketa_id='" . $anketa . "' AND vloga='ucenec' AND user_id='" . $ucitelj->user_id . "' AND hierarhija_struktura_id='" . $koda->hierarhija_struktura_id . "'", "obj");
|
||
$email .= '<td border="1" cellspacing="0" class="center"><span style="letter-spacing: 1px; font-size:16px; font-weight: bold; color:#ffa608;">' . strtoupper($koda_ucenci->koda) . '</span></td>';
|
||
}
|
||
|
||
$email .= '</tr>';
|
||
}
|
||
|
||
$email .= '</tbody>';
|
||
$email .= '</table>';
|
||
|
||
$user = sisplet_query("SELECT email FROM users WHERE id='" . $ucitelj->user_id . "'", "obj");
|
||
|
||
//Zaključek emaila
|
||
// V kolikor se emailpošlje samo učiteljem potem se skrije možnost za dostop učiteljem
|
||
$onemogocenDostopUcitelju = (new HierarhijaQuery())->getDeleteHierarhijaOptions($anketa, 'onemogoci_dostop_uciteljem', NULL, NULL, FALSE);
|
||
|
||
|
||
if (is_null($onemogocenDostopUcitelju) && is_null($koda_za_resevanje_ankete)) {
|
||
$email .= '<p>' . $lang['srv_hierarchy_teacher_email_4'] . '<a href="' . $site_url . '" target="_blank">' . $site_url . '</a>' . $lang['srv_hierarchy_teacher_email_5'];
|
||
$email .= '»' . $user->email . '«' . $lang['srv_hierarchy_teacher_email_6'] . '</p>';
|
||
}
|
||
|
||
// Podpis
|
||
$signature = Common::getEmailSignature();
|
||
$email .= $signature;
|
||
|
||
// Zaključek emaila
|
||
$email .= '</body></html>';
|
||
|
||
|
||
// Pošljemo email
|
||
try {
|
||
$MA = new MailAdapter($anketa, $type='invitation');
|
||
$MA->addRecipients($user->email);
|
||
$MA->sendMail(stripslashes($email), $subject);
|
||
} catch (Exception $e) {
|
||
echo "Email za hierarhijo ni bil poslan: " . $e;
|
||
error_log("Email za hierarhijo ni bil poslan: " . $e);
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Prikažemo podatke o hierarhiji pri izpolnjevanju
|
||
*
|
||
* @param array $get - pridobimo vse get parametre od respondenta
|
||
*
|
||
* @return eho html
|
||
*/
|
||
public static function displayPodatkeOhierarhijiZaRespondente($get = [], $only_hierarhija = FALSE)
|
||
{
|
||
global $lang;
|
||
$izpis = '';
|
||
|
||
if (!$only_hierarhija) {
|
||
$izpis .= '<div class="hierarhija-naslov-uvod">';
|
||
$izpis .= $lang['srv_hierarchy_main'];
|
||
}
|
||
|
||
if (empty($get) || sizeof($get) == 0) {
|
||
return NULL;
|
||
}
|
||
|
||
// Pridobimo ime glede na izbiro
|
||
$sifrant = [];
|
||
foreach ($get as $key => $param) {
|
||
if (preg_match('/nivo(\d+)/', $key, $match)) {
|
||
$sql = sisplet_query("SELECT naslov FROM srv_vrednost WHERE id='" . $param . "'", 'obj');
|
||
$sifrant[$match[1]] = $sql->naslov;
|
||
}
|
||
}
|
||
|
||
// Sortiramo po nivojih, da je vedno prvi najprej
|
||
ksort($sifrant);
|
||
$izpis .= '<b>';
|
||
foreach ($sifrant as $key => $sifra) {
|
||
$izpis .= ($key > 1 ? ' - ' : NULL) . $sifra;
|
||
}
|
||
$izpis .= '</b>';
|
||
|
||
if (!$only_hierarhija) {
|
||
$izpis .= '</div>';
|
||
}
|
||
|
||
return $izpis;
|
||
}
|
||
|
||
/**
|
||
* Iščemo v vrednost v 2 dimenzionalnem polju
|
||
* return $row/null
|
||
*/
|
||
public static function iskanjeArray($id, $array, $keyValue = 'id')
|
||
{
|
||
foreach ($array as $key => $value) {
|
||
if ($value[$keyValue] == $id) {
|
||
return $value;
|
||
}
|
||
}
|
||
|
||
return NULL;
|
||
}
|
||
|
||
|
||
/********** SUPERADMIN HIERARHIJA END ***********/
|
||
|
||
/**
|
||
* Izvoz šifrantov iz trenutno aktivne hierahije
|
||
*/
|
||
public function izvozSifrantov()
|
||
{
|
||
$ravni = (new HierarhijaOnlyQuery())->getSifrantiRavni($this->anketa);
|
||
|
||
// V kolikor nimamo šifrantov potem ne moremo nič izvažati
|
||
if (is_null($ravni)) {
|
||
return redirect('index.php?anketa=' . $this->anketa . '&a=hierarhija_superadmin&m=uredi-sifrante');
|
||
}
|
||
|
||
|
||
$csv_polje = NULL;
|
||
while ($row = $ravni->fetch_object()) {
|
||
$csv_polje[] = [$row->level, $row->raven, $row->sifranti];
|
||
}
|
||
|
||
return Export::init()->csv('Hierarhija_izvoz', $csv_polje);
|
||
}
|
||
|
||
/**
|
||
* Možnost uvoza hierarhije šifrantov
|
||
*
|
||
* @return html page
|
||
*/
|
||
public function hierarhijaSuperadminUvoz()
|
||
{
|
||
$aktivna = $this->preveriCeJeAktivirana();
|
||
|
||
#Shranimo CSV datoteko in naredimo strukturo hierarhije
|
||
if ($_GET['t'] == 'hierarhija-uvoz' && $aktivna) {
|
||
//preverimo, če je CSV format
|
||
if (FALSE === array_search($_FILES['uvozi-hierarhijo']['type'], [
|
||
'csv' => 'text/csv',
|
||
], TRUE)) {
|
||
// V kolikor datoteka za uvoz ni v pravem formatu samo vrnemo na prvotno stran
|
||
return redirect('index.php?anketa=' . $this->anketa . '&a=hierarhija_superadmin&m=uredi-sifrante');
|
||
}
|
||
|
||
if (($datoteka = fopen($_FILES['uvozi-hierarhijo']['tmp_name'], "r")) !== FALSE) {
|
||
|
||
//CSV preberemo in zapišemo v polje
|
||
while (($data = fgetcsv($datoteka, 10000, ",")) !== FALSE) {
|
||
$uvozi_hierarhijo[] = $data;
|
||
}
|
||
|
||
$ravni = [];
|
||
$sifrant = [];
|
||
foreach ($uvozi_hierarhijo as $uvoz) {
|
||
//pridobimo samo unikatne nivoje in imena nivojev
|
||
if (!$this->in_mul_array($uvoz[1], $ravni)) {
|
||
$ravni[] = $uvoz;
|
||
}
|
||
|
||
//Pridobimo vse šifrante samo vranostno preverimo, če bi se slučajno kak šifrant dvakrat ponovil
|
||
if (!$this->in_mul_array($uvoz[2], $sifrant)) {
|
||
$sifrant[] = $uvoz;
|
||
}
|
||
}
|
||
|
||
// preden vnesemo novo hierarhijo izbrišemo že obstoječo
|
||
sisplet_query("DELETE FROM srv_hierarhija_ravni WHERE anketa_id='" . $this->anketa . "'");
|
||
|
||
//vpisemo vse ravni
|
||
foreach ($ravni as $raven) {
|
||
// Vpišem, samo če je prvi element polja številka, ker gre za številko ravni
|
||
if (!empty($raven[0]) && is_numeric($raven[0])) {
|
||
sisplet_query("INSERT INTO srv_hierarhija_ravni (anketa_id, user_id, level, ime) VALUES ('$this->anketa', '$this->user', '$raven[0]', '$raven[1]')");
|
||
$raven_id = mysqli_insert_id($GLOBALS['connect_db']);
|
||
|
||
//vpišemo vse šifre za sledečo raven
|
||
foreach ($sifrant as $sifra) {
|
||
if ($raven[0] == $sifra[0]) {
|
||
sisplet_query("INSERT INTO srv_hierarhija_sifranti (hierarhija_ravni_id, ime) VALUES ('" . $raven_id . "', '" . $sifra[2] . "')");
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
fclose($datoteka);
|
||
}
|
||
|
||
return redirect('index.php?anketa=' . $this->anketa . '&a=hierarhija_superadmin&m=uredi-sifrante');
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Preveri, če se spremenljivka nahaja v večdimenzionalnem polju
|
||
*
|
||
* @param string $value
|
||
* @param array $array
|
||
*
|
||
* @return boolean
|
||
*/
|
||
|
||
public function in_mul_array($value, $array)
|
||
{
|
||
foreach ($array as $row) {
|
||
if (in_array($value, $row)) {
|
||
return TRUE;
|
||
}
|
||
}
|
||
return FALSE;
|
||
}
|
||
|
||
/**
|
||
* Možnost nalaganja datoteke, tudi ko je hierarhija aktivna
|
||
*/
|
||
public function hierarhijaSuperadminUploadLogo()
|
||
{
|
||
global $site_path;
|
||
|
||
// tracking - beleženje sprememb
|
||
TrackingClass::update($this->anketa, '20');
|
||
|
||
$finfo = new finfo(FILEINFO_MIME_TYPE);
|
||
if (FALSE === $ext = array_search($finfo->file($_FILES['logo']['tmp_name']), [
|
||
'jpg' => 'image/jpeg',
|
||
'png' => 'image/png',
|
||
'gif' => 'image/gif',
|
||
], TRUE)) {
|
||
throw new RuntimeException('Datoteka ni v pravem formatu.');
|
||
}
|
||
|
||
$shrani_id = (!empty($_POST['id']) ? $_POST['id'] : NULL);
|
||
$path = $site_path . 'admin/survey/modules/mod_hierarhija/porocila/logo/';
|
||
|
||
// Predhodno datoteko pobrišemo
|
||
self::brisiLogo($this->anketa, $shrani_id);
|
||
|
||
|
||
$logo_ime = time() . '_' . slug($_FILES['logo']['name'], '_');
|
||
if (!move_uploaded_file($_FILES['logo']['tmp_name'], sprintf($path . $logo_ime, sha1_file($_FILES['logo']['tmp_name']), $ext))) {
|
||
throw new RuntimeException('Ne morem premakniti datoteke.');
|
||
}
|
||
|
||
|
||
$shrani_id = (!empty($_POST['id']) ? $_POST['id'] : NULL);
|
||
|
||
sisplet_query("UPDATE srv_hierarhija_shrani SET logo='" . $logo_ime . "' WHERE id='" . $shrani_id . "' AND anketa_id='" . $this->anketa . "'");
|
||
|
||
return redirect('index.php?anketa=' . $this->anketa . '&a=hierarhija_superadmin&m=uredi-sifrante');
|
||
}
|
||
|
||
public static function brisiLogo($anketa, $id = NULL)
|
||
{
|
||
global $site_path;
|
||
|
||
if (is_null($id)) {
|
||
$id = (!empty($_POST['id']) ? $_POST['id'] : NULL);
|
||
}
|
||
|
||
$old_logo_name = sisplet_query("SELECT logo FROM srv_hierarhija_shrani WHERE id='" . $id . "' AND anketa_id='" . $anketa . "'", "obj")->logo;
|
||
|
||
$datoteka_za_izbris = NULL;
|
||
|
||
if (!empty($old_logo_name)) {
|
||
$datoteka_za_izbris = $site_path . 'admin/survey/modules/mod_hierarhija/porocila/logo/' . $old_logo_name;
|
||
}
|
||
|
||
if (file_exists($datoteka_za_izbris)) {
|
||
unlink($datoteka_za_izbris);
|
||
}
|
||
|
||
sisplet_query("UPDATE srv_hierarhija_shrani SET logo='' WHERE id='" . $id . "' AND anketa_id='" . $anketa . "'");
|
||
}
|
||
|
||
/**
|
||
* Uporabniko prikažemo opcijo za aktiviranje ankete in hierarhije
|
||
*
|
||
* V kolikor anketa še ni bila aktivirana potem ima uporabnik tudi možnost
|
||
* izklopiti hierarhijo
|
||
*
|
||
* @return
|
||
*/
|
||
public function aktivacijaHierarhijeInAnkete()
|
||
{
|
||
// Preveri če je kak uporabnik upravičen do evalvacije
|
||
$st_uporabnikov_upravicenih_do_evalvacije = (new HierarhijaOnlyQuery())->queryStrukturaUsers($this->anketa, ' AND hs.level=(SELECT MAX(level) FROM srv_hierarhija_struktura WHERE anketa_id=' . $this->anketa . ') GROUP BY users.id');
|
||
$st_uporabnikov_upravicenih_do_evalvacije = mysqli_num_rows($st_uporabnikov_upravicenih_do_evalvacije);
|
||
|
||
if (SurveyInfo::getSurveyModules('hierarhija') == 1) {
|
||
// Aktivacija ankete, ki tudi aktivira hierarhij
|
||
echo '<div class="okvircek">';
|
||
echo '<h2>' . $this->lang['srv_hierarchy_activation_link'];
|
||
echo ' <a href="#" class="surveycomment" title="Dodaj komentar k hierarhiji" style="float:right; margin-top: -5px; margin-left: 10px;">
|
||
<span class="faicon inline_comment"></span>
|
||
</a>';
|
||
echo '<span onclick="previewMail(\'1\')"><i class="fa fa-envelope-o block right link" aria-hidden="true"></i></span></h2>';
|
||
echo $this->lang['srv_hierarhy_activation_text'];
|
||
|
||
if ($st_uporabnikov_upravicenih_do_evalvacije) {
|
||
echo '<div style="padding: 15px 0 20px;">';
|
||
echo '<b>Ob aktiviciji ankete bodo upoštevane naslednje nastavitve:</b><br />';
|
||
echo '<table>';
|
||
echo '<tbody>';
|
||
$nastavitve = [
|
||
'srv_hierarchy_code_for_teacher' => 'ne_poslji_kodo_ucitelju',
|
||
'srv_hierarchy_code_for_students' => 'ne_poslji_kode_ucencem',
|
||
'srv_hierarchy_code_teacher_has_access' => 'onemogoci_dostop_uciteljem',
|
||
];
|
||
foreach ($nastavitve as $prevod => $nastavitev) {
|
||
echo '<tr>';
|
||
echo '<td style="width: 180px;">' . $this->lang[$prevod] . '</td>';
|
||
echo '<td><input type="radio" name="' . $nastavitev . '" id="' . $nastavitev . '-0" value="0" onclick="posodobiPosiljanjeKod(\'' . $nastavitev . '\', 0);" ' . (is_null(HierarhijaQuery::getOptions($this->anketa, $nastavitev)) ? 'checked="checked"' : NULL) . '>
|
||
<label for="' . $nastavitev . '-0">' . $this->lang['srv_hierarchy_yes'] . '</label>';
|
||
echo '<input type="radio" name="' . $nastavitev . '" id="' . $nastavitev . '-1" value="1" onclick="posodobiPosiljanjeKod(\'' . $nastavitev . '\', 1);" ' . (HierarhijaQuery::getOptions($this->anketa, $nastavitev) == 1 ? 'checked="checked"' : NULL) . '>
|
||
<label for="' . $nastavitev . '-1">' . $this->lang['srv_hierarchy_no'] . '</label></td>';
|
||
echo '</tr>';
|
||
}
|
||
echo '</tbody>';
|
||
echo '</table>';
|
||
|
||
echo '<br />';
|
||
echo $this->lang['srv_hierarchy_code_text_bottom'];
|
||
echo '</div>';
|
||
echo '<button type="button" class="btn btn-moder" onclick="anketa_active(\'' . $this->anketa . '\',\'0\', \'\', \'1\'); return false;">Aktiviraj hierarhijo in anketo</button>';
|
||
} else {
|
||
echo '<div class="error-email"><span class="faicon warning icon-orange"></span> V bazi ni dodanega nobenega učitelja, zato aktivacija ni mogoča!</div>';
|
||
}
|
||
|
||
echo '</div>';
|
||
|
||
// izklop ankete
|
||
echo '<div class="okvircek" style="margin-top: 30px;">';
|
||
echo '<h2>' . $this->lang['srv_hierarchy_turnoff'] . '</h2>';
|
||
echo $this->lang['srv_hierarhy_turnoff_text'];
|
||
echo '<div>';
|
||
echo '<a id="h-navbar-link"
|
||
class="no-img side-right btn btn-moder
|
||
ref="#"
|
||
title="' . $this->lang['srv_hierarchy_turnoff'] . '"
|
||
onclick="toggleAdvancedModule(\'hierarhija\', 1);">';
|
||
echo $this->lang['srv_hierarchy_turnoff'] . '</a>';
|
||
echo '</div>';
|
||
echo '</div>';
|
||
|
||
} else {
|
||
// Aktivirana anketa in hierarhija
|
||
echo '<div class="okvircek">';
|
||
echo '<h2>' . $this->lang['srv_hierarchy_active_hierarchy_and_survey'] . '</h2>';
|
||
echo $this->lang['srv_hierarchy_active_hierarchy_and_survey_text'];
|
||
|
||
$row = SurveyInfo::getInstance()->getSurveyRow();
|
||
echo '<button type="button" class="btn btn-moder" onclick="anketa_active(\'' . $this->anketa . '\',\'' . $row['active'] . '\'); return false;">' . ($row['active'] ? $this->lang['srv_hierarchy_deactivate_survey'] : $this->lang['srv_hierarchy_activate_survey']) . '</button>';
|
||
echo '</div>';
|
||
|
||
// Podatki o aktivaciji hierarhije
|
||
$hierarhija_options = new HierarhijaQuery();
|
||
$cas_aktivacije = $hierarhija_options->getDeleteHierarhijaOptions($this->anketa, 'cas_aktivacije_hierarhije', NULL, NULL, FALSE);
|
||
$uporabnik_aktivacije = $hierarhija_options->getDeleteHierarhijaOptions($this->anketa, 'uporabnik_aktiviral_hierarhijo', NULL, NULL, FALSE);
|
||
$uporabnik = HierarhijaQuery::getUserSurvey($uporabnik_aktivacije);
|
||
|
||
echo '<div class="okvircek" style="margin-top: 30px;">';
|
||
echo '<h2>' . $this->lang['srv_hierarchy_active_information_user'] . ' <span onclick="previewMail(\'1\')"><i class="fa fa-envelope-o block right link" aria-hidden="true"></i></span></h2>';
|
||
echo '<h3>Čas aktivacije: <b>' . $cas_aktivacije . '</b></h3>';
|
||
echo '<h3>Aktivnost evalvacije: <b> od ' . date('d.m.Y', strtotime($row['starts'])) . ' do ' . date('d.m.Y', strtotime($row['expire'])) . '</b><a href="index.php?anketa=' . $row['id'] . '&a=trajanje"><span class="faicon edit"></span></a></h3>';
|
||
echo '<h3>Hierarhijo je aktiviral uporabnik: <b>' . $uporabnik->name . ' ' . $uporabnik->surname . '</b> (' . $uporabnik->email . ')</h3>';
|
||
|
||
if (HierarhijaQuery::getOptions($this->anketa, 'onemogoci_dostop_uciteljem') == 1) {
|
||
echo '<h3>' . $this->lang['srv_hierarchy_teacher_can_not_access'] . '</h3>';
|
||
}
|
||
|
||
echo '<h3>' . HierarhijaHelper::textGledeNaOpcije($this->anketa, 'srv_hierarchy_email_code') . '</h3>';
|
||
|
||
$users_upravicen_do_evalvacije = (new HierarhijaOnlyQuery())->queryStrukturaUsers($this->anketa, ' AND hs.level=(SELECT MAX(level) FROM srv_hierarhija_struktura WHERE anketa_id=' . $this->anketa . ') GROUP BY users.id');
|
||
echo '<ul style="list-style: initial;max-height: 500px; overflow: auto;">';
|
||
while ($uporabnik = $users_upravicen_do_evalvacije->fetch_object()) {
|
||
echo '<li>' . $uporabnik->email . '</li>';
|
||
}
|
||
echo '</ul>';
|
||
|
||
// Obvesti učitelje, če niso bili obveščeni
|
||
$obvesti_Samo_ucitelje = HierarhijaQuery::getOptions($this->anketa, 'obvesti_samo_ucitelje');
|
||
if (!is_null($obvesti_Samo_ucitelje) && $obvesti_Samo_ucitelje == 0) {
|
||
echo '<div id="obvesti-samo-ucitelje" style="padding-top: 15px;"><button class="btn btn-moder" onclick="obvestiUciteljeZaResevanjeAnkete()">Pošlji obvestilo učiteljem s kodo za reševanje</button></div>';
|
||
}
|
||
|
||
echo '</div>';
|
||
|
||
// Obveščanje managerjev
|
||
$managerji_ankete = (new HierarhijaOnlyQuery())->queryStrukturaUsers($this->anketa, ' AND hs.level<(SELECT MAX(level) FROM srv_hierarhija_struktura WHERE anketa_id=' . $this->anketa . ')');
|
||
if (mysqli_num_rows($managerji_ankete) > 0) {
|
||
echo '<div class="okvircek" style="margin-top: 30px;" id="vue-custom">';
|
||
echo '<h2>' . $this->lang['srv_hierarchy_active_information_about_manager'] . ' <span onclick="previewMail(\'2\')"><i class="fa fa-envelope-o block right link" aria-hidden="true"></i></span></h2>';
|
||
echo '<p>' . $this->lang['srv_hierarchy_active_information_about_manager_text'] . '</p>';
|
||
|
||
echo '<form action="#" method="post">';
|
||
echo '<div v-if="managerOznaciVse" v-on:click="managerZamenjajOznaci" class="link oznaci"><i class="fa fa-check-square-o" aria-hidden="true"></i> - označi vse</div>';
|
||
echo '<div v-else v-on:click="managerZamenjajOznaci" class="link oznaci"><i class="fa fa-square-o" aria-hidden="true"></i> - označi nobenega</div>';
|
||
|
||
echo '<ul style="padding: 4px;">';
|
||
while ($manager = $managerji_ankete->fetch_object()) {
|
||
echo '<li style="padding: 2px 0;"><input type="checkbox" v-model="!managerOznaciVse" name="manager" value="' . $manager->user_id . '" id="manager-' . $manager->id . $manager->user_id . '"/><label for="manager-' . $manager->id . $manager->user_id . '">' . $manager->level . '.nivo: ' . $manager->email . '</label></li>';
|
||
}
|
||
echo '</ul>';
|
||
|
||
echo '<button type="submit" class="btn btn-moder" v-on:click="emailObvestiloZaManagerje()"; return false;">' . $this->lang['srv_hierarchy_submit'] . '</button>';
|
||
echo '</form>';
|
||
echo '</div>';
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
/**
|
||
* Uporabniko prikažemo opcijo za kopiranje ankete s šifranti in strukturo
|
||
*/
|
||
public function kopiranjeHierarhijeInAnkete()
|
||
{
|
||
|
||
echo '<div class="okvircek">';
|
||
echo '<h2>' . $this->lang['srv_hierarchy_copy_link'] . '</h2>';
|
||
echo $this->lang['srv_hierarhy_copy_text'];
|
||
echo '<button type="button" class="btn btn-moder" onclick="anketa_copy_top(\'' . $this->anketa . '\', \'1\'); return false;">Kopiraj anketo skupaj s strukturo uporabnikov</button>';
|
||
echo '<br /><br />';
|
||
echo $this->lang['srv_hierarhy_copy_text_2'];
|
||
echo '<button type="button" class="btn btn-moder" onclick="anketa_copy_top(\'' . $this->anketa . '\'); return false;">Kopiraj anketo</button>';
|
||
echo '</div>';
|
||
|
||
}
|
||
|
||
/**
|
||
* Prikaz in urejanje hierarhije
|
||
*
|
||
* @return html page
|
||
*/
|
||
public function displayHierarhijaUporabniki()
|
||
{
|
||
SurveySetting::getInstance()->Init($this->anketa);
|
||
$row = SurveyInfo::getInstance()
|
||
->getSurveyRow(); //("SELECT * FROM srv_anketa WHERE id='$this->anketa'")
|
||
|
||
$max_st_nivojev = (new HierarhijaOnlyQuery())->getSifrantiRavni($this->anketa, ', MAX(level) AS max', NULL);
|
||
|
||
//preverimo število nivojev v kolikor jih ni potem nimamo še podatka o vnesenih šifrantih
|
||
if (!empty($max_st_nivojev) && !is_null($max_st_nivojev = $max_st_nivojev->fetch_object()->max) && SurveyInfo::getSurveyModules('hierarhija') == 1) {
|
||
// Pridobimo ime hierarhije
|
||
$aktivna_hierarhija_ime = (new HierarhijaQuery())->getDeleteHierarhijaOptions($this->anketa, 'aktivna_hierarhija_ime', NULL, NULL, FALSE);
|
||
|
||
echo '<h2>Izgradnja hierarhije <span class="oranzna">' . (!empty($aktivna_hierarhija_ime) ? $aktivna_hierarhija_ime : '') . '</span> za anketo: ' . $row['naslov'] . '</h2>';
|
||
echo '<span>Ob aktiviranju bodo uporabniki na najnižjem nivoju prejeli kodo/šifro</span>';
|
||
|
||
//vnosni obrazec za izgradnjo hierarhije
|
||
echo '<div class="izgradnja_hierarhije">';
|
||
|
||
//pravice za gradnjo hierarhije v kolikor uporabnik ni super admin (type 5 ali več) ima tyle manjši kot 5
|
||
if ($this->hierarhija_type > 4) {
|
||
|
||
$sql = HierarhijaOnlyQuery::queryStrukturaUsersLevel($this->anketa, $this->user, 'ASC');
|
||
//pridobimo največji nivo uporabnika ter id-je strukture
|
||
while ($struktura = $sql->fetch_object()) {
|
||
## pridobimo največji nivo uporabnika ter id-je strukture za posamezen vpis
|
||
if (!isset($level) || $struktura->level < $level) {
|
||
$level = $struktura->level;
|
||
}
|
||
|
||
$struktura_nivo[] = $struktura->parent_id;
|
||
$struktura_nivo[] = $struktura->struktura_id;
|
||
}
|
||
|
||
$struktura_parent = (new HierarhijaOnlyQuery())->queryStruktura($this->anketa, NULL, NULL, 'id DESC');
|
||
while ($obj = $struktura_parent->fetch_object()) {
|
||
//v polje vnesemo samo id strukture, ki je višja od trenutnega nivoja uporabnika
|
||
if (isset($obj) && in_array($obj->id, $struktura_nivo)) {
|
||
$struktura_nivo[] = $obj->parent_id; //tu povnimo parent_id, da lahko potem poiščemo celotno strukturo
|
||
$struktura_sifrant_id[] = $obj->sifrant_id; // narredimo polje z vsemi ID, sifrantov, ki so že vpisani za hierarhijo
|
||
}
|
||
}
|
||
|
||
}
|
||
$results = (new HierarhijaQuery())->getSifrantAdmin($this->anketa);
|
||
|
||
if (!is_null($results)) {
|
||
if (isset($level)) {
|
||
$this->vpisHierarhijeAdmin($results, $level, $struktura_sifrant_id);
|
||
} else {
|
||
$this->vpisHierarhijeAdmin($results);
|
||
}
|
||
}
|
||
|
||
echo '</div>';
|
||
|
||
//prikaži JS Tree s trenutno hierarhijo
|
||
$this->jsTreePrikazHierarhije();
|
||
} elseif (!empty($max_st_nivojev) && SurveyInfo::getSurveyModules('hierarhija') == 2) {
|
||
echo '<h3>' . $this->lang['srv_hierarchy_active_text'] . '</h3>';
|
||
$this->jsTreePrikazHierarhije();
|
||
} else {
|
||
echo '<h3>' . $this->lang['srv_hierarchy_nothing'] . '</h3>';
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Nariše drevesno strukturo hierarhi
|
||
*
|
||
* @return HTML view
|
||
*/
|
||
public function jsTreePrikazHierarhije()
|
||
{
|
||
|
||
$hierarhija = (new HierarhijaOnlyQuery())->queryStruktura($this->anketa, NULL, ' AND parent_id IS NULL')
|
||
->fetch_object();
|
||
|
||
echo '<div id="hierarhija-jstree-ime">';
|
||
if (!is_null($hierarhija->ravni_ime)) {
|
||
echo '<h2>Hierarhija</h2>';
|
||
echo '<b>' . $hierarhija->ravni_ime;
|
||
if ($this->hierarhija_type > 4) {
|
||
echo ' - ' . $hierarhija->sifrant_ime;
|
||
}
|
||
echo ': </b>';
|
||
}
|
||
echo '</div>';
|
||
|
||
// LOAD jsTree na ta element
|
||
echo '<div id="admin_hierarhija_jstree"></div>';
|
||
|
||
echo '<script type="text/javascript" src="modules/mod_hierarhija/js/vendor/jstree.min.js"></script>';
|
||
echo '<script>jstree_json_data(' . $this->anketa . ');</script>';
|
||
}
|
||
|
||
/**
|
||
* Gradnja uporabnikov/hierarhije, kjer lahko uporabnik izbira kako želi
|
||
* imeti prikazana podatke
|
||
*/
|
||
public function izberiDodajanjeUporabnikovNaHierarhijo()
|
||
{
|
||
global $site_url;
|
||
|
||
// za vse ostalo je ure uredi uporabnike - M_UREDI_UPORABNIKE
|
||
SurveySetting::getInstance()->Init($this->anketa);
|
||
$row = SurveyInfo::getInstance()->getSurveyRow();
|
||
$hierarchy_status = SurveyInfo::getSurveyModules('hierarhija');
|
||
|
||
$max_st_nivojev = (new HierarhijaOnlyQuery())->getSifrantiRavni($this->anketa, ', MAX(level) AS max', NULL);
|
||
|
||
//preverimo število nivojev v kolikor jih ni potem nimamo še podatka o vnesenih šifrantih
|
||
if (!empty($max_st_nivojev) && !is_null($max_st_nivojev = $max_st_nivojev->fetch_object()->max) && $hierarchy_status == 1) {
|
||
|
||
// Preverimo, če so vpisani šifranti, drugače preusmerimo na vpis šifrantov
|
||
$sql = (new HierarhijaOnlyQuery())->getSifrantiRavni($this->anketa); // pridobimo vse nivoje in šifre za vpis uporabnikov
|
||
if ($sql->num_rows > 0) {
|
||
while ($obj = $sql->fetch_object()) {
|
||
if (empty($obj->sifranti)) {
|
||
return redirect($site_url . 'admin/survey/index.php?anketa=' . $this->anketa . '&a=' . A_HIERARHIJA_SUPERADMIN . '&m=' . M_ADMIN_UREDI_SIFRANTE . '&e=null');
|
||
}
|
||
}
|
||
}
|
||
|
||
// Preverimo na katerem nivoju se nahaja uporabnik
|
||
$uporabnik_level = HierarhijaOnlyQuery::queryStrukturaUsersLevel($this->anketa, $this->user, 'ASC')
|
||
->fetch_object()->level;
|
||
|
||
if ($this->hierarhija_type < 4 || $uporabnik_level != $max_st_nivojev) {
|
||
// Pridobimo ime hierarhije
|
||
$aktivna_hierarhija_ime = (new HierarhijaQuery())->getDeleteHierarhijaOptions($this->anketa, 'aktivna_hierarhija_ime', NULL, NULL, FALSE);
|
||
|
||
echo '<h2>Izgradnja hierarhije <span class="oranzna">' . (!empty($aktivna_hierarhija_ime) ? $aktivna_hierarhija_ime : '') . '</span> za anketo: ' . $row['naslov'] . '</h2>';
|
||
echo '<div class="help-text">';
|
||
echo '<div class="srv_hierarchy_user_help">';
|
||
echo $this->lang['srv_hierarchy_user_help_top_1'];
|
||
echo ' Vse uporabnike lahko uvozite tukaj <i class="fa fa-lg modra click fa-user-plus" onclick="uvoziUporabnike()" aria-hidden="true"></i>';
|
||
echo '<br/><br/>' . $this->lang['srv_hierarchy_user_help_top_2'];
|
||
echo '</div>';
|
||
echo '<div class="srv_hierarchy_user_help_sifrant_vnesen" style="display: none;">' . $this->lang['srv_hierarchy_user_help_sifrant_vnesen_1'] . ' Vse uporabnike lahko uvozite tukaj <i class="fa fa-lg modra click fa-user-plus" onclick="uvoziUporabnike()" aria-hidden="true"></i><br /><br />' . $this->lang['srv_hierarchy_user_help_sifrant_vnesen_2'] . '</div>';
|
||
echo '</div>';
|
||
|
||
//vnosni obrazec za izgradnjo hierarhije
|
||
echo '<div class="izgradnja_hierarhije">';
|
||
|
||
$results = (new HierarhijaQuery())->getSifrantAdmin($this->anketa);
|
||
|
||
if (!is_null($results)) {
|
||
|
||
// V kolikor je postavvljena spremenljivka $level, potem ni superadmin, ampak uporabnik na določenem nivoju
|
||
if ($this->hierarhija_type > 4) {
|
||
$this->vpisHierarhijeUporabnikTabela($results);
|
||
} else {
|
||
$this->vpisHierarhijeAdminTabela($results);
|
||
}
|
||
|
||
}
|
||
|
||
echo '</div>';
|
||
}
|
||
|
||
//prikaži JS Tree s trenutno hierarhijo
|
||
$this->jsTreePrikazHierarhije();
|
||
} elseif (!empty($max_st_nivojev) && $hierarchy_status == 2) {
|
||
echo '<h3>' . $this->lang['srv_hierarchy_active_text'] . '</h3>';
|
||
|
||
if ($this->hierarhija_type < 5) {
|
||
$results = (new HierarhijaQuery())->getSifrantAdmin($this->anketa);
|
||
|
||
// Prikažemo samo datatables
|
||
echo '<div id="vue-gradnja-hierarhije">';
|
||
echo '<div style="padding-top:26px;clear: both;display: block;">';
|
||
echo '<h2>Prikaz zgrajene hierarhije:</h2>';
|
||
echo '<div id="secondNavigation_links">
|
||
<a href="#" class="srv_ico" id="hover_export_icon" title="Izvoz v"><span class="faicon export" deluminate_imagetype="png"></span> Izvozi strukturo uporabnikov</a>
|
||
<div id="hover_export" style="display: none;">
|
||
<a href="index.php?anketa=' . $this->anketa . '&a=' . ($this->hierarhija_type < 5 ? A_HIERARHIJA_SUPERADMIN : A_HIERARHIJA) . '&m=uredi-uporabnike&izvoz=1" class="srv_ico" title="CSV izvoz uporabnikov za analizo">
|
||
Iz tabele
|
||
</a>
|
||
<a href="index.php?anketa=' . $this->anketa . '&a=' . ($this->hierarhija_type < 5 ? A_HIERARHIJA_SUPERADMIN : A_HIERARHIJA) . '&m=uredi-uporabnike&izvoz=struktura-analiz&n=1" class="srv_ico" title="Izvozi v excel">
|
||
Za združevanje s podatki ankete
|
||
</a>
|
||
<a href="index.php?anketa=' . $this->anketa . '&a=' . ($this->hierarhija_type < 5 ? A_HIERARHIJA_SUPERADMIN : A_HIERARHIJA) . '&m=uredi-uporabnike&izvoz=struktura-analiz" class="srv_ico" title="Izvozi v excel">
|
||
Za združevanje z imenskimi vnosi šifrantov
|
||
</a>
|
||
</div>
|
||
</div>';
|
||
|
||
// echo '<div class="uporabniki-ikona-tabela"
|
||
// title="CSV izvoz uporabnikov"
|
||
// >
|
||
// <a href="index.php?anketa=' . $this->anketa . '&a=' . ($this->hierarhija_type < 5 ? A_HIERARHIJA_SUPERADMIN : A_HIERARHIJA) . '&m=uredi-uporabnike&izvoz=1" class="btn btn-moder">Izvoz uporabnikov</a>
|
||
// </div>';
|
||
// echo '<div class="uporabniki-ikona-tabela"
|
||
// title="CSV izvoz uporabnikov za analizo"
|
||
// style="padding-right: 20px;"
|
||
// >
|
||
// <a href="index.php?anketa=' . $this->anketa . '&a=' . ($this->hierarhija_type < 5 ? A_HIERARHIJA_SUPERADMIN : A_HIERARHIJA) . '&m=uredi-uporabnike&izvoz=struktura-analiz" class="btn btn-moder">Struktura uporabnikov za analizo</a>
|
||
// </div>';
|
||
echo '<table id="vpis-sifrantov-admin-tabela" class="tabela-obroba custom-datatables">';
|
||
echo '<thead>';
|
||
echo ' <tr>';
|
||
foreach ($results['nivoji'] as $key => $nivo) {
|
||
echo '<th style="text-align: left;">' . $nivo['level'] . '.nivo: ' . $nivo['ime'] . '</th>';
|
||
}
|
||
echo '</tr>';
|
||
echo '</thead>';
|
||
echo '<tbody>';
|
||
echo '<tbody>';
|
||
echo '</table>';
|
||
echo '</div>';
|
||
echo '</div>';
|
||
}
|
||
|
||
$this->jsTreePrikazHierarhije();
|
||
} else {
|
||
echo '<h3>' . $this->lang['srv_hierarchy_nothing'] . '</h3>';
|
||
}
|
||
}
|
||
|
||
/**
|
||
* Izris forme za gradnjo hierarhije uporabnik na določenem nivoju
|
||
*
|
||
* @param array $results
|
||
*
|
||
* @return echo html
|
||
*/
|
||
private function vpisHierarhijeUporabnikTabela($results)
|
||
{
|
||
echo '<div id="vue-gradnja-hierarhije">';
|
||
|
||
// Kadar nimamo vpisanih šifrantov
|
||
echo '<div v-if="podatki[0].sifranti[0].sifrant == null" style="padding:10px 0">';
|
||
echo $this->lang['srv_hierarchy_empty_drop_downs'];
|
||
echo '</div>';
|
||
|
||
echo '<div class="vpis-sifrantov" v-else>';
|
||
echo '<table class="tabela-obroba tabela-vpis-sifrantov">';
|
||
|
||
echo '<thead>';
|
||
echo '<tr>';
|
||
foreach ($results['nivoji'] as $key => $nivo) {
|
||
$array_key = array_keys($results['nivoji']);
|
||
if ($key == end($array_key)) {
|
||
echo '<th style="border-right: none;">' . $nivo['level'] . '. nivo - ' . $nivo['ime'] . '</th>';
|
||
} else {
|
||
echo '<th>' . $nivo['level'] . '. nivo - ' . $nivo['ime'] . '</th>';
|
||
}
|
||
}
|
||
echo '<th style="border-left: none;">Evalviranec</th>';
|
||
echo '</tr>';
|
||
echo '</thead>';
|
||
|
||
echo '<tbody>';
|
||
echo '<tr>';
|
||
|
||
// Če je uporabnik izbran na določen nivo, potem pred tem naredimo fiksna polja z input disabled
|
||
echo '<td style="width: auto;vertical-align: top;" v-for="struktura in user.struktura">';
|
||
echo '<div style="font-weight: bold;margin: 5px 0;text-align: center;">{{ struktura.ime }}</div>';
|
||
echo '</td>';
|
||
|
||
echo '<td v-for="nivo in podatki" v-if="nivo.level > user.uporabnik.level" style="width: auto;vertical-align: top;">';
|
||
// Prikažemo Select2, samo če je 1 nivo in celotne js oz. spletna stran naložena - v kolikor je počasna povezava potem nekaj časa potrebuje, da naloži tudi select2
|
||
echo '<div v-show="pageLoadComplete && (izbran.strukturaId[nivo.level -1] > 0 || izbran.sifrant[nivo.level-1] > 0)">';
|
||
echo '<div class="h-select2">
|
||
<select class="select2" v-select="izbran.sifrant[nivo.level]" data-level="{{ nivo.level }}">
|
||
<option value="0"> --- </option>
|
||
<option v-for="s in nivo.sifranti" :value="s.id" >{{ s.sifrant }}</option>
|
||
</select>
|
||
</div>';
|
||
echo '<div class="h-uporabnik" v-show="izbran.sifrant[nivo.level] > 0" v-on:click="prikaziVnosOseb(nivo.level)">
|
||
<span v-if="nivo.level == podatki.maxLevel" class="icon user-red"></span>
|
||
<span v-else class="faicon users icon-as_link"></span>
|
||
</div>';
|
||
echo '</div>';
|
||
|
||
// Prikažemo že dodane uporabnike in tudi uporabnike samo dodane v virtual dom
|
||
echo '<div class="h-uporabnik-prikazi" v-if="osebe.show[nivo.level] && (nivo.level < podatki.maxLevel)">';
|
||
echo 'Uporabnik/i:';
|
||
echo '<ul>';
|
||
// Seznam uporabnikov, ki so že v bazi in jih samo prikličemo
|
||
echo '<li v-for="uporabnik in izbran.sifrantPodatki[nivo.level].uporabniki">{{ uporabnik.email }}
|
||
<span v-if="uporabnik.ime != uporabnik.email">({{ uporabnik.ime }} {{ uporabnik.priimek }})</span>
|
||
<span class="icon brisi-x"
|
||
v-on:click="izbrisiUporabnikaIzBaze(uporabnik.id, $index, nivo.level)"
|
||
v-if="osebe.nivo < podatki.maxLevel"
|
||
></span>
|
||
</li>';
|
||
// Seznam uporabnikov, ki jih še ni v bazi in so bili na novo dodani
|
||
echo '<li v-for="oseba in osebe.nove[nivo.level]">{{ oseba[0] }} <span v-if="oseba[1]">({{ oseba[1] }} {{ oseba[2] }})</span> <span class="icon brisi-x" v-on:click="izbrisiUporabnika(nivo.level)" ></span></li>';
|
||
echo '</ul>';
|
||
echo '</div>';
|
||
echo '</td>';
|
||
echo '<td style="vertical-align: top;padding: 13px;color:#ffa608;border-left: none;">';
|
||
// Seznam uporabnikov, ki so že v bazi in jih samo prikličemo
|
||
echo '<div v-for="uporabnik in izbran.sifrantPodatki[podatki.maxLevel].uporabniki">{{ uporabnik.email }}
|
||
<span v-if="uporabnik.ime != uporabnik.email">({{ uporabnik.ime }} {{ uporabnik.priimek }})</span>
|
||
</div>';
|
||
// Seznam uporabnikov, ki jih še ni v bazi in so bili na novo dodani
|
||
echo '<div v-for="oseba in osebe.nove[podatki.maxLevel]">{{ oseba[0] }} <span v-if="oseba[1]">({{ oseba[1] }} {{ oseba[2] }})</span> <span class="icon brisi-x" v-on:click="izbrisiUporabnika(podatki.maxLevel)" style="margin-left: 10px;"></span></div>';
|
||
echo '</td>';
|
||
echo '</tr>';
|
||
echo '<tr id="gumb">
|
||
<td colspan="' . (sizeof($results['nivoji']) + 1) . '">
|
||
<button type="button" class="btn btn-moder" v-on:click="submitSifrante()">Potrdi in prenesi</button>
|
||
</td>
|
||
</tr>';
|
||
echo '</tbody>';
|
||
echo '</table>';
|
||
echo '</div>';
|
||
|
||
// možnost vpisa osebe za določen nivo
|
||
echo '<div style="padding-top:26px;clear: both;display: block;" v-if="osebe.prikazi">';
|
||
echo '<div class="okvircek">';
|
||
echo '<h2>Vnos oseb za {{ osebe.nivo }}. nivo:</h2>';
|
||
echo '<div>';
|
||
echo $this->lang['srv_hierarchy_add_users'] . '
|
||
<div style="padding:15px 0;">
|
||
<textarea name="emails" style="height:100px; width:100%;"
|
||
v-if="osebe.nivo < podatki.maxLevel"
|
||
v-model="osebe.textarea"
|
||
v-on:keyup.enter="preveriPravilnostEmaila()"
|
||
></textarea>
|
||
<input type="text"
|
||
name="emails"
|
||
style="height: 16px; width:100%;"
|
||
v-else
|
||
v-model="osebe.textarea"
|
||
v-on:keyup.enter="preveriPravilnostEmaila()"
|
||
/>
|
||
</div>
|
||
<div class="h-opozorilo">*Polje email je obvezno polje za zadnji nivo.</div>
|
||
<div v-if="email.opozorilo" style="color:red;font-style:italic;padding: 0 0 10px;"><ul><li v-for="email in email.napake">Elektronski naslov <b>{{ email.naslov }}</b> v vrstici <b>{{ email.vrstica }}</b> ni pravilen.</li></ul></div>
|
||
';
|
||
echo '</div>';
|
||
echo '<button type="button" class="btn btn-moder" v-on:click="vpisOsebNaNivoTextarea()">Vnesi osebe</button>';
|
||
echo '</div>';
|
||
echo '</div>';
|
||
|
||
|
||
// Prikažemo Datatables rezultate samo za zdanji nivo;
|
||
echo '<div style="padding-top:26px;clear: both;display: block;">';
|
||
echo '<h2>Prikaz zgrajene hierarhije:</h2>';
|
||
echo '<table id="vpis-sifrantov-admin-tabela" class="tabela-obroba">';
|
||
echo '<thead>';
|
||
echo ' <tr>';
|
||
foreach ($results['nivoji'] as $key => $nivo) {
|
||
echo '<th style="text-align: left;">' . $nivo['level'] . '.nivo: ' . $nivo['ime'] . '</th>';
|
||
}
|
||
echo '<th style="width: 120px;"> </th>';
|
||
echo '</tr>';
|
||
echo '</thead>';
|
||
echo '<tbody>';
|
||
echo '<tbody>';
|
||
echo '</table>';
|
||
echo '</div>';
|
||
echo '</div>';
|
||
}
|
||
|
||
/**
|
||
* Izris forme za gradnjo hierarhije Superadmin
|
||
*
|
||
* @param array $results
|
||
*
|
||
* @return echo html
|
||
*/
|
||
private function vpisHierarhijeAdminTabela($results)
|
||
{
|
||
global $site_url;
|
||
|
||
echo '<div id="vue-gradnja-hierarhije">';
|
||
// Kadar nimamo vpisanih šifrantov
|
||
echo '<div v-if="podatki[0].sifranti[0].sifrant == null" style="padding:10px 0">';
|
||
echo $this->lang['srv_hierarchy_empty_drop_downs'];
|
||
echo '</div>';
|
||
|
||
echo '<div class="vpis-sifrantov" v-else><table class="tabela-obroba tabela-vpis-sifrantov">';
|
||
echo '<thead>';
|
||
echo '<tr>';
|
||
foreach ($results['nivoji'] as $key => $nivo) {
|
||
$polje_kljuci = array_keys($results['nivoji']);
|
||
if ($key == end($polje_kljuci)) {
|
||
echo '<th style="border-right: none;">' . $nivo['level'] . '. nivo - ' . $nivo['ime'] . '</th>';
|
||
} else {
|
||
echo '<th>' . $nivo['level'] . '. nivo - ' . $nivo['ime'] . '</th>';
|
||
}
|
||
}
|
||
echo '<th style="border-left: none;">Evalviranec</th>';
|
||
echo '</tr>';
|
||
echo '</thead>';
|
||
echo '<tbody>';
|
||
echo '<tr>';
|
||
echo '<td v-for="nivo in podatki" style="width: auto;vertical-align: top; border-right:none;">';
|
||
// Prikažemo Select2, samo če je 1 nivo in celotne js oz. spletna stran naložena - v kolikor je počasna povezava potem nekaj časa potrebuje, da naloži tudi select2
|
||
echo '<div v-show="prikaziJsKoSeJeCelaSpletnaStranZeNalozila(nivo.level)">';
|
||
|
||
echo '<div class="h-select2">
|
||
<select class="select2" v-select="izbran.sifrant[nivo.level]" data-level="{{ nivo.level }}">
|
||
<option value="0"> --- </option>
|
||
<option v-for="s in nivo.sifranti" :value="s.id">{{ s.sifrant }}</option>
|
||
</select>
|
||
</div>';
|
||
|
||
echo '<div class="h-uporabnik" v-show="aliPrikazemIkonoZaDodajanjeUporabnikov(nivo.level)" v-on:click="prikaziVnosOseb(nivo.level)">
|
||
<span v-if="nivo.level == podatki.maxLevel" class="icon user-red"></span>
|
||
<span v-else class="faicon users icon-as_link"></span>
|
||
</div>';
|
||
|
||
echo '<div class="h-select2 izberi-uporabnika" v-if="prikaziSelectZaZadnjiNivo(nivo.level)">
|
||
<select class="select2" id="izbira-uciteljev" v-select="user.selected" v-on:change="vpisemoUporabnikaIzDropDownMenija()">
|
||
<option value="0"> --- </option>
|
||
<option v-for="user in user.dropdown" :value="user.id">{{ user.label }}</option>
|
||
</select>
|
||
</div>';
|
||
|
||
echo '</div>';
|
||
|
||
|
||
// Prikažemo že dodane uporabnike in tudi uporabnike samo dodane v virtual dom
|
||
echo '<div class="h-uporabnik-prikazi" v-if="osebe.show[nivo.level] && (nivo.level < podatki.maxLevel)">';
|
||
echo 'Uporabnik/i:';
|
||
echo '<ul>';
|
||
// Seznam uporabnikov, ki so že v bazi in jih samo prikličemo
|
||
echo '<li v-for="uporabnik in izbran.sifrantPodatki[nivo.level].uporabniki">{{ uporabnik.email }}
|
||
<span v-if="uporabnik.ime != uporabnik.email">({{ uporabnik.ime }} {{ uporabnik.priimek }})</span>
|
||
<span class="icon brisi-x"
|
||
v-on:click="izbrisiUporabnikaIzBaze(uporabnik.id, $index, nivo.level)"
|
||
v-if="nivo.level < podatki.maxLevel"
|
||
></span>
|
||
</li>';
|
||
// Seznam uporabnikov, ki jih še ni v bazi in so bili na novo dodani
|
||
echo '<li v-for="oseba in osebe.nove[nivo.level]">{{ oseba[0] }} <span v-if="oseba[1]">({{ oseba[1] }} {{ oseba[2] }})</span> <span class="icon brisi-x" v-on:click="izbrisiUporabnika(nivo.level)" ></span></li>';
|
||
echo '</ul>';
|
||
echo '</div>';
|
||
echo '</td>';
|
||
echo '<td style="vertical-align: top;padding: 13px;color:#ffa608; border-left: none;">';
|
||
echo '<div v-if="izbran.sifrantPodatki[podatki.maxLevel]">';
|
||
// Seznam uporabnikov, ki so že v bazi in jih samo prikličemo
|
||
echo '<div v-for="uporabnik in izbran.sifrantPodatki[podatki.maxLevel].uporabniki">{{ uporabnik.email }}
|
||
<span v-if="uporabnik.ime != uporabnik.email">({{ uporabnik.ime }} {{ uporabnik.priimek }})</span>
|
||
</div>';
|
||
// Seznam uporabnikov, ki jih še ni v bazi in so bili na novo dodani
|
||
echo '<div v-for="oseba in osebe.nove[podatki.maxLevel]">{{ oseba[0] }} <span v-if="oseba[1]">({{ oseba[1] }} {{ oseba[2] }})</span> <span class="icon brisi-x" v-on:click="izbrisiUporabnika(podatki.maxLevel)" style="margin-left: 10px;"></span></div>';
|
||
echo '</div>';
|
||
echo '</td>';
|
||
echo '</tr>';
|
||
echo '<tr id="gumb">
|
||
<td colspan="' . (sizeof($results['nivoji']) + 1) . '">
|
||
<button type="button" class="btn btn-moder" v-on:click="submitSifrante()">Potrdi in prenesi</button>
|
||
</td>
|
||
</tr>';
|
||
echo '</tbody>';
|
||
echo '</table>';
|
||
echo '<div class="error-email" style="display: none;" v-if="preveriCejeEmailZeVnesenVbazoZaUcitelja(podatki.maxLevel)"><span class="faicon warning icon-orange"></span> Elektronski naslov za zadnji nivo je že vnešen v bazo.</div>';
|
||
echo '</div>';
|
||
|
||
// možnost vpisa osebe za določen nivo
|
||
echo '<div style="padding-top:26px;clear: both;display: block;" v-if="osebe.prikazi">';
|
||
echo '<div class="okvircek">';
|
||
echo '<h2 v-if="osebe.nivo < podatki.maxLevel">Vnos oseb za {{ osebe.nivo }}. nivo – managerji z vpogledom v rezultate (?)</h2>';
|
||
echo '<h2 v-else class="oranzna">Vnos osebe na zadnjem nivoju - učitelj, ki bo evalviran (?)</h2>';
|
||
echo '<div>';
|
||
echo '<p v-if="osebe.nivo < podatki.maxLevel">' . $this->lang['srv_hierarchy_add_users'] . '</p>';
|
||
echo '<p v-else>' . $this->lang['srv_hierarchy_add_users_last'] . '</p>';
|
||
echo '<div style="padding:15px 0;">';
|
||
echo '<textarea name="emails" style="height:100px; width:100%;"
|
||
v-if="osebe.nivo < podatki.maxLevel"
|
||
v-model="osebe.textarea"
|
||
v-on:keyup.enter="preveriPravilnostEmaila()"
|
||
></textarea>
|
||
<input type="text"
|
||
name="emails"
|
||
style="height: 16px; width:100%;"
|
||
v-if="osebe.nivo == podatki.maxLevel"
|
||
v-model="osebe.textarea"
|
||
v-on:keyup.enter="preveriPravilnostEmaila()"
|
||
/>
|
||
</div>
|
||
<div class="h-opozorilo">*Polje email je obvezno polje za zadnji nivo.</div>
|
||
<div v-if="email.opozorilo" style="color:red;font-style:italic;padding: 0 0 10px;"><ul><li v-for="email in email.napake">Elektronski naslov <b>{{ email.naslov }}</b> v vrstici <b>{{ email.vrstica }}</b> ni pravilen.</li></ul></div>';
|
||
echo '</div>';
|
||
echo '<button type="button" class="btn btn-moder" v-on:click="vpisOsebNaNivoTextarea()">
|
||
<span v-if="osebe.nivo < podatki.maxLevel">Vnos oseb</span>
|
||
<span v-else>Vnos osebe</span>
|
||
</button>';
|
||
echo '</div>';
|
||
echo '</div>';
|
||
|
||
|
||
// Prikažemo Datatables rezultate samo za zdanji nivo;
|
||
echo '<div id="div-datatables" style="padding-top:26px;clear: both;display: block;">';
|
||
echo '<h2>Prikaz zgrajene hierarhije:</h2>';
|
||
// Vklopimo prikaz pomoči in števila vnoso uporabnikov
|
||
echo '<div class="help-text" style="width: 100%">';
|
||
$this->prikaziStUporabnikovNaZadnjemNivojuHelp();
|
||
echo '</div>';
|
||
|
||
echo '<div class="uporabniki-ikona-tabela"
|
||
title="Zamenjaj uporabnika na zadnjem nivoju"
|
||
onclick="zamenjajUporabnikaZNovim()"
|
||
>
|
||
<div class="btn btn-moder">' . $this->lang['srv_hierarchy_btn_find_and_replace'] . '</div>
|
||
</div>';
|
||
echo '<div class="uporabniki-ikona-tabela"
|
||
title="CSV izvoz uporabnikov"
|
||
style="padding: 0 10px;"
|
||
>
|
||
<a href="index.php?anketa=' . $this->anketa . '&a=' . ($this->hierarhija_type < 5 ? A_HIERARHIJA_SUPERADMIN : A_HIERARHIJA) . '&m=uredi-uporabnike&izvoz=1" class="btn btn-moder">Izvoz uporabnikov</a>
|
||
</div>';
|
||
echo '<table id="vpis-sifrantov-admin-tabela" class="tabela-obroba">';
|
||
echo '<thead>';
|
||
echo ' <tr>';
|
||
foreach ($results['nivoji'] as $key => $nivo) {
|
||
echo '<th style="text-align: left;">' . $nivo['level'] . '.nivo: ' . $nivo['ime'] . '</th>';
|
||
}
|
||
echo '<th style="width: 70px;"> </th>';
|
||
echo '</tr>';
|
||
echo '</thead>';
|
||
echo '<tbody>';
|
||
echo '<tbody>';
|
||
echo '</table>';
|
||
echo '<div style="display:block; margin:25px -20px; padding-bottom:25px; width: 100%;">';
|
||
echo '<button class="btn btn-moder"
|
||
style="float: right;"
|
||
onclick="opozoriUporabnikaKerNiPotrdilPodatkov(\'index.php?anketa=' . $this->anketa . '&a=' . A_HIERARHIJA_SUPERADMIN . '&m=' . M_ADMIN_AKTIVACIJA . '\')"
|
||
title="' . $this->lang['srv_hierarchy_status'] . '">';
|
||
echo $this->lang['next1'] . '</button>';
|
||
echo '</div>';
|
||
echo '</div>';
|
||
echo '</div>';
|
||
}
|
||
|
||
/**
|
||
* Prikažemo število vseh uporabnikov na zadnjem nivoju, število unikatnih
|
||
* učiteljev in število predmetov
|
||
*
|
||
* @return html
|
||
*/
|
||
private function prikaziStUporabnikovNaZadnjemNivojuHelp()
|
||
{
|
||
|
||
$id = (new HierarhijaQuery())->getDeleteHierarhijaOptions($this->anketa, 'srv_hierarhija_shrani_id', NULL, NULL, FALSE);
|
||
// Če ne dobimo ID-ja
|
||
if (empty($id)) {
|
||
return NULL;
|
||
}
|
||
|
||
$sql_st_uciteljev = sisplet_query("SELECT st_uciteljev FROM srv_hierarhija_shrani WHERE id='" . $id . "' AND anketa_id='" . $this->anketa . "'", "obj");
|
||
|
||
// Prešteje število unikatnih učiteljev
|
||
$unikatni_uporabniki = (new HierarhijaOnlyQuery())->queryStrukturaUsers($this->anketa, ' AND hs.level=(SELECT MAX(level) FROM srv_hierarhija_struktura WHERE anketa_id=' . $this->anketa . ') GROUP BY users.id');
|
||
$st_unikatnih_uporabnikov = mysqli_num_rows($unikatni_uporabniki);
|
||
|
||
// Prešteje število unikatnih predmetov
|
||
$unikatni_predmeti = (new HierarhijaOnlyQuery())->queryStrukturaUsers($this->anketa, ' AND hs.level=(SELECT MAX(level) FROM srv_hierarhija_struktura WHERE anketa_id=' . $this->anketa . ') GROUP BY hs.hierarhija_sifranti_id');
|
||
$st_unikatnih_predmetov = mysqli_num_rows($unikatni_predmeti);
|
||
|
||
echo $this->lang['srv_hierarchy_user_help_1_1'];
|
||
echo ' ' . $sql_st_uciteljev->st_uciteljev . ' ';
|
||
echo $this->lang['srv_hierarchy_user_help_1_2'];
|
||
echo ' ' . $st_unikatnih_uporabnikov . ' ' . $this->lang['srv_hierarchy_user_help_1_3'] . ' ' . $st_unikatnih_predmetov . ' ' . $this->lang['srv_hierarchy_user_help_1_4'];
|
||
|
||
}
|
||
|
||
/**
|
||
* Prikaže tabelo za gradnjo hierarhije uporabnikov
|
||
*/
|
||
public function displayHierarhijaUporabnikiTabela()
|
||
{
|
||
SurveySetting::getInstance()->Init($this->anketa);
|
||
$row = SurveyInfo::getInstance()
|
||
->getSurveyRow(); //("SELECT * FROM srv_anketa WHERE id='$this->anketa'")
|
||
|
||
$max_st_nivojev = (new HierarhijaOnlyQuery())->getSifrantiRavni($this->anketa, ', MAX(level) AS max', NULL);
|
||
|
||
|
||
//preverimo število nivojev v kolikor jih ni potem nimamo še podatka o vnesenih šifrantih
|
||
if (!empty($max_st_nivojev) && !is_null($max_st_nivojev = $max_st_nivojev->fetch_object()->max) && SurveyInfo::getSurveyModules('hierarhija') == 1) {
|
||
// Pridobimo ime hierarhije
|
||
$aktivna_hierarhija_ime = (new HierarhijaQuery())->getDeleteHierarhijaOptions($this->anketa, 'aktivna_hierarhija_ime', NULL, NULL, FALSE);
|
||
|
||
echo '<h2>Izgradnja hierarhije <span class="oranzan">' . (!empty($aktivna_hierarhija_ime) ? $aktivna_hierarhija_ime : '') . '</span> za anketo: ' . $row['naslov'] . '</h2>';
|
||
|
||
//vnosni obrazec za izgradnjo hierarhije
|
||
echo '<div class="izgradnja_hierarhije">';
|
||
|
||
//pravice za gradnjo hierarhije v kolikor uporabnik ni super admin (type večji kot 5)
|
||
if ($this->hierarhija_type > 4) {
|
||
|
||
$sql = HierarhijaOnlyQuery::queryStrukturaUsersLevel($this->anketa, $this->user, 'ASC');
|
||
//pridobimo največji nivo uporabnika ter id-je strukture
|
||
while ($struktura = $sql->fetch_object()) {
|
||
## pridobimo največji nivo uporabnika ter id-je strukture za posamezen vpis
|
||
if (!isset($level) || $struktura->level < $level) {
|
||
$level = $struktura->level;
|
||
}
|
||
|
||
$struktura_nivo[] = $struktura->parent_id;
|
||
$struktura_nivo[] = $struktura->struktura_id;
|
||
}
|
||
|
||
$struktura_parent = (new HierarhijaOnlyQuery())->queryStruktura($this->anketa, NULL, NULL, 'id DESC');
|
||
while ($obj = $struktura_parent->fetch_object()) {
|
||
//v polje vnesemo samo id strukture, ki je višja od trenutnega nivoja uporabnika
|
||
if (isset($obj) && in_array($obj->id, $struktura_nivo)) {
|
||
$struktura_nivo[] = $obj->parent_id; //tu povnimo parent_id, da lahko potem poiščemo celotno strukturo
|
||
$struktura_sifrant_id[] = $obj->sifrant_id; // narredimo polje z vsemi ID, sifrantov, ki so že vpisani za hierarhijo
|
||
}
|
||
}
|
||
|
||
}
|
||
$results = (new HierarhijaQuery())->getSifrantAdmin($this->anketa);
|
||
|
||
if (!is_null($results)) {
|
||
// echo '<form id="h-submit">';
|
||
// echo '<input type="hidden" value="' . $this->anketa . '" id="anketa_id" name="anketa_id">';
|
||
//
|
||
// if (isset($level)) {
|
||
// $this->vpisHierarhijeTabela($results, $level, $struktura_sifrant_id);
|
||
// } else {
|
||
// $this->vpisHierarhijeTabela($results, null, null, $max_st_nivojev);
|
||
// }
|
||
|
||
// echo '<form id="h-submit">';
|
||
// echo '<input type="hidden" value="' . $this->anketa . '" id="anketa_id" name="anketa_id">';
|
||
//
|
||
// if (isset($level)) {
|
||
// $this->vpisHierarhijeAdmin($results, $level, $struktura_sifrant_id);
|
||
// } else {
|
||
// $this->vpisHierarhijeAdmin($results);
|
||
// }
|
||
//
|
||
//
|
||
// echo '<div class="h-form-field">
|
||
// <label id="check-uporabnik">Dodaj uporabnika na izbran nivo:</label>
|
||
// <div class="h-form-options">
|
||
// <input type="checkbox" name="email-check" value="1" id="dovoli-vpis-emaila"/>
|
||
// </div>
|
||
// </div>';
|
||
//
|
||
// echo '<div class="h-form-field" id="vpis-emaila">
|
||
// <label>' . $this->lang['srv_hierarchy_add_users'] . '</label>
|
||
// <div class="h-form-options h-email-user">
|
||
// <textarea name="emails"></textarea>
|
||
// </div>
|
||
// <div class="h-opozorilo">*Polje email je obvezno polje za zadnji nivo.</div>
|
||
// </div>';
|
||
//
|
||
// echo '<div class="h-form-field" style="padding-left: 35em; clear: both;">
|
||
// <input type="submit" value="Vnesi">
|
||
// </div>';
|
||
// echo '</form>';
|
||
|
||
}
|
||
|
||
|
||
echo '</div>';
|
||
|
||
//prikaži JS Tree s trenutno hierarhijo
|
||
$this->jsTreePrikazHierarhije();
|
||
} elseif (!empty($max_st_nivojev) && SurveyInfo::getSurveyModules('hierarhija') == 2) {
|
||
echo '<h3>' . $this->lang['srv_hierarchy_active_text'] . '</h3>';
|
||
$this->jsTreePrikazHierarhije();
|
||
} else {
|
||
echo '<h3>' . $this->lang['srv_hierarchy_nothing'] . '</h3>';
|
||
}
|
||
|
||
}
|
||
|
||
public function statistikaHierjearhije()
|
||
{
|
||
if ($this->hierarhija_type < 5) {
|
||
return $this->statistikaAdminHierarhije();
|
||
}
|
||
|
||
if ($this->hierarhija_type == 10) {
|
||
return $this->statistikaUcitelj();
|
||
}
|
||
|
||
echo $this->lang['srv_hierarchy_only_teachers'];
|
||
}
|
||
|
||
/**
|
||
* Prikaz statisti za vse ankete brez kod, ker administrator nima pravice do
|
||
* vpolgeda teh kod
|
||
*/
|
||
|
||
public function statistikaAdminHierarhije()
|
||
{
|
||
echo '<div id="hierarhija-status">';
|
||
|
||
if (SurveyInfo::getSurveyModules('hierarhija') == 2) {
|
||
echo '<div class="status-gumbi">';
|
||
echo '<button class="btn btn-moder" onclick="prikaziUrejanjeSuperkode()">Vključi izdelavo superšifre</button>';
|
||
echo '</div>';
|
||
}
|
||
|
||
echo '<div class="tabela-status">';
|
||
echo '<table class="hierarhija-status-admin custom-datatables printElement printTable" id="hierarhija-status-admin">';
|
||
echo '<thead>';
|
||
echo '<tr>
|
||
<th rowspan="2" class="anl_br anl_ac anl_bck anl_variabla_line anl_bb auto-width" style="width:90px;">Izberi učitelja za generiranje super šifre</th>
|
||
<th rowspan="2" class="anl_br anl_ac anl_bck anl_variabla_line anl_bb auto-width">Hierarhija</th>
|
||
<th rowspan="2" class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Email učitelja</th>
|
||
<th rowspan="2" class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Koda za učence</th>
|
||
<th colspan="3" style="text-align: center;" class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Status učencev</th>
|
||
<th colspan="2" style="text-align: center;" class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Časovni potek učencev</th>';
|
||
echo '<th rowspan="2" class="anl_br anl_ac anl_bck anl_variabla_line anl_bb" style="border-left:2px solid #fa4913 !important;">Koda za učitelja</th>';
|
||
echo '<th rowspan="2" class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Vnos učitelja (datum)</th>
|
||
</tr>';
|
||
echo '<tr>
|
||
<th class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">' . $this->lang['srv_userstatus_5ll'] . '</th>
|
||
<th class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">' . $this->lang['srv_userstatus_5'] . '</th>
|
||
<th class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">' . $this->lang['srv_userstatus_6'] . '</th>
|
||
<th class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Prvi vnos</th>
|
||
<th class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Zadnji vnos</th>
|
||
</tr>';
|
||
echo '</thead>';
|
||
echo '<tbody>';
|
||
|
||
$body = HierarhijaIzvoz::getInstance($this->anketa)->getStatus(TRUE);
|
||
|
||
if (is_null($body)) {
|
||
return '';
|
||
}
|
||
|
||
foreach ($body as $id_koda => $row) {
|
||
echo '<tr>';
|
||
echo '<td style="text-align: center;">
|
||
<input type="checkbox" value="' . $id_koda . '" class="koda-za-kosarico" onclick="dodajKodoVKosarico(\'' . $id_koda . '\')"/>
|
||
</td>';
|
||
|
||
// Izrišemo vse stolpce v omenjeni vrstici
|
||
foreach ($row as $key => $podatek) {
|
||
if ($key == 0 || $key == 1) {
|
||
|
||
echo '<td ' . ($key == 0 ? 'data-hierarhija' : 'data-email') . '="' . $id_koda . '">' . $podatek . '</td>';
|
||
|
||
} elseif ($key == 2 || $key == 8) {
|
||
|
||
echo '<td style="text-align:center; letter-spacing:1px; ' . ($key == 2 ? 'color:#1e88e5;' : NULL) . ($key == 8 ? 'border-left:2px solid #fa4913 !important;' : NULL) . '">' . $podatek . '</td>';
|
||
|
||
} else {
|
||
|
||
echo '<td style="text-align:center;">' . $podatek . '</td>';
|
||
|
||
}
|
||
|
||
}
|
||
|
||
echo '</tr>';
|
||
}
|
||
|
||
echo '</tbody>';
|
||
echo '</table>';
|
||
echo '</div>';
|
||
|
||
echo '<div class="analysis_bottom_settings">
|
||
|
||
<a href="#" onclick="printElement(\'Status\'); return false;" title="Natisni" class="srv_ico">
|
||
<span class="faicon print icon-grey_dark_link"></span>
|
||
</a>
|
||
|
||
<a href="index.php/?anketa=' . $this->anketa . '&a=' . A_HIERARHIJA_SUPERADMIN . '&m=' . M_HIERARHIJA_STATUS . '&izvoz=status" title="CSV izvoz" class="srv_ico">
|
||
<span class="sprites xls_large"></span>
|
||
</a>
|
||
|
||
</div>';
|
||
|
||
echo '</div>';
|
||
|
||
// košarica s kodami
|
||
echo '<div class="superkode">';
|
||
echo '<div class="kosarica" style="display: none;">';
|
||
echo '<h2>Tranutno izbrane kode:</h2>';
|
||
echo '<ul id="seznamKod"></ul>';
|
||
echo '<button class="btn btn-moder" id="ustvari-superkodo">Ustvari novo super kodo</button>';
|
||
echo '</div>';
|
||
|
||
echo '<div class="prikaz-superkod" style="display: none;">
|
||
<h2>Superkode</h2>
|
||
<table class="hierarhija-tabela">
|
||
<thead>
|
||
<tr>
|
||
<th class="anl_br anl_ac anl_bck anl_variabla_line anl_bb auto-width">Superkoda</th>
|
||
<th class="anl_br anl_ac anl_bck anl_variabla_line anl_bb auto-width">Seznam hierarhije, ki jih pokriva</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody></tbody>
|
||
</table>
|
||
</div>';
|
||
echo '</div>';
|
||
}
|
||
|
||
/**
|
||
* Prikaže tabelo s kodami za učitelja in učence skupaj s s statističnimi
|
||
* podatki
|
||
*/
|
||
|
||
protected function statistikaUcitelj()
|
||
{
|
||
if (!$this->upravicenDoSamoevalvacije()) {
|
||
die();
|
||
}
|
||
|
||
echo '<table class="hierarhija-status-ucitelji printElement">';
|
||
echo '<thead>';
|
||
echo '<tr>
|
||
<th rowspan="2" class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Hierarhija</th>';
|
||
echo '<th rowspan="2" class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Koda za učence</th>';
|
||
|
||
echo '<th rowspan="2" class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Koda za učitelja</th>
|
||
<th colspan="3" style="text-align: center;" class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Status učencev</th>
|
||
<th colspan="2" style="text-align: center;" class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Časovni potek učencev</th>
|
||
<th rowspan="2" class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Vnos učitelja (datum)</th>
|
||
</tr>';
|
||
echo '<tr>
|
||
<th class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">' . $this->lang['srv_userstatus_5ll'] . '</th>
|
||
<th class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">' . $this->lang['srv_userstatus_5'] . '</th>
|
||
<th class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">' . $this->lang['srv_userstatus_6'] . '</th>
|
||
<th class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Prvi vnos</th>
|
||
<th class="anl_br anl_ac anl_bck anl_variabla_line anl_bb">Zadnji vnos</th>
|
||
|
||
</tr>';
|
||
echo '</thead>';
|
||
echo '<tbody>';
|
||
|
||
//v kolikor imamo več URL-jev se pravi za več predmetov potem moramo izpisati sklope za vse predmete
|
||
$url_hierarhija = self::hierarhijaUrl($this->anketa);
|
||
|
||
// pridobimo podatke
|
||
|
||
foreach ($url_hierarhija as $struktura_id => $url) {
|
||
// pridobimo podatke o rešenih anketah samo za to strukturo
|
||
$cas = $this->pridobiStatisticnePodatke($struktura_id, 'ucenec');
|
||
$cas_ucitelj = $this->pridobiStatisticnePodatke($struktura_id, 'ucitelj');
|
||
|
||
$first_insert = NULL;
|
||
$last_insert = NULL;
|
||
$zacel_izpolnjevati = 0;
|
||
$delno_izpolnjena = 0;
|
||
$koncal_anketo = 0;
|
||
|
||
if (!is_null($cas)) {
|
||
foreach ($cas as $key => $row) {
|
||
if ($row['cas'] < $first_insert || $key == 0) {
|
||
$first_insert = $row['cas'];
|
||
}
|
||
|
||
if ($row['cas'] > $last_insert) {
|
||
$last_insert = $row['cas'];
|
||
}
|
||
|
||
// Končal anketo
|
||
if ($row['status'] == 6 && $row['lurker'] == 0) {
|
||
$koncal_anketo++;
|
||
}
|
||
|
||
// Delno izpolnjena
|
||
if ($row['status'] == 5 && $row['lurker'] == 0) {
|
||
$delno_izpolnjena++;
|
||
}
|
||
|
||
if ($row['lurker'] == 1) {
|
||
$zacel_izpolnjevati++;
|
||
}
|
||
}
|
||
}
|
||
|
||
echo '<tr>
|
||
<td>' . HierarhijaHelper::hierarhijaPrikazNaslovovpriUrlju($this->anketa, $struktura_id) . '</td>';
|
||
|
||
echo '<td style="text-align:center;color:#ffa608;">' . strtoupper(HierarhijaOnlyQuery::getKodaRow($this->anketa, $struktura_id)->koda) . '</td>';
|
||
|
||
echo '<td style="text-align:center;">' . strtoupper(HierarhijaOnlyQuery::getKodaRow($this->anketa, $struktura_id, 'ucitelj')->koda) . '</td>
|
||
<td style="text-align:center;">' . (!empty($zacel_izpolnjevati) ? $zacel_izpolnjevati : '/') . '</td>
|
||
<td style="text-align:center;">' . (!empty($delno_izpolnjena) ? $delno_izpolnjena : '/') . '</td>
|
||
<td style="text-align:center;">' . (!empty($koncal_anketo) ? $koncal_anketo : '/') . '</td>
|
||
<td style="text-align:center;">' . (!is_null($first_insert) ? date('d.m.Y, H:i', $first_insert) : '/') . '</td>
|
||
<td style="text-align:center;">' . (!is_null($last_insert) ? date('d.m.Y, H:i', $last_insert) : '/') . '</td>
|
||
<td style="text-align:center;">' . ((!is_null($cas_ucitelj['cas']) && $cas_ucitelj['status'] == 6 && $cas_ucitelj['lurker'] == 0) ? date('d.m.Y, H:i', $cas_ucitelj['cas']) : '/') . '</td>';
|
||
|
||
// V kolikor je hierarhija aktivna potem prikažemo možnost pregleda analiz
|
||
if ($this->modul['hierarhija'] > 1) {
|
||
echo '<td><a href="index.php?anketa=' . $this->anketa . '&a=' . A_HIERARHIJA . '&m=' . M_ANALIZE . '&s=' . $struktura_id . '" class="btn btn-moder">Poglej analizo</button></td>';
|
||
}
|
||
echo '</tr>';
|
||
}
|
||
|
||
echo '</tbody>';
|
||
echo '</table>';
|
||
}
|
||
|
||
/**
|
||
* Preverimo, če je uporabnik upravičen do samoevalvacije - je na zadnjem
|
||
* nivoju hierarhije
|
||
*
|
||
* @return boolean
|
||
*/
|
||
|
||
public function upravicenDoSamoevalvacije()
|
||
{
|
||
|
||
$max_level = (new HierarhijaOnlyQuery())->getSifrantiRavni($this->anketa, ', MAX(level) AS max', NULL);
|
||
$user_level = HierarhijaOnlyQuery::queryStrukturaUsersLevel($this->anketa, $this->user, 'DESC');
|
||
|
||
if (!empty($user_level) && !empty($user_level) && $user_level->fetch_object()->level == $max_level->fetch_object()->max) {
|
||
return TRUE;
|
||
}
|
||
|
||
return FALSE;
|
||
}
|
||
|
||
/********** Prikaz in urejanje hierarhije END **********/
|
||
|
||
private function pridobiStatisticnePodatke($struktura_id, $vloga)
|
||
{
|
||
|
||
$url = sisplet_query("SELECT url FROM srv_hierarhija_koda WHERE anketa_id='" . $this->anketa . "' AND hierarhija_struktura_id='" . $struktura_id . "' AND vloga='" . $vloga . "'", "obj")->url;
|
||
|
||
// V kolikor anketa še ni bila aktivirana potem vrnemo null, ker nimamo še podatkov o izpolnjevanju
|
||
if (is_null($url)) {
|
||
return NULL;
|
||
}
|
||
|
||
parse_str($url, $nivoji);
|
||
|
||
$polje_iskanja = NULL;
|
||
foreach ($nivoji as $key => $nivo) {
|
||
if ($key == 'vloga') {
|
||
$polje_iskanja = $nivo;
|
||
} else {
|
||
$polje_iskanja .= ', ' . $nivo;
|
||
}
|
||
}
|
||
|
||
$db_table = SurveyInfo::getInstance()->getSurveyArchiveDBString();
|
||
|
||
// tukaj pridobimo podatke o anketi za določeno strukturo
|
||
// preverimov prvi in zadnji nivo
|
||
$sql_user = sisplet_query("SELECT time_insert, last_status, lurker FROM srv_data_vrednost" . $db_table . " as sa LEFT JOIN srv_user as us ON (sa.usr_id=us.id) WHERE vre_id IN (" . $polje_iskanja . ") GROUP BY usr_id HAVING COUNT(usr_id)=" . sizeof($nivoji));
|
||
$cas = [];
|
||
|
||
// V kolikor ni zapisov vrnemo prazno
|
||
if ($sql_user->num_rows == 0) {
|
||
return NULL;
|
||
}
|
||
|
||
while ($row = mysqli_fetch_object($sql_user)) {
|
||
$cas[] = [
|
||
'cas' => strtotime($row->time_insert),
|
||
'status' => $row->last_status,
|
||
'lurker' => $row->lurker,
|
||
];
|
||
}
|
||
|
||
if ($vloga == 'ucitelj') {
|
||
return $cas[0];
|
||
}
|
||
|
||
|
||
return (sizeof($cas) > 0 ? $cas : NULL);
|
||
}
|
||
/********** Prikaz in urejanje hierarhije END **********/
|
||
|
||
/**
|
||
* Prikaže glavni meni za super admina - userja, ki je aktiviral hierarhijo
|
||
*
|
||
* @return html
|
||
*/
|
||
public function displayHierarhijaNavigationSuperAdmin()
|
||
{
|
||
if (is_null($this->hierarhija_type)) {
|
||
$this->hierarhija_type = HierarhijaHelper::preveriTipHierarhije($this->anketa);
|
||
}
|
||
|
||
// V kolikor nima pravic običjanega uporabnika potem ne prikažemo nič
|
||
if ($this->admin_type > 0 && (is_null($this->hierarhija_type) || $this->hierarhija_type > 4)) {
|
||
die();
|
||
}
|
||
|
||
$url = NULL;
|
||
if (!empty($_GET['m'])) {
|
||
$url = $_GET['m'];
|
||
}
|
||
|
||
// preverimo status hierarhije
|
||
$hierarchy_status = SurveyInfo::getSurveyModules('hierarhija');
|
||
|
||
echo '<div class="hierarhija-navigacija">';
|
||
echo '<ul>';
|
||
|
||
# zavihek urejanje hierarhije
|
||
echo '<li>';
|
||
|
||
echo '<a id="h-navbar-link" class="no-img side-right' . ($url == M_ADMIN_UREDI_SIFRANTE ? ' active' : '') . '"' . ' href="index.php?anketa=' . $this->anketa . '&a=' . A_HIERARHIJA_SUPERADMIN . '&m=' . M_ADMIN_UREDI_SIFRANTE . '"
|
||
title="' . ($hierarchy_status == 2 ? $this->lang['srv_hierarchy_code_active'] : $this->lang['srv_hierarchy_code']) . '">';
|
||
echo ($hierarchy_status == 2 ? $this->lang['srv_hierarchy_code_active'] : $this->lang['srv_hierarchy_code']) . '</a>';
|
||
echo '</li>';
|
||
echo '<li class="space"></li>';
|
||
|
||
# zavihek uredi uporabnike
|
||
echo '<li>';
|
||
echo '<a id="h-navbar-link"
|
||
class="no-img side-right' . ($url == M_UREDI_UPORABNIKE ? ' active' : '') . '"' . ' href="index.php?anketa=' . $this->anketa . '&a=' . A_HIERARHIJA_SUPERADMIN . '&m=' . M_UREDI_UPORABNIKE . '"
|
||
title="' . ($hierarchy_status == 2 ? $this->lang['srv_hierarchy_add_users_link_active'] : $this->lang['srv_hierarchy_add_users_link']) . '">';
|
||
echo ($hierarchy_status == 2 ? $this->lang['srv_hierarchy_add_users_link_active'] : $this->lang['srv_hierarchy_add_users_link']) . '</a>';
|
||
echo '</li>';
|
||
echo '<li class="space"></li>';
|
||
|
||
# zavihek AKTIVIRANJE ANEKTE v kolikor je bila že aktivirana potem izklop ni več mogoč
|
||
echo '<li>';
|
||
echo '<a id="h-navbar-link" class="no-img side-right' . ($url == M_ADMIN_AKTIVACIJA ? ' active' : '') . '"' . ' href="index.php?anketa=' . $this->anketa . '&a=' . A_HIERARHIJA_SUPERADMIN . '&m=' . M_ADMIN_AKTIVACIJA . '" title="' . $this->lang['srv_hierarchy_activation_link'] . '">';
|
||
echo $this->lang['srv_hierarchy_activation_link'] . '</a>';
|
||
echo '</li>';
|
||
echo '<li class="space"></li>';
|
||
|
||
# zavihek status
|
||
echo '<li>';
|
||
echo '<a id="h-navbar-link" class="no-img side-right' . ($url == M_HIERARHIJA_STATUS ? ' active' : '') . '"' . ' href="index.php?anketa=' . $this->anketa . '&a=' . A_HIERARHIJA_SUPERADMIN . '&m=' . M_HIERARHIJA_STATUS . '" title="' . $this->lang['srv_hierarchy_status'] . '">';
|
||
echo $this->lang['srv_hierarchy_status'] . '</a>';
|
||
echo '</li>';
|
||
echo '<li class="space"></li>';
|
||
|
||
# zavihek analize
|
||
if (HierarhijaHelper::preveriDostop($this->anketa) ) {
|
||
echo '<li>';
|
||
echo '<a id="h-navbar-link" class="no-img side-right' . ($url == M_ANALIZE ? ' active' : '') . '"' . ' href="index.php?anketa=' . $this->anketa . '&a=' . A_HIERARHIJA_SUPERADMIN . '&m=' . M_ANALIZE . '" title="' . $this->lang['srv_hierarchy_analysis_link'] . '">';
|
||
echo $this->lang['srv_hierarchy_analysis_link'] . '</a>';
|
||
echo '</li>';
|
||
echo '<li class="space"></li>';
|
||
}
|
||
|
||
# zavihek KOPIRANJE ankete
|
||
echo '<li>';
|
||
echo '<a id="h-navbar-link" class="no-img side-right' . ($url == M_ADMIN_KOPIRANJE ? ' active' : '') . '"' . ' href="index.php?anketa=' . $this->anketa . '&a=' . A_HIERARHIJA_SUPERADMIN . '&m=' . M_ADMIN_KOPIRANJE . '" title="' . $this->lang['srv_hierarchy_copy_link'] . '">';
|
||
echo $this->lang['srv_hierarchy_copy_link'] . '</a>';
|
||
echo '</li>';
|
||
echo '<li class="space"></li>';
|
||
|
||
|
||
echo '</ul>';
|
||
echo '</div>';
|
||
|
||
}
|
||
|
||
/**
|
||
* Prikaže glavni meni vse uporabnike, ki imajo pravico za dostop do
|
||
* hierarhije
|
||
*
|
||
* @return html
|
||
*/
|
||
public function displayHierarhijaNavigation()
|
||
{
|
||
global $site_url;
|
||
// V kolikor nima pravic običjanega uporabnika potem ne prikažemo nič
|
||
if (is_null($this->hierarhija_type) || $this->hierarhija_type < 5) {
|
||
die();
|
||
}
|
||
|
||
$url = NULL;
|
||
if (!empty($_GET['m'])) {
|
||
$url = $_GET['m'];
|
||
}
|
||
|
||
|
||
$hierarchy_status = SurveyInfo::getSurveyModules('hierarhija');
|
||
|
||
echo '<div class="hierarhija-navigacija ucitelji">';
|
||
echo '<ul>';
|
||
|
||
# zavihek uredi uporabnike
|
||
echo '<li>';
|
||
echo '<a id="h-navbar-link" class="no-img side-right' . ($url == M_UREDI_UPORABNIKE ? ' active' : '') . '"' . ' href="index.php?anketa=' . $this->anketa . '&a=' . A_HIERARHIJA . '&m=' . M_UREDI_UPORABNIKE . '"
|
||
title="' . ($hierarchy_status == 2 ? $this->lang['srv_hierarchy_add_users_link_active'] : $this->lang['srv_hierarchy_add_users_link']) . '">';
|
||
echo ($hierarchy_status == 2 ? $this->lang['srv_hierarchy_add_users_link_active'] : $this->lang['srv_hierarchy_add_users_link']) . '</a>';
|
||
echo '</li>';
|
||
echo '<li class="space"></li>';
|
||
|
||
# zavihek status
|
||
echo '<li>';
|
||
echo '<a id="h-navbar-link" class="no-img side-right' . ($url == M_HIERARHIJA_STATUS ? ' active' : '') . '"' . ' href="index.php?anketa=' . $this->anketa . '&a=' . A_HIERARHIJA . '&m=' . M_HIERARHIJA_STATUS . '" title="' . $this->lang['srv_hierarchy_status'] . '">';
|
||
echo $this->lang['srv_hierarchy_status'] . '</a>';
|
||
echo '</li>';
|
||
echo '<li class="space"></li>';
|
||
|
||
# zavihek analize
|
||
echo '<li>';
|
||
echo '<a id="h-navbar-link" class="no-img side-right' . ($url == M_ANALIZE ? ' active' : '') . '"' . ' href="index.php?anketa=' . $this->anketa . '&a=' . A_HIERARHIJA . '&m=' . M_ANALIZE . '" title="' . $this->lang['srv_hierarchy_analysis_link'] . '">';
|
||
echo $this->lang['srv_hierarchy_analysis_link'] . '</a>';
|
||
echo '</li>';
|
||
echo '<li class="space"></li>';
|
||
|
||
|
||
# url naslov
|
||
echo '<li class="hierarhija-desni-link">';
|
||
echo '<span>' . $this->lang['srv_hierarchy_link_name'] . '</span>';
|
||
echo '<a id="h-navbar-link" class="no-img side-right" href="' . $site_url . 'sa" target="_blank">';
|
||
echo $site_url . 'sa</a>';
|
||
echo '</li>';
|
||
|
||
echo '</ul>';
|
||
echo '</div>';
|
||
|
||
}
|
||
|
||
} |