[5.0] développement module carto
forum6691 Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre forum6691
- Inscrit le : 04/10/2009
- Groupes :
dans lequel j'avais déja posé plein de question pour intégrer un module de carto basé sur des composants javascript du type Jquery, Jquery-ui ,Jquery-easyui, jQDateRangeSlider
Je travaille en local sous wamp, mais j'ai installé rapidement un 5.05 sous hostinger afin de pouvoir partager mes pages et trouver plus facilement de l'aide.
Donc j'ai réinstallé mon module ( pas fini , mais permettant déja de visualiser des données stockées en base ) en V 5.
Le site: http://regate.hol.es/regate/
Il s'affiche mais mal (plus de menu correctement affiché, ni treeview avec les points gps) et je me prend des erreurs qui semblent liées à mes imports de bibliothèques. Du moins je pense que ça vient de là mais j'en suis pas sur.
NB: j'ai la function var J = jQuery.noConflict(); dans mon code RegateHomeController.tpl
Je suis équipé de Firebug et Barre web developper sous Firefox comme client web.
Help me please.
Édité par forum6691 Le 16/06/2016 à 20h23
Testeur V5
janus57 Membre non connecté
-
Booster Fusée
- Voir le profil du membre janus57
- Inscrit le : 07/12/2007
- Groupes :
-
Equipe Assistance
<span class="formatter-blockquote">Citation:</span><div class="blockquote">jQuery.noConflict</div>
déjà ceci n'est plus nécessaire car la V5.0 n'utilise rien d'autre que jQuery en librairie principale.
Ensuite 2 erreurs JS :
<span class="formatter-blockquote">Citation:</span><div class="blockquote">
Google Maps API warning: NoApiKeys <a href="https://developers.google.com/maps/documentation/javascript/error-messages#no-api-keys">https://developers.google.com/maps/documentation/javascript/error-messages#no-api-keys</a>
util.js (ligne 212)
Google Maps API warning: SensorNotRequired <a href="https://developers.google.com/maps/documentation/javascript/error-messages#sensor-not-required">https://developers.google.com/maps/documentation/javascript/error-messages#sensor-not-required</a>
util.js (ligne 212)
You have included the Google Maps API multiple times on this page. This may cause unexpected errors. (ligne 93)
</div>
Et pour finir c'est le bordel car je vois du double head, double jquery etc…
Donc il faut commencer par nettoyer les template des double déclarations et surtout virer la déclaration perso de jQuery qui n'a plus lieu d'être vu que c'est de base.
Cordialement, janus57
forum6691 Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre forum6691
- Inscrit le : 04/10/2009
- Groupes :
Je vais inspecter dans ce sens et vous tiens au courant .
Testeur V5
forum6691 Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre forum6691
- Inscrit le : 04/10/2009
- Groupes :
J'ai récupéré la carto gmap (malgré un message de double inclusion de biblio gmap que je ne m'explique pas), le slider temporel est ok aussi.
Par contre au niveau des menus de la biblio easyUI ça s'affiche très mal.
Quand je regarde les inclusions à faire pour utiliser cette biblio j'ai:
Code TPL :
Comme phpboost implante déja jquery, je n'ai pas rajouté la ligne
dans mon fichier RegateHomeController.tpl
Ma question est la suivante:
Suis je sur que la bibliothèque jquery est appelée par phboost AVANT mon appel à easyui/jquery.easyui.min.js dans mon fichier TPL ?
Testeur V5
babsolune Membre non connecté
-
Administrateur
- Voir le profil du membre babsolune
- Inscrit le : 16/05/2008
- Site internet
- Groupes :
-
Equipe Développement

