kod mapy wklejany w adminie...howto

pxl666

Avatar: pxl666

2011-06-23 11:01

zrobilem sobie w adminie mozliwosc wklejania kodu mapy gogla - zeby nie grzebac sie w tpl i zeby user mogl sobie go zmieniac sam.
miedzy innymi dodalem wpis w settings.tpl :

<!-- map start -->
<tr class="l1">
<th>
$lang['Map']
</th>
<td><textarea name="map" cols="70" rows="2" class="input">$config[map]</textarea>
</td>
</tr>
<!-- map end -->

i kod mapy zapisywany jest w lang_pl.php, ale przy zapisie skrypt zamienia kod na :

<iframe width=&quot;620&quot; height=&quot;300&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot; src=&quot;http://maps.google.pl/maps/ms?ie=UTF8&amp;hl=pl&amp;msa=0&amp;msid=217115594694518504583.00049 ea9adc316851e232&amp;ll=49.929538,19.009438&amp;spn=0.009669,0.018239&amp;z=15&amp;output=embed&quot ;></iframe>

i ten kod juz nie dziala na stronie, da sie zdefiniowac inny plik do zapisu tego typu danych?

» Quick.Cms v2.x

boboo

Avatar: boboo

2011-06-23 14:06

kiedyś opisywałem rozwiązanie problemu textarea w panelu admina (zapisywanego do config). Albo zmienisz funkcję saveVariables(), albo zapisz to do osobnego pliku bazodanowego. Np. pl_pages_maps.php. Ze wszystkimi konsekwencjami: definicji, dodatków w funkcji savePage i savePages a także throwPage i deletePage. Osobiście wybrałbym to drugie.

pxl666

Avatar: pxl666

2011-06-23 14:10

no tak myslalem zapisac do osobnego pliku - ale niewiem jak go poprawnie zdefiniowac - mozesz naprowadzic ? zmiany musialbym wprowadzic jedynie w settings.tpl czy w innych plikach rowniez?

boboo

Avatar: boboo

2011-06-23 14:32

tak z głowy: aby to zapisywać porządnie (w 'standardzie QC') do osobnego pliku to trzeba zmian w core/pages.php w w/w funkcjach, oczywiście w .tpl
trzeba utworzyć _pages_map.def.php i posiedzieć nad tym trochę.
Można też poszukać, w jaki sposób ominąłem 'zniekształcenia' przy zapisywaniu do config z pola textarea. Szybciej i krócej ;-)

pxl666

Avatar: pxl666

2011-06-23 15:18

znalazlem tylko to z textarea i boboo

"
Textarea ma tę przypadłość, że jeśli używasz w niej "enter" to w stringu pojawia się CR LF (0D 0A [#13 #10]) i wtedy przy zapisywaniu takiego stringu z "enterami" w środku textu, dzieją się "cudeńka" w stawianiu ";" na końcu linii.
Bo ten średnik ";" jest stawiany po każdym 0A (LF), czyli nowa linijka KODU PHP zacznie się od reszty textu z textarea.
I dlatego te błędy.
Rozwiązanie:
w pliku /core/common-admin.php w funkcji: saveVariables
dodaj POD linijką:
$sValue = stripslashes( $sValue );
linijkę:
$sValue = str_replace(chr(13).chr(10),'\n', $sValue);
Czyli ciąg "x0D x0A" wychodzący z textarea zamieniamy na najzwyklejszy "newline" --> "\n".
W tekście w general.php (lub xx_lang.php) będzie to trochę nieczytelnie wyglądać
("będzie\nnieczytelnie\nwyglądać")
ale w textarea przecież to oglądasz i zmieniasz. A tam "śliczności" :-)
Na jednolinijkowe inputy to nie ma wpływu, bo one ze swojej natury nie wyrzucają z siebie 0D (CarriageReturn), więc takiej sekwecji 0D0A w nich nie ma, ergo ta dodatkowa linijka będzie trafiać tylko wielolinijkowe texarea.
"

czy to oto ci chodzi? chyba ze pisales w quickcarcie

boboo

Avatar: boboo

2011-06-23 15:39

dokładnie o to chodziło.
dopasuj do występujących w stringu googla znaków i powinno zadziałać.

pxl666

Avatar: pxl666

2011-06-23 15:56

a mozesz podpowiedziec jak to sformulowac skoro wychodzi na to ze zamianie ulega:
"
na
&quot;

pxl666

Avatar: pxl666

2011-06-24 21:57

jest szansa na jakiegos hinta?

boboo

Avatar: boboo

2011-06-25 11:23

Wszyscy dziś tacy niecierpliwi.
1. W podanym przykładzie adresu googla masz błąd. W ostatnim &quot ; przed </iframe> jest spacja między 'quot' i ';' nie powinno jej tam być.
2. W actions_client/p.php zaraz pod pierwszą linijką (if(isset($iContent))...)
włóż:
if($iContent==X)
$sGoogleInfo=html_entity_decode($config['map']);
X to numer strony (jej ID) na której ma się ta mapa wyświetlić.
3. w templates/pages_default.tpl włóż $sGoogleInfo tam, gdzie to chcesz mieć. Np. pod albo nad:
<div class="content" id="pageDescription">$aData[sDescriptionFull]</div>

Rozwiązanie problemu jest w html_entity_decode.
a pisałem o podobnym problemie tu:
http://opensolution.org/Quick.Cart/forum/?p=readTopic&nr=7215

http://it-service.kimla.de QC- & QCMS-plugins

Do góry
o nas | kontakt