Konkrétně jsem to řešil v situiaci, kdy jsem potřeboval spojit funkčnost pluginů NextGEN ImageFlow a WP Lightbox 2.
Výsledkem je níže uvedný kód, který je potřeba přidat do hlavičky stránky. S ohledem na použité téma/vzhled se může umístění kódu lišit. V drtivé většině případů bude potřeba editovat soubor header.php a v něm přidat mezi tagy a následující…
<!-- Stitod :: www.stitod.cz - START -->
<script type="text/javascript">
/**
* Add Lightbox to NextGen ImageFlow
* Created by Stitod :: www.stitod.cz
*/
var $stitod = jQuery.noConflict();
$stitod (document).ready(function() {
$stitod('img[longdesc]').each(function(i) {
$stitod(this).offsetParent().append('<a style="display: none" rel="lightbox[' + $stitod(this).offsetParent().attr('id') + ']" id="' + $stitod(this).attr('longdesc') + '" href="' + $stitod(this).attr('longdesc') + '"> </a>');
});
$stitod('img[longdesc]').live('dblclick', function() {
// doesn't work
// var selector = '#' + $stitod(this).attr('longdesc');
// myLightbox.start($stitod(selector).get(0));
// works
var selector = $stitod(this).attr('longdesc');
myLightbox.start(window.document.getElementById(selector));
});
});
</script>
<style type="text/css">
#stimuli_overlay, #stimuli_lightbox, #stimuli_outerImageContainer, #stimuli_imageDataContainer { z-index: 20000 !IMPORTANT }
</style>
<!-- Stitod :: www.stitod.cz - END -->
Srp 11
25
Budeme tedy požadovat zavřít okno po odeslání formuláře. Validaci formuláře předpokládáme Ajaxem nebo JavaScriptem na straně klienta. Potřebujeme tak pouze doplnit funkčnost, která po odeslání formuláře provede zavření popup okna.
Možností je opět více. Obsluhu můžeme skrýt třeba do události formuláře onsubmit. Trochu krkolomné odeslání dormuláře (ne jen obyčejné .submit()) je použito z důvodu, že prosté odeslání v některých prohlížečích zlobí a k zavření dojde dříve než k odeslání dat.
$("form").submit(function() {
var $form = $(this);
// odeslani formulare
$.post($form.attr('action'), $form.serializeArray());
// zavreni okna
window.close();
// pro jistotu vratime false, protoze uz jsme data odeslali
return false;
});
Mně se v praxi osvědčil, na zápis trochu jednodušší, postup. Opět v něm využijeme jQuery. Odeslání formuláře necháme beze změny. Doplníme však následující.
$(window).unload(function() {
window.alert('Odeslaný formulář!');
window.close('Odeslaný formulář!');
});
Toť vše. Je však dobré zvolené řešení před ostrým nasazením otestovat napříč webovými prohlížeči.
Srp 11
16
Pokud používáte Flexigrid, možná jste při zobrazení tabulky v IE 9 narazili na popisovaný problém. Namísto očekávaného prázdného políčka tabulky se zobrazí políčko s textovou hodnotou null. Poznamenejme, že zmiňované chování se objevilo při generování tabulky s využitím json.
V našem případě jsme data pro tabulku získávali pomocí PHP z DB a dále zendovským Zend_Json::encode zakódovali. Mohlo se ale stát, že některá data načtená z Db nebyla definována a dále se tak posílala hodnota null.
Možným řešením je tedy upravit samotné načítání dat, tedy doplnit jej o kontrolu a případné nedefinované hodnoty nahradit prázdným řetězcvem apod.
V našem případě jsme ale chybu objevili po delší době a bylo by potřeba hledat a měnit kód na mnoha místech. Jako výhodnější se nám tak jevilo upravit zdojový kód Flexigridu.
Pojďmě na to;)
V souboru flexigrid.js hledejte „td.innerHTML“. Kolem řádky narazíte na
td.innerHTML = row.cell[idx];
což je kód, který plní tabulkovou buňku. Tuto řádku mírně upravíme:
td.innerHTML = ((row.cell[idx] == null) || (row.cell[idx] == undefined)) ? “ : row.cell[idx];
Obsah tak tesujeme, zda je definován a zda není null. Pokud ne, pošleme jej do buňky, jinak vypíšeme prázdný řetězec. Toť vše;)
Srp 10
17
Článků, jak nainstalovat na svém lokálním počítači nejoblíběnější základ pro vývoj webových stránek, je spousta. Málo článků ale na jednom místě shrnuje všechna možná úskalí a jejich řešení. Konkrétně tento článek se zabývá možnými problémy při instalaci na systémech Windows.
Instalace Apache
Budeme se držet tradičních postupů a jako první z trojice Apache, PHP a MySQL budeme instalovat právě prvně jmenovaného. Instalace webového serveru Apache je v případě použití instalárotu velmi jednoduchá.