Dotclear

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

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2021-06-15 07:40:48

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Utiliser la médiathèque sur la page de configuration d'un thème

Bonjour,

Je voudrais permettre à l'utilisateur du thème de choisir une image de la médiathèque. J'arrive à afficher la popup pour le choix du fichier, mais je ne parviens pas à insérer dans media-item.php le code javascript nécessaire pour que les boutons "Sélectionner" et "Annuler" fonctionnent.

Après avoir regardé les plugin dcCKEditor et dcLegacyEditor, je tente de reproduire leur fonctionnement. J'essaie donc d'utiliser le behavior adminPopupMedia appelé dans media-item.php comme le font ces plugins pour ajouter leur code dans la popup

J'ai ajouté dans le prepend.php de mon thème les behaviors suivants

$core->addBehavior('adminPageHTMLHead', ['tplGrayscaleThemeAdmin', 'adminPageHTMLHead']);
$core->addBehavior('adminPopupMedia', ['tplGrayscaleThemeAdmin', 'adminPopupMedia']);

class tplGrayscaleThemeAdmin
{
    public static function adminPageHTMLHead()
    {
        if ($GLOBALS['core']->blog->settings->system->theme != 'grayscale') {
            return;
        }
        $grayscale_admin_js = $GLOBALS['core']->blog->settings->system->themes_url."/".$GLOBALS['core']->blog->settings->system->theme."/js/admin.js";

        echo '<script src="' . $grayscale_admin_js . '" ></script>';
    }

    public static function adminPopupMedia($editor = '')
    {
        if (empty($editor) || $editor != 'admin.blog.theme') {
            return;
        }
        $theme_url = $GLOBALS['core']->blog->settings->system->themes_url."/".$GLOBALS['core']->blog->settings->system->theme;
        
        return dcPage::jsLoad($theme_url . '/js/popup_media.js');
    }
}

Le premier fonctionne correctement, mais pas le second qui n'injecte pas le javascript dans la popup.

Pour afficher la popup, j'ai un bouton sur la page de configuration et ce code javascript pour la page

$(function () {
    $('#default-image-selector').on('click', function (e) {
        window.open('media.php?plugin_id=admin.blog.theme&popup=1&select=1', 'dc_popup', 'alwaysRaised=yes,dependent=yes,toolbar=yes,height=500,width=760,' + 'menubar=no,resizable=yes,scrollbars=yes,status=no');
        e.preventDefault();
        return false;
    });
});

Ce qui ouvre bien la popup, permet de choisir une image, mais je suis ensuite coincé pour l'insérer dans mon formulaire

Sauriez-vous me dire ce que je fais de travers ?

PS : le thème est ici sur Github

Dernière modification par Philippe (2021-06-15 17:36:39)

Hors ligne

#2 2021-06-15 10:12:06

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

Re : Utiliser la médiathèque sur la page de configuration d'un thème

Jette un œil à ce commit : https://git.dotclear.org/dev/dotclear/c … 1957de94b6

C'est celui où j'ai implémenté le choix d'un billet/d'une page pour le mode statique. En particulier ce qu'il y a dans admin/js/_blog_pref_popup_posts.js qui s'occupe de mettre en place dans la page parent le choix effectué dans le popup.

Mais c'est vrai que d'une manière générale spa très bien documenté ce genre de sorcellerie :-)


Dotclear addicted since 2004

Hors ligne

#3 2021-06-15 10:18:00

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Utiliser la médiathèque sur la page de configuration d'un thème

Merci franck, je comptais d'ailleurs bien m'inspirer de ça.

Mais ce n'est pas le code lui-même qui me gêne, c'est l'inclusion de ce javascript dans la page media-item

Hors ligne

#4 2021-06-15 13:33:21

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

Re : Utiliser la médiathèque sur la page de configuration d'un thème

Alors jette un œil sur inc/admin/class.dc.blog_pref.php (dans le même commit), il se charge de charger le js kivabien via un behaviour ;-)


Dotclear addicted since 2004

Hors ligne

#5 2021-06-15 13:44:51

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Utiliser la médiathèque sur la page de configuration d'un thème

Oui, justement, dans ce fichier tu utilises le behavior adminPopupPosts qui est appelé par popup_posts.php, pour ajouter dans la popup ton fichier javascript

De la même manière, je cherche à utiliser le behavior adminPopupMedia qui est appelé par media-item.php, pour ajouter mon code dans la popup.

D'où l'ajout du behavior adminPopupMedia dans mon fichier prepend.php ci-dessus (comme le font les éditeurs dcLegacy et CKEditor). Mais il semble que le behavior ne soit pas appelé

Hors ligne

#6 2021-06-16 06:26:27

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Utiliser la médiathèque sur la page de configuration d'un thème

Dans le code que j'ai posté en #1 il y a deux behaviors : adminPageHTMLHead et adminPopupMedia. Le premier fonctionne, pas le second.

