Retours client 09-10/2026 : accueil, admin, pages membres, interligne

- Accueil : bouton « Toutes les manifestations scientifiques » (au lieu de
  « Tous les événements »), titre de la page cible
- Accueil : diaporama Ouvrages et revues trié par date d'événement /
  de publication (thalim_event_date_order) et non par date de création
- Admin : bloc « Type d'annonce » de retour dans la colonne de droite —
  le groupe Pods s'appelle désormais `categorie`, la metabox est donc
  #pods-meta-categorie
- Pages membres : « Mis à jour le » lit la date de dernière modification
  du profil (user meta thalim_profile_updated, posée sur profile_update et
  à la sauvegarde Pods) au lieu de user_registered (date de migration) ;
  ligne masquée tant que le profil n'a pas été réenregistré
- Single : interligne et espacement des corps collés depuis un webmail
  (<div> par paragraphe, <div></div> vides) — SCSS seulement, CSS à compiler
This commit is contained in:
2026-10-12 14:19:47 +02:00
parent 53f5a991bb
commit da2504cf2f
7 changed files with 43 additions and 9 deletions
+13
View File
@@ -26,6 +26,19 @@ function thalim_sync_display_name( int $user_id ): void {
add_action( 'profile_update', 'thalim_sync_display_name' ); add_action( 'profile_update', 'thalim_sync_display_name' );
} }
// Date de dernière modification du profil, affichée « Mis à jour le » sur la
// page auteur. WP ne conserve que user_registered, qui vaut la date de migration
// (03/03/2026) pour la quasi-totalité des comptes.
add_action( 'profile_update', 'thalim_touch_profile_updated' );
add_action( 'pods_api_post_save_pod_item_user', function( $pieces ) {
$user_id = isset( $pieces['id'] ) ? intval( $pieces['id'] ) : 0;
if ( $user_id ) thalim_touch_profile_updated( $user_id );
} );
function thalim_touch_profile_updated( int $user_id ): void {
update_user_meta( $user_id, 'thalim_profile_updated', current_time( 'mysql' ) );
}
// Show Pods user meta fields on the Add New User page (user-new.php). // Show Pods user meta fields on the Add New User page (user-new.php).
// Fires the same hook Pods listens to on profile.php / user-edit.php. // Fires the same hook Pods listens to on profile.php / user-edit.php.
add_action('user_new_form', function($operation) { add_action('user_new_form', function($operation) {
+6 -1
View File
@@ -141,7 +141,12 @@ function thalim_get_author_data($user_id) {
? 'https://hal.science/search/index/?qa[authIdHal_s][]=' . rawurlencode($hal_id) . '&sort=publicationDate_tdate+desc' ? 'https://hal.science/search/index/?qa[authIdHal_s][]=' . rawurlencode($hal_id) . '&sort=publicationDate_tdate+desc'
: ''; : '';
})(), })(),
'user_since' => date_i18n('d/m/Y', strtotime($user->user_registered)), // Vide tant que le profil n'a pas été enregistré depuis la mise en place
// du suivi (thalim_touch_profile_updated) → ligne « Mis à jour le » masquée.
'updated_at' => (function() use ($user_id) {
$raw = get_user_meta($user_id, 'thalim_profile_updated', true);
return $raw ? date_i18n('d/m/Y', strtotime($raw)) : '';
})(),
]; ];
} }
+7 -4
View File
@@ -36,11 +36,14 @@ $context['annonces'] = $sort_with_pinned($annonces_raw, 'epingler_dans_le_
$context['annonces_cards'] = thalim_get_cards_data($annonces_raw); $context['annonces_cards'] = thalim_get_cards_data($annonces_raw);
// --- Publications et productions diaporama --- // --- Publications et productions diaporama ---
// Tri par date d'événement / de publication de l'ouvrage (date_de_debut > datetime
// > post_date), pas par date de création de l'annonce.
$publications_raw = Timber::get_posts([ $publications_raw = Timber::get_posts([
'post_type' => 'post', 'post_type' => 'post',
'posts_per_page' => 30, 'posts_per_page' => 30,
'orderby' => 'date', 'orderby' => 'date',
'order' => 'DESC', 'order' => 'DESC',
'thalim_event_date_order' => true,
'tax_query' => [ 'tax_query' => [
'relation' => 'AND', 'relation' => 'AND',
[ [
+2 -1
View File
@@ -25,7 +25,8 @@
// Metaboxes Pods déplacées / observées // Metaboxes Pods déplacées / observées
boxes: { boxes: {
bodyEn: '#pods-meta-body-en', bodyEn: '#pods-meta-body-en',
typeDannonce: '#pods-meta-type-dannonce', // ID dérivé du *nom* du groupe Pods « Type d'annonce » (categorie)
typeDannonce: '#pods-meta-categorie',
affichageAccueil: '#pods-meta-affichage-sur-laccueil', affichageAccueil: '#pods-meta-affichage-sur-laccueil',
thematique: '#pods-meta-thematique', thematique: '#pods-meta-thematique',
champsContextuels: '#pods-meta-champs-contextuels', champsContextuels: '#pods-meta-champs-contextuels',
+12
View File
@@ -295,6 +295,18 @@
} }
} }
// Corps collé depuis un webmail (Zimbra…) : un <div> par paragraphe,
// séparés par des <div></div> vides, sans aucun <p>. Sans ces règles, ces
// div héritent du line-height: 1 du reset et les div vides ont une hauteur
// nulle (texte serré, paragraphes collés). :not([class]) épargne les div
// structurelles des templates, qui ont toutes une classe.
div:not([class]) {
line-height: 1.4;
&:empty {
height: 1rem;
}
}
// Le reset applique `font: inherit` à strong/b/em/i : on restaure gras et // Le reset applique `font: inherit` à strong/b/em/i : on restaure gras et
// italique pour tout le corps de texte (paragraphes, listes, citations…), // italique pour tout le corps de texte (paragraphes, listes, citations…),
// pas seulement sous <p>, sinon le formatage disparaît dans les <li>. // pas seulement sous <p>, sinon le formatage disparaît dans les <li>.
+2 -2
View File
@@ -31,7 +31,7 @@
{{ author.role_label|esc_html }}{% if author.role_complement %} {{ author.role_complement|esc_html }}{% if author.affiliation %},{% endif %}{% endif %}{% if author.affiliation %} {{ author.affiliation|esc_html }}{% endif %} {{ author.role_label|esc_html }}{% if author.role_complement %} {{ author.role_complement|esc_html }}{% if author.affiliation %},{% endif %}{% endif %}{% if author.affiliation %} {{ author.affiliation|esc_html }}{% endif %}
</p> </p>
{% endif %} {% endif %}
<p class="maj">{{ current_language == 'en' ? 'Updated on' : 'Mis à jour le' }} {{ author.user_since }}</p> {% if author.updated_at %}<p class="maj">{{ current_language == 'en' ? 'Updated on' : 'Mis à jour le' }} {{ author.updated_at }}</p>{% endif %}
</div> </div>
</div> </div>
{% endif %} {% endif %}
@@ -69,7 +69,7 @@
{{ author.role_label|esc_html }}{% if author.role_complement %} {{ author.role_complement|esc_html }}{% if author.affiliation %},{% endif %}{% endif %}{% if author.affiliation %} {{ author.affiliation|esc_html }}{% endif %} {{ author.role_label|esc_html }}{% if author.role_complement %} {{ author.role_complement|esc_html }}{% if author.affiliation %},{% endif %}{% endif %}{% if author.affiliation %} {{ author.affiliation|esc_html }}{% endif %}
</p> </p>
{% endif %} {% endif %}
<p class="maj">{{ current_language == 'en' ? 'Updated on' : 'Mis à jour le' }} {{ author.user_since }}</p> {% if author.updated_at %}<p class="maj">{{ current_language == 'en' ? 'Updated on' : 'Mis à jour le' }} {{ author.updated_at }}</p>{% endif %}
</div> </div>
{% endif %} {% endif %}
+1 -1
View File
@@ -88,7 +88,7 @@
</div> </div>
<div class="button-agenda"> <div class="button-agenda">
<a href="{{ manifestations_link }}" class="link-button"> <a href="{{ manifestations_link }}" class="link-button">
{{ current_language == 'en' ? 'All events' : 'Tous les événements' }} {{ current_language == 'en' ? 'All scholarly events' : 'Toutes les manifestations scientifiques' }}
</a> </a>
</div> </div>
</div> </div>