Module data et schema - premiers tests

Sur une vm (récup de ce site) + data_UI 7.x-1.0-alpha6 + Schema 7.x-1.2 - drupal 7.32
Schema, Data et Data_UI seuls + Views 3.8

1er test - sans aucun sous module activé

admin/content/data (3 onglets: vue d'ensemble, vue shema et adopt tables) et  admin/structure/data

en allant à admin/structure/data/adopt j'ai des erreurs relatif à datetime sur des table en com, toutes à la ligne 384 de schema.module :
   Ex: "User warning : comregistration_entity.close: no schema type for mysql type datetime. dans schema_schema_type() (ligne 384 dans ...modules/schema/schema.module)."
Il suffit d'effacer les tables qui trainaient (traces d'une ancienne install, partiellement effacée en bd) -> plus de soucis.

Plus bas, sous le titre "Orphaned Tables" toutes les tables de la bd en cours, qui sont soit

  • liées à d'autres sites drupal installés avec le meme drupal - cf installation multi-site
    (avec des autres préfixes que le site testé en cours => étrangères au data installé dans ce site là)
  • crées séparement "à la mano" (via cli ou mySQLAdmin ou autre outil de bd)

Si l'on crée une Views, cette table apparaitra dans la liste où l'on choisit le type de view (contenu, terme de taxo, users...) à la création d'une Views.

Création d'une table "inbody"

Pour trouver fid intégré dans body via media file selector (plug-in de ckeditor). Sur le site de test, on a jouté les données suivantes:

node id  type et titre file id et nom image
Jeu de test drupal
 644  article "test 2" 375    dsc00913.jpg (geodis csd bureau)
643   article "test path" 374    bourdiol200.jpg
612   Editions iXe 337   erreurdr6.png

1. noter le type de champs: admin/structure/schema/describe rechercher "file_metadata (file_entity module)"
2. admin/structure/data/create  2 champs fid et nid (num unsigned, index)  machine name: inbody et titre: Images dans body

admin/structure/data/edit/inbody/views (onglet "configure views")

Par défaut: Module Data: admin/structure/data/edit/ma_table/views par défaut

Je fais cette conf

nom Field handler Filter handler Argument handler Sort handler
Module Data: configuration des handlers de Views
fid views_handler_field_file views_handler_filter_numeric views_handler_argument_numeric
mis à views_handler_argument_file_id
views_handler_sort
nid views_handler_field_node   mis à views_handler_argument_node_id  

A la création d'une vue: pas trace de la table. Soucis de cache? Pas intégrée dans schemas?

admin/structure/data/edit/inbody (ou onglet "edit schema")

A admin/structure/data/edit/inbody  il y a une col "Primary key" et "joins"  (avec --aucun-- pour les 2 chps).
Pour fid, je choisis dans la liste nommée "Join inbody.fid to" la valeur file_managed.fid ; plus bas "Join type" propose soit "Left join" soit "inner join" - je choisis "inner join"
admin/structure/data/edit/inbody indique bien que mon fid est relié à file_managed.fid mais pas si Left ou Inner Join.
Pour mon inbody.nid : lié à node.nid "inner join"

Dans les logs:

des erreurs data: Unable to detect class ancestry of Views handler i18nviews
et erreur php: Notice : Undefined index: join dans data_ui_join_form() (ligne 936 ... data/data_ui/data_ui.admin.inc)

 

Bon ok, c'est du pif... je ne garde que le inner join inbody.nid -> node.id et ajoute une clé (3e chp)

Ajout module data search

admin/content/data la table est bien là, mais a 0 lignes.

admin/structure/data/edit/inbody/search  rien ne s'affiche dans nom mais je coche les 3

Dans la table inbody, je saisi les données (j'aurais du nommer "entity id" la ere col):

node id file id notes
 644 375  article "test 2" contien l'image dsc00913.jpg (geodis csd bureau)
643 374 article "test path" a dans body l'image    bourdiol200.jpg

Je peux créer une view de type "Images dans body" mais pas de relation interressante à ajouter. Par contre, on trouve "Images dans body" dans les fields, critères, relation et filtre contextuel des autres vues.

admin/structure/views/view/mesimages/edit/page_1

Page de mesimages (liste images (Fichier)) avait une relation sur Fichier: Contenu using Image que j'ai copié et modifié tq:
Tableau trié par ID de fichier desc (pour avoir en haut le simages intégrées dans body).

Configurer une vue fichier, ajouter une relation sur table gérée par le module data
Fields:
Fichier: nom, id, path, title, rendered, tag de fichier, upload date, edit link
File usage: Entity ID  (NULL pour image dans body), Entity type (NULL)
inbody.nid > node.nid: ID fichier et node
   sur inbody.nid REWRITE Result as Link node/[nid_1]/edit

path liste-imagesdata
menu Dev

Acces roles

 
Filter:
Global: Fields comparison fid = fid_1 (Fichier: ID fichier=inbody.IDfichier)
Pagination:
10 items

Relations (sans 'requies this rel')
Fichier: Contenu using image
Images dans body: ID node

Affiche bien les 2 lignes avec image, id fichier et id node dans lequel cette image a été chargée via ckeditor (module media).
Reste à  créer le code, qui part à la recherche de chaines de texte de type "<img src="  dans les body de tous les nodes, sachant qu'une image peut apparaitre dans une ou plusieur fois (quelque soit l'entity type/bundle).

SQL généré par Views

SELECT file_managed.filename AS file_managed_filename, file_managed.fid AS fid, file_managed.uri AS file_managed_uri, file_managed.timestamp AS file_managed_timestamp, file_usage.id AS file_usage_id, file_usage.type AS file_usage_type, 
node_inbody__inbody.fid AS node_inbody__inbody_fid, node_inbody__inbody.nid AS node_inbody__inbody_nid, 
'file' AS field_data_field_file_image_title_text_file_entity_type, 'file' AS field_data_field_filetag_file_entity_type
FROM
{file_managed} file_managed
LEFT JOIN {node} node_inbody ON nid = node_inbody.nid
INNER JOIN {inbody} node_inbody__inbody ON node_inbody.nid = node_inbody__inbody.nid
LEFT JOIN {file_usage} file_usage ON file_managed.fid = file_usage.fid
WHERE (( (file_managed.fid = node_inbody__inbody.fid) ))
ORDER BY fid DESC
LIMIT 10 OFFSET 0