Autor: Bohumír Bednařík (BoboCop), bobocop@bobocop.cz
Verze: 1.4
Poslední úpravy: 14.6.2007
Popis systému
Jedná se o jednoduchou aplikaci, která umožňuje ukládání novinek a akcí do databáze typu MySQL na webovém serveru s podporou PHP.
- Novinky
- informace typu "stalo se, proběhlo"
- Akce
- informace typu "připravujeme, nastane"
- Články
- informace typu "referát o něčem, článek, apod."
Aplikace při zobrazování novinek zobrazuje všechny novinky (resp. nastavený počet novinek), bez ohledu na datum (pouze je podle data řadí). Při zobrazování akcí zobrazuje vždy všechny akce (bez ohledu na nastavený počet), ale pouze takové, které mají datum od aktuálního data do budoucnosti (včetně akcí s datem rovným aktuálnímu datu). To znamená, že budou zobrazeny pouze akce, které teprve mohou nastat, nikoliv akce, které již proběhly. Při zobrazování článků jsou pak zobrazovány všechny články (resp. odkazy na ně), bez ohledu na datum.
Podle druhu položky (novinka, akce, článek) umí aplikace v administračním rozhraní i filtrovat, takže je možné zobrazovat jen seznam novinek, jen seznam akcí nebo jen seznam článků.
Seznam souborů:
Systém novinek se skládá z několika souborů a dvou podadresářů. Podadresář inc obsahuje soubory s různými funkcemi a formuláři, podadresář css obsahuje definici stylopisu pro zobrazování administrační části systému.
Soubory v hlavním adresáři:
- index.php
- slouží jako úvodní stránka systému (tzv. administrační část)
- licence.txt
- soubor s informacemi o licenci
- logout.php
- slouží k odhlášení přihlášeného uživatele ze systému
- news-add.php
- slouží k přidávání novinek
- news-delete.php
- slouží k mazání novinek
- news-edit.php
- slouží k editaci novinek
- news-get.php
- obsahuje funkci pro zobrazení novinek na stránkách
- news-chfo.php
- slouží ke změně přepínače Formátovat obsah v administračním rozhraní
- news-chzd.php
- slouží ke změně přepínače Zobrazovat datum v administračním rozhraní
- news-chzp.php
- slouží ke změně přepínače Zobrazovat položku v administračním rozhraní
- news-install.php
- stránka pro instalaci novinek
- news-register.php
- stránka pro dokončení instalace novinek – registraci tzv. administrátora
- Readme.htm
- soubor, který právě čtete
Soubory v podadresáři inc:
- dbconnect.php
- soubor pro připojení k databázi
- end.php
- soubor s definicí ukončení stránky (používá se při zobrazování stránek administrační části systému)
- frmadd.inc.php
- soubor s formulářem pro přidání nové novinky
- frmedit.inc.php
- soubor s formulářem pro editaci novinky
- frmlogin.inc.php
- soubor s formulářem pro přihlášení uživatele
- functions.php
- soubor s různými funkcemi, potřebnými k chodu systému
- hdr.php
- soubor s definicí začátku stránky (používá se při zobrazování stránek administrační části systému)
- ismobile.php
- soubor funkcí IsMobile, která umí rozpoznat, zda se na stránky dívá mobil
- login.php
- stránka sloužící k rozpoznání toho, zda je uživatel k systému přihlášen
- texy-compact.php
- skvělý převaděč textu do formátovaného HTML kódu. Texy je sexy – více viz stránky http://www.texy.info/
Soubory v podadresáři css:
- default.css
- soubor s definicí stylopisu pro zobrazování administrační části systému
- print.css
- soubor s definicí tiskového stylopisu administrační části systému
Instalace systému
Instalace spočívá ve třech krocích. Prvním krokem je úprava souboru dbconnect.php, druhým krokem je instalace systému na server a třetím krokem je spuštění souboru news-install.php.
Úprava souboru dbconnect.php
V tomto souboru je nutné nastavit správné hodnoty pro připojení k databázi. Pokud by hodnoty nebyly nastaveny správně, nebude systém fungovat.
Instalace systému na server
Na Váš webový server nakopírujte celý adresář news se všemi soubory, které obsahuje.
Systém nainstalujete otevřením souboru http://www.example.com/news/news-install.php ve Vašem prohlížeči internetu (www.example.com nahraďte adresou Vašeho serveru). Dále v textu budu uvádět pouze cesty za touto adresou.
Vlastní instalace pak probíhá ve dvou krocích. Prvním krokem je vytvoření tabulek, druhým krokem je registrace administrátora novinek (zvolení přihlašovacího jména a hesla a odeslání těchto hodnot na zadanou e-mailovou adresu).
Upozornění
Po provedení instalace odstraňte ze serveru soubory news-install.php a news-register.php, aby nemohlo dojít k tomu, že Vám systém někdo přeinstaluje.
Informace pro uživatele starších verzí
Pokud jste již používali některou ze starších verzí aplikace a pokud nechcete veškerá data přepisovat/přenášet do nové databáze, pak je nezbytně nutné, abyste před spuštěním nové verze systému do provozu provedli na tabulce bb_news následující SQL příkaz:
ALTER TABLE bb_news
ADD COLUMN ntype INTEGER UNSIGNED NOT NULL DEFAULT 1 AFTER cont,
ADD COLUMN nlang INTEGER UNSIGNED NOT NULL DEFAULT 1 AFTER ntype,
ADD COLUMN dontshow ENUM('0', '1') NOT NULL DEFAULT '1' AFTER formatcont,
ADD INDEX (date),
ADD INDEX (ntype),
ADD INDEX (nlang)
Přesněji řečeno, do tabulky bb_news je nutné doplnit (pokud tam ještě nejsou) následující sloupce:
- ntype - typu integer, s výchozí hodnotou 1, ideálně za sloupec cont (slouží k identifikaci typu položky v tabulce)
- nlang - typu integer, s výchozí hodnotou 1, ideálně za sloupec ntype (slouží k identifikaci jazyka položky)
- dontshow - typu ENUM s textovými hodnotami 0 a 1, přičemž výchozí hodnotou bude 1 (slouží k tomu, aby se položka nezobrazovala)
Dále je nutné doplnit tabulku bb_langs následujícím SQL příkazem:
CREATE TABLE bb_langs (
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,
lang VARCHAR(45) NOT NULL DEFAULT '',
PRIMARY KEY(id)
Tuto tabulku pak naplnit následujícími hodnotami:
INSERT INTO bb_langs (lang) VALUES('čeština')
INSERT INTO bb_langs (lang) VALUES('angličtina')
INSERT INTO bb_langs (lang) VALUES('němčina')
Ovládání systému
Pokud jste systém instalovali podle výše uvedených pokynů, pak se do administrační části novinek dostanete zadáním adresy http://adresa_vasich_stranek/news/.
Systém zobrazí formulář pro přihlášení uživatele. Po zadání správných hodnot se zobrazí hlavní administrační stránka systému. Na této stránce se zobrazuje jméno přihlášeného uživatele, odkaz pro odhlášení ze systému, odkaz pro přidání nové položky, filtr zobrazení položek (všechny/jen novinky/jen akce/jen články) a tabulka s položkami. Tabulka je stránkována po deseti záznamech, přičemž pro přepnutí na jednotlivé stráky slouží odkazy nad a pod tabulkou (nezobrazují se, pokud je počet položek menší než 10).
Pro přidání nové položky klepněte na odkaz pro přidání nové položky. Zobrazí se stránka s formulářem, do kterého stačí vyplnit příslušné hodnoty a formulář odeslat. Pokud nedošlo k nějaké chybě, zobrazí se rekapitulace zadání s možností návratu zpět nebo uložení do databáze.
V tabulce se seznamem položek na hlavní administrační stránce systému se zobrazují jednotlivé položky, přičemž struktura tabulky je následující:
- sloupec Datum
- zobrazuje informaci o datu, které bylo nastaveno při přidání položky do tabulky
- sloupec Nadpis
- zobrazuje informace o nadpisu, který byl položce přiřazen (může být prázdný)
- sloupec Obsah
- zobrazuje vlastní obsah položky (obsah se v tabulce neformátuje, je zobrazen ve zdrojové podobě)
- sloupec TP
- zobrazuje informaci o typu položky (novinka, akce, článek)
- sloupec JP
- zobrazuje informaci o jazyku položky (čeština, angličtina, němčina)
- sloupec ZP
- zobrazuje informaci o tom, zda se má položka při generování do stránek zobrazovat
- sloupec ZD
- zobrazuje informaci o tom, zda se má u položky při generování do stránek zobrazovat datum
- sloupec FO
- zobrazuje informaci o tom, zda se má obsah položky při generování do stránek formátovat prostřednictvím Texy
- sloupec Akce
- zobrazuje odkazy na editaci nebo smazání položky
Hodnoty ve sloupcích ZP, ZD a FO slouží jako přepínače a klepnutím na ně je možné jejich hodnotu okamžitě změnit (na jedno klepnutí). Jejich hodnotu je možné změnit i editací položky
Přidávání/editace položek
Při přidávání/editaci položky je nutné dodržovat následující pravidla:
- Datum zadávejte ve tvaru d.m.yyyy (tedy český oddělovač data bez mezer).
- Nadpis položky není povinný v případě, že je zatržen přepínač zobrazovat datum. Pokud uvedený přepínač zatržen není, nesmí být nadpis položky prázdný.
- Pokud bude zatržen přepínač formátovat obsah položky, bude se obsah položky při generování do stránek formátovat převaděčem Texy. K formátování bude docházet jen při vypisování novinek na stránkách (nedochází k němu v administrační části).
- Při ukládání položky do databáze se některé znaky převádějí na HTML entity. Jedná se o všechny znaky, které převádí PHP funkce htmlspecialchars.
Použití systému na stránkách
Pro zobrazování položek na strákách slouží soubor news-get.php, který obsahuje několik funkcí. Nejdůležitější z nich je však funkce GetNews, která zajiš%tuje zobrazování položek.
Funkce vypadá následovně:
GetNews($cnt = 0, $newsformat = 1, $lang = 1, $whatshow = 1, $clurl = 'clanek.php', $showheader = True, $headerlevel = 2)
Přičemž význam jednotlivých parametrů je následující:
- $cnt
- definice počtu novinek (0 – vrátí všechny položky, jinak se vratí zadaný počet položek
výchozí hodnotou je hodnota 0
- $newsformat
- definice vzhledu položek (1 – seznam DL, 2 – seznam UL, 3 – ostavce P)
výchozí hodnotou je hodnota 1
- $lang
- definice jazyka zobrazované položky. Možné hodnoty jsou 1 pro češtinu, 2 pro angličtinu, 3 pro němčinu, přičemž použitý jazyk ještě neznamená, že se položka skutečně vypíše požadovaným jazykem, protože to už bude záležet na tom, zda uživatel při vkládání položky do databáze uvedený jazyk použije. Může tedy nastat situace, že bude definována položka s jazykem angličtina, ale její obsah bude přesto napsán česky, protože ho tak autor položky napíše. Aplikace nijak nekontroluje jazyk psaného obsahu (jedná se pouze o přiřazení čísla jazyka).
- $whatshow
- definice typu informace, kterou chci zobrazovat (1 – bude zobrazovat novinky, 2 – bude zobrazovat akce, 3 – bude zobrazovat články).
výchozí hodnotou je hodnota 1
- $clurl
- definice adresy stránky, která bude zobrazovat obsah článků (v případě, že typ zobrazované informace je článek)
- $showheader
- přepínač zobrazení nadpisu (True – bude se zobrazovat nadpis Novinky (Akce, Články), False – žádný nadpis se zobrazovat nebude)
výchozí hodnotou je hodnota True
- $headerlevel
- definice úrovně nadpisu (pokud byl parametr $showheader = True, pak definuje úroveň nadpisu (h1, h2, atd.). Možné hodnoty jsou 1 – 6.
výchozí hodnotou je hodnota 2
Příklad:
Pro zobrazení posledních tří novinek ve formátu odstavců se do kódu stránky vloží následující kód:
<?php
require "./news/news-get.php";
echo GetNews(3, 3);
?>
Více o funkčnosti systému se dozvíte prostudováním kódu jednotlivých stránek. Kód je přiměřeně komentován, takže by nemělo být příliš složité jej pochopit.
Licence
Systém je dodáván pod licencí GNU GPL. Viz soubor licence.htm.