phpRS 2.6.5 : phpRS Fórum
Toto fórum je určené výhradně k diskuzi o verzi phpRS v2.6.5.
phpRS - redakční a informační systém
Výpis všech novinek
Zaslán uživatelem/kou: Ruda (IP adresa zaznamenána)
Datum: 2005-05-10, 13:49

Ahoj všichni

Potřeboval jsem doplnit redakční systém phprs verze 2.6.5 o výpis všech novinek. Upravil jsem si phprs podle návodu na webu a posílám výsledek ve formátu patch (známý v linuxu a unixu).

Pro jeho využití je nutné text následující za ---- soubor vsechny_novinky.patch ----- uložit do souboru třeba s názvem vsechny_novinky.patch.

Dejte si pozor na problém se zalomením dlouhých řádků při ukládání do textového editoru. Pokud se to stane, příkaz patch (viz níže) neproběhne správně. Doporučuji si před pokusy s příkazem patch zazálohovat obsah adresáře phprs.

Tento soubor uložte do adresáře phprs a napište příkaz:

patch -p1 < vsechny_novinky.patch

a všechny nutné úpravy se udělají automaticky

Program patch by měl vypsat 3 řádku o úspěšné úpravě 3 souborů.

Příkaz patch funguje na linuxu (pro windows se dá někde získat na webu).


Pokud by někoho zajímalo, jak se takový soubor vyrobí, mohu to zde popsat. Myslím si, že publikace úprav v tomto formátu by spoustě lidí ušetřila práci a dala by se udělat jednoduše databanka patchů na různé věci.

Ruda

---- soubor vsechny_novinky.patch -----

diff -uNr /var/www/html/phprs.zaloha/engine.php /var/www/html/phprs/engine.php
--- /var/www/html/phprs.zaloha/engine.php 2005-03-16 14:38:00.000000000 +0100
+++ /var/www/html/phprs/engine.php 2005-05-10 12:59:10.000000000 +0200
@@ -10,6 +10,10 @@

// vyuzivane tabulky: rs_topic, rs_links, rs_links_sekce, rs_user

+/*
+2005.05.10 upravy pro vsechny zpravy z bloku novinky
+*/
+
if (!defined('IN_CODE')): die('Nepovoleny pristup! / Hacking attempt!'); endif;

function Verze()
@@ -173,4 +177,69 @@
endif;
echo "<p></p>\n";
}
+
+function ArchNews($kolko)
+{
+ $dotazmno=mysql_query("select count(idn) as pocet from ".$GLOBALS["rspredpona"]."news",$GLOBALS["dbspojeni"]);
+ $pocet=mysql_Result($dotazmno,0,"pocet");
+
+ echo "<p align=\"left\"><span class=\"clanadpis\">Archív noviniek: </span></p>\n<center>";
+
+ $pocet_sprav_na_stranke = 20;
+ $pocet_stran = ceil($pocet / $pocet_sprav_na_stranke);
+
+ for($i = 0; $i < $pocet_stran; $i++) {
+ $od = $pocet_sprav_na_stranke * $i;
+ $po = $pocet_sprav_na_stranke * ($i + 1);
+ $od_text = $od + 1;
+ if($i == ($pocet_stran - 1)) {
+ $po = $pocet;
+ }
+
+ echo "<span class=\"clatext\"> | <a href=index.php?akce=novinky&kolko=$od>$od_text - $po</a>\n";
+ }
+
+ echo " |</center></span>";
+
+
+ if ($pocet>0):
+ $dotaznews=mysql_query("select titulek,informace,datum,typ_nov from ".$GLOBALS["rspredpona"]."news order by datum desc limit $kolko,$pocet_sprav_na_stranke",$GLOBALS["dbspojeni"]);
+ $pocetnews=mysql_num_rows($dotaznews);
+ $txt_novinky=""; // inic.
+ for($pom=0;$pom<$pocetnews;$pom++):
+ $txt_novinky.="<p><span class=\"novdatum\">".MyDatetimeToDate(mysql_Result($dotaznews,$pom,"datum")).":</span><br />";
+ // typ_nov: 0 = bezna, 1 = zvyraznena
+ if (mysql_Result($dotaznews,$pom,"typ_nov")==0):
+ $txt_novinky.="<span class=\"novtit\">".mysql_Result($dotaznews,$pom,"titulek")."</span><br /> ";
+ else:
+ $txt_novinky.="<span class=\"novtitduraz\">".mysql_Result($dotaznews,$pom,"titulek")."</span><br /> ";
+ endif;
+ $txt_novinky.="<span class=\"novtext\">".mysql_Result($dotaznews,$pom,"informace")."</span></p>\n";
+ endfor;
+
+ // zobrazeni menu
+ switch ($GLOBALS["vzhledwebu"]->AktBlokTyp()):
+ case 1: Blok1($GLOBALS["vzhledwebu"]->AktBlokNazev(),$txt_novinky); break;
+ case 2: Blok2($GLOBALS["vzhledwebu"]->AktBlokNazev(),$txt_novinky); break;
+ case 3: Blok3($GLOBALS["vzhledwebu"]->AktBlokNazev(),$txt_novinky); break;
+ default: Blok3($GLOBALS["vzhledwebu"]->AktBlokNazev(),$txt_novinky); break;
+ endswitch;
+ endif;
+ echo "<center>";
+ for($i = 0; $i < $pocet_stran; $i++) {
+ $od = $pocet_sprav_na_stranke * $i;
+ $po = $pocet_sprav_na_stranke * ($i + 1);
+ $od_text = $od + 1;
+
+ if($i == ($pocet_stran - 1)) {
+ $po = $pocet;
+ }
+
+ echo "<span class=\"clatext\"> | <a href=index.php?akce=novinky&kolko=$od>$od_text - $po</a>\n";
+
+ }
+
+ echo " |</center></span>";
+}
+
?>
diff -uNr /var/www/html/phprs.zaloha/index.php /var/www/html/phprs/index.php
--- /var/www/html/phprs.zaloha/index.php 2005-03-16 14:38:00.000000000 +0100
+++ /var/www/html/phprs/index.php 2005-05-10 12:59:43.000000000 +0200
@@ -9,6 +9,10 @@
// This program is free software. - Toto je bezplatny a svobodny software.

