Dotclear

Vous n'êtes pas identifié(e).

Annonce

#26 2017-07-13 16:55:08

gnieark
Membre
Lieu : Entre Paris et Rouen
Inscription : 2011-01-12
Site Web

Re : application dotclear ?

Hello

Maintenant que vient faire breadcrumb là dedans ?

Mon cerveau a fourché, je voulais écrire clearbricks.

Je cherche en suivant tes pistes(utilisation de staticRecord) ça a l'air de répondre à mon besoin.

Merci!

Hors ligne

#27 2017-07-20 18:41:40

gnieark
Membre
Lieu : Entre Paris et Rouen
Inscription : 2011-01-12
Site Web

Re : application dotclear ?

Hello,

J'ai attaque la méthode patch Catégorie (pour modifier les catégories) et..

$core->blog->getCategories($params);

retourne un tableau du genre:


{"cat_id":"4","cat_lft":"2","cat_rgt":"5","level":"1","cat_title":"trololo","cat_url":"trololo","cat_desc":"","nb_post":0,"nb_total":0}

La gestion en cat_rgt et cat_lft de la position de la catégorie était j'imagine le meilleur moyen pour gérer l'affichage, et l'utilisateur utilisant du drag and drop pour les déplacer, et dotclear calcule les nouvelles left et right c'est cool.

Cependant dans le cadre d'une API, Je ne souhaite pas laisser la possibilité de définir cat_rgt et cat_lft au risque de créer des incohérences avec les autres catégories.

Bref, je vais calculer leurs positions relatives... Mais du coup ça m’emmène à une question:

mysql> SELECT * FROM dc_category;
+--------+----------+-------------------+-------------------+----------+--------------+---------+---------+
| cat_id | blog_id  | cat_title         | cat_url           | cat_desc | cat_position | cat_lft | cat_rgt |
+--------+----------+-------------------+-------------------+----------+--------------+---------+---------+
|      4 | default  | trololo           | trololo           |          |            0 |       2 |       5 |
|      5 | default  | kjdhfk            | kjdhfk            |          |            0 |       6 |       7 |
|      6 | default  | child             | trololo/child     |          |            0 |       3 |       4 |
|      7 | test-api | TestingCat        | TestingCat        | NULL     |            0 |       2 |       3 |
|      8 | test-api | KLJDIOKJCKJGCUG   | KLJDIOKJCKJGCUG   | NULL     |            0 |       4 |       5 |
|      9 | test-api | Testing sub Cat   | Testing-sub-Cat   | NULL     |            0 |       6 |       7 |
|     10 | test-api | Testing sub Cat 2 | Testing-sub-Cat-2 | NULL     |            0 |       8 |       9 |
|     11 | default  | string            | string            | string   |            0 |       8 |      11 |
|     12 | default  | string            | string/string     | string   |            0 |       9 |      10 |
+--------+----------+-------------------+-------------------+----------+--------------+---------+---------+
9 rows in set (0.00 sec)

C'est quoi le champs cat_position?

Merci d'avance!

Hors ligne

#28 2017-07-21 05:04:44

Franck
Footer de merde
Lieu : Paris
Inscription : 2004-11-09
Site Web

Re : application dotclear ?

Cette colonne ne sert plus à rien mais était utile avant qu'on implémente la gestion (insertion/recherche/suppression) des catégories avec un algorithme spécialement fait pour gérer les arbres. Je suppose que cette colonne a échappé à l'attention du développeur au moment de l'implémentation et que depuis on l'a oubliée dans son coin.

cat_lft et cat_rgt servent à ça (et rien qu'à ça d'ailleurs).

Je peux retrouver l'algo en question si ça t'intéresse.

Quoi qu'il en soit c'est du plutôt bas niveau et n'a normalement pas à être exposé via l'API


Dotclear addicted since 2004

Hors ligne

#29 2017-07-21 08:43:17

gnieark
Membre
Lieu : Entre Paris et Rouen
Inscription : 2011-01-12
Site Web

Re : application dotclear ?

Merci pour cette réponse.

Franck a écrit :

Je peux retrouver l'algo en question si ça t'intéresse.

Non, je pense que ça va aller.

Franck a écrit :

Quoi qu'il en soit c'est du plutôt bas niveau et n'a normalement pas à être exposé via l'API

J'étais dans cette idée.

Hors ligne

#30 2017-08-07 21:48:29

gnieark
Membre
Lieu : Entre Paris et Rouen
Inscription : 2011-01-12
Site Web

