Přihlásit se

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
plugin - directPHP od zbynek
Pokročilý uživatel
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>';
}
?>

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.

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.

24. říj 2013 09:04 - 24. říj 2013 09:16 #112040
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:
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

24. říj 2013 23:16 - 24. říj 2013 23:17 #112049
Odpověď od karel
Zkušený uživatel
Code:
$userGid = $user->get( 'gid' );
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:
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
(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ě.
Poděkovali: zbynek

Powered by Fórum