Niezalogowany [ logowanie ]
Subskrybuj kanał ATOM Kanał ATOM    Subskrybuj kanał ATOM dla tagu jquery Kanał ATOM (tag: jquery)

Autor wpisu: batman, dodany: 08.10.2010 08:00, tagi: jquery, zend_framework

Czym jest serwis internetowy? Jest to zbiór formularzy oraz danych dodanych przy pomocy tych formularzy. Gdyby nie formularze, Internet taki jakim go znamy. Wyobrażacie sobie w jaki sposób dodawalibyście cokolwiek na ścianę facebooka bez formularzy?

W przypadku formularzy najczęstszym schematem jest ścieżka:

  • strona początkowa (informacje na temat formularza lub dane zebrane przy jego pomocy)
  • formularz (obsługa błędów, operacje na wprowadzonych danych)
  • strona końcowa (podziękowania za wysłanie formularza lub powrót do strony początkowej).

Prawda, że nudne? Okazuje się, że wyrwanie się z tego schematu wcale nie jest takie trudne. Wystarczy formularz wyświetlić na warstwie, a dane zapisać AJAXem w tle. Oczywiście nie można zapomnieć o sytuacji kryzysowej, w której z jakiegoś powodu (np. błąd w skrypcie) zostaliśmy pozbawieni możliwości korzystania z Javascript.

Wszystko to, co przed chwilą opisałem można zrealizować niewielkim nakładem prac przy pomocy komponentu Zend_Form, biblioteki jQuery oraz pluginu FancyBox. Najciekawsze w tym wszystkim jest to, iż nie musimy wcale pisać dodatkowego kodu. Wszystkim zajmą się mechanizmy wbudowane w Zend Frameworka oraz konwencja, której trzeba się trzymać podczas stosowania tego sposobu.

Zacznijmy od formularza. Będzie to prosty formularz zbierający dane o użytkownikach (w przykładzie wykorzystałem klasę Batman_Form opisaną we wpisie Uniwersalne dekorowanie Zend_Form).

class Application_Form_FancyboxExample extends Batman_Form
{
    protected function _renderForm()
    {
        $this->setName('form_fancybox_example');
        $this->setAction('/index/fancyboxform');

        $firstname = new Zend_Form_Element_Text('firstname');
        $firstname->setLabel('Imie')
                  ->setRequired(true)
                  ->addValidator(new Zend_Validate_NotEmpty(), true);

        $lastname = new Zend_Form_Element_Text('lastname');
        $lastname->setLabel('Nazwisko')
                 ->setRequired(true)
                 ->addValidator(new Zend_Validate_NotEmpty(), true);

        $submit = new Zend_Form_Element_Submit('btn_save');
        $submit->setLabel('Zapisz')
               ->setIgnore(true);

        $this->addElement($firstname);
        $this->addElement($lastname);
        $this->addElement($submit);
    }
}

Kluczowym tutaj elementem jest zastosowanie akcji, która jednoznacznie wskazuje na akcję, odpowiedzialną za przetworzenie formularza. Ten prosty zabieg umożliwi nam obsłużenie formularza w przypadku braku Javascript.

Następnie musimy stworzyć widok, który będzie zawierał link do formularza.

<a href="/index/fancyboxform" id="link">dodaj uzytkownika</a>

Na koniec pozostaje stworzenie akcji

public function fancyboxformAction()
{
    $form = new Application_Form_FancyboxExample();
    if($this->_request->isPost()) {
        $postData = $this->_request->getPost();
        if($form->isValid($postData)) {

            // zrob cos z danymi

            $this->_redirect('/index/fancyboxexample');
        }
    }
    $this->view->form = $form;
}

i widoku z formularzem.

<h1>Formularz</h1>
<?php echo $this->form; ?>

Jak dotąd nie zrobiliśmy nic ponad stworzenie standardowego, nudnego formularza wraz z jego obsługą. Pora na magię.