Re : application dotclear ?

Hello,

En fait,
"Nested Tree" -> "arbre plus classique parent_id|cat_position".  ça m'a pris une heure ou deux
mais dans l'autre sens,
"arbre plus classique parent_id|cat_position" -> "Nested Tree"
c'est plus chaud

..Surtout quand je me dis que les potentiels utilisateurs de l'API seront les blogs les plus gros, avec des centaines de catégories, et donc je m'interdis d'imbriquer top de boucles.

Mais Cool, y a un peu de challenge d’algorithme, je commençais à trouver le dev de l'API fastidieux :D

Voila le vrai sujet de ce message, l'extensibilité de l'API:

les points d'entrée de l'API sont "filtrés" dans le fichier _public.php function RestFactoryQuery

Je vais réécrire cette function pour la faire sous forme:

private function restFactoryQuery($httpMethod,$args,$body){
 
  $internalsEntryPoints = 
   array_merge(
    //les points d'entrées fournis avec l'API  
    array(
      //Group of entry point 1
      array(
        "Specs" => array(
          'URLPattern'  => '/^specs\/(.*)$/'
          'HTTPMethod'  =>  'GET'
          'classToUse'  =>  'RestQueryGetSpecs' // the class must extends extends RestQuery
                                              // once constructed, 
                                              // must instance class->response_message
                                              // and class->response_code
          ),
          array(
            //same heys as previous, a second entry point
          )
        ),
        'swaggerDesc'  => json_decode(file_get_contents(etc....) // facultative, array containing the swagger specs for the group
      )
      //Group 2
      ... etc ...
      
    ),
    //les points d'entrées fournis par des plugins tiers
    $this->get_entry_points_given_by_tierces_pluggins()
  );
  
  //code qui compare les patterns et l'httpMethod avec la requete du client

  return new ClassToUse($args,$body);
  
}

Tout est là, il faut  écrite la function get_entry_points_given_by_tierces_pluggins(
et donc aussi trouver le mécanisme qui permette aux pluggins de "déclarer" qu'ils étendent l'API.
Ils doivent annoncer:
* le pattern des arguments  de l'URL (Je n'ai toujours pas pris le temps de vérifier comment ça se comporte en query_string)
* la méthode http (post/get/patch/delete/put)
* la classe que l'API doit lancer
* la doc swagger (facultatif, mais ce serait cool)

Bref... Contributor wanted ;) sur cette partie. A minima quelques pistes sur la façon de faire get_entry_points_given_by_tierces_pluggins(), et de façon à ce que ce soit relativement proche de la logique dotclear pour la déclaration des plugins.


Merci d'avance!

PS: get_entry_points_given_by_tierces_pluggins() est le nom de function que je viens de jeter sur ce forum dans le but que ce soit compréhensible. Il sera peut être changé.

Dernière modification par gnieark (2017-08-07 21:53:45)

Hors ligne

#31 2017-08-08 04:59:14

Franck
Footer de merde
Lieu : Paris
Inscription : 2004-11-09
Site Web

Re : application dotclear ?

Note de service : pas de net à la maison (je bouffe la data sur la 4G), et un peu surbooké au taf pendant encore 2 semaines (après c'est vacances) → je vais pas répondre tout de suite :-)

Mais je note et je vais y réfléchir…


Dotclear addicted since 2004

Hors ligne

#32 2017-08-09 21:39:14

gnieark
Membre
Lieu : Entre Paris et Rouen
Inscription : 2011-01-12
Site Web

Re : application dotclear ?

Message en vacances depuis le fin fond de la Creuse:

Tu as de la chance d'avoir de la 4G ;). Je me cogne un roaming H free-Orange dégueulasse.

Pas de soucis pour le délais, j'estime l'API codée à 40%, il y a de quoi faire avant que ça me bloque.

Il y a peut être moyen (depuis le plugin de l'API) de lister les plugins actifs  et récupérer des valeurs du _define.php des autres plugins dans ce but.

Hors ligne

#33 2017-08-10 05:06:48

Franck
Footer de merde
Lieu : Paris
Inscription : 2004-11-09
Site Web

Re : application dotclear ?

Perso je voyais plutôt ça comme une (ou plusieurs) méthode(s) exposées chez toi (aka ton plugin API) pour répertorier une ou plusieurs entrées d'API supplémentaire et que les autres (éventuels) plugins se débrouillent — à la manière des behaviours que chaque plugin enregistre. De plus je ne suis pas du tout certain qu'il en existe un jour, mais autant avoir une porte ouverte le cas échéant :-)

Quoi qu'il en soit ça peut largement attendre la fin, voire une version ultérieure


Dotclear addicted since 2004

Hors ligne

#34 2017-08-14 11:12:57

gnieark
Membre
Lieu : Entre Paris et Rouen
Inscription : 2011-01-12
Site Web

Re : application dotclear ?

Hello,

Suite à ce message ;) https://blog-du-grouik.tinad.fr/post/20 … ligne#c690