Serait-il possible que cela vienne du fait que c'est un thème et non pas un plugin ?

Hors ligne

#7 2021-06-16 11:45:13

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

Re : Utiliser la médiathèque sur la page de configuration d'un thème

Ah oui c'est bien possible, cela dit tu fournis le plugin_id dans l'URL d'ouverture de la popup, du coup je vois pas pourquoi le behavior n'est pas appelé !


Dotclear addicted since 2004

Hors ligne

#8 2021-06-16 11:50:05

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Utiliser la médiathèque sur la page de configuration d'un thème

Il faut faire un ticket ? (gros espoir)

Hors ligne

#9 2021-06-16 11:50:46

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

Re : Utiliser la médiathèque sur la page de configuration d'un thème

Philippe a écrit :

Il faut faire un ticket ? (gros espoir)

Faut que je teste ton code d'abord, y'a une archive quelque part ?


Dotclear addicted since 2004

Hors ligne

#10 2021-06-16 11:52:11

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Utiliser la médiathèque sur la page de configuration d'un thème

le thème est ici sur Github

Hors ligne

#11 2021-06-16 15:07:52

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

Re : Utiliser la médiathèque sur la page de configuration d'un thème

J'ai forké et fait une première PR, mais spa fini, y'a encore des trucs qui ne fonctionnent pas…

Mais pas ce soir :-)
Je continue demain…


Dotclear addicted since 2004

Hors ligne

#12 2021-06-16 17:06:36

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Utiliser la médiathèque sur la page de configuration d'un thème

J'ai intégré ta PR. Entre temps j'avais modifié admin.js qui marche maintenant à peu près comme je le voulais. Si ça gêne que je fasse des modifications en même temps, dis-le moi j'arrête tout de suite :D

Hors ligne

#13 2021-06-17 06:11:10

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

Re : Utiliser la médiathèque sur la page de configuration d'un thème

Non continue de ton côté, je récupèrerai tes commits au fur et à mesure…


Dotclear addicted since 2004

Hors ligne

#14 2021-06-17 06:28:38

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

Re : Utiliser la médiathèque sur la page de configuration d'un thème

Nouvelle PR, toujours le même truc (calcul de l'URL du thème) et maintenant je vais jeter un œil au sélecteur de média…


Dotclear addicted since 2004

Hors ligne

#15 2021-06-17 09:13:15

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

Re : Utiliser la médiathèque sur la page de configuration d'un thème

Bon, ça va être plus compliqué que prévu, le _prepend.php du thème n'est pas chargé quand on affiche une popup média. Du coup les behaviours ne sont pas connus.

Va falloir que je regarde les conséquences de prévoir ça avant d'aller plus loin…


Dotclear addicted since 2004

Hors ligne

#16 2021-06-17 09:29:48

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Utiliser la médiathèque sur la page de configuration d'un thème

Merci. Je suis un peu rassuré de voir que j'étais sur la bonne piste...

Hors ligne

#17 2021-06-17 11:20:48

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

Re : Utiliser la médiathèque sur la page de configuration d'un thème

Bon, ça sera à partir de la 2.19 (cf https://git.dotclear.org/dev/dotclear/c … d174a8a56), en attendant masque le bouton "Changer"

Avec ce commit, j'ai droit à une alerte "Bonjour !" :-)

Ça sera peut-être pas suffisant mais c'est un début ; il faudra peut-être un behaviour supplémentaire du côté de media.php, un peu équivalent à celui appelé dans media_item.php (adminPopupMedia).


Dotclear addicted since 2004

Hors ligne

#18 2021-06-17 11:32:37

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Utiliser la médiathèque sur la page de configuration d'un thème

Merci beaucoup ! Si tu as droit au "Bonjour", c'est un grand progrès. Je vais copier tes changements des fichiers de dotclear chez moi

Yapuka de mon côté écrire le code et voir si j'arrive à récupérer le window.opener comme je l'espère

Hors ligne

#19 2021-06-17 13:31:48

Philippe
Stagiaire
Lieu : Toulon
Inscription : 2004-06-13
Site Web

Re : Utiliser la médiathèque sur la page de configuration d'un thème

Ça marche parfaitement, merci encore. Il me reste à trouver comment passer un paramètre pour savoir quel bouton a été cliqué, mais je devrais me débrouiller maintenant.

Le thème sortira pour la version 2.19 de dotclear ;)

Hors ligne

#20 2021-06-17 15:58:45

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

Re : Utiliser la médiathèque sur la page de configuration d'un thème

Philippe a écrit :

Ça marche parfaitement, merci encore. Il me reste à trouver comment passer un paramètre pour savoir quel bouton a été cliqué, mais je devrais me débrouiller maintenant.

Le thème sortira pour la version 2.19 de dotclear ;)

\o/


Dotclear addicted since 2004

Hors ligne

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

Pied de page des forums

Sites map