Skip to content
Extraits de code Groupes Projets

Comparer les révisions

Les modifications sont affichées comme si la révision source était fusionnée avec la révision cible. En savoir plus sur la comparaison des révisions.

Source

Sélectionner le projet cible
No results found

Cible

Sélectionner le projet cible
  • spip/medias
  • pierre.laszczak/medias
  • cy.altern/medias
  • MathieuAlphamosa/medias
  • taffit/medias
  • RealET/medias
  • johan/medias
  • Yohooo/medias
  • pierretux/medias
  • placido/medias
  • JLuc/medias
11 résultats
Afficher les modifications
Affichage de
avec 1945 ajouts et 1528 suppressions
<?php
/**
* SPIP, Système de publication pour l'internet
*
* Copyright © avec tendresse depuis 2001
* Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James
*
* Ce programme est un logiciel libre distribué sous licence GNU/GPL.
*/
/**
* Fonctions génériques pour les balises `#LOGO_XXXX`
*
* @package SPIP\Core\Compilateur\Balises
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Compile la balise dynamique `#LOGO_xx` qui retourne le code HTML
* pour afficher l'image de logo d'un objet éditorial de SPIP.
*
* Le type d'objet est récupéré dans le nom de la balise, tel que
* `LOGO_ARTICLE` ou `LOGO_SITE`.
*
* Ces balises ont quelques options :
*
* - La balise peut aussi demander explicitement le logo normal ou de survol,
* avec `LOGO_ARTICLE_NORMAL` ou `LOGO_ARTICLE_SURVOL`.
* - On peut demander un logo de rubrique en absence de logo sur l'objet éditorial
* demandé avec `LOGO_ARTICLE_RUBRIQUE`
* - `LOGO_ARTICLE*` ajoute un lien sur l'image du logo vers l'objet éditorial
* - `LOGO_ARTICLE**` retourne le nom du fichier de logo.
* - `LOGO_ARTICLE{right}`. Valeurs possibles : top left right center bottom
* - `LOGO_DOCUMENT{icone}`. Valeurs possibles : auto icone apercu vignette
* - `LOGO_ARTICLE{200, 0}`. Redimensionnement indiqué
*
* Pour récupérer l’identifiant du document sous-jacent voir la balise `ID_LOGO_...`
*
* @balise
* @uses generer_code_logo()
* @example
* ```
* #LOGO_ARTICLE
* ```
*
* @param Spip\Compilateur\Noeud\Champ $p
* Pile au niveau de la balise
* @return Spip\Compilateur\Noeud\Champ
* Pile complétée par le code à générer
*/
function balise_LOGO__dist($p) {
preg_match(',^LOGO_([A-Z_]+?)(|_NORMAL|_SURVOL|_RUBRIQUE)$,i', $p->nom_champ, $regs);
$type = strtolower($regs[1]);
$suite_logo = $regs[2];
// cas de #LOGO_SITE_SPIP
if ($type == 'site_spip') {
$type = 'site';
$_id_objet = "\"'0'\"";
}
$id_objet = id_table_objet($type);
if (!isset($_id_objet)) {
$_id_objet = champ_sql($id_objet, $p);
}
$fichier = ($p->etoile === '**') ? -1 : 0;
$coord = [];
$align = $lien = '';
$mode_logo = '';
if ($p->param && !$p->param[0][0]) {
$params = $p->param[0];
array_shift($params);
foreach ($params as $a) {
if ($a[0]->type === 'texte') {
$n = $a[0]->texte;
if (is_numeric($n)) {
$coord[] = $n;
} elseif (in_array($n, ['top', 'left', 'right', 'center', 'bottom'])) {
$align = $n;
} elseif (in_array($n, ['auto', 'icone', 'apercu', 'vignette'])) {
$mode_logo = $n;
}
} else {
$lien = calculer_liste($a, $p->descr, $p->boucles, $p->id_boucle);
}
}
}
$coord_x = $coord ? (int) array_shift($coord) : 0;
$coord_y = $coord ? (int) array_shift($coord) : 0;
if ($p->etoile === '*') {
include_spip('balise/url_');
$lien = generer_generer_url_arg($type, $p, $_id_objet);
}
$connect = $p->id_boucle ? $p->boucles[$p->id_boucle]->sql_serveur : '';
if ($type == 'document') {
$qconnect = _q($connect);
$doc = "quete_document($_id_objet, $qconnect)";
if ($fichier) {
$code = "quete_logo_file($doc, $qconnect)";
} else {
$code = "quete_logo_document($doc, " . ($lien ?: "''") . ", '$align', '$mode_logo', $coord_x, $coord_y, $qconnect)";
}
// (x=non-faux ? y : '') pour affecter x en retournant y
if ($p->descr['documents']) {
$code = '(($doublons["documents"] .= ",". '
. $_id_objet
. ") ? $code : '')";
}
} elseif ($connect) {
$code = "''";
spip_logger()
->info('Les logos distants ne sont pas prevus');
} else {
// pour generer_code_logo
include_spip('balise/id_logo_');
$champ_logo = '';
if ($fichier) {
$champ_logo = 'fichier';
}
$code = generer_code_logo($id_objet, $_id_objet, $type, $align, $lien, $p, $suite_logo, $champ_logo);
}
// demande de reduction sur logo avec ecriture spip 2.1 : #LOGO_xxx{200, 0}
if ($coord_x || $coord_y) {
$code = "filtrer('image_graver',filtrer('image_reduire'," . $code . ", '$coord_x', '$coord_y'))";
}
$p->code = $code;
$p->interdire_scripts = false;
return $p;
}
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2013 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
* SPIP, Système de publication pour l'internet
*
* Copyright © avec tendresse depuis 2001
* Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James
*
* Ce programme est un logiciel libre distribué sous licence GNU/GPL.
*/
/**
* Déclarations relatives à la base de données
*
* @package SPIP\Medias\Pipelines
**/
if (!defined('_ECRIRE_INC_VERSION')) return;
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Interfaces des tables documents pour le compilateur
......@@ -25,24 +25,23 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
* @return array
*/
function medias_declarer_tables_interfaces($interfaces) {
$interfaces['table_des_tables']['documents']='documents';
$interfaces['table_des_tables']['types_documents']='types_documents';
$interfaces['exceptions_des_tables']['documents']['type_document']=array('types_documents', 'titre');
$interfaces['exceptions_des_tables']['documents']['extension_document']=array('types_documents', 'extension');
$interfaces['exceptions_des_tables']['documents']['mime_type']=array('types_documents', 'mime_type');
$interfaces['exceptions_des_tables']['documents']['media_document']=array('types_documents', 'media');
$interfaces['table_des_tables']['documents'] = 'documents';
$interfaces['table_des_tables']['types_documents'] = 'types_documents';
$interfaces['exceptions_des_jointures']['spip_documents']['id_forum']=array('spip_documents_liens','id_forum');
$interfaces['exceptions_des_jointures']['spip_documents']['vu']=array('spip_documents_liens', 'vu');
$interfaces['table_date']['types_documents']='date';
$interfaces['exceptions_des_tables']['documents']['type_document'] = ['types_documents', 'titre'];
$interfaces['exceptions_des_tables']['documents']['extension_document'] = ['types_documents', 'extension'];
$interfaces['exceptions_des_tables']['documents']['mime_type_extension'] = ['types_documents', 'mime_type'];
$interfaces['exceptions_des_tables']['documents']['media_document'] = ['types_documents', 'media_defaut'];
$interfaces['table_des_traitements']['FICHIER']['documents']= 'get_spip_doc(%s)';
$interfaces['exceptions_des_jointures']['spip_documents']['id_forum'] = ['spip_documents_liens', 'id_forum'];
$interfaces['exceptions_des_jointures']['spip_documents']['vu'] = ['spip_documents_liens', 'vu'];
$interfaces['table_date']['types_documents'] = 'date';
$interfaces['table_des_traitements']['FICHIER'][] = 'get_spip_doc(%s)';
$interfaces['table_des_traitements']['CREDITS']['documents'] = _TRAITEMENT_TYPO;
return $interfaces;
}
/**
* Table principale spip_documents et spip_types_documents
*
......@@ -51,49 +50,55 @@ function medias_declarer_tables_interfaces($interfaces) {
*/
function medias_declarer_tables_principales($tables_principales) {
$spip_types_documents = array(
"extension" => "varchar(10) DEFAULT '' NOT NULL",
"titre" => "text DEFAULT '' NOT NULL",
"descriptif" => "text DEFAULT '' NOT NULL",
"mime_type" => "varchar(100) DEFAULT '' NOT NULL",
"inclus" => "ENUM('non', 'image', 'embed') DEFAULT 'non' NOT NULL",
"upload" => "ENUM('oui', 'non') DEFAULT 'oui' NOT NULL",
"media_defaut" => "varchar(10) DEFAULT 'file' NOT NULL",
"maj" => "TIMESTAMP");
$spip_types_documents_key = array(
"PRIMARY KEY" => "extension",
"KEY inclus" => "inclus");
$tables_principales['spip_types_documents'] =
array('field' => &$spip_types_documents, 'key' => &$spip_types_documents_key);
$spip_types_documents = [
'extension' => "varchar(10) DEFAULT '' NOT NULL",
'titre' => "text DEFAULT '' NOT NULL",
'descriptif' => "text DEFAULT '' NOT NULL",
'mime_type' => "varchar(100) DEFAULT '' NOT NULL",
'inclus' => "ENUM('non', 'image', 'embed') DEFAULT 'non' NOT NULL",
'upload' => "ENUM('oui', 'non') DEFAULT 'oui' NOT NULL",
'media_defaut' => "varchar(10) DEFAULT 'file' NOT NULL",
'maj' => 'TIMESTAMP',
];
$spip_types_documents_key = [
'PRIMARY KEY' => 'extension',
'KEY inclus' => 'inclus',
];
$tables_principales['spip_types_documents'] =
['field' => &$spip_types_documents, 'key' => &$spip_types_documents_key];
return $tables_principales;
}
/**
* Table des liens documents-objets spip_documents_liens
*
* @param array $tables_auxiliaires
* @return array
*/
function medias_declarer_tables_auxiliaires($tables_auxiliaires) {
$spip_documents_liens = array(
"id_document" => "bigint(21) DEFAULT '0' NOT NULL",
"id_objet" => "bigint(21) DEFAULT '0' NOT NULL",
"objet" => "VARCHAR (25) DEFAULT '' NOT NULL",
"vu" => "ENUM('non', 'oui') DEFAULT 'non' NOT NULL");
$spip_documents_liens_key = array(
"PRIMARY KEY" => "id_document,id_objet,objet",
"KEY id_document" => "id_document",
"KEY id_objet" => "id_objet",
"KEY objet" => "objet",
);
$tables_auxiliaires['spip_documents_liens'] = array(
$spip_documents_liens = [
'id_document' => "bigint(21) DEFAULT '0' NOT NULL",
'id_objet' => "bigint(21) DEFAULT '0' NOT NULL",
'objet' => "VARCHAR (25) DEFAULT '' NOT NULL",
'vu' => "ENUM('non', 'oui') DEFAULT 'non' NOT NULL",
'rang_lien' => "int(4) DEFAULT '0' NOT NULL",
];
$spip_documents_liens_key = [
'PRIMARY KEY' => 'id_document,id_objet,objet',
'KEY id_document' => 'id_document',
'KEY id_objet' => 'id_objet',
'KEY objet' => 'objet',
];
$tables_auxiliaires['spip_documents_liens'] = [
'field' => &$spip_documents_liens,
'key' => &$spip_documents_liens_key);
'key' => &$spip_documents_liens_key,
];
return $tables_auxiliaires;
}
......@@ -105,84 +110,119 @@ function medias_declarer_tables_auxiliaires($tables_auxiliaires) {
* @return array
*/
function medias_declarer_tables_objets_surnoms($surnoms) {
$surnoms['type_document'] = "types_documents"; # hum
$surnoms['type_document'] = 'types_documents'; # hum
#$surnoms['extension'] = "types_documents"; # hum
#$surnoms['type'] = "types_documents"; # a ajouter pour id_table_objet('type')=='extension' ?
return $surnoms;
}
function medias_declarer_tables_objets_sql($tables){
function medias_declarer_tables_objets_sql($tables) {
$tables['spip_articles']['champs_versionnes'][] = 'jointure_documents';
$tables['spip_documents'] = array(
'table_objet_surnoms'=>array('doc','img','emb'),
'type_surnoms' => array(),
$tables['spip_documents'] = [
'table_objet_surnoms' => ['doc', 'img', 'emb'],
'type_surnoms' => [],
'url_voir' => 'document_edit',
'url_edit' => 'document_edit',
'page'=>'',
'page' => '',
'texte_retour' => 'icone_retour',
'texte_objets' => 'medias:objet_documents',
'texte_objet' => 'medias:objet_document',
'texte_modifier' => 'medias:info_modifier_document',
'info_aucun_objet'=> 'medias:aucun_document',
'info_aucun_objet' => 'medias:aucun_document',
'info_1_objet' => 'medias:un_document',
'info_nb_objets' => 'medias:des_documents',
'titre' => "CASE WHEN length(titre)>0 THEN titre ELSE fichier END as titre, '' AS lang",
'date' => 'date',
'principale'=>'oui',
'field' => array(
"id_document" => "bigint(21) NOT NULL",
"id_vignette" => "bigint(21) DEFAULT '0' NOT NULL",
"extension" => "VARCHAR(10) DEFAULT '' NOT NULL",
"titre" => "text DEFAULT '' NOT NULL",
"date" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
"descriptif" => "text DEFAULT '' NOT NULL",
"fichier" => "text NOT NULL DEFAULT ''",
"taille" => "bigint",
"largeur" => "integer",
"hauteur" => "integer",
"media" => "varchar(10) DEFAULT 'file' NOT NULL",
"mode" => "varchar(10) DEFAULT 'document' NOT NULL",
"distant" => "VARCHAR(3) DEFAULT 'non'",
"statut" => "varchar(10) DEFAULT '0' NOT NULL",
"credits" => "varchar(255) DEFAULT '' NOT NULL",
"date_publication" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
"brise" => "tinyint DEFAULT 0",
"maj" => "TIMESTAMP"
),
'key' => array(
"PRIMARY KEY" => "id_document",
"KEY id_vignette" => "id_vignette",
"KEY mode" => "mode",
"KEY extension" => "extension"
),
'join' => array(
"id_document"=>"id_document",
"extension"=>"extension"
),
'statut'=> array(
array(
'principale' => 'oui',
'field' => [
'id_document' => 'bigint(21) NOT NULL',
'id_vignette' => "bigint(21) DEFAULT '0' NOT NULL",
'extension' => "VARCHAR(10) DEFAULT '' NOT NULL",
'titre' => "text DEFAULT '' NOT NULL",
'date' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
'descriptif' => "text DEFAULT '' NOT NULL",
'fichier' => "text NOT NULL DEFAULT ''",
'taille' => 'bigint',
'largeur' => 'integer',
'hauteur' => 'integer',
'duree' => 'integer',
'media' => "varchar(10) DEFAULT 'file' NOT NULL",
'mode' => "varchar(10) DEFAULT 'document' NOT NULL",
'distant' => "VARCHAR(3) DEFAULT 'non'",
'statut' => "varchar(10) DEFAULT '0' NOT NULL",
'credits' => "text DEFAULT '' NOT NULL",
'alt' => "text DEFAULT '' NOT NULL",
'date_publication' => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
'brise' => 'tinyint DEFAULT 0',
'maj' => 'TIMESTAMP',
],
'key' => [
'PRIMARY KEY' => 'id_document',
'KEY id_vignette' => 'id_vignette',
'KEY mode' => 'mode',
'KEY extension' => 'extension',
],
'join' => [
'id_document' => 'id_document',
'extension' => 'extension',
],
'statut' => [
[
'champ' => 'statut',
'publie' => 'publie',
'previsu' => 'publie,prop,prepa',
'post_date' => 'date_publication',
'exception' => array('statut','tout')
)
),
'tables_jointures' => array('types_documents'),
'rechercher_champs' => array(
'titre' => 3, 'descriptif' => 1, 'fichier' => 1, 'credits' => 1,
),
'champs_editables' => array('titre', 'descriptif', 'date', 'taille', 'largeur','hauteur','mode','credits','fichier','distant','extension', 'id_vignette', 'media'),
'champs_versionnes' => array('id_vignette', 'titre', 'descriptif', 'hauteur', 'largeur', 'mode','credits','distant'),
'modeles' => array('document','doc','img','emb','image','video','text','audio','application'),
);
'exception' => ['statut', 'tout'],
],
],
'tables_jointures' => ['types_documents'],
'rechercher_champs' => [
'titre' => 3,
'descriptif' => 1,
'fichier' => 1,
'credits' => 1,
],
'champs_editables' => [
'titre',
'descriptif',
'date',
'taille',
'largeur',
'hauteur',
'duree',
'mode',
'credits',
'alt',
'fichier',
'distant',
'extension',
'id_vignette',
'media',
],
'champs_versionnes' => [
'id_vignette',
'titre',
'descriptif',
'taille',
'largeur',
'hauteur',
'duree',
'mode',
'credits',
'fichier',
'distant',
],
'modeles' => ['document', 'doc', 'img', 'emb', 'image', 'video', 'audio', 'file'],
'modeles_styliser' => 'medias_modeles_styliser',
];
// jointures sur les forum pour tous les objets
$tables[]['tables_jointures'][]= 'documents_liens';
$tables[]['tables_jointures'][] = 'documents_liens';
// recherche jointe sur les documents pour les articles et rubriques
$tables['spip_articles']['rechercher_jointures']['document'] = array('titre' => 2, 'descriptif' => 1);
$tables['spip_rubriques']['rechercher_jointures']['document'] = array('titre' => 2, 'descriptif' => 1);
$tables['spip_articles']['rechercher_jointures']['document'] = ['titre' => 2, 'descriptif' => 1];
$tables['spip_rubriques']['rechercher_jointures']['document'] = ['titre' => 2, 'descriptif' => 1];
return $tables;
}
......@@ -191,95 +231,121 @@ function medias_declarer_tables_objets_sql($tables){
*
* @param string $serveur
* @param string $champ_media
* @return void
*/
function creer_base_types_doc($serveur='', $champ_media="media_defaut") {
function creer_base_types_doc($serveur = '', $champ_media = 'media_defaut') {
global $tables_images, $tables_sequences, $tables_documents, $tables_mime;
include_spip('base/typedoc');
include_spip('base/abstract_sql');
// charger en memoire tous les types deja definis pour limiter les requettes
$rows = sql_allfetsel('mime_type,titre,inclus,extension,'.$champ_media.',upload,descriptif','spip_types_documents','','','','','',$serveur);
$deja = array();
foreach ($rows as $k=>$row){
$rows = sql_allfetsel(
'mime_type,titre,inclus,extension,' . $champ_media . ',upload,descriptif',
'spip_types_documents',
'',
'',
'',
'',
'',
$serveur
);
$deja = [];
foreach ($rows as $k => $row) {
$deja[$row['extension']] = &$rows[$k];
}
$insertions = array();
$updates = array();
$insertions = [];
$updates = [];
foreach ($tables_mime as $extension => $type_mime) {
if (isset($tables_images[$extension])) {
$titre = $tables_images[$extension];
$inclus='image';
$inclus = 'image';
} else {
if (isset($tables_sequences[$extension])) {
$titre = $tables_sequences[$extension];
$inclus = 'embed';
} else {
$inclus = 'non';
if (isset($tables_documents[$extension])) {
$titre = $tables_documents[$extension];
} else {
$titre = '';
}
}
}
else if (isset($tables_sequences[$extension])) {
$titre = $tables_sequences[$extension];
$inclus='embed';
}
else {
$inclus='non';
if (isset($tables_documents[$extension]))
$titre = $tables_documents[$extension];
else
$titre = '';
// type de media (par defaut)
$media = 'file';
if (preg_match(',^image/,', (string) $type_mime) || in_array($type_mime, ['application/illustrator'])) {
$media = 'image';
} elseif (preg_match(',^audio/,', (string) $type_mime)) {
$media = 'audio';
} elseif (
preg_match(',^video/,', (string) $type_mime) || in_array(
$type_mime,
['application/ogg', 'application/x-shockwave-flash', 'application/mp4']
)
) {
$media = 'video';
}
// type de media
$media = "file";
if (preg_match(",^image/,",$type_mime) OR in_array($type_mime,array('application/illustrator')))
$media = "image";
elseif (preg_match(",^audio/,",$type_mime))
$media = "audio";
elseif (preg_match(",^video/,",$type_mime) OR in_array($type_mime,array('application/ogg','application/x-shockwave-flash','application/mp4')))
$media = "video";
$set = array(
'mime_type' => $type_mime,
'titre' => $titre,
'inclus' => $inclus,
'extension' => $extension,
$champ_media => $media,
'upload' => 'oui',
'descriptif' => '',
);
if (!isset($deja[$extension])){
$set = [
'mime_type' => $type_mime,
'titre' => $titre,
'inclus' => $inclus,
'extension' => $extension,
$champ_media => $media,
'upload' => 'oui',
'descriptif' => '',
];
if (!isset($deja[$extension])) {
$insertions[] = $set;
}
elseif (array_diff($deja[$extension],$set)){
} elseif (array_diff($deja[$extension], $set)) {
$updates[$extension] = $set;
}
}
if (count($updates)){
foreach ($updates as $extension=>$set){
sql_updateq('spip_types_documents',$set,'extension='.sql_quote($extension));
if (count($updates)) {
foreach ($updates as $extension => $set) {
sql_updateq('spip_types_documents', $set, 'extension=' . sql_quote($extension));
}
}
if ($insertions)
sql_insertq_multi('spip_types_documents', $insertions, '', $serveur);
if ($insertions) {
sql_insertq_multi('spip_types_documents', $insertions, [], $serveur);
}
}
/**
* Optimiser la base de données en supprimant les liens orphelins
*
* @param array $flux
* @return array
*/
function medias_optimiser_base_disparus($flux){
function medias_optimiser_base_disparus($flux) {
include_spip('action/editer_liens');
// optimiser les liens morts :
// entre documents vers des objets effaces
// depuis des documents effaces
$flux['data'] += objet_optimiser_liens(array('document'=>'*'),'*');
$flux['data'] += objet_optimiser_liens(['document' => '*'], '*');
// on ne nettoie volontairement pas automatiquement les documents orphelins
// mais il faut nettoyer les logos qui ne sont plus liés à rien
$res = sql_select(
'D.id_document',
'spip_documents AS D
LEFT JOIN spip_documents_liens AS L
ON (L.id_document=D.id_document)',
sql_in('D.mode', ['logoon', 'logooff']) . ' AND L.id_document IS NULL'
);
$supprimer_document = charger_fonction('supprimer_document', 'action');
while ($row = sql_fetch($res)) {
autoriser_exception('supprimer', 'document', $row['id_document']);
$supprimer_document($row['id_document']);
$flux['data']++;
}
return $flux;
}
?>
Ce diff est replié.
{
"name": "spip/medias",
"description": "Gestion des medias dans SPIP",
"license": "GPL-3.0-or-later",
"type": "spip-plugin",
"authors": [
{
"name": "Collectif SPIP",
"homepage": "https://discuter.spip.net/c/spip-dev/5",
"role": "Maintainer"
}
],
"require": {
"php": "^8.2",
"james-heinrich/getid3": "^1.9",
"spip/archiviste": "^3.0"
},
"require-dev": {
"rector/rector": "^2.0",
"spip-league/easy-coding-standard": "^1.1",
"spip-league/sdk": "^1.0",
"symfony/console": "^7.2"
},
"repositories": {
"spip": {
"type": "composer",
"url": "https://get.spip.net/composer"
}
},
"autoload-dev": {
"files": [
"vendor/spip-league/sdk/src/Stub/functions_autoloading.php",
"vendor/spip-league/sdk/src/Stub/functions_cache.php",
"vendor/spip-league/sdk/src/Stub/functions_compiler.php",
"vendor/spip-league/sdk/src/Stub/functions_config.php",
"vendor/spip-league/sdk/src/Stub/functions_event_dispatching.php",
"vendor/spip-league/sdk/src/Stub/functions_filesystem.php",
"vendor/spip-league/sdk/src/Stub/functions_http_client.php",
"vendor/spip-league/sdk/src/Stub/functions_http_server.php",
"vendor/spip-league/sdk/src/Stub/functions_i18n.php",
"vendor/spip-league/sdk/src/Stub/functions_image_processing.php",
"vendor/spip-league/sdk/src/Stub/functions_logger.php",
"vendor/spip-league/sdk/src/Stub/functions_metas.php",
"vendor/spip-league/sdk/src/Stub/functions_objects_base.php",
"vendor/spip-league/sdk/src/Stub/functions_objects_documents.php",
"vendor/spip-league/sdk/src/Stub/functions_objects_rubriques.php",
"vendor/spip-league/sdk/src/Stub/functions_path.php",
"vendor/spip-league/sdk/src/Stub/functions_plugin_management.php",
"vendor/spip-league/sdk/src/Stub/functions_sql_query.php",
"vendor/spip-league/sdk/src/Stub/functions_templating.php",
"vendor/spip-league/sdk/src/Stub/functions_text_processing.php",
"vendor/spip-league/sdk/src/Stub/functions_user_management.php"
]
},
"config": {
"platform": {
"php": "8.2.26"
}
},
"extra": {
"branch-alias": {
"dev-master": "5.0.x-dev"
}
},
"scripts": {
"analyse": "vendor/bin/phpstan --memory-limit=-1",
"check-cs": "vendor/bin/ecs check --ansi",
"fix-cs": "vendor/bin/ecs check --fix --ansi",
"rector": "vendor/bin/rector process --ansi",
"rector-dry-run": "vendor/bin/rector process --dry-run --ansi"
}
}
<?php
use SpipLeague\EasyCodingStandard\Set\SetList;
use Symplify\EasyCodingStandard\Config\ECSConfig;
return ECSConfig::configure()
->withSets([SetList::SPIP])
->withPaths([__DIR__])
->withRootFiles()
->withSkip([__DIR__ . '/lang', __DIR__ . '/vendor', __DIR__ . '/lib'])
;
<div class='formulaire_spip formulaire_changer_fichier_document' id='formulaire_changer_fichier_document-#ENV{id,new}'>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[(#ENV{editable})
<form action="#ENV{action}#formulaire_changer_fichier_document-#ENV{id,new}" method="post" enctype='multipart/form-data'><div>
[(#ACTION_FORMULAIRE{#ENV{action}})]
<ul>
<li class="editer editer_fichier[ (#ENV**{erreurs}|table_valeur{fichier}|oui)erreur]">
<label for="fichier"><:medias:label_fichier:></label>[
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{fichier})</span>
]
[(#ENV{fichier}) ]
<p class='actions'>
[(#ENV{distant}|=={oui}|oui) <input type='submit' class='submit' name='copier_local' value='<:medias:bouton_copier_local|attribut_html:>' />]
&#91;<a href='#' onclick='jQuery("#changer_fichier_document").toggle("fast");return false;'><:bouton_changer:></a>&#93;
</p>
<div id='changer_fichier_document' style='display:none;'>
[(#INCLURE{fond=formulaires/inc-upload_document, env})]
</div>
</li>
</ul>
</div></form>
]
</div>
\ No newline at end of file
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2013 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
if (!defined("_ECRIRE_INC_VERSION")) return;
function formulaires_changer_fichier_document_charger_dist($id_document){
$valeurs = sql_fetsel('id_document,fichier,distant','spip_documents','id_document='.intval($id_document));
if (!$valeurs)
return array('editable'=>false);
$charger = charger_fonction('charger','formulaires/joindre_document');
$valeurs = array_merge($valeurs,$charger($id_document,0,'','choix'));
$valeurs['_hidden'] .= "<input name='id_document' value='$id_document' type='hidden' />";
return $valeurs;
}
function formulaires_changer_fichier_document_verifier_dist($id_document){
$erreurs = array();
if (_request('copier_local')){
}
else {
$verifier = charger_fonction('verifier','formulaires/joindre_document');
$erreurs = $verifier($id_document);
}
return $erreurs;
}
function formulaires_changer_fichier_document_traiter_dist($id_document){
if (_request('copier_local')){
$copier_local = charger_fonction('copier_local','action');
$res = array('editable'=>true);
if (($err=$copier_local($id_document))===true)
$res['message_ok'] = _T('medias:document_copie_locale_succes');
else
$res['message_erreur'] = $err;
}
else {
// liberer le nom de l'ancien fichier pour permettre le remplacement par un fichier du meme nom
if ($ancien_fichier = sql_getfetsel('fichier','spip_documents','id_document='.intval($id_document))
AND @file_exists($f = get_spip_doc($ancien_fichier))){
spip_unlink($f);
}
$traiter = charger_fonction('traiter','formulaires/joindre_document');
$res = $traiter($id_document);
}
return $res;
}
?>
\ No newline at end of file
<div class="formulaire_spip formulaire_configurer formulaire_#FORM formulaire_#FORM-#ENV{id,nouveau}">
<h3 class='titrem'><img src="#CHEMIN_IMAGE{document-24.png}" class="cadre-icone" /><:medias:titre_documents_joints:></h3>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[<div class="reponse_formulaire reponse_formulaire_ok" role="status">(#ENV*{message_ok})</div>]
[<div class="reponse_formulaire reponse_formulaire_erreur" role="alert">(#ENV*{message_erreur})</div>]
[(#ENV{editable})
<p><:medias:texte_documents_joints:></p>
<p class="explication"><:medias:texte_documents_joints_2:></p>
<form method='post' action='#ENV{action}'><div>
[(#REM) declarer les hidden qui declencheront le service du formulaire
parametre : url d'action ]
#ACTION_FORMULAIRE{#ENV{action}}
<ul>
#SET{name,documents_objets}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer long_label editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
#ACTION_FORMULAIRE
<div class="editer-groupe">
#SET{name,documents_objets}#SET{erreurs,#ENV*{erreurs/#GET{name}}}
<div class="editer long_label editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<label><:medias:label_activer_document_objets:></label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]#INCLURE{fond=formulaires/inc-choisir-objets,name=#GET{name},selected=#ENV**{#GET{name}},exclus=spip_documents}
</li>
#SET{name,documents_date}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer pleine_largeur editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
]#INCLURE{fond=formulaires/inc-choisir-objets,name=#GET{name},selected=#ENV{#GET{name}},exclus=spip_documents}
</div>
#SET{name,documents_date}#SET{erreurs,#ENV*{erreurs/#GET{name}}}
<div class="editer pleine_largeur editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
[
<span class='erreur_message'>(#GET{erreurs})</span>
]<div class="choix">
......@@ -28,11 +28,11 @@
<input type="radio" name="#GET{name}" id="#GET{name}_non" value="non"
[(#ENV{#GET{name}}|=={oui}|non)checked="checked"] /><label for="#GET{name}_non"><:medias:item_non_autoriser_selectionner_date_en_ligne:></label>
</div>
</li>
</ul>
</div>
</div>
[(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
<!--extra-->
<p class='boutons'><span class='image_loading'>&nbsp;</span><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p>
<p class='boutons'><span class='image_loading'>&nbsp;</span><input type='submit' class='btn submit' value='<:bouton_enregistrer:>' /></p>
</div></form>
]
</div>
\ No newline at end of file
</div>
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2013 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
* SPIP, Système de publication pour l'internet
*
* Copyright © avec tendresse depuis 2001
* Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James
*
* Ce programme est un logiciel libre distribué sous licence GNU/GPL.
*/
/**
* Gestion du formulaire de configuration des documents
*
* @package SPIP\Medias\Formulaires
**/
if (!defined('_ECRIRE_INC_VERSION')) return;
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Chargement du formulaire de configuration des documents
*
* @return array
* Environnement du formulaire
**/
function formulaires_configurer_documents_charger_dist(){
foreach(array(
"documents_objets",
"documents_date",
) as $m)
$valeurs[$m] = isset($GLOBALS['meta'][$m]) ? $GLOBALS['meta'][$m] : '';
$valeurs['documents_objets']=explode(',',$valeurs['documents_objets']);
*/
function formulaires_configurer_documents_charger_dist() {
$valeurs = [];
foreach (
['documents_objets', 'documents_date'] as $m
) {
$valeurs[$m] = $GLOBALS['meta'][$m] ?? '';
}
$valeurs['documents_objets'] = explode(',', (string) $valeurs['documents_objets']);
return $valeurs;
}
......@@ -39,15 +41,17 @@ function formulaires_configurer_documents_charger_dist(){
*
* @return array
* Retours du traitement
**/
function formulaires_configurer_documents_traiter_dist(){
$res = array('editable'=>true);
if (!is_null($v=_request($m='documents_date')))
ecrire_meta($m, $v=='oui'?'oui':'non');
if (!is_null($v=_request($m='documents_objets')))
ecrire_meta($m, is_array($v)?implode(',',$v):'');
*/
function formulaires_configurer_documents_traiter_dist() {
$res = ['editable' => true];
if (null !== ($v = _request($m = 'documents_date'))) {
ecrire_meta($m, $v == 'oui' ? 'oui' : 'non');
}
if (null !== ($v = _request($m = 'documents_objets'))) {
ecrire_meta($m, is_array($v) ? implode(',', $v) : '');
}
$res['message_ok'] = _T('config_info_enregistree');
return $res;
}
<div class='formulaire_spip formulaire_editer formulaire_editer_document formulaire_editer_document-#ENV{id_document,nouveau}'>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[<div class="reponse_formulaire reponse_formulaire_ok" role="status">(#ENV**{message_ok})</div>]
[<div class="reponse_formulaire reponse_formulaire_erreur" role="alert">(#ENV*{message_erreur})</div>]
[(#ENV{editable})
<form method='post' action='#ENV{action}' enctype='multipart/form-data'><div>
[(#REM) declarer les hidden qui declencheront le service du formulaire
[(#REM) declarer les hidden qui declencheront le service du formulaire
parametre : url d'action ]
#ACTION_FORMULAIRE{#ENV{action}}
<input type='hidden' name='id_document' value='#ENV{id_document}' />
#ACTION_FORMULAIRE
<input type='hidden' name='id_document' value='#ENV{id_document}' />
[(#REM) un bouton submit pour enregistrer qui sera declenche par le return
il ne doit pas etre hidden pour marcher dans safari
]
<div style="position:absolute;#LANG_LEFT:-10000px;"><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></div>
<ul>
<li class="editer editer_titre[ (#ENV**{erreurs}|table_valeur{titre}|oui)erreur]">
<label for="titre">[(#ENV{mode}|=={document}|?{<:medias:entree_titre_document:>,<:medias:entree_titre_image:>})]</label>[
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{titre})</span>
]<input type='text' class='text' name='titre' id='titre' value="[(#ENV**{titre,''})]" />
</li>
<li class='editer editer_parent[ (#ENV**{erreurs}|table_valeur{parents}|oui)erreur]'>
<label for="parents"><:medias:label_parents:></label>[
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{parents})</span>
]<INCLURE{fond=formulaires/selecteur/articles, selected=#ENV{parents}, name=parents, rubriques=1, articles=1} />
</li>
[<li class="editer editer_fichier[ (#ENV**{erreurs}|table_valeur{fichier}|oui)erreur]">
<div style="position:absolute;#LANG_LEFT:-10000px;" class="invisible-first-save-button"><input type='submit' class='btn submit' tabindex="-1" value='<:bouton_enregistrer:>' /></div>
<div class="editer-groupe">
<div class="editer editer_titre[ (#ENV*{erreurs/titre}|oui)erreur]">
<label for="titre">[(#ENV{mode}|=={document}|?{<:medias:entree_titre_document:>,<:medias:entree_titre_image:>})]</label>[
<span class='erreur_message'>(#ENV*{erreurs/titre})</span>
]<input type='text' class='text' name='titre' id='titre' value="[(#ENV{titre,''})]" />
</div>
<div class='editer editer_parent[ (#ENV*{erreurs/parents}|oui)erreur]'>
<label for="parents"><:medias:label_parents:></label>[
<span class='erreur_message'>(#ENV*{erreurs/parents})</span>
]<INCLURE{fond=formulaires/selecteur/articles, selected=#ENV{parents}, name=parents, rubriques=1, articles=1} />
</div>
[<div class="editer editer_fichier[ (#ENV*{erreurs/fichier}|oui)erreur]">
<label for="fichier"><:medias:label_fichier:></label>[
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{fichier})</span>
<span class='erreur_message'>(#ENV*{erreurs/fichier})</span>
]
(#ENV{fichier})
<p class='actions'>
[(#ENV{distant}|=={oui}|oui) <input type='submit' class='submit' name='copier_local' value='<:medias:bouton_copier_local|attribut_html:>' />]
<p class='actions right'>
[(#ENV{distant}|=={oui}|et{#TAILLE|<{#CONST{_COPIE_LOCALE_MAX_SIZE}}}|oui)<input type='submit' class='btn submit btn_mini' name='copier_local' value='<:medias:bouton_copier_local|attribut_html:>' />]
[(#PIPELINE{editer_document_actions,#ARRAY{args,#ARRAY{id_document,#ENV{id_document,nouveau}},data,''}})]
&#91;<a href='#' onclick='jQuery("#changer_fichier_document").toggle("fast");return false;'><:bouton_changer:></a>&#93;
<a class="btn btn_secondaire btn_mini" name="bouton_changer_fichier_document"><:bouton_changer:></a>
</p>
#SET{upload,#INCLURE{fond=formulaires/inc-upload_document, env, joindre_upload=oui}}
[<!--(#REM) TODO : remplacer par une fonction générique de type bouton_toggle -->]
<script type="module">
import { slideToggle , debounce } from 'ajaxCallback.js';
const btn = document.querySelector('.formulaire_editer_document .btn[name="bouton_changer_fichier_document"]');
btn.addEventListener('click', debounce(
async (e) => {
e.preventDefault();
await slideToggle(document.getElementById('changer_fichier_document'),200);
},
200)
);
</script>
#SET{upload,#INCLURE{fond=formulaires/inc-upload_document, env, joindre_upload=oui, multi=non}}
<div id='changer_fichier_document' class="[(#GET{upload}|match{erreur}|non)none-js]">
#GET{upload}
</div>
</li>]
<li class="editer editer_apercu">
<label><:medias:label_apercu:></label>
[(#ENV{apercu}|oui)
<div class="tourner">
<input class="image" type="image" name="tournerL90" src="#CHEMIN_IMAGE{tourner-gauche-12.png}" alt="<:medias:image_tourner_gauche:>" />
<input class="image" type="image" name="tournerR90" src="#CHEMIN_IMAGE{tourner-droite-12.png}" alt="<:medias:image_tourner_droite:>" />
<input class="image" type="image" name="tourner180" src="#CHEMIN_IMAGE{tourner-180-12.png}" alt="<:medias:image_tourner_180:>" />
</div>]
<div class="editer editer_apercu">
<label><:medias:label_apercu:></label>
[(#ENV{apercu}|oui)
<div class="tourner groupe-btns groupe-btns_menu">
<button class="btn image" type="submit" name="tournerL90" value="x">[(#CHEMIN_IMAGE{tourner-gauche-12.png}|balise_img{'',<:medias:image_tourner_gauche:>})]</button>
<button class="btn image" type="submit" name="tournerR90" value="x">[(#CHEMIN_IMAGE{tourner-droite-12.png}|balise_img{'',<:medias:image_tourner_droite:>})]</button>
<button class="btn image" type="submit" name="tourner180" value="x">[(#CHEMIN_IMAGE{tourner-180-12.png}|balise_img{'',<:medias:image_tourner_180:>})]</button>
</div>
[<a href='#ENV{apercu}'>(#ENV{apercu}|image_reduire{300,200})</a>]
[<a href='#ENV{apercu}'>(#ENV{apercu}|image_reduire{320,200})</a>]
]
[(#ENV{apercu}|non)
[(#ENV{_inclus}|=={embed}|?{
[(#MODELE{emb,id_document=#ENV{id_document,''},hauteur=200,largeur=300})]
[(#ENV{apercu}|non)
#SET{hauteur,#HAUTEUR|et{#LARGEUR}|?{#HAUTEUR|div{#LARGEUR}|mult{320}|round{0},200}}
[(#MEDIA|=={audio}|oui) #SET{hauteur,0}]
[(#ENV**{_inclus}|=={embed}|?{
[(#MODELE{emb,id_document=#ENV{id_document,''},largeur=320,hauteur=#GET{hauteur}})]
,
[(#MODELE{doc,id_document=#ENV{id_document,''},hauteur=200,largeur=300}|extraire_balise{a})]
[(#MODELE{doc,id_document=#ENV{id_document,''},largeur=320,hauteur=#GET{hauteur}}|extraire_balise{a})]
})]
]
</li>
<li class="editer editer_infos">
<label><:medias:label_caracteristiques:></label>
[<span class='type'>(#ENV{type_document}) - </span>]
<span class='taille'>[(#LARGEUR|ou{#HAUTEUR}|oui)[(#VAL{info_largeur_vignette}|_T{#ARRAY{largeur_vignette,#LARGEUR,hauteur_vignette,#HAUTEUR}})] -
</div>
<div class="editer editer_infos">
<label><:medias:label_caracteristiques:></label>
[<span class='type'>(#ENV{type_document}) - </span>]
<span class='taille'>[(#LARGEUR|ou{#HAUTEUR}|oui)[(#VAL{info_largeur_vignette}|_T{#ARRAY{largeur_vignette,#LARGEUR,hauteur_vignette,#HAUTEUR}})] -
][(#TAILLE|taille_en_octets|texte_backend)]</span>
[(#ENV{_taille_modif}|oui)<div class='taille_modifiee'><:medias:fichier_modifie:><br />[(#ENV{_largeur_modif}|ou{#ENV{_hauteur_modif}}|oui)[(#VAL{info_largeur_vignette}|_T{#ARRAY{largeur_vignette,#ENV{_largeur_modif},hauteur_vignette,#ENV{_hauteur_modif}}})] -
][(#ENV{_taille_modif}|taille_en_octets|texte_backend)]</div>]
[(#PIPELINE{afficher_metas_document,#ARRAY{args,#ARRAY{'quoi','editer_document','id_document',#ENV{id_document}},data,''}})]
</li>
<li class="editer editer_descriptif[ (#ENV**{erreurs}|table_valeur{descriptif}|oui)erreur]">
<label for="descriptif"><:info_description:></label>[
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{descriptif})</span>
]<textarea name='descriptif' id='descriptif'[ lang='(#LANGUE)'] rows='2' cols='40'>[(#ENV**{descriptif})]</textarea>
</li>
[(#ENV{_editer_date})
<li class="editer editer_date[ (#ENV**{erreurs}|table_valeur{saisie_date}|oui)erreur][ (#ENV**{erreurs}|table_valeur{saisie_heure}|oui)erreur]">
</div>
<div class="editer editer_descriptif[ (#ENV*{erreurs/descriptif}|oui)erreur]">
<label for="descriptif"><:medias:descriptif:></label>[
<span class='erreur_message'>(#ENV*{erreurs/descriptif})</span>
]<textarea name='descriptif' id='descriptif'[ lang='(#LANGUE)'] rows='2' cols='40'>[(#ENV{descriptif})]</textarea>
</div>
[(#ENV{_editer_date})
<div class="editer editer_date[ (#ENV*{erreurs/saisie_date}|oui)erreur][ (#ENV*{erreurs/saisie_heure}|oui)erreur]">
<label for="saisie_date" class='date'><:date:></label>[
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{saisie_date})</span>
]<input type='text' class='text date' name='saisie_date' id='saisie_date' size="10" maxlength="10" value="[(#ENV{saisie_date})]" />
<span class='erreur_message'>(#ENV*{erreurs/saisie_date})</span>
]<input type='text' class='text date' name='saisie_date' id='saisie_date' size="10" maxlength="10" value="[(#ENV{saisie_date})]" aria-describedby="format_date_doc_#ENV{id_document,nouveau}"/>
<span class='choix heure'>
<label for='saisie_heure' class='heure'><:medias:info_heure:></label>[
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{saisie_heure})</span>]
<input type='text' class='text heure' name='saisie_heure' id='heure' size="5" maxlength="5" value="[(#ENV{saisie_heure})]" />
<span class='erreur_message'>(#ENV*{erreurs/saisie_heure})</span>]
<input type='text' class='text heure' name='saisie_heure' id='saisie_heure' size="5" maxlength="5" value="[(#ENV{saisie_heure})]" aria-describedby="format_heure_doc_#ENV{id_document,nouveau}"/>
</span>
</li>
]
<li class="editer editer_credits[ (#ENV**{erreurs}|table_valeur{credits}|oui)erreur]">
<label for="credits"><:medias:label_credits:></label>[
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{credits})</span>
]<input type='text' class='text' name='credits' id='credits' value="#ENV**{credits,''}" />
</li>
[(#ENV{_editer_dimension})
<li class="editer editer_dimensions[ (#ENV**{erreurs}|table_valeur{dimensions}|oui)erreur]">
<p hidden id="format_date_doc_#ENV{id_document,nouveau}"><:format_date_attendu:></p>
<p hidden id="format_heure_doc_#ENV{id_document,nouveau}"><:format_heure_attendu:></p>
</div>]
<div class="editer editer_credits[ (#ENV*{erreurs/credits}|oui)erreur]">
<label for="credits"><:medias:label_credits:></label>[
<span class='erreur_message'>(#ENV*{erreurs/credits})</span>
]<input type='text' class='text' name='credits' id='credits' value="#ENV{credits,''}" />
</div>
[(#MEDIA|=={image}|oui)
<div class="editer editer_alt[ (#ENV*{erreurs/alt}|oui)erreur]">
<label for="alt"><:medias:label_alt:></label>[
<span class='erreur_message'>(#ENV*{erreurs/alt})</span>
]<p class="explication"><:medias:info_alt:></p>
<input type='text' class='text' name='alt' id='alt' value="#ENV{alt,''}" />
</div>
]
[(#ENV{_editer_dimension})
<div class="editer editer_dimensions[ (#ENV*{erreurs/dimensions}|oui)erreur]">
<label><:medias:entree_dimensions:></label>[
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{dimensions})</span>
]
<span class='erreur_message'>(#ENV*{erreurs/dimensions})</span>]
<span class='choix largeur'>
<label for='largeur' class='largeur'><:medias:info_largeur:></label>
<input type='text' class='text' name='largeur' id='largeur' value="[(#ENV{largeur})]" />
<input type='text' class='text' name='largeur' id='largeur' value="[(#ENV{largeur})]" />
</span>
<span class='choix hauteur'>
<label for='hauteur' class='hauteur'><:medias:info_hauteur:></label>
<input type='text' class='text' name='hauteur' id='hauteur' value="[(#ENV{hauteur})]" />
</span>
</li>
]
</ul>
[(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
<!--extra-->
<p class="boutons"><span class='image_loading'>&nbsp;</span><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p>
</div>]
</div>
[(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
<!--extra-->
<p class="boutons"><span class='image_loading'>&nbsp;</span><input type='submit' class='btn submit' value='<:bouton_enregistrer:>' /></p>
</div></form>
#INCLURE{fond=formulaires/dateur/inc-dateur}
]
</div>
Ce diff est replié.
<div class='formulaire_spip formulaire_illustrer_document' id='formulaire_illustrer_document-#ENV{id,new}'>
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[(#ENV{editable})
[<div class="reponse_formulaire reponse_formulaire_ok" role="status">(#ENV*{message_ok})</div>]
[<div class="reponse_formulaire reponse_formulaire_erreur" role="alert">(#ENV*{message_erreur})</div>]
[(#ENV{editable})
<form action="#ENV{action}#formulaire_illustrer_document-#ENV{id,new}" method="post" enctype='multipart/form-data'><div>
[(#ACTION_FORMULAIRE{#ENV{action}})]
<ul>
<li class="editer editer_fichier[ (#ENV**{erreurs}|table_valeur{fichier}|oui)erreur]">
#ACTION_FORMULAIRE
<div class="editer-groupe">
<div class="editer editer_fichier[ (#ENV*{erreurs/fichier}|oui)erreur]">
<label for="fichier"><:medias:label_fichier_vignette:></label>[
<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{fichier})</span>
][
<span class='erreur_message'>(#ENV*{erreurs/fichier})</span>
][<tt>(#ENV{vignette}|set_spip_doc)</tt><br />][
(#CONFIG{taille_preview}|intval|?{#ENV*{vignette}|image_reduire{#CONFIG{taille_preview}},#ENV*{vignette}|balise_img})
][(#ENV*{vignette}|non)<:medias:aucune_vignette:>
[(#CONFIG{creer_preview}|=={oui}|et{#ENV{media}|=={image}})<br /><:medias:miniature_automatique_active:>]
]
<p class='actions'>
[(#ENV{id_vignette}|oui|et{#AUTORISER{supprimer,document,#ENV{id_vignette}}}) <input type='submit' class='submit' name='supprimer' value='<:medias:bouton_supprimer|attribut_html:>' />]
[(#ENV{id_vignette}|non|ou{#AUTORISER{modifier,document,#ENV{id_vignette}}}) &#91;<a href='#' onclick='jQuery("#illustrer_document").toggle("fast");return false;'><:bouton_changer:></a>&#93;]
<p class='actions float-end'>
[(#ENV{id_vignette}|oui|et{#AUTORISER{supprimer,document,#ENV{id_vignette}}}) <input type='submit' class='btn btn_mini btn_secondaire submit' name='supprimer' value='<:medias:bouton_supprimer|attribut_html:>' />]
[(#ENV{id_vignette}|non|ou{#AUTORISER{modifier,document,#ENV{id_vignette}}})
[<!--(#REM) TODO : remplacer par une fonction générique de type bouton_toggle -->]
<a class="btn btn_mini btn_secondaire" href='javascript:' onclick='jQuery("#illustrer_document").toggle("fast");return false;'><:bouton_changer:></a>]
<span class='image_loading'>&nbsp;</span>
</p>
<div id='illustrer_document' style='display:none;'>
[(#INCLURE{fond=formulaires/inc-upload_document, env, joindre_upload=oui})]
</div>
</li>
</ul>
</div></form>
]
</div>
\ No newline at end of file
</div>
</div>
</div></form>]
</div>
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2013 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
* SPIP, Système de publication pour l'internet
*
* Copyright © avec tendresse depuis 2001
* Arnaud Martin, Antoine Pitrou, Philippe Rivière, Emmanuel Saint-James
*
* Ce programme est un logiciel libre distribué sous licence GNU/GPL.
*/
if (!defined("_ECRIRE_INC_VERSION")) return;
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
function formulaires_illustrer_document_charger_dist($id_document){
function formulaires_illustrer_document_charger_dist($id_document) {
include_spip('inc/documents');
$valeurs = sql_fetsel('id_document,mode,id_vignette,extension,media','spip_documents','id_document='.intval($id_document));
if (!$valeurs /*OR in_array($valeurs['extension'],array('jpg','gif','png'))*/)
return array('editable'=>false,'id'=>$id_document);
$valeurs = sql_fetsel(
'id_document,mode,id_vignette,extension,media',
'spip_documents',
'id_document=' . intval($id_document)
);
if (
!$valeurs || in_array($valeurs['mode'], ['logoon', 'logooff'])
) {
return ['editable' => false, 'id' => $id_document];
}
$valeurs['id'] = $id_document;
$valeurs['_hidden'] = "<input name='id_document' value='$id_document' type='hidden' />";
$valeurs['mode'] = 'vignette'; // pour les id dans le dom
$vignette = sql_fetsel('fichier,largeur,hauteur,id_document','spip_documents','id_document='.$valeurs['id_vignette']);
$valeurs['vignette'] = get_spip_doc($vignette['fichier']);
$valeurs['hauteur'] = $vignette['hauteur'];
$valeurs['largeur'] = $vignette['largeur'];
$valeurs['id_vignette'] = $vignette['id_document'];
$valeurs['_pipeline'] = array('editer_contenu_objet',array('type'=>'illustrer_document','id'=>$id_document));
$vignette = sql_fetsel(
'fichier,largeur,hauteur,id_document',
'spip_documents',
'id_document=' . $valeurs['id_vignette']
);
if ($vignette) {
$valeurs['vignette'] = get_spip_doc($vignette['fichier']);
$valeurs['hauteur'] = $vignette['hauteur'];
$valeurs['largeur'] = $vignette['largeur'];
$valeurs['id_vignette'] = $vignette['id_document'];
} else {
$valeurs['vignette'] = null;
$valeurs['hauteur'] = null;
$valeurs['largeur'] = null;
$valeurs['id_vignette'] = null;
}
$valeurs['_pipeline'] = ['editer_contenu_objet', ['type' => 'illustrer_document', 'id' => $id_document]];
if (intval($id_document) && !autoriser('modifier', 'document', intval($id_document))) {
$valeurs['editable'] = '';
}
return $valeurs;
}
function formulaires_illustrer_document_verifier_dist($id_document){
$erreurs = array();
if (_request('supprimer')){
function formulaires_illustrer_document_verifier_dist($id_document) {
$erreurs = [];
if (_request('supprimer')) {
} else {
$id_vignette = sql_getfetsel('id_vignette', 'spip_documents', 'id_document=' . intval($id_document));
$verifier = charger_fonction('verifier', 'formulaires/joindre_document');
$erreurs = $verifier($id_vignette, 0, '', 'vignette');
}
else {
$id_vignette = sql_getfetsel('id_vignette','spip_documents','id_document='.intval($id_document));
$verifier = charger_fonction('verifier','formulaires/joindre_document');
$erreurs = $verifier($id_vignette,0,'','vignette');
}
return $erreurs;
}
function formulaires_illustrer_document_traiter_dist($id_document){
$id_vignette = sql_getfetsel('id_vignette','spip_documents','id_document='.intval($id_document));
$res = array('editable'=>true);
if (_request('supprimer')){
$supprimer_document = charger_fonction('supprimer_document','action');
if ($id_vignette AND $supprimer_document($id_vignette))
function formulaires_illustrer_document_traiter_dist($id_document) {
$id_vignette = sql_getfetsel('id_vignette', 'spip_documents', 'id_document=' . intval($id_document));
$res = ['editable' => true];
if (_request('supprimer')) {
$supprimer_document = charger_fonction('supprimer_document', 'action');
if ($id_vignette && $supprimer_document($id_vignette)) {
$res['message_ok'] = _T('medias:vignette_supprimee');
else
$res['message_erreur'] = _T('medias:erreur_suppression_vignette');
}
else {
} else {
$res['message_erreur'] = _T('medias:erreur_suppression_vignette');
}
} else {
$ajouter_documents = charger_fonction('ajouter_documents', 'action');
include_spip('inc/joindre_document');
$files = joindre_trouver_fichier_envoye();
$ajoute = $ajouter_documents($id_vignette,$files,'',0,'vignette');
$ajoute = $ajouter_documents($id_vignette, $files, '', 0, 'vignette');
if (is_numeric(reset($ajoute))
AND $id_vignette = reset($ajoute)){
if (
is_numeric(reset($ajoute)) && ($id_vignette = reset($ajoute))
) {
include_spip('action/editer_document');
document_modifier($id_document,array("id_vignette" => $id_vignette,'mode'=>'document'));
document_modifier($id_document, ['id_vignette' => $id_vignette, 'mode' => 'document']);
$res['message_ok'] = _T('medias:document_installe_succes');
}
else
} else {
$res['message_erreur'] = reset($ajoute);
}
}
// todo :
// generer les case docs si c'est necessaire
// rediriger sinon
return $res;
}
?>
\ No newline at end of file
<fieldset><legend><:medias:upload_fichier_zip:></legend>
<div class='explication'><:medias:upload_fichier_zip_texte:></div>
<input type='hidden' name='chemin_zip' value='#ENV{chemin_zip}' />
<ul>
<li class='editer editer_options_upload_zip[ (#ENV*{erreurs_fichier_zip}|oui)erreur]'>
<div class="editer-groupe">
<div class='editer editer_options_upload_zip[ (#ENV*{erreurs_fichier_zip}|oui)erreur]'>
<label><:medias:upload_fichier_zip_texte2:></label>
<div class='choix'>
<input type='radio' checked='checked' name='options_upload_zip' id='options_upload_zip_telquel' value='upload'
......@@ -17,8 +17,8 @@
(#ENV*{liste_fichiers_zip}|joindre_liste_contenu_tailles_archive)
</ol>
</label>
<ul>
<li class='editer editer_options_deballe_zip' id='editer_options_deballe_zip'>
<div class="editer-groupe">
<div class='editer editer_options_deballe_zip' id='editer_options_deballe_zip'>
<div class='choix'>
<input type='checkbox' name='options_deballe_zip_conserver' id='options_deballe_zip_conserver' value='1' />
<label for='options_deballe_zip_conserver'><:medias:upload_zip_conserver:></label>
......@@ -27,20 +27,16 @@
<input type='checkbox' name='options_deballe_zip_titrer' id='options_deballe_zip_titrer' value='1' />
<label for='options_deballe_zip_titrer'><:medias:upload_zip_titrer:></label>
</div>
<div class='choix'>
<input type='checkbox' name='options_deballe_zip_mode_document' id='options_deballe_zip_mode_document' value='1' />
<label for='options_deballe_zip_mode_document'><:medias:upload_zip_mode_document:></label>
</div>
</li>
</ul>
</div>
</div>
</div>]
[
<div class='erreur_message'>(#ENV*{erreurs_fichier_zip}|joindre_liste_erreurs_to_li)</div>
]
</li>
</ul>
<p class='boutons'><input class='submit' type='submit' name='joindre_zip' value='<:bouton_valider|attribut_html:>' /></p>
</div>
</div>
<p class='boutons'><input class='btn submit' type='submit' name='joindre_zip' value='<:bouton_valider|attribut_html:>' /></p>
<script type='text/javascript'>
if (window.jQuery){ jQuery(document).ready(function(){jQuery("#editer_options_deballe_zip").hide();}); }
if (window.jQuery){ jQuery(function($){ $("#editer_options_deballe_zip").hide(); }); }
</script>
</fieldset>
\ No newline at end of file
Ce diff est replié.
......@@ -8,17 +8,17 @@
<h3 class='titrem'>[(#CHEMIN_IMAGE{doc-24.png}|balise_img{'',cadre-icone})][(#ENV{id,new}|intval|?{<:medias:bouton_remplacer_image_document:>,<:medias:bouton_ajouter_image_document:>}) #AIDER{ins_doc}]</h3>
]
<span class="image_loading"></span>
[<div class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</div>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV**{message_erreur})</p>]
[<div class="reponse_formulaire reponse_formulaire_ok" role="status">(#ENV**{message_ok})</div>]
[<div class="reponse_formulaire reponse_formulaire_erreur" role="alert">(#ENV**{message_erreur})</div>]
<form action="#ENV{action}#formulaire_joindre_document-#ENV{id,new}" method="post" enctype='multipart/form-data'><div>
[(#ACTION_FORMULAIRE{#ENV{action}})]
#ACTION_FORMULAIRE
[(#INCLURE{fond=formulaires/inc-upload_document, env, mediatheque=#ENV{objet,''}|et{#ENV{id_objet,''}}|et{#ENV{proposer_media}}})]
</div></form>
</div>]
[(#ENV{_galerie,''}|oui)
[(#REM) @deprecated 4.0 - SPIP 4.1 ]
[(#ENV{_galerie,''}|joindre_document_galerie_valide|oui)
[(#INCLURE{fond=#ENV{_galerie}, env, ajax})]
]
Ce diff est replié.
<div class="editer-groupe">
<div class='editer editer_url[ (#ENV*{erreurs/url}|oui)erreur]'>
<label for='url#ENV{domid}'><:medias:info_referencer_doc_distant:></label>[
<span class='erreur_message'>(#ENV*{erreurs/url})</span>
]<input class='text' placeholder="https://" type="text" name="url" value='#ENV{url}' id="url#ENV{domid}"/>
<!--editer_url-->
</div>
</div>
<div class="editer-groupe">
[<div class='editer editer_cheminftp[ (#ENV*{erreurs/cheminftp}|oui)erreur]'>
<label for='cheminftp#ENV{domid}'>[(#VAL{info_selectionner_fichier}|_T{#ARRAY{upload,#ENV*{_dir_upload_ftp}}})]</label>[
<span class='erreur_message'>(#ENV*{erreurs/cheminftp})</span>
]<select name='cheminftp' id='cheminftp#ENV{domid}' size='1'>
<option value=''>&gt;&gt;</option>
(#ENV*{_options_upload_ftp})
</select>
<!--editer_cheminftp-->
</div>]
</div>
[(#ENV{_dir_upload_ftp}|et{#ENV{_options_upload_ftp}|non}|oui)
<p class="infos">
[(#VAL{info_installer_ftp}|_T{#ARRAY{upload,#ENV*{_dir_upload_ftp}}})] #AIDER{ins_upload}
</p>
]
\ No newline at end of file
Ce diff est replié.