CMS ke studíjním účelům :-)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Droid
Člen | 92
+
0
-

Zdravím, jsem Nette začátečník a dost mi dělá problém postavit aplikaci (nevím, jak co řešit). Nemá prosím někdo nějaký nástřel redakčního systému „ke kuchání“? Kód nebude nikde zneužit, jde mi pouze o inspiraci v algoritmu.

na1k
Člen | 288
+
0
-

Na podzim jsem dělal školní projekt do předmětu Informační Systémy, šlo o IS fakulty, pomocí kterého učitelé vypisují projekty a studenti se na ně přihlašují.

Obsahuje to rozdělení na tři moduly, ACL, je tam použitý Datagrid, AJAX a XML import/export. Je to v Nette 2.0-alpha(?) pro php5.3 a celkem hojně komentované, protože jsem předpokládal, že se v tom budou opravující hrabat aniž by vůbec znali Nette :-)

Můžeš se na to podívat tady: http://iis.davidsabata.cz
Pokud by se ti to líbilo, napiš a já dám zdrojáky třeba na GitHub ;-)

Droid
Člen | 92
+
0
-

na1k napsal(a):

Na podzim jsem dělal školní projekt do předmětu Informační Systémy, šlo o IS fakulty, pomocí kterého učitelé vypisují projekty a studenti se na ně přihlašují.

Obsahuje to rozdělení na tři moduly, ACL, je tam použitý Datagrid, AJAX a XML import/export. Je to v Nette 2.0-alpha(?) pro php5.3 a celkem hojně komentované, protože jsem předpokládal, že se v tom budou opravující hrabat aniž by vůbec znali Nette :-)

Můžeš se na to podívat tady: http://iis.davidsabata.cz
Pokud by se ti to líbilo, napiš a já dám zdrojáky třeba na GitHub ;-)

Ahoj, máš to skvělé! Moc děkuji za ukázku, rozhodně mi pomůže každý kód, takže kdybych mohl poprosit, ten Github by byl super :-) Btw, hodně štěstí na FITu, teď tam hodně vyhazují i na docela jednoduchých předmětech.

Editoval Droid (21. 2. 2011 12:04)

na1k
Člen | 288
+
0
-

Takže na GitHubu: https://github.com/…a/Faculty-IS

Sám už do toho zasahovat nebudu (spíš časem zruším to demo na svém webu), ale klidně si to forkni a hraj si s tím. Pokud to třeba nějak rozšíříš, tak klidně pošli pull request a může to posloužit dalším co budou začínat :)

Droid
Člen | 92
+
0
-

Moc díky za ochotu, už na to koukám :-)

Martin
Člen | 171
+
0
-

Ahoj. Taky jsem se na to chtěl podívat, ale mám stažené nové Nette. Drobnost je přidání ->toArray() do dibi::connect (i když zrovna tohle jsem hledal předevčírem půl dne ve zdrojácích Nette, až po vlastním neobratném zprovoznění jsem to objevil i ve fóru). Ale cosi je nutné ještě opravit, je tu chyba Cannot load presenter ‚Homepage‘, class ‚HomepagePresenter‘ was not found in ‚C:\xampp\htdocs\DS\document_root/../app/presenters/HomepagePresenter.php‘. Chápu, že jde o něco, co je tady asi každému jasné, ale mně to trvalo docela dlouho.
Nakonec jsem v bootstrap.php místo:

<?php
$router[] = new Route('index.php', array(
	'presenter' => 'Homepage',
	'action' => 'default',
), Route::ONE_WAY);
?>

dal

<?php
$router[] = new Route('index.php', array(
      'module' => 'Public',
      'presenter' => 'Default',
	'action' => 'default',
), Route::ONE_WAY);
?>

Je to tak dobře?
Databázi jsem naimportoval do MySQL, připojení změnil v ini souboru. Teď mi to píše chybu Role ‚admin‘ does not exist na řádku

<?php
if ($user->isAllowed($resources->adminModule, $privilege))
?>

v DefaultPresenter.php. Výjimka je od Permission->checkRole(„admin“)). Pod debuggerem jsem zjistil, že v modulu Authorizator.php to v kódu

<?php
      foreach($model->getRoles() as $role)
         $this->addRole($role->name, $role->parent_name);
?>

vkládá zřejmě nepřípustné hodnoty. Předpokládám, že zrada je tam. Ale jak docílit, aby

<?php
   public function getRoles() {
      //if (isset($this->cache['roles']))
      //   return $this->cache['roles'];

      $ret = dibi::fetchAll("SELECT r1.name name, r2.name parent_name
        FROM users_roles r1
        LEFT JOIN users_roles r2 ON r1.parent_id = r2.id
        ORDER BY r1.parent_id, r1.id
      ");

      //$this->cache->save('roles', $ret);
      return $ret;
   }
?>

načetlo, co má? Bohužel výsledek v debuggeru nevidím, xdebug tady v tom místě při pokusu zobrazit proměnnou spadne (mám Netbeans a s tím padáním si nevím rady, takže to je taky dotaz na zkušenější). Ale snad jde načíst alespoň globální this, to jediné z xdebugu dostanu:
roles()=
Student
Zaměstnanec
Administrátor
Asistent
Vyučující
Garant
s podpoložkami parents a children.
To admin tam nikde nevidím. Znamená to, že je nějaká změna v Nette, kterou tam musím zapracovat, nebo jsem úplně mimo a chyba je někde jinde?
____________________

Tak při několikátém naprosto shodném spuštění pod debuggerem najednou vše prošlo. Vysvětluji si to jedině nějakou asynchronní činností čehosi a že díky cache teď je něco dříve k dispozici, co předtím nebylo. Jinak fakt nevím, s kódem jsem nehýbal. Pustí mi to za přihlášení. Po kliku na Předměty to padá s chybou Unknown macro {snippet:grid} in …\DataGrid\grid.phtml:1 . Předpokládám, že mi nějaká komponenta chybí, nebo se změnila.
____________________
Ano, opravdu se cosi změnilo, v grid.phtml je třeba mít {snippet grid} místo {snippet:grid}.
____________________

Jdu se kochat prací aplikace a prohlížením zdrojových kódů, snad mé popsané trápení totálního začátečníka pomůže dalším zoufalcům. Co a proč jsem tam vlastně při rozcházení udělal, stejně nechápu, byla to kombinace googlení a metody pokus-omyl. Jestli by to tu mohl někdo lidsky vysvětlit, určitě nebudu sám, kdo si vše se zájmem přečte. Martin

Editoval Martin (21. 2. 2011 18:14)

Droid
Člen | 92
+
0
-

Po tvém postu mám strach to vůbec zprovozňovat :-D zatím jsem prohlížel jen zdrojáky, ale nahazovat jsem to nezkoušel.

Droid
Člen | 92
+
0
-

Jinak další aplikace jsou vítané, my, totální začátečníci, to jen oceníme :-)

Martin
Člen | 171
+
0
-

Pokud stahneš poslední verzi Nette, čeká Tě nejvýše to samé, co mě, tedy zavolat jednou toArray() a jednou umazat dvojtečku. Zkus to, na rozdíl ode mně by Ti to nemuselo zabrat půl dne. Martin

Droid
Člen | 92
+
0
-

Martin napsal(a):

Pokud stahneš poslední verzi Nette, čeká Tě nejvýše to samé, co mě, tedy zavolat jednou toArray() a jednou umazat dvojtečku. Zkus to, na rozdíl ode mně by Ti to nemuselo zabrat půl dne. Martin

Moc díky za rady, pustím se do toho :-)