ugrás a tartalomhoz

VirtueMart felugró ablak helyett input

Designe · 2011. Ápr. 22. (P), 22.22
Üdv!
Segítséget szeretnék kérni a következőben. Van egy webshop amiben az admin felületen kilistázza a termékeket.A listában az ár oszlopban ha rá klikkelek egy termék árára akkor felugrik egy ablak és át tudom írni az árat. Ezt szeretném én egy input mezőre cserélni de nem igazán jövök rá a titok nyitjára.

Ime a code

$price = $ps_product->getPriceByShopperGroup( $db->f('product_id'), '');
$tmp_cell = '<span class="editable priceform">'.$GLOBALS['CURRENCY_DISPLAY']->getValue( $price['product_price']).' '.$price['product_currency'];
$tmp_cell .= '&nbsp;&nbsp;&nbsp;</span>';
$listObj->addCell( $tmp_cell, 'id="'.$db->f('product_id').'" onclick="showPriceForm(this.id)" title="'.$VM_LANG->_('PHPSHOP_PRICE_FORM_LBL').'"' );
ha jól értelmezem a $price és $tmp_cell az ár összeállítására van a $listObj pedig a kiiratás és a változtatásra szolgál.
Viszont már babrálom órák óta össze vissza a kódot de eddig max azt értem el, hogy kirakta az input mezőt és szépen beleírta a php kódot. Megköszönöm ha valaki rá irányítana a dologra:)
 
1

Na mégegyszer

janoszen · 2011. Ápr. 22. (P), 23.35
Akkor most ennek a postnak fuss neki még egyszer. Olvasd el amit írtál, és jöjj rá, hogy az égegyadta világon semmi nem derül ki belőle. Nem tudjuk, hogy milyen webshopról van szó, melyik fájljában próbálsz módosítani és miket kíséreltél meg a megoldás reményében.

Egy biztos: a kód össze-vissza babrálása nem fog előbbre vinni, javaslom, hogy inkább egy debuggert alkalmazz a probléma megoldása érdekében, mert abban meg tudod tekinteni, melyik változónak mi az értéke. Ha guglizni szeretnél, akkor Xdebug vagy Zend Debugger.
2

Pontosabban

Designe · 2011. Ápr. 23. (Szo), 08.56
Nos ez egy virtuemart webshop rendszer és ez a product.product_list.php file 329. soránál van.A listObj ra tettem egy inputot de nem igazán jött össze. Illetve $tmp_cell re is próbáltam rakni.Itt ugyan megjelent a input mező minden terméknél de egyrészt az inputba bele rakta a php kódot illetve utánna még kiírta a mező más értékeit pl class meg hasonlók.
3

Át kell írni

janoszen · 2011. Ápr. 23. (Szo), 09.40
A cella tartalmát szeretnéd egy input mezőre átírni, amiben azonnal tudod szerkeszteni az árat?

Értelmezésem szerint az történik, hogy van egy táblázat generáló rendszere a VirtueMartnak, amibe cellákat lehet betologatni, az addCell második paramétere pedig a cella (<td>) HTML paramétereit tartalmazza. Tehát sejtésem szerint Neked azt kell csinálnod, hogy a $tmpcell változó tartalmát változtatod meg. Ezen felül az onClick eseményt le kell venned a celláról, mert az csinálja a felugró ablakot.

Én ilyesmivel próbálkoznék:

$tmp_cell = '<span class="editable priceform"><input type="text" value="'.$GLOBALS['CURRENCY_DISPLAY']->getValue( $price['product_price']).'"/> '.$price['product_currency'] . '</span>';
Ezek után persze írnod kell rá egy JavaScript hívást, ami elmenti az árat ebből a táblázatból.

Más: a kódból nekem gyanús, hogy nem túl magas szintű elvek mentén készült, ezért simán elképzelhetőnek tartok benne biztonsági hibákat. Ezt támasztja alá, hogy februárban fedeztek fel egy nagyon ronda SQL injection hibát benne. Ilyesminek egy jól megtervezett rendszernél nem szabadna előjönnie!
4

RE

Designe · 2011. Ápr. 23. (Szo), 22.52
Áh ezzel a megoldással én is próbálkoztam csak én kihagytam belőle egy "/> taget.
Az a JavaScript az milyen.Őszintén szólva életemben nem foglalkoztam javascriptel. PHP-ban eljátszadozom ha látok valamire konkrét példát.
Az említett hibát javították már a legfrissebb verziót használom ebből.
5

Nehéz lesz

janoszen · 2011. Ápr. 23. (Szo), 23.52
Akkor attól tartok, egyelőre le kell mondanod az átalakításról, mert sejtésem szerint elég komplex JS feladat.

Ami a biztonságot illeti, lehet, hogy ezt az egy biztonsági hibát javították, de ha egy programnak rossz a kódminősége, folyamatosan lesznek vele bajok. Ha módosítasz a rendszermagon, ráadásul elesel a triviális frissítés lehetőségétől.
6

Sejtettem hogy nem könnyű

Designe · 2011. Ápr. 24. (V), 10.07
Az eredeti kód ugye azt csinálta eddig, hogy amikor rá klikkeltem egy árra akkor felhozott egy ablakot ahol lelehetett cserélni az árat illetve más egyebet is.Ezt JS-el csinálja a kis programocska (gondolom mert a lap alján ott a kód
<script type="text/javascript">
var priceDlg = null;
function showPriceForm(prodId) {

)
Gondolom ugyan ezt fel lehetne használni csak az egyes mezőknél ki kell rakatni vele egy submit gombot és ha rá klikk akkor lefuttatja ezt a js scriptet.
7

Passz

janoszen · 2011. Ápr. 24. (V), 10.28
Szerintem, ez nem lesz annyira egyszerű, kénytelen leszel megérteni, hogy hogyan működik a VirtueMart mentési rendszere és ehhez írni magadnak saját scriptet.
8

re

Designe · 2011. Ápr. 24. (V), 10.52
Na mindegy azért köszi a segítséget.