<?php
/* ************************************************************************** *
 *																										*
 * Core mod - lib_editor_generate.php v3.1 by Slodave, 2007 - avgust 2008,		*
 * http://www.zabec.net																			*
 * -------- -------- -------- -------- -------- -------- -------- --------		*
 * 																									*
 * Datoteka vsebuje funkcije, za generiranje editorja									*
 * - predhodno so bile funkcije združene v lib_add.php								*
 * ************************************************************************** */

/* Class skrbi za generiranje editorja
 */
class editor {
/* Funkcija je constructor classa editor
 * @parameter: $mod_settings predstavljajo vse nastavitve iz settings.php
 * @parameter: $clean so prečiščene spremenljivke prenesene preko ajaxa
 * @parameter: $modul_selected je ime trenutnega modula
 * @parameter: $tpl_jezik so teksti glede na izbran jezik iz lib_language.php
 */
	function editor($mod_settings, $clean, $modul_selected, $tpl_jezik) {
		//dobimo zahtevane globalne spremenljivke
		global $tpl;
		global $db;
		$this->db = $db;
		$this->settings = $mod_settings;
		$this->tpl = $tpl;
		$this->modul_selected = $modul_selected;
		$this->id = $clean['id'];
		//teksti definirani v lib_language.php
		$this->jezik = $tpl_jezik;
		//trenutno izbran jezik
		$this->trenutni_jezik = $clean['trenutni_jezik'];

		//generiramo zadnje spremembe, funkcija klicana iz lib_spremembe.php
		spremembeBox($this->id);
		//lang zavihek v editorju, funckija klicana iz lib_mod_general.php
		generate_lang_zavihek($this->trenutni_jezik);
		//generiramo naslov editorja
		$this->generate_naslov();

		//dodamo stopnjo Zaključek (oz ekvivalent v drugem jeziku), če ni definirano, da ni zaključka
		if($this->settings['zakljucek'] != "off") {
			$this->settings['editor_stopnja'][] = $this->jezik['add_zakljucek'];
		}
	}

/* Funkcija generira naslov v editorju
 * klicano iz: @editor:editor() - lib_editor_generate.php
 */
	private function generate_naslov(){
		//generiramo prvi del naslova, funkcija iz lib_simple_template.php
		generate_naslov($this->modul_selected);

		//custom funkcija za naslov
		if(function_exists("custom_naslov")){
			if($this->lang) {
				$lang = $this->get_field_lang_value($this->lang);
			}
			else {
				$lang = null;
			}
			$custom_naslov = custom_naslov($this->get_field_value(), $lang);
		}
		if($_SESSION['sublevel_active'] == '1'){
			$this->tpl->newBlock("podnivo");
			$this->tpl->assign("podmodul",$_SESSION['sublevel_ime']);
			$this->tpl->gotoBlock("_ROOT");
			
		}
		//če za naslov ni poskrbela custom funkcija
		if(!$custom_naslov) {
			//generiramo preostali del naslova (polje ni jezikovno pogojeno)
			if(strpos($this->settings['listing_db_polja'][0], '.') === false) {
				$r = $this->get_field_value();
				$polje = $this->settings['listing_db_polja'][0];
			}
			//polje je jezikovno pogojeno
			else {
				$polje = explode(".", $this->settings['listing_db_polja'][0]);
				$polje = $polje[1];
				$r = $this->get_field_lang_value($this->trenutni_jezik);
			}
			//če še ni generiranega naslova
			if(!$r[$polje]) {
				$r[$polje] = $this->jezik['add_ninaslova'];
			}
			$this->tpl->assign("detail_naslov", $r[$polje]);
		}
		else {
			$this->tpl->assign("detail_naslov", $custom_naslov);
		}
	}

/* Funkcija generira stopnjo editorja
 * klicano iz: @ - custom_editor.php
 *					@editor:generate_zakljucek() - lib_editor_generate.php
 * @parameter: $ime je vrednost določena v custom_editor.php in mora biti enaka $mod_settings['editor_stopnja']
 * včasih so bile definirane še $razdelek = true, $razdelek_ime = "", v 3.1 odstranjeno
 */
	public function generate_stopnja($ime,$razdelek = true) {
		//preverimo če je $mod_settings['editor_stopnja'] enak stopnjam nastavljenih v custom_editorju.php ali gre za zadnjo stopnjo
		if(in_array($ime,$this->settings['editor_stopnja']) OR $ime == $this->jezik['add_zakljucek']) {
			$this->tpl->newBlock("stopnja");
			$this->tpl->assign("title",$ime);
			
			//generiramo razdelek
			if($razdelek) {
				$this->generate_razdelek();
			}
			
			$this->navigation(array_search($ime, $this->settings['editor_stopnja']));

			//generiramo custom opozorilo če je nastavljeno
			if($this->uvodno_opozorilo) {
				$this->tpl->newBlock("top_opozorilo_custom");
				$this->tpl->assign("custom_opozorilo",$this->uvodno_opozorilo);
			}
			//generiramo standardno opozorilo o obveznih poljih in neuporabi samo velikih črk
			else {
				$this->tpl->newBlock("top_opozorilo");
			}
		}
		//stopnja v settings.php ni enaka tisti v custom_editor.php
		else {
			napaka("mod_settings['editor_stopnja'] ni enaka v custom_editor.php definiranim stopnjam");
		}
	}

/* Funkcija generira custom opozorilo, ki nadomesti opozorilo o obveznih poljih in neuporabi samo velikih črk
 * v custom_editor.php mora biti nujno klicana pred generate_stopnja();
 * klicano iz: @ - custom_editor.php
 * $vsebina definira uvodni tekst
 * v prejšnji verziji se je funkcija imenovala custom_opozorilo v 3.1 preimenovana
 */
	public function uvodno_opozorilo($vsebina){
		$this->uvodno_opozorilo = $vsebina;
	}

/* Funkcija generira razdelek (razmak) znostraj posamezne stopnje
 * klicano iz: @editor:generate_stopnja() - lib_editor_generate.php
 *					@editor:generate_galerija() - lib_editor_generate.php
 *					@editor:generate_datoteka() - lib_editor_generate.php
 *					@ - custom_editor.php
 * @parameter: $naslov določa ime razdelka
 * @parameter: $html_id_razdelka določa id razdelka (za morebitno uporabo v javascriptu)
 */
	public function generate_razdelek($naslov = "", $html_id_razdelka = "") {
		//generiramo naslov če je definiran
		if($naslov)	{
			$this->tpl->newBlock("presledek");
			//$this->tpl->assign("naslov",$naslov);
		}
		$this->tpl->newBlock("razdelek");
		if($naslov) {
			$this->tpl->newBlock("razdelek_title");	
			$this->tpl->assign("naslov",$naslov);
			$this->tpl->gotoBlock("razdelek");
		}
		


		//dodamo id v template, če je definiran $html_id_razdelka
		if($html_id_razdelka) {
			$this->tpl->assign("unique","id = '".$html_id_razdelka."'");
		}
		//dodamo spremenljivki v template
		$this->tpl->assign("editid",$this->id);
		$this->tpl->assign("lang",$this->trenutni_jezik);
	}

/*	Funkcija generira navigacijo v editorju
 * klicano iz: @editor:generate_stopnja() - lib_editor_generate.php
 * @parameter: $key predstavlja zaporedno številko stopnje iz $mod_settings['editor_stopnja'], ki je trenutno aktivna
 */
	private function navigation($key) {
		//generiramo leve tabe
		foreach($this->settings['editor_stopnja'] AS $tabkey => $tab) {
			$stopnja = $tabkey+1;
			$this->tpl->newBlock("navigation_tabs");
			//tab je izbran
			if($tabkey == $key) {
				$izbran = $stopnja +1;
				$this->tpl->assign("tab_class","editor_tab_on");
				$this->tpl->assign("tab_link","$tab");
				$this->tpl->gotoBlock("razdelek");
				$this->tpl->assign("trenutna_stopnja","$stopnja");
			}
			//tab je že obdelan
			elseif($tabkey < $key OR $tabkey == $key+1) {
				$this->tpl->assign("tab_class","editor_tab_off");
				$this->tpl->assign("tab_link","<a href='#' onclick=\"editor_check('$stopnja')\">$tab</a>");

				//glede na session določimo, če je stopnja pravilno izpolnjena
				if($_SESSION[$this->id."_".$stopnja."_"."editorok"]  == "ok") {
					$this->tpl->newBlock("navigation_tabs_tick");
				}
			}
			//tab še ni obdelan
			elseif($tabkey > $key) {
				$this->tpl->assign("tab_class","editor_tab_off");
				$this->tpl->assign("tab_link","$tab");

				//glede na session določimo, če je stopnja pravilno izpolnjena
				if($_SESSION[$this->id."_".$stopnja."_"."editorok"]  == "ok") {
					$this->tpl->newBlock("navigation_tabs_tick");
				}
			}
		}

		//preštejemo koliko je stopenj (glede na $mod_settings['editor_stopnja'];
		$num = count($this->settings['editor_stopnja'])-1;

		//generiramo navigacijo v levo (spodaj)
		if($key > 0) {
			$levo = $key-1;
			$this->tpl->newBlock("navigation_left");
			$this->tpl->assign("navigacija",$this->settings['editor_stopnja'][$levo]);
			$this->tpl->assign("stopnja",$key);
		}
		//generiramo navigacijo v desno (spodaj)
		if($key < $num) {
			$desno = $key+1;
			$this->tpl->newBlock("navigation_right");
			$this->tpl->assign("navigacija",$this->settings['editor_stopnja'][$desno]);
			$this->tpl->assign("stopnja",$izbran);
		}

		//če ni nastavljen zaključek in gre za zadnjo stopnjo, generiramo gumb za objavo
		if($this->settings['zakljucek'] == "off" AND $key == $num) {
			$this->generate_gumb_objavi();
		}

		$this->generate_gumb_zapri();
		$this->generate_gumb_izbrisi();
		$this->generate_gumb_v_osnutke();
	}

/* Funkcija generira gumb objavi v editorju
 * klicano iz: @editor:navigation() - lib_editor_generate.php
 *					@editor:generate_zakljucek() - lib_editor_generate.php
 */
	private function generate_gumb_objavi() {
		if($_SESSION['sublevel_active'] == '1'){
			$this->tpl->newBlock("gumb_objavi_sub");
			$this->tpl->assign("sublevel_active",$_SESSION['sublevel_active']);
			$this->tpl->assign("sublevel_stopnja",",".$_SESSION['back_stopnja']);
			$this->tpl->assign("sublevel_itemid",",".$_SESSION['back_itemid']);
			$num = count($this->settings['editor_stopnja'])-1;
			$this->tpl->assign("stopnja",$num);	
		}
		else{
			$this->tpl->newBlock("gumb_objavi");
			//določimo da gre za zadnjo stopnjo
			$num = count($this->settings['editor_stopnja'])-1;
			$this->tpl->assign("stopnja",$num);	
		}
	}

/* Funkcija generira gumb zapri v editorju
 * klicano iz: @editor:navigation() - lib_editor_generate.php
 */
	private function generate_gumb_zapri() {
		if($_SESSION['sublevel_active'] == '1'){
			$this->tpl->newBlock("gumb_zapri_sub");
			$this->tpl->assign("sublevel_active",$_SESSION['sublevel_active']);
			$this->tpl->assign("sublevel_stopnja",",".$_SESSION['back_stopnja']);
			$this->tpl->assign("sublevel_itemid",",".$_SESSION['back_itemid']);
		}
		else{
			$this->tpl->newBlock("gumb_zapri");			
		}
	}
/* Funkcija generira gumb izbriši v editorju
 * klicano iz: @editor:navigation() - lib_editor_generate.php
 */	
	private function generate_gumb_izbrisi() {
			if($_SESSION['sublevel_active'] == '1'){
			$this->tpl->newBlock("gumb_izbrisi_sub");
			$this->tpl->assign("sublevel_active",$_SESSION['sublevel_active']);
			$this->tpl->assign("sublevel_stopnja",",".$_SESSION['back_stopnja']);
			$this->tpl->assign("sublevel_itemid",",".$_SESSION['back_itemid']);
		}
		else{
			$this->tpl->newBlock("gumb_izbrisi");			
		}		
	}

/* Funkcija generira gumb premakni v osnutke v editorju
 * klicano iz: @editor:navigation() - lib_editor_generate.php
 */
	private function generate_gumb_v_osnutke() {
		//preverimo če so osnutki aktivni
		if($this->settings["osnutek"]) {
			$this->tpl->newBlock("gumb_vosnutke");
		}
	}

/* Funkcija generira zaključno stopnjo v editorju
 * klicano iz: @ - custom_editor.php
 * validacija temelji na checkRequired() iz lib_editor_save.php
 */
	public function generate_zakljucek() {
		//odstranimo session_stopnjo
		unset($_SESSION['editor_stopnja']);

		//odstranimo morebitne stopnje o filebrowserju, datotekah in custom slikah
		/*unset($_SESSION[$this->id."_".$_SESSION[$this->id."_"."browserpathStage"]."_"."browserpath"]);
		unset($_SESSION[$this->id."_"."browserpathStage"]);
		unset($_SESSION[$this->id."_".$_SESSION[$this->id."_"."datotekejezikStage"]."_"."datotekejezik"]);
		unset($_SESSION[$this->id."_"."datotekejezikStage"]);
		unset($_SESSION[$this->id."_"."customslike"]);*/

		//generiramo stopnjo zaključek
		$this->generate_stopnja($this->jezik['add_zakljucek']);
		$this->tpl->newBlock("zakljucek");

		//preverimo če so pravilno izpolnjene vse stopnje (glede na SESSION iz checkRequired());
		$num = count($this->settings['editor_stopnja'])-1;
		for($i = 1; $i<=$num; $i++) {
			if($_SESSION[$this->id."_".$i."_"."editorok"] != "ok") {
				$napaka = true;
				$napaka_stage[] = $i;
			}

		}
		//generiramo seznam napak, če obstajajo
		$napaka_stopnja = "";
		if($napaka_stage) {
			foreach($napaka_stage AS $value) {
				$napaka_stopnja .= $this->settings['editor_stopnja'][$value-1].", ";
			}
		}
		//če so neizpolnjena polja generiramo opozorilo
		if($napaka) {
			$this->tpl->assign("opozorilo",$this->jezik['add_nisoizpolnjena'] . ": ".strtoupper($napaka_stopnja));
			$this->tpl->assign("opomba",$this->jezik['add_shranite_neizpolnjeno']);
		}
		//generiramo opozorilo, ki dovoljuje potrditev
		else {
			$this->tpl->assign("opomba",$this->jezik['add_shranite_izpolnjeno']);
		}

		//če ni napake generiramo gumb objavi
		//if(!$napaka) {
			$this->generate_gumb_objavi();
//		}
	}

/* Funkcija dobi podatke določenega Itema iz standardne tabele (definirane v $mod_settings['tabela'])
 * klicano iz: @editor:generate_naslov() - lib_editor_generate.php
 *					@editor:generate_field() - lib_editor_generate.php
 *					@editor:generate_poljeSlika() - lib_editor_generate.php
 */
	public function get_field_value(){
		if($this->id) {
			$result = $this->db->query("SELECT * FROM ".$this->settings['tabela']." WHERE id = '$this->id'");
			return $result->fetch();
		}
		else {
			return null;
		}
	}

/* Funkcija dobi podatke določenega Itema iz jezikovne tabele trenutno izbranega jezika
 * klicano iz: @editor:generate_naslov() - lib_editor_generate.php
 *					@editor:generate_field() - lib_editor_generate.php
 * @parameter: $trenutni_jezik predstavlja trenutno izbran jezik v editorju
 */
	public function get_field_lang_value($trenutni_jezik) {
		if($this->id) {
			$result = $this->db->query("SELECT * FROM ".$this->settings['tabela']."_".$trenutni_jezik." WHERE item_id = '$this->id'");
			return $result->fetch();
		}
		else {
			return null;
		}
	}

/* Funkcija generira polja za editor
 * klicano iz: @ - custom_editor.php
 *					@editor:generate_galerija() - lib_editor_generate.php
 * v verziji je bilo poleg ostalih polj še $slika = "" in $upload_value = "", v 3.1 je bilo odstranjeno (pravtako iz kode), če bodo težave glej katero izmed arhivskih kod
 * @parameter: $ime določa polje v databazi (ter name v HTMLju)
 * @parameter: $ime_prikaz je opis, ki se prikaže nad poljem,
 * @parameter: $tip določa vrsto polja ki se generira, $jezikovno_pogojeno določa, če je polje večjezično,
 * @parameter: $fieldvalue prenaša vrednost polja (če vrednost ni standardna)
 * @parameter: $dbvalue določa vrednost polja iz nestandardne databaze (za primerjavo)
 * @parameter: $sub_tip določa tip kategorija, uporabno kadar se uporablja sublevele, v bazi mora imeti kat_tabela polje tip!
 */
	public function generate_field($ime, $ime_prikaz, $tip, $jezikovno_pogojeno = "", $fieldvalue = "", $dbvalue = "", $sub_tip="")
	{
		//če je polje obvezno ($this->obveznapolja dobimo preko funkcije editor:required())
		if(in_array($ime, $this->obveznapolja)) {
			$zahtevano = " required";
			$mark = " *";
		}
		//če gre za podatke dobljene iz nestandardnih tabel (pri galeriji ali sliki)
		if($dbvalue) {
			//določimo vrednost polj v tabeli, ki so preneseni preko funkcije
			$value = $dbvalue;
		}
		//podatki so dobljeni iz standardnih tabel ($mod_settings['tabela'])
		else {
			//če je polje jezikovno pogojeno
			if($jezikovno_pogojeno) {
				$this->tpl->assign("langclass","editor_lang_znakec");
				$this->tpl->assign("jezik",strtoupper($this->trenutni_jezik));
				$lang = $this->trenutni_jezik."_";

				//vrnemo vrednosti iz databaze če obstajajo
				if($this->get_field_lang_value($this->trenutni_jezik))
				{
					$r = $this->get_field_lang_value($this->trenutni_jezik);
					$value = $r[$ime];
				}
			}
			//polje ni jezikovno pogojeno
			else
			{
				$this->tpl->assign("langclass","editor_lang_znakec_off");
				$lang = "";

				//vrnemo vrednosti iz databaze če obstajajo
				if($this->get_field_value()) {
					$r = $this->get_field_value();
					$value = $r[$ime];
				}
			}
		}

		//RichTextEditor je false (zaenkrat)
		if(!$this->rich) {
			$this->rich = false;
		}

		//generiramo vrednost glede na podan tip polja
		switch($tip) {
			//standardno tekstovno polje
			case "text":
				$clase = "editor_input_text";
				if($fieldvalue) {
					$value = $fieldvalue;
				}
				$polje = "<input type='text' class='".$clase.$zahtevano."' name='".$lang.$ime."' value='$value'/>";
				break;
			//datum polje z koledarjem
			case "datum":
			//preverimo če datum sploh omogočen v nastavitvah
			if($this->settings['active_datumselect']) {
				$datum = formatDateFromDB($value, "date");
				//preprečimo prazen datum
				if($datum == "00.00.0000") {
					$datum = "";
				}
				$polje = "<input type='text' class='datumPicker ".$clase.$zahtevano."' id='".$lang.$ime."' name='".$lang.$ime."' value='$datum'/>";
			}
			else {
				napaka("Za delovanje koledarčka mora biti mod_settings['active_datumselect'] nastavljen na true!");
			}
			break;
			//slikovno polje
			case "imgtext":
				$clase = "slika_input_text";
				$polje = "<input type='text' class='".$clase.$zahtevano."' name='".$lang.$ime."' value='$fieldvalue'/>";
				//v kateri template dodamo polje
				$slikovno_polje = true;
			break;
			//polje z geslom
			case "password":
				$clase = "editor_input_text";
				$polje = "<input type='password' class='".$clase.$zahtevano."' name='".$lang.$ime."'/>";
			break;
			//standardna textarea
			case "textarea":
				$polje = "<textarea class='editor_input_textarea".$zahtevano."' id='".$ime."' name='".$lang.$ime."'/>$value</textarea>";
			break;
			//textarea z RTF editorjem
			case "richtextarea":
			//preverimo če RTFeditor sploh omogočen v nastavitvah
			if($this->settings['active_rtf']) {
				$polje = "<textarea class='editor_input_textarea richtextarea".$zahtevano."' id='".$lang.$ime."' name='".$lang.$ime."'/>$value</textarea>";
				$this->rich = true;
			}
			else {
				napaka("Za delovanje RTFeditorja mora biti mod_settings['active_rtf'] nastavljen na true!");
			}
			break;
			case "radiobutton":
				$polje = "";
				foreach($fieldvalue AS $fvalue) {
					if($value == $fvalue) {
						$checked = " checked=true";
					}
					else {
						$checked = "";
					}
					$polje .= "<input type='radio' class='".$zahtevano."' name='".$lang.$ime."'".$checked." value='$fvalue'>$fvalue<br/>";
				}
				break;
			case "checkbox":
				if($value == $fieldvalue) {
					$checked = " checked=true";
				}
				else {
					$checked = "";
				}
				$polje = "<input type='checkbox' class='".$zahtevano."' name='".$lang.$ime."'".$checked." value='$fieldvalue'>";
				break;
			case "izberi":
			case "imgizberi":
				$polje = "<select class='editor_input_select".$zahtevano."' name='".$lang.$ime."'>";
				//custom napis za drop down menu (definira se preko funkcije editor:customIzberiNapisSet())
				if(isset($this->customIzberiNapis)) {
					if($this->customIzberiNapis == "prazno") {
						$napis = "";
					}
					else {
						$napis = $this->customIzberiNapis;
					}
				}
				else {
					$napis = $this->jezik['add_izberivrednost'];
				}
				if($napis) {
					$polje .= "<option value=''>" . $napis . "</option>";
				}
				if($fieldvalue) {
					foreach($fieldvalue AS $vrednost => $prikaz) 	{
						if($value == $vrednost) {
							$selected = "selected='selected'";
						}
						else {
							$selected = "";
						}
						$polje .= "<option value='$vrednost'$selected>$prikaz</option>";
					}

					$polje .= "</select>";
				}
				//če je imgizberi
				if($tip == "imgizberi"){
					//v kateri template dodamo polje
					$slikovno_polje = true;
				}
				break;
			case "kategorija":
				$polje = "<select class='editor_input_select".$zahtevano."' name='$ime'>";
				$polje .= "<option value=''>" . $this->jezik['add_izberikategorijo'] . "</option>";
				//če gre za enonivojsko kategorijo
				if($this->settings['no_multi_kategorija']) {
					$sqlParent = "";
				}
				else {
					$sqlParent = " WHERE parent='0'";
				}
				
				if(!$sub_tip){
					$result = $this->db->query("SELECT id, ime FROM ".$this->settings['kat_tabela'].$sqlParent." ORDER BY ime DESC;");
				}else{
					$result = $this->db->query("SELECT id, ime FROM ".$this->settings['kat_tabela'].$sqlParent." WHERE tip=".$sub_tip." ORDER BY ime DESC;");
				}
				while($r = $result->fetch()) {
					if($value == $r['id']) {
						$selected = "selected='selected'";
					}
					else {
						$selected = "";
					}
					$polje .= "<option value='$r[id]'$selected>$r[ime]</option>";

					//če ni nastavljene multinivojske spremenljivke (torej so multinivojske kategorije)
					if(!$this->settings['no_multi_kategorija']) {
						//Še podkategorije
						if(!$sub_tip){
							$result2 = $this->db->query("SELECT id, ime FROM ".$this->settings['kat_tabela']." WHERE parent=" . $r['id'] . " ORDER BY ime DESC;");
						}else{
							$result2 = $this->db->query("SELECT id, ime FROM ".$this->settings['kat_tabela']." WHERE parent=" . $r['id'] . " AND tip=".$sub_tip." ORDER BY ime DESC;");
						}
						while($r2 = $result2->fetch()) {
							if($value == $r2['id']) {
								$selected = "selected='selected'";
							}
							else {
								$selected = "";
							}
							$polje .= "<option value='$r2[id]'$selected>&nbsp;&nbsp;&nbsp;&nbsp;> $r2[ime]</option>";

							//3 Level
							if(!$sub_tip){
								$result3 = $this->db->query("SELECT id, ime FROM ".$this->settings['kat_tabela']." WHERE parent=" . $r2['id'] . " ORDER BY ime DESC;");
							}else{
								$result3 = $this->db->query("SELECT id, ime FROM ".$this->settings['kat_tabela']." WHERE parent=" . $r2['id'] . " AND tip=".$sub_tip." ORDER BY ime DESC;");
							}
							while($r3 = $result3->fetch()) {
								if($value == $r3['id']) {
									$selected = "selected='selected'";
								}
								else {
									$selected = "";
								}
								$polje .= "<option value='$r3[id]'$selected>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;> $r3[ime]</option>";
							}
						}
					}
				}
				$polje .= "</select>";
				break;
				default:
					napaka("Prišlo je do napake pri generiranju editorja na funkciji generate_field(), naveden je napačen tip!");
				break;
		}

		//generiramo template iz dobljenih podatkov
		$this->generate_field_template($polje, $ime, $ime_prikaz.$mark, $jezikovno_pogojeno, $slikovno_polje);

		//če je nastavljen RTF editor
		$this->isRichEditor();
		//če je nastavljen koledarček
		$this->isSelectDatum();
	}

/* Funkcija generira template iz generate_field(), lahko pa se uporabi tudi za custom generiranje polja
 * klicano iz: @editor:generate_field() - lib_editor_generate.php
 *					@  - custom_editor.php
 * @parameter: $polje predstavlja html inputa
 * @parameter: $ime je html name
 * @parameter: $ime_prikaz je opis ki se prikaže nad inputom,
 * @parameter: $jezikovno_pogojeno definira če je polj odvisno od jezikov
 * @parameter: $slikovno_polje določa v katerem delu templata se generira
 */
	public function generate_field_template($polje, $ime, $ime_prikaz, $jezikovno_pogojeno, $slikovno_polje = false){
		//preverimo kakšen je tip polja (slikovno, datotečno ali standardno)
		if($slikovno_polje) {
			$this->tpl->gotoBlock("slika_polje");
			$this->tpl->newBlock("slika_polje_box");

			$this->tpl->gotoBlock("datoteka_polje");
			$this->tpl->newBlock("slika_polje_box");
		}
		else {
			$this->tpl->newBlock("polje");
		}

		//če je polje jezikovno pogojeno
		if($jezikovno_pogojeno) {
			$this->tpl->assign("langclass","editor_lang_znakec");
			$this->tpl->assign("jezik",strtoupper($this->trenutni_jezik));
		}
		//polje ni jezikovno pogojeno
		else
		{
			$this->tpl->assign("langclass","editor_lang_znakec_off");
		}
		//zapišemo vrednosti v template
		$this->tpl->assign("naziv",$ime_prikaz);
		$this->tpl->assign("name",$ime);
		$this->tpl->assign("polje",$polje);
	}

/* Funkcija omogoči koledarček (pripravi pogoje za JS)
 * klicano iz: @editor:generate_field() - lib_editor_generate.php
 */
	private function isSelectDatum() {
		$this->tpl->gotoBlock("razdelek");
		//če je omogočen znotraj nastavitev
		if($this->settings['active_datumselect']) {
			$this->tpl->assign("selectdatum","true");
		}
		else {
			$this->tpl->assign("selectdatum","false");
		}
	}

/* Funkcija omogoči RTFeditor (pripravi pogoje za JS)
 * klicano iz: @editor:generate_field() - lib_editor_generate.php
 */
	private function isRichEditor()	{
		$this->tpl->gotoBlock("razdelek");
		if($this->rich) {
			$this->tpl->assign("richeditor","true");
		}
		else {
			$this->tpl->assign("richeditor","false");
		}
	}

/* Funkcija v custom_editor.php nastavi katera polja so obvezna
 * klicano iz: @ - custom_editor.php
 * @parameter: $fields je array, ki definira katera polja so obvezna (preko editor:generate_field)
 */
	public function required($fields)	{
		$this->obveznapolja = $fields;
	}

/* Funkcija definira custom napis, če ni izbrane vrednosti za generiran tip izberi
 * klicano iz: @ - custom_editor.php
 */
	public function customIzberiNapisSet($value){
		$this->customIzberiNapis = $value;
	}

/* Funkcija definira, da je določeno polje obvezno
 * klicano iz: @editor:generate_poljeSlika() - lib_editor_generate.php
 *					@editor:generate_galerija() - lib_editor_generate.php
 *					@editor:generate_datoteka() - lib_editor_generate.php
 */
	private function generateRequired()	{
		$this->tpl->newBlock("obvazno_polje");
	}

/* Funkcija generira polje, ki omogoča upload slike v standardno tabelo
 * klicano iz: @ - custom_editor.php
 * @parameter: $obvezno - definira če mora biti slika nujno podana
 * @parameter: $custom_polje - omogoča zapis podatka v databazo pod drugačnim imenom (standardno je slika)
 */
	public function generate_poljeSlika($obvezno = false, $custom_polje = "slika") {
		//generiramo session, ki definira morebitne nestandardne custom slike (zaradi varnosti)
		$_SESSION[$this->id."_"."customslike"][] = $custom_polje;

		//dobimo podatke o obstoječi sliki
		$r = $this->get_field_value();
		//če podatki obstajajo izpišemo podatke o obstoječi sliki
		if($r[$custom_polje]) {
			$this->tpl->newBlock("slika_polje");
			$this->tpl->newBlock("slika_polje_slika");
			$this->tpl->assign("slika",$this->settings['slika_path'].$r[$custom_polje]);
			$this->tpl->gotoBlock("slika_polje");
			$this->tpl->assign("slika_name",$r[$custom_polje]);
			//custom funkcija za izbris slik
			if($custom_polje !=  "slika") {
				$funkcija = $custom_polje;
			}
			$this->tpl->assign("slika_izbris","remove_slika('".$funkcija."')");
		}
		//izpišemo upload polje (če ni podane slike)
		else		{
			$this->generate_addUpload($custom_polje);
			if($obvezno) {
				$this->generateRequired();
			}
		}
	}

/* Funkcija generira polje galerija, možno je tudi dodajanje videa
 * klicano iz: @ - custom_editor.php
 * @parameter: $obvezno - definira če mora biti slika nujno podana
 * @parameter: $order - določa po čim se razvrščajo slike (če je false se razvrščajo po vrstnem_redu - če je nastavljen $mod_settings['galerija_vrstni_red'])
 * v verziji 3.1 so bili odstranjeni parametri ($opis = false in $opis_lang = false), za dodatna polja uporabi generate_galerija_field()
 */
	public function generate_galerija($obvezno = false, $order = false) {
		//če je definirano custom razvrščanje
		if($order) {
			$order = " ORDER BY ".$order;
		}
		//definirano je standarno razvrščanje
		else {
			//razvrstimo po vrstnem redu (če je nastavljen $mod_settings['galerija_vrstni_red'])
			if($this->settings['galerija_vrstni_red']) {
				$order = " ORDER BY vrstni_red";
			}
			//ni razvrščanja
			else {
				$order = "";
			}
		}
		//dobimo obstoječe podatke
		$result = $this->db->query("SELECT * FROM ".$this->settings['galerija_tabela']." WHERE item_id = '$this->id' ".$order);
		$i = 0;
		while($r = $result->fetch()) {
			//če je več kot ena slika dodamo razdelek
			if($i > 0) {
				$this->generate_razdelek();
			}
			$i++;
			//prikažemo sliko
			$this->tpl->newBlock("slika_polje");
			if($r['slika']){
				$this->tpl->newBlock("slika_polje_slika");
				$this->tpl->assign("slika",$this->settings['slika_path'].$r['slika']);
				$this->tpl->gotoBlock("slika_polje");
				$this->tpl->assign("slika_name",$r['slika']);
				$this->tpl->assign("slika_izbris","remove_slika_galerija('$r[id]')");
			}
			//gre za video
			elseif(!$r['slika'] AND $r['video']) {
				$this->tpl->newBlock("slika_polje_video");
				$this->tpl->gotoBlock("slika_polje");
				$this->tpl->assign("slika_name",$r['video']);
				$this->tpl->assign("slika_izbris","remove_video_galerija('$r[id]')");
			}

			//generiranje polj v galeriji preko editor:generate_upload_field()
			if(count($this->galerijaPoljeName) > 0) {
				for ($i = 0; $i < count($this->galerijaPoljeType); $i++) {
					//če je polje jezikovno pogojeno
					if($this->galerijaPoljeLang[$i]){
						$jezik = $this->trenutni_jezik."_";
					}
					else {
						$jezik = "";
					}
					//ponastavimo spremenljivko $vrednost
					unset($vrednost);
					if($this->galerijaPoljeValue[$i]) {
						$vrednost = $r[$jezik.$this->galerijaPoljeName[$i]];
						$db_value = $this->galerijaPoljeValue[$i];
					}
					else {
						$vrednost = $r[$jezik.$this->galerijaPoljeName[$i]];
						$db_value = "";
					}
					//generiramo polje preko editor:generate_field()
					$this->generate_field($this->galerijaPoljeName[$i]."_".$r['id'], $this->galerijaPoljeName[$i],$this->galerijaPoljeType[$i],$this->galerijaPoljeLang[$i],$vrednost,$db_value);
				}
			}
			//če ima galerija vrstni red
			if($this->settings['galerija_vrstni_red']) {
				$this->tpl->newBlock("slika_polje_vrstni_red");
				$this->tpl->assign("id",$r['id']);
			}
		}
		//generiramo polje za upload
		$this->generate_addUpload("galerija");

		//generiramo zahtevo po obveznem polju če je nastavljena
		if($i == 0 AND $obvezno) {
			$this->generateRequired();
		}
	}

/* Funkcija poskrbi za generiranje polj znotraj galerije (npr. opis...),
 * v custom_editor.php mora biti klicana pred editor:generate_galerija()
 * klicano iz: @ - custom_editor.php
 * @parameter: $type - definiramo tip (glede na editor:generate_field)
 * @parameter: $name - definiramo ime v databazi oz. ime polja v htmlju
 * @parameter: $jezikovno_pogojeno - definiramo če je polje jezikovno pogojeno (v tabeli galerija z prefiksom jezik_)
 * @parameter: $value - morebitna dodatna vrednost (uporabno predvsem za imgizberi)
 * pred 3.1 se je funkcija imenovala generate_upload_field
 */
	public function generate_galerija_field($type, $name, $jezikovno_pogojeno = false, $value = null) {
		//nastavimo prazne spremenljivke za custom polje pri galeriji
		if(!isset($this->galerijaPoljeType)) {
			$this->galerijaPoljeType = array();
			$this->galerijaPoljeName = array();
			$this->galerijaPoljeValue = array();
			$this->galerijaPoljeLang = array();
		}

		//nastavimo vrednost v spremenljivke
		$this->galerijaPoljeType[] = $type;
		$this->galerijaPoljeName[] = $name;
		$this->galerijaPoljeValue[] = $value;
		$this->galerijaPoljeLang[] = $jezikovno_pogojeno;
	}

/* Funkcija poskrbi za generiranje polj znotraj detotek (npr. opis...),
 * v custom_editor.php mora biti klicana pred editor:generate_datoteka()
 * klicano iz: @ - custom_editor.php
 * @parameter: $type - definiramo tip (glede na editor:generate_field)
 * @parameter: $name - definiramo ime v databazi oz. ime polja v htmlju
 * @parameter: $jezikovno_pogojeno - definiramo če je polje jezikovno pogojeno (v tabeli galerija z prefiksom jezik_)
 * @parameter: $value - morebitna dodatna vrednost (uporabno predvsem za imgizberi)
 * pred 3.1 se je funkcija imenovala generate_upload_field
 */
	public function generate_datoteka_field($type, $name, $jezikovno_pogojeno = false, $value = null) {
		//nastavimo prazne spremenljivke za custom polje pri galeriji
		if(!isset($this->datotekaPoljeType)) {
			$this->datotekaPoljeType = array();
			$this->datotekaPoljeName = array();
			$this->datotekaPoljeValue = array();
			$this->datotekaPoljeLang = array();
		}

		//nastavimo vrednost v spremenljivke
		$this->datotekaPoljeType[] = $type;
		$this->datotekaPoljeName[] = $name;
		$this->datotekaPoljeValue[] = $value;
		$this->datotekaPoljeLang[] = $jezikovno_pogojeno;
	}

/* Funkcija generira seznam datotek v editorju
 * klicano iz: @ - custom_editor.php
 * @parameter: $obvezno določa če mora biti dodana vsaj ena datoteka, da je vnos pravilen
 * @parameter: $jezikovno_pogojeno določa, če so datoteke odvisne od izbranega jezika
 */
	public function generate_datoteka($obvezno = false,$jezikovno_pogojeno = false) {
		//če so datoteke jezikovno pogojene
		if($jezikovno_pogojeno) {
			//generiramo session, ki definira da so datoteke jezikovno pogojene (uporabljen pri shranjevanju v lib_editor_save.php)
			$_SESSION[$this->id."_".$_SESSION['editor_stopnja']."_"."datotekejezik"] = true;
			$_SESSION[$this->id."_"."datotekejezikStage"] = $_SESSION['editor_stopnja'];

			$sql_dodatek = " AND lang='$this->trenutni_jezik'";
			//generiramo opombo, da so datoteke jezikovno pogojene
			$this->tpl->newBlock("top_opozorilo_custom");
			$this->tpl->assign("custom_opozorilo","<br/>".$this->jezik['editor_datotekejezikovnopogojene']);
		}
		//poberemo datoteke iz baze
		$result = $this->db->query("SELECT * FROM ".$this->settings['datoteke_tabela']." WHERE item_id = '$this->id'".$sql_dodatek);
		$i = 0;
		while($r = $result->fetch()) {
			//če je več kot ena datoteka dodamo razdelek
			if($i > 0) {
				$this->generate_razdelek();
			}
			$i++;
			$this->tpl->newBlock("datoteka_polje");
			$this->tpl->assign("datoteka_name",$r['datoteka']);
			$this->tpl->assign("id",$r['id']);

			//dobimo ustrezno ikono za določen tip datoteke, klicano iz lib_simple_template.php
			$ikona = get_ikona_za_datoteko($r['datoteka']);
			$this->tpl->assign("ikona",$ikona);

			//generiranje polj v datotekah preko editor:generate_datoteka_field()
			if(count($this->datotekaPoljeName) > 0) {
				for ($i = 0; $i < count($this->datotekaPoljeType); $i++) {
					//če je polje jezikovno pogojeno
					if($this->datotekaPoljeLang[$i]){
						$jezik = $this->trenutni_jezik."_";
					}
					else {
						$jezik = "";
					}
					//ponastavimo spremenljivko $vrednost
					unset($vrednost);
					if($this->datotekaPoljeValue[$i]) {
						$vrednost = $r[$jezik.$this->datotekaPoljeName[$i]];
						$db_value = $this->datotekaPoljeValue[$i];
					}
					else {
						$vrednost = $r[$jezik.$this->datotekaPoljeName[$i]];
						$db_value = "";
					}
					//generiramo polje preko editor:generate_field()
					$this->generate_field($this->datotekaPoljeName[$i]."_".$r['id'], $this->datotekaPoljeName[$i],$this->datotekaPoljeType[$i],$this->datotekaPoljeLang[$i],$vrednost,$db_value);
				}
			}

		}

		//generiramo polje za upload
		$this->generate_addUpload("datoteke");

		//če gre za obvezna polja
		if($i == 0 AND $obvezno) {
			$this->generateRequired();
		}
	}

/* Funkcija generira gumb za upload
 * klicano iz: @editor:generate_datoteka() - lib_editor_generate.php
 *					@editor:generate_galerija() - lib_editor_generate.php
 *					@editor:generate_poljeSlika() - lib_editor_generate.php
 * @parameter: $tip določa kateri tip gumba se pojavi (za datoteke, za slike)
 */
	private function generate_addUpload($tip) {
		$this->tpl->newBlock("slika_dodaj");
		//preverimo kateri tip gumba dodamo
		switch($tip) {
			case "datoteke":
				$this->tpl->assign("napis",$this->jezik['add_dodajdatoteko']);
				$dovoljeno = $this->settings['editor_allowed_file'];
			break;
			default:
				$this->tpl->assign("napis",$this->jezik['add_dodajsliko']);
				$dovoljeno = $this->settings['editor_allowed_image'];
			break;
		}
		//generiramo utrezen seznam za dovoljene tipe datotek iz $mod_settings['editor_allowed_file'] ali $mod_settings['editor_allowed_image']
		$allowed = "";
		foreach($dovoljeno AS $value) {
			$allowed .= "*".$value.";";
		}
		//nastavimo spremenljivke, ki se uporabljajo v ajaxu (predvsem pri prenostu datotek)
		$this->tpl->assign("lang",$this->trenutni_jezik);
		$this->tpl->assign("tip",$tip);
		$this->tpl->assign("session",session_id());
		$this->tpl->assign("file_types",$allowed);
		$this->tpl->assign("max_size",$this->settings['editor_max_file_size']);
	}

/* Funkcija generira brskalnik za dodajanje datotek iz predefiniranega folderja v galerijo
 * klicano iz: @ - custom_editor.php
 * @parameter: $folder določa iz katere datoteke lahko uporabnik izbira posamezne datoteke
 */
	public function generate_addBrowser($folder){
		//generiramo session, ki določa po katerem folderju je doboljeno brskanje
		$_SESSION[$this->id."_"."browserpathStage"] = $_SESSION['editor_stopnja'];
		$_SESSION[$this->id."_".$_SESSION['editor_stopnja']."_"."browserpath"] = $folder;
		//generiramo gumb v templatu
		$this->tpl->newBlock("flash_dodaj");
		$this->tpl->assign("napis",$this->jezik['add_dodajobstojecodatoteko']);
		$this->tpl->assign("path",$folder);
	}

/* Funkcija se uporablja izključno za klicanje custom templata
 * klicano iz: @ - mod/nastavitve/dostop/
 * ZASTARELO, v prihodnje bo odstranjena
 */
	public function generate_custom() {
		$this->tpl->newBlock("custom_editor");
	}

/* Funkcija se uporablja za dinamično dodajanje polj preko javascripta
 * klicano iz: @ - custom_edit.php
 */
	public function generate_addField($target){
		$this->tpl->newBlock("field_dodaj");
		$this->tpl->assign("num_fields","0");
		$this->tpl->assign("field_name","Odgovor");
		$this->tpl->assign("target",$target);
	}
	
/* Funkcija generira nivo, ki se lahko uporablja za različne sezname
 * klicano iz: @ - custom_editor.php
 * @parameter: $order - določa po čim se razvrščajo elementi (če je false se razvrščajo po vrstnem_redu - če je nastavljen $mod_settings['seznam_vrstni_red'])
 */
	public function generate_seznam($naslov = "Naslov", $vrednost = "Vrednost", $tabela = 'seznam_tabela',$order = 'id') {
		//če je definirano custom razvrščanje
		if($order) {
			$order = " ORDER BY ".$order;
		}
		//definirano je standarno razvrščanje
		else {
			//razvrstimo po vrstnem redu (če je nastavljen $mod_settings['seznam_vrstni_red'])
			if($this->settings['seznam_vrstni_red']) {
				$order = " ORDER BY vrstni_red";
			}
			//ni razvrščanja
			else {
				$order = "";
			}
		}
		//dobimo obstoječe podatke
		$result = $this->db->query("SELECT * FROM ".$this->settings[$tabela]." WHERE item_id = '$this->id' ".$order);
		$i = 0;
		while($r = $result->fetch()) {
			//če je več kot en element dodamo razdelek
			if($i > 0) {
				$this->generate_razdelek();
			}
			$i++;
			//prikažemo element
			$this->tpl->newBlock("seznam_polje");
			$this->generate_field("naslov[".$r['id']."]", $naslov, "text", false, "",$r['naslov']);
			$this->generate_field("vrednost[".$r['id']."]", $vrednost, "text", false, "",$r['vrednost']);
			$this->tpl->newBlock("polje_seznam_izbrisi");
			$this->tpl->assign("tabelca",$this->settings[$tabela]);
			$this->tpl->assign("tabela",$tabela);
			$this->tpl->assign("id",$r['id']);

			//če ima seznam vrstni red
			if($this->settings['seznam_vrstni_red']) {
				$this->tpl->newBlock("seznam_polje_vrstni_red");
				$this->tpl->assign("id",$r['id']);
			}
		}
		//generiramo polje za upload
		$result = $this->db->query("SELECT id FROM ".$this->settings[$tabela]." ORDER BY id DESC LIMIT 1");
		$r = $result ->fetch();
		$nov_id = $r['id'] + '1';
		$this->generate_addSeznamElement($nov_id,$this->id,$tabela);

	}
	
/*funkcija za dodajo gumba nov vnos v seznam */	
	private function generate_addSeznamElement($id,$parent_id,$tabela = 'seznam_tabela') {
		$this->generate_razdelek();
		$this->tpl->newBlock("polje_seznam_nov");
		$this->tpl->assign("id",$id);
		$this->tpl->assign("parent_id",$parent_id);
		$this->tpl->assign("tabela",$tabela);
		
	}
	
/* Funkcija se uporablja za generiranje novega nivoja
 * klicano iz: 
 */	
	
