Forum Programmation.php Normes freedesktop et icônes (une libxdg pour PHP?)

Posté par  (site web personnel) . Licence CC By‑SA.
2
7
jan.
2014

Bonjour,

Je suis à la recherche d'une implémentation des spécifications freedesktop suivantes pour PHP:
http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html
http://standards.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html

L'idée serait de pouvoir utiliser dans son appli PHP un thème d'icône type Tango ou Oxygen directement et pouvoir switcher d'un thème à l'autre, le code l'appli utilisant les noms d'icônes des standards ci-dessus comme le font les applications desktop.
Le nec plus ultra serait que je puisse directement accéder aux thèmes d'icônes installés sur le système hôte mais ça semble compromis pour des questions de droits et tout ça, donc déjà si je peux avoir le système de recherche de l'icône avec fallback et compagnie, les thèmes étant dans un dossier accessible par le serveur web, ce serait très pratique.

  • # ca depend

    Posté par  . Évalué à 1.

    en PHP/Html tu peux tres bien utiliser des variables pour definir l'image que tu cherches et faire un echo de code html pour afficher cette image dans le navigateur.

    exemple :

    <?php
    $MONTHEME=Tango;
    $MONIMAGE=/usr/share/$MONTHEME/icons/96p/Disk.png;
    
    echo "<img src=$MONIMAGE />";
    
    ?>
    • [^] # Re: ca depend

      Posté par  (site web personnel) . Évalué à 2.

      Mais est-ce que l'utilisateur utilisé par le serveur web (mettons Apache) a les droits pour accéder à un fichier dans /usr/share (et accepteras de le livrer par HTTP)?

      Mais variable ou pas n'est pas la question, une implémentation de la norme permettrait de dire "je veux l'icône pour action/save en taille 16x16, avec le thème Toto". Ça chercherait l'image concernée mais si elle n'existe pas ça va aussi se charger de trouver une image de remplacement (par exemple le thème Toto peut hériter d'un autre thème, ou avoir la bonne image mais en taille plus grande, etc…)

      • [^] # Re: ca depend

        Posté par  . Évalué à 2.

        le serveur web n'accedera pas aux dossiers locaux de l'utilisateur, mais aux dossiers presents sur le serveur.

        apres evidemment si le serveur = la machine de l'utilisateur, ca change beaucoup de chose, mais php n'est pas initialement prevu pour faire des applications lourdes (installées localement sur la machine de l'utilisateur)

        pour acceder au dossier du theme "TOTO", icone "save", taille "16x16"

        c'est 3 variables, si y a heritage, je penses que c'est des liens dans les dossiers, donc ca doit le faire aussi

        <?php
        $basedir="chemin vers le stockage des themes XDG";
        $MYTAILLE="16x16";
        $MYTHEME="Tango";
        
        // utilise le chemin tel que definit dans la convention XDG pour aller chercher l'icone save
        echo "<img src=$basedir/$MYTHEME/$MYTAILLE/save.png>";
        
        ?>
        • [^] # Re: ca depend

          Posté par  (site web personnel) . Évalué à 4.

          le serveur web n'accedera pas aux dossiers locaux de l'utilisateur, mais aux dossiers presents sur le serveur.

          Oui heureusement, mais c'est bien coté serveur que je parlais, le dossier /usr/share/jenesaisquoi doit être accessible via HTTP pour pouvoir afficher les images dans la page et ce n'est pas le cas.

          apres evidemment si le serveur = la machine de l'utilisateur, ca change beaucoup de chose, mais php n'est pas initialement prevu pour faire des applications lourdes

          Non je parle bien d'une appli PHP qui tourne sur un serveur.

          c'est 3 variables, si y a heritage, je penses que c'est des liens dans les dossiers, donc ca doit le faire aussi

          Merci, je sais utiliser des variables, clairement tu n'as pas regardé à quelle norme je faisais référence, ça va plus loin que juste concaténer des noms de thèmes et d'images.

          Alors après oui je peux implémenter la norme moi même en PHP mais ça prend du temps et je voulais savoir s'il existait déjà des bibliothèques ou logiciels libres qui faisaient ça en PHP, comme libxdg par exemple le propose pour le C.

  • # Bon

    Posté par  (site web personnel) . Évalué à 2.

    Ben ne trouvant rien j'ai écrit ma propre classe qui implémente la norme.
    Si d'autres ont le même besoin on peut voir pour l'adapter, elle est là:
    https://forge.fusiondirectory.org/projects/fd/repository/changes/include/class_IconTheme.inc?rev=develop

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.