';
+
+ // Preverimo ce je vklopljen modul za volitve - potem ne pustimo nobenih preklopov
+ $voting_disabled = '';
+ if(SurveyInfo::getInstance()->checkSurveyModule('voting')){
+ $voting_disabled = ' disabled';
+
+ // Warning za volitve
+ echo '
';
+ }
$individual = (int)$this->surveySettings['individual_invitation'];
@@ -7709,8 +8138,8 @@ class SurveyInvitationsNew {
echo ' '.Help::display('srv_user_base_individual_invitaition_note2').' ';
else
echo ' '.Help::display('srv_user_base_individual_invitaition_note').' ';
- echo '
';
echo '';
// Ce niso indvidualizirana imamo samo nacin posiljanja
@@ -7719,8 +8148,8 @@ class SurveyInvitationsNew {
// Nacin posiljanja (email, posta, sms...)
echo '
';
// Nacin dokumentiranja (posta, sms, drugo)
@@ -7728,9 +8157,9 @@ class SurveyInvitationsNew {
$noEmailingType = SurveySession::get('inv_noEmailing_type');
echo '
';
}
}
@@ -7740,8 +8169,8 @@ class SurveyInvitationsNew {
// Nacin posiljanja (email, posta, sms...)
echo '
';
// Nacin dokumentiranja (posta, sms, drugo)
@@ -7749,9 +8178,9 @@ class SurveyInvitationsNew {
$noEmailingType = SurveySession::get('inv_noEmailing_type');
echo '
';
}
@@ -7759,8 +8188,8 @@ class SurveyInvitationsNew {
if($noEmailing != 1){
echo '
';
}
@@ -7778,10 +8207,10 @@ class SurveyInvitationsNew {
// Dostop brez kode
- echo '
';
echo '
'.$lang['srv_user_base_access'].Help::display('usercode_skip').' ';
@@ -7818,15 +8247,13 @@ class SurveyInvitationsNew {
// Gorenje tega nima
if (!Common::checkModule('gorenje')){
+
echo '
';
echo ''.$lang['srv_email_setting_title'].' ';
echo '';
echo '
';
-
- //echo '
V delu...
';
$this->viewServerSettings();
-
echo '
';
echo '
';
@@ -9850,6 +10277,7 @@ class SurveyInvitationsNew {
global $global_user_id;
global $mysql_database_name;
global $aai_instalacija;
+
$row = SurveyInfo::getInstance()->getSurveyRow();
@@ -9866,7 +10294,36 @@ class SurveyInvitationsNew {
// Admini na testu, www in virtualkah imajo 1ka smtp
if(($admin_type == 0) && ($mysql_database_name == 'www1kasi' || $mysql_database_name == 'test1kasi' || $mysql_database_name == 'real1kasi'))
$enabled1ka = true;
+
+ // Squalo
+ $squalo = new SurveyInvitationsSqualo($this->sid);
+ if($squalo->getSqualoEnabled()){
+
+ // Vklop squalo
+ echo '';
+
+
+ // Squalo nastavitve...
+ echo '';
+
+ echo $lang['srv_squalo_active'];
+
+ echo '
';
+ }
+
+
+ // Izbira streznika
+ echo '';
+
// Opozorilo, ce imamo vklopljena vabila, da gre za iste nastavitve
echo '
'.$lang['srv_email_server_settings_warning'].'
';
@@ -9894,10 +10351,13 @@ class SurveyInvitationsNew {
echo $lang['srv_email_setting_adapter2'].' ';
echo Help :: display('srv_mail_mode');
+
+ echo '
';
+
#1KA
$enkaSettings = $MA->get1KASettings($raziskave=true);
- echo 'is1KA() ? ' class="displayNone"' : '').'>';
+ echo '
is1KA() || $squalo->getSqualoActive() ? ' class="displayNone"' : '').'>';
echo '
'.$lang['srv_email_setting_settings'].' ';
echo '
';
# from
@@ -9928,7 +10388,7 @@ class SurveyInvitationsNew {
#GMAIL - Google
$enkaSettings = $MA->getGoogleSettings();
- echo '
isGoogle() ? ' class="displayNone"' : '').'>';
+ echo '
isGoogle() || $squalo->getSqualoActive() ? ' class="displayNone"' : '').'>';
echo '
'.$lang['srv_email_setting_adapter1_note'].' ';
echo '
'.$lang['srv_email_setting_settings'].' ';
# from
@@ -9944,7 +10404,7 @@ class SurveyInvitationsNew {
#SMTP
$enkaSettings = $MA->getSMTPSettings();
- echo '
isSMTP() ? ' class="displayNone"' : '').'>';
+ echo '
';
// Gumb preveri nastavitve
- echo '
';
+ echo '
';
if ($_GET['s'] == '1') {
diff --git a/admin/survey/classes/surveyEmails/squalo/api_test.php b/admin/survey/classes/surveyEmails/squalo/api_test.php
new file mode 100644
index 000000000..52fcec065
--- /dev/null
+++ b/admin/survey/classes/surveyEmails/squalo/api_test.php
@@ -0,0 +1,97 @@
+createList($list_name='Testni seznam Xyz');
+
+/*$result = $squalo->createNewsletter(
+ $list_id = '11',
+ $subject = 'Testek',
+ $body = 'Testno sporočilo...',
+ $body_alt = 'Testno sporočilo ALT...',
+ $from_email = 'peter.hrvatin@gmail.com',
+ $from_name = 'Peter',
+ $reply_to_email = 'peter.hrvatin@gmail.com',
+ $language = 'sl'
+);*/
+
+//$result = $squalo->addRecipient($email='peter.h1203@gmail.com', $list_id='5');
+
+//$result = $squalo->sendEmails($newsletter_id='24');
+
+//$result = $squalo->deleteRecipient($recipient_id='2');
+
+
+
+
+$squalo = new SurveyInvitationsSqualo($ank_id='10');
+
+
+// Ustvarimo testni seznam z respondenti
+/*$list_name = 'List test 1';
+$recipients = array(
+ array(
+ 'email' => 'peter.hrvatin@gmail.com',
+ 'custom_attributes' => array(
+ 'firstname' => 'Peterx',
+ 'lastname' => 'Hrvax',
+ 'url' => 'www.google.si'
+ )
+ ),
+ array(
+ 'email' => 'peter.h1203@gmail.com',
+ 'custom_attributes' => array(
+ 'firstname' => 'Peter12',
+ 'lastname' => 'Hrva12',
+ 'url' => 'www.najdi.si'
+ )
+ ),
+ array(
+ 'email' => 'peter.hrvatin@siol.net',
+ 'custom_attributes' => array(
+ 'firstname' => 'Petersiol',
+ 'lastname' => 'Hrvaxsiol',
+ 'url' => 'www.1ka.si'
+ )
+ )
+);
+
+$result = $squalo->createList($list_name, $recipients);*/
+
+
+// Ustvarimo mail in posljemo
+/*$list_id = '11';
+
+$subject = 'Testni subject';
+$body = 'Sporočilo v emailu... Še nekaj atributov url: #URL#, ime: #FIRSTNAME#';
+
+$from_email = 'peter.hrvatin@gmail.com';
+$from_name = 'Peter Gmail';
+$reply_to_email = 'peter.hrvatin@gmail.com';
+
+$result = $squalo->sendEmail($subject, $body, $list_id, $from_email, $from_name, $reply_to_email);*/
+
+
+
+
+echo '
'; print_r($result); echo ' ';
+
+
+
+
\ No newline at end of file
diff --git a/admin/survey/modules/mod_squalo/class.SqualoApi.php b/admin/survey/classes/surveyEmails/squalo/class.SqualoApi.php
similarity index 84%
rename from admin/survey/modules/mod_squalo/class.SqualoApi.php
rename to admin/survey/classes/surveyEmails/squalo/class.SqualoApi.php
index ce821357a..6c1c8cf73 100644
--- a/admin/survey/modules/mod_squalo/class.SqualoApi.php
+++ b/admin/survey/classes/surveyEmails/squalo/class.SqualoApi.php
@@ -2,7 +2,7 @@
/**
*
- * Class ki vsebuje funkcije APIJA (prijava, registracija v 1ko)
+ * Class ki vsebuje funkcije Squalo APIJA (dodajanje prejemnikov, posiljanje...)
*
*/
@@ -37,15 +37,24 @@ class SqualoApi {
// Decode json response
$response_array = json_decode($response, true);
+ // Zalogiramo kaj se je dogajalo
+ $SL = new SurveyLog();
+
// Error
if($response_array['errorCode'] != '0'){
$result['error'] = $response_array["errorMessage"]. ' (code '.$response_array["errorCode"].')';
$result['success'] = false;
+
+ $SL->addMessage(SurveyLog::MAILER, "NAPAKA pri SQUALO API klicu ('.$action.')! ".$result['error']);
}
else{
$result = $response_array;
$result['success'] = true;
+
+ $SL->addMessage(SurveyLog::MAILER, "USPEŠEN SQUALO API klic ('.$action.').");
}
+
+ $SL->write();
return $result;
}
@@ -142,10 +151,12 @@ class SqualoApi {
'ordering' => $list_number,
'published' => true
);
-
+
$response = $this->executeCall($action, $method, $data);
- return $response;
+ $list_id = ($response['success']) ? $response['list']['id'] : '0';
+
+ return $list_id;
}
/*
@@ -182,7 +193,9 @@ class SqualoApi {
$response = $this->executeCall($action, $method, $data);
- return $response;
+ $newsletter_id = ($response['success']) ? $response['newsletter']['id'] : '0';
+
+ return $newsletter_id;
}
/*
@@ -214,6 +227,19 @@ class SqualoApi {
$action = 'create-recipient';
$method = 'POST';
+ // Pretvorimo atribute po meri v pravo obliko
+ $custom_attributes_squalo = array();
+ $i = 0;
+ foreach($custom_attributes as $key => $value){
+
+ $custom_attributes_squalo[$i] = array(
+ "name" => $key,
+ "value" => $value
+ );
+
+ $i++;
+ }
+
$data = array(
'email' => $email,
'listIds' => array($list_id),
@@ -221,12 +247,15 @@ class SqualoApi {
'confirmed' => true,
'enabled' => true,
'gdprCanSend' => true,
- 'gdprCanTrack' => true
+ 'gdprCanTrack' => true,
+ 'customAttributes' => $custom_attributes_squalo
);
$response = $this->executeCall($action, $method, $data);
- return $response;
+ $recipient_id = ($response['success']) ? $response['recipient']['id'] : '0';
+
+ return $recipient_id;
}
/*
diff --git a/admin/survey/classes/surveyEmails/squalo/class.SurveyInvitationsSqualo.php b/admin/survey/classes/surveyEmails/squalo/class.SurveyInvitationsSqualo.php
new file mode 100644
index 000000000..4dd983ae4
--- /dev/null
+++ b/admin/survey/classes/surveyEmails/squalo/class.SurveyInvitationsSqualo.php
@@ -0,0 +1,480 @@
+anketa = $anketa;
+
+ // Preverimo ce je squalo omogocen na tej instalaciji in anketi
+ $this->squaloEnabled = $this->checkSqualoEnabled() ? true : false;
+
+ // Preverimo ce je squalo vklopljen na anketi
+ $this->squaloActive = $this->checkSqualoActive() ? true : false;
+ }
+
+
+ public function getSqualoEnabled(){
+ return $this->squaloEnabled;
+ }
+
+ public function getSqualoActive(){
+ return $this->squaloActive;
+ }
+
+ // Preverimo ce je squalo omogocen na instalaciji
+ private function checkSqualoEnabled(){
+ global $mysql_database_name;
+ global $admin_type;
+ global $squalo_user;
+ global $squalo_key;
+
+ // Zaenkrat imajo squalo samo admini
+ if($admin_type != 0)
+ return false;
+
+ // Squalo je omogocen samo na testu, www in virtualkah
+ if($mysql_database_name != 'www1kasi' && $mysql_database_name != 'test1kasi' && $mysql_database_name != 'real1kasi')
+ return false;
+
+ // Zaenkrat imajo squalo samo admini
+ if(!isset($squalo_user) || $squalo_user == '' || !isset($squalo_key) || $squalo_key == '')
+ return false;
+
+ return true;
+ }
+
+ // Preverimo ce je squalo vklopljen na anketi
+ private function checkSqualoActive(){
+
+ $vabila_type = SurveyInfo::getSurveyModules('email');
+
+ // Vklopljen squalo
+ if($vabila_type === '2'){
+ return true;
+ }
+
+ return false;
+ }
+
+
+ // Izvedemo squalo pošiljanje (ustvarimo seznam, newsletter, pošljemo maile)
+ public function sendSqualoInvitations($sql_recipients_query, $sending_data){
+ global $global_user_id;
+ global $site_url;
+
+
+ // Preverimo ce je vklopljen modul za volitve
+ $voting = SurveyInfo::getInstance()->checkSurveyModule('voting');
+
+ // Ce mamo SEO
+ $nice_url = SurveyInfo::getSurveyLink();
+
+ // Ali imamo individualizirana vabila s kodo
+ $surveySettings = SurveyInfo::getInstance()->getSurveyRow();
+ $individual = (int)$surveySettings['individual_invitation'];
+
+ # zakeširamo user_id za datapiping
+ $arryDataPiping = array();
+ $qryDataPiping = sisplet_query("SELECT id, inv_res_id FROM srv_user WHERE ank_id='$this->anketa' AND inv_res_id IS NOT NULL");
+ while (list($dpUid, $dpInvResId) = mysqli_fetch_row($qryDataPiping)) {
+
+ if ((int)$dpInvResId > 0 && (int)$dpUid > 0) {
+ $arryDataPiping[$dpInvResId] = (int)$dpUid;
+ }
+ }
+
+ $duplicated = array();
+
+ # array za rezultate
+ $send_ok = array();
+ $send_ok_ids = array();
+ $send_users_data = array();
+ $send_error = array();
+ $send_error_ids = array();
+
+ // Loop po prejemnikih
+ $recipients = array();
+ while ($sql_row = mysqli_fetch_assoc($sql_recipients_query)) {
+
+ $password = $sql_row['password'];
+
+ $email = $sql_row['email'];
+
+ // Preverimo ce je duplikat
+ if ($dont_send_duplicated == true && isset($duplicated[$email])) {
+ $duplicated[$email] ++;
+ continue;
+ }
+
+ $duplicated[$email] = 1;
+
+
+
+ if ( ($individual == 1 && trim($email) != '' && trim($password) != '') || ($individual == 0 && trim($email) != '') ){
+
+ // odvisno ali imamo url za jezik.
+ if ($sending_data['msg_url'] != null && trim($sending_data['msg_url']) != '' ) {
+ $url = $sending_data['msg_url'] . ($individual == 1 ? '?code='.$password : '');
+ }
+ else {
+ $url = $nice_url . ($individual == 1 ? '&code='.$password : '');
+ }
+
+ $url .= '&ai='.(int)$sending_data['arch_id'];
+
+ // odjava
+ $unsubscribe = $site_url . 'admin/survey/unsubscribe.php?anketa=' . $this->anketa . '&code='.$password;
+
+ $custom_attributes = array(
+ 'url' => '
' . $url . ' ',
+ 'urllink' => $url,
+ 'firstname' => $sql_row['firstname'],
+ 'lastname' => $sql_row['lastname'],
+ //'email' => $sql_row['email'],
+ 'code' => $sql_row['password'],
+ 'password' => $sql_row['password'],
+ 'phone' => $sql_row['phone'],
+ 'custom' => $sql_row['custom'],
+ 'unsubscribe' => $unsubscribe,
+ );
+
+ $recipients[] = array(
+ 'email' => $sql_row['email'],
+ 'name' => $sql_row['firstname'],
+ 'surname' => $sql_row['lastname'],
+ 'custom_attributes' => $custom_attributes
+ );
+
+ $_user_data = $sql_row;
+ $send_users_data[] = $_user_data;
+
+ $send_emails[] = $email;
+ $send_ids[] = $sql_row['id'];
+ }
+ }
+
+ // Ustvarimo squalo seznam z respondenti
+ $list_name = $global_user_id.'_'.$this->anketa.'_'.$sending_data['arch_id'];
+
+ $list_id = $this->createList($list_name, $recipients);
+
+
+ // Ce so vsi prejemniki ok dodani na seznam, ustvarimo mail in posljemo
+ if($list_id != false)
+ $squalo_sending_result = $this->sendEmail($sending_data['subject_text'], $sending_data['body_text'], $list_id, $sending_data['from_email'], $sending_data['from_name'], $sending_data['reply_to_email']);
+
+
+ // Napaka pri squalo posiljanju oz. dodajanju - zabelezimo kot da ni noben ok poslan
+ if(!$squalo_sending_result || !$list_id){
+
+ $send_error = $send_emails;
+ $send_error_ids = $send_ids;
+
+ foreach($send_users_data as $key => $val){
+ $val['status'] = 2;
+ $send_users_data[$key] = $val;
+ }
+
+ $send_ok = array();
+ $send_ok_ids = array();
+
+ # updejtamo status za errorje
+ if (count($send_error_ids) > 0) {
+
+ $sqlQuery = sisplet_query("UPDATE srv_invitations_recipients SET last_status = GREATEST(last_status,2) WHERE id IN (".implode(',',$send_error_ids).") AND last_status IN ('0')");
+ if (!$sqlQuery) {
+ $error = mysqli_error($GLOBALS['connect_db']);
+ }
+ }
+
+ $results = array(
+ 'send_ok' => $send_ok,
+ 'send_ok_ids' => $send_ok_ids,
+ 'send_users_data' => $send_users_data,
+ 'send_error' => $send_error,
+ 'send_error_ids' => $send_error_ids,
+ );
+
+ return $results;
+ }
+
+
+ // Ok squalo posiljanje - zabelezimo da so bili vsi ok poslani
+ $send_ok = $send_emails;
+ $send_ok_ids = $send_ids;
+
+ foreach($send_users_data as $key => $val){
+ $val['status'] = 1;
+ $send_users_data[$key] = $val;
+ }
+
+ $send_error = array();
+ $send_error_ids = array();
+
+ // updejtamo userja da mu je bilo poslano - SQUALO je vedno vse ok
+ if (count($send_ok_ids) > 0) {
+
+ $sqlQuery = sisplet_query("UPDATE srv_invitations_recipients SET sent='1', date_sent='".$sending_data['date_sent']."' WHERE id IN (".implode(',',$send_ok_ids).")");
+ if (!$sqlQuery) {
+ $error = mysqli_error($GLOBALS['connect_db']);
+ }
+
+ // statuse popravimo samo če vabilo še ni bilo poslano ali je bila napaka
+ $sqlQuery = sisplet_query("UPDATE srv_invitations_recipients SET last_status='1' WHERE id IN (".implode(',',$send_ok_ids).") AND last_status IN ('0','2')");
+ if (!$sqlQuery) {
+ $error = mysqli_error($GLOBALS['connect_db']);
+ }
+
+ // Pri volitvah za sabo pobrisemo podatke preko katerih bi lahko povezali prejemnike z responsi
+ if($voting){
+ $sqlQuery = sisplet_query("UPDATE srv_invitations_recipients
+ SET cookie='', password=''
+ WHERE id IN (".implode(',',$send_ok_ids).") AND sent='1' AND last_status='1' AND ank_id='".$this->anketa."'
+ ");
+ if (!$sqlQuery) {
+ $error = mysqli_error($GLOBALS['connect_db']);
+ }
+ }
+ }
+
+
+ // če mamo personalizirana email vabila, userje dodamo v bazo
+ if ($individual == 1) {
+
+ if (SurveyInfo::getInstance()->getSurveyColumn('db_table') == 1)
+ $db_table = '_active';
+
+ $inv_variables_link = array('email'=>'email','geslo'=>'password','ime'=>'firstname','priimek'=>'lastname','naziv'=>'salutation','telefon'=>'phone','drugo'=>'custom','odnos'=>'relation','last_status'=>'last_status','sent'=>'sent','responded'=>'responded','unsubscribed'=>'unsubscribed');
+
+ $sys_vars = $this->getSystemVars();
+
+ foreach($send_users_data as $_user_data){
+
+ // dodamo še userja v srv_user da je kompatibilno s staro logiko
+ $strInsertDataText = array();
+ $strInsertDataVrednost = array();
+
+ // Pri volitvah zaradi anonimizacije ignoriramo vse identifikatorje
+ if($voting){
+ $_r = sisplet_query("INSERT INTO srv_user
+ (ank_id, cookie, pass, last_status, inv_res_id)
+ VALUES
+ ('".$this->anketa."', '".$_user_data['cookie']."', '".$_user_data['password']."', '".$_user_data['status']."', '-1') ON DUPLICATE KEY UPDATE cookie = '".$_user_data['cookie']."', pass='".$_user_data['password']."'
+ ");
+
+ // Ce ne belezimo parapodatka za cas responsa, anonimno zabelezimo cas zadnjega responsa
+ sisplet_query("UPDATE srv_anketa SET last_response_time=NOW() WHERE id='".$this->anketa."'");
+ }
+ else{
+ $_r = sisplet_query("INSERT INTO srv_user
+ (ank_id, email, cookie, pass, last_status, time_insert, inv_res_id)
+ VALUES
+ ('".$this->anketa."', '".$_user_data['email']."', '".$_user_data['cookie']."', '".$_user_data['password']."', '".$_user_data['status']."', NOW(), '".$_user_data['id']."') ON DUPLICATE KEY UPDATE cookie = '".$_user_data['cookie']."', pass='".$_user_data['password']."'
+ ");
+ }
+ $usr_id = mysqli_insert_id($GLOBALS['connect_db']);
+
+ if ($usr_id) {
+
+ // dodamo še srv_userbase in srv userstatus
+ sisplet_query("INSERT INTO srv_userbase (usr_id, tip, datetime, admin_id) VALUES ('".$usr_id."','0',NOW(),'".$global_user_id."')");
+ sisplet_query("INSERT INTO srv_userstatus (usr_id, tip, status, datetime) VALUES ('".$usr_id."', '0', '0', NOW())");
+
+
+
+ // dodamo še podatke za posameznega userja za sistemske spremenljivke
+ foreach ($sys_vars AS $sid => $spremenljivka) {
+
+ $_user_variable = $inv_variables_link[$spremenljivka['variable']];
+
+ if (trim($_user_data[$_user_variable]) != '' && $_user_data[$_user_variable] != null) {
+ if($spremenljivka['variable'] == 'odnos')
+ $strInsertDataVrednost[] = "('".$sid."','".$spremenljivka['vre_id'][trim($_user_data[$_user_variable])]."','".$usr_id."')";
+ else
+ $strInsertDataText[] = "('".$sid."','".$spremenljivka['vre_id']."','".trim($_user_data[$_user_variable])."','".$usr_id."')";
+ }
+ }
+ }
+
+ // Pri volitvah zaradi anonimizacije ne vsatvimo nicesar v sistemske spremenljivke
+ if(!$voting){
+
+ // vstavimo v srv_data_text
+ if (count($strInsertDataText) > 0) {
+ $strInsert = "INSERT INTO srv_data_text".$db_table." (spr_id, vre_id, text, usr_id) VALUES ";
+ $strInsert .= implode(',',$strInsertDataText);
+ sisplet_query($strInsert);
+ }
+ // vstavimo v srv_data_vrednost
+ if (count($strInsertDataVrednost) > 0) {
+ $strInsert = "INSERT INTO srv_data_vrednost".$db_table." (spr_id, vre_id, usr_id) VALUES ";
+ $strInsert .= implode(',',$strInsertDataVrednost);
+ sisplet_query($strInsert);
+ }
+ }
+ }
+ }
+
+
+ $results = array(
+ 'send_ok' => $send_ok,
+ 'send_ok_ids' => $send_ok_ids,
+ 'send_users_data' => $send_users_data,
+ 'send_error' => $send_error,
+ 'send_error_ids' => $send_error_ids,
+ );
+
+ return $results;
+ }
+
+
+ // Ustvarimo nov seznam in nanj dodamo respondente
+ private function createList($list_name, $recipients){
+
+ $squalo_api = new SqualoApi();
+
+ // Ustvarimo prazen seznam
+ $list_id = $squalo_api->createList($list_name);
+
+ // Napaka pri ustvarjanju seznama
+ if($list_id == '0'){
+ echo 'Napaka pri ustvarjanju Squalo seznama.';
+ return false;
+ }
+
+ // Dodamo respondente na ta seznam
+ foreach($recipients as $recipient){
+
+ $email = $recipient['email'];
+
+ $custom_attributes = $recipient['custom_attributes'];
+
+ $recipient_id = $squalo_api->addRecipient($email, $list_id, $custom_attributes);
+
+ // Napaka pri ustvarjanju seznama
+ if($recipient_id == '0'){
+ echo 'Napaka pri dodajanju prejemnika '.$email.' na Squalo seznam.';
+ return false;
+ }
+ }
+
+ return $list_id;
+ }
+
+ // Ustvarimo nov email z vsebino (api klic createNewsletter) in posljemo na vse naslove v seznamu
+ private function sendEmail($subject, $body, $list_id, $from_email, $from_name, $reply_to_email){
+
+ $squalo_api = new SqualoApi();
+
+ // Zamenjamo datapiping npr. #URL# -> {subtag:url}...
+ $subject = self::squaloDatapiping($subject);
+ $body = self::squaloDatapiping($body);
+
+ $language = 'sl';
+
+ // Api klic za ustvarjanje emaila
+ $newsletter_id = $squalo_api->createNewsletter($list_id, $subject, $body, $body, $from_email, $from_name, $reply_to_email, $language='sl');
+
+ // Napaka pri ustvarjanju newsletterja
+ if($newsletter_id == '0'){
+ echo 'Napaka pri ustvarjanju Squalo newsletterja.';
+ return false;
+ }
+
+ // Api klic za posiljanje na naslove
+ $result = $squalo_api->sendEmails($newsletter_id);
+
+ // Napaka pri ustvarjanju newsletterja
+ if(!$result['success']){
+ echo 'Napaka pri pošiljanju emailov za Squalo newsletter '.$newsletter_id.'.';
+ return false;
+ }
+
+ return $result;
+ }
+
+
+ private static function squaloDatapiping($text){
+
+ $text_fixed = str_replace(
+ array(
+ '#URL#',
+ '#URLLINK#',
+ '#UNSUBSCRIBE#',
+ '#FIRSTNAME#',
+ '#LASTNAME#',
+ '#EMAIL#',
+ '#CODE#',
+ '#PASSWORD#',
+ '#PHONE#',
+ '#SALUTATION#',
+ '#CUSTOM#',
+ '#RELATION#',
+ ),
+ array(
+ '{subtag:url}',
+ '{subtag:urllink}',
+ '{subtag:unsubscribe}',
+ '{subtag:firstname}',
+ '{subtag:lastname}',
+ '{subtag:email}',
+ '{subtag:code}',
+ '{subtag:password}',
+ '{subtag:phone}',
+ '{subtag:salutation}',
+ '{subtag:custom}'
+ ),
+ $text
+ );
+
+ return $text_fixed;
+ }
+
+ private function getSystemVars(){
+
+ $inv_variables = array('email','password','ime','priimek','naziv','telefon','drugo','odnos');
+
+ // polovimo sistemske spremenljivke z vrednostmi
+ $qrySistemske = sisplet_query("SELECT s.id, s.naslov, s.variable
+ FROM srv_spremenljivka s, srv_grupa g
+ WHERE s.sistem='1' AND s.gru_id=g.id AND g.ank_id='".$this->anketa."' AND variable IN ("."'" . implode("','",$inv_variables)."')
+ ORDER BY g.vrstni_red, s.vrstni_red
+ ");
+ $sys_vars = array();
+ $sys_vars_ids = array();
+
+ while ($row = mysqli_fetch_assoc($qrySistemske)) {
+ $sys_vars[$row['id']] = array('id'=>$row['id'], 'variable'=>$row['variable'],'naslov'=>$row['naslov']);
+ $sys_vars_ids[] = $row['id'];
+ }
+
+ $sqlVrednost = sisplet_query("SELECT spr_id, id AS vre_id, vrstni_red, variable FROM srv_vrednost WHERE spr_id IN(".implode(',',$sys_vars_ids).") ORDER BY vrstni_red ASC ");
+ while ($row = mysqli_fetch_assoc($sqlVrednost)) {
+
+ // Ce gre za odnos imamo radio
+ if($sys_vars[$row['spr_id']]['variable'] == 'odnos'){
+
+ if(!isset($sys_vars[$row['spr_id']]['vre_id'][$row['vrstni_red']]))
+ $sys_vars[$row['spr_id']]['vre_id'][$row['variable']] = $row['vre_id'];
+ }
+ elseif (!isset($sys_vars[$row['spr_id']]['vre_id'])) {
+ $sys_vars[$row['spr_id']]['vre_id'] = $row['vre_id'];
+ }
+ }
+
+ return $sys_vars;
+ }
+}
\ No newline at end of file
diff --git a/admin/survey/classes/tracking/CrossRoad.php b/admin/survey/classes/tracking/CrossRoad.php
index 45d89105b..2b584acde 100644
--- a/admin/survey/classes/tracking/CrossRoad.php
+++ b/admin/survey/classes/tracking/CrossRoad.php
@@ -35,6 +35,7 @@ class CrossRoad {
break;
case A_NONRESPONSE_GRAPH:
case A_USABLE_RESP:
+ case A_KAKOVOST_RESP:
case A_SPEEDER_INDEX:
case A_TEXT_ANALYSIS:
case A_GEOIP_LOCATION:
@@ -183,6 +184,7 @@ class CrossRoad {
case A_UPORABNOST:
case A_HIERARHIJA_SUPERADMIN:
case A_KVIZ:
+ case A_VOTING:
case A_ADVANCED_PARADATA:
case A_JSON_SURVEY_EXPORT:
case A_VNOS:
diff --git a/admin/survey/definition.php b/admin/survey/definition.php
index 2c265a256..3a9176331 100644
--- a/admin/survey/definition.php
+++ b/admin/survey/definition.php
@@ -39,6 +39,7 @@
define("NAVI_HIERARHIJA_SUPERADMIN", "NAVI_HIERARHIJA_SUPERADMIN");
define("NAVI_HIERARHIJA", "NAVI_HIERARHIJA");
define("NAVI_KVIZ", "NAVI_KVIZ");
+ define("NAVI_VOTING", "NAVI_VOTING");
define("NAVI_VNOS", "NAVI_VNOS");
define("NAVI_PHONE", "NAVI_PHONE");
define("NAVI_360", "NAVI_360");
@@ -56,6 +57,7 @@
define("A_NONRESPONSE_GRAPH", "nonresponse_graph");
define("A_PARA_GRAPH", "para_graph");
define("A_USABLE_RESP", "usable_resp");
+ define("A_KAKOVOST_RESP", "kakovost_resp");
define("A_SPEEDER_INDEX", "speeder_index");
define("A_TEXT_ANALYSIS", "text_analysis");
define("A_GEOIP_LOCATION", "geoip_location");
@@ -178,6 +180,7 @@
define('A_UPORABNOST', 'uporabnost');
define('A_HIERARHIJA_SUPERADMIN', 'hierarhija_superadmin');
define('A_KVIZ', 'kviz');
+ define('A_VOTING', 'voting');
define('A_VNOS', 'vnos');
define('A_PHONE', 'telefon'); # Telefon
define('T_PHONE', 'telefon'); # Telefon
diff --git a/admin/survey/export/latexclasses/Vprasanja/BesediloLatex.php b/admin/survey/export/latexclasses/Vprasanja/BesediloLatex.php
index 1443e99cc..92516901e 100644
--- a/admin/survey/export/latexclasses/Vprasanja/BesediloLatex.php
+++ b/admin/survey/export/latexclasses/Vprasanja/BesediloLatex.php
@@ -141,12 +141,19 @@ class BesediloLatex extends LatexSurveyElement
$rowVrednost = mysqli_fetch_array($sqlVrednosti);
if($spremenljivke['tip'] == 21){ //ce je ta novo besedilo, ki je v uporabi
- //$sqlUserAnswer = sisplet_query("SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' AND vre_id='".$rowVrednost['id']."' AND loop_id $loop_id");
- $sqlUserAnswer = sisplet_query("SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' AND vre_id='".$rowVrednost['id']."' ");
+ $sqlUserAnswerString = "SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' AND vre_id='".$rowVrednost['id']."' ";
+ if($loop_id){ //ce je prisoten se loop_id, je tega potrebno dodati sql stavku
+ $sqlUserAnswerString .= " AND loop_id=$loop_id";
+ }
+ //echo $sqlUserAnswerString."";
}elseif($spremenljivke['tip'] == 4){ //ce je ta staro besedilo, ki ni vec v uporabi vsaj 9 let (2020)
- $sqlUserAnswer = sisplet_query("SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' ");
+ //$sqlUserAnswer = sisplet_query("SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' ");
+ $sqlUserAnswerString = "SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' ";
+ if($loop_id){ //ce je prisoten se loop_id, je tega potrebno dodati sql stavku
+ $sqlUserAnswerString .= " AND loop_id=$loop_id";
+ }
}
-
+ $sqlUserAnswer = sisplet_query($sqlUserAnswerString);
$userAnswer = mysqli_fetch_assoc($sqlUserAnswer);
//echo "userAnswer: ".$userAnswer['text']."";
//ureditev polja s podatki trenutnega uporabnika - konec ##############################################
@@ -237,20 +244,28 @@ class BesediloLatex extends LatexSurveyElement
$rowVrednost['naslov'] = $naslov;
}
+
//ureditev polja s podatki trenutnega uporabnika ######################################################
if($spremenljivke['tip'] == 21){ //ce je ta novo besedilo, ki je v uporabi
- //$sqlUserAnswer = sisplet_query("SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' AND vre_id='".$rowVrednost['id']."' AND loop_id $loop_id");
- $sqlUserAnswer = sisplet_query("SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' AND vre_id='".$rowVrednost['id']."' ");
- $userAnswer = mysqli_fetch_assoc($sqlUserAnswer);
- //echo "userAnswer: ".$userAnswer['text']."";
- }elseif($spremenljivke['tip'] == 4){ //ce je ta staro besedilo, ki ni vec v uporabi vsaj 9 let (2020)
- //$sqlUserAnswer = sisplet_query("SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' AND vre_id='".$rowVrednost['id']."' AND loop_id $loop_id");
- $sqlUserAnswer = sisplet_query("SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' ");
- $userAnswer = mysqli_fetch_assoc($sqlUserAnswer);
- //echo "SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' ";
+ $sqlUserAnswerString = "SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' AND vre_id='".$rowVrednost['id']."' ";
+ if($loop_id){ //ce je prisoten se loop_id, je tega potrebno dodati sql stavku
+ $sqlUserAnswerString .= " AND loop_id=$loop_id";
+ }
//echo "userAnswer: ".$userAnswer['text']."";
+ }elseif($spremenljivke['tip'] == 4){ //ce je ta staro besedilo, ki ni vec v uporabi vsaj 9 let (2020)
+ $sqlUserAnswerString = "SELECT text FROM srv_data_text".$db_table." WHERE spr_id='".$spremenljivke['id']."' AND usr_id='".$usr_id."' ";
+ if($loop_id){ //ce je prisoten se loop_id, je tega potrebno dodati sql stavku
+ $sqlUserAnswerString .= " AND loop_id=$loop_id";
+ }
}
+ $sqlUserAnswer = sisplet_query($sqlUserAnswerString);
+ $userAnswer = mysqli_fetch_assoc($sqlUserAnswer);
//ureditev polja s podatki trenutnega uporabnika - konec ##############################################
+
+ //priprava besedila za izpis
+ $stringNaslov = $rowVrednost['naslov'];
+ $stringNaslov = Common::getInstance()->dataPiping($stringNaslov, $usr_id, $loop_id);
+ //priprava besedila za izpis - konec
//ce ni other ali missing
if( (int)$rowVrednost['other'] == 0 ){
@@ -295,9 +310,7 @@ class BesediloLatex extends LatexSurveyElement
}
array_push($textBoxes, $dataTextBox); //filanje polja s praznimi text box-i
-
- array_push($besedila, $this->encodeText($rowVrednost['naslov']) ); //filanje polja z besedili
-
+ array_push($besedila, $this->encodeText($stringNaslov)); //filanje polja z besedili
if($okvir == 0){
if($spremenljivke['tip'] == 21){ //ce je ta novo besedilo, ki je v uporabi
@@ -306,8 +319,8 @@ class BesediloLatex extends LatexSurveyElement
}
//izpis besedila
- if($polozajBesedila!=0){ //ce je prisotno dodatno besedilo ob okvirju
- $tex .= $this->encodeText($rowVrednost['naslov'])." ";
+ if($polozajBesedila!=0){ //ce je prisotno dodatno besedilo ob okvirju
+ $tex .= $this->encodeText($stringNaslov)." ";
}
$tex .= ' '.$dataTextBox;
}elseif($spremenljivke['tip'] == 4){ //ce je ta staro besedilo, ki ni vec v uporabi vsaj 9 let (2020)
@@ -325,7 +338,7 @@ class BesediloLatex extends LatexSurveyElement
}
//izpis besedila
- $tex .= $this->encodeText($rowVrednost['naslov']);
+ $tex .= $this->encodeText($stringNaslov)." ";
//izpis text box-a dolocene sirine in visine z besedilom odgovora
$tex .= ' '.$dataTextBox;
@@ -335,10 +348,15 @@ class BesediloLatex extends LatexSurveyElement
}
else { //drugace, ce imamo missinge ali podobne, jih zabelezi v polju
// imamo polje drugo - ne vem, zavrnil...
- $array_others[$rowVrednost['id']] = array(
+ /* $array_others[$rowVrednost['id']] = array(
'naslov'=>$rowVrednost['naslov'],
'vrstni_red'=>$rowVrednost['vrstni_red'],
'value'=>$text[$rowVrednost['vrstni_red']],
+ ); */
+ $array_others[$rowVrednost['id']] = array(
+ 'naslov'=>$this->encodeText($stringNaslov),
+ 'vrstni_red'=>$rowVrednost['vrstni_red'],
+ 'value'=>$text[$rowVrednost['vrstni_red']],
);
}
@@ -434,7 +452,7 @@ class BesediloLatex extends LatexSurveyElement
}
}
-
+ //echo "tex koda: ".$tex." in indeks $indeksZaWhile";
return $tex;
}
diff --git a/admin/survey/export/latexclasses/Vprasanja/RadioCheckboxSelectLatex.php b/admin/survey/export/latexclasses/Vprasanja/RadioCheckboxSelectLatex.php
index a8636e28e..29283747b 100644
--- a/admin/survey/export/latexclasses/Vprasanja/RadioCheckboxSelectLatex.php
+++ b/admin/survey/export/latexclasses/Vprasanja/RadioCheckboxSelectLatex.php
@@ -95,8 +95,9 @@ class RadioCheckboxSelectLatex extends LatexSurveyElement
if (strip_tags($rowl['naslov2']) != '') $rowVrednost['naslov2'] = $rowl['naslov2'];
#ce je respondent odgovarjal v drugem jeziku - konec ################
- $stringTitle = ($this->encodeText(( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ), $rowVrednost['id'] ));
- $stringTitle = '\\textcolor{crta}{'.$stringTitle.'}';
+ $stringTitle = ( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] );
+ $stringTitle = Common::getInstance()->dataPiping($stringTitle, $usr_id, $loop_id);
+ $stringTitle = '\\textcolor{crta}{'.$this->encodeText($stringTitle).'}';
//echo $stringTitle."za indeks: ".$indeksZaWhile."";
//stetje stevila vrstic
@@ -263,14 +264,14 @@ class RadioCheckboxSelectLatex extends LatexSurveyElement
while ($rowVrednost = mysqli_fetch_assoc($sqlVrednosti)){
$prop['full'] = ( isset($userAnswer[$rowVrednost['id']]) );
-
- //if($this->language>1){ //ce je prevod ankete
if($this->prevod){ //ce je prevod ankete
$rowl = $this->srv_language_vrednost($rowVrednost['id']); //pridobi prevod naslova v ustreznem jeziku
$stringTitle = ((( $rowl['naslov'] ) ? $rowl['naslov'] : ( ( $rowl['naslov2'] ) ? $rowl['naslov2'] : $rowl['variable'] ) )); //prevod naslova v ustreznem jeziku
}else{
$stringTitle = ((( $rowVrednost['naslov'] ) ? $rowVrednost['naslov'] : ( ( $rowVrednost['naslov2'] ) ? $rowVrednost['naslov2'] : $rowVrednost['variable'] ) ));
}
+
+ $stringTitle = Common::getInstance()->dataPiping($stringTitle, $usr_id, $loop_id);
//echo "naslov: $stringTitle";
//echo "jezik: ".$this->language."";
diff --git a/admin/survey/export/latexclasses/Vprasanja/SteviloLatex.php b/admin/survey/export/latexclasses/Vprasanja/SteviloLatex.php
index ade06a602..a102afaf9 100644
--- a/admin/survey/export/latexclasses/Vprasanja/SteviloLatex.php
+++ b/admin/survey/export/latexclasses/Vprasanja/SteviloLatex.php
@@ -273,7 +273,9 @@ class SteviloLatex extends LatexSurveyElement
}
//izpis besedila enote
- $tex .= $this->encodeText($rowVrednost['naslov']);
+ $stringEnota = $rowVrednost['naslov'];
+ $stringEnota = Common::getInstance()->dataPiping($stringEnota, $usr_id, $loop_id);
+ $tex .= $this->encodeText($stringEnota);
if($okvir == 1){ //ce rabimo prazen okvir, izpisi
//izpis praznega text box-a dolocene sirine in visine
@@ -315,9 +317,11 @@ class SteviloLatex extends LatexSurveyElement
$tex .= ' \\\\ '; //pojdi v novo vrstico
}else{
$tex .= ' & '; //v nov stolpec tabele
- }
-
- $tex .= ' '.$this->encodeText($rowVrednost['naslov']);
+ }
+
+ $stringEnota = $rowVrednost['naslov'];
+ $stringEnota = Common::getInstance()->dataPiping($stringEnota, $usr_id, $loop_id);
+ $tex .= ' '.$this->encodeText($stringEnota);
if($indeksZaWhile==1&&$export_format=='pdf'){ //ce je prvi okvir in je pdf
//$tex .= ' \hspace{0.5cm} '; //dodaj še nekaj prostora, za prvim okvirjem, da bo dovolj prostora
diff --git a/admin/survey/export/latexclasses/class.LatexStatus.php b/admin/survey/export/latexclasses/class.LatexStatus.php
index a4434a7de..590107af3 100644
--- a/admin/survey/export/latexclasses/class.LatexStatus.php
+++ b/admin/survey/export/latexclasses/class.LatexStatus.php
@@ -261,6 +261,10 @@ class LatexStatus {
$enabled_advanced .= $prefix . $lang['srv_vrsta_survey_type_6'];
$prefix = ', ';
}
+ if ($row['voting'] == 1) {
+ $enabled_advanced .= $prefix . $lang['srv_vrsta_survey_type_18'];
+ $prefix = ', ';
+ }
if ($row['phone'] == 1) {
$enabled_advanced .= $prefix . $lang['srv_vrsta_survey_type_7'];
$prefix = ', ';
diff --git a/admin/survey/export/latexclasses/class.LatexSurvey.php b/admin/survey/export/latexclasses/class.LatexSurvey.php
index fb0fcec11..2e1dce066 100644
--- a/admin/survey/export/latexclasses/class.LatexSurvey.php
+++ b/admin/survey/export/latexclasses/class.LatexSurvey.php
@@ -440,11 +440,12 @@ class LatexSurvey{
if ( !$this->getGrupa() ){
if ( SurveyInfo::getInstance()->getSurveyShowConcl() && SurveyInfo::getInstance()->getSurveyConcl() )
{ // ce obstaja footer izpisemo footer
+
}
}
- // Izpis grafa in tabele za NIJZ na koncu dokumenta
+ // Izpis grafa in tabele za NIJZ na koncu dokumenta
global $site_domain;
if( ($site_domain == 'test.1ka.si' && $this->anketa == '8892') || ($site_domain == 'anketa.nijz.si' && $this->anketa == '126738') ){
@@ -1056,12 +1057,6 @@ class LatexSurvey{
$output .= ' '.$row_if['label'].' ';
$output .= ') ';
}
- //echo $output."";
-/* $this->pdf->SetTextColor(0,0,150);
- $this->pdf->setFont('','B',$this->font);
- $this->pdf->MultiCell(90, 1, $this->encodeText($output),0,'L',0,1,0,0);
- $this->pdf->SetTextColor(0,0,0);
- $this->pdf->setFont('','',$this->font); */
return $output;
}
@@ -1249,56 +1244,7 @@ class LatexSurvey{
$posLi = strpos($text, $findLi);
$posPar = strpos($text, $findPar);
- //ureditev izrisa slike
-/* if($posImg !== false){
- $numOfImgs = substr_count($text, $findImg); //stevilo '
'); //pozicija, kjer se konca html koda za img
- $textPotem = substr($textPotem, $posImgEnd+strlen('/>')); //tekst od konca html kode za img dalje
-
- //$text = $textPrej.' '.PIC_SIZE_ANS."{".$this->path2UploadedImages."".$this->getImageName($text, 0, '
path2UploadedImages."".$this->getImageName($text, 0, '
path2UploadedImages."".$this->getImageName($text, 0, '
");
- if(filesize($imageNameTest) > 0){
- $text = $textPrej.' '.PIC_SIZE_ANS."{".$imageName."}".' '.$textPotem;
- }else{
- $image = $lang['srv_pc_unavailable'];
- $text = $textPrej.' '.$image.' '.$textPotem;
- }
- }
-
- //pred ureditvijo posebnih karakterjev, odstrani del teksta s kodo za sliko, da se ne pojavijo tezave zaradi imena datoteke od slike
- $findImgCode = '\includegraphics';
- $posOfImgCode = strpos($text, $findImgCode);
- //echo $posOfImgCode."";
- $textToImgCode = substr($text, 0, $posOfImgCode); //tekst do $findImgCode
- //echo $textToImgCode."";
- $textFromImgCode = substr($text, $posOfImgCode); //tekst po $findImgCode
- //echo $textFromImgCode."";
- $findImgCodeEnd = '}';
- //$posOfImgCodeEnd = strpos($text, $findImgCodeEnd);
- $posOfImgCodeEnd = strpos($textFromImgCode, $findImgCodeEnd);
- //echo $posOfImgCodeEnd."";
- $textAfterImgCode = substr($textFromImgCode, $posOfImgCodeEnd+1); //tekst po $findImgCodeEnd
- //echo $textAfterImgCode."";
- $textOfImgCode = substr($text, $posOfImgCode, $posOfImgCodeEnd+1);
- //echo $textOfImgCode."";
-
- $text = $textToImgCode.$textAfterImgCode;
-
- //pred ureditvijo posebnih karakterjev, odstrani del teksta s kodo za sliko, da se ne pojavijo tezave zaradi imena datoteke od slike - konec
- } */
- //ureditev izrisa slike - konec
-
+
//ureditev posebnih karakterjev za Latex http://www.cespedes.org/blog/85/how-to-escape-latex-special-characters, https://en.wikibooks.org/wiki/LaTeX/Special_Characters#Other_symbols
$text = str_replace('\\','\textbackslash{} ',$text);
//$text = str_replace('{','\{',$text);
@@ -1334,13 +1280,7 @@ class LatexSurvey{
######################
}
//ureditev preureditve html kode ul in li v latex itemize - konec
-
- //po ureditvi posebnih karakterjev, dodati del teksta s kodo za sliko, ce je slika prisotna
-/* if($posImg !== false){
- $text = substr_replace($text, $textOfImgCode, $posOfImgCode, 0);
- } */
- //po ureditvi posebnih karakterjev, dodati del teksta s kodo za sliko, ce je slika prisotna
-
+
if($posPar !== false){ //ce je kaksen html tag
, dodaj prazno vrstico oz. break
if($numOfUl!=0 && $posLi !== false){ //ce imamo ul in li
$divider = ' ';
diff --git a/admin/survey/export/latexclasses/class.LatexSurveyElement.php b/admin/survey/export/latexclasses/class.LatexSurveyElement.php
index 7dea1e3b3..f6a5bae6d 100644
--- a/admin/survey/export/latexclasses/class.LatexSurveyElement.php
+++ b/admin/survey/export/latexclasses/class.LatexSurveyElement.php
@@ -906,7 +906,12 @@ class LatexSurveyElement{
//$text = str_replace('{','\{',$text);
//$text = str_replace('}','\}',$text);
$text = str_replace('$','\$ ',$text);
- $text = str_replace('#','\# ',$text);
+
+ if(substr_count($text, '#')){ //ce je stevilo # vecje od 1
+ $text = str_replace('#','\#',$text);
+ }else{
+ $text = str_replace('#','\# ',$text);
+ }
$text = str_replace('%','\% ',$text);
$text = str_replace('€','\euro',$text);
$text = str_replace('^','\textasciicircum{} ',$text);
@@ -923,7 +928,7 @@ class LatexSurveyElement{
//$text = str_replace('>','\textgreater ',$text);
$text = str_replace('>',' \textgreater ',$text);
//ureditev posebnih karakterjev za Latex - konec
-
+
//ureditev grskih crk
$text = str_replace('α','\textalpha ',$text);
$text = str_replace('β','\textbeta ',$text);
@@ -962,6 +967,7 @@ class LatexSurveyElement{
$text = str_replace('
','\begin{itemize} ', $text);
$text = str_replace('','\item ', $text);
+ $text = str_replace('','\end{itemize} \ ', $text);
}
//echo "prazno v html: ".strpos($text, '\r')."";
@@ -980,6 +986,7 @@ class LatexSurveyElement{
if($numOfOl!=0 && $posLi !== false){ //ce imamo ol in li
$text = str_replace('','\begin{enumerate} ', $text);
$text = str_replace('','\item ', $text);
+ $text = str_replace(' ','\end{enumerate} \ ', $text);
}
//echo "prazno v html: ".strpos($text, '\r')."";
@@ -1022,12 +1029,12 @@ class LatexSurveyElement{
$numOfAt = substr_count($text, $findAt); //stevilo '@' v besedilu
$posAt = strpos($text, $findAt);
- if($posAt){ //ce je prisotna afna
+ if($posAt && $posSpace1){ //ce je prisotna afna in je prisoten presledek v besedilu
//echo "afna je: $posAt ";
//echo "Encoding: ".$text."";
//najdi prvi presledek po afni
- //echo substr($text, $posAt) ."";
+ //echo substr($text, $posAt) ."";
$posSpace1Mail = strpos(substr($text, $posAt), $findSpace); //najdi pozicijo prvega presledka v besedilu po e-naslovu
$posSpace1Mail = $posSpace1Mail+$posAt; //koncna pozicija, ce se gleda celotno besedilo
//echo $posSpace1Mail."";
@@ -1058,16 +1065,18 @@ class LatexSurveyElement{
//RESEVANJE odstranitve dodatnih style tag-ov po ul, ipd. #######################################################
$findStyleTag = 'style="';
- $findStyleTagEnd = '"';
+ //$findStyleTagEnd = '"';
+ $findStyleTagEnd = '">';
$numOfStyleTags = substr_count($text, $findStyleTag); //stevilo 'style=" ' v tekstu
- //echo "stevilo style: ".$numOfStyleTags." ";
+ //echo "stevilo style: ".$numOfStyleTags." ";
+ //echo $text."";
for($s=0; $s<$numOfStyleTags; $s++){ //za vsako najdeno 'style=" ' besedilo, uredi njeno odstranitev
$posStyleTag = strpos($text, $findStyleTag);
- $posStyleTagEnd = strpos($text, $findStyleTagEnd, $posStyleTag); //strpos(string,find,start) najdi $findStyleTagEnd v $text, isci od $posStyleTag dalje
- $dolzinaOff = $posStyleTagEnd - $posStyleTag + 2;
+ $posStyleTagEnd = strpos($text, $findStyleTagEnd, $posStyleTag); //strpos(string,find,start) najdi $findStyleTagEnd v $text, isci od $posStyleTag dalje
+ $dolzinaOff = $posStyleTagEnd - $posStyleTag + 2;
$text = substr_replace($text, "", $posStyleTag, $dolzinaOff);
- }
+ }
//RESEVANJE odstranitve dodatnih style tag-ov po ul, ipd. - konec #################################################
if($pos === false && $posImg === false) { //v tekstu ni br in img
@@ -1933,16 +1942,28 @@ class LatexSurveyElement{
if($spremenljivke['tip'] != 24){ //ce ni kombinirana tabela z izberite s seznama (ali roleto)
if($data[$userAnswerIndex[$spremenljivke['id']]]==($indeksRoleta)){ //ce je prisoten podatek za doloceni indeks seznama, ga izpisi
//$tex .= '& \\textcolor{crta}{'.$vodoravniOdgovori[$j-1].'}'; //izris odgovora respondenta v roleti ali seznamu
- $tex .= '& \\textcolor{crta}{\footnotesize{'.$vodoravniOdgovori[$j-1].'}}'; //izris odgovora respondenta v roleti ali seznamu
+ //$tex .= '& \\textcolor{crta}{\footnotesize{'.$vodoravniOdgovori[$j-1].'}}'; //izris odgovora respondenta v roleti ali seznamu
+ if($export_data_type==0||$export_data_type==2){ //ce skrcen izvoz
+ $tex .= '& \\textcolor{crta}{\footnotesize{'.$vodoravniOdgovori[$j-1].'}}'; //izris odgovora respondenta v roleti ali
+ }else{ //drugace, ce je razsirjen izvoz
+ $tex .= '\item[] \\textcolor{crta}{\footnotesize{'.$vodoravniOdgovori[$j-1].'}}'; //izris odgovora respondenta v roleti ali
+ }
$noItem = 0;
- //echo "podatek je prisoten: ".$vodoravniOdgovori[$j-1]."";
+
}else{
- $tex .= ' & '.$vodoravniOdgovori[$j-1];
+ //echo "tip exp: ".$export_data_type."";
+ if($export_data_type==0||$export_data_type==2){ //ce skrcen izvoz
+ $tex .= ' & '.$vodoravniOdgovori[$j-1];
+ }else{ //drugace, ce je razsirjen izvoz
+
+ }
+
}
}else{ //ce je kombinirana tabela z izberite s seznama (ali roleto)
$tex .= ' & \\textcolor{crta}{\footnotesize{'.$data[$userAnswerIndex[$spremenljivke['id']]].'}}';
/* echo "odgovor : ".$data[$userAnswerIndex[$spremenljivke['id']]]."";
print_r($data); */
+
}
}
@@ -1960,6 +1981,7 @@ class LatexSurveyElement{
}
$roletaAliSeznam = 1;
}
+
}elseif($enota == 4){ //ena moznost proti drugi
//$tex .= '& '.$simbolTex.' & '.$lang['srv_tip_sample_t6_4_vmes'].' & '.$simbolTex;
@@ -2098,7 +2120,7 @@ class LatexSurveyElement{
if( in_array($spremenljivkeTip, array(21, 4, 7, 8, 18, 17)) ){//ce je tip besedilo ali stevilo ali datum ali vsota ali razvrscanje
$rowAnswers = mysqli_fetch_assoc($sqlUserAnswer);
if($rowAnswers){ //ce je kaj v bazi
- //echo "Nekaj je v bazi za spremenljivko".$spremenljivkeId." in usr".$usr_id."";
+ //echo "Nekaj je v bazi za spremenljivko".$spremenljivkeId." in usr ".$usr_id."";
$userDataPresent++;
}
}else{
@@ -2119,7 +2141,7 @@ class LatexSurveyElement{
}
}
}
- //echo "userDataPresent za tip ".$spremenljivkeTip." id".$spremenljivkeId." usr ".$usr_id." je:".$userDataPresent."";
+ //echo "userDataPresent za tip ".$spremenljivkeTip." id ".$spremenljivkeId." usr ".$usr_id." je:".$userDataPresent." in loop: $loop_id";
return $userDataPresent;
}
#funkcija, ki skrbi za preverjanje obstoja podatkov za vprasanja, ki niso grid ali kombinirana tabela - konec
diff --git a/admin/survey/export/latexclasses/textemp/images/1F600.png b/admin/survey/export/latexclasses/textemp/images/1F600.png
new file mode 100644
index 000000000..1762bef48
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F600.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F601.png b/admin/survey/export/latexclasses/textemp/images/1F601.png
new file mode 100644
index 000000000..446a48e43
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F601.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F602.png b/admin/survey/export/latexclasses/textemp/images/1F602.png
new file mode 100644
index 000000000..78d899150
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F602.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F603.png b/admin/survey/export/latexclasses/textemp/images/1F603.png
new file mode 100644
index 000000000..4fb253b7d
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F603.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F604.png b/admin/survey/export/latexclasses/textemp/images/1F604.png
new file mode 100644
index 000000000..7da90823f
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F604.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F605.png b/admin/survey/export/latexclasses/textemp/images/1F605.png
new file mode 100644
index 000000000..dd9011511
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F605.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F606.png b/admin/survey/export/latexclasses/textemp/images/1F606.png
new file mode 100644
index 000000000..8e3dd87f1
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F606.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F607.png b/admin/survey/export/latexclasses/textemp/images/1F607.png
new file mode 100644
index 000000000..133cac957
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F607.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F608.png b/admin/survey/export/latexclasses/textemp/images/1F608.png
new file mode 100644
index 000000000..1f7573228
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F608.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F609.png b/admin/survey/export/latexclasses/textemp/images/1F609.png
new file mode 100644
index 000000000..5a7928875
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F609.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F60A.png b/admin/survey/export/latexclasses/textemp/images/1F60A.png
new file mode 100644
index 000000000..803976558
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F60A.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F60B.png b/admin/survey/export/latexclasses/textemp/images/1F60B.png
new file mode 100644
index 000000000..2dcb06503
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F60B.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F60C.png b/admin/survey/export/latexclasses/textemp/images/1F60C.png
new file mode 100644
index 000000000..7e2461669
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F60C.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F60D.png b/admin/survey/export/latexclasses/textemp/images/1F60D.png
new file mode 100644
index 000000000..27c54a967
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F60D.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F60E.png b/admin/survey/export/latexclasses/textemp/images/1F60E.png
new file mode 100644
index 000000000..4adfdd620
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F60E.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F60F.png b/admin/survey/export/latexclasses/textemp/images/1F60F.png
new file mode 100644
index 000000000..bfcbb8ce3
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F60F.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F610.png b/admin/survey/export/latexclasses/textemp/images/1F610.png
new file mode 100644
index 000000000..c395697f7
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F610.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F611.png b/admin/survey/export/latexclasses/textemp/images/1F611.png
new file mode 100644
index 000000000..5ab59d805
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F611.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F612.png b/admin/survey/export/latexclasses/textemp/images/1F612.png
new file mode 100644
index 000000000..9f3cd6a08
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F612.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F613.png b/admin/survey/export/latexclasses/textemp/images/1F613.png
new file mode 100644
index 000000000..4ca29d0e2
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F613.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F614.png b/admin/survey/export/latexclasses/textemp/images/1F614.png
new file mode 100644
index 000000000..8f331d86b
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F614.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F615.png b/admin/survey/export/latexclasses/textemp/images/1F615.png
new file mode 100644
index 000000000..4b4f424c5
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F615.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F616.png b/admin/survey/export/latexclasses/textemp/images/1F616.png
new file mode 100644
index 000000000..e4be491f5
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F616.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F617.png b/admin/survey/export/latexclasses/textemp/images/1F617.png
new file mode 100644
index 000000000..ad8e1935a
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F617.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F618.png b/admin/survey/export/latexclasses/textemp/images/1F618.png
new file mode 100644
index 000000000..cfe0184e1
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F618.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F619.png b/admin/survey/export/latexclasses/textemp/images/1F619.png
new file mode 100644
index 000000000..62ca3a2ff
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F619.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F61A.png b/admin/survey/export/latexclasses/textemp/images/1F61A.png
new file mode 100644
index 000000000..8013f8b78
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F61A.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F61B.png b/admin/survey/export/latexclasses/textemp/images/1F61B.png
new file mode 100644
index 000000000..7f7199b7e
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F61B.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F61C.png b/admin/survey/export/latexclasses/textemp/images/1F61C.png
new file mode 100644
index 000000000..fd7f80fe5
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F61C.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F61D.png b/admin/survey/export/latexclasses/textemp/images/1F61D.png
new file mode 100644
index 000000000..fbebd5212
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F61D.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F61E.png b/admin/survey/export/latexclasses/textemp/images/1F61E.png
new file mode 100644
index 000000000..518b00146
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F61E.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F61F.png b/admin/survey/export/latexclasses/textemp/images/1F61F.png
new file mode 100644
index 000000000..767ab7d23
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F61F.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F620.png b/admin/survey/export/latexclasses/textemp/images/1F620.png
new file mode 100644
index 000000000..c2368b138
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F620.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F621.png b/admin/survey/export/latexclasses/textemp/images/1F621.png
new file mode 100644
index 000000000..0b6f15ee1
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F621.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F622.png b/admin/survey/export/latexclasses/textemp/images/1F622.png
new file mode 100644
index 000000000..4ba1dbafb
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F622.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F623.png b/admin/survey/export/latexclasses/textemp/images/1F623.png
new file mode 100644
index 000000000..ef291a2e6
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F623.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F624.png b/admin/survey/export/latexclasses/textemp/images/1F624.png
new file mode 100644
index 000000000..0bf759fc5
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F624.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F625.png b/admin/survey/export/latexclasses/textemp/images/1F625.png
new file mode 100644
index 000000000..8c815718d
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F625.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F626.png b/admin/survey/export/latexclasses/textemp/images/1F626.png
new file mode 100644
index 000000000..fe8fa6b4f
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F626.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F627.png b/admin/survey/export/latexclasses/textemp/images/1F627.png
new file mode 100644
index 000000000..bdfe7ea24
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F627.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F628.png b/admin/survey/export/latexclasses/textemp/images/1F628.png
new file mode 100644
index 000000000..fce482dd7
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F628.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F629.png b/admin/survey/export/latexclasses/textemp/images/1F629.png
new file mode 100644
index 000000000..60129d3b9
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F629.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F62A.png b/admin/survey/export/latexclasses/textemp/images/1F62A.png
new file mode 100644
index 000000000..46f792fb7
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F62A.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F62B.png b/admin/survey/export/latexclasses/textemp/images/1F62B.png
new file mode 100644
index 000000000..d8db47bd8
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F62B.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F62C.png b/admin/survey/export/latexclasses/textemp/images/1F62C.png
new file mode 100644
index 000000000..5d7f06aa8
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F62C.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F62D.png b/admin/survey/export/latexclasses/textemp/images/1F62D.png
new file mode 100644
index 000000000..0f1f15f23
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F62D.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F62E.png b/admin/survey/export/latexclasses/textemp/images/1F62E.png
new file mode 100644
index 000000000..ed91c85ff
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F62E.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F62F.png b/admin/survey/export/latexclasses/textemp/images/1F62F.png
new file mode 100644
index 000000000..eeee08377
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F62F.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F630.png b/admin/survey/export/latexclasses/textemp/images/1F630.png
new file mode 100644
index 000000000..371efe8f8
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F630.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F631.png b/admin/survey/export/latexclasses/textemp/images/1F631.png
new file mode 100644
index 000000000..16e8308fb
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F631.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F632.png b/admin/survey/export/latexclasses/textemp/images/1F632.png
new file mode 100644
index 000000000..723dc121c
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F632.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F633.png b/admin/survey/export/latexclasses/textemp/images/1F633.png
new file mode 100644
index 000000000..3601842d2
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F633.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F634.png b/admin/survey/export/latexclasses/textemp/images/1F634.png
new file mode 100644
index 000000000..c220d7f19
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F634.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F635.png b/admin/survey/export/latexclasses/textemp/images/1F635.png
new file mode 100644
index 000000000..a24ddb135
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F635.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F636.png b/admin/survey/export/latexclasses/textemp/images/1F636.png
new file mode 100644
index 000000000..fb55393f2
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F636.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F637.png b/admin/survey/export/latexclasses/textemp/images/1F637.png
new file mode 100644
index 000000000..72354e664
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F637.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F638.png b/admin/survey/export/latexclasses/textemp/images/1F638.png
new file mode 100644
index 000000000..895ce2aba
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F638.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F639.png b/admin/survey/export/latexclasses/textemp/images/1F639.png
new file mode 100644
index 000000000..e8f625c93
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F639.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F63A.png b/admin/survey/export/latexclasses/textemp/images/1F63A.png
new file mode 100644
index 000000000..9d7d3fbfd
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F63A.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F63B.png b/admin/survey/export/latexclasses/textemp/images/1F63B.png
new file mode 100644
index 000000000..f66d46ef0
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F63B.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F63C.png b/admin/survey/export/latexclasses/textemp/images/1F63C.png
new file mode 100644
index 000000000..b1f0656cd
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F63C.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F63D.png b/admin/survey/export/latexclasses/textemp/images/1F63D.png
new file mode 100644
index 000000000..3ce1f1994
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F63D.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F63E.png b/admin/survey/export/latexclasses/textemp/images/1F63E.png
new file mode 100644
index 000000000..c2920f263
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F63E.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F63F.png b/admin/survey/export/latexclasses/textemp/images/1F63F.png
new file mode 100644
index 000000000..60fff0bee
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F63F.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F640.png b/admin/survey/export/latexclasses/textemp/images/1F640.png
new file mode 100644
index 000000000..e007fd6bd
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F640.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F641.png b/admin/survey/export/latexclasses/textemp/images/1F641.png
new file mode 100644
index 000000000..297548acf
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F641.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F642.png b/admin/survey/export/latexclasses/textemp/images/1F642.png
new file mode 100644
index 000000000..7d402140d
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F642.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F643.png b/admin/survey/export/latexclasses/textemp/images/1F643.png
new file mode 100644
index 000000000..69a74b307
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F643.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F644.png b/admin/survey/export/latexclasses/textemp/images/1F644.png
new file mode 100644
index 000000000..21001057b
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F644.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F645.png b/admin/survey/export/latexclasses/textemp/images/1F645.png
new file mode 100644
index 000000000..64114e4f4
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F645.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F646.png b/admin/survey/export/latexclasses/textemp/images/1F646.png
new file mode 100644
index 000000000..2e9f7c09e
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F646.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F647.png b/admin/survey/export/latexclasses/textemp/images/1F647.png
new file mode 100644
index 000000000..9bb048a85
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F647.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F648.png b/admin/survey/export/latexclasses/textemp/images/1F648.png
new file mode 100644
index 000000000..d95e64a53
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F648.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F649.png b/admin/survey/export/latexclasses/textemp/images/1F649.png
new file mode 100644
index 000000000..f017f21ef
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F649.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F64A.png b/admin/survey/export/latexclasses/textemp/images/1F64A.png
new file mode 100644
index 000000000..c129f1ce4
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F64A.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F64B.png b/admin/survey/export/latexclasses/textemp/images/1F64B.png
new file mode 100644
index 000000000..3e584ca7d
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F64B.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F64C.png b/admin/survey/export/latexclasses/textemp/images/1F64C.png
new file mode 100644
index 000000000..4350588f5
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F64C.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F64D.png b/admin/survey/export/latexclasses/textemp/images/1F64D.png
new file mode 100644
index 000000000..915d72271
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F64D.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F64E.png b/admin/survey/export/latexclasses/textemp/images/1F64E.png
new file mode 100644
index 000000000..6ef48801d
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F64E.png differ
diff --git a/admin/survey/export/latexclasses/textemp/images/1F64F.png b/admin/survey/export/latexclasses/textemp/images/1F64F.png
new file mode 100644
index 000000000..fe410f4a4
Binary files /dev/null and b/admin/survey/export/latexclasses/textemp/images/1F64F.png differ
diff --git a/admin/survey/export/latexclasses/textemp/latexTemplatePdfSurvey.cls b/admin/survey/export/latexclasses/textemp/latexTemplatePdfSurvey.cls
index 0770fd126..f0f732242 100644
--- a/admin/survey/export/latexclasses/textemp/latexTemplatePdfSurvey.cls
+++ b/admin/survey/export/latexclasses/textemp/latexTemplatePdfSurvey.cls
@@ -14,6 +14,8 @@
\usepackage[export]{adjustbox} % za poravnavo slik
\usepackage{wasysym} % za izris radio button, checkbox
+\usepackage{tikzsymbols} %za izpis emoji-jev
+
\usepackage{textgreek} %za resevanje grskih crk
\usepackage[T2A,T1]{fontenc} %za cirilico
@@ -22,6 +24,8 @@
\usepackage[utf8]{inputenc} % za uporabo utf8
\usepackage{amssymb} %za unicode simbole
+
+%DEFINIRANJE NADOMESTIL NEIZPISLJIVIH UNICODE CHARACTER-JEV
\DeclareUnicodeCharacter{200B}{{\hskip 0pt}}
\DeclareUnicodeCharacter{03C7}{$\chi$}
\DeclareUnicodeCharacter{2265}{$\geq$}
@@ -29,6 +33,86 @@
\DeclareUnicodeCharacter{2003}{$\enspace$}
\DeclareUnicodeCharacter{0014}{$\thinspace$} %ni ta pravi nadomestek, ker v Latexu tak simbol ne obstaja
+%Emoji - izpis urejen s slikicami emoji-jev
+\DeclareUnicodeCharacter{1F600}{\includegraphics[height=1em]{1F600.png}}
+\DeclareUnicodeCharacter{1F601}{\includegraphics[height=1em]{1F601.png}}
+\DeclareUnicodeCharacter{1F602}{\includegraphics[height=1em]{1F602.png}}
+\DeclareUnicodeCharacter{1F603}{\includegraphics[height=1em]{1F603.png}}
+\DeclareUnicodeCharacter{1F604}{\includegraphics[height=1em]{1F604.png}}
+\DeclareUnicodeCharacter{1F605}{\includegraphics[height=1em]{1F605.png}}
+\DeclareUnicodeCharacter{1F606}{\includegraphics[height=1em]{1F606.png}}
+\DeclareUnicodeCharacter{1F609}{\includegraphics[height=1em]{1F609.png}}
+\DeclareUnicodeCharacter{1F60A}{\includegraphics[height=1em]{1F60A.png}}
+\DeclareUnicodeCharacter{1F60B}{\includegraphics[height=1em]{1F60B.png}}
+\DeclareUnicodeCharacter{1F60E}{\includegraphics[height=1em]{1F60C.png}}
+\DeclareUnicodeCharacter{1F60D}{\includegraphics[height=1em]{1F60D.png}}
+\DeclareUnicodeCharacter{1F60E}{\includegraphics[height=1em]{1F60E.png}}
+\DeclareUnicodeCharacter{1F60D}{\includegraphics[height=1em]{1F60F.png}}
+
+\DeclareUnicodeCharacter{1F600}{\includegraphics[height=1em]{1F610.png}}
+\DeclareUnicodeCharacter{1F611}{\includegraphics[height=1em]{1F611.png}}
+\DeclareUnicodeCharacter{1F612}{\includegraphics[height=1em]{1F612.png}}
+\DeclareUnicodeCharacter{1F613}{\includegraphics[height=1em]{1F613.png}}
+\DeclareUnicodeCharacter{1F614}{\includegraphics[height=1em]{1F614.png}}
+\DeclareUnicodeCharacter{1F615}{\includegraphics[height=1em]{1F615.png}}
+\DeclareUnicodeCharacter{1F616}{\includegraphics[height=1em]{1F616.png}}
+\DeclareUnicodeCharacter{1F619}{\includegraphics[height=1em]{1F619.png}}
+\DeclareUnicodeCharacter{1F61A}{\includegraphics[height=1em]{1F61A.png}}
+\DeclareUnicodeCharacter{1F61B}{\includegraphics[height=1em]{1F61B.png}}
+\DeclareUnicodeCharacter{1F61E}{\includegraphics[height=1em]{1F61C.png}}
+\DeclareUnicodeCharacter{1F61D}{\includegraphics[height=1em]{1F61D.png}}
+\DeclareUnicodeCharacter{1F61E}{\includegraphics[height=1em]{1F61E.png}}
+\DeclareUnicodeCharacter{1F61D}{\includegraphics[height=1em]{1F61F.png}}
+
+\DeclareUnicodeCharacter{1F600}{\includegraphics[height=1em]{1F620.png}}
+\DeclareUnicodeCharacter{1F621}{\includegraphics[height=1em]{1F621.png}}
+\DeclareUnicodeCharacter{1F622}{\includegraphics[height=1em]{1F622.png}}
+\DeclareUnicodeCharacter{1F623}{\includegraphics[height=1em]{1F623.png}}
+\DeclareUnicodeCharacter{1F624}{\includegraphics[height=1em]{1F624.png}}
+\DeclareUnicodeCharacter{1F625}{\includegraphics[height=1em]{1F625.png}}
+\DeclareUnicodeCharacter{1F626}{\includegraphics[height=1em]{1F626.png}}
+\DeclareUnicodeCharacter{1F629}{\includegraphics[height=1em]{1F629.png}}
+\DeclareUnicodeCharacter{1F62A}{\includegraphics[height=1em]{1F62A.png}}
+\DeclareUnicodeCharacter{1F62B}{\includegraphics[height=1em]{1F62B.png}}
+\DeclareUnicodeCharacter{1F62E}{\includegraphics[height=1em]{1F62C.png}}
+\DeclareUnicodeCharacter{1F62D}{\includegraphics[height=1em]{1F62D.png}}
+\DeclareUnicodeCharacter{1F62E}{\includegraphics[height=1em]{1F62E.png}}
+\DeclareUnicodeCharacter{1F62D}{\includegraphics[height=1em]{1F62F.png}}
+
+\DeclareUnicodeCharacter{1F600}{\includegraphics[height=1em]{1F630.png}}
+\DeclareUnicodeCharacter{1F631}{\includegraphics[height=1em]{1F631.png}}
+\DeclareUnicodeCharacter{1F632}{\includegraphics[height=1em]{1F632.png}}
+\DeclareUnicodeCharacter{1F633}{\includegraphics[height=1em]{1F633.png}}
+\DeclareUnicodeCharacter{1F634}{\includegraphics[height=1em]{1F634.png}}
+\DeclareUnicodeCharacter{1F635}{\includegraphics[height=1em]{1F635.png}}
+\DeclareUnicodeCharacter{1F636}{\includegraphics[height=1em]{1F636.png}}
+\DeclareUnicodeCharacter{1F639}{\includegraphics[height=1em]{1F639.png}}
+\DeclareUnicodeCharacter{1F63A}{\includegraphics[height=1em]{1F63A.png}}
+\DeclareUnicodeCharacter{1F63B}{\includegraphics[height=1em]{1F63B.png}}
+\DeclareUnicodeCharacter{1F63E}{\includegraphics[height=1em]{1F63C.png}}
+\DeclareUnicodeCharacter{1F63D}{\includegraphics[height=1em]{1F63D.png}}
+\DeclareUnicodeCharacter{1F63E}{\includegraphics[height=1em]{1F63E.png}}
+\DeclareUnicodeCharacter{1F63D}{\includegraphics[height=1em]{1F63F.png}}
+
+\DeclareUnicodeCharacter{1F600}{\includegraphics[height=1em]{1F640.png}}
+\DeclareUnicodeCharacter{1F641}{\includegraphics[height=1em]{1F641.png}}
+\DeclareUnicodeCharacter{1F642}{\includegraphics[height=1em]{1F642.png}}
+\DeclareUnicodeCharacter{1F643}{\includegraphics[height=1em]{1F643.png}}
+\DeclareUnicodeCharacter{1F644}{\includegraphics[height=1em]{1F644.png}}
+\DeclareUnicodeCharacter{1F645}{\includegraphics[height=1em]{1F645.png}}
+\DeclareUnicodeCharacter{1F646}{\includegraphics[height=1em]{1F646.png}}
+\DeclareUnicodeCharacter{1F649}{\includegraphics[height=1em]{1F649.png}}
+\DeclareUnicodeCharacter{1F64A}{\includegraphics[height=1em]{1F64A.png}}
+\DeclareUnicodeCharacter{1F64B}{\includegraphics[height=1em]{1F64B.png}}
+\DeclareUnicodeCharacter{1F64E}{\includegraphics[height=1em]{1F64C.png}}
+\DeclareUnicodeCharacter{1F64D}{\includegraphics[height=1em]{1F64D.png}}
+\DeclareUnicodeCharacter{1F64E}{\includegraphics[height=1em]{1F64E.png}}
+\DeclareUnicodeCharacter{1F64D}{\includegraphics[height=1em]{1F64F.png}}
+
+%Emoji - izpis urejen s slikicami emoji-jev - konec
+
+%DEFINIRANJE NADOMESTIL NEIZPISLJIVIH UNICODE CHARACTER-JEV - KONEC
+
\usepackage{graphicx} % za prikazovanje slik in ostalih grafik
\usepackage{colortbl} %The package allows rows and columns to be coloured, and even individual cells
\usepackage{fancyhdr} % za ureditev glav in nog
diff --git a/admin/survey/index.php b/admin/survey/index.php
index 8ef62aea4..cf08a572d 100644
--- a/admin/survey/index.php
+++ b/admin/survey/index.php
@@ -182,10 +182,6 @@
$sql = sisplet_query("SELECT email FROM users WHERE id='$global_user_id'");
$row = mysqli_fetch_assoc($sql);
- if ( $row['email'] == 'test@1ka.si') {
- $cssBodyClass .= ' test_user';
- }
-
/**************** BODY ****************/
echo ''."\n";
diff --git a/admin/survey/minify/groupsConfig.php b/admin/survey/minify/groupsConfig.php
index 1b15c942b..f2445e954 100644
--- a/admin/survey/minify/groupsConfig.php
+++ b/admin/survey/minify/groupsConfig.php
@@ -20,20 +20,12 @@ return [
// jquery in jquery ui vkljucimo ze minificirana, da bo slo mal hitrej
new Minify_Source(['filepath' => dirname(__FILE__).'/../script/jquery/ui-1.8.18/js/jquery-1.7.1.min.js',]),
- // fix za IE in draggables -- http://dev.jqueryui.com/ticket/5374 (v novi verziji zgleda da to dela)
- //new Minify_Source( array('filepath' => dirname(__FILE__) .'/../script/jquery/ui-1.8.4/js/jquery-1.4.2.mod.min.js',)),
- //dirname(__FILE__) .'/../script/jquery/ui-1.8.4/development-bundle/jquery-1.4.2.mod.js',
-
- // Priprava za posodobitev jQuery na novejšo verzijo
- // dirname(__FILE__).'/../script/jquery/jquery-1.12.4.min.js',
- // dirname(__FILE__).'/../script/jquery/jquery-migrate-1.4.1.js',
-
new Minify_Source(['filepath' => dirname(__FILE__).'/../script/jquery/ui-1.8.18/js/jquery-ui-1.8.18.custom.min.js',]),
- //new Minify_Source( array('filepath' => dirname(__FILE__) .'/../script/jquery/ui-1.8.4/js/jquery-ui-1.8.4.custom.min.js',)),
new Minify_Source(['filepath' => dirname(__FILE__).'/../script/jquery/ui.drag_drop_selectable.js',]),
new Minify_Source(['filepath' => dirname(__FILE__).'/../script/jquery/jquery_touch_punch/jquery.ui.touch-punch.min.js',]),
- //dirname(__FILE__) .'/../script/jquery/ui.draggable.orig.js',
+
+ dirname(__FILE__).'/../script/mobileMenu/zeynep.min.js',
dirname(__FILE__).'/../script/jquery/jquery.timer.js',
dirname(__FILE__).'/../script/jquery/farbtastic.js',
@@ -45,6 +37,7 @@ return [
dirname(__FILE__).'/../script/onload.js',
dirname(__FILE__).'/../script/script.js',
+ dirname(__FILE__).'/../script/mobile.js',
dirname(__FILE__).'/../script/branching.js',
dirname(__FILE__).'/../script/folders.js',
dirname(__FILE__).'/../script/surveyList.js',
@@ -196,6 +189,11 @@ return [
new Minify_Source(['filepath' => dirname(__FILE__).'/../script/jquery/ui-1.8.18/js/jquery-1.7.1.min.js',]),
new Minify_Source(['filepath' => dirname(__FILE__).'/../script/jquery/ui-1.8.18/js/jquery-ui-1.8.18.custom.min.js',]),
+ dirname(__FILE__).'/../script/script.js',
+
+ dirname(__FILE__).'/../script/mobileMenu/zeynep.min.js',
+ dirname(__FILE__).'/../script/mobile.js',
+
dirname(__FILE__).'/../script/datatables/jquery.dataTables.min.js',
dirname(__FILE__).'/../script/select2/select2.min.js',
dirname(__FILE__).'/../script/datatables/dataTables.buttons.min.js',
diff --git a/admin/survey/modules/mod_EVOLI/R/Evoli_quality_clime_dan.R b/admin/survey/modules/mod_EVOLI/R/Evoli_quality_clime_dan.R
index 473fe5dbf..00149b0fb 100644
--- a/admin/survey/modules/mod_EVOLI/R/Evoli_quality_clime_dan.R
+++ b/admin/survey/modules/mod_EVOLI/R/Evoli_quality_clime_dan.R
@@ -966,6 +966,8 @@ organisation <- gsub("\u0160", "š", organisation, fixed = TRUE)
organisation <- gsub("\u0111", "đ", organisation, fixed = TRUE)
# Velik đ
organisation <- gsub("\u0110", "Đ", organisation, fixed = TRUE)
+# Velik đ
+organisation <- gsub("\u00E6", "æ", organisation, fixed = TRUE)
#--------------------- //ORGANIZATION INFORMATION// ------------------------#
diff --git a/admin/survey/modules/mod_EVOLI/R/Evoli_team_meter_depart_ang.R b/admin/survey/modules/mod_EVOLI/R/Evoli_team_meter_depart_ang.R
index 5fede2f2b..09a766b53 100644
--- a/admin/survey/modules/mod_EVOLI/R/Evoli_team_meter_depart_ang.R
+++ b/admin/survey/modules/mod_EVOLI/R/Evoli_team_meter_depart_ang.R
@@ -10,6 +10,15 @@ ID <- params[1]
## //Passing arguments// ##
#---------------------------------------------------#
+#------------- ENCODING 1KA STRE?NIK ----------------#
+# Nastavimo encoding za potrebe stre?nika
+# Pogosto se na 1KA stre?niku pokvarijo ?umniki,
+# zato ?umniki (v PDF poro?ilu) lokalno delajo,
+# na stre?niku pa ne
+Sys.setlocale(category = "LC_ALL", locale = "slovenian")
+#------------- ENCODING 1KA STRE?NIK ----------------#
+
+
#-------------------- Load needed libraries ----------------------#
# Load needed libraries
diff --git a/admin/survey/modules/mod_EVOLI/latexkosi/drugi_del-quality_clime_dan.tex b/admin/survey/modules/mod_EVOLI/latexkosi/drugi_del-quality_clime_dan.tex
index c436ebb6e..62abebfe0 100644
--- a/admin/survey/modules/mod_EVOLI/latexkosi/drugi_del-quality_clime_dan.tex
+++ b/admin/survey/modules/mod_EVOLI/latexkosi/drugi_del-quality_clime_dan.tex
@@ -3,7 +3,7 @@
\begin{center}
\begin{minipage}{0.8\linewidth}
\textbf{1. Kvalitetsudvikling i fokus} \\
-Kvalitet tages alvorligt. Kvalitetsudvikling er en lige så naturlig del af \\
+Kvalitet tages alvorligt. Kvalitetsudvikling er en lige s{\aa} naturlig del af \\
virksomhedens liv som budgetter og regnskaber.
\\ \\
@@ -19,37 +19,37 @@ og serviceydelser og bevarer en loyal tilknytning til virksomheden.
\textbf{4. Engagerede medarbejdere} \\
Medarbejderne trives og er dybt engagerede. \\
-Personaleomsætningshastigheden og fraværsprocenten er lav. Interne \\
- funktioner understøtter kundeorienterede ansatte i at opnå succes.
+Personaleoms{\ae}tningshastigheden og frav{\ae}rsprocenten er lav. Interne \\
+ funktioner underst{\o}tter kundeorienterede ansatte i at opn{\aa} succes.
\\ \\
\textbf{5. Langsigtet kvalitetsudvikling} \\
-Virksomheden satser mere på langsigtet kvalitetsudvikling end på \\
+Virksomheden satser mere p{\aa} langsigtet kvalitetsudvikling end p{\aa} \\
omkostningsreduktion og fortjeneste.
\\ \\
-\textbf{6. Klare og høje kvalitetsmål} \\
-Der findes klare og høje kvalitetsmål på alle områder. Resultaterne \\
-måles løbende, og nøgletallene gøres synlige for alle.
+\textbf{6. Klare og h{\o}je kvalitetsm{\aa}l} \\
+Der findes klare og h{\o}je kvalitetsm{\aa}l p{\aa} alle omr{\aa}der. Resultaterne \\
+m{\aa}les l{\o}bende, og n{\o}gletallene g{\o}res synlige for alle.
\\ \\
-\textbf{7. Belønning af kvalitetspræstationer} \\
-Kvalitetspræstationer belønnes synligt og er en forudsætning for \\
+\textbf{7. Bel{\o}nning af kvalitetspr{\ae}stationer} \\
+Kvalitetspr{\ae}stationer bel{\o}nnes synligt og er en foruds{\ae}tning for \\
forfremmelse.
\\ \\
\textbf{8. Positiv opfattelse af kvalitetskontrol} \\
-Kvalitetskontrol opfattes ikke som et tegn på mistillid, men som et \\
+Kvalitetskontrol opfattes ikke som et tegn p{\aa} mistillid, men som et \\
middel til at udvikle kvaliteten.\\
-Afvigelser fra aftalte kvalitetsmål accepteres ikke, men fører til \\
-ændringer af præstationerne eller af målene.
+Afvigelser fra aftalte kvalitetsm{\aa}l accepteres ikke, men f{\o}rer til \\
+{\ae}ndringer af pr{\ae}stationerne eller af m{\aa}lene.
\\ \\
-\textbf{9. Næste person i arbejdsprocessen er en vigtig kunde} \\
-I virksomheden betragtes den næste person i arbejdsprocessen som\\
-en vigtig kunde. Intet led/menneske i arbejdsprocessen bør lide \\
-under fejl begået af andre. Hver person forpligter sig til \\
-at optræde som leverandør af kvalitetsprodukter til sine kunder.
+\textbf{9. N{\ae}ste person i arbejdsprocessen er en vigtig kunde} \\
+I virksomheden betragtes den n{\ae}ste person i arbejdsprocessen som\\
+en vigtig kunde. Intet led/menneske i arbejdsprocessen b{\o}r lide \\
+under fejl beg{\aa}et af andre. Hver person forpligter sig til \\
+at optr{\ae}de som leverand{\o}r af kvalitetsprodukter til sine kunder.
\end{minipage}
\end{center}
@@ -59,49 +59,49 @@ at optræde som leverandør af kvalitetsprodukter til sine kunder.
\textbf{10. Investering i medarbejderudvikling} \\
Medarbejderne betragtes som virksomhedens vigtigste ressource. \\
Der investeres i udvikling og uddannelse af alle medarbejdere.\\
-Lederne deltager i karriereplanlægning med et fokus på at udvide \\
-erfaringsbasen i form af viden og evner -- og derved højne \\
-individets værdi. \\
+Lederne deltager i karriereplanl{\ae}gning med et fokus p{\aa} at udvide \\
+erfaringsbasen i form af viden og evner -- og derved h{\o}jne \\
+individets v{\ae}rdi. \\
Den enkelte udviser initiativ og tager ansvar for sin egen karriere.
\\ \\
-\textbf{11. Forebyggelse og begrænsning af fejl} \\
-Der investeres meget i at forebygge og begrænse fejl. \\
+\textbf{11. Forebyggelse og begr{\ae}nsning af fejl} \\
+Der investeres meget i at forebygge og begr{\ae}nse fejl. \\
Virksomheden skelner mellem acceptable og uacceptable fejl. \\
De acceptable fejl er kreative fejl, som er udtryk for udvikling, \\
-afprøvning af ny viden og eksperimenter. De uacceptable \\
-fejl er ''sjuskefejl'', som er unødvendige, dyre og skadelige.
+afpr{\o}vning af ny viden og eksperimenter. De uacceptable \\
+fejl er ''sjuskefejl'', som er un{\o}dvendige, dyre og skadelige.
\\ \\
\textbf{12. Rigtigt beslutningsniveau} \\
-Beslutningsniveauet er ikke placeret højere i organisationen, end det \\
-er nødvendigt, for at beslutninger kan træffes med indsigt, og \\
+Beslutningsniveauet er ikke placeret h{\o}jere i organisationen, end det \\
+er n{\o}dvendigt, for at beslutninger kan tr{\ae}ffes med indsigt, og \\
kvalitetskravene kan indfries.
\\ \\
\textbf{13. Enkel og direkte vej til den endelige bruger} \\
Produkter og serviceydelser producers og leveres til den endelige \\
-bruger så direkte og enkelt som muligt.
+bruger s{\aa} direkte og enkelt som muligt.
\\ \\
-\textbf{14. Fokus på både teknisk og menneskelig kvalitet} \\
-Virksomheden lægger stor vægt på både teknisk og menneskelig kvalitet.
+\textbf{14. Fokus p{\aa} b{\aa}de teknisk og menneskelig kvalitet} \\
+Virksomheden l{\ae}gger stor v{\ae}gt p{\aa} b{\aa}de teknisk og menneskelig kvalitet.
\\ \\
\textbf{15. Orientering mod kundebehov} \\
Indfrielsen af kundens eller den endelige brugers behov afspejles \\
-i alle virksomhedens handlinger. Kvalitetsmålinger finder ikke \\
-alene sted internt i virksomheden, men også hos kunderne.
+i alle virksomhedens handlinger. Kvalitetsm{\aa}linger finder ikke \\
+alene sted internt i virksomheden, men ogs{\aa} hos kunderne.
\\ \\
-\textbf{16. Løbende værdianalyser} \\
-Der gennemføres løbende værdianalyser for at bedømme, om det \\
-er de rigtige ting, der gøres, og om udbyttet står i forhold til indsatsen. \\
-Arbejdsaktiviteter, som ikke tilfører ''værdi'' nedlægges.
+\textbf{16. L{\o}bende v{\ae}rdianalyser} \\
+Der gennemf{\o}res l{\o}bende v{\ae}rdianalyser for at bed{\o}mme, om det \\
+er de rigtige ting, der g{\o}res, og om udbyttet st{\aa}r i forhold til indsatsen. \\
+Arbejdsaktiviteter, som ikke tilf{\o}rer ''v{\ae}rdi'' nedl{\ae}gges.
\\ \\
-\textbf{17. Virksomheden påtager sig sin samfundsroller} \\
-Virksomheden erkender og påtager sig sin samfundsrolle.
+\textbf{17. Virksomheden p{\aa}tager sig sin samfundsroller} \\
+Virksomheden erkender og p{\aa}tager sig sin samfundsrolle.
\end{minipage}
\end{center}
@@ -112,16 +112,16 @@ Virksomheden erkender og påtager sig sin samfundsrolle.
\begin{center}
\begin{minipage}{0.8\linewidth}
For at skabe, vedligeholde og udvikle et \textit{Kvalitetsklima}, anbefaler \\
-vi at du lærer mere om de 15 kvalitetsområder i \textit{Kvalitetsklima } \\
-værktøjet og de 17 kendetegn for kvalitetsvirksomheder gennem \\
-anvendelsen af tre andre værktøjer:
+vi at du l{\ae}rer mere om de 15 kvalitetsomr{\aa}der i \textit{Kvalitetsklima } \\
+v{\ae}rkt{\o}jet og de 17 kendetegn for kvalitetsvirksomheder gennem \\
+anvendelsen af tre andre v{\ae}rkt{\o}jer:
\renewcommand\labelitemi{\small$\bullet$}
\begin{itemize}
\addtolength{\itemindent}{2.2cm}
\item Stjernekvalitet
-\item Team Employeeship måler
-\item Organisationens Employeeship Måler
+\item Team Employeeship m{\aa}ler
+\item Organisationens Employeeship M{\aa}ler
\end{itemize}
\end{minipage}
\end{center}
@@ -129,37 +129,37 @@ anvendelsen af tre andre værktøjer:
\ \\ \\ \\ \\ \\
\begin{center}
-{\Large \textbf{Stjernekvalitet værktøjet}} \\
-\textbf{Et værktøj til at skabe 3-stjernet Teamkvalitet}
+{\Large \textbf{Stjernekvalitet v{\ae}rkt{\o}jet}} \\
+\textbf{Et v{\ae}rkt{\o}j til at skabe 3-stjernet Teamkvalitet}
\begin{minipage}{0.8\linewidth}
\ \\ \\
-\textit{'Stjernekvalitet'} er et værktøj til at overvåge, bedømme og udvikle \\
-kvaliteten af et teams kollektive præstationer så de konstant indfrier \\
+\textit{'Stjernekvalitet'} er et v{\ae}rkt{\o}j til at overv{\aa}ge, bed{\o}mme og udvikle \\
+kvaliteten af et teams kollektive pr{\ae}stationer s{\aa} de konstant indfrier \\
krav og forventninger fra andre.\\
\ \\
-Værktøjet har fem trin:
+V{\ae}rkt{\o}jet har fem trin:
\\
\renewcommand\labelitemi{\large$\bullet$}
\textbf{
\begin{itemize}
-\item Udvælg kvalitetsområder og -faktorer
-\item Bestem målemetoden for hver faktor
+\item Udv{\ae}lg kvalitetsomr{\aa}der og -faktorer
+\item Bestem m{\aa}lemetoden for hver faktor
\item Definér det ideale kvalitetsniveau for hver faktor
-\item Mål det faktiske præstationsniveau for hver faktor
+\item M{\aa}l det faktiske pr{\ae}stationsniveau for hver faktor
\item Lav en udviklingsplan for kvalitet
\end{itemize}
}
\ \\
-Teamets kvalitetsområder er bestemt af prioriteringen i teamet \\
-med tilhørende kvalitetsfaktorer og målemetoden besluttet \\
+Teamets kvalitetsomr{\aa}der er bestemt af prioriteringen i teamet \\
+med tilh{\o}rende kvalitetsfaktorer og m{\aa}lemetoden besluttet \\
for hver faktor. Derefter udvikles \\
hovedelementerne af kvalitetsudviklingsprocessen konsistent.
\\ \\
-Hele Stjernekvalitetsværktøjet findes på web sitet \href{https://clausmoller.com/en/reachingforthestars}{\underline{www.ClausMoller.com}}.
+Hele Stjernekvalitetsv{\ae}rkt{\o}jet findes p{\aa} web sitet \href{https://clausmoller.com/en/reachingforthestars}{\underline{www.ClausMoller.com}}.
\end{minipage}
@@ -169,32 +169,32 @@ Hele Stjernekvalitetsværktøjet findes på web sitet \href{https://clausmoller.
% 4. STRAN PO GRAFIH
\begin{center}
-{\Large \textbf{Team Employeeship Måler}}
+{\Large \textbf{Team Employeeship M{\aa}ler}}
\begin{minipage}{0.8\linewidth}
\ \\ \\
-\textit{Team Employeeship Måler} er et værktøj til at analysere, vurdere \\
+\textit{Team Employeeship M{\aa}ler} er et v{\ae}rkt{\o}j til at analysere, vurdere \\
og udvikle teamets og hele virksomhedens \textit{Employeeship} kultur.
\\ \\
-Værktøjet er en enkel og hurtig hjælp til ledelse og medarbejdere \\
-til at identificere områder, hvor en forandring eller en mere \\
-indgående analyse af kulturen er påkrævet.
+V{\ae}rkt{\o}jet er en enkel og hurtig hj{\ae}lp til ledelse og medarbejdere \\
+til at identificere omr{\aa}der, hvor en forandring eller en mere \\
+indg{\aa}ende analyse af kulturen er p{\aa}kr{\ae}vet.
\\ \\
- Når alle ansatte er dybt engagerede i virksomhedens overlevelse, \\
-udvikling og stræben efter "business excellence" så har virksomheden en \\
+ N{\aa}r alle ansatte er dybt engagerede i virksomhedens overlevelse, \\
+udvikling og str{\ae}ben efter "business excellence" s{\aa} har virksomheden en \\
\textit{Employeeship} kultur Den er karakteriseret ved at alle udviser \\
engagement, ansvarlighed, loyalitet, initiativ og positive energi.
\\ \\
-\textit{Employeeship} er et unikt koncept udviklet af Claus Møller som handler \\
-om \textbf{ledelse for alle}. Det illustrerer hvad der kræves for at være en god \\
+\textit{Employeeship} er et unikt koncept udviklet af Claus M{\o}ller som handler \\
+om \textbf{ledelse for alle}. Det illustrerer hvad der kr{\ae}ves for at v{\ae}re en god \\
medarbejder og hvordan man kan inspirere alle til at yde deres bedste og \\
-dermed medvirke til virksomhedens overlevelse, vækst og \\
+dermed medvirke til virksomhedens overlevelse, v{\ae}kst og \\
langsigtede succes.
@@ -205,58 +205,58 @@ langsigtede succes.
% 5. STRAN PO GRAFIH
\begin{center}
-{\Large \textbf{Virksomhedens Employeeship Måler}}
+{\Large \textbf{Virksomhedens Employeeship M{\aa}ler}}
\begin{minipage}{0.8\linewidth}
\ \\ \\
-Et værktøj til at måle, hvorvidt virksomhedens kultur, systemer \\
+Et v{\ae}rkt{\o}j til at m{\aa}le, hvorvidt virksomhedens kultur, systemer \\
og politikker inspirerer medarbejderne til at udvise \\
\textit{Employeeship}.
\\ \\
-Medarbejdernes Employeeship holdning og adfærd påvirkes af en \\
-lang række forhold i virksomheden, som vi, ''lidt forenklet'', kalder \\
-virksomhedens ''systemer og politikker''. For at få alle i virksomheden \\
+Medarbejdernes Employeeship holdning og adf{\ae}rd p{\aa}virkes af en \\
+lang r{\ae}kke forhold i virksomheden, som vi, ''lidt forenklet'', kalder \\
+virksomhedens ''systemer og politikker''. For at f{\aa} alle i virksomheden \\
til at udvise Employeeship og dermed skabe en Employeeship kultur \\
- er det afgørende, at ledere og medarbejdere yder en indsats både \\
-på de \textbf{hårde} og de \textbf{bløde} områder. \\
- \hspace*{0.8\baselineskip} Det er også nødvendigt, at der i virksomheden findes \\
-politikker og systemer, der indeholder \textbf{både} hårde \textbf{og} \\
- \textbf{bløde} elementer.
+ er det afg{\o}rende, at ledere og medarbejdere yder en indsats b{\aa}de \\
+p{\aa} de \textbf{h{\aa}rde} og de \textbf{bl{\o}de} omr{\aa}der. \\
+ \hspace*{0.8\baselineskip} Det er ogs{\aa} n{\o}dvendigt, at der i virksomheden findes \\
+politikker og systemer, der indeholder \textbf{b{\aa}de} h{\aa}rde \textbf{og} \\
+ \textbf{bl{\o}de} elementer.
\end{minipage}
\end{center}
\ \\ \\ \\
\begin{minipage}[t]{0.54\textwidth}
-{\textbf{Hårde områder}} \\ \\
-De hårde områder omfatter de konkrete og \\
+{\textbf{H{\aa}rde omr{\aa}der}} \\ \\
+De h{\aa}rde omr{\aa}der omfatter de konkrete og \\
tekniske aspekter af virksomhedens liv: systemer, \\
-regler, procedure, kommandoveje, fysisk miljø etc. \\ \\
-De hårde områder er de rationelle og logiske \\
+regler, procedure, kommandoveje, fysisk milj{\o} etc. \\ \\
+De h{\aa}rde omr{\aa}der er de rationelle og logiske \\
aspekter i virksomheden. Dem som er lettest at \\
forklare og beskrive.
\\
-\hspace*{0.8\baselineskip}På de hårde områder er det mest \\
-et spørgsmål om indhold:
+\hspace*{0.8\baselineskip}P{\aa} de h{\aa}rde omr{\aa}der er det mest \\
+et sp{\o}rgsm{\aa}l om indhold:
\renewcommand\labelitemi{\small$\bullet$}
\begin{itemize}
-\item Hvad skal gøres?
-\item Hvem skal gøre det?
-\item Hvornår skal det gøres?
-\item Hvordan skal det gøres?
+\item Hvad skal g{\o}res?
+\item Hvem skal g{\o}re det?
+\item Hvorn{\aa}r skal det g{\o}res?
+\item Hvordan skal det g{\o}res?
\end{itemize}
\ \\
-I mange virksomheder udøves ledelse \\
-hovedsageligt ud fra de forudsætninger og \\
-regler, der gælder i den hårde verden. \\
+I mange virksomheder ud{\o}ves ledelse \\
+hovedsageligt ud fra de foruds{\ae}tninger og \\
+regler, der g{\ae}lder i den h{\aa}rde verden. \\
Det afspejler sig eksempelvis i \\
- virksomhedens hårde:
+ virksomhedens h{\aa}rde:
\renewcommand\labelitemi{\small$\bullet$}
\begin{itemize}
\item Personalepolitik
-\item Ansættelseskontrakter
-\item Belønningssystemer
+\item Ans{\ae}ttelseskontrakter
+\item Bel{\o}nningssystemer
\item Informationssystemer
\end{itemize}
@@ -264,35 +264,35 @@ Det afspejler sig eksempelvis i \\
% 5. STRAN PO GRAFIH drugi stolpec
\begin{minipage}[t]{0.54\textwidth}
-{\large \textbf{Bløde områder}} \\ \\
-De bløde områder omfatter de \\
-følelsesmæssige aspekter af virksomhedens\\
+{\large \textbf{Bl{\o}de omr{\aa}der}} \\ \\
+De bl{\o}de omr{\aa}der omfatter de \\
+f{\o}lelsesm{\ae}ssige aspekter af virksomhedens\\
liv: omgangsform, kommunikationsform, \\
-psykisk miljø, ledelsesstil, menneskesyn, \\
+psykisk milj{\o}, ledelsesstil, menneskesyn, \\
moral, traditioner, tryghed, udfordringer etc. \\
\\ \\
-De bløde områder beskæftiger sig med \\
+De bl{\o}de omr{\aa}der besk{\ae}ftiger sig med \\
det, der kaldes virksomhedskultur. \\
-De bløde områder kan være vanskelige at \\
+De bl{\o}de omr{\aa}der kan v{\ae}re vanskelige at \\
konkretisere og beskrive. \\
-\hspace*{0.8\baselineskip} På de bløde områder er det mest \\
-et spørgsmål om relationer:
+\hspace*{0.8\baselineskip} P{\aa} de bl{\o}de omr{\aa}der er det mest \\
+et sp{\o}rgsm{\aa}l om relationer:
\renewcommand\labelitemi{\small$\bullet$}
\begin{itemize}
\item Hvordan skal vi inspirere og motivere \\
hinanden?
\item Hvordan skal vi kommunikere for at \\
-forstå hinanden?
+forst{\aa} hinanden?
\item Hvordan skal vi skabe visioner og \\
udvikle kreativitet?
-\item Hvordan skal vi håndtere konflikter \\
+\item Hvordan skal vi h{\aa}ndtere konflikter \\
og tilspidsede situationer?
-\item Hvordan opnår vi begejstring, \\
-arbejdsglæde, stolthed, tolerance \\
+\item Hvordan opn{\aa}r vi begejstring, \\
+arbejdsgl{\ae}de, stolthed, tolerance \\
og fleksibilitet?
\item Hvordan skaber vi sammenhold og \\
-teamfølelse?
+teamf{\o}lelse?
\end{itemize}
\end{minipage}
@@ -300,42 +300,42 @@ teamfølelse?
% 7. STRAN PO GRAFIH
\begin{center}
-{\LARGE \textbf{Næste skridt \dots}}
+{\LARGE \textbf{N{\ae}ste skridt \dots}}
\end{center}
\begin{minipage}[t]{0.54\textwidth}
\ \\
-\textit{Kvalitetsklima testen } er et værktøj til at undersøge, \\
-bedømme og udvikle kvalitetskulturen \\
+\textit{Kvalitetsklima testen } er et v{\ae}rkt{\o}j til at unders{\o}ge, \\
+bed{\o}mme og udvikle kvalitetskulturen \\
i dit team og i din organisation. \\
\hspace*{0.8\baselineskip} Resultaterne af Kvalitetsklima vil \\
- inspirere dig til at lære mere om, og \\
+ inspirere dig til at l{\ae}re mere om, og \\
udvikle, en kvalitetskultur.
\\ \\
-Claus Møller Consulting har udviklet metoder \\
- og værktøjer til at hjælpe individer, teams og \\
- organisationer udvikle sig indenfor de områder \\
- hvor Kvalitetsklima testen har påvist muligheder \\
+Claus M{\o}ller Consulting har udviklet metoder \\
+ og v{\ae}rkt{\o}jer til at hj{\ae}lpe individer, teams og \\
+ organisationer udvikle sig indenfor de omr{\aa}der \\
+ hvor Kvalitetsklima testen har p{\aa}vist muligheder \\
for forbedringer: Produktivitet, relationer, \\
kvalitet, engagement, personlig udvikling, \\
- anerkendelse og belønning, implementering og \\
-andre områder af generel \\
+ anerkendelse og bel{\o}nning, implementering og \\
+andre omr{\aa}der af generel \\
virksomhedskompetence. \\
\\
-\hspace*{0.8\baselineskip} Hvis du ønsker at lære mere om din \\
+\hspace*{0.8\baselineskip} Hvis du {\o}nsker at l{\ae}re mere om din \\
kvalitetskultur, og hvordan du udvikler \\
-områder hvor Kvalitetsklima værktøjet \\
-har påvist mulighed for forbedringer, \\
-har du følgende muligheder:
+omr{\aa}der hvor Kvalitetsklima v{\ae}rkt{\o}jet \\
+har p{\aa}vist mulighed for forbedringer, \\
+har du f{\o}lgende muligheder:
\\ \\
-\textbf{1. \textit{\href{https://clausmoller.com/da/kontakt/}{ \underline {Kontakt Claus Møller Consulting}}}} \\
+\textbf{1. \textit{\href{https://clausmoller.com/da/kontakt/}{ \underline {Kontakt Claus M{\o}ller Consulting}}}} \\
for at modtage mere detaljeret verbal eller \\
skriftlig feedback -- eller coaching og \\
konsulentbistand.
\\ \\
-\textbf{2. \textit{\href{}{ \underline {Deltag i Personlig Kvalitet og På vej mod } \\ \underline {Stjernerne kurser } }}} \\ \\
-for at lære mere om kvalitetsprocessen \\
+\textbf{2. \textit{\href{}{ \underline {Deltag i Personlig Kvalitet og P{\aa} vej mod } \\ \underline {Stjernerne kurser } }}} \\ \\
+for at l{\ae}re mere om kvalitetsprocessen \\
og hvordan du, dit team og din virksomhed \\
kan udvikle kvalitet.
\end{minipage}
@@ -343,51 +343,51 @@ kan udvikle kvalitet.
% 7. STRAN PO GRAFIH drugi stolpec
\begin{minipage}[t]{0.54\textwidth}
\ \\ \
-\textbf{3. \textit{\href{https://clausmoller.com/da/product/personal-quality/}{ \underline {Læs bogen Personlig Kvalitet }}}} \\ \\
-for at få en introduktion til konceptet om \\
-\textit{Personlig Kvalitet}, der er fokuseret på den \\
+\textbf{3. \textit{\href{https://clausmoller.com/da/product/personal-quality/}{ \underline {L{\ae}s bogen Personlig Kvalitet }}}} \\ \\
+for at f{\aa} en introduktion til konceptet om \\
+\textit{Personlig Kvalitet}, der er fokuseret p{\aa} den \\
\textbf{menneskelige side af kvalitet } og som \\
danner grundlag for alle andre former for \\
kvalitet: produkt-, service-, team- og \\
virksomhedskvalitet.
\\ \\
-\textbf{4. \textit{\href{https://clausmoller.com/da/produkt/heart-work/}{ \underline {Læs Heart Work}}}} \\ \\
-(En bog om følelsesmæssig intelligens) \\ \\
-for at opnå en dyb indsigt i følelsesmæssig \\
+\textbf{4. \textit{\href{https://clausmoller.com/da/produkt/heart-work/}{ \underline {L{\ae}s Heart Work}}}} \\ \\
+(En bog om f{\o}lelsesm{\ae}ssig intelligens) \\ \\
+for at opn{\aa} en dyb indsigt i f{\o}lelsesm{\ae}ssig \\
intelligens og dens rolle i forhold til kvalitet. \\
-Lær hvorfor det er vigtigt, både privat og på \\
-arbejde, og hvordan følelsesmæssig intelligens \\
+L{\ae}r hvorfor det er vigtigt, b{\aa}de privat og p{\aa} \\
+arbejde, og hvordan f{\o}lelsesm{\ae}ssig intelligens \\
kan udvikles af individer, teams og \\
organisationer.
\\ \\
-\textbf{5. \textit{\href{https://clausmoller.com/da/tests/}{ \underline {Brug Team EQ Måler}}}} \\ \\
-til præcist at vurdere og udvikle dit teams \\
- og din organisations følelsesmæssige intelligens.
+\textbf{5. \textit{\href{https://clausmoller.com/da/tests/}{ \underline {Brug Team EQ M{\aa}ler}}}} \\ \\
+til pr{\ae}cist at vurdere og udvikle dit teams \\
+ og din organisations f{\o}lelsesm{\ae}ssige intelligens.
\\ \\
-\textbf{6. \textit{\href{https://clausmoller.com/da/tests/}{ \underline {Brug Team Employeeship Måler}}}} \\ \\
-for at præcist vurdere og udvikle Employeeship \\
- holdninger og adfærd i dit team \\
+\textbf{6. \textit{\href{https://clausmoller.com/da/tests/}{ \underline {Brug Team Employeeship M{\aa}ler}}}} \\ \\
+for at pr{\ae}cist vurdere og udvikle Employeeship \\
+ holdninger og adf{\ae}rd i dit team \\
og din organisation.
\\ \\
-\textbf{7. \textit{\href{https://clausmoller.com/da/tests/}{ \underline {Anvend Virksomhedens } \\ \underline{Employeeship Måler}}}} \\ \\
+\textbf{7. \textit{\href{https://clausmoller.com/da/tests/}{ \underline {Anvend Virksomhedens } \\ \underline{Employeeship M{\aa}ler}}}} \\ \\
for at virksomheden kan identificere dens \\
-styrker og svagheder indenfor 14 områder \\
+styrker og svagheder indenfor 14 omr{\aa}der \\
af organisatoriske systemer og politikker.
\end{minipage}
\ \\
\begin{center}
-{\small Claus Møller Consulting tilbyder lederuddannelse, skræddersyede kurser, executive coaching, \\
-diagnostiske værktøjer til virksomheder over hele verden for at gøre dem i stand til at \\
-opnå varige resultater for individer, teams og hele organisationen. }
+{\small Claus M{\o}ller Consulting tilbyder lederuddannelse, skr{\ae}ddersyede kurser, executive coaching, \\
+diagnostiske v{\ae}rkt{\o}jer til virksomheder over hele verden for at g{\o}re dem i stand til at \\
+opn{\aa} varige resultater for individer, teams og hele organisationen. }
\end{center}
\begin{center}
-{\small Claus Møller Consulting hjælper organisationer med at måle, forbedre og styre \\
+{\small Claus M{\o}ller Consulting hj{\ae}lper organisationer med at m{\aa}le, forbedre og styre \\
produktivitet, relationer, kvalitet, og ledelse.}.
\end{center}
@@ -396,6 +396,6 @@ produktivitet, relationer, kvalitet, og ledelse.}.
\end{center}
\begin{center}
-Kontakt os for yderligere information om konsulentbistand, kurser og værktøjer. \\
+Kontakt os for yderligere information om konsulentbistand, kurser og v{\ae}rkt{\o}jer. \\
\href{info@clausmoller.com}{ \underline {info@clausmoller.com}} \small$\bullet$ \href{http://www.clausmoller.com}{ \underline {http://www.clausmoller.com}}
\end{center}
diff --git a/admin/survey/modules/mod_EVOLI/latexkosi/glava-quality_clime_dan.tex b/admin/survey/modules/mod_EVOLI/latexkosi/glava-quality_clime_dan.tex
index 1d4c1f076..6dcfce020 100644
--- a/admin/survey/modules/mod_EVOLI/latexkosi/glava-quality_clime_dan.tex
+++ b/admin/survey/modules/mod_EVOLI/latexkosi/glava-quality_clime_dan.tex
@@ -79,7 +79,7 @@
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\footrulewidth}{0.4pt}
\fancyhead[L]{Kvalitetsklima - !organisation!}
-\fancyhead[R]{\color{red} {\textcopyright} Ophavsret 2020 - Claus Møller Consulting}
+\fancyhead[R]{\color{red} {\textcopyright} Ophavsret 2020 - Claus M{\o}ller Consulting}
\headsep 20pt
\fancypagestyle{plain}{
\renewcommand{\headrulewidth}{0.5pt}
@@ -92,7 +92,7 @@
{
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}
- \fancyfoot[C]{\textcopyright Ophavsret 2020 - Claus Møller Consulting.}
+ \fancyfoot[C]{\textcopyright Ophavsret 2020 - Claus M{\o}ller Consulting.}
}
% Simbol svincnika
@@ -140,24 +140,24 @@
\\ \\
Tak for, at du har taget \textit{Kvalitetsklima} testen.
\\ \\
-\textit{Kvalitetsklima } testen er et værktøj til at overvåge og udvikle \\
+\textit{Kvalitetsklima} testen er et v{\ae}rkt{\o}j til at overv{\aa}ge og udvikle \\
forholdene kulturen eller "klimaet'' i dit team og din organisation. \\
-Testens resultater vil inspirere dig til at lære mere om og forbedre \\
+Testens resultater vil inspirere dig til at l{\ae}re mere om og forbedre \\
din kvalitetskultur.
\\ \\
-Claus M{\o}ller's \textit{Kvalitetsklima} er et "termometer'' der hjælper med at måle \\
-teamets "'helbred'' på et givent tidspunkt. Det kan også anvendes til at \\
+Claus M{\o}ller's \textit{Kvalitetsklima} er et "termometer'' der hj{\ae}lper med at m{\aa}le \\
+teamets "'helbred'' p{\aa} et givent tidspunkt. Det kan ogs{\aa} anvendes til at \\
vurdere hele virksomhedens "helbred".
\\ \\
-Denne rapport viser tilstanden på kvalitetsbevidsthed og -holdning i din \\
+Denne rapport viser tilstanden p{\aa} kvalitetsbevidsthed og -holdning i din \\
virksomheds teams.
\\ \\
-Vi anbefaler at du læser Claus Møller's bog ''Personlig Kvalitet'', som \\
+Vi anbefaler at du l{\ae}ser Claus M{\o}ller's bog ''Personlig Kvalitet'', som \\
giver specifikke forslag til udvikling og vedligeholdelse af Personlig \\
Kvalitet, Team Kvalitet og Kvalitetsklimaet i et team eller en hel \\
-organisation. På de følgende sider får du en introduktion til \\
+organisation. P{\aa} de f{\o}lgende sider f{\aa}r du en introduktion til \\
koncepterne \textit{Teamkvalitet} og \textit{Kvalitetsklima}.
\end{minipage}
@@ -174,83 +174,83 @@ organisation. På de følgende sider får du en introduktion til \\
{\large \textbf{Hvad er Teamkvalitet?}} \\
Med \textit{Teamkvalitet} menes: \textit{Et teams indfrielse af \\
de krav og forventninger der stilles til teamets \\
-samlede præstationer -- af omgivelserne og af \\
+samlede pr{\ae}stationer -- af omgivelserne og af \\
teamets medlemmer}. Teams og organisationer \\
-bør ligesom enkeltpersoner, gennemgå \\
-regelmæssige helbredsundersøgelser. \\
-\hspace*{0.8\baselineskip}Det er ikke altid nødvendigt at lave \\
-dybdegående og dyre undersøgelser. Enkle \\
-undersøgelser kan indikere de same resultater \\
-og medvirker til at den næste dybdegående \\
-undersøgelse foretages når og hvor der er \\
+b{\o}r ligesom enkeltpersoner, gennemg{\aa} \\
+regelm{\ae}ssige helbredsunders{\o}gelser. \\
+\hspace*{0.8\baselineskip}Det er ikke altid n{\o}dvendigt at lave \\
+dybdeg{\aa}ende og dyre unders{\o}gelser. Enkle \\
+unders{\o}gelser kan indikere de same resultater \\
+og medvirker til at den n{\ae}ste dybdeg{\aa}ende \\
+unders{\o}gelse foretages n{\aa}r og hvor der er \\
behov for den. \\
\hspace*{0.8\baselineskip} \textit{Kvalitetsklima} er en team indikator, eller et \\
-"termometer" , som klarlægger et teams helbred \\
-på et givent tidspunkt. \textit{Kvalitetsklima} kan også \\
+"termometer" , som klarl{\ae}gger et teams helbred \\
+p{\aa} et givent tidspunkt. \textit{Kvalitetsklima} kan ogs{\aa} \\
opridse helbredet for en hel organisation. \\
of an entire organisation. \\
-\hspace*{0.8\baselineskip}Indikatoren er ikke et værktøj til en \\
-dybtgående analyse. Det er en hurtig, enkel \\
- og praktisk måde for ledelsen at identificere de \\
-områder, der skal ændres eller hvor der er behov \\
-for en mere detaljeret undersøgelse af de \\
-nuværende tilstande. \\
+\hspace*{0.8\baselineskip}Indikatoren er ikke et v{\ae}rkt{\o}j til en \\
+dybtg{\aa}ende analyse. Det er en hurtig, enkel \\
+ og praktisk m{\aa}de for ledelsen at identificere de \\
+omr{\aa}der, der skal {\ae}ndres eller hvor der er behov \\
+for en mere detaljeret unders{\o}gelse af de \\
+nuv{\ae}rende tilstande. \\
\hspace*{0.8\baselineskip} \textit{Kvalitetsklima } giver organisationer et effektivt \\
-tidligt varslingssystem, som kan hjælpe med at \\
+tidligt varslingssystem, som kan hj{\ae}lpe med at \\
spare en masse penge.
\\ \\
-Forudsætningen for at virksomheden og alle dens \\
+Foruds{\ae}tningen for at virksomheden og alle dens \\
teams kan indfri omgivelsernes krav og \\
-forventninger til dem, er at de ansatte både \textbf{kan} \\
-og \textbf{vil} gøre deres bedste. \\
-\hspace*{0.8\baselineskip}For at få de ansatte til at engagere sig med \\
+forventninger til dem, er at de ansatte b{\aa}de \textbf{kan} \\
+og \textbf{vil} g{\o}re deres bedste. \\
+\hspace*{0.8\baselineskip}For at f{\aa} de ansatte til at engagere sig med \\
\textbf{hjernen} og med \textbf{hjertet} i teamets success, er \\
det ikke nok at teamet indfrier kravene og \\
forventningerne fra omgivelserne. \\
-\hspace*{0.8\baselineskip}Forholdene i teamet skal også kunne indfri \\
+\hspace*{0.8\baselineskip}Forholdene i teamet skal ogs{\aa} kunne indfri \\
kravene og forventningerne fra medlemmerne.
\\ \\
-Det er ikke nok at ledelsen fokuserer på \\
+Det er ikke nok at ledelsen fokuserer p{\aa} \\
kvaliteten af et teams produkter, serviceydelser, \\
-systemer og procedure. Det er nødvendigt \\
- at fokusere på menneskene bag \\
- teamets præstationer. \\
-\hspace*{0.8\baselineskip}Det er ikke nok at overvåge \\
-kundetilfredsheden. Det er også nødvendigt at \\
-overvåge \textbf{medlemmernes} tilfredshed.
+systemer og procedure. Det er n{\o}dvendigt \\
+ at fokusere p{\aa} menneskene bag \\
+ teamets pr{\ae}stationer. \\
+\hspace*{0.8\baselineskip}Det er ikke nok at overv{\aa}ge \\
+kundetilfredsheden. Det er ogs{\aa} n{\o}dvendigt at \\
+overv{\aa}ge \textbf{medlemmernes} tilfredshed.
\end{minipage}}
% STRAN 3 drugi stolpec
\begin{minipage}[t]{0.65\textwidth}
{\large \textbf{Kvalitetsklima}} \\
-Michelin udgiver årlige håndbøger (guides) over \\
+Michelin udgiver {\aa}rlige h{\aa}ndb{\o}ger (guides) over \\
forskellige landes og regioners restauranter, \\
-hoteller og turistattraktioner med tilhørende \\
+hoteller og turistattraktioner med tilh{\o}rende \\
kvalitetsvurdering og uddybende kommentarer. \\
- I Michelin guiden er det højeste man kan opnå \\
-tre stjerner. Prøv at forestille dig at dit team \\ blev
-vurderet på samme måde som Michelin- \\
-inspektørerne vurderer restauranter. Hvor \\
- mange stjerner ville dit team få? Alle teamets \\
+ I Michelin guiden er det h{\o}jeste man kan opn{\aa} \\
+tre stjerner. Pr{\o}v at forestille dig at dit team \\ blev
+vurderet p{\aa} samme m{\aa}de som Michelin- \\
+inspekt{\o}rerne vurderer restauranter. Hvor \\
+ mange stjerner ville dit team f{\aa}? Alle teamets \\
medlemmer skal engagere sig i at \\
- opnå 3-stjernet kvalitet.
+ opn{\aa} 3-stjernet kvalitet.
\\ \\
-\textit{Kvalitetsklima } er et værktøj til at overvåge og \\
+\textit{Kvalitetsklima } er et v{\ae}rkt{\o}j til at overv{\aa}ge og \\
udvikle forholdene, kulturen eller ''klimaet'' i \\
-teamet, så det til stadighed kan indfri \\
+teamet, s{\aa} det til stadighed kan indfri \\
\textbf{medlemmernes krav} og forventninger til en ''3- \\
stjernet'' arbejdsplads. Den interne kvalitet i \\
-teamet sætter en øvre grænse for den kvalitet \\
+teamet s{\ae}tter en {\o}vre gr{\ae}nse for den kvalitet \\
teamet kan levere til omgivelserne.
\\
-\hspace*{0.8\baselineskip} Værktøjet indeholder 15 nøje udvalgte \\
-områder. Erfaring viser os at hvor godt teamet \\
-fungererer indenfor disse områder, er afgørende \\
-for om medlemmerne synes det er godt at være \\
+\hspace*{0.8\baselineskip} V{\ae}rkt{\o}jet indeholder 15 n{\o}je udvalgte \\
+omr{\aa}der. Erfaring viser os at hvor godt teamet \\
+fungererer indenfor disse omr{\aa}der, er afg{\o}rende \\
+for om medlemmerne synes det er godt at v{\ae}re \\
med i teamet, og er en del af evalueringen af \\
team kvalitetskulturen lavet af medlemmerne.
\begin{enumerate}[leftmargin=*]
-\item Mål
+\item M{\aa}l
\item Ansvarsfordeling/organisation
\item Effektivitet/produktivitet
\item Beslutninger
@@ -259,20 +259,20 @@ team kvalitetskulturen lavet af medlemmerne.
koordination
\item Ekstern kommunikation og
koordination
-\item Fysisk miljø
+\item Fysisk milj{\o}
\item Kvalitetsbevidsthed
\item Kreativitet og innovation
\item Engagement
-\item Anerkendelse og belønning
+\item Anerkendelse og bel{\o}nning
\item Personlig udvikling
-\item Øvrigt psykisk miljø
+\item {\o}vrigt psykisk milj{\o}
(relationer)
\item Implementering
\end{enumerate}
\ \\
-På de efterfølgende sider finder du forklaringer af \\
-de 15 områder i Kvalitetsklima værktøjet som du \\
-og dine kollegaer kan benytte jer af når I er ''på \\
+P{\aa} de efterf{\o}lgende sider finder du forklaringer af \\
+de 15 omr{\aa}der i Kvalitetsklima v{\ae}rkt{\o}jet som du \\
+og dine kollegaer kan benytte jer af n{\aa}r I er ''p{\aa} \\
vej mod stjernerne''.
\end{minipage}
@@ -280,84 +280,84 @@ vej mod stjernerne''.
% STRAN 4
\begin{minipage}[t]{0.54\textwidth}
-{\large \textbf{Hvad får du ud af at udvikle et \\ Kvalitetsklima?}}
+{\large \textbf{Hvad f{\aa}r du ud af at udvikle et \\ Kvalitetsklima?}}
\\ \\
-\textit{Personlig Kvalitet} er forudsætningen for al anden \\
-kvalitet. For at forstå kvalitet på det personlige \\
-niveau er det vigtigt at forstå dette udsagn. \\
-Dette er det første skridt i at udvikle din \\
-personlige kvalitet -- eller i at hjælpe andre med \\
+\textit{Personlig Kvalitet} er foruds{\ae}tningen for al anden \\
+kvalitet. For at forst{\aa} kvalitet p{\aa} det personlige \\
+niveau er det vigtigt at forst{\aa} dette udsagn. \\
+Dette er det f{\o}rste skridt i at udvikle din \\
+personlige kvalitet -- eller i at hj{\ae}lpe andre med \\
at udvikle deres.
\\ \\
\hspace*{0.8\baselineskip} Du gavner dit team, din virksomhed eller \\
-organisation ved at præstere høj kvalitet. Din \\
-personlige kvalitet er altafgørende for både \\
+organisation ved at pr{\ae}stere h{\o}j kvalitet. Din \\
+personlige kvalitet er altafg{\o}rende for b{\aa}de \\
produkt- og servicekvalitet or er grundlaget for \\
team- og virksomhedskvalitet. Det bedste sted \\
at starte en kvalitetsudvikling i en virksomhed \\
og organisation er ved det enkelte menneskes \\
-præstationer og holdning til kvalitet.
+pr{\ae}stationer og holdning til kvalitet.
\\ \\
-Du glæder også din familie, dine venner og \\
+Du gl{\ae}der ogs{\aa} din familie, dine venner og \\
kollegaer med dine kvalitetsydelser.
\\ \\
-\textit{De allerstørste fordele opnår du dog selv \\
--- bade privat og på arbejde}
+\textit{De allerst{\o}rste fordele opn{\aa}r du dog selv \\
+-- bade privat og p{\aa} arbejde}
\\ \\
-Alle ansatte skal konstant søge at udvikle og \\
-vedligeholde kvalitetsholdninger og -adfærd \\
+Alle ansatte skal konstant s{\o}ge at udvikle og \\
+vedligeholde kvalitetsholdninger og -adf{\ae}rd \\
(f.eks. ideelle kvalitetsstandarder).
\\ \\
-\textbf{Dine fordele ved at præstere \\
-høj Personlig Kvalitet}
+\textbf{Dine fordele ved at pr{\ae}stere \\
+h{\o}j Personlig Kvalitet}
\renewcommand\labelitemi{\small$\bullet$}
\begin{itemize}
-\item Større ansvar og indflydelse
+\item St{\o}rre ansvar og indflydelse
\item Bedre karrieremuligheder
\item Bedre relationer med andre
-\item Færre undgåelige fejl
-\item Flere venner og støtter
-\item Andre mennesker stoler på dig
-\item Højere selvværd
+\item F{\ae}rre undg{\aa}elige fejl
+\item Flere venner og st{\o}tter
+\item Andre mennesker stoler p{\aa} dig
+\item H{\o}jere selvv{\ae}rd
\item Bedre livskvalitet
\end{itemize}
\end{minipage}
% STRAN 4 drugi stolpec
\begin{minipage}[t]{0.5\textwidth}
-{\large \textbf{Hvad får teams ud af at \\ udvikle et Kvalitetsklima?}}
+{\large \textbf{Hvad f{\aa}r teams ud af at \\ udvikle et Kvalitetsklima?}}
\\ \\
Virksomhedens overlevelse er bestemt af dens \\
evne til at indfri de krav og forventninger som \\
-interessenterne -- interne såvel som eksterne -- \\
+interessenterne -- interne s{\aa}vel som eksterne -- \\
har. \\
-\hspace*{0.8\baselineskip}For at beholde kunder er det nødvendigt at \\
+\hspace*{0.8\baselineskip}For at beholde kunder er det n{\o}dvendigt at \\
indfri deres forventninger til kvaliteten af \\
virksomhedens produkter og serviceydelser. \\
-\hspace*{0.8\baselineskip} De bedste resultater opnås når organisation \\
-også fokuserer på de mennesker der leverer \\
+\hspace*{0.8\baselineskip} De bedste resultater opn{\aa}s n{\aa}r organisation \\
+ogs{\aa} fokuserer p{\aa} de mennesker der leverer \\
kvaliteten.\\
\hspace*{0.8\baselineskip} Virksomhedens kvalitet er et resultat af \\
-individers og teams' præstationer (afdelinger, \\
+individers og teams' pr{\ae}stationer (afdelinger, \\
projektgrupper eller teams). \\
\hspace*{0.8\baselineskip}Den samlede \textit{Teamkvalitet} er et resultat af \\
-præstationerne af de enkelte medlemmer -- og \\
+pr{\ae}stationerne af de enkelte medlemmer -- og \\
deres evne til at koordinere deres indsats og skabe \\
-et miljø, som inspirerer alle til at yde deres bedste.\\
+et milj{\o}, som inspirerer alle til at yde deres bedste.\\
\\
\textbf{Teamets fordele ved at forbedre \\ Teamkvalitet} \\
Teams forbedrer deres evne til at:
\renewcommand\labelitemi{\small$\bullet$}
\begin{itemize}[leftmargin=*]
-\item Definere teamets kvalitetsmål
-\item Overvåge teamkvaliteten
-\item Opnå de aftalte kvalitetsmål
-\item Identificere de områder hvor \\
+\item Definere teamets kvalitetsm{\aa}l
+\item Overv{\aa}ge teamkvaliteten
+\item Opn{\aa} de aftalte kvalitetsm{\aa}l
+\item Identificere de omr{\aa}der hvor \\
teamkvalitet skal udvikles
-\item Bedømme om teamets kultur \\
+\item Bed{\o}mme om teamets kultur \\
inspirerer medlemmerne til at yde \\
deres bedste
-\item Forbedre kvaliteten af både \\
+\item Forbedre kvaliteten af b{\aa}de \\
individer og teams
\item Inspirere og engagere alle i \\
kvalitetsprocessen
@@ -365,49 +365,49 @@ kvalitetsprocessen
relationer med teamets \\
interessenter
\item Forbedre \textit{Kvalitetsklimaet } i teamet og \\
-skabe en bedre holdånd
+skabe en bedre hold{\aa}nd
\item Sikre at teamets navn forbindes med \\
kvalitet
\end{itemize}
\end{minipage}
% STRAN 5
-\chapter{\Large \textbf{15 Kvalitetsklima områder}}
+\chapter{\Large \textbf{15 Kvalitetsklima omr{\aa}der}}
\begin{minipage}[t]{0.54\textwidth}
\ \\
-{\large \textbf{1. Mål}} \\
-Vores mål er meningsfulde. De er klart \\
-definerede. De er realistiske, men også \\
-udfordrende. Vores mål har en tidsfrist. Vi har \\
-både små og store mål, kortsigtede og \\
-langsigtede mål, kvantitative og kvalitative mål. \\
-Vi sætter løbende mål på det personlige plan \\
+{\large \textbf{1. M{\aa}l}} \\
+Vores m{\aa}l er meningsfulde. De er klart \\
+definerede. De er realistiske, men ogs{\aa} \\
+udfordrende. Vores m{\aa}l har en tidsfrist. Vi har \\
+b{\aa}de sm{\aa} og store m{\aa}l, kortsigtede og \\
+langsigtede m{\aa}l, kvantitative og kvalitative m{\aa}l. \\
+Vi s{\ae}tter l{\o}bende m{\aa}l p{\aa} det personlige plan \\
og for teamet for forskellige perioder: dage, \\
-uger, måneder, år og langsigtede visioner. Vi \\
-justerer vores langsigtede mål mindst en gang \\
-om året. \\
-\hspace*{0.8\baselineskip}Læs mere i Claus Møllers bog \textit{Mit \\ Life Livstræ},
-i kapitlet 'Mine personlige mål'.
+uger, m{\aa}neder, {\aa}r og langsigtede visioner. Vi \\
+justerer vores langsigtede m{\aa}l mindst en gang \\
+om {\aa}ret. \\
+\hspace*{0.8\baselineskip}L{\ae}s mere i Claus M{\o}llers bog \textit{Mit \\ Life Livstr{\ae}},
+i kapitlet 'Mine personlige m{\aa}l'.
\\ \\
{\large \textbf{2. Ansvarsfordeling/organisation}} \\
Alle har overblik og kontrol over de krav der \\
-bliver stillet til ham ellers hende, områderne \\
+bliver stillet til ham ellers hende, omr{\aa}derne \\
hvor de er ansvarlige for at skabe resultater og \\
-opnå mål. Alle holder øje med de store opgaver \\
-og projekter som de løbende er involveret i \\
-og forstår deres autoritetsbeføjelser.
+opn{\aa} m{\aa}l. Alle holder {\o}je med de store opgaver \\
+og projekter som de l{\o}bende er involveret i \\
+og forst{\aa}r deres autoritetsbef{\o}jelser.
\\ \\
-Primære opgaver indeholder aktiviteter, som en \\
-person skal udføre for at nå et specifikt resultat. \\
+Prim{\ae}re opgaver indeholder aktiviteter, som en \\
+person skal udf{\o}re for at n{\aa} et specifikt resultat. \\
Det er en liste over alle opgaver og aktiviteter de \\
-bliver nødt til at udføre inden for hvert ansvars \\
-nøgleområde. Aktiviteter er de specifikke ting \\
-der skal udføres for at kunne løse en opgave. \\
-Hvis nye krav opstår er det nemt for alle at \\
-tilpasse sig disse og de er alle villige til at påtage \\
+bliver n{\o}dt til at udf{\o}re inden for hvert ansvars \\
+n{\o}gleomr{\aa}de. Aktiviteter er de specifikke ting \\
+der skal udf{\o}res for at kunne l{\o}se en opgave. \\
+Hvis nye krav opst{\aa}r er det nemt for alle at \\
+tilpasse sig disse og de er alle villige til at p{\aa}tage \\
sig nye ansvar, en ny type af arbejdsopgaver -- \\
-selv på tværs af professionelle eller team skel og \\
+selv p{\aa} tv{\ae}rs af professionelle eller team skel og \\
der er behov for at diskutere spillereglerne. \\
-\hspace*{0.8\baselineskip} Læs mere i Claus Møllers bog \\
+\hspace*{0.8\baselineskip} L{\ae}s mere i Claus M{\o}llers bog \\
\textit{Employeeship}, i kapitlet 'Ansvar' og afsnittet \\
om 'Multifunktionelle ansatte'.
\end{minipage}
@@ -415,43 +415,43 @@ om 'Multifunktionelle ansatte'.
\begin{minipage}[t]{0.5\textwidth}
\ \\
{\large \textbf{3. Effektivitet/produktivitet}} \\
-Alle prioriterer rigtigt. Vi gør de rigtige ting -- \\
-dem der fører til de ønskede resultater. Vi når \\
-vores mål med mindst mulig brug af ressourcer. \\
-Vi gennemfører ting til den aftalte tid. \\
- Udstyr, kontorer m.v. er pæne og rede. Alle har \\
-overblik og styr på tingene. Alle sørger for at deres \\
-bidrag til teamet og virksomheden er mere værd \\
-end deres løn. Teams indfrier omgivelsernes \\
+Alle prioriterer rigtigt. Vi g{\o}r de rigtige ting -- \\
+dem der f{\o}rer til de {\o}nskede resultater. Vi n{\aa}r \\
+vores m{\aa}l med mindst mulig brug af ressourcer. \\
+Vi gennemf{\o}rer ting til den aftalte tid. \\
+ Udstyr, kontorer m.v. er p{\ae}ne og rede. Alle har \\
+overblik og styr p{\aa} tingene. Alle s{\o}rger for at deres \\
+bidrag til teamet og virksomheden er mere v{\ae}rd \\
+end deres l{\o}n. Teams indfrier omgivelsernes \\
effektivitets- og produktivitetskrav. \\
-\hspace*{0.8\baselineskip} Læs mere i Claus Møllers bøger \\
+\hspace*{0.8\baselineskip} L{\ae}s mere i Claus M{\o}llers b{\o}ger \\
\textit{Employeeship}, i kapitlet om 'Produktivitet' \\
og \textit{Heart Work}, i kapitlet 'At styre \\
- sine følelser'.
+ sine f{\o}lelser'.
\\ \\
{\large \textbf{4. Beslutninger}} \\
-Beslutninger træffes i teamet på et \\
-hensigtsmæssigt niveau. Beslutningshastigheden \\
+Beslutninger tr{\ae}ffes i teamet p{\aa} et \\
+hensigtsm{\ae}ssigt niveau. Beslutningshastigheden \\
er tilfredsstillende -- beslutninger bliver ikke \\
-forsinkede eller udsat. De er truffet på et \\
-tilstrækkeligt grundlag. Vi involverer de rigtige \\
-mennesker i vores beslutninger. Vi træffer \\
-beslutninger der går ud over hvad vi plejer og \\
+forsinkede eller udsat. De er truffet p{\aa} et \\
+tilstr{\ae}kkeligt grundlag. Vi involverer de rigtige \\
+mennesker i vores beslutninger. Vi tr{\ae}ffer \\
+beslutninger der g{\aa}r ud over hvad vi plejer og \\
hvad omgivelserne forventer, selv om de \\
-indebærer risiko. Vi er I stand til at træffe gode \\
-beslutninger hurtigt når situationen \\
-kræver det. \\
-\hspace*{0.8\baselineskip} Læs mere i Claus Møllers bog \textit{Heart \\ Work},
+indeb{\ae}rer risiko. Vi er I stand til at tr{\ae}ffe gode \\
+beslutninger hurtigt n{\aa}r situationen \\
+kr{\ae}ver det. \\
+\hspace*{0.8\baselineskip} L{\ae}s mere i Claus M{\o}llers bog \textit{Heart \\ Work},
specielt i sektionen om 'EI-personen'.
\\ \\
{\large \textbf{5. Delegering}} \\
-Lederne delegerer tilstrækkeligt. Alles evner \\
-udnyttes. Alle får mulighed for at gøre det de kan \\
-og vil. Lederne er indstillet på at afgive ansvar og \\
-magt. Alle er indstillet på at påtage sig ansvar. \\
-Alle udvikles til at kunne påtage sig stadig større \\
+Lederne delegerer tilstr{\ae}kkeligt. Alles evner \\
+udnyttes. Alle f{\aa}r mulighed for at g{\o}re det de kan \\
+og vil. Lederne er indstillet p{\aa} at afgive ansvar og \\
+magt. Alle er indstillet p{\aa} at p{\aa}tage sig ansvar. \\
+Alle udvikles til at kunne p{\aa}tage sig stadig st{\o}rre \\
ansvar. Delegeringsteknikken er effektiv. \\
-\hspace*{0.8\baselineskip} Læs mere i Claus Møller bog \\
+\hspace*{0.8\baselineskip} L{\ae}s mere i Claus M{\o}ller bog \\
\textit{Employeeship}, i kapitlet om 'Employeeship \\
delegering'.
\end{minipage}
@@ -461,16 +461,16 @@ delegering'.
% STRAN 6
\begin{minipage}[t]{0.54\textwidth}
{\large \textbf{6. Intern kommunikation og \\ koordination}} \\
-Vi fungerer som et team. Alle trækker i samme \\
-retning. Vi informerer hinanden tilstrækkeligt. \\
-Vores kommunikationsform er hensigtsmæssig. \\
-Vores møder er effektive: velforberedte, god \\
-mødedisciplin, aktiv deltagelse af alle, \\
+Vi fungerer som et team. Alle tr{\ae}kker i samme \\
+retning. Vi informerer hinanden tilstr{\ae}kkeligt. \\
+Vores kommunikationsform er hensigtsm{\ae}ssig. \\
+Vores m{\o}der er effektive: velforberedte, god \\
+m{\o}dedisciplin, aktiv deltagelse af alle, \\
handlingsplaner med navne og tidsfrister og \\
konkrete resultater. Vi viser respekt for \\
hinandens tid og vi udnytter hinandens viden og \\
-lærer fra hinanden -- på tværs af faggrænser. \\
-\hspace*{0.8\baselineskip} Læs mere i Claus Møllers bog \\
+l{\ae}rer fra hinanden -- p{\aa} tv{\ae}rs af faggr{\ae}nser. \\
+\hspace*{0.8\baselineskip} L{\ae}s mere i Claus M{\o}llers bog \\
\textit{Employeeship}, i afsnittet 'Employeeship \\
og kommunikation' og i kapitlet \\
'Employeeship og 'vi-kultur'.
@@ -481,59 +481,59 @@ virksomheden. Vi fungerer godt med \\
interessenter uden for virksomheden -- \\
og kender dem (''vores kunder''). Vi kender hver \\
interessents forventninger til teamet. Teamet \\
-informerer interessenterne hensigtsmæssigt. Vi \\
-kender vores konkurrenter og deres stærke og \\
+informerer interessenterne hensigtsm{\ae}ssigt. Vi \\
+kender vores konkurrenter og deres st{\ae}rke og \\
svage sider. Vi registrerer og tilpasser os \\
forandringerne omkring os. \\
-\hspace*{0.8\baselineskip} Læs mere i Claus Møllers bøger \\
+\hspace*{0.8\baselineskip} L{\ae}s mere i Claus M{\o}llers b{\o}ger \\
\textit{En reklamation er en gave}, og \textit{Employeeship}, i \\
afsnittet 'Nye krav til virksomheder'.
\\ \\
-{\large \textbf{8. Fysisk miljø}} \\
-Det fysiske miljø fremmer teamets trivsel og \\
+{\large \textbf{8. Fysisk milj{\o}}} \\
+Det fysiske milj{\o} fremmer teamets trivsel og \\
effektivitet. Kontorerne er lyse og har god plads. \\
-Møblerne er moderne, velholdte og ergonomisk \\
-gennemtænkte. Der er nok plads til alle også til \\
-gæster udefra. Belysningen er veltilpasset. Støj er \\
-under kontrol og alle kan undgå for meget af den. \\
+M{\o}blerne er moderne, velholdte og ergonomisk \\
+gennemt{\ae}nkte. Der er nok plads til alle ogs{\aa} til \\
+g{\ae}ster udefra. Belysningen er veltilpasset. St{\o}j er \\
+under kontrol og alle kan undg{\aa} for meget af den. \\
Der er nok frisk luft eller tilfredsstillende \\
ventilation. Udstyr og materiel er i god stand.
\end{minipage}
% STRAN 6 drugi stolpec
\begin{minipage}[t]{0.5\textwidth}
{\large \textbf{9. Kvalitetsbevidsthed}} \\
-Der er klare kvalitetsmål for alle funktioner, \\
+Der er klare kvalitetsm{\aa}l for alle funktioner, \\
produkter og aktiviteter. Alle team medlemmer \\
-kender teamets kvalitetsområder og -faktorer. \\
+kender teamets kvalitetsomr{\aa}der og -faktorer. \\
Alle ved hvordan teamets kvalitet males. Vi \\
-kontrollerer løbende, om der er forskel på det vi \\
-gerne vil præstere og det vi faktisk præsterer. \\
+kontrollerer l{\o}bende, om der er forskel p{\aa} det vi \\
+gerne vil pr{\ae}stere og det vi faktisk pr{\ae}sterer. \\
Alle i teamet arbejder med kvalitetsudvikling. Vi \\
behandler andre mennesker og teams som \\
-''vigtige kunder''. Vi efterprøver løbende \\
-fornuften af vores handlinger (værdianalyse). \\
+''vigtige kunder''. Vi efterpr{\o}ver l{\o}bende \\
+fornuften af vores handlinger (v{\ae}rdianalyse). \\
Den enkelte garanterer kvaliteten af sit eget \\
arbejde. Vi forlanger kvalitet af hinanden -- og \\
-af vores omgivelser. Vi gør noget aktivt for \\
- at forebygge fejl. Vi håndterer fejl effektivt, \\
- glæder os når vi konstaterer dem, takker de \\
-personer der gør os opmærksom på fejlene, \\
- retter dem og undgår at gentage dem. \\
-\hspace*{0.8\baselineskip} Læs mere i Claus Møllers bog \\
+af vores omgivelser. Vi g{\o}r noget aktivt for \\
+ at forebygge fejl. Vi h{\aa}ndterer fejl effektivt, \\
+ gl{\ae}der os n{\aa}r vi konstaterer dem, takker de \\
+personer der g{\o}r os opm{\ae}rksom p{\aa} fejlene, \\
+ retter dem og undg{\aa}r at gentage dem. \\
+\hspace*{0.8\baselineskip} L{\ae}s mere i Claus M{\o}llers bog \\
\textit{Personlig kvalitet}, specielt afsnittet om \\
-'Personlig garanti' eller læs pjecen \\
+'Personlig garanti' eller l{\ae}s pjecen \\
\textit{Personlig garanti}.
\\ \\
{\large \textbf{10. Kreativitet og innovation}} \\
Vi ser udviklingen omkring os. Alle indser \\
-nødvendigheden af forandring. Vi har let ved at \\
+n{\o}dvendigheden af forandring. Vi har let ved at \\
omstille os. Vi er fleksible. Vi tager ny teknologi i \\
-anvendelse. Vi anvender kreativ tænkning og \\
+anvendelse. Vi anvender kreativ t{\ae}nkning og \\
kreativitetsteknikker. Alle ager initiativ til at \\
-forbedre teamets indsats: gøre tingene hurtigere, \\
-med færre omkostninger, mere kreativt og med \\
-en højere kvalitet. \\
-\hspace*{0.8\baselineskip} Læs mere i Claus Møllers bog \\
+forbedre teamets indsats: g{\o}re tingene hurtigere, \\
+med f{\ae}rre omkostninger, mere kreativt og med \\
+en h{\o}jere kvalitet. \\
+\hspace*{0.8\baselineskip} L{\ae}s mere i Claus M{\o}llers bog \\
\textit{Employeeship}, i kapitlerne 'Employeeship \\
delegering' og 'Initiativ'.
\end{minipage}
@@ -544,30 +544,30 @@ delegering' og 'Initiativ'.
\begin{minipage}[t]{0.54\textwidth}
{\large \textbf{11. Engagement}} \\
Alle i vores team er engagerede i deres arbejde -- \\
-både med hjernen og med hjertet. Alle føler \\
+b{\aa}de med hjernen og med hjertet. Alle f{\o}ler \\
medansvar for teamets succeser og fiaskoer. Vi \\
stiller alle op og yder vores bedste. Vi holder \\
vores aftaler. Vi tager alle initiativ til forbedring \\
-og udvikling. Alle er indstillet på at yde en ekstra \\
-indsats, når det er påkrævet. Alle ser en \\
+og udvikling. Alle er indstillet p{\aa} at yde en ekstra \\
+indsats, n{\aa}r det er p{\aa}kr{\ae}vet. Alle ser en \\
udfordring i enhver funktion og handling. \\
-\hspace*{0.8\baselineskip} Læs mere i Claus Møllers bøger \\
+\hspace*{0.8\baselineskip} L{\ae}s mere i Claus M{\o}llers b{\o}ger \\
\textit{Employeeship} og \textit{Heart Work}.
\\ \\
-{\large \textbf{12. Anerkendelse og belønning}} \\
+{\large \textbf{12. Anerkendelse og bel{\o}nning}} \\
Anerkendelse forekommer hyppigere end kritik \\
-og irettesættelse. Gode resultater bliver \\
-synliggjort. Gode præstationer belønnes. Gode \\
-præstationer fremmer mulighederne for \\
+og irettes{\ae}ttelse. Gode resultater bliver \\
+synliggjort. Gode pr{\ae}stationer bel{\o}nnes. Gode \\
+pr{\ae}stationer fremmer mulighederne for \\
forfremmelse og udvikling. Ledelsen fokuserer \\
-mere på medlemmernes stærke sider end på \\
+mere p{\aa} medlemmernes st{\ae}rke sider end p{\aa} \\
deres svage. Vi sikrer os, at vi ikke har \\
-medlemmer som stort set aldrig får \\
-opmærksomhed og anerkendelse. Vi forventer \\
-anerkendelse snarere end kritik, når et medlem \\
+medlemmer som stort set aldrig f{\aa}r \\
+opm{\ae}rksomhed og anerkendelse. Vi forventer \\
+anerkendelse snarere end kritik, n{\aa}r et medlem \\
kaldes til lederen. \\
-\hspace*{0.8\baselineskip} Læs mere i Claus Møllers bog \textit{Mit \\ livstræ},
-i kapitlet 'Miljøet -- grobunden'.
+\hspace*{0.8\baselineskip} L{\ae}s mere i Claus M{\o}llers bog \textit{Mit \\ livstr{\ae}},
+i kapitlet 'Milj{\o}et -- grobunden'.
\\ \\
{\large \textbf{13. Personlig udvikling}} \\
Alle inspireres til udvikling. Der findes planer for \\
@@ -578,58 +578,58 @@ muligheder for jobrotation, fleksible arbejdstider \\
og -steder, jobdeling, variation, og forfremmelse. \\
Hver enkelt stilles over for rimelige \\
udfordringer. \\
-\hspace*{0.8\baselineskip} Læs mere i Claus Møllers bog \\
-\textit{Employeeship}, i afsnittet 'Den bløde \\
+\hspace*{0.8\baselineskip} L{\ae}s mere i Claus M{\o}llers bog \\
+\textit{Employeeship}, i afsnittet 'Den bl{\o}de \\
kontrakt' og kapitlet \\
'Employeeship personalepolitik'.
\end{minipage}
% STRAN 7 drugi stolpec
\begin{minipage}[t]{0.5\textwidth}
-{\large \textbf{14. Øvrigt psykisk miljø (relationer)}} \\
-Vi har det sjovt sammen. Vi glæder os til at \\
-komme på arbejde -- hver dag. Vi føler os trygge i \\
-ansættelsen. Vi hjælper og opmuntrer hinanden. \\
-Vores kommunikation er baseret på åbenhed og \\
-ærlighed. Vi viser tillid til hinanden. Vi taler med \\
+{\large \textbf{14. {\o}vrigt psykisk milj{\o} (relationer)}} \\
+Vi har det sjovt sammen. Vi gl{\ae}der os til at \\
+komme p{\aa} arbejde -- hver dag. Vi f{\o}ler os trygge i \\
+ans{\ae}ttelsen. Vi hj{\ae}lper og opmuntrer hinanden. \\
+Vores kommunikation er baseret p{\aa} {\aa}benhed og \\
+{\ae}rlighed. Vi viser tillid til hinanden. Vi taler med \\
hinanden -- og ikke om hinanden. Vi respekterer \\
-hinandens kunnen, ønsker og særpræg. \\
-\hspace*{0.8\baselineskip} Læs mere i Claus Møllers bog \textit{Mit \\ Life livstræ}.
+hinandens kunnen, {\o}nsker og s{\ae}rpr{\ae}g. \\
+\hspace*{0.8\baselineskip} L{\ae}s mere i Claus M{\o}llers bog \textit{Mit \\ Life livstr{\ae}}.
\\ \\
{\large \textbf{15. Implementering}} \\
-Vi kan omskrive ideer og tanker til handling. Vi får \\
+Vi kan omskrive ideer og tanker til handling. Vi f{\aa}r \\
tingene gjort i stedet for kun at tale om dem. Vi \\
-færdiggør de ting, vi har sat i gang. Vi følger op pa \\
-at opgaver udføres som aftalt. Ledelsen følger op \\
-på og bevarer interessen for opgaver, som den \\
-har sat i gang. Vi koncentrerer os om få vigtige \\
+f{\ae}rdigg{\o}r de ting, vi har sat i gang. Vi f{\o}lger op pa \\
+at opgaver udf{\o}res som aftalt. Ledelsen f{\o}lger op \\
+p{\aa} og bevarer interessen for opgaver, som den \\
+har sat i gang. Vi koncentrerer os om f{\aa} vigtige \\
opgaver ad gangen, frem for at have en masse \\
-bolde i luften på en gang. Ansvaret for et projekt \\
+bolde i luften p{\aa} en gang. Ansvaret for et projekt \\
er entydigt placeret hos én projektleder. \\
-Projektlederen har beføjelser og myndighed til at \\
-træffe alle nødvendige beslutninger på vej mod \\
-målet. Vi kan fjerne forhindringerne på vej mod \\
-målet. \\
-\hspace*{0.8\baselineskip} Læs mere i Claus Møllers bog \\
+Projektlederen har bef{\o}jelser og myndighed til at \\
+tr{\ae}ffe alle n{\o}dvendige beslutninger p{\aa} vej mod \\
+m{\aa}let. Vi kan fjerne forhindringerne p{\aa} vej mod \\
+m{\aa}let. \\
+\hspace*{0.8\baselineskip} L{\ae}s mere i Claus M{\o}llers bog \\
\textit{Employeeship}, i kapitlet 'Implementering \\
af Employeeship' og i bogen \textit{Personlig kvalitet}, \\
-specifikt afsnittet 'Lær at fuldføre -- skab \\
+specifikt afsnittet 'L{\ae}r at fuldf{\o}re -- skab \\
selvdisciplin'.
\end{minipage}
\newpage
-\chapter{\Large \textbf{Sådan anvendes Kvalitetsklima værktøjet}}
+\chapter{\Large \textbf{S{\aa}dan anvendes Kvalitetsklima v{\ae}rkt{\o}jet}}
\begin{center}
\begin{minipage}{0.8\linewidth}
\begin{center}
-{\large \textbf{Sådan anvender den enkelte værktøjet}}
+{\large \textbf{S{\aa}dan anvender den enkelte v{\ae}rkt{\o}jet}}
\end{center}
\ \\
\renewcommand\labelitemi{\large$\bullet$}
\begin{itemize}
-\item Hver enkelt gennemgår sin egen besvarelse af \textit{Kvalitetsklima}. Derved \\
-opnås en bevidsthed om, på hvilke områder teamkvaliteten efter den \\
+\item Hver enkelt gennemg{\aa}r sin egen besvarelse af \textit{Kvalitetsklima}. Derved \\
+opn{\aa}s en bevidsthed om, p{\aa} hvilke omr{\aa}der teamkvaliteten efter den \\
enkeltes opfattelse skal udvikles.
\item Ved at sammenligne egen besvarelse med det samlede teamresultat \\
kan hver enkelt se, hvordan deres vurdering er i forhold til kollegaernes \\
@@ -641,23 +641,23 @@ vurdering.
\ \\ \\ \\
\renewcommand\labelitemi{\large$\bullet$}
\begin{center}
-{\large \textbf{Sådan anvender virksomheden værktøjet}} \\
+{\large \textbf{S{\aa}dan anvender virksomheden v{\ae}rkt{\o}jet}} \\
\end{center}
\begin{itemize}
-\item \textit{Kvalitetsklima} værktøjet anvendes af alle teams i virksomheden. \\
+\item \textit{Kvalitetsklima} v{\ae}rkt{\o}jet anvendes af alle teams i virksomheden. \\
Resultaterne i de enkelte teams sammenlignes og diskuteres med \\
-henblik på at opnå forbedringer i hele virksomheden.
-\item Den øverste ledelse kan anvende Kvalitetsklima til at identificere teams, \\
-der trænger til hjælp, eller teams, som resten af virksomheden kan lære \\
+henblik p{\aa} at opn{\aa} forbedringer i hele virksomheden.
+\item Den {\o}verste ledelse kan anvende Kvalitetsklima til at identificere teams, \\
+der tr{\ae}nger til hj{\ae}lp, eller teams, som resten af virksomheden kan l{\ae}re \\
noget af.
-\item Man kan få et indtryk af hele virksomhedens stærke og svage sider ved \\
-at se på de områder, hvor alle teams stort set får samme vurdering.
-\item Hvis et teams resultat for et eller flere områder afviger væsentligt fra \\
-alle andre teams resultater, får man et indtryk af teamets særpræg.
+\item Man kan f{\aa} et indtryk af hele virksomhedens st{\ae}rke og svage sider ved \\
+at se p{\aa} de omr{\aa}der, hvor alle teams stort set f{\aa}r samme vurdering.
+\item Hvis et teams resultat for et eller flere omr{\aa}der afviger v{\ae}sentligt fra \\
+alle andre teams resultater, f{\aa}r man et indtryk af teamets s{\ae}rpr{\ae}g.
\item For at registrere forandringer og succeser anvendes Kvalitetsklima af \\
-alle teams mindst en gang om året, og når der sker strukturelle \\
-forandringer på markedet og internt I virksomheden.
+alle teams mindst en gang om {\aa}ret, og n{\aa}r der sker strukturelle \\
+forandringer p{\aa} markedet og internt I virksomheden.
\end{itemize}
\end{minipage}
\end{center}
@@ -666,7 +666,7 @@ forandringer på markedet og internt I virksomheden.
% STRAN 8
\chapter{\Large \textbf{Hvad viser graferne?}}
\begin{minipage}[t]{0.5\textwidth}
-De ansatte har vurderet områderne på en skala \\
+De ansatte har vurderet omr{\aa}derne p{\aa} en skala \\
fra 1 til 5.\\
\vspace*{-2.2\baselineskip} \hspace*{-0.2\baselineskip} \includegraphics[width=5.6cm]{../latexkosi/logo/legend_description_dan.png}~\\[1cm]
@@ -674,7 +674,7 @@ fra 1 til 5.\\
\newline
Graferne viser svarenes fordeling i procent. \\
-En god tommelfingerregel er, at der bør ske \\
+En god tommelfingerregel er, at der b{\o}r ske \\
forbedringer for de faktorer, hvor:
\begin{itemize}
\item[--] \textbf{mere end 20 \%} af de ansatte har \\
@@ -683,7 +683,7 @@ markeret 'Utilfredsstillende' eller \\
og/eller
\item[--] \textbf{mindre end 50 \%} af de ansatte har \\
markeret 'Meget tilfredsstillende' eller \\
- 'Særdeles tilfredsstillende'.
+ 'S{\ae}rdeles tilfredsstillende'.
\end{itemize}
\ \\ \\ \\
\includegraphics[width=16cm]{../latexkosi/logo/klima_kakovosti_middle.png} % horizontal space
@@ -693,13 +693,13 @@ markeret 'Meget tilfredsstillende' eller \\
\renewcommand\labelitemi{\small$\bullet$}
\begin{itemize}
\item Det samlede resultat af \\
-\textbf{Kvalitetsklima} bør diskuteres \\
-grundigt på et møde for afdelingens \\
+\textbf{Kvalitetsklima} b{\o}r diskuteres \\
+grundigt p{\aa} et m{\o}de for afdelingens \\
ansatte.\\
-Mødet bør munde ud i en konkret plan for \\
+M{\o}det b{\o}r munde ud i en konkret plan for \\
udvikling og forbedring af kvalitetskulturen. \\
-Denne plan bør med mellemrum justeres \\
-på afdelingsmøder.
+Denne plan b{\o}r med mellemrum justeres \\
+p{\aa} afdelingsm{\o}der.
\end{itemize}
\end{minipage}
diff --git a/admin/survey/modules/mod_EVOLI/latexkosi/tabela_The 15_components_ang.tex b/admin/survey/modules/mod_EVOLI/latexkosi/tabela_The 15_components_ang.tex
index 47652dfdc..898d2b7c7 100644
--- a/admin/survey/modules/mod_EVOLI/latexkosi/tabela_The 15_components_ang.tex
+++ b/admin/survey/modules/mod_EVOLI/latexkosi/tabela_The 15_components_ang.tex
@@ -16,7 +16,7 @@ The 15 components of emotional intelligence
& \hspace*{-0.5cm} 1. Self-awareness & Higher scores mean: &\\
\taburowcolors[2] 2{tableLineOne .. tableLineTwo}
& \hspace*{-0.5cm} Self-appraisal & {\fontsize{10}{10}\selectfont The ability to be aware of, understand, accept and respect oneself. It means knowing one{'}s inner resources, strengths and weaknesses.} & \\
- & \hspace*{-0.5cm} Emotional \hspace*{-0.5cm} self-awareness & {\fontsize{10}{10}\selectfont The ability to recognise and understand one{'}s emotions and the way they affect oneself and others. To differentiate between one{'}s emotions. To know what one is feeling, why and what caused those feelings.} & \\
+ & \hspace*{-0.5cm} Emotional \hspace*{-0.1cm} self-awareness & {\fontsize{10}{10}\selectfont The ability to recognise and understand one{'}s emotions and the way they affect oneself and others. To differentiate between one{'}s emotions. To know what one is feeling, why and what caused those feelings.} & \\
& \hspace*{-0.5cm} Objectivity & {\fontsize{10}{10}\selectfont The ability to assess the correspondence between what is subjectively experienced and what objectively exists. "Tuning in" to the immediate situation, keeping things in correct perspective without excessive fantasising.} & \\
& \hspace*{-0.5cm} Self-expression & {\fontsize{10}{10}\selectfont The ability to express emotions, beliefs and thoughts and to defend one{'}s rights in an assertive and non-destructive manner.} & \\
\tableHeaderStyle
diff --git a/admin/survey/modules/mod_hierarhija/class/HierarhijaClass.php b/admin/survey/modules/mod_hierarhija/class/HierarhijaClass.php
index e3dc747e2..a004aaaa9 100644
--- a/admin/survey/modules/mod_hierarhija/class/HierarhijaClass.php
+++ b/admin/survey/modules/mod_hierarhija/class/HierarhijaClass.php
@@ -392,7 +392,7 @@ class Hierarhija {
echo ' ';
// popup za urejanje vrednosti
- echo '
';
+ echo '';
// fade pri fullscreen urejanje spremenljivke
diff --git a/admin/survey/modules/mod_hierarhija/class/HierarhijaHelper.php b/admin/survey/modules/mod_hierarhija/class/HierarhijaHelper.php
index b6b96d352..6c57ae424 100644
--- a/admin/survey/modules/mod_hierarhija/class/HierarhijaHelper.php
+++ b/admin/survey/modules/mod_hierarhija/class/HierarhijaHelper.php
@@ -110,10 +110,7 @@ class HierarhijaHelper
$zamenjaj = $match;
// email ne sme biti enak imenu ali priimku
- if ($iskanje == 'ime ucitelja' && ! in_array($user->email, [
- $user->name,
- $user->surname,
- ])) {
+ if ($iskanje == 'ime ucitelja' && ! in_array($user->email, [$user->name, $user->surname])) {
$zamenjaj = $user->name." ".$user->surname;
} elseif ($iskanje == 'ime ucitelja') {
preg_match('/(\w+)((?:\.)(\w+))?/', $user->email, $ucitelj);
diff --git a/admin/survey/modules/mod_hierarhija/js/vendor/custom.js b/admin/survey/modules/mod_hierarhija/js/vendor/custom.js
index 1714333f3..c601daabd 100644
--- a/admin/survey/modules/mod_hierarhija/js/vendor/custom.js
+++ b/admin/survey/modules/mod_hierarhija/js/vendor/custom.js
@@ -739,7 +739,7 @@ function jstree_vkljuci(jsonData) {
function dodajKomentar() {
$('#fade').fadeTo('slow', 1);
- $('#vrednost_edit').html('').fadeIn('slow').load('ajax.php?anketa=' + anketa_id + '&t=hierarhija-ajax&a=komentar-k-hierarhiji&m=get');
+ $('#vrednost_edit').wrapAll('
').html('').fadeIn('slow').load('ajax.php?anketa=' + anketa_id + '&t=hierarhija-ajax&a=komentar-k-hierarhiji&m=get');
}
/**
@@ -747,7 +747,7 @@ function dodajKomentar() {
*/
function uploadLogo() {
$('#fade').fadeTo('slow', 1);
- $('#vrednost_edit').html('').fadeIn('slow').load('ajax.php?anketa=' + anketa_id + '&t=hierarhija-ajax&a=upload-logo&m=get', function () {
+ $('#vrednost_edit').wrapAll('
').html('').fadeIn('slow').load('ajax.php?anketa=' + anketa_id + '&t=hierarhija-ajax&a=upload-logo&m=get', function () {
//Vklopi nice input file
$("input[type=file]").nicefileinput({
diff --git a/admin/survey/modules/mod_kakovost/R/calc.usability.R b/admin/survey/modules/mod_kakovost/R/calc.usability.R
new file mode 100644
index 000000000..a464c3024
--- /dev/null
+++ b/admin/survey/modules/mod_kakovost/R/calc.usability.R
@@ -0,0 +1,72 @@
+calc.usability <- function(m.all, return.type){
+ # return.type:
+ # 1: return only absolute
+ # 2: return only %
+ # 3: return both (even rows: absolute, odd rows: %)
+
+ ## calculations
+ m.all[, Prekinitve:=v3]
+ m.all[, Neodgovori:=v1]
+ m.all[, Nevsebinski:=v96+v97+v98+v99]
+ m.all[, Izpostavljen:=allqs-(v2+v3+v4+v5)]
+ setnames(m.all, "va", "Veljavni")
+
+ m.all[, UNL:=Neodgovori/Izpostavljen]
+ m.all[is.na(UNL)==T, UNL:=0]
+ m.all[, UML:=(v3/allqs)+(1-(v3/allqs))*UNL]
+ m.all[, UCL:=1-UML]
+ m.all[, UIL:=v2/(v2+Izpostavljen)]
+ m.all[is.na(UIL)==T, UIL:=0]
+ m.all[, UAQ:=v4/allqs]
+
+ m.all[, Uporabnost:=1-UML]
+
+ #tidy up
+ setcolorder(m.all, c("recnum", "allqs", "Veljavni", "Nevsebinski", "Neodgovori",
+ "Izpostavljen", "Prekinitve", "Uporabnost",
+ "v1", "v2", "v3", "v4", "v5", "v96", "v97", "v98", "v99",
+ "UNL", "UML", "UCL", "UIL", "UAQ"))
+
+ if(return.type==1){
+ return(m.all)
+ }else{
+ m.all.p <- copy(m.all)
+
+ m.all.p[, (c("Veljavni", "Nevsebinski", "Neodgovori")) := lapply(.SD, "/", m.all.p$Izpostavljen), .SDcols=c("Veljavni", "Nevsebinski", "Neodgovori")]
+ m.all.p[, (c("Prekinitve", "v1", "v2", "v3", "v4", "v5", "v96", "v97", "v98", "v99")) := lapply(.SD, "/", m.all.p$allqs), .SDcols=c("Prekinitve", "v1", "v2", "v3", "v4", "v5", "v96", "v97", "v98", "v99")]
+ m.all.p[, Izpostavljen:=1]
+
+ if(return.type==2){
+ return(m.all.p)
+ }else{
+ m.all[, Uporabnost:=Veljavni]
+ m.all[, c("UNL", "UML", "UCL", "UIL", "UAQ"):=NA]
+ m.all <- m.all[, lapply(.SD, as.character)]
+
+ m.all.p[, allqs:=NA]
+ m.all.p[, allqs:=as.character(allqs)]
+
+ change.cols <- c("Veljavni", "Nevsebinski", "Neodgovori", "Izpostavljen", "Prekinitve", "Uporabnost",
+ "v1", "v2", "v3", "v4", "v5", "v96", "v97", "v98", "v99",
+ "UNL", "UML", "UCL", "UIL", "UAQ")
+ m.all.p[, (change.cols):=lapply(.SD, function(x){paste0(round(x*100, 0), "%")}), .SD=change.cols]
+
+ m.1ka <- data.table(matrix("", nrow=nrow(m.all)*2, ncol=ncol(m.all)))
+
+ a.rows <- as.integer(seq(1, nrow(m.1ka), by=2))
+ p.rows <- as.integer(seq(2, nrow(m.1ka), by=2))
+
+ set(m.1ka, a.rows, 1:ncol(m.1ka), value=m.all)
+ suppressWarnings(set(m.1ka, p.rows, 1:ncol(m.1ka), value=m.all.p))
+
+ setnames(m.1ka, colnames(m.all))
+ m.1ka[, Status:=NA_character_]
+ setcolorder(m.1ka, c("recnum", "allqs", "Veljavni", "Nevsebinski", "Neodgovori",
+ "Izpostavljen", "Prekinitve", "Uporabnost", "Status",
+ "v1", "v2", "v3", "v4", "v5", "v96", "v97", "v98", "v99",
+ "UNL", "UML", "UCL", "UIL", "UAQ"))
+
+ return(m.1ka)
+ }
+ }
+}
\ No newline at end of file
diff --git a/admin/survey/modules/mod_kakovost/R/gen.survey.str.R b/admin/survey/modules/mod_kakovost/R/gen.survey.str.R
new file mode 100644
index 000000000..0d523b177
--- /dev/null
+++ b/admin/survey/modules/mod_kakovost/R/gen.survey.str.R
@@ -0,0 +1,71 @@
+gen.survey.str <- function(colnames.dsa, questions.file, items.file){
+ #import questions file
+ questions <- fread(questions.file, skip=1, header=F,
+ select=c(2, 5, 6, 8, 9, 10),
+ col.names=c("question.id", "variable", "tip", "size", "visible", "params"))
+
+ #create variable list from survey data file
+ #remove "recnum" and "_text" fields
+ var.data <- colnames.dsa[sapply(colnames.dsa, function(x){substr(x, nchar(x)-4, nchar(x))})!="_text"]
+
+ #create variable list from questions file
+ var.questions <- questions$variable
+
+ #generate data.table from var.data list
+ survey.str <- data.table(variable = var.data)
+
+ setkey(questions, "variable")
+ setkey(survey.str, "variable")
+
+ #if all var.data in var.questions, do the simple merge and return file
+ if(all(var.data %in% var.questions)){
+ survey.str <- questions[survey.str,]
+ return(survey.str)
+ }else{ #if not, import items file and do additional merge with it...
+ #import items file
+ items <- fread(items.file, skip=1, header=F,
+ select=c(2, 3, 4),
+ col.names=c("question.id", "item.id", "variable"))
+
+ setkey(items, "question.id")
+ setkey(questions, "question.id")
+
+ #bind variables from questions and items (for the later, only take instances with no match in the questions file...)
+ survey.str.qi <- rbindlist(list(questions[var.questions %in% var.data,],
+ items[questions[!(var.questions %in% var.data), -"variable", with=F], nomatch=0L]),
+ fill=T)
+
+ #merge questions+items with survey data...
+ setkey(survey.str.qi, "variable")
+ setkey(survey.str, "variable")
+ survey.str <- survey.str.qi[survey.str,]
+
+ #if all var.data is now matched, return the survey.str
+ if(!(any(is.na(survey.str)))){
+ return(survey.str)
+ }else{ #if not, do additional merging...
+ #create index of all NA instaces from survey.str...
+ index <- apply(cbind(survey.str[, is.na(tip)],
+ (sapply(survey.str[, variable], function(x){
+ substr(x, 1, regexpr("\\_[^\\_]*$", x)-1)
+ }) %in% survey.str.qi$variable)
+ ),
+ 1, all)
+
+ #... using regex to find matches among unmatched instances from survey.str.qi
+ add <- merge(survey.str[index, list(variable, substr(variable, 1, regexpr("\\_[^\\_]*$", variable)-1))],
+ survey.str.qi[!(variable %in% survey.str$variable),],
+ by.x="V2", by.y="variable", all.y=F)[, list(question.id, item.id, tip, visible, size, params)]
+
+ #update survey.str with new values
+ survey.str[index, c("question.id", "item.id", "tip", "visible", "size", "params") := as.list(add)]
+
+ #if there is no NAs left, return survey.str, else return msg
+ if(!(any(is.na(survey.str$tip)))){
+ return(survey.str)
+ }else{
+ return(paste("No match found for: ", survey.str[is.na(tip), variable]))
+ }
+ }
+ }
+}
diff --git a/admin/survey/modules/mod_kakovost/R/gen.usability.matrix.R b/admin/survey/modules/mod_kakovost/R/gen.usability.matrix.R
new file mode 100644
index 000000000..2f0409a9e
--- /dev/null
+++ b/admin/survey/modules/mod_kakovost/R/gen.usability.matrix.R
@@ -0,0 +1,181 @@
+gen.usability.matrix <- function(dsa, survey.str){
+ #define special values to detect
+ #order of this values is important:
+ # in case of conflicts @ chk.t types of questions the order sets the priporty of which values to keep
+ special.v <- c(-1, -3, -5, -96, -97, -98, -99, -4, -2)
+
+ #define which variables belong to checkbox-like* questions
+ #(* i.e.: check for special values @ ANY variable per question/item ID)
+ # 2: normal checkbox
+ # 16: multicheckbox
+ # 17: ranking
+ chkbox.t <- c(2, 16, 17)
+
+ ##all other variables belong to normal** questions
+ #(** i.e.: check for special values @ each variable per question/item ID)
+ #if there are no normal questions, create 0 matrix, otherwise...
+ if(nrow(survey.str[!(tip %in% chkbox.t),])==0){
+ m.n <- matrix(0, nrow = nrow(dsa), ncol=length(special.v)+1)
+ }else{
+ #create list of all normal questions
+ c.n <- colnames(dsa)[which(colnames(dsa) %in% survey.str[!(tip %in% chkbox.t), variable])]
+
+ #...count all non-special values for each variable
+ #... + count each special value for each variable
+ m.n <- cbind(rowSums(sapply(dsa[, c.n, with=FALSE], function(x){!(x %in% special.v)})),
+ sapply(special.v, function(x){as.integer(rowSums(dsa[, c.n, with=FALSE]==x, na.rm=TRUE))}))
+ }
+
+ ##procedure for tip:2
+ #only run if there is an at least one tip:2 variable
+ if(survey.str[, any(tip==2)]){
+ #get list of all unique tip:2 question ids
+ q.2 <- unique(survey.str[tip==2, question.id])
+ #get list of all corresponding variables for each q.2 id
+ c.2 <- lapply(q.2, function(x){colnames(dsa)[which(colnames(dsa) %in% survey.str[question.id==x & tip==2, variable])]})
+
+ #(do this for each instance in c.2):
+ #for each set of variables:
+ # check if any variable contains at least one non-special value
+ # + (for each special value) check if any variable contains at least special value
+ m.2 <- lapply(c.2, function(x){
+ cbind(apply(dsa[, x, with=FALSE], 1, function(q){any(!(q %in% special.v))}),
+ sapply(special.v, function(y){
+ apply(dsa[, x, with=FALSE], 1, function(q){any(q==y)})
+ })
+ )
+ })
+
+ # (do this for each instance in c.2)
+ # if multiple special values per respondent exist, keep only the first one
+ m.2 <- lapply(m.2, function(x){
+ if(any(rowSums(x)>1)){
+ p <- x[rowSums(x)>1,]
+ for(i in 1:nrow(p)){
+ a <- p[i,]
+ f <- TRUE
+ for(j in 1:length(a)){
+ print(j)
+ if(a[j] & f){
+ f <- FALSE
+ }else if(a[j] & !f){
+ a[j] <- FALSE
+ }
+ }
+ p[i,] <- a
+ }
+ x[rowSums(x)>1,] <- p
+ }else{x}
+ })
+
+
+ #add to m.n
+ m.n <- m.n + Reduce('+', m.2)
+ }
+
+ ##procedure for tip:16
+ #only run if there is an at least one tip:16 variable
+ if(survey.str[, any(tip==16)]){
+ #get list of all unique tip:16 item ids
+ q.16 <- unique(survey.str[tip==16, item.id])
+
+ #get list of all corresponding variables for each q.16 id
+ c.16 <- lapply(q.16, function(x){colnames(dsa)[which(colnames(dsa) %in% survey.str[item.id==x & tip==16, variable])]})
+ #(do this for each special value):
+ #for each set of variables, check if any variable contains at least one special value
+ # m.16 <- sapply(special.v, function(x){
+ # rowSums(sapply(c.16, function(y){
+ # apply(dsa[, y, with=FALSE], 1, function(q){any(q==x)})
+ # }))
+ # })
+
+ #(do this for each instance in c.16):
+ #for each set of variables:
+ # check if any variable contains at least one non-special value
+ # + (for each special value) check if any variable contains at least special value
+ m.16 <- lapply(c.16, function(x){
+ cbind(apply(dsa[, x, with=FALSE], 1, function(q){any(!(q %in% special.v))}),
+ sapply(special.v, function(y){
+ apply(dsa[, x, with=FALSE], 1, function(q){any(q==y)})
+ })
+ )
+ })
+
+ # (do this for each instance in c.16)
+ # if multiple special values per respondent exist, keep only the first one
+ m.16 <- lapply(m.16, function(x){
+ if(any(rowSums(x)>1)){
+ p <- x[rowSums(x)>1,]
+ for(i in 1:nrow(p)){
+ a <- p[i,]
+ f <- TRUE
+ for(j in 1:length(a)){
+ print(j)
+ if(a[j] & f){
+ f <- FALSE
+ }else if(a[j] & !f){
+ a[j] <- FALSE
+ }
+ }
+ p[i,] <- a
+ }
+ x[rowSums(x)>1,] <- p
+ }else{x}
+ })
+
+ m.n <- m.n + Reduce('+', m.16)
+ }
+
+ ##procedure for tip:17
+ #only run if there is an at least one tip:17 variable
+ if(survey.str[, any(tip==17)]){
+ #get list of all unique tip:17 question ids
+ q.17 <- unique(survey.str[tip==17, question.id])
+
+ #get list of all corresponding variables for each q.17 id
+ c.17 <- lapply(q.17, function(x){colnames(dsa)[which(colnames(dsa) %in% survey.str[question.id==x & tip==17, variable])]})
+
+ #similiar procedure as for tip:2 and tip:16....
+ m.17 <- lapply(c.17, function(x){
+ cbind(apply(dsa[, x, with=FALSE], 1, function(q){any(!(q %in% special.v))}),
+ sapply(special.v, function(y){
+ apply(dsa[, x, with=FALSE], 1, function(q){any(q==y)})
+ })
+ )
+ })
+
+ #... the only difference is that we are checking for all rowsums > 0, not > 1
+ m.17 <- lapply(m.17, function(x){
+ if(any(rowSums(x)>1)){
+ p <- x[rowSums(x)>0,]
+ for(i in 1:nrow(p)){
+ a <- p[i,]
+ f <- TRUE
+ for(j in 1:length(a)){
+ if(a[j] & f){
+ f <- FALSE
+ }else if(a[j] & !f){
+ a[j] <- FALSE
+ }
+ }
+ p[i,] <- a
+ }
+ x[rowSums(x)>0,] <- p
+ }else{x}
+ })
+
+ m.n <- m.n + Reduce('+', m.17)
+ }
+
+ m.n <- cbind(m.n, rowSums(m.n))
+
+ if(all(m.n[, ncol(m.n)][1]==m.n[, ncol(m.n)])){
+ m.n <- as.data.table(m.n)
+ m.n[, recnum:=dsa$recnum]
+ setnames(m.n, colnames(m.n)[-length(colnames(m.n))], c("va", "v1", "v3", "v5", "v96", "v97", "v98", "v99", "v4", "v2", "allqs"))
+ setcolorder(m.n, c("recnum", colnames(m.n)[-length(colnames(m.n))]))
+ return(m.n)
+ }else{
+ print("not all rowsums equal!")
+ }
+}
\ No newline at end of file
diff --git a/admin/survey/modules/mod_kakovost/R/kakovost.R b/admin/survey/modules/mod_kakovost/R/kakovost.R
new file mode 100644
index 000000000..cd4f932c9
--- /dev/null
+++ b/admin/survey/modules/mod_kakovost/R/kakovost.R
@@ -0,0 +1,47 @@
+#uporabnost <- function(params){
+
+#setwd("path od mape, kjer se nahaja ta glavna datoteka, npr. C:/mapa")
+
+# Import data.table & functions ------------------------------------------------------
+require("data.table")
+source("modules/mod_uporabnost/R/gen.survey.str.R")
+source("modules/mod_uporabnost/R/gen.usability.matrix.R")
+source("modules/mod_uporabnost/R/calc.usability.R")
+
+# Input data ------------------------------------------------------
+params <- commandArgs(trailingOnly = TRUE)
+ID <- params[1]
+
+#get & import dsa: the main survey data file (containing only recnum, status, lurker and all variables relating to answers to survey questions)
+dsa.file <- paste0("modules/mod_uporabnost/temp/data_", ID, ".csv")
+dsa <- fread(dsa.file, header=T, drop=c(1:5, 7, 8))
+
+#get question and item files
+questions.file <- paste0("modules/mod_uporabnost/temp/questions_", ID, ".csv")
+items.file <- paste0("modules/mod_uporabnost/temp/items_", ID, ".csv")
+
+# Main & Output ------------------------------------------------------
+#generate survey structure
+survey.str <- gen.survey.str(colnames(dsa)[-(1)], questions.file, items.file)
+
+if(any(!(is.data.table(survey.str)), nrow(survey.str)==0)){
+ write(survey.str, paste0("modules/mod_uporabnost/results/usability_", ID, ".csv"))
+}else{
+ #delete invisible variables and types: 5, 9, 22, 23, 25
+ survey.str <- survey.str[visible==1 & !(tip %in% c(5, 9, 22, 23, 25)),]
+
+ #generate usability matrix
+ m.all <- gen.usability.matrix(dsa, survey.str)
+
+ if(any(!(is.data.table(m.all)), nrow(m.all)==0)){
+ write(m.all, paste0("modules/mod_uporabnost/results/usability_", ID, ".csv"))
+ }else{
+ #calculate usability indexes
+ m.final <- calc.usability(m.all, 3)
+
+ #write to results
+ write.csv2(m.final, paste0("modules/mod_uporabnost/results/usability_", ID, ".csv"), row.names = FALSE)
+ }
+}
+
+#}
\ No newline at end of file
diff --git a/admin/survey/modules/mod_kakovost/class.SurveyKakovost.php b/admin/survey/modules/mod_kakovost/class.SurveyKakovost.php
new file mode 100644
index 000000000..8b4620d37
--- /dev/null
+++ b/admin/survey/modules/mod_kakovost/class.SurveyKakovost.php
@@ -0,0 +1,906 @@
+ul evealvacija
+ if ((int)$anketa > 0){
+
+ $this->anketa = $anketa;
+
+ # polovimo vrsto tabel (aktivne / neaktivne)
+ SurveyInfo :: getInstance()->SurveyInit($this->anketa);
+ if (SurveyInfo::getInstance()->getSurveyColumn('db_table') == 1) {
+ $this->db_table = '_active';
+ }
+
+ SurveyAnalysisHelper::getInstance()->Init($this->anketa);
+
+ $this->_CURRENT_STATUS_FILTER = STATUS_FIELD.' ~ /6|5/';
+
+ Common::deletePreviewData($this->anketa);
+
+ // Poskrbimo za datoteko s podatki
+ $SDF = SurveyDataFile::get_instance();
+ $SDF->init($this->anketa);
+
+ if($generateDataFile)
+ $SDF->prepareFiles();
+
+ $this->headFileName = $SDF->getHeaderFileName();
+ $this->dataFileName = $SDF->getDataFileName();
+ $this->dataFileStatus = $SDF->getStatus();
+
+ if ( $this->dataFileStatus == FILE_STATUS_NO_DATA || $this->dataFileStatus == FILE_STATUS_SRV_DELETED) {
+ Common::noDataAlert();
+ exit();
+ }
+
+ # Inicializiramo in polovimo nastavitve missing profila
+ SurveyStatusProfiles::Init($this->anketa);
+ SurveyUserSetting::getInstance()->Init($this->anketa, $global_user_id);
+ SurveyConditionProfiles :: Init($this->anketa, $global_user_id);
+ SurveyTimeProfiles :: Init($this->anketa, $global_user_id);
+ SurveyVariablesProfiles :: Init($this->anketa, $global_user_id);
+ SurveyDataSettingProfiles :: Init($this->anketa);
+
+
+ // preberemo nastavitve iz baze (prej v sessionu)
+ SurveyUserSession::Init($this->anketa);
+ $this->sessionData = SurveyUserSession::getData();
+
+ if(isset($_SESSION['sid_'.$this->anketa]['usabilityIcons_settings']))
+ $this->displayEditIconsSettings = ($_SESSION['sid_'.$this->anketa]['usabilityIcons_settings']);
+
+ if (file_exists($this->headFileName) && $this->headFileName !== null && $this->headFileName != ''){
+ $this->_HEADERS = unserialize(file_get_contents($this->headFileName));
+ }
+
+ # nastavimo vse filtre
+ $this->setUpFilter();
+
+ # nastavimo filtre uporabnika
+ $this->setUserFilters();
+
+ # nastavimo sortiranje
+ if(isset($_GET['sortField']))
+ $this->sortField = $_GET['sortField'];
+ if(isset($_GET['sortType']))
+ $this->sortType = $_GET['sortType'];
+ }
+ }
+
+
+ // Prikažemo stran
+ public function displayKakovost(){
+ global $lang;
+
+ // Prikaz nastavitev
+ $this->displayKakovostSettings();
+
+ // Izvedemo pripravo datoteke
+ $this->prepareData();
+
+ // Napolnimo podatke v array
+ $this->fillData();
+
+ // Izrisemo tabelo
+ $this->displayKakovostTable();
+
+ // Na koncu pobrisemo zacasne datoteke
+ //$this->deleteTemp();
+ }
+
+ // Prikazemo tabelo
+ private function displayKakovostTable(){
+ global $site_path;
+ global $lang;
+ global $admin_type;
+
+ echo '
';
+
+ echo '
';
+
+
+ // NASLOVNE VRSTICE
+ if($this->sortType == 1){
+ $sortType = 0;
+ $arrow = ' ';
+ }
+ else{
+ $sortType = 1;
+ $arrow = ' ';
+ }
+
+ if($admin_type == '0' || $admin_type == '1')
+ echo 'User ID ';
+
+ echo 'Recnum'./*$lang['recnum'].*/($this->sortField=='recnum' ? $arrow : '').' ';
+ echo ''.$lang['srv_usableResp_qcount'].' ';
+
+ echo ''.$lang['srv_usableResp_exposed'].' ';
+
+ echo ''.$lang['srv_usableResp_breakoff'].($this->sortField=='breakoff' ? $arrow : '').' ';
+
+ echo ''.$lang['srv_usableResp_usability'].' ';
+
+ // ali odstranimo vse stolpce s podrobnimi vrednostmi (-1, -2...)
+ if ($this->show_details == true) {
+ foreach ($this->_missings AS $value => $text){
+ $cnt_miss++;
+ echo "{$value} (".$lang['srv_usableResp_'.$text].") ";
+ }
+ foreach ($this->_unsets AS $value => $text){
+ $cnt_undefined++;
+ echo "{$value} (".$lang['srv_usableResp_'.$text].") ";
+ }
+ }
+
+ // ali prikazemo podrobne izracune
+ if ($this->show_calculations == true) {
+ echo 'UNL ';
+ echo 'UML ';
+ echo 'UCL ';
+ echo 'UIL ';
+ echo 'UAQ ';
+ }
+
+ echo '';
+
+ echo '';
+ echo ''.$lang['srv_anl_valid'].($this->sortField=='valid' ? $arrow : '').' ';
+ echo ''.$lang['srv_usableResp_nonsubstantive'].($this->sortField=='nonsubstantive' ? $arrow : '').' ';
+ echo ''.$lang['srv_usableResp_nonresponse'].($this->sortField=='nonresponse' ? $arrow : '').' ';
+ echo ''.$lang['srv_anl_suma1'].' ';
+
+ echo '%'.($this->sortField=='usable' ? $arrow : '').' ';
+ echo 'Status'.($this->sortField=='status' ? $arrow : '').' ';
+ echo ' ';
+
+
+ // VRSTICE S PODATKI
+ foreach($this->usability['data'] as $user){
+
+ // Prva vrstica z vrednostmi
+ echo '';
+
+ if($admin_type == '0' || $admin_type == '1'){
+
+ $sql = sisplet_query("SELECT id FROM srv_user WHERE ank_id='".$this->anketa."' AND recnum='".$user['recnum']."'");
+ $row = mysqli_fetch_array($sql);
+
+ echo ''.$row['id'].' ';
+ }
+
+
+ echo ''.$user['recnum'].' ';
+
+ // Vsi
+ echo ''.$user['all'].' ';
+
+ // Ustrezni
+ echo ''.$user['valid'].' ';
+
+ // Non-substantive
+ echo ''.$user['nonsubstantive'].' ';
+
+ // Non-response
+ echo ''.$user['nonresponse'].' ';
+
+ // Skupaj
+ echo ''.($user['valid']+$user['nonsubstantive']+$user['nonresponse']+$user['breakoff']).' ';
+
+ // Breakoffs
+ echo ''.$user['breakoff'].' ';
+
+ // Uporabni
+ echo ''.$user['usable'].' ';
+ echo ''.$user['status'].' ';
+
+ // ali odstranimo vse stolpce s podrobnimi vrednostmi (-1, -2...)
+ if ($this->show_details == true) {
+ echo ''.$user['-1'].' ';
+ echo ''.$user['-2'].' ';
+ echo ''.$user['-3'].' ';
+ echo ''.$user['-4'].' ';
+ echo ''.$user['-5'].' ';
+ echo ''.$user['-97'].' ';
+ echo ''.$user['-98'].' ';
+ echo ''.$user['-99'].' ';
+ }
+
+ // ali prikazemo podrobne izracune
+ if ($this->show_calculations == true) {
+ echo ''.$user['UNL'].' ';
+ echo ''.$user['UML'].' ';
+ echo ''.$user['UCL'].' ';
+ echo ''.$user['UIL'].' ';
+ echo ''.$user['UAQ'].' ';
+ }
+
+ echo ' ';
+
+
+ // Druga vrstica s procenti
+ echo '';
+ }
+
+
+ echo '
';
+
+ if($this->usability['all'] > 0){
+ echo '
';
+
+ //echo ''.$lang['srv_usableResp_usability'].': ';
+ echo ''.$lang['srv_usableResp_usable_unit'].' - Status 2 ('.$this->top_usable_limit.'%-100%): '.$this->usability['usable'].' ('.common::formatNumber($this->usability['usable']/$this->usability['all']*100, 0, null, '%').') ';
+ echo ''.$lang['srv_usableResp_partusable_unit'].' - Status 1 ('.$this->bottom_usable_limit.'%-'.$this->top_usable_limit.'%): '.$this->usability['partusable'].' ('.common::formatNumber($this->usability['partusable']/$this->usability['all']*100, 0, null, '%').') ';
+ echo ''.$lang['srv_usableResp_unusable_unit'].' - Status 0 (0%-'.$this->bottom_usable_limit.'%): '.$this->usability['unusable'].' ('.common::formatNumber($this->usability['unusable']/$this->usability['all']*100, 0, null, '%').') ';
+
+ echo '
';
+ }
+
+ echo '
';
+ }
+
+ private function displayKakovostSettings(){
+ global $lang;
+
+ // Div z nastavitvami ki se razpre
+ echo '
displayEditIconsSettings ? '' : ' style="display:none;"').'>';
+ echo '
'.$lang['srv_data_settings_checkboxes2'].'
';
+
+
+ echo '
';
+
+
+ echo '
';
+ }
+
+
+ // Zgeneriramo pdf analizo
+ private function prepareData(){
+ global $site_path;
+ global $lang;
+ global $admin_type;
+
+ // Zgeneriramo zacasne csv datoteke
+ $this->prepareDataCSV();
+ $this->prepareQuestionCSV();
+ $this->prepareItemCSV();
+
+ // Poklicemo R skripto in zgeneriramo pdf
+ $script = $site_path . SCRIPT_FOLDER . '/kakovost.R';
+ $out = exec('Rscript '.$script.' '.$this->anketa.' 2>&1', $output, $return_var);
+
+ // Testiranje - izpis errorjev
+ if($admin_type == 0){
+ echo '
';
+ echo 'Rscript '.$script;
+ //echo ' '.$out.' ';
+ var_dump($output);
+ echo '
';
+ }
+ }
+
+ // Napolnimo podatke v array
+ private function fillData(){
+ global $site_path;
+ global $lang;
+
+ $result_folder = $site_path . RESULTS_FOLDER.'/';
+
+ if (($handle = fopen($result_folder."usability_".$this->anketa.".csv", "r")) !== FALSE) {
+
+ // Loop po vrsticah
+ $cnt = 0;
+ while (($row = fgetcsv($handle, 1000, ';')) !== FALSE) {
+
+ if($cnt == 0)
+ $row = fgetcsv($handle, 1000, ';');
+
+ // Preberemo se drugo vrstico, ker so v parih
+ $row2 = fgetcsv($handle, 1000, ';');
+
+
+ // Obarvamo vrstico glede na status (belo, rumeno, rdece)
+ if($row2[7] < (int)$this->bottom_usable_limit){
+ $css_usable = 'unusable';
+ $status = 0;
+ $this->usability['unusable']++;
+ }
+ elseif($row2[7] >= (int)$this->bottom_usable_limit && $row2[7] < (int)$this->top_usable_limit){
+ $css_usable = 'partusable';
+ $status = 1;
+ $this->usability['partusable']++;
+ }
+ else{
+ $css_usable = 'usable';
+ $status = 2;
+ $this->usability['usable']++;
+ }
+ $this->usability['all']++;
+
+
+ // Nastavimo izracunane podatke za respondenta
+ $this->usability['data'][$cnt]['recnum'] = $row[0];
+ //$this->usability['data'][$cnt]['usr_id'] = $row['usr_id'];
+ $this->usability['data'][$cnt]['css'] = $css_usable;
+ $this->usability['data'][$cnt]['status'] = $status;
+
+ $this->usability['data'][$cnt]['all'] = $row[1];
+
+ $this->usability['data'][$cnt]['valid'] = $row[2];
+ $this->usability['data'][$cnt]['nonsubstantive'] = $row[3];
+ $this->usability['data'][$cnt]['nonresponse'] = $row[4];
+
+ $this->usability['data'][$cnt]['validPercent'] = $row2[2];
+ $this->usability['data'][$cnt]['nonsubstantivePercent'] = $row2[3];
+ $this->usability['data'][$cnt]['nonresponsePercent'] = $row2[4];
+
+ $this->usability['data'][$cnt]['breakoff'] = $row[6];
+ $this->usability['data'][$cnt]['breakoffPercent'] = $row2[6];
+
+ $this->usability['data'][$cnt]['usable'] = $row[7];
+ $this->usability['data'][$cnt]['usablePercent'] = $row2[7];
+
+ $this->usability['data'][$cnt]['UNL'] = $row2[17];
+ $this->usability['data'][$cnt]['UML'] = $row2[18];
+ $this->usability['data'][$cnt]['UCL'] = $row2[19];
+ $this->usability['data'][$cnt]['UIL'] = $row2[20];
+ $this->usability['data'][$cnt]['UAQ'] = $row2[21];
+
+ $this->usability['data'][$cnt]['-1'] = $row[9];
+ $this->usability['data'][$cnt]['-1_percent'] = $row2[9];
+ $this->usability['data'][$cnt]['-2'] = $row[10];
+ $this->usability['data'][$cnt]['-2_percent'] = $row2[10];
+ $this->usability['data'][$cnt]['-3'] = $row[11];
+ $this->usability['data'][$cnt]['-3_percent'] = $row2[11];
+ $this->usability['data'][$cnt]['-4'] = $row[12];
+ $this->usability['data'][$cnt]['-4_percent'] = $row2[12];
+ $this->usability['data'][$cnt]['-5'] = $row[13];
+ $this->usability['data'][$cnt]['-5_percent'] = $row2[13];
+ $this->usability['data'][$cnt]['-97'] = $row[14];
+ $this->usability['data'][$cnt]['-97_percent'] = $row2[14];
+ $this->usability['data'][$cnt]['-98'] = $row[15];
+ $this->usability['data'][$cnt]['-98_percent'] = $row2[15];
+ $this->usability['data'][$cnt]['-99'] = $row[16];
+ $this->usability['data'][$cnt]['-99_percent'] = $row2[16];
+
+ $cnt++;
+ }
+ }
+
+ // Sortiramo podatke
+ foreach ($this->usability['data'] as $key => $row) {
+ $mid[$key] = $row[$this->sortField];
+ }
+ if($this->sortType == 0)
+ array_multisort($mid, SORT_ASC, $this->usability['data']);
+ else
+ array_multisort($mid, SORT_DESC, $this->usability['data']);
+
+
+ # ali odstranimo stolpce kateri imajo same 0
+ /*if ($this->show_with_zero == false) {
+ # odstranimo missinge brez vrednosti
+ foreach ($this->_missings AS $_key => $_missing) {
+ if (!isset($this->cols_with_value[$_key]) || $this->cols_with_value[$_key] == false) {
+ unset($this->_missings[$_key]);
+ }
+ }
+ # odstranimo neveljavne brez vrednosti
+ foreach ($this->_unsets AS $_key => $_unset) {
+ if (!isset($this->cols_with_value[$_key]) || $this->cols_with_value[$_key] == false) {
+ unset($this->_unsets[$_key]);
+ }
+ }
+ }*/
+ }
+
+
+ // Pripravi csv s podatki
+ private function prepareDataCSV(){
+ global $site_path;
+ global $lang;
+ global $admin_type;
+
+ $temp_folder = $site_path . TEMP_FOLDER.'/';
+
+ $SDF = SurveyDataFile::get_instance();
+ $SDF->init($this->anketa);
+ $_headFileName = $SDF->getHeaderFileName();
+ $_dataFileName = $SDF->getDataFileName();
+ $_fileStatus = $SDF->getStatus();
+
+ if ($_headFileName != null && $_headFileName != '') {
+ $_HEADERS = unserialize(file_get_contents($_headFileName));
+ }
+ else {
+ echo 'Error! Empty file name!';
+ }
+
+ // Zaenkrat dopuscamo samo status 6 in brez lurkerjev
+ if($admin_type == '0')
+ $status_filter = '('.STATUS_FIELD.' ~ /6|5/)&&('.LURKER_FIELD.'==0)';
+ else
+ $status_filter = '('.STATUS_FIELD.'==6)&&('.LURKER_FIELD.'==0)';
+
+ //$start_sequence = $_HEADERS['_settings']['dataSequence'];
+ $start_sequence = 2;
+ $end_sequence = $_HEADERS['_settings']['metaSequence'] + $_HEADERS['meta']['cnt_all'];
+
+ $field_delimit = ';';
+
+ // Filtriramo podatke po statusu in jih zapisemo v temp folder
+ if (IS_WINDOWS) {
+ //$command = 'awk -F"|" "BEGIN {{OFS=\",\"} {ORS=\"\n\"}} '.$status_filter.' { print $0}" '.$_dataFileName.' >> '.$temp_folder.'/temp_data_'.$this->anketa.'.dat';
+ $out = shell_exec('awk -F"|" "BEGIN {{OFS=\",\"} {ORS=\"\n\"}} '.$status_filter.'" '.$_dataFileName.' | cut -d "|" -f '.$start_sequence.'-'.$end_sequence.' >> '.$temp_folder.'/temp_data_'.$this->anketa.'.dat');
+ }
+ else {
+ //$command = 'awk -F"|" \'BEGIN {{OFS=","} {ORS="\n"}} '.$status_filter.' { print $0; }\' '.$_dataFileName.' >> '.$temp_folder.'/temp_data_'.$this->anketa.'.dat';
+ $out = shell_exec('awk -F"|" \'BEGIN {{OFS=","} {ORS="\n"}} '.$status_filter.'\' '.$_dataFileName.' | cut -d \'|\' -f '.$start_sequence.'-'.$end_sequence.' >> '.$temp_folder.'/temp_data_'.$this->anketa.'.dat');
+ }
+
+
+ // Ustvarimo koncni CSV
+ if ($fd = fopen($temp_folder.'/temp_data_'.$this->anketa.'.dat', "r")) {
+
+ $fd2 = fopen($temp_folder.'/data_'.$this->anketa.'.csv', "w");
+
+ # naredimo header row
+ foreach ($_HEADERS AS $spid => $spremenljivka) {
+ if (isset($spremenljivka['grids']) && count($spremenljivka['grids']) > 0) {
+ foreach ($spremenljivka['grids'] AS $gid => $grid) {
+ foreach ($grid['variables'] AS $vid => $variable ){
+ if (!($variable['variable'] == 'uid' && $variable['naslov'] == 'User ID')){
+ $output1 .= strip_tags($variable['variable']).$field_delimit;
+ //$output2 .= '"'.strip_tags($variable['naslov']).'"'.$field_delimit;
+ }
+ }
+ }
+ }
+ }
+
+ // Pobrisemo zadnji ; ce obstaja
+ $output1 = rtrim($output1, ";");
+
+ // Zapisemo header row
+ fwrite($fd2, $output1."\r\n");
+ //fwrite($fd2, $output2."\r\n");
+
+
+ while ($line = fgets($fd)) {
+
+ //fwrite($fd2, '="');
+ //$line = str_replace(array("\r","\n","|"), array("","",'";="'), $line);
+ $line = '"' . str_replace(array("\r","\n","\"","|"), array("","","",'";"'), $line) . '"';
+
+ // Spremenimo encoding v windows-1250
+ $line = iconv("UTF-8","Windows-1250//TRANSLIT", $line);
+ //$line = str_replace(array("č","š","ž","Č","Š","Ž"), array("\v{c}","\v{s}","\v{z}","\v{C}","\v{S}","\v{Z}"), $line);
+
+ fwrite($fd2, $line);
+ //fwrite($fd2, '"');
+ fwrite($fd2, "\r\n");
+ }
+
+ fclose($fd2);
+ }
+ fclose($fd);
+
+
+ // Na koncu pobrisemo temp datoteke
+ if (file_exists($temp_folder.'/temp_data_'.$this->anketa.'.dat')) {
+ unlink($temp_folder.'/temp_data_'.$this->anketa.'.dat');
+ }
+ }
+
+ // Pripravi csv z vprasanji
+ private function prepareQuestionCSV(){
+ global $site_path;
+ global $lang;
+ global $admin_type;
+
+ define('delimiter', ';');
+
+ $temp_folder = $site_path . TEMP_FOLDER.'/';
+
+ $fd = fopen($temp_folder.'/questions_'.$this->anketa.'.csv', "w");
+
+
+ // Prva vrstica
+ $output = 'ID SURVEY'.delimiter;
+ $output .= 'ID QUESTION'.delimiter;
+ $output .= 'ID PAGE'.delimiter;
+ $output .= 'QUESTION NUMBER'.delimiter;
+
+ $output .= 'variable'.delimiter;
+ $output .= 'tip'.delimiter;
+ $output .= 'vrstni_red'.delimiter;
+ $output .= 'size'.delimiter;
+ $output .= 'visible'.delimiter;
+ $output .= 'params'.delimiter;
+
+ $output .= 'char_count'.delimiter;
+
+ fwrite($fd, $output."\r\n");
+
+
+ // Vrstice s podatki
+ $sql = sisplet_query("SELECT s.id, s.gru_id, s.variable, s.tip, s.vrstni_red, s.size, s.visible, s.params, s.naslov
+ FROM srv_spremenljivka s, srv_grupa g
+ WHERE s.gru_id=g.id AND g.ank_id='".$this->anketa."'
+ ORDER BY g.vrstni_red, s.vrstni_red");
+ if (!$sql) echo mysqli_error($GLOBALS['connect_db']);
+ if (mysqli_num_rows($sql) > 0) {
+
+ $i = 0;
+
+ while ($row = mysqli_fetch_array($sql)) {
+
+ $i++;
+
+ $line = '';
+
+ $line .= $this->anketa.delimiter;
+ $line .= $row['id'].delimiter;
+ $line .= $row['gru_id'].delimiter;
+ $line .= $i.delimiter;
+
+ $line .= $row['variable'].delimiter;
+ $line .= $row['tip'].delimiter;
+ $line .= $row['vrstni_red'].delimiter;
+ $line .= $row['size'].delimiter;
+ $line .= $row['visible'].delimiter;
+
+ $line .= str_replace("\n", '', str_replace(delimiter, '', $row['params']) ).delimiter;
+
+ $naslov_clean = iconv("UTF-8","Windows-1250//TRANSLIT", $row['naslov']);
+ $naslov_clean = trim(strip_tags($naslov_clean));
+ $line .= strlen($naslov_clean).delimiter;
+
+ fwrite($fd, $line."\r\n");
+ }
+ }
+
+
+ fclose($fd);
+ }
+
+ // Pripravi csv z itemi
+ private function prepareItemCSV(){
+ global $site_path;
+ global $lang;
+ global $admin_type;
+
+ define('delimiter', ';');
+
+ $temp_folder = $site_path . TEMP_FOLDER.'/';
+
+ $fd = fopen($temp_folder.'/items_'.$this->anketa.'.csv', "w");
+
+
+ // Prva vrstica
+ $output = '';
+ $output .= 'ID SURVEY'.delimiter;
+ $output .= 'ID QUESTION'.delimiter;
+ $output .= 'ID ITEM'.delimiter;
+
+ $output .= 'variable'.delimiter;
+ $output .= 'variable_custom'.delimiter;
+ $output .= 'vrstni_red'.delimiter;
+
+ $output .= 'char_count'.delimiter;
+
+ fwrite($fd, $output."\r\n");
+
+ // Vrstice s podatki
+ $sql = sisplet_query("SELECT v.id, v.spr_id, v.variable, v.variable_custom, v.vrstni_red, v.naslov
+ FROM srv_vrednost v, srv_spremenljivka s, srv_grupa g
+ WHERE v.spr_id=s.id AND s.gru_id=g.id AND g.ank_id='".$this->anketa."'
+ ORDER BY g.vrstni_red, s.vrstni_red");
+ if (!$sql) echo mysqli_error($GLOBALS['connect_db']);
+ if (mysqli_num_rows($sql) > 0) {
+
+ while ($row = mysqli_fetch_array($sql)) {
+
+ $line = '';
+
+ $line .= $this->anketa.delimiter;
+ $line .= $row['spr_id'].delimiter;
+ $line .= $row['id'].delimiter;
+
+ $line .= str_replace("\n", '', str_replace(delimiter, '', $row['variable']) ).delimiter;
+ $line .= $row['variable_custom'].delimiter;
+ $line .= $row['vrstni_red'].delimiter;
+
+ $naslov_clean = iconv("UTF-8","Windows-1250//TRANSLIT", $row['naslov']);
+ $naslov_clean = trim(strip_tags($naslov_clean));
+ $line .= strlen($naslov_clean).delimiter;
+
+ fwrite($fd, $line."\r\n");
+ }
+ }
+
+
+ fclose($fd);
+ }
+
+
+ // Pobrisemo zacasne datoteke
+ private function deleteTemp(){
+ global $site_path;
+
+ $temp_folder = $site_path . TEMP_FOLDER.'/';
+ $result_folder = $site_path . RESULTS_FOLDER.'/';
+
+ // Pobrisemo zacasno CSV datoteko s podatki
+ if (file_exists($temp_folder.'/data_'.$this->anketa.'.csv')) {
+ unlink($temp_folder.'/data_'.$this->anketa.'.csv');
+ }
+
+ // Pobrisemo zacasno CSV datoteko z vprasanji
+ if (file_exists($temp_folder.'/questions_'.$this->anketa.'.csv')) {
+ unlink($temp_folder.'/questions_'.$this->anketa.'.csv');
+ }
+
+ // Pobrisemo zacasno CSV datoteko z itemi
+ if (file_exists($temp_folder.'/items_'.$this->anketa.'.csv')) {
+ unlink($temp_folder.'/items_'.$this->anketa.'.csv');
+ }
+
+ // Pobrisemo CSV datoteko z rezultati
+ if (file_exists($result_folder.'/usability_'.$this->anketa.'.csv')) {
+ unlink($result_folder.'/usability_'.$this->anketa.'.csv');
+ }
+ }
+
+
+ private function parentIf($anketa, $element) {
+ $sql = sisplet_query("SELECT tip FROM srv_if WHERE id = '$element'");
+ $row = mysqli_fetch_array($sql);
+
+ if ($row['tip'] == 0) return $element;
+
+ $sql1 = sisplet_query("SELECT parent FROM srv_branching WHERE ank_id='$anketa' AND element_if = '$element'");
+ $row1 = mysqli_fetch_array($sql1);
+
+ return parentIf($anketa, $row1['parent']);
+ }
+
+
+ /** Funkcija ki nastavi vse filtre
+ *
+ */
+ private function setUpFilter(){
+ /*if ($this->dataFileStatus == FILE_STATUS_NO_DATA
+ || $this->dataFileStatus == FILE_STATUS_NO_FILE
+ || $this->dataFileStatus == FILE_STATUS_SRV_DELETED)
+ {
+ return false;
+ }*/
+
+ # poiščemo kater profil uporablja uporabnik
+ $_currentMissingProfile = SurveyUserSetting :: getInstance()->getSettings('default_missing_profile');
+ $this->currentMissingProfile = (isset($_currentMissingProfile) ? $_currentMissingProfile : 1);
+
+ # filtriranje po statusih
+ $this->_CURRENT_STATUS_FILTER = SurveyStatusProfiles :: getStatusAsAWKString();
+
+ # filtriranje po časih
+ $_time_profile_awk = SurveyTimeProfiles :: getFilterForAWK($this->_HEADERS['unx_ins_date']['grids']['0']['variables']['0']['sequence']);
+
+ # dodamo še ife
+
+ SurveyConditionProfiles :: setHeader($this->_HEADERS);
+ $_condition_profile_AWK = SurveyConditionProfiles:: getAwkConditionString();
+
+ if (($_condition_profile_AWK != "" && $_condition_profile_AWK != null )
+ || ($_time_profile_awk != "" && $_time_profile_awk != null))
+ {
+ $this->_CURRENT_STATUS_FILTER = '('.$this->_CURRENT_STATUS_FILTER;
+ if ($_condition_profile_AWK != "" && $_condition_profile_AWK != null )
+ {
+ $this->_CURRENT_STATUS_FILTER .= ' && '.$_condition_profile_AWK;
+ }
+ if ($_time_profile_awk != "" && $_time_profile_awk != null)
+ {
+ $this->_CURRENT_STATUS_FILTER .= ' && '.$_time_profile_awk;
+ }
+ $this->_CURRENT_STATUS_FILTER .= ')';
+ }
+ $status_filter = $this->_CURRENT_STATUS_FILTER;
+
+ if ($this->dataFileStatus == FILE_STATUS_OK || $this->dataFileStatus == FILE_STATUS_OLD)
+ {
+ if (isset($this->_HEADERS['testdata']))
+ {
+ $this->_HAS_TEST_DATA = true;
+ }
+ }
+
+ $smv = new SurveyMissingValues($this->anketa);
+ $smv -> Init();
+
+ $smv_array = $smv->GetSurveyMissingValues($this->anketa);
+ if (!empty($smv_array[1])){
+ foreach ($smv_array[1] AS $_survey_missings)
+ {
+ $this->_missings[$_survey_missings['value']] = $_survey_missings['text'];
+
+ }
+ }
+ if (!empty($smv_array[2])){
+ foreach ($smv_array[2] AS $_survey_unsets)
+ {
+ $this->_unsets[$_survey_unsets['value']] = $_survey_unsets['text'];
+ }
+ }
+ }
+
+ private function setUserFilters(){
+ # Nastavimo filtre variabel
+ $dvp = SurveyUserSetting :: getInstance()->getSettings('default_variable_profile');
+ $_currentVariableProfile = SurveyVariablesProfiles :: checkDefaultProfile($dvp);
+ if ($dvp != $_currentVariableProfile) {
+ SurveyUserSetting :: getInstance()->saveSettings('default_variable_profile', $_currentVariableProfile);
+ }
+ $this->_PROFILE_ID_VARIABLE = $_currentVariableProfile;
+
+ # ali prikazujemo tudi stolpce z 0 vrednostmi
+ if (isset($this->sessionData['usable_resp']['show_with_zero'])) {
+ $this->show_with_zero = $this->sessionData['usable_resp']['show_with_zero'];
+ }
+
+ # ali prikazujemo tudi stolpce z 0 vrednostmi
+ if (isset($this->sessionData['usable_resp']['show_details'])) {
+ $this->show_details = $this->sessionData['usable_resp']['show_details'];
+ }
+
+ # ali prikazujemo tudi stolpce z izracuni
+ if (isset($this->sessionData['usable_resp']['show_calculations'])) {
+ $this->show_calculations = $this->sessionData['usable_resp']['show_calculations'];
+ }
+
+ # ali prikazujemo vrstice "Drugo"
+ $this->show_with_other = true;
+ if (isset($this->sessionData['usable_resp']['show_with_other'])) {
+ $this->show_with_other = $this->sessionData['usable_resp']['show_with_other'];
+ }
+
+ # ali prikazujemo vrstice tipa "besedilo"
+ $this->show_with_text = true;
+ if (isset($this->sessionData['usable_resp']['show_with_text'])) {
+ $this->show_with_text = $this->sessionData['usable_resp']['show_with_text'];
+ }
+
+ # Spodnja in zgornja meja za usable
+ if (isset($this->sessionData['usable_resp']['bottom_usable_limit'])) {
+ $this->bottom_usable_limit = $this->sessionData['usable_resp']['bottom_usable_limit'];
+ }
+ # ali prikazujemo tudi stolpce z 0 vrednostmi
+ if (isset($this->sessionData['usable_resp']['top_usable_limit'])) {
+ $this->top_usable_limit = $this->sessionData['usable_resp']['top_usable_limit'];
+ }
+ }
+
+ // Ali imamo zgenerirano datoteko ali ne
+ private function hasDataFile(){
+ if ($this->dataFileStatus == FILE_STATUS_NO_DATA || $this->dataFileStatus == FILE_STATUS_NO_FILE
+ || $this->dataFileStatus == FILE_STATUS_SRV_DELETED)
+ return false;
+ else
+ return true;
+ }
+
+ private function setStatusFilter($status=''){
+
+ $this->_CURRENT_STATUS_FILTER = $status;
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/admin/survey/modules/mod_kakovost/results/.gitignore b/admin/survey/modules/mod_kakovost/results/.gitignore
new file mode 100644
index 000000000..c96a04f00
--- /dev/null
+++ b/admin/survey/modules/mod_kakovost/results/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
\ No newline at end of file
diff --git a/admin/survey/modules/mod_kakovost/temp/.gitignore b/admin/survey/modules/mod_kakovost/temp/.gitignore
new file mode 100644
index 000000000..c96a04f00
--- /dev/null
+++ b/admin/survey/modules/mod_kakovost/temp/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
\ No newline at end of file
diff --git a/admin/survey/modules/mod_squalo/api_test.php b/admin/survey/modules/mod_squalo/api_test.php
deleted file mode 100644
index 281b00aae..000000000
--- a/admin/survey/modules/mod_squalo/api_test.php
+++ /dev/null
@@ -1,46 +0,0 @@
-createList($list_name='Testni seznam Xyz');
-
-/*$result = $squalo->createNewsletter(
- $list_id = '5',
- $subject = 'Testek',
- $body = 'Testno sporočilo...',
- $body_alt = 'Testno sporočilo ALT...',
- $from_email = 'peter.hrvatin@gmail.com',
- $from_name = 'Peter',
- $reply_to_email = 'peter.hrvatin@gmail.com',
- $language = 'sl'
-);*/
-
-//$result = $squalo->addRecipient($email='peter.h1203@gmail.com', $list_id='5');
-
-//$result = $squalo->sendEmails($newsletter_id='24');
-
-//$result = $squalo->deleteRecipient($recipient_id='2');
-
-
-
-
-echo '
'; print_r($result); echo ' ';
-
-
-
\ No newline at end of file
diff --git a/admin/survey/modules/mod_voting/class.SurveyVoting.php b/admin/survey/modules/mod_voting/class.SurveyVoting.php
new file mode 100644
index 000000000..f551dcbdc
--- /dev/null
+++ b/admin/survey/modules/mod_voting/class.SurveyVoting.php
@@ -0,0 +1,71 @@
+ 0){
+ $this->anketa = $anketa;
+ }
+ }
+
+
+ // Izvedemo vse potrebno pri vklopu (vklopimo obvescanje, ugasnemo belezenje parapodatkov...)
+ public function turnOnVoting(){
+ global $lang;
+
+ SurveySetting::getInstance()->Init($this->anketa);
+
+ // Ugasnimo belezenje vseh parapodatkov
+ SurveySetting::getInstance()->setSurveyMiscSetting('survey_ip', '1');
+ SurveySetting::getInstance()->setSurveyMiscSetting('survey_show_ip', '0');
+ SurveySetting::getInstance()->setSurveyMiscSetting('survey_browser', '1');
+ SurveySetting::getInstance()->setSurveyMiscSetting('survey_referal', '1');
+ SurveySetting::getInstance()->setSurveyMiscSetting('survey_date', '1');
+
+ // Vklopimo email vabila
+ sisplet_query("UPDATE srv_anketa SET user_base='1', show_email='0' WHERE id='".$this->anketa."'");
+ sisplet_query("INSERT INTO srv_anketa_module (ank_id, modul) VALUES ('".$this->anketa."', 'email')");
+
+ // Ugasnemo obvescanje respondenta
+ sisplet_query("UPDATE srv_alert SET finish_respondent='0', finish_respondent_cms='0' WHERE ank_id='".$this->anketa."'");
+ }
+
+ // Nastavitve volitev
+ public function displaySettings(){
+ global $lang;
+
+ echo '
'.$lang['settings'].' ';
+
+ echo ' ';
+
+ echo $lang['srv_voting_edit1'].' '.$lang['srv_voting_edit2'].' .';
+
+ echo ' ';
+
+ echo $lang['srv_voting_invitations1'].' '.$lang['srv_voting_invitations2'].' .';
+
+ echo ' ';
+
+ echo '';
+ }
+
+ // Pridobimo trenutne nastavitve volitev za anketo
+ private function getSettings(){
+
+ $settings = array();
+
+ return $settings;
+ }
+
+}
\ No newline at end of file
diff --git a/admin/survey/script/branching.js b/admin/survey/script/branching.js
index 1dd4f39c9..02703def1 100644
--- a/admin/survey/script/branching.js
+++ b/admin/survey/script/branching.js
@@ -2035,13 +2035,16 @@ function dodaj_blok_interpretacije() {
// ---------------------------------------
// refresha levo stran z branchingom
-function refreshLeft(spremenljivka, removeID) {
+function refreshLeft(spremenljivka, callback) {
$.post('ajax.php?t=branching&a=refresh_left', {
spremenljivka: spremenljivka,
anketa: srv_meta_anketa_id
}, function (data) {
$('#branching').html(data);
+
+ if (typeof callback == "function")
+ callback();
});
}
diff --git a/admin/survey/script/invitations.js b/admin/survey/script/invitations.js
index 289b330d8..a0de2e7b3 100644
--- a/admin/survey/script/invitations.js
+++ b/admin/survey/script/invitations.js
@@ -1745,3 +1745,19 @@ function smtpAAIAccept(){
else
$('#aai_smtp_button').hide();
}
+
+
+// SQUALO
+function squaloSwitch(){
+
+ if($('#squalo_mode').prop('checked')){
+ $('#send_mail_mode0, #send_mail_mode1, #send_mail_mode2, .mail_mode_switch, #send_mail_mode_test').hide();
+ $('#success_save').hide();
+ }
+ else{
+ $('.squalo_settings').hide();
+ $('#send_mail_mode2, .mail_mode_switch, #send_mail_mode_test').show();
+ $('#success_save').hide();
+ }
+}
+
diff --git a/admin/survey/script/js-lang.php b/admin/survey/script/js-lang.php
index 7b45bfa71..e67585c77 100644
--- a/admin/survey/script/js-lang.php
+++ b/admin/survey/script/js-lang.php
@@ -192,6 +192,7 @@ lang('srv_alert_upload_size');
lang('srv_alert_upload_ext');
lang('srv_trans_lang');
lang('srv_manager_remove_alert');
+lang('srv_resevanje_foto_pre_result');
//LOKACIJA
diff --git a/admin/survey/script/mobile.js b/admin/survey/script/mobile.js
new file mode 100644
index 000000000..432fd9e2d
--- /dev/null
+++ b/admin/survey/script/mobile.js
@@ -0,0 +1,75 @@
+function mobile_init(){
+
+ // init zeynepjs side menu
+ var zeynep = $('.mobile_menu').zeynep({
+ opened: function () {
+
+ },
+ closed: function () {
+
+ }
+ })
+
+ // dynamically bind 'closing' event
+ zeynep.on('closing', function () {
+
+ })
+
+ // handle zeynepjs overlay click
+ $('.mobile_menu_close').on('click', function () {
+ zeynep.close();
+ $('#fade').fadeOut();
+
+ $('.mobile_menu_close').fadeOut('fast', function(){
+ $('.mobile_menu_open').fadeIn('fast');
+ });
+ })
+
+ // open zeynepjs side menu
+ $('.mobile_menu_open').on('click', function () {
+ zeynep.open();
+ $('#fade').fadeIn();
+
+ $('.mobile_menu_open').fadeOut('fast', function(){
+ $('.mobile_menu_close').fadeIn('fast');
+ });
+ })
+}
+
+// Popup za dodajanje vprasanja na mobile
+function mobile_add_question_popup(){
+ $('.mobile_add_question_popup').fadeIn();
+}
+
+// Popup za dodajanje vprasanja na mobile
+function mobile_add_question_popup_close(){
+ $('.mobile_add_question_popup').fadeOut();
+}
+
+// Popup za dodajanje vprasanja na mobile
+function mobile_add_question(tip){
+
+ mobile_add_question_popup_close();
+
+ $.post('ajax.php?t=branching&a=spremenljivka_new', {
+ spremenljivka: 0,
+ 'if': 0,
+ endif: 1,
+ copy: 0,
+ tip: tip,
+ podtip: 0,
+ anketa: srv_meta_anketa_id
+ }, function (data) {
+ if (!data) return;
+
+ refreshLeft(data.nova_spremenljivka_id, function(){
+
+ // Scroll do novega vprasanja
+ $("html, body").animate({
+ scrollTop: $('#spremenljivka_content_'+data.nova_spremenljivka_id).offset().top - 100
+ }, 1000);
+ });
+
+ }, 'json');
+}
+
diff --git a/admin/survey/script/mobileMenu/zeynep.min.js b/admin/survey/script/mobileMenu/zeynep.min.js
new file mode 100644
index 000000000..be3e129fb
--- /dev/null
+++ b/admin/survey/script/mobileMenu/zeynep.min.js
@@ -0,0 +1,9 @@
+/*!
+* zeynepjs v2.1.2
+* A light-weight multi-level jQuery side menu plugin.
+* It's fully customizable and is compatible with modern browsers such as Google Chrome, Mozilla Firefox, Safari, Edge and Internet Explorer
+* MIT License
+* by Huseyin ELMAS
+*/
+!function(l,s){var n={htmlClass:!0};function i(e,t){this.element=e,this.eventController=o,this.options=l.extend({},n,t),this.options.initialized=!1,this.init()}i.prototype.init=function(){var s=this.element,e=this.options,i=this.eventController.bind(this);!0!==e.initialized&&(i("loading"),s.find("[data-submenu]").on("click",function(e){e.preventDefault();var t,n=l(this).attr("data-submenu"),o=l("#"+n);o.length&&(i("opening",t={subMenu:!0,menuId:n}),s.find(".submenu.current").removeClass("current"),o.addClass("opened current"),s.hasClass("submenu-opened")||s.addClass("submenu-opened"),s.scrollTop(0),i("opened",t))}),s.find("[data-submenu-close]").on("click",function(e){e.preventDefault();var t,n=l(this).attr("data-submenu-close"),o=l("#"+n);o.length&&(i("closing",t={subMenu:!0,menuId:n}),o.removeClass("opened current"),s.find(".submenu.opened:last").addClass("current"),s.find(".submenu.opened").length||s.removeClass("submenu-opened"),o.scrollTop(0),i("closed",t))}),i("load"),this.options.htmlClass&&!l("html").hasClass("zeynep-initialized")&&l("html").addClass("zeynep-initialized"),e.initialized=!0)},i.prototype.open=function(){this.eventController("opening",{subMenu:!1}),this.element.addClass("opened"),this.options.htmlClass&&l("html").addClass("zeynep-opened"),this.eventController("opened",{subMenu:!1})},i.prototype.close=function(e){e||this.eventController("closing",{subMenu:!1}),this.element.removeClass("opened"),this.options.htmlClass&&l("html").removeClass("zeynep-opened"),e||this.eventController("closed",{subMenu:!1})},i.prototype.destroy=function(){this.eventController("destroying"),this.close(!0),this.element.find(".submenu.opened").removeClass("opened"),this.element.removeData(s),this.eventController("destroyed"),this.options=n,this.options.htmlClass&&l("html").removeClass("zeynep-initialized"),delete this.element,delete this.options,delete this.eventController},i.prototype.on=function(e,t){r.call(this,e,t)};var o=function(e,t){if(this.options[e]){if("function"!=typeof this.options[e])throw Error("event handler must be a function: "+e);this.options[e].call(this,this.element,this.options,t)}},r=function(e,t){if("string"!=typeof e)throw Error("event name is expected to be a string but got: "+typeof e);if("function"!=typeof t)throw Error("event handler is not a function for: "+e);this.options[e]=t};l.fn[s]=function(e){var t,n,o;return t=l(this[0]),n=e,o=null,t.data(s)?o=t.data(s):(o=new i(t,n||{}),t.data(s,o)),o}}(window.jQuery,"zeynep");
+//# sourceMappingURL=zeynep.min.js.map
diff --git a/admin/survey/script/narocila.js b/admin/survey/script/narocila.js
index 103c8c253..115f077d7 100644
--- a/admin/survey/script/narocila.js
+++ b/admin/survey/script/narocila.js
@@ -54,7 +54,7 @@ function popupUserAccess_close() {
function prepareNarocilaTableAdmin(){
$("#user_narocila").DataTable({
- order: [[ 4, "desc" ]],
+ order: [[ 5, "desc" ]],
lengthMenu: [[50, 500, 1000], [50, 500, 1000]],
select: false,
lengthChange: true,
@@ -63,8 +63,9 @@ function prepareNarocilaTableAdmin(){
responsive: true,
columnDefs: [
{responsivePriority: 1, targets: 0},
- {responsivePriority: 2, targets: 7},
- {responsivePriority: 3, targets: 4}
+ {responsivePriority: 2, targets: 1},
+ {responsivePriority: 3, targets: 8},
+ {responsivePriority: 4, targets: 5}
],
language: {
"url": siteUrl+"admin/survey/script/datatables/Slovenian.json"
diff --git a/admin/survey/script/onload.js b/admin/survey/script/onload.js
index 78967b9c0..4cdd407d0 100644
--- a/admin/survey/script/onload.js
+++ b/admin/survey/script/onload.js
@@ -9,13 +9,11 @@
$(function() {
- //console.time('onload');
-
load_meta_variables(); // script.js
ajax_start_stop(); // script.js
onload_init(); // script.js
IE7_select_disabled_fix(); // script.js
- inline_jezik_hover(); // script.js
+ inline_jezik_hover(); // script.js
onload_init_branching(); // branching.js
onload_init_inline(); // vprasanjeInline.js
@@ -25,9 +23,6 @@ $(function() {
analiza_init(); // script_analiza.js
statistika_init(); // statistika.js
- //console.timeEnd('onload');
-
- //browser_alert();
missingProfiles_init(); // missingProfiles.js
missingValues_init(); // missingValues.js
@@ -39,17 +34,12 @@ $(function() {
multiCrosstabs_init(); // multicrosstabi (analiza)
slideshow_init(); // prezendatcije (slideshow)
dataSetingProfile_init(); // nastavitve v analizah in podatkov
- invitations_init(); // nastavitve v analizah in podatkov
- //themes_init(); // nastavitve v temah
+ invitations_init(); // nastavitve v analizah in podatkov
inspect_init(); // nastavitve v inspect
means_init(); // nastavitve v meansih
ttest_init(); // nastavitve v ttest
simpleMailInvitation_init();// nastavitve v simpleMailInvitation
charts_init(); // nastavitve v charts
creport_init(); // nastavitve v creport
- onload_init_recode(); // nastavitve v recodiranju(function($) {
- //onload_init_language_technology(); // nastavitve v language technology{
-
- // prestejemo stevilo DOM elementov
- //alert(document.getElementsByTagName("*").length);
+ onload_init_recode(); // nastavitve v recodiranju(function($) {
});
diff --git a/admin/survey/script/script.js b/admin/survey/script/script.js
index 1aea2fd86..a97393e80 100644
--- a/admin/survey/script/script.js
+++ b/admin/survey/script/script.js
@@ -5468,3 +5468,10 @@ function consultingPopupClose(){
$('#popup_note').fadeOut('slow').html('');
$('#fade').fadeOut('slow');
}
+
+
+// Brisanje datoteke iz podatkov
+function removeUploadFromData(usr_id, spr_id, code){
+
+ $("#fullscreen").load('ajax.php?t=postprocess&a=edit_data_question_upload_delete', {anketa: srv_meta_anketa_id, usr_id: usr_id, spr_id: spr_id, code: code});
+}
diff --git a/admin/survey/script/surveyList.js b/admin/survey/script/surveyList.js
index f7509364f..5114042ff 100644
--- a/admin/survey/script/surveyList.js
+++ b/admin/survey/script/surveyList.js
@@ -70,8 +70,12 @@ function delete_folder (folder) {
// Ustvarimo folder
function create_folder (parent) {
- $.post('ajax.php?t=surveyList&a=folder_create', {parent: parent}, function(){
- window.location.reload();
+
+ $('#survey_list').load('ajax.php?t=surveyList&a=folder_create', {parent: parent}, function(){
+
+ var added_folder_id = $('#new_added_folder').val();
+
+ edit_title_folder(added_folder_id);
});
}
diff --git a/admin/survey/script/uporabniki_custom.js b/admin/survey/script/uporabniki_custom.js
index 787740bea..742809e36 100644
--- a/admin/survey/script/uporabniki_custom.js
+++ b/admin/survey/script/uporabniki_custom.js
@@ -1,10 +1,15 @@
//Uporabimo custom funkcijo pri uporabnikih, dokler se ne posodobi jQuery
$(document).ready(function () {
- $('#xtradiv strong').on("click", function (event) {
- $('#xtradivSettings').toggle();
- });
+
+ onload_init();
+
+ $('#xtradiv strong').on("click", function (event) {
+ $('#xtradivSettings').toggle();
+ });
+
});
+
function language_change (lang) {
$.post('ajax.php?t=surveyList&a=language_change', {lang: lang}, function () {
/*window.location.reload();*/
diff --git a/admin/survey/script/vprasanje.js b/admin/survey/script/vprasanje.js
index 69b44c93d..414e49cc8 100644
--- a/admin/survey/script/vprasanje.js
+++ b/admin/survey/script/vprasanje.js
@@ -154,7 +154,7 @@ function vprasanje_tab (spremenljivka, tab) {
}
// shrani nastavitve vprasanja
-function vprasanje_save (silentsave, spr) {
+function vprasanje_save (silentsave, spr, callback) {
var spremenljivka = $('input[name=spremenljivka]').val() || spr; // spr se prenese, ce je urejanje na desni zaprto
@@ -213,6 +213,9 @@ function vprasanje_save (silentsave, spr) {
inline_nova_vrednost(last);
}
+ if (typeof callback == 'function') {
+ callback();
+ }
});
}
@@ -270,6 +273,17 @@ function vrednost_new (spremenljivka, other, tip, mv) {
}
+// doda novo vrednost na mobitelu
+function vrednost_new_mobile (spremenljivka, tip) {
+
+ $.post('ajax.php?t=vprasanje&a=vrednost_new', {spremenljivka: spremenljivka, other: 0, anketa: srv_meta_anketa_id, mv:0}, function (data) {
+
+ vprasanje_save(true, spremenljivka, function(){
+ $('#spremenljivka_contentdiv'+spremenljivka).find('#variable_holder div:last-child').find('.vrednost_inline').focus();
+ });
+ });
+}
+
//preverimo ce ze obstaja
function vrednost_new_dodatne (spremenljivka, mv, tip, checked){
var vrednost;
@@ -281,18 +295,8 @@ function vrednost_new_dodatne (spremenljivka, mv, tip, checked){
var vre_id = $('#spremenljivka_content_'+spremenljivka+' #variable_holder [other|="'+mv+'"]').attr('id');
vre_id = vre_id.replace('variabla_', '');
inline_vrednost_delete(spremenljivka, vre_id, '0');
+
return false;
- /*
- temp = document.getElementById(mv).name;
- var arr = new Array();
- arr = temp.split('_');
- vrednost = arr[2];
-
- $('#vrednost_'+vrednost).remove();
- $.post('ajax.php?t=vprasanje&a=vrednost_delete', {vrednost: vrednost, spremenljivka: spremenljivka, anketa: srv_meta_anketa_id}, function () {
- vprasanje_save(true);
- })
- */
}
}
diff --git a/composer.lock b/composer.lock
index 0a856a85c..6d41f275d 100644
--- a/composer.lock
+++ b/composer.lock
@@ -1,9 +1,10 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
- "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
+ "hash": "c9fc655cdb58743c38114c03e68c1cc7",
"content-hash": "a150435d7f20bef4fdda8cb6c59eb1a6",
"packages": [
{
@@ -61,20 +62,20 @@
"ssl",
"tls"
],
- "time": "2021-01-12T12:10:35+00:00"
+ "time": "2021-01-12 12:10:35"
},
{
"name": "fgrosse/phpasn1",
- "version": "v2.2.0",
+ "version": "v2.3.0",
"source": {
"type": "git",
"url": "https://github.com/fgrosse/PHPASN1.git",
- "reference": "d1978f7abd580f3fc33561e7f71d4c12c7531fad"
+ "reference": "20299033c35f4300eb656e7e8e88cf52d1d6694e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/fgrosse/PHPASN1/zipball/d1978f7abd580f3fc33561e7f71d4c12c7531fad",
- "reference": "d1978f7abd580f3fc33561e7f71d4c12c7531fad",
+ "url": "https://api.github.com/repos/fgrosse/PHPASN1/zipball/20299033c35f4300eb656e7e8e88cf52d1d6694e",
+ "reference": "20299033c35f4300eb656e7e8e88cf52d1d6694e",
"shasum": ""
},
"require": {
@@ -132,31 +133,31 @@
"x509",
"x690"
],
- "time": "2020-10-11T16:28:18+00:00"
+ "time": "2021-04-24 19:01:55"
},
{
"name": "geoip2/geoip2",
- "version": "v2.10.0",
+ "version": "v2.11.0",
"source": {
"type": "git",
"url": "https://github.com/maxmind/GeoIP2-php.git",
- "reference": "419557cd21d9fe039721a83490701a58c8ce784a"
+ "reference": "d01be5894a5c1a3381c58c9b1795cd07f96c30f7"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/419557cd21d9fe039721a83490701a58c8ce784a",
- "reference": "419557cd21d9fe039721a83490701a58c8ce784a",
+ "url": "https://api.github.com/repos/maxmind/GeoIP2-php/zipball/d01be5894a5c1a3381c58c9b1795cd07f96c30f7",
+ "reference": "d01be5894a5c1a3381c58c9b1795cd07f96c30f7",
"shasum": ""
},
"require": {
"ext-json": "*",
- "maxmind-db/reader": "~1.5",
- "maxmind/web-service-common": "~0.6",
- "php": ">=5.6"
+ "maxmind-db/reader": "~1.8",
+ "maxmind/web-service-common": "~0.8",
+ "php": ">=7.2"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "2.*",
- "phpunit/phpunit": "5.*",
+ "phpunit/phpunit": "^8.0 || ^9.0",
"squizlabs/php_codesniffer": "3.*"
},
"type": "library",
@@ -185,7 +186,7 @@
"geolocation",
"maxmind"
],
- "time": "2019-12-12T18:48:39+00:00"
+ "time": "2020-10-01 18:48:34"
},
{
"name": "guzzlehttp/guzzle",
@@ -252,7 +253,7 @@
"rest",
"web service"
],
- "time": "2020-06-16T21:01:06+00:00"
+ "time": "2020-06-16 21:01:06"
},
{
"name": "guzzlehttp/promises",
@@ -303,7 +304,7 @@
"keywords": [
"promise"
],
- "time": "2021-03-07T09:25:29+00:00"
+ "time": "2021-03-07 09:25:29"
},
{
"name": "guzzlehttp/psr7",
@@ -374,33 +375,34 @@
"uri",
"url"
],
- "time": "2021-04-26T09:17:50+00:00"
+ "time": "2021-04-26 09:17:50"
},
{
"name": "maxmind-db/reader",
- "version": "v1.6.0",
+ "version": "v1.10.1",
"source": {
"type": "git",
"url": "https://github.com/maxmind/MaxMind-DB-Reader-php.git",
- "reference": "febd4920bf17c1da84cef58e56a8227dfb37fbe4"
+ "reference": "569bd44d97d30a4ec12c7793a33004a76d4caf18"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/febd4920bf17c1da84cef58e56a8227dfb37fbe4",
- "reference": "febd4920bf17c1da84cef58e56a8227dfb37fbe4",
+ "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/569bd44d97d30a4ec12c7793a33004a76d4caf18",
+ "reference": "569bd44d97d30a4ec12c7793a33004a76d4caf18",
"shasum": ""
},
"require": {
- "php": ">=5.6"
+ "php": ">=7.2"
},
"conflict": {
- "ext-maxminddb": "<1.6.0,>=2.0.0"
+ "ext-maxminddb": "<1.10.1,>=2.0.0"
},
"require-dev": {
- "friendsofphp/php-cs-fixer": "2.*",
+ "friendsofphp/php-cs-fixer": "*",
"php-coveralls/php-coveralls": "^2.1",
- "phpunit/phpcov": "^3.0",
- "phpunit/phpunit": "5.*",
+ "phpstan/phpstan": "*",
+ "phpunit/phpcov": ">=6.0.0",
+ "phpunit/phpunit": ">=8.0.0,<10.0.0",
"squizlabs/php_codesniffer": "3.*"
},
"suggest": {
@@ -434,31 +436,31 @@
"geolocation",
"maxmind"
],
- "time": "2019-12-19T22:59:03+00:00"
+ "time": "2021-04-14 17:49:35"
},
{
"name": "maxmind/web-service-common",
- "version": "v0.7.0",
+ "version": "v0.8.1",
"source": {
"type": "git",
"url": "https://github.com/maxmind/web-service-common-php.git",
- "reference": "74c996c218ada5c639c8c2f076756e059f5552fc"
+ "reference": "32f274051c543fc865e5a84d3a2c703913641ea8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/74c996c218ada5c639c8c2f076756e059f5552fc",
- "reference": "74c996c218ada5c639c8c2f076756e059f5552fc",
+ "url": "https://api.github.com/repos/maxmind/web-service-common-php/zipball/32f274051c543fc865e5a84d3a2c703913641ea8",
+ "reference": "32f274051c543fc865e5a84d3a2c703913641ea8",
"shasum": ""
},
"require": {
"composer/ca-bundle": "^1.0.3",
"ext-curl": "*",
"ext-json": "*",
- "php": ">=5.6"
+ "php": ">=7.2"
},
"require-dev": {
"friendsofphp/php-cs-fixer": "2.*",
- "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0",
+ "phpunit/phpunit": "^8.0 || ^9.0",
"squizlabs/php_codesniffer": "3.*"
},
"type": "library",
@@ -480,7 +482,7 @@
],
"description": "Internal MaxMind Web Service API",
"homepage": "https://github.com/maxmind/web-service-common-php",
- "time": "2020-05-06T14:07:26+00:00"
+ "time": "2020-11-02 17:00:53"
},
{
"name": "minishlink/web-push",
@@ -536,7 +538,7 @@
"push",
"web"
],
- "time": "2020-08-02T08:58:01+00:00"
+ "time": "2020-08-02 08:58:01"
},
{
"name": "paragonie/random_compat",
@@ -581,7 +583,7 @@
"pseudorandom",
"random"
],
- "time": "2020-10-15T08:29:30+00:00"
+ "time": "2020-10-15 08:29:30"
},
{
"name": "paragonie/sodium_compat",
@@ -663,7 +665,7 @@
"secret-key cryptography",
"side-channel resistant"
],
- "time": "2021-04-17T09:00:05+00:00"
+ "time": "2021-04-17 09:00:05"
},
{
"name": "paypal/paypal-checkout-sdk",
@@ -712,7 +714,7 @@
"rest",
"sdk"
],
- "time": "2019-11-07T23:16:44+00:00"
+ "time": "2019-11-07 23:16:44"
},
{
"name": "paypal/paypalhttp",
@@ -751,7 +753,7 @@
"homepage": "https://github.com/paypal/paypalhttp_php/contributors"
}
],
- "time": "2019-11-06T21:27:12+00:00"
+ "time": "2019-11-06 21:27:12"
},
{
"name": "phpmailer/phpmailer",
@@ -817,13 +819,7 @@
}
],
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
- "funding": [
- {
- "url": "https://github.com/Synchro",
- "type": "github"
- }
- ],
- "time": "2021-04-29T12:25:04+00:00"
+ "time": "2021-04-29 12:25:04"
},
{
"name": "psr/http-message",
@@ -873,7 +869,7 @@
"request",
"response"
],
- "time": "2016-08-06T14:39:51+00:00"
+ "time": "2016-08-06 14:39:51"
},
{
"name": "ralouphie/getallheaders",
@@ -913,7 +909,7 @@
}
],
"description": "A polyfill for getallheaders.",
- "time": "2019-03-08T08:55:37+00:00"
+ "time": "2019-03-08 08:55:37"
},
{
"name": "sonata-project/google-authenticator",
@@ -970,7 +966,7 @@
"keywords": [
"google authenticator"
],
- "time": "2018-07-18T22:08:02+00:00"
+ "time": "2018-07-18 22:08:02"
},
{
"name": "spomky-labs/base64url",
@@ -1021,7 +1017,7 @@
"safe",
"url"
],
- "time": "2020-11-03T09:10:25+00:00"
+ "time": "2020-11-03 09:10:25"
},
{
"name": "stripe/stripe-php",
@@ -1078,7 +1074,7 @@
"payment processing",
"stripe"
],
- "time": "2021-04-12T17:19:16+00:00"
+ "time": "2021-04-12 17:19:16"
},
{
"name": "symfony/polyfill-intl-idn",
@@ -1148,7 +1144,7 @@
"portable",
"shim"
],
- "time": "2021-01-22T09:19:47+00:00"
+ "time": "2021-01-22 09:19:47"
},
{
"name": "symfony/polyfill-intl-normalizer",
@@ -1215,7 +1211,7 @@
"portable",
"shim"
],
- "time": "2021-01-22T09:19:47+00:00"
+ "time": "2021-01-22 09:19:47"
},
{
"name": "symfony/polyfill-php72",
@@ -1274,7 +1270,7 @@
"portable",
"shim"
],
- "time": "2021-01-07T16:49:33+00:00"
+ "time": "2021-01-07 16:49:33"
},
{
"name": "web-token/jwt-core",
@@ -1349,7 +1345,7 @@
"jwt",
"symfony"
],
- "time": "2020-03-20T13:29:04+00:00"
+ "time": "2020-03-20 13:29:04"
},
{
"name": "web-token/jwt-key-mgmt",
@@ -1426,7 +1422,7 @@
"jwt",
"symfony"
],
- "time": "2020-03-20T13:29:04+00:00"
+ "time": "2020-03-20 13:29:04"
},
{
"name": "web-token/jwt-signature",
@@ -1506,7 +1502,7 @@
"jwt",
"symfony"
],
- "time": "2020-03-20T13:29:04+00:00"
+ "time": "2020-03-20 13:29:04"
},
{
"name": "web-token/jwt-signature-algorithm-ecdsa",
@@ -1573,7 +1569,7 @@
"jwt",
"symfony"
],
- "time": "2020-03-20T13:29:04+00:00"
+ "time": "2020-03-20 13:29:04"
},
{
"name": "web-token/jwt-signature-algorithm-eddsa",
@@ -1640,7 +1636,7 @@
"jwt",
"symfony"
],
- "time": "2020-03-20T13:29:04+00:00"
+ "time": "2020-03-20 13:29:04"
},
{
"name": "web-token/jwt-signature-algorithm-hmac",
@@ -1707,7 +1703,7 @@
"jwt",
"symfony"
],
- "time": "2020-03-20T13:29:04+00:00"
+ "time": "2020-03-20 13:29:04"
},
{
"name": "web-token/jwt-signature-algorithm-none",
@@ -1774,7 +1770,7 @@
"jwt",
"symfony"
],
- "time": "2020-03-20T13:29:04+00:00"
+ "time": "2020-03-20 13:29:04"
},
{
"name": "web-token/jwt-signature-algorithm-rsa",
@@ -1841,7 +1837,7 @@
"jwt",
"symfony"
],
- "time": "2020-03-20T13:29:04+00:00"
+ "time": "2020-03-20 13:29:04"
},
{
"name": "web-token/jwt-util-ecc",
@@ -1910,7 +1906,7 @@
"jwt",
"symfony"
],
- "time": "2020-03-20T13:29:04+00:00"
+ "time": "2020-03-20 13:29:04"
}
],
"packages-dev": [
@@ -1973,13 +1969,7 @@
"throwable",
"whoops"
],
- "funding": [
- {
- "url": "https://github.com/denis-sokolov",
- "type": "github"
- }
- ],
- "time": "2021-04-25T12:00:00+00:00"
+ "time": "2021-04-25 12:00:00"
},
{
"name": "kint-php/kint",
@@ -2030,7 +2020,7 @@
"kint",
"php"
],
- "time": "2017-01-15T14:23:43+00:00"
+ "time": "2017-01-15 14:23:43"
},
{
"name": "maximebf/debugbar",
@@ -2091,20 +2081,20 @@
"debug",
"debugbar"
],
- "time": "2020-12-07T11:07:24+00:00"
+ "time": "2020-12-07 11:07:24"
},
{
"name": "psr/log",
- "version": "1.1.3",
+ "version": "1.1.4",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
- "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc"
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc",
- "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
+ "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
"shasum": ""
},
"require": {
@@ -2128,7 +2118,7 @@
"authors": [
{
"name": "PHP-FIG",
- "homepage": "http://www.php-fig.org/"
+ "homepage": "https://www.php-fig.org/"
}
],
"description": "Common interface for logging libraries",
@@ -2138,7 +2128,7 @@
"psr",
"psr-3"
],
- "time": "2020-03-23T09:12:05+00:00"
+ "time": "2021-05-03 11:20:27"
},
{
"name": "symfony/polyfill-mbstring",
@@ -2201,21 +2191,7 @@
"portable",
"shim"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2021-01-22T09:19:47+00:00"
+ "time": "2021-01-22 09:19:47"
},
{
"name": "symfony/polyfill-php80",
@@ -2281,21 +2257,7 @@
"portable",
"shim"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2021-01-07T16:49:33+00:00"
+ "time": "2021-01-07 16:49:33"
},
{
"name": "symfony/var-dumper",
@@ -2367,21 +2329,7 @@
"debug",
"dump"
],
- "funding": [
- {
- "url": "https://symfony.com/sponsor",
- "type": "custom"
- },
- {
- "url": "https://github.com/fabpot",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2021-04-19T13:36:17+00:00"
+ "time": "2021-04-19 13:36:17"
}
],
"aliases": [],
@@ -2392,6 +2340,5 @@
"platform": {
"php": "^5.5|^7.0"
},
- "platform-dev": [],
- "plugin-api-version": "1.1.0"
+ "platform-dev": []
}
diff --git a/editors/ckeditor_4_4/uploader/EnkaUploader.php b/editors/ckeditor_4_4/uploader/EnkaUploader.php
index 685096081..da7caebd6 100644
--- a/editors/ckeditor_4_4/uploader/EnkaUploader.php
+++ b/editors/ckeditor_4_4/uploader/EnkaUploader.php
@@ -7,7 +7,7 @@