Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Ocena jQuery modulow
060156
post
Post #1





Grupa: Zarejestrowani
Postów: 146
Pomógł: 0
Dołączył: 9.03.2006
Skąd: Columbus Georgia

Ostrzeżenie: (0%)
-----


Witam,
Ostatnio przyjrzalem sie dokladniej jQuery ( http://jquery.com ) i napisalem
kilka modulow w tym stylu. Moduly mozna wbudowac bezposrednio na strone albo w "PopUp Dialog".
Efekty mozna zobaczyc na stronie: http://www.sowacms.com/Cms/jsowa/jsowa.html
Dodam, ze odpuscilem sobie IE 6 a testowalem IE7+, Chrome, FireFox, Safari i jest OK.
Bede wdzieczny za ocene, sugestie, uwagi.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
060156
post
Post #2





Grupa: Zarejestrowani
Postów: 146
Pomógł: 0
Dołączył: 9.03.2006
Skąd: Columbus Georgia

Ostrzeżenie: (0%)
-----


Odpowiadajac,

Oczywiscie znam biblioteki jQueryUI/ExtJs/Dojo, etc ... ale powiem krotko jest z nimi tak, ze
"aby napic sie mleka to trzeba kupic krowe". U mnie moduly maja strukture hierarchiczna zaleznosci:
jGui->jDialog (rozmiar 31k) a pozostale sa niezalezne.

Zdecydowalem napisac sie swoj edytor RTE poniewaz chcialem go latwo dodawac do stron oraz w
PopUp Dialogs (Istniejace rozwiazania pozwalaja dodawac rte tylko na strone i sa bardzo nieporeczne).
Do RTE Edytora oczywiscie mozna dodac inne funkcje np. image ktora zawiera:
- image managment, rotate, resizing, croping, etc.
Napisanie RTE edytora nie jest skomplikowane ale trzeba znac dobrze algorytmy operowania na
iframe w design mode. Uzywajac modulow jGui+jDialog napisanie zajelo mi to dwa wieczory.
(Prosze pytajacego sie o RTE skontaktowac sie ze mna to wysle source code)

W jService udalo mi sie rozwiazac dwa wazne problemy:
- asymmetrical object marshaling (troche inny jak json i bardziej efektywny ), polega on na tym ze wysyla sie z browsera native javascript objects do php/python/perl i tam sa one widziane jak native php/python/perl classes i odwrotnie (tablice sa widziane w browser jako javascript objects)
- cross domain request forwarding: browser->web server->other web server
- ajax/post synchroniczny, asynchroniczny i abort (przydatny zwlaszcza do autocmplete z database, upload progres bar, etc ...)

Tutaj jest przyklad PHP jService container services implementation dla ajax, post, mysql services i cross domain forwarding:
  1. //
  2. // jService container services implementation
  3. //
  4. include_once("SowaSession.inc");
  5. include_once("LogFile.inc");
  6. include_once("SowaService.inc");
  7.  
  8. $_ses = new Session();
  9. $_req = new Request();
  10. $_log = new LogFile("../jservice.log",$_req->log());
  11.  
  12. if(!$_req->is_forward()) // forward request to other web server
  13. switch($_req->service()) { // requested service name
  14.  
  15. case "mysql":
  16. include_once("MySqlDb.inc"); // query service implementation for mysql
  17.  
  18. case "ajax": // ajax service implementation
  19. $body=$_req->body(); // get request objects
  20. if(is_object($body)) {
  21. $body->digit=time(); // set response object attribute
  22. $_req->body($body); // set response like object
  23. }
  24. break;
  25.  
  26. case "post": // post service implementation
  27. $post = $_ses->robj("post_"); // get post request object
  28. if(is_object($post)) {
  29. $post->files=$_FILES; // set uploaded files info
  30. $_req->body($post);
  31. }
  32. break;
  33.  
  34. default:
  35. $_req->error("Service '".$_SERVER['PHP_SELF']."/".$_req->service()."' not Implemented");
  36. }
  37. $_req->response(); // send response to browser

Przyklad jService browser ajax request
  1. jService.ajax("service.php","ajax",[["sb",javascript object]],
  2. function(body, args, error) {
  3. if($d.Message("last","AJAX REQUEST ERROR",error)) return;
  4. // process response (response: body - object, args - array name value pair)
  5. });

Przyklad jService browser ajax cross domain request
  1. jService.ajax("service.php?http://www.sowacms.com/service.php","ajax",
  2. // target jService container -> www.sowacms.com/service.php
  3. [["sb",javascript object]],
  4. function(body, args, error) {
  5. if($d.Message("last","AJAX REQUEST ERROR",error)) return;
  6. // process response
  7. });

Przyklad jService browser query request
  1. // query sowacms.cms_content table (all columns), response array of objects
  2. jService.query("service.php","sowacms",[["qos","cms_content","*","order by name"]],
  3. function(objects, error, args) {
  4. if($d.Message("last","QUERY OBJECTS ERROR",error)) return;
  5. for(var i = 0; i < objects.length; i++) {
  6. // process response object
  7. }
  8. });


Powyzsze przyklady pokazuja jak prosto korzysta sie z moich modulow, prosze porownac to z innymi bibliotekami.

Dziekuje za opinie/sugestie


Ten post edytował 60156 30.07.2011, 18:34:22
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 13.10.2025 - 22:15