	public function generate_newLevel($child, $child_tabela,$child_default_ime,$child_default_field,$order = false) {
		global $tpl;
		/*echo $this->modul_selected;
		echo($parent." : ");
		echo($child ." : ". $child_tabela ." : ". $child_default_ime ." : ". $child_default_field);
		$parent_settings = $this->settings;*/
		//$noviLevel = '1';
		$_SESSION['back_modul'] = $_SESSION['modul'];
		$_SESSION['back_modul_id'] = $_SESSION['modul_id'];
		$_SESSION['back_act'] = $_SESSION['act'];
		$_SESSION['back_stopnja'] = $_SESSION['editor_stopnja'];
		$_SESSION['back_itemid'] = $this->id;
		
		if($order) {
			$order = " ORDER BY ".$order;
		}
		//definirano je standarno razvrščanje
		else {
				$order = "";
		}
		
		//shranimo ime za navigacijo
		if(strpos($this->settings['listing_db_polja'][0], '.') === false) {
			$ime = $this->get_field_value();
			$polje = $this->settings['listing_db_polja'][0];
		}
		//polje je jezikovno pogojeno
		else {
			$polje = explode(".", $this->settings['listing_db_polja'][0]);
			$polje = $polje[1];
			$ime = $this->get_field_lang_value($this->trenutni_jezik);
		}
		$_SESSION['sublevel_ime'] = $ime[$polje];
		
		$_SESSION['sublevel_active'] = '1';
		
		$result = $this->db->query("SELECT * FROM ".$child_tabela." WHERE osnutek='0' AND parent=".$this->id .$order);
		while($r = $result -> fetch()){
			$tpl->newBlock("polje_listing");
			$this->generate_razdelek();
			$tpl->gotoBlock("polje_listing");
			$tpl->assign("naziv", $r[$child_default_field]);
			$tpl->assign("modul",$this->modul_selected);
			$tpl->assign("act",$child);
			$tpl->assign("editid",$r['id']);
			$tpl->assign("slikca","i_uredi.png");
			$tpl->newBlock("polje_listing_izbrisi");
			$tpl->assign("tabelca",$child_tabela);
			$tpl->assign("id",$r['id']);
		}
		
		$result = $this->db->query("SELECT id FROM ".$child_tabela." ORDER BY id DESC LIMIT 1");
		$r = $result -> fetch();
		$r['id'] = $r['id']+'1';
		$tpl->newBlock("polje_listing");
		$tpl->assign("naziv","Nov vnos");
		$tpl->assign("modul",$this->modul_selected);
		$tpl->assign("act",$child);
		$tpl->assign("editid",$r['id']);
		$tpl->assign("slikca","i_nov_vnos_mali.png");
	}
	
	
	/* nov level z izpisom kategorij */
	