// vyuzivane tabulky: *
+
+/*
+2005.05.10 upravy pro vsechny zpravy z bloku novinky
+*/

define('IN_CODE',true); // inic. ochranne konstanty

@@ -112,7 +116,12 @@
$vzhledwebu->Generuj();

else:
-
+ if (isset($GLOBALS["kolko"])) {
+ $kolko = intval($GLOBALS["kolko"]);
+ }
+ else {
+ $kolko = 0;
+ }
$vzhledwebu->Generuj();
ObrTabulka(); // Vlozeni layout prvku
// volba akce
@@ -121,6 +130,7 @@
case "temata": ShowTopics(); break;
case "linky": ShowLinks(); break;
case "statistika": ShowStatistics(); break;
+ case "novinky": ArchNews($kolko); break;
endswitch;
KonecObrTabulka(); // Vlozeni layout prvku
$vzhledwebu->Generuj();
diff -uNr /var/www/html/phprs.zaloha/specfce.php /var/www/html/phprs/specfce.php
--- /var/www/html/phprs.zaloha/specfce.php 2005-04-15 10:52:00.000000000 +0200
+++ /var/www/html/phprs/specfce.php 2005-05-10 13:11:09.000000000 +0200
@@ -10,6 +10,10 @@

// vyuzivane tabulky: rs_klik_rekl, rs_config, rs_ankety, rs_odpovedi, rs_news, rs_topic, rs_kontrola_ip

+/*
+2005.05.10 upravy pro vsechny zpravy z bloku novinky
+*/
+
if (!defined('IN_CODE')): die('Nepovoleny pristup! / Hacking attempt!'); endif;

// ------------------------------------------------- nacteni nastaveni z DB ------------------------------------------
@@ -93,7 +97,7 @@
$txt_novinky.='<div class="novtext">'.$pole_data['informace'].'</div>'."\n";
endwhile;
endif;
-
+ $txt_novinky.='<p align="center"><span class="clatext"><a href="index.php?akce=novinky">Archiv novinek</a></span></p>';
// zobrazeni menu
switch ($GLOBALS["vzhledwebu"]->AktBlokTyp()):
case 1: Blok1($GLOBALS["vzhledwebu"]->AktBlokNazev(),$txt_novinky); break;
@@ -104,6 +108,7 @@
default: Blok1($GLOBALS["vzhledwebu"]->AktBlokNazev(),$txt_novinky); break;
endswitch;
endif;
+//echo "<span class=\"clatext\"><a href=\"index.php?akce=novinky\">Archiv novinek</a></span></p>\n";
}

// systemovy blok: seznam rubrik (navigacniho menu)

Re: Výpis všech novinek
Zaslán uživatelem/kou: JanVar (IP adresa zaznamenána)
Datum: 2005-05-10, 14:09

tak hele chlape....
nedělej nám tady z toho "Linuxovou" komunitu. Nakonec by si to převedl do stylu "apt-get" ROFL

tak, konec legrace.

pokud tohle zvládneš popsat pro widle, tak to bude skvělý počin, za který ti bude nejeden BFU nesmírně vděčný. Zbavil bys je tím problémů s "updatem"





