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
Úprava editačního okna nového článku
Zaslán uživatelem/kou: Gerzon (IP adresa zaznamenána)
Datum: 2006-01-16, 16:23

Dobrý den,

pro svůj web Prago.info (postaven na verzi 2.6.5) potřebuji upravit vstupní formulář článku (tj. formulář, který se zobrazí v administraci po kliknutí na "Editace článků") tak, aby

1. se "Hlavní text" pro editaci nového článku rozdělil na několik menších částí, tj. editačních oken v HTML formuláři

2. se po kliknutí na "Přidat", ale ještě před uložením nového článku do tabulky rs_clanky tyto menší části sloučily (a současně navzájem oddělily dvěma řádky - breaky) a vytvořily tak společně "Hlavní text"

3. Pro úpravy článku se už bude zobrazovat "Hlavní text" normálně, tj. jako celek.

Mám pocit, že se rozdělení hlavního textu na několik částí dá ošetřit na úrovni formulářových proměnných, které, jak se domnívám převádí PHP automaticky do globálních proměnných. Ty je třeba někde sloučit jako řetězce do jedné globální proměnné (patrně jde o GLOBALS.aetext), která se pak uloží do tabulky rs_clanky jako hlavní text (tj. do položky "Text").

Myslím, že úpravu zvládnu sám, prosím jen o radu, kde přesně ji mám udělat. Zkoušel jsem naznačeným způsobem upravit skript admin/aarticles.php v částech "function Clanky()", "function PridejClanek()", "function FormUpClanek()" a "function UpravClanek()", ale bezvýsledně.

Re: Úprava editačního okna nového článku
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2006-01-16, 16:37

