Recherche avancée

Médias (91)

Autres articles (73)

  • Gestion des droits de création et d’édition des objets

    8 février 2011, par

    Par défaut, beaucoup de fonctionnalités sont limitées aux administrateurs mais restent configurables indépendamment pour modifier leur statut minimal d’utilisation notamment : la rédaction de contenus sur le site modifiables dans la gestion des templates de formulaires ; l’ajout de notes aux articles ; l’ajout de légendes et d’annotations sur les images ;

  • Dépôt de média et thèmes par FTP

    31 mai 2013, par

    L’outil MédiaSPIP traite aussi les média transférés par la voie FTP. Si vous préférez déposer par cette voie, récupérez les identifiants d’accès vers votre site MédiaSPIP et utilisez votre client FTP favori.
    Vous trouverez dès le départ les dossiers suivants dans votre espace FTP : config/ : dossier de configuration du site IMG/ : dossier des média déjà traités et en ligne sur le site local/ : répertoire cache du site web themes/ : les thèmes ou les feuilles de style personnalisées tmp/ : dossier de travail (...)

  • Keeping control of your media in your hands

    13 avril 2011, par

    The vocabulary used on this site and around MediaSPIP in general, aims to avoid reference to Web 2.0 and the companies that profit from media-sharing.
    While using MediaSPIP, you are invited to avoid using words like "Brand", "Cloud" and "Market".
    MediaSPIP is designed to facilitate the sharing of creative media online, while allowing authors to retain complete control of their work.
    MediaSPIP aims to be accessible to as many people as possible and development is based on expanding the (...)