Czytaj dalej tutaj (rozwija treść wpisu)
Czytaj dalej na blogu autora...

Autor wpisu: batman, dodany: 06.10.2010 08:00, tagi: jquery

Godzina 3.41, noc z soboty na niedzielę po niezłej zabawie. Wybudzony ze snu deweloper, zapytany o najlepszą bibliotekę Javascript bez chwili zastanowienia odpowie – jQuery. Wydawać by się mogło, że nic już się nie da dodać do tej biblioteki. A jednak. Na oficjalnym blogu jQuery, pojawiła się informacja o zaakceptowaniu trzech pluginów stworzonych przez Microsoft jako oficjalnych pluginów jQuery. Pluginy te to jQuery Templates, jQuery Data Link oraz jQuery Globalization. Dwa pierwsze będą utrzymywane w ramach podstawowej biblioteki, ostatni w ramach jQuery UI. Co więcej, jQuery Templates zostanie włączone do biblioteki od wersji 1.5.

O co tyle szumu? Okazuje się, że wspomniane pluginy znacznie usprawniają pracę z biblioteką. Dzięki pierwszemu z nich – jQuery Templates – programista zyskuje potężne narzędzie w postaci szablonów, które w bardzo prosty sposób może osadzić na stronie. Szablony te można wypełnić danymi pochodzącymi z tablicy lub zwróconymi z AJAXa.

<script type="text/javascript">
	var movies = [
		{ Name: "The Red Violin", ReleaseYear: "1998" },
		{ Name: "Eyes Wide Shut", ReleaseYear: "1999" },
		{ Name: "The Inheritance", ReleaseYear: "1976" }
	];

	var markup = "<li><b>${Name}</b> (${ReleaseYear})</li>";

	// Compile the markup as a named template
	$.template( "movieTemplate", markup );

	// Render the template with the movies data and insert
	// the rendered HTML under the "movieList" element
	$.tmpl( "movieTemplate", movies ).appendTo( "#movieList" );
</script>

<ul id="movieList"></ul>

Plugin jQuery Data Link znacznie upraszcza “bindowanie” właściwości jednego obiektu do właściwości innego obiektu. Jest to bardzo przydatna funkcjonalność w przypadku formularzy, gdzie wprowadzane dane można od razu powiązać z odpowiednim obiektem.

<!DOCTYPE html>
<html>
<head>
	<style>
	</style>
	<script src="http://github.com/nje/jquery-datalink/raw/e3e3be4312c9b224a8d9b25031f4ac876e4f70fd/jquery.js"></script>
	<script src="http://github.com/nje/jquery-datalink/raw/master/jQuery.datalink.js"></script>
</head>
<body>
	<form>
		<div>
			First Name:
			<input type="text" name="firstName" />
		</div>
		<div>
			Last Name:
			<input type="text" name="lastName" />
		</div>
	</form>
    Object.firstName: <span id="objFirst"></span><br/>
    Object.lastName <span id="objLast"></span>
	<script>
		var person = { };
		$("form").link(person);
		
		// Chain link the person object to these elements to show the results
		$("#objFirst").link(person, {
			firstName: {
				name: "objFirst",
				convertBack: function(value, source, target) {
					$(target).text(value);
				}
			}
		});

		$("#objLast").link(person, {
			lastName: {
				name: "objLast",
				convertBack: function(value, source, target) {
					$(target).text(value);
				}
			}
		});
	</script>
</body>
</html>

Ostatni plugin – jQuery Globalization – dostarcza API do bezproblemowego konwertowania zlokalizowanych danych. Dzięki niemu, programiści będą mogli bez problemu dokonywać konwersji dat oraz wartości liczbowych.

Pluginy można pobrać z następujących adresów:

Dokumentacja jest dostępna pod adresami:

Autor wpisu: batman, dodany: 05.10.2010 09:12, tagi: javascript, jquery