za predpokladu existencie poli formularu aetext1 a aetext2 by malo stačiť už len toto:
function UpravClanek()
{
// bezpecnostni kontrola
$GLOBALS["pridc"]=mysql_escape_string($GLOBALS["pridc"]);
$GLOBALS["aetitulek"]=KorekceNadpisu($GLOBALS["aetitulek"]); // korekce titulku na uvozovky
$GLOBALS["aetitulek"]=mysql_escape_string($GLOBALS["aetitulek"]);
$GLOBALS["aeuvod"]=mysql_escape_string($GLOBALS["aeuvod"]);
$GLOBALS["aetext"]=mysql_escape_string($GLOBALS["aetext1"])."<br><br>".mysql_escape_string($GLOBALS["aetext2"]);


podobre aj pre vloženie noveho članku



Celkem upraveno 1×. Poslední úprava pa3k v 16.01.2006 16:38.

Re: Úprava editačního okna nového článku
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2006-01-16, 16:49

pri editácii bude treba rozdeliť $GLOBALS["aetext"] na dve časti tak aby sa text rozdelil do dvoch texarea polí. Najlepšie by bolo vloženie do toho odriadkovania značky, napr.: <br><br><!-- aetext -->
a pomocou explode to rozdelit na dve premenné, oddelovací retazec bude "<br><br><!-- aetext -->".

Pri vkladaní článku to bude:

$GLOBALS["aetext"]=mysql_escape_string($GLOBALS["aetext1"])."<br><br><!-- aetext -->".mysql_escape_s tring($GLOBALS["aetext2"]);


Snáď som to napísal trochu zrozumiteľne.

Re: Úprava editačního okna nového článku
Zaslán uživatelem/kou: Gerzon (IP adresa zaznamenána)
Datum: 2006-01-16, 19:02

Díky, Patriku, je to srozumitelné. Předpokládám, že oba mluvíme o úpravách ve skriptu admin/aarticles.php.

Vyzkouším to a dám vědět, jak to dopadlo. Můj první pokus vypadal dost podobně, ale ztroskotal hned na začátku, neboť druhé okno zadané do formuláře jako textarea "aetext2" se vůbec nezobrazilo. Jdu zkoušet.

Re: Úprava editačního okna nového článku
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2006-01-16, 20:35

Jasne admin/aarticles.php. Zbežne som to skúsil a išlo to, uložilo sa do db OK, len som nedotiahol to rozdelenie pri editácii cez explode... nebol čas.

Re: Úprava editačního okna nového článku
Zaslán uživatelem/kou: Gerzon (IP adresa zaznamenána)
Datum: 2006-01-16, 21:52

Myslím, že ten konec také zvládám, dokonce v několika variantách. Co se mi však pořád nedaří je donutit to "echo", které generuje HTML formulář (Editace článků = link "admin.php?akce=Articles&modul=clanky"), aby vygenerovalo formulář s více okny místo Hlavního textu. Když do "echo" doplním nové textarea "aetext1" a "aetext2" jako nové řádky v tabulce, zobrazí se zase jen původní formulář vycházející pouze z původního "aetext".

Nechápu, jak je to možné, když jsem "aetext1" a "aetext2" přidal do obou formulářů, které ve skriptu admin/aarticles.php existují, ledaže je někde v systému uložen formulář ještě jednou na místě, ze kterého se bere přednostně (myslím, že to tak dělají některé šablonové systémy, které nepracují se zdrojákem, ale s vygenerovanou stránkou, kterou si po prvním spuštění vygenerují a někam uloží) .

Použít "explode" asi fakt nepůjde, aspoň ne bez nějaké krkolomné konstrukce. Proměnná "aetext" totiž vzniká až ve chvíli spuštění formuláře jako "formulářová" (lokální) proměnná, jako globální proměnná vznikne až po odeslání formuláře, nelze ji tedy před spuštěním/při spuštění formuláře rozčlenit na více polí, která by se zobrazila v otevřeném formuláři jako jeho okna.

Re: Úprava editačního okna nového článku
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2006-01-16, 22:37

Zobrazenie napíklad takto:
// formular
echo "<form action=\"admin.php\" method=\"post\">
<table cellspacing=\"0\" cellpadding=\"5\" border=\"0\" align=\"center\">
<tr class=\"txt\"><td align=\"left\"><b>".RS_CLA_CL_FORM_LINK_CLA."</b></td>
<td align=\"left\"><input type=\"text\" size=\"40\" value=\"bude automaticky doplněn\" disabled class=\"textpole\" /></td></tr>
<tr class=\"txt\"><td align=\"left\"><b>".RS_CLA_CL_FORM_TITULEK."</b></td>
<td align=\"left\"><input type=\"text\" name=\"aetitulek\" size=\"60\" class=\"textpole\" /></td></tr>
<tr class=\"txt\"><td align=\"left\" colspan=\"2\"><b>".RS_CLA_CL_FORM_UVOD."</b><br />
<textarea name=\"aeuvod\" rows=\"8\" cols=\"85\" class=\"textbox\">".RS_CLA_CL_FORM_UVOD_INFO."</textarea></td></tr>
<tr class=\"txt\"><td align=\"left\" colspan=\"2\"><b>".RS_CLA_CL_FORM_HLA_TEXT."</b><br />
<textarea name=\"aetext1\" rows=\"10\" cols=\"85\" class=\"textbox\">".RS_CLA_CL_FORM_HLA_TEXT_INFO."</textarea><br>
<textarea name=\"aetext2\" rows=\"10\" cols=\"85\" class=\"textbox\">".RS_CLA_CL_FORM_HLA_TEXT_INFO."</textarea></td></tr>
<tr class=\"txt\"><td align=\"left\"><b>".RS_CLA_CL_FORM_ZNACKY."</b></td>
<td align=\"left\"><input type=\"radio\" name=\"aeznacky\" value=\"1\" checked />".RS_TL_ANO." &nbsp;&nbsp; <input type=\"radio\" name=\"aeznacky\" value=\"0\" />".RS_TL_NE."</td></tr>
<tr class=\"txt\"><td align=\"left\"><b>".RS_CLA_CL_FORM_TEMA."</b></td>
<td align=\"left\">";


// promenne "uvod", "text" a "t_slova" mohou pri nekterych nastaveni MySQL databaze vyzadovat jeste korekci funkci - stripslashes

// sem pridudne funkcia explode, ktora rozdeli KorekceHTML($data_clanek["text"] po pola $text[] podla oddelovaca
echo "<form action=\"admin.php\" method=\"post\">
<table cellspacing=\"0\" cellpadding=\"5\" border=\"0\" align=\"center\">
<tr class=\"txt\"><td align=\"left\"><b>".RS_CLA_CL_FORM_LINK_CLA."</b></td>
<td align=\"left\"><input type=\"text\" value=\"".$data_clanek["link"]."\" size=\"40\" disabled class=\"textpole\" /></td></tr>
<tr class=\"txt\"><td align=\"left\"><b>".RS_CLA_CL_FORM_TITULEK."</b></td>
<td align=\"left\"><input type=\"text\" name=\"aetitulek\" value=\"".$data_clanek["titulek"]."\" size=\"60\" class=\"textpole\" /></td></tr>
<tr class=\"txt\"><td align=\"left\" colspan=2><b>".RS_CLA_CL_FORM_UVOD."</b><br />
<textarea name=\"aeuvod\" rows=\"8\" cols=\"85\" class=\"textbox\">".KorekceHTML($data_clanek["uvod"])."</textarea></td></tr> 
<tr class=\"txt\"><td align=\"left\" colspan=2><b>".RS_CLA_CL_FORM_HLA_TEXT."</b><br />
<textarea name=\"aetext1\" rows=\"10\" cols=\"85\" class=\"textbox\">".$text[1]."</textarea><br>
<textarea name=\"aetext2\" rows=\"10\" cols=\"85\" class=\"textbox\">".$text[2]."</textarea></td></tr>
<tr class=\"txt\"><td align=\"left\"><b>".RS_CLA_CL_FORM_ZNACKY."</b></td>
<td align=\"left\">\n";

Re: Úprava editačního okna nového článku
Zaslán uživatelem/kou: pa3k (IP adresa zaznamenána)
Datum: 2006-01-16, 22:49

Je to jednoduché, spojenie formulárového POSTU musí nastať pred kontrolnými funkciami - pred uložením do databázy a explode pred zobrazením editačného formulára. Inak nechápem, prečo pre tak jednoduchú vec ako je vloženie odstavca, resp. odriadkovania treba robiť takúto krkolomnosť cez viacero formulárov....

Osobne by som pridal <br> pri editácii alebo nastavil zobrazenie článku tak aby \n konvertovalo na <br>, dávnejšie tu bola diskusia ako to nastaviť. Prinajhoršom by som tam vložil FCKeditor...

Re: Úprava editačního okna nového článku
Zaslán uživatelem/kou: Gerzon (IP adresa zaznamenána)
Datum: 2006-01-17, 20:33

Mnoholrát děkuji za radu, vyzkouším to.

O odřádkování tu nejde, to je jen doplňková záležitost. Když se podíváš na Prago.info na typickou stránku, např. na Úrazovou pojišťovnu dělnickou pro Čechy a Moravu, tak její struktura vypadá asi takto:

Hlavička, v phpRS okno "uvod"
Obsahuje náhledy obrázků

Stránka, v phpRS okno "text"
Obsahuje výstupy z databáze, které formátuje program, např.:

Název čtvrti: Letenské domy
Název domu: Úrazová pojišťovna dělnická pro Čechy a Moravu
Číslo článku: 1001388
Městský obvod: Praha 7
Městská část: Praha 7
Kat. území: Holešovice čp. 1000
Ulice: nábřeží kapitána Jaroše 7
Postaven: 1926-1929
Typ domu: administrativní budova
Architekt: Rössler Jaroslav
Výtvarník: Mařatka Josef
Investor: ... atd. adt.

Pro ruční vkládání přes internet (půjde o otevřený systém, vkládat budou různí lidé, i laici) však potřebuji, aby byl vkládaný text rozdělen do oken odpovídajících položkám v databázi, do které se také následně uloží. Mohl bych si napsat skript, který to vložení do databáze zařídí mimo phpRS, ale z různých důvodů bych si přál, aby to celé bylo uzavřeno pod phpRS - text by se současně uložil do databáze (z jednotlivých oken) a do phpRS (jako sloučený text do Hlavního textu). Proto potřebuji, aby se v editačním okně nového článku místo Hlavního textu otevřelo více oken "text" a "textarea", a o to tu jde, a to mi vložení breaku ani FCKeditor nevyřeší.



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.