Vítejte, Host
Uživatelské jméno Heslo: Pamatovat si mne

Téma: plugin - directPHP

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>';
}
?>
  • nohac
  • Avatar uživatele nohac
  • OFFLINE
  • Pokročilý uživatel
  • Příspěvky: 121
  • Obdržená poděkování 13
Administrátor zakázal veřejné příspěvky.

Re: plugin - directPHP 23. říj 2013 12:57 #112027

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.
  • houbak
  • Avatar uživatele houbak
  • NYNÍ ONLINE
  • Joomla Expert
  • Příspěvky: 1283
  • Obdržená poděkování 349
Administrátor zakázal veřejné příspěvky.

Re: plugin - directPHP 23. říj 2013 13:35 #112028

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.
  • nohac
  • Avatar uživatele nohac
  • OFFLINE
  • Pokročilý uživatel
  • Příspěvky: 121
  • Obdržená poděkování 13
Administrátor zakázal veřejné příspěvky.

Re: plugin - directPHP 24. říj 2013 09:04 #112040

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:
$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...)
  • karel0
  • Avatar uživatele karel0
  • OFFLINE
  • Joomla Expert
  • Příspěvky: 1083
  • Obdržená poděkování 290
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ě.
Poslední úprava: 24. říj 2013 09:16 od karel0.
Administrátor zakázal veřejné příspěvky.
Následující uživatel poděkoval: nohac

Re: plugin - directPHP 24. říj 2013 18:41 #112046

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
=> xxxxxxxxxxxxxxx [password] => cdb0ae97f8fb9c18a9e74b57a8054f73:YsJ8MGOPDisihOTb2fpJBt7Amhg9gOue [password_clear] => [usertype] => [block] => 0 [sendEmail] => 0 [registerDate] => 2013-06-17 07:11:40 [lastvisitDate] => 2013-10-13 12:54:08 [activation] => [params] => {"admin_style":"","admin_language":"","language":"","editor":"","helpsite":"","timezone":""} [groups] => Array ( [2] => 2 ) [guest] => 0 [lastResetTime] => 0000-00-00 00:00:00 [resetCount] => 0 [_params:protected] => JRegistry Object ( [data:protected] => stdClass Object ( [admin_style] => [admin_language] => [language] => [editor] => [helpsite] => [timezone] => ) ) [_authGroups:protected] => Array ( [0] => 1 [1] => 2 ) [_authLevels:protected] => Array ( [0] => 1 [1] => 1 [2] => 2 ) [_authActions:protected] => [_errorMsg:protected] => [_errors:protected] => Array ( ) [aid] => 0 )[email] => xxxxxxxxxxxxxxx
[password] => cdb0ae97f8fb9c18a9e74b57a8054f73:YsJ8MGOPDisihOTb2fpJBt7Amhg9gOue
[password_clear] =>
[usertype] =>
[block] => 0
[sendEmail] => 0
[registerDate] => 2013-06-17 07:11:40
[lastvisitDate] => 2013-10-13 12:54:08
[activation] =>
[params] => {"admin_style":"","admin_language":"","language":"","editor":"","helpsite":"","timezone":""}
[groups] => Array
(
[2] => 2
)

[guest] => 0
[lastResetTime] => 0000-00-00 00:00:00
[resetCount] => 0
[_params:protected] => JRegistry Object
(
[data:protected] => stdClass Object
(
[admin_style] =>
[admin_language] =>
[language] =>
[editor] =>
[helpsite] =>
[timezone] =>
)

)

[_authGroups:protected] => Array
(
[0] => 1
[1] => 2
)

[_authLevels:protected] => Array
(
[0] => 1
[1] => 1
[2] => 2
)

[_authActions:protected] =>
[_errorMsg:protected] =>
[_errors:protected] => Array
(
)

[aid] => 0
)
  • nohac
  • Avatar uživatele nohac
  • OFFLINE
  • Pokročilý uživatel
  • Příspěvky: 121
  • Obdržená poděkování 13
Administrátor zakázal veřejné příspěvky.

Re: plugin - directPHP 24. říj 2013 23:16 #112049

$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:
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 )
  • karel0
  • Avatar uživatele karel0
  • OFFLINE
  • Joomla Expert
  • Příspěvky: 1083
  • Obdržená poděkování 290
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ě.
Poslední úprava: 24. říj 2013 23:17 od karel0.
Administrátor zakázal veřejné příspěvky.
Následující uživatel poděkoval: nohac
Vygenerováno za 0.196 sekund
Powered by Kunena fórum

Nové možnosti

Fórum umožňuje využít službu Tapatalk z vašeho mobilního zařízení.

Poslední novinky z fóra

Joomlaportál si prohlíží...

Právě přítomno: 457 hostů a 6 členů

Joomla!® je registrovaná ochranná známka společnosti Open Source Matters. © 2004-2012 JoomlaPortal.cz - provozováno Testudo corp. s.r.o. Powered by Twitter Bootstrap Framework. Design by Linelab.org

Jakékoliv užití obsahu včetně převzetí, šíření či dalšího zpřístupňování článků, diskuzních příspěvků a dalších textů je povolenou jen se souhlasem provozovatele.

Domů | Licence | O komunitě Joomla | Kontakty | Hledat na webu