	public function generate_newLevel_kat($child, $child_tabela,$child_default_ime,$child_default_field,$order = false,$kat_table) {
		global $tpl;
		/*echo $this->modul_selected;
		echo($parent." : ");
		echo($child ." : ". $child_tabela ." : ". $child_default_ime ." : ". $child_default_field);
		$parent_settings = $this->settings;*/
		//$noviLevel = '1';
		$_SESSION['back_modul'] = $_SESSION['modul'];
		$_SESSION['back_modul_id'] = $_SESSION['modul_id'];
		$_SESSION['back_act'] = $_SESSION['act'];
		$_SESSION['back_stopnja'] = $_SESSION['editor_stopnja'];
		$_SESSION['back_itemid'] = $this->id;
		
		if($order) {
			$order = " ORDER BY ".$order;
		}
		//definirano je standarno razvrščanje
		else {
				$order = "";
		}
		
		//shranimo ime za navigacijo
		if(strpos($this->settings['listing_db_polja'][0], '.') === false) {
			$ime = $this->get_field_value();
			$polje = $this->settings['listing_db_polja'][0];
		}
		//polje je jezikovno pogojeno
		else {
			$polje = explode(".", $this->settings['listing_db_polja'][0]);
			$polje = $polje[1];
			$ime = $this->get_field_lang_value($this->trenutni_jezik);
		}
		$_SESSION['sublevel_ime'] = $ime[$polje];
		
		$_SESSION['sublevel_active'] = '1';
		
		// KATEGORIJE
		
		$kat = $this->db->query("SELECT DISTINCT k.id,k.ime FROM ".$kat_table." k,".$child_tabela." c WHERE k.osnutek='0' AND k.id=c.sub_kat AND c.parent=".$this->id);
		
		while($k=$kat->fetch()){
			$tpl->newBlock("listing_kategorija");
			
			$kategorija=$k['id'];
			
			$tpl->assign("vrednost",$k['ime']);
		
			$result = $this->db->query("SELECT * FROM ".$child_tabela." WHERE osnutek='0' AND sub_kat=$kategorija AND parent=".$this->id .$order);
			while($r = $result -> fetch()){
				$tpl->newBlock("polje_listing");
				$this->generate_razdelek();
				$tpl->gotoBlock("polje_listing");
				if($r[$child_default_field]==-1)
					$tpl->assign("naziv", $r['ime_char']);
				else
					$tpl->assign("naziv", $r[$child_default_field]);
				$tpl->assign("modul",$this->modul_selected);
				$tpl->assign("act",$child);
				$tpl->assign("editid",$r['id']);
				$tpl->assign("slikca","i_uredi.png");
				$tpl->newBlock("polje_listing_izbrisi");
				$tpl->assign("tabelca",$child_tabela);
				$tpl->assign("id",$r['id']);
			}
		
		}
		
		$result = $this->db->query("SELECT id FROM ".$child_tabela." ORDER BY id DESC LIMIT 1");
		$r = $result -> fetch();
		$r['id'] = $r['id']+'1';
		$tpl->newBlock("polje_listing");
		$tpl->assign("naziv","Nov vnos");
		$tpl->assign("modul",$this->modul_selected);
		$tpl->assign("act",$child);
		$tpl->assign("editid",$r['id']);
		$tpl->assign("slikca","i_nov_vnos_mali.png");
	}
}

/* AJAX generiranje editorja																	*/
/* ************************************************************************** */

//preverimo spremenljivke
$clean['stopnja'] = intval($_POST['stopnja']);
$clean['id'] = intval($_POST['id']);
if(in_array($_POST['lang'],$mod_settings['active_lang'])) {
	$clean['trenutni_jezik'] = $_POST['lang'];
}
//generiramo template
$tpl = new TemplatePower($ajax."templates/".$settings['template']."/moduli/editor.tpl");
$tpl->prepare();
$tpl->assignGlobal("template_dir", "templates/".$settings['template']);

//vključimo jezikovno datoteko
require('../lib_language.php');
//inicializiramo editor class
$editor = new editor($mod_settings, $clean, $modul_selected, $lang);

//vklučimo custom_editor.php izbranega modula
$editor_stage = "generate";
include($path."/custom_editor.php");

//vrnemo vsebino v brskalnik (preko ajaxa)
$tpl->printToScreen();

?>