Product | Technical support | Version | Video exhibits | Manuals | Job Search | Contact
English   menu-arrow-gray-horizontal.gif
Home > About the Product > Protection of the projects under Visual PHP™
Related information
Search


Video demonstration
Drag&drop in the Visual PHP™ Environment

Latest video samples:
Job Search
Company
E-VISION International s.r.o.

is looking for PHP 5 and JavaScript programmers for long-term cooperation.




More information ...
Wrote about Visual PHP™
News by e-mail
Your e-mail

Visual PHP Recommends
For Visual PHP™
(for work in both the developer and the administration interface), we recommend using the Mozilla Firefox web browser, on the basis of which the whole software is developed because of stability, complying with the W3C standards and protecting elements of the browser.

How to create your own component

Někdy nastane situace, kdy potřebujete vložit svou vlastní komponentu namísto výchozích vizuálních komponent (TEXT, TEXTAREA, COMBOBOX, CHECKBOX, HTMLAREA, LOOKUP, ...). Ukážeme si, jak to lze za pomocí událostí komponent zvládnout.

Každá komponenta má k dispozici tyto hlavní události, pomocí kterých lze vlastní komponenty implementovat:

onGetCode($recordValues)                              // zobrazuje HTML kód komponenty pro editaci obsahu
onGetDBValue($beforeRecordValues, $afterRecordValues) // vrací hodnotu, která bude uložena do databáze
onGetDisplayValue($recordValues)                      // zobrazuje hodnotu pro výstup na www
Představme si příklad, že potřebujeme vytvořit takovou komponentu, kde uživatel v administraci (aby to nemusel přepočítávat ručně) zadá pouze číselnou hodnotu hmotnosti a současně i vybere měrnou jednotku (g, kg, t) a systém sám převede hodnotu na kilogramy (v poli tabulky potřebujeme mít uloženou hodnotu ve stejných jednotkách) a uloží do databáze. Pro lidštější zobrazení obsahu na webu pak z této společné jednotky opět zobrazí hodnotu v gramech, kilogramech nebo tunách v závislosti na tom, jak velká je hodnota uložená v databázi.

Vytvoříme tedy nové pole weight s SQL typem DOUBLE a komponentou READONLY (tato komponenta obsahuje základní metody pro práci s daty a jejich zobrazování).

Kód pro editaci v administraci

Začneme zobrazením HTML kódu komponenty pro editaci obsahu pomocí metody onGetCode:
// prevedu jednotky z kg na g, kg, t
$value = $recordValues[$this->name];
if ($value < 1)
{
	$unit = "g";
	$value *= 1000;
}
else if ($value >= 1000)
{
	$unit = "t";
	$value /= 1000;
}

$html = "";
// zobrazím komponentu pro textové vstupní pole
$html .= "<input type='text' name='".$this->htmlName."[weight]' size='4' value='".$value."' />";

// zobrazím komponentu pro výběr měrné jednotky
$html .= "<select name='".$this->htmlName."[unit]' value='".$value."' >";
$html .= "<option value='g' ".($unit == "g" ? "selected='selected'" : "").">g</option>";
$html .= "<option value='kg' ".($unit == "kg" ? "selected='selected'" : "").">kg</option>";
$html .= "<option value='t' ".($unit == "t" ? "selected='selected'" : "").">t</option>";
$html .= "</select>";

return($html);
V kódu používáme $this->name a $this->htmlName, tedy výchozí proměnné komponenty, abychom nemuseli při změně jména pole upravovat všechny zdrojové kódy událostí. Po uložení této události se v administraci záznamu tabulky, kam jste tuto komponentu vložili, zobrazí následující komponenta:


Kód pro správné uložení hodnoty do databáze

Vkládané hodnoty jsou z formuláře zasílány najednou jako pole s klíči weight a unit, a proto potřebujeme událost onGetDBValue, která nám tyto hodnoty rozdělí, správně přepočítá na společnou jednotku kg a vrátí hodnotu, která má být následně uložena do databáze:
$value = $beforeRecordValues[$this->name];

if (is_array($value)) // jde o pole, tedy odesláno z administrace
{
	$unit = $value["unit"];
	$weight = $value["weight"];

	if ($unit == "g")
		$weight /= 1000;
	else if ($unit == "t")
		$weight *= 1000;
		
	return($weight);
}
else // nejde o pole, ale hodnotu nechceme ztratit - typicky jde o volání metod insertRecord, updateRecord objektu Table a jiné situace
{
        return($value);
}

Zobrazení hodnoty v přehledu administrace a na www

Poslední nám zbývá už jen samotné zobrazení na webu pomocí šablony. Pokud do šablony vložíte [weight], volá se právě metoda onGetDisplayValue. Protože jsme použili komponentu READONLY, zobrazí se nám nyní hodnota uložená v databázi, tedy hodnota v kilogramech bez uvedení jednotky - tedy pouze desetinné číslo. Abychom mohli zobrazit hodnotu v g, kg a t i s těmito jednotkami, použijeme událost onGetDisplayValue:
// prevedu jednotky z kg na g, kg, t
$value = $recordValues[$this->name];
if ($value < 1)
{
	$unit = "g";
	$value *= 1000;
}
else if ($value >= 1000)
{
	$unit = "t";
	$value /= 1000;
}
else
{
	$unit = "kg";
}

return($value." ".$unit);

Po zadání různých hodnot (400g, 2.6kg, 3t) se pak pomocí této události zobrazí v přehledu následující:



Related Articles



NOTICE

Some properties published in this article can only be functional with the latest core version. If you have any older core version, we recommend you to update to the latest version.

Login
Free trial

for 30 days
Latest core version
Single Developer 1.7.9.680
january 20, 2012

Professional 1.7.9.680
january 20, 2012

Enterprise 1.7.9.680
january 20, 2012


Latest developer guide
Developer Guide 1.0.5
july 10, 2009 9:36:42 AM

Latest user guide
Administrator Guide 1.0.24
august 27, 2010 11:58:08 AM

Latest install script
install.php 1.9.22
april 12, 2012 6:02:40 PM

Comming up in next version
more ...

rss.gif
Support

Fotogalerie 5/10/2012
Section: Tvorba prezentací
Chyba v hromadné korespondenci, nelze odeslat příloha (nová verze 4/6/2012
Section: Bug reporty
AntiSpam obrázek 4/6/2012
Section: Programování
Chyba při opravách textů 4/4/2012
Section: Bug reporty
Admin může smazat Developera, je to ok? 3/27/2012
Section: Bug reporty
Mapa webu 3/19/2012
Section: Tvorba prezentací


rss.gif
News

Weather Component Update
november 18, 2011
Server weather.com decided to stop providing weather information for free and passed to the paid version (about $ 60 per month). For this reason, we were forced to modify the Weather component to pulling weather information from another data source, namely from the server www.worldweatheronline.com . This site also provides information about weather all around the world, but the amount of information is smaller than the original source.

For proper functionality of the Weather component please update core to version 1.7.9.638.
Added new tutorials
october 4, 2011
He added new instructions Using another HTML editor
Powered by Visual PHP ™
© 2008 - 2010 E-VISION International, s.r.o.
Product | Technical support | Version | Video exhibits | Manuals | Job Search | Contact