jQuery. Poradnik programisty jest jedną z pierwszych książek traktujących o jQuery w Polsce. Podchodząc do jej lektury miałem mieszane uczucia. Spis treści wskazywał raczej na tłumaczenie dokumentacji, a ilość stron (raptem 270) utwierdzała mnie w tym przekonaniu. Niemniej byłem ciekawy, czy książka ma coś do zaoferowania osobie, która na co dzień korzysta z tytułowej biblioteki. Bardzo mnie zastanawiała kwestia sposobu, w jaki jest ona zorganizowana. Czy autor poprzestał na przetłumaczeniu ogólnodostępnej dokumentacji, czy też odrobił pracę domową i stworzył solidny przewodnik? Wreszcie czy będzie to suchy tekst, o którym zapomnę dzień po zakończeniu lektury, czy też często będę do niej powracał, szukając rozwiązania jakiegoś problemu?

Książka została podzielona na trzy części: abecadło, interfejs API oraz wtyczki. Pierwsza część jest przeglądem możliwości jQuery, druga zawiera pełny opis biblioteki, a ostatnia w bardzo przystępny sposób prezentuje proces tworzenia wtyczek. Każda z części została dodatkowo podzielona na rozdziały, odzwierciedlające zagadnienia związane z jQuery, np. selektory, manipulacja drzewem DOM, czy AJAX. Co więcej, każdy z rozdziałów został tak przygotowany, by teoria stanowiła jak najmniejszą jego część. Po krótkim wstępie wyjaśniającym bieżące zagadnienie, autor na przykładach pokazuje praktyczne możliwości biblioteki. Przykłady te nie są oderwanymi od rzeczywistości zadaniami akademickimi (takie też się zdarzają), tylko pełnoprawnymi skryptami, które można później wykorzystać, np. wtyczka karuzela do przeglądania zdjęć.

Podczas objaśniania kilku przykładów, autor posłużył się rozszerzeniami przeglądarki Firefox i delikatnie sugerował, że każdy, kto na poważnie myśli o korzystaniu z jQuery, również powinien z nich korzystać. Mowa tutaj o rozszerzeniach Firebug, LiveHttpHeaders oraz Web Developer Toolbar.

Na początku tej recenzji podzieliłem się z wami moimi obawami w stosunku do tej książki. Czy się potwierdziły? Nie. Okazało się, że były one mocno przesadzone. Książkę mogę śmiało polecić wszystkim, którzy chcieliby zapoznać się z jQuery. Wbrew moim przewidywaniom nie jest to bezmyślnie przetłumaczona dokumentacja, tylko dobrze zaplanowana książka, płynnie przechodząca między zagadnieniami. Jeśli znacie jQuery na tyle dobrze, że nie musicie zaglądać do dokumentacji i macie na koncie kilka wtyczek, książka będzie raczej stanowiła suplement dokumentacji, niż źródło wiedzy. Nie da się nie odnieść wrażenia, że została przygotowana pod kątem osób stawiających pierwsze kroki w świecie jQuery.

Podsumowując. jQuery. Poradnik programisty jest solidną książką, która powinna znaleźć się w biblioteczce każdego, kto chciałby rozpocząć przygodę z tą biblioteką. Jeśli nadal zastanawiasz się nad wyborem biblioteki Javascript, z której będziesz korzystał, ta książka znacznie ułatwi Ci wybór.

 

Powyższa recenzja ukazała się również na łamach serwisu Software.com.pl, pod adresem http://software.com.pl/recenzja-jquery-poradnik-programisty/

Autor wpisu: batman, dodany: 22.08.2010 17:35, tagi: javascript, jquery

