- Accueil
- Info légales
- Aide (FAQ)
- Les tags de ce site
- Bloc note
- Articles techniques
- Notes system
- Divers articles
- Drupal
- Notes ITIL 2007
- Notes MS
- Dans le quartier...
- Emploi
- Recettes de cuisine et adresses gourmandes
- mes applis ubuntu préferées
- Divers acronymes du monde social
- Internet 2018
- P2 meublé à louer - quartier du Poteau 75018
- apcos - réseaux sociaux et outils
- Articles techniques
- Divers liens
- Fun
- Mon CV IT
- Nouveautés
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 |
---|---|
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:
Je fais cette conf
nom | Field handler | Filter handler | Argument handler | Sort handler |
---|---|---|---|---|
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).
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 Acces roles |
|
Filter: Global: Fields comparison fid = fid_1 (Fichier: ID fichier=inbody.IDfichier) |
Pagination: 10 items |
Relations (sans 'requies this rel') |
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