pour ta question :
Citation:
<link rel="stylesheet" type="text/css" href="easyui/themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="easyui/themes/icon.css">
<script type="text/javascript" src="easyui/jquery.easyui.min.js"></script>
<link rel="stylesheet" type="text/css" href="easyui/themes/icon.css">
<script type="text/javascript" src="easyui/jquery.easyui.min.js"></script>
tu le déclares où ?
jQuery est chargé dans le frame.tpl avec # INCLUDE JS_TOP #, il faut donc que tu déclares ton js easyui après (idéalement après le JS_BOTTOM)
janus57 Membre non connecté
-
Booster Fusée
- Voir le profil du membre janus57
- Inscrit le : 07/12/2007
- Groupes :
-
Equipe Assistance
Je te conseil de tester ton site avec le validateur w3c et de virer l'erreur php (j'avais donné la solution à d'autres).
Cordialement, janus57
forum6691 Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre forum6691
- Inscrit le : 04/10/2009
- Groupes :
janus57 :
Bonjour,
Je te conseil de tester ton site avec le validateur w3c et de virer l'erreur php (j'avais donné la solution à d'autres).
Cordialement, janus57
Je te conseil de tester ton site avec le validateur w3c et de virer l'erreur php (j'avais donné la solution à d'autres).
Cordialement, janus57
J'en suis pas encore à valider le code, car avec la remarque de babsolune, je viens de deviner (enfin je pense) que l'on ne doit pas mettre de balise head et body dans les TPL des modules que l'on développe, ce qui explique pourquoi j'avais des doublons (cf ta précédente remarque Janus).
Je dois donc déplacer mes définitions de CSS et de lib JS ailleurs, MAIS OU? Si je modifie le frame.tpl, je pense que ce n'est pas bon , donc il dois une astuce ? Je vais regarder la doc sur les fichiers TPL dans PHPBOOST
C'est vrai que je rame, mais je n'ai pas votre niveau dans toutes ces technos
NB: J'ai corrigé l'erreur "b_start(): output handler 'ob_gzhandler' conflicts with 'zlib output compression' in " en désactivant la compression de pages. Merci de l'info
Edition complémentaire. J'ai viré de mon tpl les balises html HEAD et BODY et sans rien faire d'autres ça fonctionne bien mieux. Presque retrouver l'éta ou j'en étais resté fin 2014. Mes questions précédentes restent cependant ouvertes à vos remarques et conseils
Édité par forum6691 Le 18/06/2016 à 13h56
Testeur V5
janus57 Membre non connecté
-
Booster Fusée
- Voir le profil du membre janus57
- Inscrit le : 07/12/2007
- Groupes :
-
Equipe Assistance
Justement le validateur w3c permettrait d'éliminer un grand nombre d'erreurs et oui il ne faut surtout pas déclarer de body/head dans les modules.
De plus rien n'interdit de mettre des balises scripts hors body/head, exemple concret sur le site de vtt64 avec le module tracks (normalement cela n'a pas bougé).
Cordialement, janus57
forum6691 Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre forum6691
- Inscrit le : 04/10/2009
- Groupes :
Un peu galéré car il semblerait que j'eusse trouver une modification/erreur dans le code du kernel de PHPBOOST ?
En effet les réponses des controleur en mode JSON pour les variables mettent des [] à la place des {}
J'ai du modifié le fichier /kernel/framework/builderJSONBuilder.class.php pour changer la ligne 54 en
Code PHP :
return ($subarray ? '{' : '{') . implode(',', $values) . ($subarray ? '}' : '}');
J'ai mis des {} à la place des [] pour avoir en retour jason des data comme
Code TEXT :
qui est un code json correct{
"id": "levelReg-1",
"text": "Régate démo 1",
"attributes": {
"info": "Régate d'hiver dans la baie d'Hyères\n du 2014 - 01 - 01 au 2014 - 01 - 15\n Organise par: Hyères Plaisance Organisation ",
"table ": "phpboost_regate "
},
"state": "closed"
}au lieu de
Code TEXT :
qui est incorrect[
"id": "levelReg-1",
"text": "Régate démo 1",
"attributes": [
"info": "Régate d'hiver dans la baie d'Hyères\n du 2014 - 01 - 01 au 2014 - 01 - 15\n Organise par: Hyères Plaisance Organisation ",
"table ": "phpboost_regate "
],
"state": "closed"
]Attention, par contre si vous faites un tableau de ce type de valeur, vous devez avoir:
Code TEXT :
[{
"id": "levelReg-1",
"text": "Régate démo 1",
"attributes": {
"info": "Régate d'hiver dans la baie d'Hyères\n du 2014 - 01 - 01 au 2014 - 01 - 15\n Organise par: Hyères Plaisance Organisation ",
"table ": "phpboost_regate "
},
"state": "closed"
}, {
"id": "levelReg-2",
"text": "Régate démo 2",
"attributes": {
"info": "Régate de printemps entre La Londe et Cavalaire\n du 2014 - 05 - 01 au 2014 - 05 - 15\n Organise par: La Londe Plaisance Organisation ",
"table ": "phpboost_regate "
},
"state": "closed"
}]Pour cela j'ai créé une classe supplémentaire JSONTabResponse.class.php qui ajoute les [] entre chaque élément d'un tableau
Code PHP :
<?php class JSONTabResponse implements Response { private $json; private $long; private $nodes; public function __construct(array $json_object) { $this->json=JSONBuilder::build($json_object); // on convertit en objet json $this->long=strlen($this->json); // on obtient la longueur de la chaine json $this->nodes='['.substr($this->json,1,$this->long-2).']'; // on fabrique une chaine au format json compatible jquery easy ui $this->json=$this->nodes; // on affecte la chaine json au nouveau format dans la variable de retour } public function send() { $response=AppContext::get_response(); $response->set_header('Content-type','application/json; charset=iso-8859-1'); echo $this->json; } } ?>
Version en ligne http://regate.hol.es/regate/
A part les pb de caractères, le reste fonctionne. Choisir le menu fonctions/démo
Édité par forum6691 Le 23/06/2016 à 06h59
Testeur V5
PaperToss Membre non connecté
Booster Bazooka
-
Booster Bazooka
- Voir le profil du membre PaperToss
- Inscrit le : 25/03/2016
Citation:
qui est un code json correct
C'est un JSON correct, il faut juste faire attention à ce que l'on envoie dedans.
Les [] sont utilisées pour des tableaux, et les {} pour l'encodage d'un objet.
Nul besoin donc de modifier quoi que ce soit, uniquement de modifier les valeurs en entrée.
Cordialement.
janus57 Membre non connecté
-
Booster Fusée
- Voir le profil du membre janus57
- Inscrit le : 07/12/2007
- Groupes :
-
Equipe Assistance
D'après la doc json {} c'est pour définir un objet et les [] c'est pour les tableaux.
Cordialement, janus57
j1.seth Membre non connecté
-
Administrateur
- Voir le profil du membre j1.seth
- Inscrit le : 01/09/2008
- Site internet
- Groupes :
-
Chef de Projet
-
Equipe Développement
Elle ne sert à rien, il faut utiliser les fonctions php json_encode() et json_decode() à la place.
forum6691 Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre forum6691
- Inscrit le : 04/10/2009
- Groupes :
Bonjour,
D'après la doc json {} c'est pour définir un objet et les [] c'est pour les tableaux.
Cordialement, janus57
D'après la doc json {} c'est pour définir un objet et les [] c'est pour les tableaux.
Cordialement, janus57
Oui ça je le sais
et quand on transmettre une tableaux d'objets, il faut bien pouvoir encoder des [{},{},{}],[{},{},{}],...La classe JSONBuilder.class.php va être supprimée. Zut alors.
Je veux bien utiliser autre chose , Julien, mais ta méthode "json_encode() " peut elle être mise en réponse de l'appel à un controller appelé par une requete AJAX ? Si oui pas de problèmes pour moi. Si non je vais être géné, car chaque sélection dans mon tree view lance un appel ajax vers un controleur qui fournit en retour un json bien formaté pour affiché le complément du treeview.
A l'époque il me semble avoir tester un return json_encode(montableau) et avoir eu des pb d'exécution du controller qui refuse de retourner ce type de données, d’où la création de la classe SONBuilder.class.php par Reidloss ou toi même ( je ne sais plus qui l'a écrite).
Testeur V5
janus57 Membre non connecté
-
Booster Fusée
- Voir le profil du membre janus57
- Inscrit le : 07/12/2007
- Groupes :
-
Equipe Assistance
si cela peu aider (car là je comprend pas trop le problème) :
Code PHP :
<?php $books = array( array( "title" => "Professional JavaScript", "author" => "Nicholas C. Zakas" ), array( "title" => "JavaScript: The Definitive Guide", "author" => "David Flanagan" ), array( "title" => "High Performance JavaScript", "author" => "Nicholas C. Zakas" ) ); $c = array(array(1,2,3)); echo json_encode($c), "\n\n"; echo json_encode($c, JSON_FORCE_OBJECT); echo "\n\n"; echo json_encode($books), "\n\n"; echo json_encode($books, JSON_FORCE_OBJECT); ?>
<span class="formatter-blockquote">Citation:</span><div class="blockquote">
[[1,2,3]]
{"0":{"0":1,"1":2,"2":3}}
[{"title":"Professional JavaScript","author":"Nicholas C. Zakas"},{"title":"JavaScript: The Definitive Guide","author":"David Flanagan"},{"title":"High Performance JavaScript","author":"Nicholas C. Zakas"}]
{"0":{"title":"Professional JavaScript","author":"Nicholas C. Zakas"},"1":{"title":"JavaScript: The Definitive Guide","author":"David Flanagan"},"2":{"title":"High Performance JavaScript","author":"Nicholas C. Zakas"}}
</div>
Cf : <a href="https://openclassrooms.com/forum/sujet/ajax-recuperation-d-un-array-avec-json-encode">https://openclassrooms.com/forum/sujet/ajax-recuperation-d-un-array-avec-json-encode</a> + <a href="http://www.dyn-web.com/tutorials/php-js/json/array.php">http://www.dyn-web.com/tutorials/php-js/json/array.php</a> + <a href="http://stackoverflow.com/questions/17478269/trying-to-get-json-encode-array-from-php-with-ajax-into-a-javascript-function">http://stackoverflow.com/questions/17478269/trying-to-get-json-encode-array-from-php-with-ajax-into-a-javascript-function</a>
Cordialement, janus57
forum6691 Membre non connecté
Booster Mortier
-
Booster Mortier
- Voir le profil du membre forum6691
- Inscrit le : 04/10/2009
- Groupes :
Code TEXT :
est bonne[{"title":"Professional JavaScript","author":"Nicholas C. Zakas"},{"title":"JavaScript: The Definitive Guide","author":"David Flanagan"},{"title":"High Performance JavaScript","author":"Nicholas C. Zakas"}]La syntaxe
Code TEXT :
ne serait pas correctement interprété.[[1,2,3]]
Je note tes liens Janus. Je vais continuer à mouliner mon projet, car il faut que je commence à rajouter la partie admin qui permettra d'ajouter des fichiers .KML qui pourra ensuite être vue coté utilisateur.
Je pense que je reviendrai sur ce point d'usage de la classe que vous voulez enlevez d'ici quelque temps. Là ça marche, je voudrais avancer sur le reste. Je vais pas vite.
Édité par forum6691 Le 24/06/2016 à 07h13
Testeur V5
Répondre
Sujet verrouillé, vous ne pouvez pas poster de message