Jakiś czas temu na blogu MIX Online pojawił się wpis na temat narzędzia pozwalającego tworzyć animacje jQuery. Podobnie jak wy teraz, podszedłem do tematu dosyć sceptycznie i odłożyłem jego zgłębianie na później. Dzisiaj zainstalowałem to narzędzie i przeprowadziłem kilka prostych testów. Ich wynik przeszedł moje najśmielsze oczekiwania. Okazuje się, że Glimmer został dokładnie przemyślany i oprócz przyjaznego interfejsu oferuje bardzo dobre narzędzia do tworzenia animacji. Wystarczy wspomnieć o wizadrach, dzięki którym w kilka chwil można stworzyć rozwijane menu lub tooltip. Oczywiście obok gotowych animacji mamy do dyspozycji edytor, który pozwoli zaprojektować animację od początku do końca. Po zainstalowaniu i uruchomieniu Glimmera, ujrzymy ekran powitalny, z poziomu którego można stworzyć własną animację, wybrać jedną z dostępnych lub przejść do strony projektu. glimmer Nie będę opisywał gotowych szablonów, ponieważ ich zastosowanie jest intuicyjne i sprowadza się do kilku prostych kroków. Poza tym wizardy zostały tak przygotowane, że nie wymagają dodatkowego opisu. O wiele bardziej interesujące są możliwości jakie daje edytor animacji. editor Wystarczy wczytać plik HTML, zawierający poprawnie sformatowany kod, a następnie wskazać źródło zdarzenia, typ zdarzenia oraz cel. Źródłem zdarzenia może być dowolny element znajdujący się we wczytanym dokumencie. Element można wskazać po tagu (np div), klasie (.jakas-klasa) lub identyfikatorze (#identyfikator). Typem zdarzenia są wszystkie przewidziane przez jQuery zdarzenia, np click, mouseover, blur, scroll, itp. new-action Cel wybiera się w taki sam sposób jak źródło. Po określeniu celu, należy wybrać rodzaj animacji oraz ustalić jej parametry. Np dla animacji przeźroczystości należy wybrać wartość początkową oraz końcową. Oprócz samej animacji mamy możliwość ustalenia dodatkowych parametrów, takich jak czas trwania oraz efekt przejścia. Co więcej, można wskazać animację jaka ma się wykonać po zakończeniu bieżącej. editor-expanded Edytor daje możliwość określenia więcej niż jednej animacji na cel oraz więcej niż jeden cel na zdarzenie. Przy odrobienie wysiłku można stworzyć skomplikowaną animację bez napisania ani jednego wiersza w Javascript. Jeśli martwicie się o jakość wygenerowanego kodu, spieszę wyjaśnić, że kod jest poprawnie wygenerowany i nie zawiera dziesiątek zbędnych zmiennych i dziwnych operacji. Jedyne co kiepsko wygląda w wygenerowanym kodzie, to komentarz zawierający informacje niezbędne dla Glimmera. Po zakończeniu pracy można ten komentarz śmiało usunąć. Oto przykładowy kod wygenerowany przez to narzędzie (nic w nim nie zmieniałem).
//Microsoft.Glimmer.OneWay
//<AnimationCollection FilePath="C:\test.html.glimmer.js" xmlns="clr-namespace:GlimmerLib;assembly=GlimmerLib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"><Animation Name="ActionName1" EventType="click" Trigger="#link"><Animation.Targets><Target Name="#div" Duration="1000" Easing="linear" Callback="ActionName2"><Target.Effects><ColorEffect CSSName="color" DisplayName="Color Animation" MaxValue="1" MinValue="0" From="0" To=""darkred"" IsStartValue="False" IsActive="True" IsAnimatable="True" IsExpression="False" FormatString="" RequiresJQueryPlugin="True" JQueryPluginURI="effects.core.js" /></Target.Effects></Target></Animation.Targets></Animation><Animation Name="ActionName2" EventType="[none]" Trigger="{x:Null}"><Animation.Targets><Target Name="#div" Duration="1000" Easing="linear" Callback="null"><Target.Effects><RemoveHTMLEffect CSSName="#link" DisplayName="Remove HTML Effect" MaxValue="0" MinValue="0" From="0" To="0" IsStartValue="False" IsActive="True" IsAnimatable="False" IsExpression="False" FormatString="$({1}).remove();
" RequiresJQueryPlugin="False" JQueryPluginURI="" /></Target.Effects></Target></Animation.Targets></Animation></AnimationCollection>
jQuery(function($) {
var timer;
function ActionName1(event)
{
    $("#div").animate({"color":"blue"},1000, "linear", ActionName2);
}

function ActionName2(event)
{
     $("#link").remove();
}

$('#link').bind('click', ActionName1);


});
Więcej informacji na temat Glimmera oraz przykładowe animacje znajdziecie na oficjalnej stronie projektu.

Autor wpisu: batman, dodany: 13.08.2010 23:11, tagi: javascript, jquery

Ekipa odpowiedzialna za jedną z najlepszych bibliotek Javascript, powiadomiła o starcie nowego projektu – jQuery Mobile. Jego celem jest przygotowanie jQuery do poprawnego działania w przeglądarkach mobilnych. Co najważniejsze projekt ten zakłada, że nie będzie wydzielana specjalna wersja biblioteki, dzięki czemu nie trzeba martwić się o dołączenie odpowiedniej biblioteki zależnej od platformy.

Równolegle do prac nad podstawową biblioteką, trwają prace na jQuery UI. Wprowadzane zmiany mają na celu umożliwienie korzystanie z jQuery UI na większości przeglądarek mobilnych. Oprócz zmian umożliwiających wykorzystanie już istniejących kontrolek, w nowej wersji biblioteki znajdą się nowe kontrolki przygotowane specjalnie z myślą o urządzeniach przenośnych.

Wraz ze zmianami w podstawowej bibliotece oraz UI, pojawią się modyfikacje w ThemeRoller, narzędziu do tworzenia dedykowanych stylów. Programiści tworzący mobilne wersje stron będą mogli w kilka chwil dopasować wygląd kontrolek do aktualnie tworzonych stron.

źródło: blog.jquery.com

Autor wpisu: eRIZ, dodany: 23.07.2010 14:02, tagi: jquery, javascript, php

Przyznam, że już dawno nie miałem takiej zagwozdki, jak ta, która spotkała mnie przez ostatnie 3 dni.

Zaczął mnie - delikatnie mówiąc - irytować fakt, iż na maila lecą czasem załączniki 40 MiB, więc postanowiłem napisać na potrzeby teamu małą aplikację, która miała:

  • zautoryzować użytkownika (to nie *share, że wszyscy mają mieć dostęp)
  • ułatwić wybór i upload
  • przyjąć pliki na serwerze i dać znać, komu trzeba

Coś podobnego już działa, jednak to wybitna prowizorka - najprostszy formularz i jedno pole. Ot, filozofia. Ale potrzebne jest coś, co działa trochę lepiej i nie zraża interfejsem. ;)

Teoria fajna?

Autor wpisu: batman, dodany: 24.06.2010 17:30, tagi: jquery, javascript

Programiści pracujący nad jQuery UI wypuszczają co pewien czas kolejne milestone’y tej biblioteki. Dzisiaj światło dzienne ujrzał milestone 2, zawierający długo wyczekiwaną funkcjonalność – menu. Widżet ten zamienia standardową listę kotwic (znaczników a) w menu, obsługiwane zarówno myszką, jak i klawiaturą.

Równie ciekawym widżetem jest zaprezentowany w pierwszym milestone tooltip, którego zadaniem jest zastąpienie domyślnego, nieatrakcyjnego wizualnie tooltipa. Widżet ten jest w pełni konfigurowalny i dzięki czemu można dowolnie określić położenie tooltipa jak również jego wygląd.

Opis menu oraz tooltipa znaleźć można w dokumentacji jQuery UI pod adresami http://docs.jquery.com/UI/Menu oraz http://docs.jquery.com/UI/Tooltip.

Wszystkie wpisy należą do ich twórców. PHP.pl nie ponosi odpowiedzialności za treść wpisów.