Sur d’autres sites (6168)

  • Evolution #4727 : Des pictos / icônes symboliques pour tout le monde

    12 avril 2021

    Les fontes d’icônes c’est pas top, c’est un peu déprécié aujourd’hui, ça pose pas mal de problèmes.

    Pour la partie « icônes purement en CSS », c’est à dire sans rien de plus dans le HTML, je crois qu’on n’a pas trop le choix.
    Dans ce cas ce sont des pseudos-éléments CSS :before ou :after, si on veut que l’icône hérite de la couleur et de la taille du texte, rien d’autre ne marche à ma connaissance. Pas les svg en background-image en tout cas.

    D’ailleurs au passage mon 2ème exemple était mauvais : <i class="spicon_truc"></i> Du texte → dans ce cas c’est la balise #ICONE qu’il faut utiliser.
    Pour les icônes CSS, la proposition était bien de n’avoir à qu’à ajouter une classe sur un élément existant, sans <span></span> ou <i></i> supplémentaire à l’intérieur.

    Mais du coup oui, on tombe plein pot sur le problème soulevé par ces icônes à base de fontface : à priori les lecteurs d’écran vont lire ces caractères abscons, et sans moyen de les cacher puisque c’est purement du CSS.

    Moi au départ je pensais que la balise #ICONE suffirait : des icônes présentes dans le HTML, ce qui permet de gérer tout les attributs d’accessibilité finement.

    Et les gros fichiers de sprites svg, ça diminue le nombre de hits, c’est sûr, mais charger plusieurs centaines de Ko de Sprites pour afficher 3 icônes, c’est peut être beaucoup.

    C’est bien pour ça qu’il faut trouver une balance entre le poids et le nombre d’icônes dispos.
    La proposition à moyen et long terme c’est de généraliser l’usage de ces icônes dans le privé de Spip, donc ça sera pas chargé pour rien.

    Et c’est la misère à mettre à jour sans outil spécialisé qui regénère tout le code, et vérifier que ça ne casse pas des choses...

    C’est bien l’idée :)
    Un outil à piori dans un dépôt à part qui genère tout seul le sprite et le reste.

    moi j’ai du mal avec "spipcon". Ca fait "petit con", et c’est pas compréhensible si on a pas l’historique derrière. Pour gagner 5 caractères...

    On se disait qu’on partirait plutôt sur sp-icone du coup.

  • Evolution #3103 (Nouveau) : Découpage des fichiers de langue du core en groupes logiques

    27 novembre 2013, par Suske -

    Les fichiers de langue de SPIP-core sont au nombre de 3 : ecrire_xx.php, public_xx.php et spip_xx.php

    Ce découpage historique n’est plus très pertinent ni le plus efficace pour les traducteurs (et dans une perspective de réemploi des chaînes).

    Un exemple de "groupement logique" serait de créer un fichier dates_xx.php qui permettrait de gérer spécifiquement le casse-tête des traductions de dates...

    Voir http://thread.gmane.org/gmane.comp.web.spip.devel/64720

  • Discord Music bot dosnt play Livestreams anymore

    11 janvier 2019, par Silvinator

    My Discord bot played YT Livestreams all the time, but it stoped working today. The only message i get (in the console) is stream. It plays normal videos, but no streams. the question is, why it stopped working. I did not change any code. Anyone got a idea ?

    client.on("message", async message => {
       var args = message.content.substring(prefix.length).split(" ");
       if (!message.content.startsWith(prefix)) return;
     var searchString = args.slice(1).join(' ');
            var url = args[1] ? args[1].replace(/&lt;(.+)>/g, '$1') : '';
            var serverQueue = queue.get(message.guild.id);
       switch (args[0].toLowerCase()) {
         case "play":
       var voiceChannel = message.member.voiceChannel;
                    if (!voiceChannel) return message.channel.send(`Du willst mit mir Karaoke singen? Da ich eh nichts besseres zu tun habe. Du suchst aber den Voice Channel aus!`);
                    var permissions = voiceChannel.permissionsFor(message.client.user);
                    if (!permissions.has('CONNECT')) {
                            return message.channel.send('I cannot connect to your voice channel, make sure I have the proper permissions!');
                    }
                    if (!permissions.has('SPEAK')) {
                            return message.channel.send('I cannot speak in this voice channel, make sure I have the proper permissions!');
                    }
         if (url.match(/^https?:\/\/(www.youtube.com|youtube.com)\/playlist(.*)$/)) {
                            var playlist = await youtube.getPlaylist(url);
                            var videos = await playlist.getVideos();
                            for (const video of Object.values(videos)) {
                                    var video2 = await youtube.getVideoByID(video.id); // eslint-disable-line no-await-in-loop
                                    await handleVideo(video2, message, voiceChannel, true); // eslint-disable-line no-await-in-loop
                            }
                            return message.channel.send(`Ich habe wohl keine andere wahl... Ich habe **${playlist.title}** der playlist zugefügt`);
                    } else {
                            try {
                                    var video = await youtube.getVideo(url);
                            } catch (error) {
                                    try {
                                            var videos = await youtube.searchVideos(searchString, 10);
                                            var index = 0;
                                            var videoIndex = 1;
                                            var video = await youtube.getVideoByID(videos[videoIndex - 1].id);
                                    } catch (err) {
                                            console.error(err);
                                            return message.channel.send('Gibt es den Song überhaupt?');
                                    }
                            }
                            return handleVideo(video, message, voiceChannel);
                    }
    break;
         case "skip":
                    if (!message.member.voiceChannel) return message.channel.send('Du musst schon in den Voice Channel gehen, baka!');
                    if (!serverQueue) return message.channel.send('Du musst schon ein song auswählen, baka!');
                    serverQueue.connection.dispatcher.end('Skip command has been used!');
                    return undefined;
           break;
         case "stop":
                    if (!message.member.voiceChannel) return message.channel.send('Du musst schon in den Voice Channel gehen, baka!');
                    if (!serverQueue) return message.channel.send('Du musst schon einen Song auswählen, baka');
       serverQueue.connection.dispatcher.end('Stop command has been used!');
                    serverQueue.songs = [];
                    return undefined;
    break;
         case "minfo":
                    if (!serverQueue) return message.channel.send('Ich spiele immer noch nichts!');
                    return message.channel.send(`ퟎ