Swagger, je l'utilise pour me faciliter l'écriture des specifications de l'API. Il servira de documentation livrée avec le pluggin. De plus plus il génère automatiquement une interface web qui permet de tester son API.

spourssa

Pour utiliser swagger, par là https://swagger.io/swagger-editor/ ((ou installer localement swagger-editor)

Les specs sont à rédiger sous forme d'un tableau yaml. C'est assez pénible au début mais on s'y fait vite. Concernant la structure à respecter, au début je naviguais entre la documentation et des exemples, maintenant c'est bon, ce n'est pas si compliqué.

Pour les specs de l'API, il faut prendre un des fichiers json sous la forme swagger-*.json là https://bitbucket.org/gnieark/dc-rest-a … at=default
Copier coller le contenu dans swagger editor (il propose de convertir le json en yaml automatiquement)


Dans l'interface admin du pluggin, j'ai plus ou moins bien intégré swagger-ui: Concernant les jsons déposés dans le répertoire "documentation", avant de les "servir" à swagger-ui certaines variables sont modifiées par l'API: de tête, le host et le basepath qui correspondent aux URLS "points d'accès".

Concernant la vue "toute la documentation", c'est un concaténage de tous les fichiers de documentation.

Hors ligne

#35 2017-08-21 19:53:50

gnieark
Membre
Lieu : Entre Paris et Rouen
Inscription : 2011-01-12
Site Web

Re : application dotclear ?

Hello Franck, j'ai une petite question sur les transactions et la méthode openCursor

si je fais un truc du genre:

$this->con->begin();
$sql = "blah blah;";
$this->con->execute($sql);
$sql2 = "blah 2 blah;";
$this->con->execute($sql2);

$cur = $this->con->openCursor()
$cur = $this->con->openCursor($this->core->prefix.'category');
$cur->propertie = 'value';
$cur->insert()

$this->con->commit();


Est-ce que la dernière partie utilisant la méthode openCursor est prise dans la transaction?

Dernière modification par gnieark (2017-08-21 19:54:37)

Hors ligne

#36 2017-08-22 05:27:48

Franck
Footer de merde
Lieu : Paris
Inscription : 2004-11-09
Site Web

Re : application dotclear ?

Vite fait je dirais que oui, tout ce qui se passe entre le begin() et le commit() fera partie de la transaction, par contre ton premier openCursor() ne sert pas à grand chose ;-)

la classe cursor n'est là que pour simplifier des requêtes sur une table


Dotclear addicted since 2004

Hors ligne

#37 2018-01-02 09:39:47

arka
Membre
Lieu : Nouméa
Inscription : 2010-08-21

Re : application dotclear ?

Bonjour à tous,

Je déterre un peu le sujet pour vous faire part de cette appli:

https://forum.dotclear.org/viewtopic.php?id=49348

J'utilise les API XMLRPC, je suis en train d'implémenter la gestion des catégories, en revanche aucune méthode de transfert pour les médias n'est implémentée.
Alors si il y a un courageux ;)

Pour le reste, c'est fonctionnel.

@+

Hors ligne

#38 2018-01-13 10:49:55

arka
Membre
Lieu : Nouméa
Inscription : 2010-08-21

Re : application dotclear ?

Bonjour,

S'il y a des interessés, les sources soni ici: https://github.com/4rk4/androdot .
La gestion des catégories et l'upload d'images sont fonctionnels.

@+

Hors ligne

#39 2018-06-14 20:09:47

i_love_dc
Membre
Inscription : 2007-07-13

Re : application dotclear ?

Bonjour, je reviens aux nouvelles concernant ce fil.

Application y a t'il ?
Est ellle en téléchargement sur Google play ?
Y a-t-il  une démo, un tuto  quelque chose qui expliquerait le fonctionnement de cette appli svp ?

Hors ligne

Vous n'êtes pas identifié(e).

Pied de page des forums

Sites map