Skip to content

Instantly share code, notes, and snippets.

@iiic
Last active December 16, 2015 11:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iiic/5430238 to your computer and use it in GitHub Desktop.
Save iiic/5430238 to your computer and use it in GitHub Desktop.
něco o vývoji, úkoly, instalace, potřebné technologie a tak.
<div>
<h2>Reprezentativní uživatelé</h2>
<ul>
<li>admin@heslo.je.admin - role: admin</li>
<li>studijni@heslo.je.studijni - role: studijni</li>
<li>garant@heslo.je.garant - role: garant</li>
<li>vedouci@heslo.je.vedouci - role: vedouci</li>
<li>student@heslo.je.student - role: student</li>
<li>pokus@heslo.je.pokus - role: student</li>
</ul>
</div>
<hr>
<div>
<h2>Použité technologie</h2>
<ul class="no-idents">
<li><b>Serverová část</b>
<ul>
<li>server httpd Apache <span class="version">2.2.15</span> - <a href="http://httpd.apache.org/">http://httpd.apache.org/</a></li>
<li>PHP <span class="version">5.4.13</span> - <a href="http://www.php.net/">http://www.php.net/</a> (minimální potřebná verze je <span class="version">5.3.6</span> pro funkci <code>SplFileInfo::getExtension</code> - <a href="http://www.php.net/manual/en/splfileinfo.getextension.php">http://www.php.net/manual/en/splfileinfo.getextension.php</a>)
<ul>
<li><b>nutná rozšíření PHP:</b></li>
<li>Multibyte String extension - <a href="http://php.net/manual/en/book.mbstring.php">http://php.net/manual/en/book.mbstring.php</a></li>
<li>PDO extension - <a href="http://php.net/manual/en/book.pdo.php">http://php.net/manual/en/book.pdo.php</a></li>
</ul>
</li>
<li>MySQL <span class="version">5.5.29</span> - <a href="http://www.mysql.com/">http://www.mysql.com/</a> (není nutné použít právě mysql, ale je možné použít další populární alternativy jako Oracle, PostgreSQL, MSSQL, Sqlite, … při instalaci pak stačí jediné, nastavit jiný ovladač databáze)</li>
<li>Doctrine <span class="version">2.3.3</span> - <a href="http://www.doctrine-project.org/">http://www.doctrine-project.org/</a></li>
<li>Nette Framework <span class="version">2.0.10</span> - <a href="http://nette.org">http://www.php.net/</a></li>
<li>Venne CMS <span class="version">2.0.0</span> - <a href="http://venne.github.io/">http://venne.github.io/</a>
<ul>
<li><b>použité moduly (možnost instalace přes Composer):</b></li>
<li>venne/assets-module</li>
<li>venne/cms-module</li>
<li>venne/doctrine-module</li>
<li>venne/forms-module</li>
<li>venne/framework</li>
<li>venne/gedmo-module</li>
<li>venne/googleanalytics-module</li>
<li>venne/less-module</li>
<li>ic/appearanice-module</li>
<li><i>(ostatní moduly, které jsou součástí práce není možné volně stáhnou na internetu)</i></li>
</ul>
</li>
<li>Lessphp <span class="version">0.3.9</span> - <a href="http://leafo.net/lessphp/">http://leafo.net/lessphp/</a> (postavené na projektu Less - <a href="http://lesscss.org/">http://lesscss.org/</a>)</li>
</ul>
</li>
<li><b>Klientská část</b>
<ul>
<li>HTML5 <span class="version">5.1</span> - <a href="http://dev.w3.org/html5/spec/">http://dev.w3.org/html5/spec/</a></li>
<li>CSS <span class="version">Level 3</span> - <a href="http://www.w3.org/Style/CSS/">http://www.w3.org/Style/CSS/</a></li>
<li>ECMAscript (javascript) <span class="version">edition 5</span> - <a href="http://www.ecmascript.org/">http://www.ecmascript.org/</a></li>
<li>html5shiv <span class="version">3.6.2</span> - <a href="https://github.com/aFarkas/html5shiv">https://github.com/aFarkas/html5shiv</a></li>
<li>jQuery <span class="version">1.8.2</span> - <a href="http://jquery.com/">http://jquery.com/</a></li>
<li>normalize.css <span class="version">2.0.1</span> - <a href="http://necolas.github.io/normalize.css/">http://necolas.github.io/normalize.css/</a></li>
<li>Glyphicons (Bootstrap version) - <a href="http://glyphicons.com/">http://glyphicons.com/</a></li>
</ul>
</li>
<li><b>Nástroje použité pro vývoj</b>
<ul>
<li>NetBeans IDE <span class="version">7.3</span> - <a href="https://netbeans.org/">https://netbeans.org/</a>
<ul>
<li><b>pluginy:</b></li>
<li>PHP Nette Framework - <a href="http://plugins.netbeans.org/plugin/32720/">http://plugins.netbeans.org/plugin/32720/</a></li>
</ul>
</li>
<li>PSPad <span class="version">4.5.7</span> - <a href="https://pspad.com/">https://pspad.com/</a></li>
<li>GitHub for Windows <span class="version">1.0.41.2</span> - <a href="http://windows.github.com/">http://windows.github.com/</a> (má v sobě instalaci GITu)</li>
<li>XAMPP <span class="version">1.8.1</span> - <a href="http://www.apachefriends.org/en/xampp.html">http://www.apachefriends.org/en/xampp.html</a></li>
<li>Composer <span class="version">1.0.0-alpha6</span> - <a href="http://getcomposer.org/">http://getcomposer.org/</a></li>
<li>WinSCP <span class="version">5.1.4</span> - <a href="https://winscp.net/">https://winscp.net/</a></li>
<li>PuTTY <span class="version">0.62</span> - <a href="http://www.putty.org/">http://www.putty.org/</a></li>
<li>Google Chrome <span class="version">26.0.1410.64 m</span> - <a href="http://www.google.com/intl/cs/chrome/browser/">http://www.google.com/intl/cs/chrome/browser/</a>
<ul>
<li>konzola 'Nástroje pro vývojáře'</li>
<li>rozšíření (un)clrd - <a href="https://chrome.google.com/webstore/detail/unclrd/pjahllgfmfgobhbkjiaohonjejpnkfkh">https://chrome.google.com/webstore/detail/unclrd/pjahllgfmfgobhbkjiaohonjejpnkfkh</a></li>
<li>rozšíření Dev HTTP Client - <a href="https://chrome.google.com/webstore/detail/dev-http-client/aejoelaoggembcahagimdiliamlcdmfm">https://chrome.google.com/webstore/detail/dev-http-client/aejoelaoggembcahagimdiliamlcdmfm</a></li>
<li>rozšíření Edit This Cookie - <a href="https://chrome.google.com/webstore/detail/edit-this-cookie/fngmhnnpilhplaeedifhccceomclgfbg">https://chrome.google.com/webstore/detail/edit-this-cookie/fngmhnnpilhplaeedifhccceomclgfbg</a></li>
<li>rozšíření Microformats for Google Chrome™ - <a href="https://chrome.google.com/webstore/detail/microformats-for-google-c/oalbifknmclbnmjlljdemhjjlkmppjjl">https://chrome.google.com/webstore/detail/microformats-for-google-c/oalbifknmclbnmjlljdemhjjlkmppjjl</a></li>
<li>rozšíření Web Developer - <a href="https://chrome.google.com/webstore/detail/web-developer/bfbameneiokkgbdmiekhjnmfkcnldhhm">https://chrome.google.com/webstore/detail/web-developer/bfbameneiokkgbdmiekhjnmfkcnldhhm</a></li>
</ul>
</li>
</ul>
</li>
<li><b>Správné zobrazení testováno na prohlížečích</b>
<ul>
<li>Google Chrome <span class="version">26.0.1410.64 m</span> - <a href="http://www.google.com/intl/cs/chrome/browser/">http://www.google.com/intl/cs/chrome/browser/</a></li>
<li>Mozilla Firefox <span class="version">20.0.1</span> - <a href="http://www.mozilla.org/cs/firefox">http://www.mozilla.org/cs/firefox</a></li>
<li>Internet Explorer <span class="version">10.0.9200.16540</span> - <a href="http://windows.microsoft.com/cs-cz/internet-explorer/download-ie">http://windows.microsoft.com/cs-cz/internet-explorer/download-ie</a></li>
<li>Opera <span class="version">12.15</span> - <a href="http://www.opera.com/cs/">http://www.opera.com/cs/</a></li>
<li>Maxthon cloud browser <span class="version">4.0.5.4000</span> - <a href="www.maxthon.com/">www.maxthon.com/</a></li>
</ul>
</li>
</ul>
</div>
<hr>
<div>
<h2>Postup instalace (z linuxového serveru s podporou PHP)</h2>
<ul>
<li><b>Test konfigurace webového serveru</b>
<ul>
<li>Stáhnout nástroj Nette Requirements Checker - <a href="https://github.com/nette/tools/tree/master/Requirements-Checker">https://github.com/nette/tools/tree/master/Requirements-Checker</a> a umísti ho do konřenového adresáře webu.</li>
<li>Z prohlížeče zobrazit URL adresu, na které je umístěn soubor <code>checker.php</code></li>
<li>Opravit případné chyby</li>
</ul>
</li>
<li><b>Instalace Venne CMS</b>
<ul>
<li>Nainstalovat nástroj composer (<a href="http://getcomposer.org/download/">http://getcomposer.org/download/</a>), provést jeho update příkazem <code>composer self-update</code></li>
<li>Přepnout se do složky, do které zamýšlím instalovat CMS (například <code>cd /var/www</code>)</li>
<li><b>Instalovat Venne CMS dle doporučeného zadání:</b>
<ul>
<li><code>composer create-project venne/sandbox:2.0.x-dev myApp</code></li>
<li><code>cd myApp</code></li>
<li><code>composer require venne/cms-module:2.0.x</code></li>
<li><code>php www/index.php venne:module:update</code> (pro poslední 2 příkazy musí být už zapnutý php preprocesor)</li>
<li><code>php www/index.php venne:module:install cms</code></li>
</ul>
</li>
</ul>
</li>
<li><b>Instalace modulů vytvořených speciálně pro dané zadání</b>
<ul>
<li><b>Instalace frontend layoutu se provádí pomocí příkazů composeru</b>
<ul>
<li><code>composer require ic/appearanice-module:1.0.x</code></li>
<li><code>php www/index.php venne:module:update</code></li>
<li><code>php www/index.php venne:module:install appearanice</code></li>
</ul>
</li>
<li>Ostatní moduly se manuálně zkopírují do složky <code>vendor/venne/</code></li>
</ul>
</li>
<li>Z důvodu rozšíření uživatelské entity se bohužel musí prověst i několik zásahů do samotného CMS. Překopírovat tyto soubory z bitbucket repozitáře
<ul>
<li>vendor/venne/cms-module/CmsModule/Administration/Presenters/templates/UsersPresenter.php</li>
<li>vendor/venne/cms-module/CmsModule/Content/Forms/Controls/RegistrationFrontFormFactory.php</li>
<li>vendor/venne/cms-module/CmsModule/Forms/UserFormFactory.php</li>
<li>vendor/venne/cms-module/CmsModule/Security/Entities/UserEntity.php</li>
</ul>
</li>
<li><b>Konfigurace projektu přes prohlížeč</b>
<ul>
<li><b>Pro správnou instalaci Venne je nutné nastavit možnost zápisu do některých složek (chmod 777):</b>
<ul>
<li><code>app/config</code></li>
<li><code>app/data</code></li>
<li><code>app/temp</code></li>
<li><code>www/cache</code></li>
<li><code>www/public</code></li>
<li><code>www/resources</code></li>
</ul>
</li>
<li>Z prohlížrče navštívit adresu, která slouží jako index daného projektu</li>
<li>Pokus se vyskytnou nějaké chyby dá se zjistit, co se stalo editací souboru <code>www/index.php</code>, kde zapnu debug mode vložením <code>$configurator->setDebugMode(TRUE);</code> mezi řádky 12 a 13. (Jedním z problémů může být bug Composeru, který způsobuje, že soubory jsou nepřístupné. Pomůže je přesunout na lokální disk, a následně vrátit zpět na server.)</li>
<li>V dalším kroku je nutné vytvořit administrátora projektu (tento účet bude k dispozici i případě nefunkčnosti databáze)</li>
<li>Následně se nastaví připojení k databázi. Pokud zatím žádná databáze neexistuje s jejím vytvořením pomůže nástroj Adminer dostupný z <code>www/adminer/</code>, stačí zadat jméno nové databáze a její kódování. Ve venne se následně vybere vhodný ovladač databáze (mysqli, pdo_mysql, pdo_oracle, pdo_pgsql, pdo_sqlite, pdo_sqlsrv), vyplní se přístupové údaje a zvolí kódování stejně, jako při vytváření databáze. (V případě exportu databáze z Windows do Linuxu může nastat problém s názvy tabulek… například tabulka staticpage, která pod Windowsy bez problémů funguje bude na Linuxu dělat požíže, protože systém hledá tabulku staticPage a narozdíl od Windowsů mu staticpage nestačí a bude hlásit nedostupnost. Proto je třeba některé názvy tabulke potřeba změnit dle vypsané chyby systému.)</li>
<li>V posledním kroku se vybere jazyk budoucího projektu a je hotovo.</li>
</ul>
</li>
<li><b>Před prvním použitím</b>
<ul>
<li>Následně je nutné v administraci vytvořit nový layout z v předchozích krocích nainstalovaného appearanice-module. V levém slouci záložka <i>Layouty</i>, nebo <i>Obsah/Správa layoutů</i>, zde kliknou na tlačítko Vytvořit, napsat libovolné označení a vybrat <i>appearanice/basic</i>.</li>
<li>Důležité je nezapomenout nainstalovat dříve ručně zkopírované moduly v <i>Systém/Správá modulů</i>. Napřed kliknutím na tlačítko <i>Obnovit databázi</i> načtete jejich seznam a násldně kliknete na tlačítko <i>Instalovat</i> u každého z nich.</li>
<li>V nabídce <i>Obsah/Správa stránek</i> už snadno začnete tvořit obsah.</li>
<li>Přesvěčte se, že z webového serveru jsou přístupné pouze soubory ve veřejné složce <code>www/</code> a že nejsou přístupné soubry ve složkách projektu <code>app/</code> a <code>vendor/</code>. Zvláště nebezpečné by bylo, pokud by byly přístupné soubory konfigurace například <code>app/config/config.neon</code>, ve kterém je v čitelné podobě umístěno jméno a heslo administrátora.</li>
</ul>
</li>
<li><b>Zásah do CMS</b>
<ul>
<li>V souboru \iszp\www\resources\cmsModule\admin\css\style.css upravit styl .modal.modal-large .modal-body… zmenšil max-height na 510px . Alespoň dokud nebude tohle opraven tímto bugreportem: <a href="https://github.com/Venne/cms-module/issues/21">https://github.com/Venne/cms-module/issues/21</a></li>
</ul>
</li>
</ul>
</div>
<hr>
<div>
<h2>Zajímavá zjištění</h2>
<ul>
<li>V případě chyby javascriptu se znovu vytvoří cookie PHPSESSID, čímž dojde k odhlášení přávě přihlášeného uživatelel. Z toho důvodu je nutné se chybám javascriptu vyhnout.</li>
</ul>
</div>
<hr>
<div>
<h2>todo list (seznam úkolů)</h2>
<ul>
<li><b>nejdůležitější</b>
<ul>
<li><del>vytvořit responsivní layout (mobilní telefon, tablet, notebook, běžný monitor počítače)</del></li>
<li><del>udělat výpis sekce zadávání prací</del></li>
<li><del>přidávání nových záznamů do sekce zadávání prací</del></li>
<li><del>editace záznamů v sekci zadávání prací</del></li>
<li><del>mazání záznamů v sekci zadávání prací</del></li>
<li><del>udělat vlastní modul do venne pro zadávání prací</del></li>
<li>Vymyslet nějaké pěkné unikátní jméno pro celou aplikaci</li>
<li><del>Napsat úvodní odstavec o významu a účelu aplikace</del></li>
<li><del>Vytvořit pro studenta možnost rezervace práce</del></li>
<li><del>Vytvořit diskuzi vedoucího a studenta u rezervované práce</del></li>
<li><del>Předávání dat z thesiscollection-module do archive-module !!!<del></li>
<li>zprovoznit vyhledávání na webu (Google, nebo vlastní řešení?)</li>
<li><del>vytvořit modul pro zadávání a zveřejňování aktualit</del></li>
<li><del>zabezpečit modul aktualit pomocí vhodných uživatelských rolí</del></li>
<li><del>vytvořit modul archivu</del></li>
<li>zkontrolovat, jestli je nette panel viditelný jen účtu administrátora, případně to tak zajistit</li>
<li><del>vytvořit modul Agendy</del></li>
<li><del>umístit widget modulu Agendy do pravého aside sloupce</del></li>
<li><del>navázat automatické akce na určitý čas zvolený v agenda modulu (přesunutí práce do archivu…)</del></li>
<li><del>opravit jQuery kalendář, který se má zobrazovat pod datetime prvky formuláře !!!</del></li>
<li><del>zprovoznit virtuální server a nainstalovat na něj ukázkovou kopii projektu</del></li>
<li>vytvořit javascript, který po načtení stránky přesměruje na #info (čímž otevře informace o aplikaci) a javascriptem upravit menu tak, aby se v odkazech následně přenášela informace o tom, jestli jsou tyto informace zobrazeny, nebo ne.</li>
<li>umožnit studentovi napsat si úplně vlastní zadání (a najít si vedoucího/oponenta), které by poté garant oboru povolil, nebo neschválil</li>
<li><del>přidání sloupců pro závěrečný list práce do tabulky tresiscollection a rormulář pro jejich vyplnění zobrazit studentovi po rezervaci práce.</del></li>
<li><del>v archive modulu umožnit manuální přesun prací z thesiscollection do pre-archivu</del></li>
<li><del>upravit hlavní menu tak, aby každá role viděla jen své položky</del></li>
<li>zkontrolovat jestli jsou všechny metody tříd řádně zabezpečené</li>
<li><del>umožnit studentovi nahrávat soubory a vedoucímu/adminovi je prohlížet</del></li>
<li>k agendě dopsat nějakou nápovědu a ovládání</li>
</ul>
</li>
<li><b>důležité</b>
<ul>
<li>unit test a slenium testy</li>
<li>uživatelské testování UX</li>
<li>vytvořit/sehnat nějakou favikonu pro web</li>
<li><del>vytvořit testovací uživatelské účty pro různá oprávnění</del></li>
<li><del>vytvořit všechny možné role a nastavit je testovacím uživatelům</del></li>
<li><del>naplnit modul zadávání prací nějakými testovacími daty</del></li>
<li>vytvořit nějakou pěknou a užitečnou patičku stránky</li>
<li><del>otestovat layout na prohlížečích mobilních zařízení (telefony, tablety, čtečky) a udělat screenshoty</del></li>
<li><del>vytvořit css pro víceúrovňová menu, které Venne CMS umožňuje tvořit</del></li>
<li><del>vytvořit a ostylovat drobečkovou navigaci</del></li>
<li><del>umístit verzované zdrojové kódy všech modulů na bitbucket.org</del></li>
<li><del>k uživatelským účtům přidělit obrázky z gravataru (třeba v diskuzi a možná i u informace o přihlášeném uživateli)</del></li>
<li>javascripty z hlavičky umístit až na úplný konec stránky</li>
<li>refaktorovat moduly agendy a aktualit -> lepší názvy tříd</li>
<li><del>Zprovoznit real-time kompilování CSS souborů z Less souborů</del></li>
<li><del>naplnit modul agendy nějakými ukázkovými daty</del></li>
<li>nakonec si projet zdrojáky na všechny výskyty @todo komentářů a vyřešit ty poznámečky</li>
<li>doplnit k modulům texty vysvětlující jejich funkci a upravit je tak, aby se předmětné části zobrazovaly jen tomu, komu mají</li>
<li>kromě schválení práce by role garanta měla mít právo práci i neschválit, (což by ji vymazalo ze seznamu?)</li>
<li><del>do thesischat přidat upozorňování na to, jestli si protistrana přečetla příspěvek chatu</del></li>
<li><del>přímo v menu upozorňovat na počet nepřečtených příspěvků chatu s periodickou kontrolou nových záznamů chatu</del></li>
<li><del>v menu umožnit přidávat podsekce stránek</del></li>
<li><del>upravit přihlášení / odhlášení element</del></li>
</ul>
</li>
<li><b>nedůležité</b>
<ul>
<li>vytvořit alternativní css vzhledy</li>
<li><del>překlad do dalších jazyků</del></li>
<li>modul pro A/B testování</li>
<li>modul pro ankety</li>
<li>vytvořit vlastní grafický layout i pro backend část aplikace (administraci)</li>
<li>použít nějakou grafickou nástavbu (tinymce) pro textarea určené ke vkládání obsahu webu</li>
<li>použít nějaký mezifiltr, který by minimalizovat (odstranil mezery, středníky u posledního pravidal, …) CSSka vzniklé z Less souborů</li>
<li>vytvořit několik ukázkových flash zpráviček na 'vývoj' stránku</li>
<li><del>upravit CSS zobrazování číslovaných i odrážkových seznamů v section části webu</del></li>
<li>v administraci vyplnit meta tagy stránky jako keywords, description, …</li>
<li>umožnit uživatelům se přihlašovat pomocí oAuth a OpenID</li>
<li>vytvořit nějaký modul, který umožní přihlašování s hashem hesla vytvořeným javascriptem přímo u klienta (upravit nejlépe i už samotnou registraci)</li>
<li><del>vytvořit nějaký grafický efekt pro flash zprávičky, aby nebylo snadné je přehlédnout a ideálně bez javascriptu</del></li>
<li><del>zjisti, jestli by nešlo přetěžovat i šablonu k registračnímu formuláři, protože ta nemá kontejnerový objekt, který by dělal pěkný bílý rámeček kolem formuláře a ideálně i nějaký nadpis typu h2</del></li>
<li><del>do přihlášení přidán jQuery script, který varuje, když má člověk zapnutý caps lock</del></li>
<li>upravit script, který varuje, když má člověk zapnutý caps lock a vložit ho i do registrace</li>
<li>v modulu Thesischat srovanat velikost textarea pro vložení nového příspěvku se zobrazením nového příspěvku, aby řídky končily u obou stejně (takže nastavit stejné písmo i jeho velikost)</li>
<li>někam na nějaké vhodné místo umístit přepínač jazyků</li>
<li>vymyslet, co udělat s vývoj (touto) sekcí na produkci (patička?, přesunout na bitbucket?)</li>
<li>v pre-archivu upravit signály gg a bg… vymyslet nějaké lepší názvy i texty odkazů</li>
</ul>
</li>
</ul>
</div>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment