
Recherche avancée
Médias (1)
-
The Slip - Artworks
26 septembre 2011, par
Mis à jour : Septembre 2011
Langue : English
Type : Texte
Autres articles (65)
-
Gestion des droits de création et d’édition des objets
8 février 2011, parPar 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, parL’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 (...) -
Les autorisations surchargées par les plugins
27 avril 2010, parMediaspip core
autoriser_auteur_modifier() afin que les visiteurs soient capables de modifier leurs informations sur la page d’auteurs
Sur d’autres sites (9569)
-
Evolution #4102 : Ordre des inclures dans cache/charger_plugins_options.php
26 février 2018, par RastaPopoulos ♥TL ;DR : problème résolu, c’est le plugin Albums qui ne fait pas bien les choses + mais un pipeline à l’initialisation est forcément utile et j’en ai déjà eu besoin.
@azerttyu Mais non, on ne doit surtout pas changer l’ordre des fichiers, il y a des milliers (et peut-être même des milliards :p) de cas dans la nature qui se basent tous sur le fait que l’ordre logique est le même que partout ailleurs, celui de l’ordre des pipelines et celui de l’ordre de toutes les surcharges de fichiers dans SPIP, càd l’ordre du PATH. D’une ce serait incohérent mais surtout c’est pas un nouveau truc ajouté, là on parle des options.php déjà utilisé partout, donc non on ne doit rien changer à l’ordre actuel.
Si ya un truc qui doit changer c’est sur un ajout, pas sur un truc méga utilisé partout.
Dans tous les cas, comme dit marcimat, faire de la config avec des define() c’est vraiment pas super, et encore plus définir des define() dans le options.php du plugin qui en a besoin ! Après le problème c’est quand le define() est justement utilisé directement dans ce options.php… Mais s’il ne l’est pas, le define() doit être défini dans le inc/truc, action/truc, etc, ce qui permet bien à d’autres de le définir en amont dans leur options.php.
D’ailleurs placido a donné des exemples précis, en parlant du plugin Album. Est-ce que celui-ci utilise ces deux define() dans le code de son options.php ? Si ce n’est pas le cas c’est lui qui doit être modifié pour définir ces variables ailleurs.
La réponse est là :
https://zone.spip.org/trac/spip-zone/browser/_plugins_/albums/trunk/albums_options.phpComme vous le voyez, AUCUNE de ces variables n’est utilisée à cette endroit là. Donc c’est le plugin Albums qui ne fait pas bien les choses. Il faut absolument déplacer l’ensemble de ces variables dans les fichiers où elles sont vraiment utilisés.
Et du coup c’est fini, problème résolu, c’est le plugin source qui était en problème, et une fois corrigé placido n’a plus de problème à définir ces valeurs avant.
Les cas où des define() sont définis ET utilisés directement dans le options.php sont méga méga rares, et je crois même qu’il n’y a que Bonux qui fait ça, pour la prévisu temporaire :
https://zone.spip.org/trac/spip-zone/browser/_plugins_/spip-bonux-3/spip_bonux_options.php#L25
(et ça m’avait bien saoulé pour le surcharger, j’avais fini par le définir dans les mes_options.php du projet alors que je ne l’utilise jamais et que je voulais le faire dans le plugin de mon projet)(Par ailleurs, dans tous les cas ce serait bien qu’il y ait un pipeline/trigger au tout début de SPIP, j’avais déjà eu le besoin pour faire des choses avant la connexion/cookie etc, pour connecter les gens par Facebook ou autre truc extérieur au tout démarrage, et pour le moment j’avais dû le faire dans mon action PHP à moi, au lieu de pouvoir le faire dans un truc générique qui aurait valu pour n’importe quel hit PHP, et du coup j’ai jamais pu en faire un plugin générique. Mais faudrait peut-être faire un ticket dédié pour demander cet ajout.)
-
Evolution #4753 : Styles du privé : listes d’objets (suite des boîtes et des formulaires)
4 mai 2021Un point étape.
Cette fois-ci j’aimerais bien un historique pas trop cassé, donc discussion avant de balancer du code.
Maintenant les captures ne sont plus des maquettes, mais du vrai code.Emballage extérieur¶
Donc pour la partie « emballage extérieur », les boîtes, formulaires et listes sont unifiés et réutilisent les mêmes variables CSS.
Elles ont toutes une variante .mini pour tout ressérer. Cette variante est automatiquement appliquée en certains endroits (dans les colonnes, etc.).Intérieur¶
Pour l’intérieur, j’ai donc appliqué ces quelques règles :
- Padding un peu plus grand
- Plus de largeur fixe, à l’exception de quelques colonnes précises (id, statut, picto)
- Même taille de texte dans toutes les colonnes, à l’exception des
<small></small>
éventuels
Dans les colonnes latérales (.lat), toutes les colonnes du tableau sont masquées à l’exception des .principale et de quelques autres choisies à la main (id, statut).
J’ai testé avec toutes les listes de la dist, il faudra bien continuer à tester avec d’autres cas de figure.
Listes, formulaires et +¶
Le sujet des listes objets-lies et objets-associer m’a amené à déborder un peu du sujet initial. Mais tout est un peu lié, un sujet en amène un autre.
Donc ces 2 listes sont utilisées dans le formulaire editer_liens, j’en ai profité pour essayer de le remettre d’aplomb.
Là j’ai vu qu’avec l’apparence par défaut (bordure grise + fond blanc), quand plusieurs formulaires de liens se suivaient, on avait du mal à voir où finissait l’un et où commençait l’autre (pas de capture, croyez moi sur parole :).
En mettant un fond gris, on les distingue beaucoup mieux.
Et j’ai bien insisté quand ils sont "dépliés", pour distinguer les 2 zones.Mais ça a également un autre avantage : en scannant la fiche objet dans son ensemble, on voit mieux où commence le « vrai » contenu de l’objet, par rapport aux bidules de configuration (date, liens, etc.).
D’abord les formulaires et autres sur fond gris, puis ensuite le texte de l’objet.Donc je pense qu’on pourrait généraliser ça : au lieu de dire « les formulaires editer_liens sont sur fond gris », on pourrait étendre à « tous les formulaires ajoutés par afficher_milieu sont sur fond gris ». Ça reste une règle graphique assez légère, normalement ça ne devrait pas poser de problème avec les formulaires à cet endroit.
Le problème c’est qu’actuellement il n’y a aucun moyen de cibler en CSS ce qui est ajouté par affiche_milieu, il faut encapsuler tout ça dans un div.afficher_milieu (ce que j’ai fait pour tester le principe).Et donc, la fiche objet dans son ensemble pour illustrer :
Ah, et un test pour le formulaire de traductions :
-
Flutter Android release crash with ffmpeg_kit_flutter_new : Bad JNI version returned from JNI_OnLoad in libffmpegkit_abidetect.so (debug works) [closed]
20 août, par Muhammad Rakha AlmasahProblem
My Flutter app crashes only in release when the FFmpegKit plugin is registered. The app runs fine in debug on the same devices. The crash happens before my UI shows up, during plugin registration.


Error (release logcat)


On Samsung SM-A105G (Android 11, API 30, 32-bit device) :


E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.Error: FFmpegKit failed to start on brand: samsung, model: SM-A105G, device: a10, api level: 30,
abis: armeabi-v7a armeabi, 32bit abis: armeabi-v7a armeabi, 64bit abis: .
 at com.antonkarpenko.ffmpegkit.AbiDetect.<clinit>(SourceFile:3)
 at com.antonkarpenko.ffmpegkit.FFmpegKitConfig.<clinit>(SourceFile:16)
 ...
Caused by: java.lang.UnsatisfiedLinkError: Bad JNI version returned from JNI_OnLoad in
"/data/app/.../lib/arm/libffmpegkit_abidetect.so": 0
 at java.lang.Runtime.loadLibrary0(Runtime.java:1087)
 at java.lang.System.loadLibrary(System.java:1664)

</clinit></clinit>


On Redmi 24094RAD4G (Android 15/35, 64-bit) :


java.lang.Error: FFmpegKit failed to start on brand: Redmi, model: 24094RAD4G, device: citrine, api level: 35,
abis: arm64-v8a armeabi-v7a armeabi, 32bit abis: armeabi-v7a armeabi, 64bit abis: arm64-v8a.
...
Caused by: java.lang.UnsatisfiedLinkError: Bad JNI version returned from JNI_OnLoad in
"/data/app/.../split_config.arm64_v8a.apk!/lib/arm64-v8a/libffmpegkit_abidetect.so": 0




What’s strange
In debug the plugin loads and prints :


I/ffmpeg-kit: Loaded ffmpeg-kit-full-gpl-arm-v7a-neon-6.0-20250810.



and the app works normally.


Environment


Flutter (stable), Android


compileSdk = 35, minSdk = 24, targetSdk = 35


NDK I tried :


26.1.10909125 (recommended by many plugins)


25.2.9519653


Devices that crash in release :


Samsung SM-A105G (32-bit only, API 30)


Redmi 24094RAD4G (arm64-v8a capable, API 35)


Dependencies (relevant)


I mainly need FFmpeg through a video editor workflow.


Tried these FFmpeg packages :


ffmpeg_kit_flutter_new 3.2.0 → release crash


ffmpeg_kit_flutter_new 1.6.1 → release crash


(for testing) the discontinued ffmpeg_kit_flutter 6.0.3 → gradle couldn’t resolve com.arthenica:ffmpeg-kit-https:6.0-2 in release


Other media deps : video_editor (git), video_thumbnail (git), video_player, etc


App config
android/app/build.gradle


plugins {
 id "com.android.application"
 id "kotlin-android"
 id "dev.flutter.flutter-gradle-plugin"
}

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
 localPropertiesFile.withReader('UTF-8') { reader ->
 localProperties.load(reader)
 }
}

def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
 keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}


def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
 flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
 flutterVersionName = '1.0'
}

android {
 namespace "id.fitacademy.app"
 compileSdk = 35
 ndkVersion = "26.1.10909125"

 compileOptions {
 sourceCompatibility JavaVersion.VERSION_1_8
 targetCompatibility JavaVersion.VERSION_1_8
 }

 kotlinOptions {
 jvmTarget = JavaVersion.VERSION_1_8
 }

 sourceSets {
 main.java.srcDirs += 'src/main/kotlin'
 }

 defaultConfig {
 applicationId "id.fitacademy.app"
 minSdkVersion 24
 targetSdkVersion 35
 versionCode flutterVersionCode.toInteger()
 versionName flutterVersionName
 multiDexEnabled true
 ndk { abiFilters "armeabi-v7a" }
 }

 packagingOptions {
 jniLibs { useLegacyPackaging true } // muat .so via ekstraksi
 // pickFirsts += ['**/libc++_shared.so'] // aktifkan hanya kalau ada konflik duplikat
 }

 signingConfigs {
 release {
 keyAlias keystoreProperties['keyAlias']
 keyPassword keystoreProperties['keyPassword']
 storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
 storePassword keystoreProperties['storePassword']
 }
 debug {
 keyAlias keystoreProperties['keyAlias']
 keyPassword keystoreProperties['keyPassword']
 storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
 storePassword keystoreProperties['storePassword']
 }
 }
 buildTypes {
 release {
 signingConfig signingConfigs.release
 }
 debug {
 signingConfig signingConfigs.debug
 }
 }
}

flutter {
 source '../..'
}




AndroidManifest.xml


<manifest>

 
 
 
 
 
 
 
 
 
 
 

 <queries>
 <package></package>
 <package></package>
 <package></package>
 <package></package>
 <package></package>
 <package></package>
 <package></package>

 <provider></provider> 
 <provider></provider> 

 <intent>
 <action></action>
 <data></data>
 </intent>
 </queries>

 
 
 
 
 
 <action></action>
 <category></category>
 

 
 
 
 <action></action>
 <category></category>
 <category></category>
 <data></data>
 <data></data>
 <data></data>
 <data></data>
 
 

 
 


 
 

 <provider>
 
 </provider>

 
 
 
</manifest>



APK / AAB inspection


jar tf app-release.apk | findstr ffmpegkit_abidetect shows the library is packaged, e.g. :


lib/arm/libffmpegkit_abidetect.so (on 32-bit build)


lib/arm64-v8a/libffmpegkit_abidetect.so (on 64-bit)


So the .so is present in the release artifact.


What I tried


Switch NDK 25.2 ↔ 26.1 and align with plugins.


Add android:extractNativeLibs="true" in the manifest.


packagingOptions jniLibs useLegacyPackaging true .


Build both APK and AAB, and also flutter run —release -d .


With and without abiFilters.


Full flutter clean, delete Gradle caches, rebuild.


Verified .env files and other assets are included (unrelated but checked).


The crash always happens at plugin startup in release with :
Bad JNI version returned from JNI_OnLoad in ... libffmpegkit_abidetect.so : 0.