Joomla 5.1.0 a Joomla 4.4.4 (17 dub 2024)
Dnes byla uvolněna nová verze Joomla 5.1.0, společně s Joomla 4.4.4. Tato verze přináší spoustu nových funkcí, vylepšení v oblasti bezpečnosti a kódu a díky těmto vylepšením i vyšší rychlost.
plugin - directPHP
23. říj 2013 12:35 #112026
Zkousim directPHP plugin pro prime vkladani php kodu editoru v clanku.
Zkousel jsem priklad vypsani dvou textovych poli s tlacitekem. To se po otevreni v clanku spravne zobrazi. Dale jsem chtel vyzkouset vypis dat z textovych poli po stistku tlacitka ale nefunguje to. Vypise to klasisckou chybovou stranku (Doslo k chybe stranka nenalezena). Lze to timto zpusobem pres directPHP vubec resit?
takto vypada kod:
<?php
//Je odeslan form
if (isset($_POST)) {
//Zpracovani formulare, nejaky vypis
echo "Submitted value of var1: ".$_POST."<br />";
echo "Submitted value of var2: ".$_POST."<br />";
} else {
echo '<form action="index.php" method="POST">
var1: <input name="var1"><br />
var2: <input name="var2"><br />
<input type="hidden" name="option" value="com_content">
<input type="hidden" name="Itemid" value="1">
<input type="hidden" name="id" value="2014">
<input type="hidden" name="task" value="view">
<input type="submit" value="Submit">
</form>';
}
?>
Zkousel jsem priklad vypsani dvou textovych poli s tlacitekem. To se po otevreni v clanku spravne zobrazi. Dale jsem chtel vyzkouset vypis dat z textovych poli po stistku tlacitka ale nefunguje to. Vypise to klasisckou chybovou stranku (Doslo k chybe stranka nenalezena). Lze to timto zpusobem pres directPHP vubec resit?
takto vypada kod:
<?php
//Je odeslan form
if (isset($_POST)) {
//Zpracovani formulare, nejaky vypis
echo "Submitted value of var1: ".$_POST."<br />";
echo "Submitted value of var2: ".$_POST."<br />";
} else {
echo '<form action="index.php" method="POST">
var1: <input name="var1"><br />
var2: <input name="var2"><br />
<input type="hidden" name="option" value="com_content">
<input type="hidden" name="Itemid" value="1">
<input type="hidden" name="id" value="2014">
<input type="hidden" name="task" value="view">
<input type="submit" value="Submit">
</form>';
}
?>
23. říj 2013 12:57 #112027
Odpověď od Houbák
Zkušený uživatel
Jakékoliv vkládání php kódu přímo do článku mi nepřijde moc vhodné.
Zkuste spíše popsat, čeho chcete docílit. Třeba se s tím již také někdo zabýval a přišel na vhodnější způsob, než je vkládání php kódu co článku.
Zkuste spíše popsat, čeho chcete docílit. Třeba se s tím již také někdo zabýval a přišel na vhodnější způsob, než je vkládání php kódu co článku.
23. říj 2013 13:35 #112028
Odpověď od zbynek
Pokročilý uživatel
Mel by to byt proklik na externi script, ktery ma pouze zobrazovaci funkci ale s rozlisovanim prav podle prave prihlaseneho uzivatele (tabulka s dokumenty a podle prav prave prihlaseneho uzivatele dalsi moznosti: generovani dokumentu, editace, zamceni, otevreni dokumentu).
Problem je prave v tom, ze v tabulce by se meli dale rozlisovat uzivatelska prava podle aktualne prihlaseneho uzivatele a muze samozrejme nastat situace, ze bude v jednu chvili prihlasenych vice uzivatelu a kazdy z nich bude mit trosku jina prava.
Myslel jsem si, ze bych nejak do directPHP zadratoval proklik z clanku na ten script a jeste pomoci toho predal tomu scriptu informace o prave prihlasenem uzivateli na dotycnem pocitaci s podle toho ve scriptu urcenymi pravy k manipulaci.
Uzivatel se musi pro zobrazeni toho prokliku ( podkategorie s clankem v menu) prihlasit pomoci modulu prihlasit(mod_login). Pricemz ten proklik by v tu cvhili spustil script ktery by otevrel ten externi script a soucasne mu predal jmeno prave prihlaseneho na to by se script zobrazil podle prav dotycneho uzivatele.
Problem je prave v tom, ze v tabulce by se meli dale rozlisovat uzivatelska prava podle aktualne prihlaseneho uzivatele a muze samozrejme nastat situace, ze bude v jednu chvili prihlasenych vice uzivatelu a kazdy z nich bude mit trosku jina prava.
Myslel jsem si, ze bych nejak do directPHP zadratoval proklik z clanku na ten script a jeste pomoci toho predal tomu scriptu informace o prave prihlasenem uzivateli na dotycnem pocitaci s podle toho ve scriptu urcenymi pravy k manipulaci.
Uzivatel se musi pro zobrazeni toho prokliku ( podkategorie s clankem v menu) prihlasit pomoci modulu prihlasit(mod_login). Pricemz ten proklik by v tu cvhili spustil script ktery by otevrel ten externi script a soucasne mu predal jmeno prave prihlaseneho na to by se script zobrazil podle prav dotycneho uzivatele.
24. říj 2013 09:04 - 24. říj 2013 09:16 #112040
Znáte-li řešení, sdělte ho - pomůžete ostatním při řešení stejného problému, i případný "rádce" bude vědět, poradil-li správně nebo špatně.
Odpověď od karel
Zkušený uživatel
Zbytečně si to komplikujete a máte nedostatky v základní logice.
1. V článku neřešte různé odkazy pro různé uživatele ("přinejhorším" by se dalo ještě pochopit, že potřebujete přihlášeným odkaz zobrazit, ostatním ne (ale i to lze řešit jinak, než vložením PHP do článku).
2. Na straně externího skriptu stejně potřebujete ověřit, zda je uživatel skutečně přihlášen, a "nedostal se k odkazu jinak".
3. Když už používáte důmyslný systém typu "redakční systém s vlastním, rozsáhlým frameworkem" snažte se ho využívat (jinak je to pokus o montování řidítek z tříkolky do automobilu).
K dotazům:
- v externím (PHP) skriptu můžete načíst Joomla framework (v závislosti na verzi J), např.:
forum.joomla.org/viewtopic.php?f=615&t=722954
www.minitek.gr/blog/joomla/joomla-api/ho...ide-an-external-file
atd...
- v externím (PHP) skriptu pak můžete snadno zobrazit/rozlišit právě přihlášeného uživatele:
a podmíněně (rozlišením uživatele) zobrazit další obsah (vše v externím skriptu), včetně rozlišení, zda je vůbec přihlášený ...
PS: pro správu dokumentů (i pro jiné účely) existují sofistikované komponenty, proč některé nevyužijete? (ve vlastním dotazu se nezmiňujete o řešení "dost závažných" detailech typu současné editaci jednoho dokumentu více uživateli (ošetření přepisování/zamykání), historie změn/přístupu, atd...)
1. V článku neřešte různé odkazy pro různé uživatele ("přinejhorším" by se dalo ještě pochopit, že potřebujete přihlášeným odkaz zobrazit, ostatním ne (ale i to lze řešit jinak, než vložením PHP do článku).
2. Na straně externího skriptu stejně potřebujete ověřit, zda je uživatel skutečně přihlášen, a "nedostal se k odkazu jinak".
3. Když už používáte důmyslný systém typu "redakční systém s vlastním, rozsáhlým frameworkem" snažte se ho využívat (jinak je to pokus o montování řidítek z tříkolky do automobilu).
K dotazům:
- v externím (PHP) skriptu můžete načíst Joomla framework (v závislosti na verzi J), např.:
forum.joomla.org/viewtopic.php?f=615&t=722954
www.minitek.gr/blog/joomla/joomla-api/ho...ide-an-external-file
atd...
- v externím (PHP) skriptu pak můžete snadno zobrazit/rozlišit právě přihlášeného uživatele:
Code:
$user =& JFactory::getUser();
$userId = $user->get( 'id' ); // id uživatele
$userGid = $user->get( 'gid' ); // skupina uživatele
a podmíněně (rozlišením uživatele) zobrazit další obsah (vše v externím skriptu), včetně rozlišení, zda je vůbec přihlášený ...
PS: pro správu dokumentů (i pro jiné účely) existují sofistikované komponenty, proč některé nevyužijete? (ve vlastním dotazu se nezmiňujete o řešení "dost závažných" detailech typu současné editaci jednoho dokumentu více uživateli (ošetření přepisování/zamykání), historie změn/přístupu, atd...)
Znáte-li řešení, sdělte ho - pomůžete ostatním při řešení stejného problému, i případný "rádce" bude vědět, poradil-li správně nebo špatně.
Poděkovali: zbynek
24. říj 2013 18:41 #112046
Odpověď od zbynek
Pokročilý uživatel
Diky moc za nasmerovani. Kdyz jsem si nechal vypsat pouze gid takto tak to nic nevypsalo:
$userGid = $user->get( 'gid' ); //vyzvednutí uživatelské skupiny uživatele
echo $userGid; // zjistit gid daného usera
Nechal jsme si tedy vypsat obsah $user a zadne gid tam ale taky neni.
Jak tedy vytahnu gid?
viz.:
JUser Object
(
[isRoot:protected] =>
[id] => 44
[name] => xxxxxx xxx
[username] => xxx
$userGid = $user->get( 'gid' ); //vyzvednutí uživatelské skupiny uživatele
echo $userGid; // zjistit gid daného usera
Nechal jsme si tedy vypsat obsah $user a zadne gid tam ale taky neni.
Jak tedy vytahnu gid?
viz.:
JUser Object
(
[isRoot:protected] =>
[id] => 44
[name] => xxxxxx xxx
[username] => xxx
24. říj 2013 23:16 - 24. říj 2013 23:17 #112049
je platné pro J1.5
Tak, jak Vám i vypisuje JUser Object (i dokumentace ), skupina (skupiny) uživatele jsou uvedeny v poli, v atributu groups
Pro usnadnění pak můžete porovnat pomoci funkce:
(z
forum.joomla.org/viewtopic.php?t=530721#p2850608
)
Znáte-li řešení, sdělte ho - pomůžete ostatním při řešení stejného problému, i případný "rádce" bude vědět, poradil-li správně nebo špatně.
Odpověď od karel
Zkušený uživatel
Code:
$userGid = $user->get( 'gid' );
Tak, jak Vám i vypisuje JUser Object (i dokumentace ), skupina (skupiny) uživatele jsou uvedeny v poli, v atributu groups
Pro usnadnění pak můžete porovnat pomoci funkce:
Code:
function check_group($group, $inherited){
$user = JFactory::getUser();
$user_id = $user->get('id');
if($inherited){
//include inherited groups
jimport( 'joomla.access.access' );
$groups = JAccess::getGroupsByUser($user_id);
}
else {
//exclude inherited groups
$user = JFactory::getUser($user_id);
$groups = isset($user->groups) ? $user->groups : array();
}
return (in_array($group, $groups))?true:0;
}
echo check_group(2, true); // check if current user in group 2
Znáte-li řešení, sdělte ho - pomůžete ostatním při řešení stejného problému, i případný "rádce" bude vědět, poradil-li správně nebo špatně.
Poděkovali: zbynek