-- JaV ---- [http://www.hades.cz] ---- security by obscurity ---------------------------------------------
motto:
It's OK to be ignorant; it's not OK to play stupid.
But it's simply not efficient for us to try to help people who are not willing to help themselves.
----------------------------------------------------------------------------------------------------------------------

Re: Výpis všech novinek
Zaslán uživatelem/kou: mat. (IP adresa zaznamenána)
Datum: 2005-05-10, 16:34

CO je to BFU? :-D :-D :-D :-D
(:P)

Re: Výpis všech novinek
Zaslán uživatelem/kou: JanVar (IP adresa zaznamenána)
Datum: 2005-05-10, 17:14

"B"ezny "F"ranta "U"zivatel...

tedy alespon cesky.. v anglictine to zni trochu vice hrubeji... :-D :-D :-D

-- JaV ---- [http://www.hades.cz] ---- security by obscurity ---------------------------------------------
motto:
It's OK to be ignorant; it's not OK to play stupid.
But it's simply not efficient for us to try to help people who are not willing to help themselves.
----------------------------------------------------------------------------------------------------------------------

Re: Výpis všech novinek
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2005-05-11, 08:46

Chlape vitaj! Svieži linuxový vietor do phpRS plachiet :) Mno, pre toho kto ladí na unixoch je to určite bomba. Pre widle to chce skúsiť - idem do toho. Ak máš chuť napíš o tom ako to funguje. Myslím, že by som to využil ak to nebude extrémne zložité.

Re: Výpis všech novinek
Zaslán uživatelem/kou: Ruda (IP adresa zaznamenána)
Datum: 2005-05-12, 13:11

Takže velmi zrychlený návod:

Je třeba program diff - vyrobí ten soubor ve formátu co jsem poslal.
A program patch - pomocí vyrobeného souboru opraví původní zdrojové soubory.

Kde se to vezme - pokud to je na linuxu, oba programy jsou součástí systému. Pokud je to na windows, podívejte se na [http://www.delorie.com/djgpp/]. Jsou tam GNU prográmky pro DOS. Vyberete si nějaký mirror, třeba hned ten první [ftp://ftp.delorie.com/pub/djgpp/current/v2gnu/]. V souboru 00_index.txt je popis, co tam všechno je. Stáhnete si dif281b.zip a pat254b.zip. Rozbalíte, vyberete jen diff.exe a patch.exe a zkopírujete je někam do prohledávaného adresáře, třeba c:\windows. Další postup je už společný. (Až na lomítka oddělující adresáře - dos/windows je \, v Linux je / .)

Předpokládejme, že máte v adresáři něco/phprs fungující phprs. Vyrobíte na stejné úrovni adresář phprs.puv (.puv jako původní, ale je to úpně jedno) a zkopírujete do něho celý obsah původního adresáře phprs. Tj. budete mít v adresáři něco adresáře phprs a phprs.puv se stejným obsahem.

Potom uděláte všechny změny v souborech v adresáři phprs. Tj. v phprs bude nový phprs systém s úpravami a v adresáři phprs.puv bude původní systém bez úprav.

Napíšete příkaz: diff -uNr něco/phprs.puv něco/phprs > jmeno_souboru_s_upravou
!!! Pozor na velká a malá písmena.

a získáte v souboru jmeno_souboru_s_upravou popis všech změn ve formátu, který jsem poslal na začátku. A je to.

Výsledný soubor zkopírujete do jiného počítače, přepnete se do adreáře phprs a uděláte příkaz.

patch -p1 < jmeno_souboru_s_upravou

a je to. A máte upravený phprs.

Ruda

P.S. dobrým zvykem je na začátek každého souboru doplnit datum, autora a popis úpravy, která se tam dělá. Patch je totiž schopen realizovat úpravu v souboru, i když soubor už byl modifikován za jiným účelem. Samozřejmě pokud se úpravy netýkají stejného místa v souboru. A dokumentace je nutná. Metoda je otestována na Linuxu, ale na dos/win by neměl být také problém.

Re: Výpis všech novinek
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2005-05-12, 13:41

Dík za objasnenie myslím že ten systém vcelku chápem. Jednoduché - a myslím, že sa to hodí. Osobne robím často úpravy kódu a po čase stratím prehľad o všetkých zmenách, musím to porovnávať napr. cez TotalCommander na úrovni súborov a následne riadkov. Dá sa to síce aj tak, ale tento patch systém vyzerá byť celkom použiteľná vec.

Re: Výpis všech novinek
Zaslán uživatelem/kou: Ruda (IP adresa zaznamenána)
Datum: 2005-05-12, 16:34

Ono celkově by už neškodilo použít nějaký systém na správu verzí zdrojového kódu. Jako CVS. Viz. třeba jako na sf.net. Vývoji phprs by to určitě prospělo a mohlo by na tom pracovat více lidí.



Lituji, ale pouze registrovaní uživatelé mohou zasílat příspěvky do této sekce.
This forum powered by Phorum and designed by STaNBoSS.