diff --git a/design_system_dependences/compositions/.gitattributes b/design_system_dependences/compositions/.gitattributes new file mode 100644 index 0000000000000000000000000000000000000000..faa64660c51120fab03f07fefaad60b4223521d5 --- /dev/null +++ b/design_system_dependences/compositions/.gitattributes @@ -0,0 +1,3 @@ +/phpstan.neon.dist export-ignore +/phpstan-baseline.neon export-ignore +/phpstan-constants.php export-ignore \ No newline at end of file diff --git a/design_system_dependences/compositions/CHANGELOG.md b/design_system_dependences/compositions/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..adfddc4630df637a9574124ba6b20c99351b2ebc --- /dev/null +++ b/design_system_dependences/compositions/CHANGELOG.md @@ -0,0 +1,19 @@ +# Changelog + +## Unreleased + +## 4.0.1 - 2023-12-15 + +### Changed + +- #14 évolution du filtre `composition_class` + +## 4.0.0 - 2023-11-21 + +### Changed + +- #12 Compatibilité SPIP 4.1 mini + +## Fixed + +- #12 Retour de `compositions_verrou_branche()` toujours de type `bool` diff --git a/design_system_dependences/compositions/README.md b/design_system_dependences/compositions/README.md new file mode 100644 index 0000000000000000000000000000000000000000..a0eef3755a480fc713f94e62c0f3265787975138 --- /dev/null +++ b/design_system_dependences/compositions/README.md @@ -0,0 +1,7 @@ +# Compositions + +Ce plugin vous permet de définir plusieurs variantes de compositions pour chaque type objet SPIP (article, rubrique, etc.) et de les appliquer simplement, cas par cas, depuis l’espace privé. + +## Documentation + +https://contrib.spip.net/3777 \ No newline at end of file diff --git a/design_system_dependences/compositions/composition-vide.html b/design_system_dependences/compositions/composition-vide.html new file mode 100644 index 0000000000000000000000000000000000000000..47c48749b7b28092b917ba0b4918c79f0315f0fe --- /dev/null +++ b/design_system_dependences/compositions/composition-vide.html @@ -0,0 +1,9 @@ +[(#REM) + + Squelette + (c) Cedric Morin 2009 + Distribue sous licence GPL + + Un squelette qui ne produit rien. +] +#CACHE{3600*100} \ No newline at end of file diff --git a/design_system_dependences/compositions/composition.dtd b/design_system_dependences/compositions/composition.dtd new file mode 100644 index 0000000000000000000000000000000000000000..b98fb338ad52fa7c2604a596d4c2f8027934eb32 --- /dev/null +++ b/design_system_dependences/compositions/composition.dtd @@ -0,0 +1,42 @@ +<!-- DTD retrospective pour un fichier descriptif d'une composition, type-composition.xml --> + +<!--================ Entites XML std =========================--> + +<!ENTITY % HTMLlat1 PUBLIC + "-//W3C//ENTITIES Latin 1 for XHTML//EN" + "xhtml-lat1.ent"> +%HTMLlat1; + +<!ENTITY % HTMLsymbol PUBLIC + "-//W3C//ENTITIES Symbols for XHTML//EN" + "xhtml-symbol.ent"> +%HTMLsymbol; + +<!ENTITY % HTMLspecial PUBLIC + "-//W3C//ENTITIES Special for XHTML//EN" + "xhtml-special.ent"> +%HTMLspecial; + +<!--================ DTD originale =========================--> + +<!ENTITY % NAME "CDATA"> <!-- identificateur (type d'objet, composition) --> +<!ENTITY % ITEM "CDATA"> <!-- chaine de langue --> +<!ENTITY % PATH "CDATA"> <!-- chemin d'acces relatif a un fichier --> + +<!ENTITY % CONTENT "(description|icon|image_exemple|class|configuration)*" > + +<!ELEMENT composition (nom, %CONTENT;, branche*) > + +<!ELEMENT nom (%ITEM|#PCDATA)> + +<!ELEMENT description (%ITEM|#PCDATA)> +<!ELEMENT icon (%PATH)> +<!ELEMENT image_exemple (%PATH)> +<!ELEMENT class (#PCDATA)> +<!ELEMENT configuration (#PCDATA)> + +<!ELEMENT branche EMPTY> +<!ATTLIST branche + type %NAME; #REQUIRED + composition %NAME; #REQUIRED +> diff --git a/design_system_dependences/compositions/compositions_administrations.php b/design_system_dependences/compositions/compositions_administrations.php new file mode 100644 index 0000000000000000000000000000000000000000..79e28e8c2fb4369ddac39b0dd68a0263dc67b828 --- /dev/null +++ b/design_system_dependences/compositions/compositions_administrations.php @@ -0,0 +1,84 @@ +<?php + +/** + * Plugin Compositions + * (c) 2007-2009 Cedric Morin + * Distribue sous licence GPL + * + */ + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + + +/** + * Upgrade des tables + * + * @param string $nom_meta_base_version + * @param string $version_cible + */ +function compositions_upgrade($nom_meta_base_version, $version_cible) { + include_spip('base/objets'); + $tables_objets = array_keys(lister_tables_objets_sql()); + $maj = []; + $maj['create'] = []; + foreach ($tables_objets as $table) { + $maj['create'][] = ['sql_alter', "TABLE $table ADD composition varchar(255) DEFAULT '' NOT NULL"]; + $maj['create'][] = ['sql_alter', "TABLE $table ADD composition_lock tinyint(1) DEFAULT 0 NOT NULL"]; + } + $maj['create'][] = ['sql_alter', 'TABLE spip_rubriques ADD composition_branche_lock tinyint(1) DEFAULT 0 NOT NULL']; + + $maj['0.5.0'] = []; + foreach ($tables_objets as $table) { + $maj['0.5.0'][] = ['sql_alter', "TABLE $table ADD composition varchar(255) DEFAULT '' NOT NULL"]; + $maj['0.5.0'][] = ['sql_alter', "TABLE $table ADD composition_lock tinyint(1) DEFAULT 0 NOT NULL"]; + } + $maj['0.5.0'][] = ['sql_alter', 'TABLE spip_rubriques ADD composition_branche_lock tinyint(1) DEFAULT 0 NOT NULL']; + + include_spip('base/upgrade'); + maj_plugin($nom_meta_base_version, $version_cible, $maj); +} + +/** + * Une fonction pour verifier que les champs sont bien sur tous les objets, + * appelee lors de la configuration + * (cas d'un nouvel objet ajoute apres l'install du plugin) + * + * @return void + */ +function compositions_check_upgrade() { + include_spip('base/objets'); + $tables_objets = array_keys(lister_tables_objets_sql()); + $trouver_table = charger_fonction('trouver_table', 'base'); + foreach ($tables_objets as $table) { + $desc = $trouver_table($table); + if (!isset($desc['field']['composition'])) { + sql_alter("TABLE $table ADD composition varchar(255) DEFAULT '' NOT NULL"); + } + if (!isset($desc['field']['composition_lock'])) { + sql_alter("TABLE $table ADD composition_lock tinyint(1) DEFAULT 0 NOT NULL"); + } + } +} + +/** + * Desinstallation + * + * @param string $nom_meta_base_version + */ +function compositions_vider_tables($nom_meta_base_version) { + include_spip('inc/meta'); + include_spip('base/abstract_sql'); + + include_spip('base/objets'); + $tables_objets = array_keys(lister_tables_objets_sql()); + foreach ($tables_objets as $table) { + sql_alter("TABLE $table DROP composition"); + sql_alter("TABLE $table DROP composition_lock"); + } + sql_alter('TABLE spip_rubriques DROP composition_branche_lock'); + + effacer_meta('compositions'); + effacer_meta($nom_meta_base_version); +} diff --git a/design_system_dependences/compositions/compositions_fonctions.php b/design_system_dependences/compositions/compositions_fonctions.php new file mode 100644 index 0000000000000000000000000000000000000000..1772099abeb007cb0880a1eeee09f4bba685be1a --- /dev/null +++ b/design_system_dependences/compositions/compositions_fonctions.php @@ -0,0 +1,545 @@ +<?php + +use Spip\Compilateur\Noeud\Champ; + +/** + * Plugin Compositions + * (c) Cedric Morin + * Distribue sous licence GPL + * + * @package SPIP\Compositions\Fonctions + */ + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +define('_COMPOSITIONS_MATCH', '-([^0-9][^.]*)'); + +/** + * Lister les objets actives par configuration + * + * @return array + */ +function compositions_objets_actives() { + static $config = null; + if (is_null($config)) { + // lister les objets dont on a active la composition dans la configuration + $config = isset($GLOBALS['meta']['compositions']) ? unserialize($GLOBALS['meta']['compositions']) : []; + $config = ($config['objets'] ?? ['spip_articles', 'spip_rubriques']); + $config = array_map('objet_type', $config); + } + return $config; +} + +/** + * Retrouver le nom du dossier ou sont stockees les compositions + * reglage par defaut, ou valeur personalisee via cfg + * + * @return string + */ +function compositions_chemin() { + $config_chemin = 'compositions/'; + if (defined('_DIR_PLUGIN_Z') or defined('_DIR_PLUGIN_ZCORE')) { + $config_chemin = (isset($GLOBALS['z_blocs']) ? reset($GLOBALS['z_blocs']) : 'contenu') . '/'; + } elseif (isset($GLOBALS['meta']['compositions'])) { + $config = unserialize($GLOBALS['meta']['compositions']); + if (isset($config['chemin_compositions'])) { + $config_chemin = rtrim($config['chemin_compositions'], '/') . '/'; + } + } + + return $config_chemin; +} + +/** + * Tester si la stylisation auto est activee + * @return string + */ +function compositions_styliser_auto() { + $config_styliser = true; + if (defined('_DIR_PLUGIN_Z') or defined('_DIR_PLUGIN_ZCORE')) { + $config_styliser = false; // Z s'occupe de styliser les compositions + } elseif (isset($GLOBALS['meta']['compositions'])) { + $config = unserialize($GLOBALS['meta']['compositions']); + $config_styliser = (!isset($config['styliser_auto']) or ($config['styliser_auto'] != 'non')); + } + return $config_styliser ? ' ' : ''; +} + +/** + * Lister les compositions disponibles : toutes ou pour un type donne + * Si informer est a false, on ne charge pas les infos du xml + * + * @param string $type + * @param bool $informer + * @return array + */ +function compositions_lister_disponibles($type, $informer = true) { + include_spip('inc/compositions'); + $type_match = ''; + if (strlen($type)) { + $type = objet_type($type); // securite + $type_match = $type; + } else { + // _ pour le cas des groupe_mots + $type_match = '[a-z0-9_]+'; + } + + // rechercher les skel du type article-truc.html + // truc ne doit pas commencer par un chiffre pour eviter de confondre avec article-12.html + $match = "($type_match)(" . _COMPOSITIONS_MATCH . ')?[.]html$'; + + // lister les compositions disponibles + $liste = find_all_in_path(compositions_chemin(), $match); + $res = []; + if (is_countable($liste) ? count($liste) : 0) { + foreach ($liste as $s) { + $base = preg_replace(',[.]html$,i', '', $s); + if ( + preg_match(",$match,ims", basename($s), $regs) + and ($composition = !$informer + or $composition = compositions_charger_infos($base)) + ) { + $regs = array_pad($regs, 4, null); + $res[$regs[1]][$regs[3]] = $composition; + // retenir les skels qui ont un xml associe + } + } + } + // Pipeline compositions_lister_disponibles + $res = pipeline('compositions_lister_disponibles', ['args' => ['type' => $type, 'informer' => $informer], 'data' => $res]); + return $res; +} + +/** + * Liste les id d'un type donne utilisant une composition donnee + * + * @param string $type + * @param string $composition + * @return array + */ +function compositions_lister_utilisations($type, $composition) { + $table_sql = table_objet_sql($type); + $tables_objets_sql = array_keys(lister_tables_objets_sql()); + if (!in_array($table_sql, $tables_objets_sql)) { + return []; + } + $trouver_table = charger_fonction('trouver_table', 'base'); + $desc = $trouver_table($table_sql); + $_id_table_objet = id_table_objet($type); + $titre = $desc['titre'] ?? "'' AS titre"; + return sql_allfetsel("$_id_table_objet as id, $titre", $table_sql, 'composition=' . sql_quote($composition)); +} + +/** + * Selectionner le fond en fonction du type et de la composition + * en prenant en compte la configuration pour le chemin + * et le fait que la composition a pu etre supprimee + * + * @param string $composition + * @param string $type + * @param string $defaut + * @param string $ext + * @param bool $fullpath + * @param string $vide + * @return string + */ +function compositions_selectionner($composition, $type, $defaut = '', $ext = 'html', $fullpath = false, $vide = 'composition-vide') { + if ($type == 'syndic') { + $type = 'site'; //grml + } + $fond = compositions_chemin() . $type; + + // regarder si compositions/article-xxx est disponible + if ( + strlen($composition) + and $f = find_in_path("$fond-$composition.$ext") + ) { + return $fullpath ? $f : $fond . "-$composition"; + } elseif ( + strlen($defaut) + and $f = find_in_path("$fond-$defaut.$ext") + ) { + // sinon regarder si compositions/article-defaut est disponible + return $fullpath ? $f : $fond . "-$defaut"; + } + + // se rabattre sur compositions/article si disponible + if ($f = find_in_path("$fond.$ext")) { + return $fullpath ? $f : $fond; + } + + // sinon une composition vide pour ne pas generer d'erreur + if ($vide and $f = find_in_path("$vide.$ext")) { + return $fullpath ? $f : $vide; + } + + // rien mais ca fera une erreur dans le squelette si appele en filtre + return ''; +} + +/** + * Decrire une composition pour un objet + * @param string $type + * @param string $composition + * @return array|bool|string + */ +function compositions_decrire($type, $composition) { + static $compositions = []; + if (!function_exists('compositions_charger_infos')) { + include_spip('inc/compositions'); + } + if ($type == 'syndic') { + $type = 'site'; //grml + } + if (isset($compositions[$type][$composition])) { + return $compositions[$type][$composition]; + } + $ext = 'html'; + $fond = compositions_chemin() . $type; + if ( + strlen($composition) + and $f = find_in_path("$fond-$composition.$ext") + and $desc = compositions_charger_infos($f) + ) { + $compositions[$type][$composition] = $desc; + $compositions[$type][$composition]['basename'] = basename($f, ".$ext"); + return $compositions[$type][$composition]; + } + return $compositions[$type][$composition] = false; +} + +/** + * Un filtre a utiliser sur [(#COMPOSITION|composition_class{#ENV{type}})] + * pour poser des classes generiques sur le <body> + * par défaut on pose les classes `page_TYPE sans_composition` + * si une composition est définie `page_TYPE TYPE_COMPOSITION composition_COMPOSITION` + * si une balise <class>toto</class> est definie dans la composition `page_TYPE TYPE_COMPOSITION composition_COMPOSITION toto` + * + * @param string $composition + * @param string $type + * @return string + */ +function composition_class($composition = '', $type = 'page') { + $class = "page_$type"; + if ($composition){ + $class .= ' ' . $type . '_' . $composition . ' composition_' . $composition; + if ( + $desc = compositions_decrire($type, $composition) + and isset($desc['class']) + and strlen($desc['class']) + ) { + $class .= ' ' . $desc['class']; + } + } + else { + $class .= ' sans_composition'; + } + return $class; +} + +/** + * Liste les types d'objets qui ont une composition ET sont autorises par la configuration + * utilise la valeur en cache meta sauf si demande de recalcul + * ou pas encore definie + * + * @staticvar array $liste + * @return array + */ +function compositions_types() { + static $liste = null; + if (is_null($liste)) { + if (_VAR_MODE or !isset($GLOBALS['meta']['compositions_types'])) { + include_spip('inc/compositions'); + compositions_cacher(); + } + $liste = explode(',', $GLOBALS['meta']['compositions_types']); + } + return $liste; +} + +/** + * Renvoie les parametres necessaires pour utiliser l'heritage de composition de façon generique + * recupere les donnes du pipeline compositions_declarer_heritage. + * Si $type n'est pas precise, on renvoie simplement le tableau des objets pouvant heriter. + * + * @param string $type + * @staticvar array $heritages + * @return array + */ +function compositions_recuperer_heritage($type = null) { + static $heritages = null; + if (is_null($heritages)) { + // recuperer les heritages declares via le pipeline compositions_declarer_heritage + $heritages = pipeline('compositions_declarer_heritage', []); + } + + if (is_null($type)) { + return $heritages; + } + + if (array_key_exists($type, $heritages)) { + $type_parent = $heritages[$type]; + $table_parent = table_objet_sql($type_parent); + $nom_id_parent = ($type == $type_parent) ? 'id_parent' : id_table_objet($type_parent); // Recursivite pour les rubriques, nom de l'identifiant du parent dans la table enfant + $nom_id_table_parent = id_table_objet($type_parent); // Nom de l'identifiant du parent dans la table parent + + // verifier que table et champs existent... + $trouver_table = charger_fonction('trouver_table', 'base'); + if ( + !$type_parent + or !$desc = $trouver_table($table_parent) + or !isset($desc['field']['composition']) + or !isset($desc['field'][$nom_id_parent]) + ) { + return []; + } + + return ['type_parent' => $type_parent, 'table_parent' => $table_parent, 'nom_id_parent' => $nom_id_parent, 'nom_id_table_parent' => $nom_id_table_parent]; + } + return []; +} + +/** + * Renvoie la composition qui s'applique a un objet + * en tenant compte, le cas echeant, de la composition heritee + * si etoile=true on renvoi directment le champ sql + * + * @param string $type + * @param integer $id + * @param string $serveur + * @param bool $etoile + * @return string + */ +function compositions_determiner($type, $id, $serveur = '', $etoile = false) { + // le compilateur produi(sait) des occurences de compositions_determiner('',...) + // qui provoquent un appel a $trouver_table('') + // qui vide le cache des descriptions SQL + // evitons ce cas + if (!$type) { + return ''; + } + + static $composition = []; + $id = intval($id); + + if (isset($composition[$etoile][$serveur][$type][$id])) { + return $composition[$etoile][$serveur][$type][$id]; + } + + include_spip('base/abstract_sql'); + $table = table_objet($type); + $table_sql = table_objet_sql($type); + $_id_table = id_table_objet($type); + + $retour = ''; + + $trouver_table = charger_fonction('trouver_table', 'base'); + $desc = $trouver_table($table, $serveur); + if (isset($desc['field']['composition']) and $id) { + $select = 'composition'; + + // si on a le plugin page unique et qu'on cherche la composition d'un article, regardons aussi le champ page + // pour en deriver une composition automatique + if ($type === 'article' and isset($desc['field']['page']) and test_plugin_actif('pages')) { + $select .= ', page'; + } + + $heritage = compositions_recuperer_heritage($type); + if ($heritage and isset($desc['field'][$heritage['nom_id_parent']])) { + $select .= ', ' . $heritage['nom_id_parent'] . ' as id_parent'; + } + + if ($row = sql_fetsel($select, $table_sql, "$_id_table=" . intval($id), '', '', '', '', $serveur)) { + if ($row['composition'] != '') { + $retour = $row['composition']; + } elseif ( + !$etoile + and isset($row['id_parent']) + and $row['id_parent'] > 0 + ) { + $retour = compositions_heriter($type, $id, $row['id_parent'], $serveur); + } + } + if (!$retour and !empty($row['page'])) { + $retour = 'pageunique-' . $row['page']; + } + } + return $composition[$etoile][$serveur][$type][$id] = (($retour == '-') ? '' : $retour); +} + +/** + * Renvoie la composition heritee par un objet selon son identifiant. + * Optionnellement, on peut lui transmettre directement l'id du parent s'il a ate calcule. + * + * @param string $type + * @param integer $id + * @param integer $id_parent + * @param string $serveur + * @return string + */ +function compositions_heriter($type, $id, $id_parent = null, $serveur = '') { + if ($type == 'syndic') { + $type = 'site'; //grml + } + if (intval($id) < 1) { + return ''; + } + static $infos = null; + $compo_parent = ''; + + $heritage = compositions_recuperer_heritage($type); + + /* Si aucun héritage n'a été défini pour le type d'objet, ce + * n'est pas la peine d'aller plus loin. */ + if (count($heritage) == 0) { + return ''; + } + + $type_parent = $heritage['type_parent']; + $table_parent = $heritage['table_parent']; + $nom_id_parent = $heritage['nom_id_parent']; + $nom_id_table_parent = $heritage['nom_id_table_parent']; + + if (is_null($id_parent)) { + $id_parent = sql_getfetsel($nom_id_parent, table_objet_sql($type), id_table_objet($type) . '=' . intval($id)); + } + + $heritages = compositions_recuperer_heritage(); + + do { + $select = 'composition'; + if (isset($heritages[$type_parent]) and $heritages[$type_parent] === $type_parent) { + // S'il y a recursivite sur le parent + $select .= ', id_parent'; + } + $row = sql_fetsel($select, $table_parent, $nom_id_table_parent . '=' . intval($id_parent), '', '', '', '', $serveur); + if ($row) { + if (strlen($row['composition']) and $row['composition'] != '-') { + $compo_parent = $row['composition']; + } elseif (strlen($row['composition']) == 0 and isset($heritages[$type_parent])) { + // Si le parent peut heriter, il faut verifier s'il y a heritage + $compo_parent = compositions_determiner($type_parent, $id_parent, $serveur = ''); + } + if (strlen($compo_parent) and is_null($infos)) { + $infos = compositions_lister_disponibles(''); + } + } + } while ( + isset($row['id_parent']) + and $id_parent = $row['id_parent'] + and + (!strlen($compo_parent) or !isset($infos[$type_parent][$compo_parent]['branche'][$type])) + ); + + if (strlen($compo_parent) and isset($infos[$type_parent][$compo_parent]['branche'][$type])) { + return $infos[$type_parent][$compo_parent]['branche'][$type]; + } + + return ''; +} + +/** + * #COMPOSITION + * Renvoie la composition s'appliquant a un objet + * en tenant compte, le cas echeant, de l'heritage. + * + * Sans precision, l'objet et son identifiant sont pris + * dans la boucle en cours, mais l'on peut specifier notre recherche + * en passant objet et id_objet en argument de la balise : + * #COMPOSITION{article, 8} + * + * #COMPOSITION* renvoie toujours le champs brut, sans tenir compte de l'heritage + * + * @param Champ $p AST au niveau de la balise + * @return Champ AST->code modifie pour calculer le nom de la composition + */ +function balise_COMPOSITION_dist($p) { + $_id_objet = null; + $_composition = ''; + $_objet = ''; + if ($_objet = interprete_argument_balise(1, $p)) { + $_id_objet = interprete_argument_balise(2, $p); + } else { + $_composition = champ_sql('composition', $p); + if ($p->id_boucle) { + $_id_objet = champ_sql($p->boucles[$p->id_boucle]->primary, $p); + $_objet = "objet_type('" . $p->boucles[$p->id_boucle]->id_table . "')"; + } + } + // si on veut le champ brut, et qu'on l'a sous la main, inutile d'invoquer toute la machinerie + if ($_composition and (!$_objet or $p->etoile)) { + $p->code = $_composition; + } else { + if ($p->id_boucle) { + $connect = $p->boucles[$p->id_boucle]->sql_serveur; + } else { + $connect = ''; + } + $p->code = "compositions_determiner($_objet, $_id_objet, '$connect', " . ($p->etoile ? 'true' : 'false') . ')'; + // ne declencher l'usine a gaz que si composition est vide ... + if ($_composition) { + $p->code = "((\$zc=$_composition)?(\$zc=='-'?'':\$zc):" . $p->code . ')'; + } + } + return $p; +} + +/** + * Indique si la composition d'un objet est verrouillee ou non, + * auquel cas, seul le webmaster peut la modifier + * + * @param string $type + * @param integer $id + * @param string $serveur + * @return bool + */ +function compositions_verrouiller($type, $id, $serveur = '') { + $config = (isset($GLOBALS['meta']['compositions']) ? unserialize($GLOBALS['meta']['compositions']) : []); + if (isset($config['tout_verrouiller']) and $config['tout_verrouiller'] == 'oui') { + return true; + } + + include_spip('base/abstract_sql'); + $table = table_objet($type); + $table_sql = table_objet_sql($type); + $_id_table = id_table_objet($type); + + $trouver_table = charger_fonction('trouver_table', 'base'); + $desc = $trouver_table($table, $serveur); + if (isset($desc['field']['composition_lock']) and $id) { + $lock = sql_getfetsel('composition_lock', $table_sql, "$_id_table=" . intval($id), '', '', '', '', $serveur); + if ($lock) { + return true; + } elseif (isset($desc['field']['id_rubrique'])) { + $id_rubrique = sql_getfetsel('id_rubrique', $table_sql, "$_id_table=" . intval($id), '', '', '', '', $serveur); + return compositions_verrou_branche($id_rubrique, $serveur); + } else { + return false; + } + } else { + return false; + } +} + +/** + * Indique si les objets d'une branche sont verrouilles + * @param integer $id_rubrique + * @param string $serveur + * @return bool + */ +function compositions_verrou_branche($id_rubrique, $serveur = '') { + + if (intval($id_rubrique) < 1) { + return false; + } + if ($infos_rubrique = sql_fetsel(['id_parent', 'composition_branche_lock'], 'spip_rubriques', 'id_rubrique=' . intval($id_rubrique), '', '', '', '', $serveur)) { + if ($infos_rubrique['composition_branche_lock']) { + return true; + } else { + return compositions_verrou_branche($infos_rubrique['id_parent'], $serveur); + } + } + return false; +} diff --git a/design_system_dependences/compositions/compositions_ieconfig.php b/design_system_dependences/compositions/compositions_ieconfig.php new file mode 100644 index 0000000000000000000000000000000000000000..88264b1e575136b651996bc5ed3a1433ee893df7 --- /dev/null +++ b/design_system_dependences/compositions/compositions_ieconfig.php @@ -0,0 +1,14 @@ +<?php + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +// On déclare ici la config du core +function compositions_ieconfig_metas($table) { + $table['compositions']['titre'] = _T('compositions:compositions'); + $table['compositions']['icone'] = 'composition-16.png'; + $table['compositions']['metas_serialize'] = 'compositions'; + + return $table; +} diff --git a/design_system_dependences/compositions/compositions_options.php b/design_system_dependences/compositions/compositions_options.php new file mode 100644 index 0000000000000000000000000000000000000000..fbde4deb43393898fc2467db813dd2fc8c01c55c --- /dev/null +++ b/design_system_dependences/compositions/compositions_options.php @@ -0,0 +1,15 @@ +<?php + +/** + * Plugin Compositions + * (c) Cedric Morin + * Distribue sous licence GPL + * + * @package SPIP\Compositions\Fonctions + */ + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS['marqueur_skel'] = ($GLOBALS['marqueur_skel'] ?? '') . ':composition'; diff --git a/design_system_dependences/compositions/compositions_pipeline.php b/design_system_dependences/compositions/compositions_pipeline.php new file mode 100644 index 0000000000000000000000000000000000000000..ccbf90feacaac3c6580048beee03564dc61a3cf7 --- /dev/null +++ b/design_system_dependences/compositions/compositions_pipeline.php @@ -0,0 +1,185 @@ +<?php + +/** + * Plugin Compositions + * (c) Cedric Morin + * Distribue sous licence GPL + * + */ + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +/** + * Declaration des champs sur les objets + * + * @param array $tables + * @return array + */ +function compositions_declarer_tables_objets_sql($tables) { + + // champs composition et composition_lock sur tous les objets + // c'est easy + $tables[]['field']['composition'] = "varchar(255) DEFAULT '' NOT NULL"; + $tables[]['field']['composition_lock'] = 'tinyint(1) DEFAULT 0 NOT NULL'; + $tables['spip_rubriques']['field']['composition_branche_lock'] = 'tinyint(1) DEFAULT 0 NOT NULL'; + + return $tables; +} + + +/** + * Fonction vide pour le pipeline homonyme + */ +function compositions_autoriser() { +} + +/** + * Autorisation de modifier la composition + * + * @param string $faire + * @param string $type + * @param int $id + * @param array $qui + * @param array $opt + * @return bool + */ +function autoriser_styliser_dist($faire, $type = '', $id = 0, $qui = null, $opt = null) { + include_spip('compositions_fonctions'); + if (!autoriser('modifier', $type, $id, $qui, $opt)) { + return false; + } + if (compositions_verrouiller($type, $id) and !autoriser('webmestre')) { + return false; + } + return true; +} + + +/** + * Pipeline styliser pour definir le fond d'un objet en fonction de sa composition + * + * @param array $flux + * @return array + */ +function compositions_styliser($flux) { + // en contexte Z, c'est Z ou Z-core qui stylise (on ne n'en occupe donc pas ici) + if (!defined('_DIR_PLUGIN_Z') and !defined('_DIR_PLUGIN_ZCORE')) { + include_spip('compositions_fonctions'); + if (compositions_styliser_auto()) { + $type = $flux['args']['fond']; // on fait l'approximation fond=type + // si le type n'est pas l'objet d'une composition, ne rien faire + if (in_array($type, compositions_types())) { + $contexte = $flux['args']['contexte'] ?? $GLOBALS['contexte']; + $serveur = $flux['args']['connect']; + + $ext = $flux['args']['ext']; + $_id_table = id_table_objet($type); + + if ($id = $contexte[$_id_table] and $composition = compositions_determiner($type, $id, $serveur)) { + if ($fond = compositions_selectionner($composition, $type, '', $ext, true, '')) { + $flux['data'] = substr($fond, 0, - strlen(".$ext")); + } + } + } + } + } + return $flux; +} + +/** + * Affichage du formulaire de selection de la composition + * + * @param array $flux + * @return array + */ +function compositions_affiche_milieu($flux) { + $e = trouver_objet_exec($flux['args']['exec']); + include_spip('compositions_fonctions'); + $objets = compositions_objets_actives(); + if ( + $e + and in_array($e['type'], $objets) + and $e['edition'] === false + ) { + $type = $e['type']; + if ($id = $flux['args'][$e['id_table_objet']]) { + $config = (isset($GLOBALS['meta']['compositions']) ? unserialize($GLOBALS['meta']['compositions']) : []); + $aut = autoriser('styliser', $type, $id); + if ( + (!isset($config['masquer_formulaire']) or $config['masquer_formulaire'] != 'oui' or $aut) + and ( + ($c = compositions_lister_disponibles($type) and is_array(reset($c))) + or ($type == 'rubrique' and (!isset($config['tout_verrouiller']) or $config['tout_verrouiller'] != 'oui')) + ) + ) { + $texte = recuperer_fond( + 'prive/editer/compositions', + ['type' => $type, 'id' => $id] + ); + + if (($p = strpos($flux['data'], '<!--affiche_milieu-->')) !== false) { + $flux['data'] = substr_replace($flux['data'], $texte, $p, 0); + } else { + $flux['data'] .= $texte; + } + } + } + } + + return $flux; +} + +/** + * Le pipeline compositions_declarer_heritage permet de declarer les heritages + * sous la forme : + * $heritages['objet'] = 'parent'; + * ce qui permet ensuite de faire dans le fichier parent-ma_compo.xml + * <branche type="objet" composition="une_compo" /> + * + * A partir de compositions 3.3.0 cette declaration est obligatoire. + * Les objets "standards" de SPIP sont declares ici. (a deplacer dans leurs plugins respectifs ?) + */ +function compositions_compositions_declarer_heritage($heritages) { + $heritages['mot'] = 'groupe_mots'; + $heritages['rubrique'] = 'rubrique'; + $heritages['article'] = 'rubrique'; + $heritages['breve'] = 'rubrique'; + $heritages['site'] = 'rubrique'; + return $heritages; +} + +/** + * Insertion dans le pipeline pre_edition (SPIP) + * + * Lors de la création d'une traduction d'objet, récupérer les infos de composition + * + * @param array $flux + * @return array + */ +function compositions_pre_edition($flux) { + if ($flux['args']['action'] == 'completer_traduction') { + $champs = ['composition', 'composition_lock']; + if ($flux['args']['type'] == 'rubrique') { + $champs[] = 'composition_branche_lock'; + } + /** + * S'assurer que les champs sont bien là pour éviter les erreurs SQL + */ + $trouver_table = charger_fonction('trouver_table', 'base'); + $desc = $trouver_table(table_objet_sql($flux['args']['type'])); + foreach ($champs as $champ) { + if (empty($desc['field'][$champ])) { + unset($champs[$champ]); + } + } + if (count($champs) > 0) { + $_id_table = id_table_objet($flux['args']['type']); + $id_trad = sql_getfetsel('id_trad', $flux['args']['table'], $_id_table . '=' . intval($flux['args']['id_objet'])); + $set = sql_fetsel($champs, $flux['args']['table'], $_id_table . '=' . intval($id_trad)); + $flux['data'] = array_merge($flux['data'], $set); + } + } + return $flux; +} diff --git a/design_system_dependences/compositions/formulaires/configurer_compositions.html b/design_system_dependences/compositions/formulaires/configurer_compositions.html new file mode 100644 index 0000000000000000000000000000000000000000..ff09c1ecf52d3df406b0e41792e6c949834d90d8 --- /dev/null +++ b/design_system_dependences/compositions/formulaires/configurer_compositions.html @@ -0,0 +1,49 @@ +<div class='formulaire_spip formulaire_configurer formulaire_configurer_forums_contenu' id='formulaire_configurer_forums_contenu'> +<h3 class='titrem'><:compositions:compositions:></h3> + +[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>] +[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] + + <form method="post" action="#SELF"><div> + #ACTION_FORMULAIRE + <div class="editer-groupe"> + #SET{name,objets}#SET{erreurs,#ENV**{erreurs/#GET{name}}} + <div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"> + <label><:compositions:label_activer_composition_objets:></label>[ + <span class='erreur_message'>(#GET{erreurs})</span> + ] + #INCLURE{fond=formulaires/inc-choisir-objets,name=#GET{name},selected=#ENV**{#GET{name},#LISTE{spip_articles,spip_rubriques}}} + </div> + + <div class='editer configurer_chemin_compositions'> + <label for="chemin_compositions"><:compositions:label_chemin_compositions:></label> + [(#PLUGIN{z}|ou{#PLUGIN{zcore}}|non)<div class='explication'><:compositions:label_chemin_compositions_details:></div>] + <input type="text" name="chemin_compositions" value="[(#REM|compositions_chemin|entites_html)]" id="chemin_compositions" class="text" [(#PLUGIN{z}|ou{#PLUGIN{zcore}}|oui)disabled="true"] /> + </div> + [(#PLUGIN{z}|ou{#PLUGIN{zcore}}|non)<div class='editer configurer_styliser_auto'> + <label><:compositions:label_styliser:></label> + <div class="choix"> + <input type="checkbox" name="styliser_auto" [checked="(#ENV{styliser_auto}|=={non}|?{checked})"] id="styliser_auto" value='non' /> + <label for="styliser_auto"><:compositions:label_styliser_auto:></label> + </div> + </div> + ] + <div class='editer configurer_masquer_formulaire'> + <label><:compositions:label_masquer_formulaire:></label> + <div class="choix"> + <input type="checkbox" name="masquer_formulaire" [checked="(#ENV{masquer_formulaire}|=={oui}|?{checked})"] id="masquer_formulaire" value='oui' /> + <label for="masquer_formulaire"><:compositions:label_masquer_formulaire_composition:></label> + </div> + </div> + <div class='editer configurer_tout_verrouiller'> + <label><:compositions:label_tout_verrouiller:></label> + <div class="choix"> + <input type="checkbox" name="tout_verrouiller" [checked="(#ENV{tout_verrouiller}|=={oui}|?{checked})"] id="tout_verrouiller" value='oui' /> + <label for="tout_verrouiller"><:compositions:label_verrouiller_toutes_compositions:></label> + </div> + </div> + </div> + <p class='boutons'><input class='submit' type="submit" name="_cfg_ok" value="<:bouton_enregistrer:>" /></p> + </div></form> + +</div> diff --git a/design_system_dependences/compositions/formulaires/configurer_compositions_fonctions.php b/design_system_dependences/compositions/formulaires/configurer_compositions_fonctions.php new file mode 100644 index 0000000000000000000000000000000000000000..f2dce3cf832e9ae01170d298ec467da0714c7950 --- /dev/null +++ b/design_system_dependences/compositions/formulaires/configurer_compositions_fonctions.php @@ -0,0 +1,15 @@ +<?php + +/* + * Plugin Compositions + * (c) 2007-2009 Cedric Morin + * Distribue sous licence GPL + * + */ + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +include_spip('compositions_administrations'); +compositions_check_upgrade(); diff --git a/design_system_dependences/compositions/formulaires/editer_composition_objet.html b/design_system_dependences/compositions/formulaires/editer_composition_objet.html new file mode 100644 index 0000000000000000000000000000000000000000..17b8c7a0ae1c8779dc006a5c825b3f96c60197ca --- /dev/null +++ b/design_system_dependences/compositions/formulaires/editer_composition_objet.html @@ -0,0 +1,103 @@ +<div class="formulaire_spip formulaire_#FORM formulaire_#FORM-#ENV{objet}-#ENV{id,nouveau}"> + [<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 method='post' action='#ENV{action}'><div> + [(#REM) declarer les hidden qui declencheront le service du formulaire + parametre : url d'action ] + #ACTION_FORMULAIRE{#ENV{action}} + ] + <h4[ + style="background-image: url((#ENV{_compositions/#ENV{composition}/icon}|image_reduire{24,24}|extraire_attribut{src}))"][ + title="(#ENV{_compositions/#ENV{composition}/description}|attribut_html)"]> + <:compositions:composition_utilisee:> + <span class="composition_actuelle">[(#ENV{composition}|oui)[(#ENV{_compositions/#ENV{composition}/nom}|supprimer_numero|sinon{#ENV{composition}})] + ][(#ENV{composition}|non) + [(#ENV{composition_heritee}|oui) + [(#ENV{composition_heritee}|=={'-'}|oui)<:compositions:composition_defaut:>] + [(#ENV{composition_heritee}|!={'-'}|oui)[(#ENV{_compositions}|table_valeur{''}|table_valeur{nom}|supprimer_numero|sinon{#ENV{composition_heritee}})]] + <span class="precision">(<:compositions:composition_heritee:>)</span> + ] + [(#ENV{composition_heritee}|non)<:compositions:composition_defaut:>] + ][(#ENV{composition_verrouillee}|oui) <img width="16" height="16" src="#CHEMIN_IMAGE{cadenas-16.png}" alt="" />] + </span> + </h4> + [(#ENV{editable}) + <span class="toggle_box_link" style="display:none;"><a href="#" + class="btn btn_secondaire btn_mini" + onclick="var f=jQuery(this).parents('form').eq(0);f.find('p').show('fast');f.find('ul').show('fast');f.find('.toggle_box_link').hide('fast');return false;" + ><:bouton_changer:></a></span> + ] + <div class="detail"> + [(#ENV{composition_verrouillee}|oui)<p><:compositions:composition_verrouillee:></p>] + <B_heritages> + <p><:compositions:heritages:> + <BOUCLE_heritages(DATA){source tableau, #ENV{_compositions/#ENV{composition}/branche}}{', '}>#CLE (#VALEUR)</BOUCLE_heritages> + .</p> + </B_heritages> + </div> + + [(#ENV{editable}) + <ul class="editer-groupe"> + #SET{fl,compositions} + #SET{name,composition}#SET{erreurs,#ENV**{erreurs/#GET{name}}}#SET{obli,''} + [<li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"> + <label>[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label> + [<span class='erreur_message'>(#GET{erreurs})</span>] + (#INCLURE{fond=formulaires/inc-selecteur_composition}{name=#GET{name}}{id=#GET{name}}{id_rubrique}{selected=#ENV{#GET{name}}}{_compositions}{composition_heritee}) + </li>] + + #SET{lock,''} + [(#AUTORISER{webmestre}|et{#ENV{verrou_branche}|non}|et{#CONFIG{compositions/tout_verrouiller}|non}|oui) + #SET{name,composition_lock}#SET{erreurs,#ENV**{erreurs/#GET{name}}}#SET{obli,''} + <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"> + [<span class='erreur_message'>(#GET{erreurs})</span>] + <label><:compositions:label_composition_explication:></label> + [(#ENV{_compositions}|is_array|oui) + <div class="choix"> + <input type="checkbox" class="checkbox" name="#GET{name}" value="1" id="#GET{name}"[ (#ENV{#GET{name}}|oui)checked="checked"] /> + <label for="#GET{name}">[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label> + </div>] + [(#ENV{_compositions}|is_array|non)<input type="hidden" name="composition_lock" id="composition_lock" value="#ENV{composition_lock}" />] + [(#ENV{objet}|=={rubrique}|oui) + #SET{name,composition_branche_lock}#SET{erreurs,#ENV**{erreurs/#GET{name}}}#SET{obli,''} + [<span class='erreur_message'>(#GET{erreurs})</span>] + <div class="choix"> + <input type="checkbox" class="checkbox" name="#GET{name}" value="1" id="#GET{name}"[ (#ENV{#GET{name}}|oui)checked="checked"] /> + <label for="#GET{name}">[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label> + </div>] + </li> + #SET{lock,'oui'} + ] + [(#ENV{verrou_branche}|oui) + <li class="editer editer_branche_verrouillee"> + <label><:compositions:label_information:></label> + <:compositions:label_branche_verrouillee:> + </li>] + [(#CONFIG{compositions/tout_verrouiller}|oui) + <li class="editer editer_toutes_verouillees"> + <label><:compositions:label_information:></label> + <:compositions:label_toutes_verrouilles:> + </li>] + </ul> + [(#GET{lock}|non) + <input type="hidden" name="composition_lock" id="composition_lock" value="#ENV{composition_lock}" /> + [(#ENV{objet}|=={rubrique}|oui) + <input type="hidden" name="composition_branche_lock" id="composition_branche_lock" value="#ENV{composition_branche_lock}" />]] + + [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ] + <!--extra--> + <p class='boutons'> + <span class='image_loading'> </span> + <input type='submit' class='submit' name='annuler' value='<:bouton_annuler:>' /> + <input type='submit' class='submit' name='changer' value='<:bouton_changer:>' /> + </p> + </div></form>] +</div> +<script type="text/javascript">// <![CDATA[ + $(document).ready(function(){ + $(".formulaire_editer_composition_objet .toggle_box_link").show(0); + $(".formulaire_editer_composition_objet p").hide(0); + $(".formulaire_editer_composition_objet ul").hide(0); + }); + //]]></script> diff --git a/design_system_dependences/compositions/formulaires/editer_composition_objet.php b/design_system_dependences/compositions/formulaires/editer_composition_objet.php new file mode 100644 index 0000000000000000000000000000000000000000..007e32f7b65795c9980d5f96809bdc704abf2b9b --- /dev/null +++ b/design_system_dependences/compositions/formulaires/editer_composition_objet.php @@ -0,0 +1,108 @@ +<?php + +/** + * Plugin Compositions + * (c) Cedric Morin + * Distribue sous licence GPL + * + */ + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +include_spip('inc/compositions'); +include_spip('inc/autoriser'); +/** + * Chargement des donnees du formulaire + * + * @param string $type + * @param int $id + * @return array + */ +function formulaires_editer_composition_objet_charger($type, $id) { + $valeurs = []; + $table_objet_sql = table_objet_sql($type); + $id_table_objet = id_table_objet($type); + $valeurs[$id_table_objet] = intval($id); + + $valeurs['editable'] = true; + $valeurs['id'] = "$type-$id"; + $valeurs['id_objet'] = $id; + $valeurs['objet'] = $type; + + $row = sql_fetsel('composition,composition_lock', $table_objet_sql, "$id_table_objet=" . intval($id)); + $valeurs['composition'] = $row['composition']; + $valeurs['composition_lock'] = $row['composition_lock']; + + if ($type == 'rubrique') { + $valeurs['composition_branche_lock'] = sql_getfetsel('composition_branche_lock', $table_objet_sql, "$id_table_objet=" . intval($id)); + } + + $valeurs['composition_heritee'] = compositions_heriter($type, $id); + $valeurs['verrou_branche'] = compositions_verrou_branche($type, $id); + $valeurs['verrou_branche'] = false; + $valeurs['composition_verrouillee'] = compositions_verrouiller($type, $id); + + $valeurs['compositions'] = compositions_lister_disponibles($type); + $valeurs['_compositions'] = reset($valeurs['compositions']); // on ne regarde qu'un seul type + if (is_array($valeurs['_compositions']) and !isset($valeurs['_compositions'][''])) { + $valeurs['_compositions'] = array_merge( + ['' => ['nom' => _T('compositions:composition_defaut'), 'description' => '', 'icon' => '', 'configuration' => '']], + $valeurs['_compositions'] + ); + } + + // Si on herite d'une composition + // On modifie le tableau des compositions + if ($valeurs['composition_heritee'] and $valeurs['composition_heritee'] != '-') { + $compo_defaut = $valeurs['_compositions'][$valeurs['composition_heritee']] ?? $valeurs['composition_heritee']; + $compo_vide = $valeurs['_compositions']['']; + unset($valeurs['_compositions'][$valeurs['composition_heritee']]); + unset($valeurs['_compositions']['']); + $valeurs['_compositions'] = array_merge( + ['' => $compo_defaut, '-' => $compo_vide], + $valeurs['_compositions'] + ); + } + + $valeurs['_hidden'] = "<input type='hidden' name='$id_table_objet' value='$id' />"; + + if (!autoriser('styliser', $type, $id)) { + $valeurs['editable'] = false; + } + + return $valeurs; +} + +/** + * Traitement + * + * @param string $type + * @param int $id + * @return array + */ +function formulaires_editer_composition_objet_traiter($type, $id) { + $valeurs = []; + $table_objet_sql = table_objet_sql($type); + $id_table_objet = id_table_objet($type); + $update = []; + + if (!is_null($p = _request('composition'))) { + $update['composition'] = $p; + } + + if (autoriser('webmestre')) { + $update['composition_lock'] = _request('composition_lock') ? 1 : 0; + } + + if (autoriser('webmestre') and $type == 'rubrique') { + $update['composition_branche_lock'] = _request('composition_branche_lock') ? 1 : 0; + } + + sql_updateq($table_objet_sql, $update, "$id_table_objet=" . intval($id)); + + // mettre a jour la liste des types de compo en cache + compositions_cacher(); + return ['message_ok' => '', 'editable' => true]; +} diff --git a/design_system_dependences/compositions/formulaires/inc-selecteur_composition.html b/design_system_dependences/compositions/formulaires/inc-selecteur_composition.html new file mode 100644 index 0000000000000000000000000000000000000000..04bf5ab871c7f5482340f9c5dabb278ff1fba9bc --- /dev/null +++ b/design_system_dependences/compositions/formulaires/inc-selecteur_composition.html @@ -0,0 +1,13 @@ +<BOUCLE_compositions(DATA){source tableau, #ENV{_compositions}}{par nom}> +<div class='choix'> +<input type='radio' class='radio' name='#ENV{name}' id='#ENV{name}-#CLE' value='#CLE'[(#CLE|=={#ENV{selected}}|oui)checked='checked'] /> +<label for='#ENV{name}-#CLE'> + [ [<a href="(#IMAGE_EXEMPLE|balise_img|extraire_attribut{src})" class='mediabox exemple' title="<:compositions:voir_image_exemple|attribut_html:>">] + (#ICON|sinon{#CHEMIN_IMAGE{composition-base-24.png}}|image_reduire{24,24}|inserer_attribut{class,logo}) + [(#IMAGE_EXEMPLE|oui)</a>] + ] + [(#NOM|supprimer_numero)][(#ENV{composition_heritee}|et{#CLE|=={''}}|oui)(<:compositions:composition_heritee:>)] + [<br /><span class='descriptif'>(#DESCRIPTION)</span>] +</label> +</div> +</BOUCLE_compositions> diff --git a/design_system_dependences/compositions/images/composition-cours.png b/design_system_dependences/compositions/images/composition-cours.png new file mode 100644 index 0000000000000000000000000000000000000000..63c3822065a87eda49681736ee66e59c3f735d4d Binary files /dev/null and b/design_system_dependences/compositions/images/composition-cours.png differ diff --git a/design_system_dependences/compositions/images/composition-tableau.png b/design_system_dependences/compositions/images/composition-tableau.png new file mode 100644 index 0000000000000000000000000000000000000000..3479d45b14d475854daca1915c009751d18d57fd Binary files /dev/null and b/design_system_dependences/compositions/images/composition-tableau.png differ diff --git a/design_system_dependences/compositions/images/composition-test.png b/design_system_dependences/compositions/images/composition-test.png new file mode 100644 index 0000000000000000000000000000000000000000..acc14529d828937d9dd9e1419d1833dc9e7c5353 Binary files /dev/null and b/design_system_dependences/compositions/images/composition-test.png differ diff --git a/design_system_dependences/compositions/images/objet-blocs.png b/design_system_dependences/compositions/images/objet-blocs.png new file mode 100644 index 0000000000000000000000000000000000000000..76939671fb270bd8dc24e823bda3dcd0ef563483 Binary files /dev/null and b/design_system_dependences/compositions/images/objet-blocs.png differ diff --git a/design_system_dependences/compositions/images/objet-intro-blocs.png b/design_system_dependences/compositions/images/objet-intro-blocs.png new file mode 100644 index 0000000000000000000000000000000000000000..2f256defb4208322fa5e9ee08cb0a7fb16a25e6f Binary files /dev/null and b/design_system_dependences/compositions/images/objet-intro-blocs.png differ diff --git a/design_system_dependences/compositions/images/objet-liste-contenus-dates.png b/design_system_dependences/compositions/images/objet-liste-contenus-dates.png new file mode 100644 index 0000000000000000000000000000000000000000..17b8a2c0754c3f3d7e65ec9c7968f33a6bdb5f5b Binary files /dev/null and b/design_system_dependences/compositions/images/objet-liste-contenus-dates.png differ diff --git a/design_system_dependences/compositions/images/objet-liste-contenus.png b/design_system_dependences/compositions/images/objet-liste-contenus.png new file mode 100644 index 0000000000000000000000000000000000000000..86f1fa00c05c2e9886495aa9f40cb8433318e91a Binary files /dev/null and b/design_system_dependences/compositions/images/objet-liste-contenus.png differ diff --git a/design_system_dependences/compositions/images/objet-simple.png b/design_system_dependences/compositions/images/objet-simple.png new file mode 100644 index 0000000000000000000000000000000000000000..75e0d0910ea65aeb8263745e1d4b2f9bd88b64ca Binary files /dev/null and b/design_system_dependences/compositions/images/objet-simple.png differ diff --git a/design_system_dependences/compositions/inc/compositions.php b/design_system_dependences/compositions/inc/compositions.php new file mode 100644 index 0000000000000000000000000000000000000000..bdd7112e7b4ad786173b91d76b2f50f65ae88683 --- /dev/null +++ b/design_system_dependences/compositions/inc/compositions.php @@ -0,0 +1,108 @@ +<?php + +/** + * Plugin Compositions + * (c) Cedric Morin + * Distribue sous licence GPL + * + */ + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +include_spip('compositions_fonctions'); + +/** + * Separer le type et le nom de la composition dans un nom de fichier + * + * @param string $nom + * @return array + */ +function compositions_decomposer_nom($nom) { + $reg = ',^([a-z][^-.]*)(' . _COMPOSITIONS_MATCH . ')?$,i'; + if ( + /* recuperer le type et la composition */ + preg_match($reg, $nom, $matches) + /* il y a bien un type */ + and $type = $matches[1] + ) { + $composition = $matches[3] ?? ''; + return [$type, $composition]; + } + return [$nom, '']; +} + +/** + * Charger les informations contenues dans le xml d'une composition + * + * @param string $nom + * @param string $info + * @return array|string + */ +function compositions_charger_infos($nom, $info = '') { + $branches = null; + /* on peut appeller avec le nom du squelette */ + $nom = preg_replace(',[.]html$,i', '', $nom) . '.xml'; + include_spip('inc/xml'); + $composition = []; + if ($xml = spip_xml_load($nom, false)) { + if (isset($xml['composition']) and is_countable($xml['composition']) ? count($xml['composition']) : 0) { + $xml = reset($xml['composition']); + $composition['nom'] = _T_ou_typo(spip_xml_aplatit($xml['nom'])); + $composition['description'] = isset($xml['description']) ? _T_ou_typo(spip_xml_aplatit($xml['description'])) : ''; + if (isset($xml['icon'])) { + $icon = chemin_image(reset($xml['icon'])); + if (!$icon) { + $icon = find_in_path(reset($xml['icon'])); + } + } else { + $icon = ''; + } + $composition['image_exemple'] = isset($xml['image_exemple']) ? find_in_path(reset($xml['image_exemple'])) : ''; + $composition['icon'] = $icon; + $composition['class'] = isset($xml['class']) ? trim(reset($xml['class'])) : ''; + $composition['configuration'] = isset($xml['configuration']) ? spip_xml_aplatit($xml['configuration']) : ''; + $composition['branche'] = []; + if (spip_xml_match_nodes(',^branche,', $xml, $branches)) { + foreach (array_keys($branches) as $branche) { + [$balise, $attributs] = spip_xml_decompose_tag($branche); + $composition['branche'][$attributs['type']] = $attributs['composition']; + } + } + } + } + if (!$info) { + return $composition; + } else { + return $composition[$info] ?? ''; + } +} + + +/** + * Ecrire dans une meta la liste des objets qui sont sous le regime des + * compositions + * La fonction est appelee + * - lors de la stylisation si la meta n'est pas encore definie + * - a chaque fois qu'on selectionne un composition dans l'espace prive + * - si var_mode=recalcul + * On est sur ainsi que toute nouvelle composition selectionnee est dedans + * Si une composition est retiree du file system sans etre deselectionnee + * l'erreur sera evitee par la verification d'existence au moment de styliser + * + * @param array $liste + */ +function compositions_cacher($liste = null) { + /* lister les compositions vraiment utilisees */ + if (!is_array($liste)) { + include_spip('compositions_fonctions'); + $liste = compositions_lister_disponibles('', false); + } + /* lister les objets dont on a active la composition dans la configuration */ + $config = compositions_objets_actives(); + + $liste = array_intersect($config, array_keys($liste)); + ecrire_meta('compositions_types', implode(',', $liste)); + spip_log('compositions: maj des compositions_types [' . $GLOBALS['meta']['compositions_types'] . ']'); +} diff --git a/design_system_dependences/compositions/lang/compositions.xml b/design_system_dependences/compositions/lang/compositions.xml new file mode 100644 index 0000000000000000000000000000000000000000..1fb316f71bc3bbd1fb4fa4155188cbf6f07943fd --- /dev/null +++ b/design_system_dependences/compositions/lang/compositions.xml @@ -0,0 +1,36 @@ +<traduction + module="compositions" + id="compositions--compositions-3ace6" + gestionnaire="salvatore" + url="https://trad.spip.net" + source="https://git.spip.net/spip-contrib-extensions/compositions.git" + reference="fr"> + <langue code="de" url="https://trad.spip.net/tradlang_module/compositions?lang_cible=de" total="34" traduits="30" relire="0" modifs="0" nouveaux="4" pourcent="88.24"> + <traducteur nom="Torsten Willmann" lien="https://trad.spip.net/auteur/torsten-willmann" /> + </langue> + <langue code="en" url="https://trad.spip.net/tradlang_module/compositions?lang_cible=en" total="34" traduits="34" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Benitron" lien="https://trad.spip.net/auteur/benitron" /> + <traducteur nom="Hanjo" lien="https://trad.spip.net/auteur/hanjo" /> + <traducteur nom="jack31" lien="https://trad.spip.net/auteur/jack31" /> + <traducteur nom="kent1" lien="https://trad.spip.net/auteur/kent1" /> + <traducteur nom="tcharlss" lien="https://trad.spip.net/auteur/drbouvierleduc" /> + </langue> + <langue code="es" url="https://trad.spip.net/tradlang_module/compositions?lang_cible=es" total="34" traduits="29" relire="0" modifs="0" nouveaux="5" pourcent="85.29"> + <traducteur nom="alf" lien="https://trad.spip.net/auteur/alf" /> + <traducteur nom="Raquel S. Bujaldón" lien="https://trad.spip.net/auteur/raquel-s-bujaldon" /> + </langue> + <langue code="fr" url="https://trad.spip.net/tradlang_module/compositions?lang_cible=fr" total="34" traduits="34" relire="0" modifs="0" nouveaux="0" pourcent="100.00" /> + <langue code="nl" url="https://trad.spip.net/tradlang_module/compositions?lang_cible=nl" total="34" traduits="34" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Hanjo" lien="https://trad.spip.net/auteur/hanjo" /> + <traducteur nom="mpossoz" lien="https://trad.spip.net/auteur/mpossoz" /> + </langue> + <langue code="ru" url="https://trad.spip.net/tradlang_module/compositions?lang_cible=ru" total="34" traduits="34" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Serge Markitanenko" lien="https://trad.spip.net/auteur/serge-markitanenko" /> + </langue> + <langue code="sk" url="https://trad.spip.net/tradlang_module/compositions?lang_cible=sk" total="34" traduits="28" relire="0" modifs="0" nouveaux="6" pourcent="82.35"> + <traducteur nom="jaro" lien="https://trad.spip.net/auteur/jaro" /> + </langue> + <langue code="uk" url="https://trad.spip.net/tradlang_module/compositions?lang_cible=uk" total="34" traduits="34" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Serge Markitanenko" lien="https://trad.spip.net/auteur/serge-markitanenko" /> + </langue> +</traduction> diff --git a/design_system_dependences/compositions/lang/compositions_de.php b/design_system_dependences/compositions/lang/compositions_de.php new file mode 100644 index 0000000000000000000000000000000000000000..d1c7ce20021f961aecea7ba679a7f4e4f33da449 --- /dev/null +++ b/design_system_dependences/compositions/lang/compositions_de.php @@ -0,0 +1,55 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/compositions?lang_cible=de +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // C + 'composition' => 'Komposition', + 'composition_defaut' => 'Standardkomposition', + 'composition_heritee' => 'vererbt', + 'composition_utilisee' => 'Komposition:', + 'composition_verrouillee' => 'Diese Komposition ist durch den Webmaster gesperrt.', + 'compositions' => 'Kompositionen', + + // D + 'des_utilisations' => '@nb@ Nutzungen', + + // H + 'heritages' => 'Diese Komposition bestimmt die Standardkomposition für folgende Objekte:', + + // I + 'info_aucune_composition' => 'Keine Komposition', + + // L + 'label_activer_composition_objets' => 'Komposition für die Objekte verwenden', + 'label_branche_verrouillee' => 'Die Kompositionen dieses Zweigs sind gesperrt.', + 'label_chemin_compositions' => 'Kompositionsverzeichnis', + 'label_chemin_compositions_details' => 'Geben Sie den Pfad an unter dem die Skelette für die Kompostionen gefunden werden.', + 'label_composition' => 'Komposition', + 'label_composition_branche_lock' => 'Komposition für alle Objekte im Zweig festlegen.', + 'label_composition_explication' => 'Sie sind Webmaster, sie können', + 'label_composition_lock' => 'Komposition sperren', + 'label_composition_rubrique' => 'Kompositionen für Rubriken', + 'label_heritages' => 'Vererbungen', + 'label_information' => 'Information', + 'label_masquer_formulaire' => 'Formular verbergen', + 'label_masquer_formulaire_composition' => 'Das Formular zur Auswahl einer Komposition verbergen, wenn der Nutzer keine Berechtigung zum Ändern hat.', + 'label_pas_de_composition' => 'Keine Komposition', + 'label_styliser' => 'Auswahl der Skelette', + 'label_styliser_auto' => 'Skelette nicht automatisch auswählen. Die Auswahl wird von meinen Skeletten unterstützt.', + 'label_tout_verrouiller' => 'Alle sperren', + 'label_toutes_verrouilles' => 'Alle Kompositionen sind gesperrt.', + 'label_verrouiller_toutes_compositions' => 'Alle Kompostionen sperren (nur Webmaster können Sie verändern).', + + // U + 'une_utilisation' => '1 Nutzung', + + // V + 'voir_image_exemple' => 'Beispielbild anzeigen' +); diff --git a/design_system_dependences/compositions/lang/compositions_en.php b/design_system_dependences/compositions/lang/compositions_en.php new file mode 100644 index 0000000000000000000000000000000000000000..bcb1926721f0ea6108373f1b5606e4a7a65a80ce --- /dev/null +++ b/design_system_dependences/compositions/lang/compositions_en.php @@ -0,0 +1,63 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/compositions?lang_cible=en +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // A + 'ajouter_compositions' => 'Add compositions', + + // C + 'composition' => 'Composition', + 'composition_defaut' => 'default composition', + 'composition_heritee' => 'inherited', + 'composition_utilisee' => 'Composition:', + 'composition_verrouillee' => 'This composition is locked by the webmaster', + 'compositions' => 'Compositions', + + // D + 'des_utilisations' => '@nb@ uses', + + // H + 'heritages' => 'This composition defines default compositions for the following objects:', + + // I + 'info_1_composition' => '1 composition', + 'info_aucune_composition' => 'No composition', + 'info_nb_compositions' => '@nb@ compositions', + + // L + 'label_activer_composition_objets' => 'Use compositions on objects', + 'label_branche_verrouillee' => 'The compositions of this branch are locked.', + 'label_chemin_compositions' => 'Compositions folder', + 'label_chemin_compositions_details' => 'Specify the path where the skeletons will be found for composition.', + 'label_composition' => 'Type of composition', + 'label_composition_branche_lock' => 'Lock the composition of all objects in the branch', + 'label_composition_explication' => 'You are Webmaster, you can', + 'label_composition_lock' => 'Lock the composition', + 'label_composition_rubrique' => 'Sections composition', + 'label_heritages' => 'Heritages', + 'label_information' => 'Information', + 'label_masquer_formulaire' => 'Hide the form', + 'label_masquer_formulaire_composition' => 'Hide the selection form of a composition when the user does not have the rights to edit it.', + 'label_pas_de_composition' => 'No composition', + 'label_styliser' => 'Selection of skeletons', + 'label_styliser_auto' => 'Do not use automatic selection. The selection is supported by my skeletons.', + 'label_tout_verrouiller' => 'Lock all', + 'label_toutes_verrouilles' => 'All compositions are locked.', + 'label_verrouiller_toutes_compositions' => 'Lock all compositions (only the webmasters can change them).', + + // M + 'message_info_ajouter_compositions' => 'To create your own compositions, see the documentation : @url_doc@.', + + // U + 'une_utilisation' => '1 use', + + // V + 'voir_image_exemple' => 'See an image sample' +); diff --git a/design_system_dependences/compositions/lang/compositions_es.php b/design_system_dependences/compositions/lang/compositions_es.php new file mode 100644 index 0000000000000000000000000000000000000000..c443a8b3b616eb6295d32da63be49815c894a928 --- /dev/null +++ b/design_system_dependences/compositions/lang/compositions_es.php @@ -0,0 +1,52 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/compositions?lang_cible=es +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // C + 'composition' => 'Composición', + 'composition_defaut' => 'composición por defecto', + 'composition_heritee' => 'heredada', + 'composition_utilisee' => 'Composición:', + 'composition_verrouillee' => 'Esta composición esta cerrada por el administrador.', + 'compositions' => 'Composiciones', + + // D + 'des_utilisations' => '@nb@ utilizaciones', + + // H + 'heritages' => 'Esta composición define las composiciones por defecto para los siguientes objetos:', + + // I + 'info_aucune_composition' => ' Ninguna composición', + + // L + 'label_activer_composition_objets' => 'Utilizar las composiciones en los objetos', + 'label_branche_verrouillee' => 'Las composiciones de esta rama están bloqueadas.', + 'label_chemin_compositions' => 'Carpeta de las composiciones', + 'label_chemin_compositions_details' => 'Indique el camino en el que buscar los esqueletos de composición.', + 'label_composition' => 'Composición', + 'label_composition_branche_lock' => 'Bloquear la composición de todos los objetos de la rama', + 'label_composition_explication' => 'Usted es administrador, puede', + 'label_composition_lock' => 'Bloquear la composición', + 'label_composition_rubrique' => 'Composición de las secciones', + 'label_heritages' => 'Herencias', + 'label_information' => 'Información', + 'label_masquer_formulaire' => 'Ocultar el formulario', + 'label_masquer_formulaire_composition' => 'Ocultar el formulario de elección de una composición cuando el usuario no tenga los derechos para modificarla. ', + 'label_pas_de_composition' => ' Ninguna composición', + 'label_styliser' => 'Selección de los esqueletos', + 'label_styliser_auto' => 'No utilizar la selección automatica. La selección está implementada por mis esqueletos.', + 'label_tout_verrouiller' => 'Bloquear todo', + 'label_toutes_verrouilles' => 'Todas las composiciones están bloqueadas.', + 'label_verrouiller_toutes_compositions' => 'Bloquear todas las composiciones (sólo los administradores podrán modificarlas).', + + // U + 'une_utilisation' => '1 utilización' +); diff --git a/design_system_dependences/compositions/lang/compositions_fr.php b/design_system_dependences/compositions/lang/compositions_fr.php new file mode 100644 index 0000000000000000000000000000000000000000..73ade012597ba1de001e46a49327b8e297996d9f --- /dev/null +++ b/design_system_dependences/compositions/lang/compositions_fr.php @@ -0,0 +1,61 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// Fichier source, a modifier dans https://git.spip.net/spip-contrib-extensions/compositions.git +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // A + 'ajouter_compositions' => 'Ajouter des compositions', + + // C + 'composition' => 'Composition', + 'composition_defaut' => 'composition par défaut', + 'composition_heritee' => 'héritée', + 'composition_utilisee' => 'Composition :', + 'composition_verrouillee' => 'Cette composition est verrouillé par le webmestre.', + 'compositions' => 'Compositions', + + // D + 'des_utilisations' => '@nb@ utilisations', + + // H + 'heritages' => 'Cette composition définit des compositions par défaut pour les objets suivants :', + + // I + 'info_1_composition' => '1 composition', + 'info_aucune_composition' => 'Aucune composition', + 'info_nb_compositions' => '@nb@ compositions', + + // L + 'label_activer_composition_objets' => 'Utiliser les compositions sur les objets', + 'label_branche_verrouillee' => 'Les compositions de cette branche sont verrouillées.', + 'label_chemin_compositions' => 'Dossier des compositions', + 'label_chemin_compositions_details' => 'Indiquez le chemin dans lequel seront recherchés les squelettes de composition.', + 'label_composition' => 'Composition', + 'label_composition_branche_lock' => 'Verrouiller la composition de tous les objets de la branche', + 'label_composition_explication' => 'Vous êtes Webmestre, vous pouvez', + 'label_composition_lock' => 'Verrouiller la composition', + 'label_composition_rubrique' => 'Composition des rubriques', + 'label_heritages' => 'Héritages', + 'label_information' => 'Information', + 'label_masquer_formulaire' => 'Masquer le formulaire', + 'label_masquer_formulaire_composition' => 'Masquer le formulaire de choix d’une composition lorsque l’utilisateur n’a pas les droits de la modifier.', + 'label_pas_de_composition' => 'Aucune composition', + 'label_styliser' => 'Sélection des squelettes', + 'label_styliser_auto' => 'Ne pas utiliser la sélection automatique. La sélection est prise en charge par mes squelettes.', + 'label_tout_verrouiller' => 'Tout verrouiller', + 'label_toutes_verrouilles' => 'Toutes les compositions sont verrouillées.', + 'label_verrouiller_toutes_compositions' => 'Verrouiller toutes les compositions (seuls les webmestres pourront les modifier).', + + // M + 'message_info_ajouter_compositions' => 'Pour créer vos propres compositions, consultez la documentation : @url_doc@.', + + // U + 'une_utilisation' => '1 utilisation', + + // V + 'voir_image_exemple' => 'Voir une image d’exemple' +); diff --git a/design_system_dependences/compositions/lang/compositions_nl.php b/design_system_dependences/compositions/lang/compositions_nl.php new file mode 100644 index 0000000000000000000000000000000000000000..9315009206fb4cc8ac4bd11499f4100885efd219 --- /dev/null +++ b/design_system_dependences/compositions/lang/compositions_nl.php @@ -0,0 +1,63 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/compositions?lang_cible=nl +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // A + 'ajouter_compositions' => 'Composities toevoegen', + + // C + 'composition' => 'Compositie', + 'composition_defaut' => 'standaard compositie', + 'composition_heritee' => 'geërfd', + 'composition_utilisee' => 'Compositie:', + 'composition_verrouillee' => 'Deze compositie is door de webmaster vergrendeld.', + 'compositions' => 'Composities', + + // D + 'des_utilisations' => '@nb@ toepassingen', + + // H + 'heritages' => 'Deze compositie legt de standaardcompositie vast van de volgende objecten:', + + // I + 'info_1_composition' => '1 compositie', + 'info_aucune_composition' => 'Geen enkele compositie', + 'info_nb_compositions' => '@nb@ composities', + + // L + 'label_activer_composition_objets' => 'Pas de composities toe op de objecten', + 'label_branche_verrouillee' => 'De composities van deze tak zijn vergrendeld.', + 'label_chemin_compositions' => 'Compositiemap', + 'label_chemin_compositions_details' => 'Geef het pad aan waarin de skeletten van de composities moeten worden gezocht.', + 'label_composition' => 'Compositie', + 'label_composition_branche_lock' => 'De compositie van alle objecten van de tak vergrendelen', + 'label_composition_explication' => 'Je bent webmaster. Je mag', + 'label_composition_lock' => 'Vergrendel de compositie', + 'label_composition_rubrique' => 'Compositie van rubrieken', + 'label_heritages' => 'Erfenis', + 'label_information' => 'Informatie', + 'label_masquer_formulaire' => 'Het formulier verbergen', + 'label_masquer_formulaire_composition' => 'Verberg het compositie-keuzemenu wanneer de gebruiker het recht niet heeft ze te veranderen.', + 'label_pas_de_composition' => 'Geen enkele compositie', + 'label_styliser' => 'Keuze van skeletten', + 'label_styliser_auto' => 'Gebruik geen automatische selectie. De selectie wordt door mijn skeletten gedaan.', + 'label_tout_verrouiller' => 'Alles vergrendelen', + 'label_toutes_verrouilles' => 'Alle composities zijn vergrendeld.', + 'label_verrouiller_toutes_compositions' => 'Alle composities vergrendelen (alleen webmasters kunnen ze aanpassen).', + + // M + 'message_info_ajouter_compositions' => 'Om je eigen composities te maken, raadpleeg je de documentatie: @url_doc@.', + + // U + 'une_utilisation' => '1 toepassing', + + // V + 'voir_image_exemple' => 'Een voorbeeldafbeelding bekijken' +); diff --git a/design_system_dependences/compositions/lang/compositions_ru.php b/design_system_dependences/compositions/lang/compositions_ru.php new file mode 100644 index 0000000000000000000000000000000000000000..53fad65fa356d421ce95d1d64cdb4699fe7d0d96 --- /dev/null +++ b/design_system_dependences/compositions/lang/compositions_ru.php @@ -0,0 +1,63 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/compositions?lang_cible=ru +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // A + 'ajouter_compositions' => 'Добавить шаблоны', + + // C + 'composition' => 'Шаблон Ñтраницы', + 'composition_defaut' => 'шаблон по умолчанию', + 'composition_heritee' => 'унаÑледован', + 'composition_utilisee' => 'ИÑпользуетÑÑ:', + 'composition_verrouillee' => 'ВозможноÑть Ñменить шаблон заблокирована вебмаÑтером.', + 'compositions' => 'Шаблоны Ñтраниц', + + // D + 'des_utilisations' => '@nb@ иÑпользуетÑÑ', + + // H + 'heritages' => 'Ðтот шаблон определÑет шаблоны Ñтраниц по умолчанию Ð´Ð»Ñ Ñледующих объектов:', + + // I + 'info_1_composition' => '1 шаблон', + 'info_aucune_composition' => 'Ðет шаблонов', + 'info_nb_compositions' => '@nb@ шаблона', + + // L + 'label_activer_composition_objets' => 'ИÑпользовать выбор шаблонов Ð´Ð»Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð²', + 'label_branche_verrouillee' => 'Выбор шаблонов в Ñтой ветке заблокирован вебмаÑтером.', + 'label_chemin_compositions' => 'Папка Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°Ð¼Ð¸', + 'label_chemin_compositions_details' => 'Укажите папку в которой находÑÑ‚ÑÑ Ñ„Ð°Ð¹Ð»Ñ‹ шаблонов.', + 'label_composition' => 'ДоÑтупные шаблоны', + 'label_composition_branche_lock' => 'Заблокировать возможноÑть менÑть шаблон Ð´Ð»Ñ Ð²Ñех объектов в Ñтой ветке', + 'label_composition_explication' => 'У Ð²Ð°Ñ Ð¿Ñ€Ð°Ð²Ð° вебмаÑтера, вы можете', + 'label_composition_lock' => 'Заблокировать шаблон', + 'label_composition_rubrique' => 'Шаблон Ð´Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð¾Ð²', + 'label_heritages' => 'ÐаÑледование', + 'label_information' => 'ИнформациÑ', + 'label_masquer_formulaire' => 'СпрÑтать форму', + 'label_masquer_formulaire_composition' => 'Скрывать форму выбора шаблона Ñтраницы Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹, у которых нет прав их менÑть.', + 'label_pas_de_composition' => 'Ðет шаблонов', + 'label_styliser' => 'Выбор шаблонов Ñтраниц', + 'label_styliser_auto' => 'Ðе иÑпользовать автоматичеÑкий выбор. Выбор поддерживаетÑÑ Ð¼Ð¾Ð¸Ð¼Ð¸ шаблонами.', + 'label_tout_verrouiller' => 'Заблокировать вÑе шабоны', + 'label_toutes_verrouilles' => 'Ð’Ñе шаблоны заблокированы.', + 'label_verrouiller_toutes_compositions' => 'Заблокировать вÑе шаблоны(только вебмаÑтер Ñайта может их менÑть).', + + // M + 'message_info_ajouter_compositions' => 'Ð”Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¿Ð¾ Ñозданию шаблонов : @url_doc@.', + + // U + 'une_utilisation' => '1 иÑпользование', + + // V + 'voir_image_exemple' => 'ПоÑмотреть пример картинки' +); diff --git a/design_system_dependences/compositions/lang/compositions_sk.php b/design_system_dependences/compositions/lang/compositions_sk.php new file mode 100644 index 0000000000000000000000000000000000000000..e9db8ad8dbcbe5c64d76f47844138d233c738ccd --- /dev/null +++ b/design_system_dependences/compositions/lang/compositions_sk.php @@ -0,0 +1,51 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/compositions?lang_cible=sk +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // C + 'composition' => 'Rozmiestnenie', + 'composition_defaut' => 'predvolené rozmiestnenie', + 'composition_heritee' => 'zdedené', + 'composition_utilisee' => 'Rozmiestnenie:', + 'composition_verrouillee' => 'Toto rozmiestnenie webmaster zamkol.', + 'compositions' => 'Rozmiestnenia', + + // D + 'des_utilisations' => '@nb@ použitÃ', + + // H + 'heritages' => 'Toto rozmiestnenie je predvolených rozmiestnenÃm pre tieto objekty:', + + // I + 'info_aucune_composition' => 'Žiadne rozmiestnenie', + + // L + 'label_activer_composition_objets' => 'Rozmiestnenia použÃvaÅ¥ na objekty', + 'label_branche_verrouillee' => 'Rozmiestnenia tejto vetvy sú zamknuté.', + 'label_chemin_compositions' => 'PrieÄinok s rozmiestneniami', + 'label_chemin_compositions_details' => 'Zadajte umiestnenie, v ktorom sa budú hľadaÅ¥ Å¡ablóny rozmiestnenia.', + 'label_composition' => 'Rozmiestnenie', + 'label_composition_branche_lock' => 'Zamknúť rozmiestnenie vÅ¡etkých objektov vetvy', + 'label_composition_explication' => 'Vy ste webmaster, môžete', + 'label_composition_lock' => 'Zamknúť rozmiestnenie', + 'label_composition_rubrique' => 'Rozmiestnenie pre rubriky', + 'label_information' => 'Informácie', + 'label_masquer_formulaire' => 'SchovaÅ¥ formulár', + 'label_masquer_formulaire_composition' => 'SchovaÅ¥ formulár s výberom rozmiestnenia, ak ho použÃvateľ nemá právo meniÅ¥.', + 'label_pas_de_composition' => 'Žiadne rozmiestnenie', + 'label_styliser' => 'Výber Å¡ablón', + 'label_styliser_auto' => 'NepoužÃvajte automatický výber. Výber podporujú moje Å¡ablóny.', + 'label_tout_verrouiller' => 'Zamknúť vÅ¡etky', + 'label_toutes_verrouilles' => 'VÅ¡etky rozmiestnenia sú zamknuté.', + 'label_verrouiller_toutes_compositions' => 'Zamknúť vÅ¡etky rozmiestnenia (môže to zmeniÅ¥ len webmaster).', + + // U + 'une_utilisation' => '1 použitie' +); diff --git a/design_system_dependences/compositions/lang/compositions_uk.php b/design_system_dependences/compositions/lang/compositions_uk.php new file mode 100644 index 0000000000000000000000000000000000000000..5645d3af347c0f79681449932dd492696df6a6e3 --- /dev/null +++ b/design_system_dependences/compositions/lang/compositions_uk.php @@ -0,0 +1,63 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/compositions?lang_cible=uk +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // A + 'ajouter_compositions' => 'Додати шаблони', + + // C + 'composition' => 'Шаблон', + 'composition_defaut' => 'шаблон за замовчуваннÑм', + 'composition_heritee' => 'уÑпадковано', + 'composition_utilisee' => 'ВикориÑтовуєтьÑÑ:', + 'composition_verrouillee' => 'ВебмайÑтер заборонив змінювати цей шаблон', + 'compositions' => 'Шаблони', + + // D + 'des_utilisations' => '@nb@ заÑтоÑувань', + + // H + 'heritages' => 'ÐаÑлідуваннÑ, вказані у цьому шаблоні:', + + // I + 'info_1_composition' => '1 шаблон', + 'info_aucune_composition' => 'Шаблон відÑутній', + 'info_nb_compositions' => '@nb@ шаблонів', + + // L + 'label_activer_composition_objets' => 'Дозволити викориÑÑ‚Ð°Ð½Ð½Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ–Ð² Ð´Ð»Ñ Ð½Ð°Ñтупних об’єктів', + 'label_branche_verrouillee' => 'У цьому розділі заборонено змінювати шаблони', + 'label_chemin_compositions' => 'Шаблони знаходÑтьÑÑ Ñƒ теці', + 'label_chemin_compositions_details' => 'ШлÑÑ… до теки, де знаходÑтьÑÑ Ñ„Ð°Ð¹Ð»Ð¸ шаблонів', + 'label_composition' => 'Вид шаблону', + 'label_composition_branche_lock' => 'Заборонити змінювати шаблони Ð´Ð»Ñ Ð²ÑÑ–Ñ… об’єктів в цьому розділі', + 'label_composition_explication' => 'Як ВебмайÑтер ви можете', + 'label_composition_lock' => 'Заборонити зміну шаблону', + 'label_composition_rubrique' => 'Шаблони розділів', + 'label_heritages' => 'УÑпадкуваннÑ', + 'label_information' => 'ІнформаціÑ', + 'label_masquer_formulaire' => 'Сховати форму', + 'label_masquer_formulaire_composition' => 'Приховати форму вибору шаблону, Ñкщо кориÑтувач не має права змінювати його', + 'label_pas_de_composition' => 'Ðемає жодного шаблону', + 'label_styliser' => 'Вибір шаблонів', + 'label_styliser_auto' => 'Ðе призначати шаблон автоматично, необхідний шаблон вказаний у файлах.', + 'label_tout_verrouiller' => 'Заборонити зміну вÑÑ–Ñ… шаблонів', + 'label_toutes_verrouilles' => 'Заборонена зміна вÑÑ–Ñ… шаблонів', + 'label_verrouiller_toutes_compositions' => 'Заборонити змінювати вÑÑ– шаблони (тільки вебмайÑтер зможе змінювати Ñ—Ñ…).', + + // M + 'message_info_ajouter_compositions' => 'Перед ÑтвореннÑм влаÑного шаблону - подивітьÑÑ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ñ–ÑŽ: @url_doc@.', + + // U + 'une_utilisation' => '1 заÑтоÑуваннÑ', + + // V + 'voir_image_exemple' => 'ПодивитиÑÑ Ð¿Ñ€Ð¸ÐºÐ»Ð°Ð´ зображеннÑ' +); diff --git a/design_system_dependences/compositions/lang/paquet-compositions.xml b/design_system_dependences/compositions/lang/paquet-compositions.xml new file mode 100644 index 0000000000000000000000000000000000000000..f945ecc6a31f6590e3d7b8b83db35891585eb2f3 --- /dev/null +++ b/design_system_dependences/compositions/lang/paquet-compositions.xml @@ -0,0 +1,27 @@ +<traduction + module="paquet-compositions" + id="paquet-compositions--compositions-3ace6" + gestionnaire="salvatore" + url="https://trad.spip.net" + source="https://git.spip.net/spip-contrib-extensions/compositions.git" + reference="fr"> + <langue code="en" url="https://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=en" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="kent1" lien="https://trad.spip.net/auteur/kent1" /> + </langue> + <langue code="es" url="https://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=es" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Raquel S. Bujaldón" lien="https://trad.spip.net/auteur/raquel-s-bujaldon" /> + </langue> + <langue code="fr" url="https://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=fr" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00" /> + <langue code="nl" url="https://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=nl" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Hanjo" lien="https://trad.spip.net/auteur/hanjo" /> + </langue> + <langue code="ru" url="https://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=ru" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Serge Markitanenko" lien="https://trad.spip.net/auteur/serge-markitanenko" /> + </langue> + <langue code="sk" url="https://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=sk" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="jaro" lien="https://trad.spip.net/auteur/jaro" /> + </langue> + <langue code="uk" url="https://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=uk" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Serge Markitanenko" lien="https://trad.spip.net/auteur/serge-markitanenko" /> + </langue> +</traduction> diff --git a/design_system_dependences/compositions/lang/paquet-compositions_en.php b/design_system_dependences/compositions/lang/paquet-compositions_en.php new file mode 100644 index 0000000000000000000000000000000000000000..bb7789ac64470269e7c3a3522c5aa5c62aa90aa7 --- /dev/null +++ b/design_system_dependences/compositions/lang/paquet-compositions_en.php @@ -0,0 +1,16 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=en +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // C + 'compositions_description' => 'This plugin allows you to define several variants of compositions for each kind of SPIP objects (article, sections, etc..) and to easily apply them, case by case, from the private area.', + 'compositions_nom' => 'Compositions', + 'compositions_slogan' => 'Differ page layouts according to sections, articles...' +); diff --git a/design_system_dependences/compositions/lang/paquet-compositions_es.php b/design_system_dependences/compositions/lang/paquet-compositions_es.php new file mode 100644 index 0000000000000000000000000000000000000000..890b6c966ef593faed48c3b08b5f782da73a4201 --- /dev/null +++ b/design_system_dependences/compositions/lang/paquet-compositions_es.php @@ -0,0 +1,16 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=es +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // C + 'compositions_description' => 'Este plugin le permite definir diversas variantes de composiciones para cada tipo de objeto SPIP (artÃculo, sección, etcétera) y aplicarlas, simplemente, caso por caso, desde el espacio privado.', + 'compositions_nom' => 'Composiciones', + 'compositions_slogan' => 'Variar los formateos según las secciones, los artÃculos...' +); diff --git a/design_system_dependences/compositions/lang/paquet-compositions_fr.php b/design_system_dependences/compositions/lang/paquet-compositions_fr.php new file mode 100644 index 0000000000000000000000000000000000000000..babf90829502e0cd4e39b7a9fb4ce54fca2d042d --- /dev/null +++ b/design_system_dependences/compositions/lang/paquet-compositions_fr.php @@ -0,0 +1,14 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// Fichier source, a modifier dans https://git.spip.net/spip-contrib-extensions/compositions.git +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // C + 'compositions_description' => 'Ce plugin vous permet de définir plusieurs variantes de compositions pour chaque type objet SPIP (article, rubrique, etc.) et de les appliquer simplement, cas par cas, depuis l’espace privé.', + 'compositions_nom' => 'Compositions', + 'compositions_slogan' => 'Varier les mises en page selon les rubriques, les articles...' +); diff --git a/design_system_dependences/compositions/lang/paquet-compositions_nl.php b/design_system_dependences/compositions/lang/paquet-compositions_nl.php new file mode 100644 index 0000000000000000000000000000000000000000..b6042c24b8bbb41b0c24fcabbadd44cdf496ca6c --- /dev/null +++ b/design_system_dependences/compositions/lang/paquet-compositions_nl.php @@ -0,0 +1,16 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=nl +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // C + 'compositions_description' => 'Met deze plugin kun je meerdere composities creëren, voor elk type SPIP object (artikel, rubriek, enz.) en ze eenvoudig toepassen vanuit de privé-ruimte.', + 'compositions_nom' => 'Composities', + 'compositions_slogan' => 'Varieer de indeling van de bladzijdes volgens rubriek, artikel, ...' +); diff --git a/design_system_dependences/compositions/lang/paquet-compositions_ru.php b/design_system_dependences/compositions/lang/paquet-compositions_ru.php new file mode 100644 index 0000000000000000000000000000000000000000..8c1f988e40604543dc85284cec752d7c35ade730 --- /dev/null +++ b/design_system_dependences/compositions/lang/paquet-compositions_ru.php @@ -0,0 +1,16 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=ru +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // C + 'compositions_description' => 'Ðтот плагин позволÑет вам задавать определенный шаблон вывода Ð´Ð»Ñ ÐºÐ¾Ð½ÐºÑ€ÐµÑ‚Ð½Ð¾Ð³Ð¾ раздела, Ñтатьи и Ñ‚.д. ', + 'compositions_nom' => 'Шаблоны Ñтраниц (Compositions)', + 'compositions_slogan' => 'ВозможноÑть задавать определенный шаблон Ð´Ð»Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð° Ñтатьи, раздела и Ñ‚.д.' +); diff --git a/design_system_dependences/compositions/lang/paquet-compositions_sk.php b/design_system_dependences/compositions/lang/paquet-compositions_sk.php new file mode 100644 index 0000000000000000000000000000000000000000..8a6c80bbb4e0b0e8d0af3f433be9b82b9ee4de83 --- /dev/null +++ b/design_system_dependences/compositions/lang/paquet-compositions_sk.php @@ -0,0 +1,16 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=sk +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // C + 'compositions_description' => 'Tento zásuvný modul vám umožňuje definovaÅ¥ niekoľko variantov rozmiestnenia pre každý typ objektu SPIPu (Älánok, rubrika, atÄ.) a jednoducho ho rad radom použiÅ¥ zo súkromnej zóny.', + 'compositions_nom' => 'Rozmiestnenia', + 'compositions_slogan' => 'Meňte rozmiestnenie podľa rubrÃk, Älánkov, atÄ.' +); diff --git a/design_system_dependences/compositions/lang/paquet-compositions_uk.php b/design_system_dependences/compositions/lang/paquet-compositions_uk.php new file mode 100644 index 0000000000000000000000000000000000000000..00bc89e65424465c87d644005c2ad69b625c7536 --- /dev/null +++ b/design_system_dependences/compositions/lang/paquet-compositions_uk.php @@ -0,0 +1,16 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-compositions?lang_cible=uk +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // C + 'compositions_description' => 'ДозволÑÑ” викориÑтовувати різні шаблони Ð´Ð»Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ Ñтатей, розділів та будь-Ñких об’єктів ', + 'compositions_nom' => 'Шаблони (Compositions)', + 'compositions_slogan' => 'ДозволÑÑ” викориÑтовувати різні шаблони Ð´Ð»Ñ Ð²Ð¸Ð²Ð¾Ð´Ñƒ Ñтатей, розділів та будь-Ñких об’єктів ' +); diff --git a/design_system_dependences/compositions/logo-composition.svg b/design_system_dependences/compositions/logo-composition.svg new file mode 100644 index 0000000000000000000000000000000000000000..73451f5596182543eceaaf751a776326177a3d4c --- /dev/null +++ b/design_system_dependences/compositions/logo-composition.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="64" viewBox="0 0 64 64" width="64"><path fill="#80e1e5" d="M9 9h16v26H9z"/><path fill="#d3d3d3" d="M9 40h16v15H9z"/><path fill="#ffde47" d="M30.001 9H55v46H30z"/><path fill="#595959" d="M6.5 4A2.5 2.5 0 0 0 4 6.5v51A2.5 2.5 0 0 0 6.5 60h51a2.5 2.5 0 0 0 2.5-2.5v-51A2.5 2.5 0 0 0 57.5 4zM9 9h16v26H9zm21 0h25v46H30zM9 40h16v15H9z"/></svg> \ No newline at end of file diff --git a/design_system_dependences/compositions/paquet.xml b/design_system_dependences/compositions/paquet.xml new file mode 100644 index 0000000000000000000000000000000000000000..fbfdd26aff5f7a1b09d65b59f53901c08264d2a2 --- /dev/null +++ b/design_system_dependences/compositions/paquet.xml @@ -0,0 +1,42 @@ +<paquet + prefix="compositions" + categorie="outil" + version="4.0.1" + etat="stable" + compatibilite="[4.1.0;4.2.*]" + logo="prive/themes/spip/images/composition-64.png" + schema="0.5.0" + documentation="https://contrib.spip.net/?article3777" +> + + <nom>Compositions</nom> + <!-- Varier les mises en page selon les rubriques, les articles... --> + + <auteur lien="http://www.yterium.com">Cedric Morin</auteur> + <credit lien="https://www.flaticon.com/authors/freepik">Icons made by Freepik</credit> + <credit lien="https://www.flaticon.com/authors/smartline">Icons made by Smartline</credit> + + <copyright>2007-2018</copyright> + + <licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL 3</licence> + + <traduire module="compositions" reference="fr" gestionnaire="salvatore" /> + + <pipeline nom="declarer_tables_objets_sql" inclure="compositions_pipeline.php" /> + <pipeline nom="affiche_milieu" inclure="compositions_pipeline.php" /> + <pipeline nom="autoriser" inclure="compositions_pipeline.php" /> + <pipeline nom="styliser" inclure="compositions_pipeline.php" /> + <pipeline nom="compositions_lister_disponibles" action="" /> + <pipeline nom="compositions_declarer_heritage" action="" /> + <pipeline nom="ieconfig_metas" inclure="compositions_ieconfig.php" /> + <pipeline nom="compositions_declarer_heritage" inclure="compositions_pipeline.php" /> + <pipeline nom="pre_edition" inclure="compositions_pipeline.php" /> + + <utilise nom="Z" compatibilite="[1.7.14;]" /> + <utilise nom="Zcore" compatibilite="[2.0.0;]" /> + <utilise nom="Zpip" compatibilite="[2.0.7-dev;]" /> + + <necessite nom="spip_bonux" compatibilite="[3.0.7;[" /> + + <menu nom="compositions" titre="compositions:compositions" parent="menu_squelette" icone="images/composition-16.png" action="compositions" /> +</paquet> diff --git a/design_system_dependences/compositions/prive/editer/compositions.html b/design_system_dependences/compositions/prive/editer/compositions.html new file mode 100644 index 0000000000000000000000000000000000000000..ceb43b9ef5344ef6e7fdf0aed4398130a6b80abf --- /dev/null +++ b/design_system_dependences/compositions/prive/editer/compositions.html @@ -0,0 +1 @@ +[<div class="ajax composition">(#FORMULAIRE_EDITER_COMPOSITION_OBJET{#ENV{type},#ENV{id}})</div>] diff --git a/design_system_dependences/compositions/prive/squelettes/contenu/composition.html b/design_system_dependences/compositions/prive/squelettes/contenu/composition.html new file mode 100644 index 0000000000000000000000000000000000000000..f03638af515ebe95aa5ead96d1040973015ed8a9 --- /dev/null +++ b/design_system_dependences/compositions/prive/squelettes/contenu/composition.html @@ -0,0 +1,44 @@ +#SET{composition, #ENV{objet}|compositions_decrire{#ENV{composition}}} +<h1 class="grostitre"> + [(#GET{composition/icon}|sinon{#CHEMIN_IMAGE{composition-32.png}}|image_reduire{32,32}|inserer_attribut{class,logo})] + [(#GET{composition/nom})] + [<small><tt>(#GET{composition/basename})</tt></small>] +</h1> + +[<div class='descriptif'>(#GET{composition/description}|propre)</div>] + +<B_heritages> +[(#BOITE_OUVRIR{<:compositions:label_heritages:>, raccourcis})] + <:compositions:heritages:> + <ul class="spip"> + <BOUCLE_heritages(DATA){source tableau, #GET{composition/branche}}> + <li>#CLE (#VALEUR)</li> + </BOUCLE_heritages> + </ul> +#BOITE_FERMER +</B_heritages> + +[(#GET{composition/image_exemple}|oui) +[(#BOITE_OUVRIR{<:compositions:voir_image_exemple:>, raccourcis})] +<a href="[(#GET{composition/image_exemple}|balise_img|extraire_attribut{src})]" class='mediabox exemple' title="<:compositions:voir_image_exemple|attribut_html:>"> + [(#GET{composition/image_exemple}|image_reduire{250})] +</a> +#BOITE_FERMER +] + +#SET{utilisations, #ENV{objet}|compositions_lister_utilisations{#ENV{composition}}} +#SET{nb_utilisations, #GET{utilisations}|count} +[(#BOITE_OUVRIR{[(#ENV{objet}|objet_info{texte_objets}|_T|concat{' (',#GET{nb_utilisations},')'})], simple, section})] +<div class='liste'> + <ul class='liste-items'> + <BOUCLE_util(DATA){source tableau, #GET{utilisations}}> + <li class='item'> + <a href="[(#VALEUR{id}|generer_url_entite{#ENV{objet}})]">[(#TITRE|supprimer_numero)][ | (#ID)]</a> + </li> + </BOUCLE_util> + </ul> +</div> +#BOITE_FERMER + + + diff --git a/design_system_dependences/compositions/prive/squelettes/contenu/compositions.html b/design_system_dependences/compositions/prive/squelettes/contenu/compositions.html new file mode 100644 index 0000000000000000000000000000000000000000..4ca177bd7113c384b04ef8d4138501c7a1e013b5 --- /dev/null +++ b/design_system_dependences/compositions/prive/squelettes/contenu/compositions.html @@ -0,0 +1,52 @@ +#SET{compositions,#REM|compositions_lister_disponibles} + +<h1 class="grostitre"><:compositions:compositions:></h1> + +<BOUCLE_compositions(DATA){source tableau, #GET{compositions}}> + + <B_pour> + + [(#BOITE_OUVRIR{[(#CLE|objet_info{texte_objets}|_T)][ - (#GRAND_TOTAL|singulier_ou_pluriel{compositions:info_1_composition,compositions:info_nb_compositions})], simple, section})] + + <div class='liste'> + <ul class="liste-items compositions"> + <BOUCLE_pour(DATA){source tableau, #VALEUR}{par nom}> + #SET{utilisations, #_compositions:CLE|compositions_lister_utilisations{#CLE}} + <li class="item"> + <div class="item__titre"> + [ [<a href="(#IMAGE_EXEMPLE|balise_img|extraire_attribut{src})" class='mediabox exemple' title="<:compositions:voir_image_exemple|attribut_html:>">] + (#ICON|sinon{#CHEMIN_IMAGE{composition-32.png}}|image_reduire{32,32}|inserer_attribut{class,logo}) + [(#IMAGE_EXEMPLE|oui)</a>] + ] + <strong> + [(#GET{utilisations}|oui) + <a href="[(#VAL{composition}|generer_url_ecrire{objet=#_compositions:CLE&composition=#CLE})]"> + [(#NOM|supprimer_numero)] + [<span class="count">(#GET{utilisations}|count|singulier_ou_pluriel{compositions:une_utilisation,compositions:des_utilisations})</span>] + </a>] + [(#GET{utilisations}|non) [(#NOM|supprimer_numero)] ] + </strong> + </div> + + [<div class='descriptif'>(#DESCRIPTION|PtoBR)</div>] + + <B_heritages> + <div class='heritage'> + <:compositions:heritages:> + <BOUCLE_heritages(DATA){source tableau, #BRANCHE}> + <br>- #CLE (#VALEUR) + </BOUCLE_heritages> + </div> + </B_heritages> + + </li> + </BOUCLE_pour> + </ul> + </div> + + #BOITE_FERMER + </B_pour> +</BOUCLE_compositions> + +<h2><:compositions:info_aucune_composition:></h2> +<//B_compositions> diff --git a/design_system_dependences/compositions/prive/squelettes/contenu/configurer_compositions.html b/design_system_dependences/compositions/prive/squelettes/contenu/configurer_compositions.html new file mode 100644 index 0000000000000000000000000000000000000000..e148f11186f2ae2f6f1bb33b2009d55a9d8207f5 --- /dev/null +++ b/design_system_dependences/compositions/prive/squelettes/contenu/configurer_compositions.html @@ -0,0 +1,6 @@ +[(#AUTORISER{configurer,composition}|sinon_interdire_acces)] + +<h1 class="grostitre"><:compositions:compositions:></h1> +<div class="ajax"> + #FORMULAIRE_CONFIGURER_COMPOSITIONS +</div> \ No newline at end of file diff --git a/design_system_dependences/compositions/prive/squelettes/hierarchie/composition.html b/design_system_dependences/compositions/prive/squelettes/hierarchie/composition.html new file mode 100644 index 0000000000000000000000000000000000000000..1356ccde86afe997d67a543914317ccd9dc7df9b --- /dev/null +++ b/design_system_dependences/compositions/prive/squelettes/hierarchie/composition.html @@ -0,0 +1,2 @@ +<a href="#URL_ECRIRE{compositions}"><:compositions:compositions:></a> +[ > (#ENV{objet}|compositions_decrire{#ENV{composition}}|table_valeur{nom})] diff --git a/design_system_dependences/compositions/prive/squelettes/navigation/composition.html b/design_system_dependences/compositions/prive/squelettes/navigation/composition.html new file mode 100644 index 0000000000000000000000000000000000000000..2283f78a7f176a4894d62124778246c95dbd0638 --- /dev/null +++ b/design_system_dependences/compositions/prive/squelettes/navigation/composition.html @@ -0,0 +1,25 @@ +[(#REM) + Message expliquant comment ajouter des compositions, réservé aux admins +] +[(#AUTORISER{configurer,compositions}|oui) +[(#BOITE_OUVRIR{<:compositions:ajouter_compositions:>,info})] +<:compositions:message_info_ajouter_compositions{url_doc=#PLUGIN{compositions,documentation}}|propre:> +[(#BOITE_FERMER)] +] + +#SET{compositions,#REM|compositions_lister_disponibles} +<BOUCLE_compositions(DATA){source tableau, #GET{compositions}}{si #AUTORISER{configurer,compositions}}> +[(#BOITE_OUVRIR{[(#CLE|objet_info{texte_objets}|_T)], simple, section})] +<ul class="liste-items"> + <BOUCLE_pour(DATA){source tableau, #VALEUR}{par nom}> + #SET{utilisations, #_compositions:CLE|compositions_lister_utilisations{#CLE}|count} + <li class="item[(#_compositions:CLE|=={#ENV{objet}}|et{ #CLE|=={#ENV{composition}} }) on]"> + [(#GET{utilisations}|?{<a class="composition_titre" href="[(#VAL{composition}|generer_url_ecrire{objet=#_compositions:CLE&composition=#CLE})]">,<div class="composition_titre">})] + [(#ICON|sinon{#CHEMIN_IMAGE{composition-24.png}}|image_reduire{24,24}|inserer_attribut{class,logo})] + [(#NOM|supprimer_numero)] + [(#GET{utilisations}|?{ [((#GET{utilisations}))]</a>,</div>})] + </li> + </BOUCLE_pour> +</ul> +#BOITE_FERMER +</BOUCLE_compositions> \ No newline at end of file diff --git a/design_system_dependences/compositions/prive/style_prive_plugin_compositions.html b/design_system_dependences/compositions/prive/style_prive_plugin_compositions.html new file mode 100644 index 0000000000000000000000000000000000000000..c5ee6bd778fc9c4ea713d28a8f1c7798a7dea7c1 --- /dev/null +++ b/design_system_dependences/compositions/prive/style_prive_plugin_compositions.html @@ -0,0 +1,50 @@ +[(#REM) <style>] + +.formulaire_editer_composition_objet .editer_composition .choix {min-height:24px; padding-top:4px;overflow: hidden } +.formulaire_editer_composition_objet .editer_composition .choix input {display:block;float: #ENV{left};} +.formulaire_editer_composition_objet .editer_composition .choix label {display:block;float: #ENV{left}; width: 80%; padding-#ENV{left}: 34px; margin-bottom: 0.5em;} +.formulaire_editer_composition_objet .editer_composition .choix img.logo {float:#ENV{left};margin-#ENV{left}: -34px;margin-#ENV{right}:5px;} +.formulaire_editer_composition_objet .editer_composition .choix .exemple img.logo { padding-bottom:2px; border-bottom:1px dotted #666; } +.formulaire_editer_composition_objet .editer_composition .choix .exemple img.logo:hover { border-bottom:1px solid #666; } + +.formulaire_editer_composition_objet h4 { + padding-#ENV{left}: 30px; + background: url(#CHEMIN_IMAGE{composition-24.png}) no-repeat #ENV{left}; + background-size: 24px; + min-height: 24px; + padding-top: 8px; + padding-bottom: 10px; + margin-bottom: 0; +} +.formulaire_editer_composition_objet h4 .precision {font-size: 85%;} + +.formulaire_editer_composition_objet .detail { + padding-#ENV{left}: 30px; +} + +.formulaire_editer_composition_objet h4 span.composition_actuelle {font-weight: normal;} + +.formulaire_editer_composition_objet span.descriptif {font-style: italic; font-size: 0.875em;} + +body.compositions #contenu .item__titre, +body.composition #contenu .grostitre { } +body.compositions #contenu .item__titre small, +body.composition #contenu .grostitre small {font-size: 0.6em;color: #666;} +body.compositions #contenu .item__titre .count, +body.composition #contenu .grostitre .count {float: right;margin-top: 0.45em;} +body.compositions #contenu .item__titre .logo, +body.composition #contenu .grostitre .logo {margin-right:0.5rem; vertical-align: middle; margin-bottom: 0.15em;} +body.composition #contenu .mediabox.exemple, +body.compositions #contenu .mediabox.exemple {display: flex; flex-direction: column; justify-content: center; } +body.compositions #contenu .item .descriptif, +body.compositions #contenu .item .heritage { + margin-top: 0.25em; + margin-left: calc(32px + 0.85em); +} +body.compositions #contenu .compositions { border-top:none; margin-bottom:0; } +body.compositions #contenu .compositions .item:last-child { border-bottom:none; } + +body.composition #navigation .item {line-height: 1.2; } +body.composition #navigation .composition_titre {display: flex; justify-content: flex-start; align-items: center; min-height: 24px; } +body.composition #navigation .composition_titre .logo {margin-right:1rem; margin-top: 2px;} + diff --git a/design_system_dependences/compositions/prive/themes/spip/images/composition-16.png b/design_system_dependences/compositions/prive/themes/spip/images/composition-16.png new file mode 100644 index 0000000000000000000000000000000000000000..5f676a6d5c6e10330ce52558dc192a51367bb78b Binary files /dev/null and b/design_system_dependences/compositions/prive/themes/spip/images/composition-16.png differ diff --git a/design_system_dependences/compositions/prive/themes/spip/images/composition-16.svg b/design_system_dependences/compositions/prive/themes/spip/images/composition-16.svg new file mode 100644 index 0000000000000000000000000000000000000000..addc1abd44556882f780df8e8e98c1aa8d81abb8 --- /dev/null +++ b/design_system_dependences/compositions/prive/themes/spip/images/composition-16.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="16" viewBox="0 0 16 16" width="16"><path fill="#80e1e5" d="M2 2h4v7H2z"/><path fill="#d3d3d3" d="M2 10h4v4H2z"/><path fill="#ffde47" d="M7 2h7v12H7z"/><path fill="#595959" d="M1.625 1A.625.625 0 0 0 1 1.625v12.75c0 .345.28.625.625.625h12.75c.345 0 .625-.28.625-.625V1.625A.625.625 0 0 0 14.375 1zM2 2h4v7H2zm5 0h7v12H7zm-5 8h4v4H2z"/></svg> \ No newline at end of file diff --git a/design_system_dependences/compositions/prive/themes/spip/images/composition-24.png b/design_system_dependences/compositions/prive/themes/spip/images/composition-24.png new file mode 100644 index 0000000000000000000000000000000000000000..224ec82df68a12e2f91a17098c4508d6bd1ddc36 Binary files /dev/null and b/design_system_dependences/compositions/prive/themes/spip/images/composition-24.png differ diff --git a/design_system_dependences/compositions/prive/themes/spip/images/composition-24.svg b/design_system_dependences/compositions/prive/themes/spip/images/composition-24.svg new file mode 100644 index 0000000000000000000000000000000000000000..14f82d3ed377df1c377a9f73146f961b13fa8ced --- /dev/null +++ b/design_system_dependences/compositions/prive/themes/spip/images/composition-24.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="24" viewBox="0 0 24 24" width="24"><path fill="#80e1e5" d="M3 3h6v10H3z"/><path fill="#d3d3d3" d="M3 15h6v6H3z"/><path fill="#ffde47" d="M11 3h10v18H11z" paint-order="markers stroke fill"/><path fill="#595959" d="M1.982 1A.982.982 0 0 0 1 1.982v20.036c0 .542.44.982.982.982h20.036c.542 0 .982-.44.982-.982V1.982A.982.982 0 0 0 22.018 1zM3 3h6v10H3zm8 0h10v18H11zM3 15h6v6H3z"/></svg> \ No newline at end of file diff --git a/design_system_dependences/compositions/prive/themes/spip/images/composition-32.png b/design_system_dependences/compositions/prive/themes/spip/images/composition-32.png new file mode 100644 index 0000000000000000000000000000000000000000..3178213aca7bd96ffb2a969d7bdcc1217aa7cee7 Binary files /dev/null and b/design_system_dependences/compositions/prive/themes/spip/images/composition-32.png differ diff --git a/design_system_dependences/compositions/prive/themes/spip/images/composition-64.png b/design_system_dependences/compositions/prive/themes/spip/images/composition-64.png new file mode 100644 index 0000000000000000000000000000000000000000..a5b4a39cd20165758daeae4d6a0acc175a5297f4 Binary files /dev/null and b/design_system_dependences/compositions/prive/themes/spip/images/composition-64.png differ diff --git a/design_system_dependences/compositions/prive/themes/spip/images/composition-base-16.png b/design_system_dependences/compositions/prive/themes/spip/images/composition-base-16.png new file mode 100644 index 0000000000000000000000000000000000000000..36f8feeae5d9201e927bb5e9ff1d46444e247807 Binary files /dev/null and b/design_system_dependences/compositions/prive/themes/spip/images/composition-base-16.png differ diff --git a/design_system_dependences/compositions/prive/themes/spip/images/composition-base-24.png b/design_system_dependences/compositions/prive/themes/spip/images/composition-base-24.png new file mode 100644 index 0000000000000000000000000000000000000000..8a0a63a5563e14da9cf33761a06edd3226571f58 Binary files /dev/null and b/design_system_dependences/compositions/prive/themes/spip/images/composition-base-24.png differ diff --git a/design_system_dependences/compositions/prive/themes/spip/images/composition-base-32.png b/design_system_dependences/compositions/prive/themes/spip/images/composition-base-32.png new file mode 100644 index 0000000000000000000000000000000000000000..5de49b463d98b2f466e1116054e7159d719ab024 Binary files /dev/null and b/design_system_dependences/compositions/prive/themes/spip/images/composition-base-32.png differ diff --git a/design_system_dependences/compositions/prive/themes/spip/images/composition-base-xx.svg b/design_system_dependences/compositions/prive/themes/spip/images/composition-base-xx.svg new file mode 100644 index 0000000000000000000000000000000000000000..fa73d493bfb2127f77923c62833457b9fd70e3f3 --- /dev/null +++ b/design_system_dependences/compositions/prive/themes/spip/images/composition-base-xx.svg @@ -0,0 +1,2 @@ +<!-- Icons made by Smartline https://www.flaticon.com/authors/smartline --> +<svg height="512" viewBox="0 0 512 512" width="512" xmlns="http://www.w3.org/2000/svg"><rect fill="#fff" height="512" rx="60" width="512"/><path d="m472 0h-432c-22.08.026-39.974 17.92-40 40v432c.026 22.08 17.92 39.974 40 40h432c22.08-.026 39.974-17.92 40-40v-432c-.026-22.08-17.92-39.974-40-40zm24 472c0 13.255-10.745 24-24 24h-432c-13.255 0-24-10.745-24-24v-432c0-13.255 10.745-24 24-24h432c13.255 0 24 10.745 24 24z"/><path d="m56 40c-.221-.005-.442-.005-.663 0-8.653.183-15.52 7.347-15.337 16v32h16v-32h40v-16z"/><path d="m424 80h-336c-4.418 0-8 3.582-8 8v96c0 4.418 3.582 8 8 8h336c4.418 0 8-3.582 8-8v-96c0-4.418-3.582-8-8-8zm-8 96h-320v-80h320z"/><path d="m216 216h-128c-4.418 0-8 3.582-8 8v128c0 4.418 3.582 8 8 8h128c4.418 0 8-3.582 8-8v-128c0-4.418-3.582-8-8-8zm-120 128v-100.688l100.688 100.688zm112-11.315-100.685-100.685h100.685z"/><path d="m424 216h-176c-4.418 0-8 3.582-8 8v48c0 4.418 3.582 8 8 8h176c4.418 0 8-3.582 8-8v-48c0-4.418-3.582-8-8-8zm-8 48h-160v-32h160z"/><path d="m240 304h192v16h-192z"/><path d="m240 344h192v16h-192z"/><path d="m144 384h288v16h-288z"/><path d="m80 424h288v16h-288z"/><path d="m80 384h16v16h-16z"/><path d="m112 384h16v16h-16z"/></svg> diff --git a/design_system_dependences/compositions/prive/themes/spip/images/composition-xx.svg b/design_system_dependences/compositions/prive/themes/spip/images/composition-xx.svg new file mode 100644 index 0000000000000000000000000000000000000000..73451f5596182543eceaaf751a776326177a3d4c --- /dev/null +++ b/design_system_dependences/compositions/prive/themes/spip/images/composition-xx.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" height="64" viewBox="0 0 64 64" width="64"><path fill="#80e1e5" d="M9 9h16v26H9z"/><path fill="#d3d3d3" d="M9 40h16v15H9z"/><path fill="#ffde47" d="M30.001 9H55v46H30z"/><path fill="#595959" d="M6.5 4A2.5 2.5 0 0 0 4 6.5v51A2.5 2.5 0 0 0 6.5 60h51a2.5 2.5 0 0 0 2.5-2.5v-51A2.5 2.5 0 0 0 57.5 4zM9 9h16v26H9zm21 0h25v46H30zM9 40h16v15H9z"/></svg> \ No newline at end of file diff --git a/design_system_dependences/compositions/saisies/composition.html b/design_system_dependences/compositions/saisies/composition.html new file mode 100644 index 0000000000000000000000000000000000000000..67dc58859c24c169f1fb58139cfd70c0f9c139a7 --- /dev/null +++ b/design_system_dependences/compositions/saisies/composition.html @@ -0,0 +1,25 @@ +[(#REM) + + Saisie Composition + + Action : + - Permet de choisir une composition pour un type d'objet. + + Parametres : + - type : le type d'objet de la composition + - composition_vide : non ou vide - Si non permet de ne pas afficher l'option de composition vide + + Exemple d'appel : + [(#SAISIE{composition, composition_rubrique, + label=<:plugin:label_composition_rubrique:>, + type=rubrique})] + +][(#SET{type,#ENV{type,article}})] +[(#SET{compositions,[(#ENV{_compositions,[(#GET{type}|compositions_lister_disponibles|reset)]})]})] +[(#ENV{composition_vide}|!={non}|oui) + [(#SET{composition_vide,[(#ARRAY{'',[(#ARRAY{nom,<:compositions:label_pas_de_composition:>,description,'',icon,'',configuration,''})]})]})] + [(#SET{compositions,[(#GET{composition_vide}|array_merge{#GET{compositions}})]})] +] +<div class="composition"> +[(#INCLURE{fond=formulaires/inc-selecteur_composition,_compositions=#GET{compositions},name=#ENV{nom},selected=#ENV{valeur},env})] +</div> \ No newline at end of file diff --git a/design_system_dependences/compositions/saisies/composition_fonctions.php b/design_system_dependences/compositions/saisies/composition_fonctions.php new file mode 100644 index 0000000000000000000000000000000000000000..6a8a75e8632d6dfe61d13560b6c084fb2ef2feb3 --- /dev/null +++ b/design_system_dependences/compositions/saisies/composition_fonctions.php @@ -0,0 +1,7 @@ +<?php + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +include_spip('inc/compositions'); diff --git a/design_system_dependences/nospam/.ok b/design_system_dependences/nospam/.ok deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/design_system_dependences/nospam/v2.4.4/action/nospam_confirm_action.php b/design_system_dependences/nospam/action/nospam_confirm_action.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/action/nospam_confirm_action.php rename to design_system_dependences/nospam/action/nospam_confirm_action.php diff --git a/design_system_dependences/nospam/v2.4.4/css/nospam-checkbox.css b/design_system_dependences/nospam/css/nospam-checkbox.css similarity index 100% rename from design_system_dependences/nospam/v2.4.4/css/nospam-checkbox.css rename to design_system_dependences/nospam/css/nospam-checkbox.css diff --git a/design_system_dependences/nospam/v2.4.4/css/nospam-checkbox.min.css b/design_system_dependences/nospam/css/nospam-checkbox.min.css similarity index 100% rename from design_system_dependences/nospam/v2.4.4/css/nospam-checkbox.min.css rename to design_system_dependences/nospam/css/nospam-checkbox.min.css diff --git a/design_system_dependences/nospam/v2.4.4/images/nospam-32.png b/design_system_dependences/nospam/images/nospam-32.png similarity index 100% rename from design_system_dependences/nospam/v2.4.4/images/nospam-32.png rename to design_system_dependences/nospam/images/nospam-32.png diff --git a/design_system_dependences/nospam/v2.4.4/images/nospam-64.png b/design_system_dependences/nospam/images/nospam-64.png similarity index 100% rename from design_system_dependences/nospam/v2.4.4/images/nospam-64.png rename to design_system_dependences/nospam/images/nospam-64.png diff --git a/design_system_dependences/nospam/v2.4.4/images/nospam-xx.svg b/design_system_dependences/nospam/images/nospam-xx.svg similarity index 100% rename from design_system_dependences/nospam/v2.4.4/images/nospam-xx.svg rename to design_system_dependences/nospam/images/nospam-xx.svg diff --git a/design_system_dependences/nospam/v2.4.4/inc/detecter_langue.php b/design_system_dependences/nospam/inc/detecter_langue.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/inc/detecter_langue.php rename to design_system_dependences/nospam/inc/detecter_langue.php diff --git a/design_system_dependences/nospam/v2.4.4/inc/nospam.php b/design_system_dependences/nospam/inc/nospam.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/inc/nospam.php rename to design_system_dependences/nospam/inc/nospam.php diff --git a/design_system_dependences/nospam/v2.4.4/inc/nospam_encrypt.php b/design_system_dependences/nospam/inc/nospam_encrypt.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/inc/nospam_encrypt.php rename to design_system_dependences/nospam/inc/nospam_encrypt.php diff --git a/design_system_dependences/nospam/v2.4.4/inclure/nobot.html b/design_system_dependences/nospam/inclure/nobot.html similarity index 100% rename from design_system_dependences/nospam/v2.4.4/inclure/nobot.html rename to design_system_dependences/nospam/inclure/nobot.html diff --git a/design_system_dependences/nospam/v2.4.4/lang/nospam.xml b/design_system_dependences/nospam/lang/nospam.xml similarity index 100% rename from design_system_dependences/nospam/v2.4.4/lang/nospam.xml rename to design_system_dependences/nospam/lang/nospam.xml diff --git a/design_system_dependences/nospam/v2.4.4/lang/nospam_ar.php b/design_system_dependences/nospam/lang/nospam_ar.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/lang/nospam_ar.php rename to design_system_dependences/nospam/lang/nospam_ar.php diff --git a/design_system_dependences/nospam/v2.4.4/lang/nospam_de.php b/design_system_dependences/nospam/lang/nospam_de.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/lang/nospam_de.php rename to design_system_dependences/nospam/lang/nospam_de.php diff --git a/design_system_dependences/nospam/v2.4.4/lang/nospam_en.php b/design_system_dependences/nospam/lang/nospam_en.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/lang/nospam_en.php rename to design_system_dependences/nospam/lang/nospam_en.php diff --git a/design_system_dependences/nospam/v2.4.4/lang/nospam_es.php b/design_system_dependences/nospam/lang/nospam_es.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/lang/nospam_es.php rename to design_system_dependences/nospam/lang/nospam_es.php diff --git a/design_system_dependences/nospam/v2.4.4/lang/nospam_fa.php b/design_system_dependences/nospam/lang/nospam_fa.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/lang/nospam_fa.php rename to design_system_dependences/nospam/lang/nospam_fa.php diff --git a/design_system_dependences/nospam/v2.4.4/lang/nospam_fr.php b/design_system_dependences/nospam/lang/nospam_fr.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/lang/nospam_fr.php rename to design_system_dependences/nospam/lang/nospam_fr.php diff --git a/design_system_dependences/nospam/v2.4.4/lang/nospam_fr_tu.php b/design_system_dependences/nospam/lang/nospam_fr_tu.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/lang/nospam_fr_tu.php rename to design_system_dependences/nospam/lang/nospam_fr_tu.php diff --git a/design_system_dependences/nospam/v2.4.4/lang/nospam_it.php b/design_system_dependences/nospam/lang/nospam_it.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/lang/nospam_it.php rename to design_system_dependences/nospam/lang/nospam_it.php diff --git a/design_system_dependences/nospam/v2.4.4/lang/nospam_nl.php b/design_system_dependences/nospam/lang/nospam_nl.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/lang/nospam_nl.php rename to design_system_dependences/nospam/lang/nospam_nl.php diff --git a/design_system_dependences/nospam/v2.4.4/lang/nospam_pt_br.php b/design_system_dependences/nospam/lang/nospam_pt_br.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/lang/nospam_pt_br.php rename to design_system_dependences/nospam/lang/nospam_pt_br.php diff --git a/design_system_dependences/nospam/v2.4.4/lang/nospam_sk.php b/design_system_dependences/nospam/lang/nospam_sk.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/lang/nospam_sk.php rename to design_system_dependences/nospam/lang/nospam_sk.php diff --git a/design_system_dependences/nospam/v2.4.4/lang/paquet-nospam.xml b/design_system_dependences/nospam/lang/paquet-nospam.xml similarity index 100% rename from design_system_dependences/nospam/v2.4.4/lang/paquet-nospam.xml rename to design_system_dependences/nospam/lang/paquet-nospam.xml diff --git a/design_system_dependences/nospam/v2.4.4/lang/paquet-nospam_ar.php b/design_system_dependences/nospam/lang/paquet-nospam_ar.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/lang/paquet-nospam_ar.php rename to design_system_dependences/nospam/lang/paquet-nospam_ar.php diff --git a/design_system_dependences/nospam/v2.4.4/lang/paquet-nospam_de.php b/design_system_dependences/nospam/lang/paquet-nospam_de.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/lang/paquet-nospam_de.php rename to design_system_dependences/nospam/lang/paquet-nospam_de.php diff --git a/design_system_dependences/nospam/v2.4.4/lang/paquet-nospam_en.php b/design_system_dependences/nospam/lang/paquet-nospam_en.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/lang/paquet-nospam_en.php rename to design_system_dependences/nospam/lang/paquet-nospam_en.php diff --git a/design_system_dependences/nospam/v2.4.4/lang/paquet-nospam_es.php b/design_system_dependences/nospam/lang/paquet-nospam_es.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/lang/paquet-nospam_es.php rename to design_system_dependences/nospam/lang/paquet-nospam_es.php diff --git a/design_system_dependences/nospam/v2.4.4/lang/paquet-nospam_fr.php b/design_system_dependences/nospam/lang/paquet-nospam_fr.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/lang/paquet-nospam_fr.php rename to design_system_dependences/nospam/lang/paquet-nospam_fr.php diff --git a/design_system_dependences/nospam/v2.4.4/lang/paquet-nospam_fr_tu.php b/design_system_dependences/nospam/lang/paquet-nospam_fr_tu.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/lang/paquet-nospam_fr_tu.php rename to design_system_dependences/nospam/lang/paquet-nospam_fr_tu.php diff --git a/design_system_dependences/nospam/v2.4.4/lang/paquet-nospam_it.php b/design_system_dependences/nospam/lang/paquet-nospam_it.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/lang/paquet-nospam_it.php rename to design_system_dependences/nospam/lang/paquet-nospam_it.php diff --git a/design_system_dependences/nospam/v2.4.4/lang/paquet-nospam_nl.php b/design_system_dependences/nospam/lang/paquet-nospam_nl.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/lang/paquet-nospam_nl.php rename to design_system_dependences/nospam/lang/paquet-nospam_nl.php diff --git a/design_system_dependences/nospam/v2.4.4/lang/paquet-nospam_pt_br.php b/design_system_dependences/nospam/lang/paquet-nospam_pt_br.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/lang/paquet-nospam_pt_br.php rename to design_system_dependences/nospam/lang/paquet-nospam_pt_br.php diff --git a/design_system_dependences/nospam/v2.4.4/lang/paquet-nospam_sk.php b/design_system_dependences/nospam/lang/paquet-nospam_sk.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/lang/paquet-nospam_sk.php rename to design_system_dependences/nospam/lang/paquet-nospam_sk.php diff --git a/design_system_dependences/nospam/v2.4.4/nospam/verifier_formulaire_ecrire_auteur.php b/design_system_dependences/nospam/nospam/verifier_formulaire_ecrire_auteur.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/nospam/verifier_formulaire_ecrire_auteur.php rename to design_system_dependences/nospam/nospam/verifier_formulaire_ecrire_auteur.php diff --git a/design_system_dependences/nospam/v2.4.4/nospam/verifier_formulaire_forum.php b/design_system_dependences/nospam/nospam/verifier_formulaire_forum.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/nospam/verifier_formulaire_forum.php rename to design_system_dependences/nospam/nospam/verifier_formulaire_forum.php diff --git a/design_system_dependences/nospam/v2.4.4/nospam/verifier_formulaire_signature.php b/design_system_dependences/nospam/nospam/verifier_formulaire_signature.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/nospam/verifier_formulaire_signature.php rename to design_system_dependences/nospam/nospam/verifier_formulaire_signature.php diff --git a/design_system_dependences/nospam/v2.4.4/nospam_pipelines.php b/design_system_dependences/nospam/nospam_pipelines.php similarity index 100% rename from design_system_dependences/nospam/v2.4.4/nospam_pipelines.php rename to design_system_dependences/nospam/nospam_pipelines.php diff --git a/design_system_dependences/nospam/v2.4.4/paquet.xml b/design_system_dependences/nospam/paquet.xml similarity index 100% rename from design_system_dependences/nospam/v2.4.4/paquet.xml rename to design_system_dependences/nospam/paquet.xml diff --git a/design_system_dependences/nospam/v2.4.4/install.log b/design_system_dependences/nospam/v2.4.4/install.log deleted file mode 100644 index b9729d304c2f6e194a1f1b10a4ce04785c9996bf..0000000000000000000000000000000000000000 --- a/design_system_dependences/nospam/v2.4.4/install.log +++ /dev/null @@ -1,3 +0,0 @@ -installation: charger_plugin -date: 2024-01-16T13:05:55Z -source: ../tmp/cache/chargeur/v2.4.4-635e01fc-nospam-f85e8-v2.4.3.zip diff --git a/design_system_dependences/pages/.ok b/design_system_dependences/pages/.ok deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/design_system_dependences/pages/v2.0.1/CHANGELOG.md b/design_system_dependences/pages/CHANGELOG.md similarity index 100% rename from design_system_dependences/pages/v2.0.1/CHANGELOG.md rename to design_system_dependences/pages/CHANGELOG.md diff --git a/design_system_dependences/pages/v2.0.1/README.md b/design_system_dependences/pages/README.md similarity index 100% rename from design_system_dependences/pages/v2.0.1/README.md rename to design_system_dependences/pages/README.md diff --git a/design_system_dependences/pages/v2.0.1/action/generer_pages_uniques_utiles.php b/design_system_dependences/pages/action/generer_pages_uniques_utiles.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/action/generer_pages_uniques_utiles.php rename to design_system_dependences/pages/action/generer_pages_uniques_utiles.php diff --git a/design_system_dependences/pages/v2.0.1/base/pages_tables.php b/design_system_dependences/pages/base/pages_tables.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/base/pages_tables.php rename to design_system_dependences/pages/base/pages_tables.php diff --git a/design_system_dependences/pages/v2.0.1/content/articles-resume.html b/design_system_dependences/pages/content/articles-resume.html similarity index 100% rename from design_system_dependences/pages/v2.0.1/content/articles-resume.html rename to design_system_dependences/pages/content/articles-resume.html diff --git a/design_system_dependences/pages/v2.0.1/demo/inc-articles.html b/design_system_dependences/pages/demo/inc-articles.html similarity index 100% rename from design_system_dependences/pages/v2.0.1/demo/inc-articles.html rename to design_system_dependences/pages/demo/inc-articles.html diff --git a/design_system_dependences/pages/v2.0.1/demo/inc-pages.html b/design_system_dependences/pages/demo/inc-pages.html similarity index 100% rename from design_system_dependences/pages/v2.0.1/demo/inc-pages.html rename to design_system_dependences/pages/demo/inc-pages.html diff --git a/design_system_dependences/pages/v2.0.1/demo/pages.html b/design_system_dependences/pages/demo/pages.html similarity index 100% rename from design_system_dependences/pages/v2.0.1/demo/pages.html rename to design_system_dependences/pages/demo/pages.html diff --git a/design_system_dependences/pages/v2.0.1/formulaires/editer_identifiant_page.html b/design_system_dependences/pages/formulaires/editer_identifiant_page.html similarity index 100% rename from design_system_dependences/pages/v2.0.1/formulaires/editer_identifiant_page.html rename to design_system_dependences/pages/formulaires/editer_identifiant_page.html diff --git a/design_system_dependences/pages/v2.0.1/formulaires/editer_identifiant_page.php b/design_system_dependences/pages/formulaires/editer_identifiant_page.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/formulaires/editer_identifiant_page.php rename to design_system_dependences/pages/formulaires/editer_identifiant_page.php diff --git a/design_system_dependences/pages/v2.0.1/formulaires/selecteur/navigateur.html b/design_system_dependences/pages/formulaires/selecteur/navigateur.html similarity index 100% rename from design_system_dependences/pages/v2.0.1/formulaires/selecteur/navigateur.html rename to design_system_dependences/pages/formulaires/selecteur/navigateur.html diff --git a/design_system_dependences/pages/v2.0.1/images/page-128.png b/design_system_dependences/pages/images/page-128.png similarity index 100% rename from design_system_dependences/pages/v2.0.1/images/page-128.png rename to design_system_dependences/pages/images/page-128.png diff --git a/design_system_dependences/pages/v2.0.1/images/page-xx.svg b/design_system_dependences/pages/images/page-xx.svg similarity index 100% rename from design_system_dependences/pages/v2.0.1/images/page-xx.svg rename to design_system_dependences/pages/images/page-xx.svg diff --git a/design_system_dependences/pages/v2.0.1/lang/pages.xml b/design_system_dependences/pages/lang/pages.xml similarity index 100% rename from design_system_dependences/pages/v2.0.1/lang/pages.xml rename to design_system_dependences/pages/lang/pages.xml diff --git a/design_system_dependences/pages/v2.0.1/lang/pages_ar.php b/design_system_dependences/pages/lang/pages_ar.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/lang/pages_ar.php rename to design_system_dependences/pages/lang/pages_ar.php diff --git a/design_system_dependences/pages/v2.0.1/lang/pages_de.php b/design_system_dependences/pages/lang/pages_de.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/lang/pages_de.php rename to design_system_dependences/pages/lang/pages_de.php diff --git a/design_system_dependences/pages/v2.0.1/lang/pages_en.php b/design_system_dependences/pages/lang/pages_en.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/lang/pages_en.php rename to design_system_dependences/pages/lang/pages_en.php diff --git a/design_system_dependences/pages/v2.0.1/lang/pages_es.php b/design_system_dependences/pages/lang/pages_es.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/lang/pages_es.php rename to design_system_dependences/pages/lang/pages_es.php diff --git a/design_system_dependences/pages/v2.0.1/lang/pages_fa.php b/design_system_dependences/pages/lang/pages_fa.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/lang/pages_fa.php rename to design_system_dependences/pages/lang/pages_fa.php diff --git a/design_system_dependences/pages/v2.0.1/lang/pages_fr.php b/design_system_dependences/pages/lang/pages_fr.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/lang/pages_fr.php rename to design_system_dependences/pages/lang/pages_fr.php diff --git a/design_system_dependences/pages/v2.0.1/lang/pages_nl.php b/design_system_dependences/pages/lang/pages_nl.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/lang/pages_nl.php rename to design_system_dependences/pages/lang/pages_nl.php diff --git a/design_system_dependences/pages/v2.0.1/lang/pages_pt_br.php b/design_system_dependences/pages/lang/pages_pt_br.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/lang/pages_pt_br.php rename to design_system_dependences/pages/lang/pages_pt_br.php diff --git a/design_system_dependences/pages/v2.0.1/lang/pages_ru.php b/design_system_dependences/pages/lang/pages_ru.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/lang/pages_ru.php rename to design_system_dependences/pages/lang/pages_ru.php diff --git a/design_system_dependences/pages/v2.0.1/lang/pages_sk.php b/design_system_dependences/pages/lang/pages_sk.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/lang/pages_sk.php rename to design_system_dependences/pages/lang/pages_sk.php diff --git a/design_system_dependences/pages/v2.0.1/lang/paquet-pages.xml b/design_system_dependences/pages/lang/paquet-pages.xml similarity index 100% rename from design_system_dependences/pages/v2.0.1/lang/paquet-pages.xml rename to design_system_dependences/pages/lang/paquet-pages.xml diff --git a/design_system_dependences/pages/v2.0.1/lang/paquet-pages_ar.php b/design_system_dependences/pages/lang/paquet-pages_ar.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/lang/paquet-pages_ar.php rename to design_system_dependences/pages/lang/paquet-pages_ar.php diff --git a/design_system_dependences/pages/v2.0.1/lang/paquet-pages_de.php b/design_system_dependences/pages/lang/paquet-pages_de.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/lang/paquet-pages_de.php rename to design_system_dependences/pages/lang/paquet-pages_de.php diff --git a/design_system_dependences/pages/v2.0.1/lang/paquet-pages_en.php b/design_system_dependences/pages/lang/paquet-pages_en.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/lang/paquet-pages_en.php rename to design_system_dependences/pages/lang/paquet-pages_en.php diff --git a/design_system_dependences/pages/v2.0.1/lang/paquet-pages_es.php b/design_system_dependences/pages/lang/paquet-pages_es.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/lang/paquet-pages_es.php rename to design_system_dependences/pages/lang/paquet-pages_es.php diff --git a/design_system_dependences/pages/v2.0.1/lang/paquet-pages_fa.php b/design_system_dependences/pages/lang/paquet-pages_fa.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/lang/paquet-pages_fa.php rename to design_system_dependences/pages/lang/paquet-pages_fa.php diff --git a/design_system_dependences/pages/v2.0.1/lang/paquet-pages_fr.php b/design_system_dependences/pages/lang/paquet-pages_fr.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/lang/paquet-pages_fr.php rename to design_system_dependences/pages/lang/paquet-pages_fr.php diff --git a/design_system_dependences/pages/v2.0.1/lang/paquet-pages_it.php b/design_system_dependences/pages/lang/paquet-pages_it.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/lang/paquet-pages_it.php rename to design_system_dependences/pages/lang/paquet-pages_it.php diff --git a/design_system_dependences/pages/v2.0.1/lang/paquet-pages_nl.php b/design_system_dependences/pages/lang/paquet-pages_nl.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/lang/paquet-pages_nl.php rename to design_system_dependences/pages/lang/paquet-pages_nl.php diff --git a/design_system_dependences/pages/v2.0.1/lang/paquet-pages_pt_br.php b/design_system_dependences/pages/lang/paquet-pages_pt_br.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/lang/paquet-pages_pt_br.php rename to design_system_dependences/pages/lang/paquet-pages_pt_br.php diff --git a/design_system_dependences/pages/v2.0.1/lang/paquet-pages_ru.php b/design_system_dependences/pages/lang/paquet-pages_ru.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/lang/paquet-pages_ru.php rename to design_system_dependences/pages/lang/paquet-pages_ru.php diff --git a/design_system_dependences/pages/v2.0.1/lang/paquet-pages_sk.php b/design_system_dependences/pages/lang/paquet-pages_sk.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/lang/paquet-pages_sk.php rename to design_system_dependences/pages/lang/paquet-pages_sk.php diff --git a/design_system_dependences/pages/v2.0.1/page.svg b/design_system_dependences/pages/page.svg similarity index 100% rename from design_system_dependences/pages/v2.0.1/page.svg rename to design_system_dependences/pages/page.svg diff --git a/design_system_dependences/pages/v2.0.1/pages_administrations.php b/design_system_dependences/pages/pages_administrations.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/pages_administrations.php rename to design_system_dependences/pages/pages_administrations.php diff --git a/design_system_dependences/pages/v2.0.1/pages_autorisations.php b/design_system_dependences/pages/pages_autorisations.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/pages_autorisations.php rename to design_system_dependences/pages/pages_autorisations.php diff --git a/design_system_dependences/pages/v2.0.1/pages_fonctions.php b/design_system_dependences/pages/pages_fonctions.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/pages_fonctions.php rename to design_system_dependences/pages/pages_fonctions.php diff --git a/design_system_dependences/pages/v2.0.1/pages_pipelines.php b/design_system_dependences/pages/pages_pipelines.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/pages_pipelines.php rename to design_system_dependences/pages/pages_pipelines.php diff --git a/design_system_dependences/pages/v2.0.1/paquet.xml b/design_system_dependences/pages/paquet.xml similarity index 100% rename from design_system_dependences/pages/v2.0.1/paquet.xml rename to design_system_dependences/pages/paquet.xml diff --git a/design_system_dependences/pages/v2.0.1/prive/objets/editer/identifiant_page.html b/design_system_dependences/pages/prive/objets/editer/identifiant_page.html similarity index 100% rename from design_system_dependences/pages/v2.0.1/prive/objets/editer/identifiant_page.html rename to design_system_dependences/pages/prive/objets/editer/identifiant_page.html diff --git a/design_system_dependences/pages/v2.0.1/prive/objets/liste/pages.html b/design_system_dependences/pages/prive/objets/liste/pages.html similarity index 100% rename from design_system_dependences/pages/v2.0.1/prive/objets/liste/pages.html rename to design_system_dependences/pages/prive/objets/liste/pages.html diff --git a/design_system_dependences/pages/v2.0.1/prive/objets/liste/pages_fonctions.php b/design_system_dependences/pages/prive/objets/liste/pages_fonctions.php similarity index 100% rename from design_system_dependences/pages/v2.0.1/prive/objets/liste/pages_fonctions.php rename to design_system_dependences/pages/prive/objets/liste/pages_fonctions.php diff --git a/design_system_dependences/pages/v2.0.1/prive/squelettes/contenu/pages.html b/design_system_dependences/pages/prive/squelettes/contenu/pages.html similarity index 100% rename from design_system_dependences/pages/v2.0.1/prive/squelettes/contenu/pages.html rename to design_system_dependences/pages/prive/squelettes/contenu/pages.html diff --git a/design_system_dependences/pages/v2.0.1/prive/themes/spip/images/page-new-xx.svg b/design_system_dependences/pages/prive/themes/spip/images/page-new-xx.svg similarity index 100% rename from design_system_dependences/pages/v2.0.1/prive/themes/spip/images/page-new-xx.svg rename to design_system_dependences/pages/prive/themes/spip/images/page-new-xx.svg diff --git a/design_system_dependences/pages/v2.0.1/prive/themes/spip/images/page-xx.svg b/design_system_dependences/pages/prive/themes/spip/images/page-xx.svg similarity index 100% rename from design_system_dependences/pages/v2.0.1/prive/themes/spip/images/page-xx.svg rename to design_system_dependences/pages/prive/themes/spip/images/page-xx.svg diff --git a/design_system_dependences/pages/v2.0.1/saisies-vues/pages_uniques.html b/design_system_dependences/pages/saisies-vues/pages_uniques.html similarity index 100% rename from design_system_dependences/pages/v2.0.1/saisies-vues/pages_uniques.html rename to design_system_dependences/pages/saisies-vues/pages_uniques.html diff --git a/design_system_dependences/pages/v2.0.1/saisies/pages_uniques.html b/design_system_dependences/pages/saisies/pages_uniques.html similarity index 100% rename from design_system_dependences/pages/v2.0.1/saisies/pages_uniques.html rename to design_system_dependences/pages/saisies/pages_uniques.html diff --git a/design_system_dependences/pages/v2.0.1/install.log b/design_system_dependences/pages/v2.0.1/install.log deleted file mode 100644 index 797ba9df59c18ff2f717f1cefb5e89b2b777ba8e..0000000000000000000000000000000000000000 --- a/design_system_dependences/pages/v2.0.1/install.log +++ /dev/null @@ -1,3 +0,0 @@ -installation: charger_plugin -date: 2024-01-16T13:05:56Z -source: ../tmp/cache/chargeur/v2.0.1-6225d406-pages-70f6d-v2.0.1.zip diff --git a/design_system_dependences/saisies/v5.2.0/.gitattributes b/design_system_dependences/saisies/.gitattributes similarity index 100% rename from design_system_dependences/saisies/v5.2.0/.gitattributes rename to design_system_dependences/saisies/.gitattributes diff --git a/design_system_dependences/saisies/v5.2.0/.gitignore b/design_system_dependences/saisies/.gitignore similarity index 100% rename from design_system_dependences/saisies/v5.2.0/.gitignore rename to design_system_dependences/saisies/.gitignore diff --git a/design_system_dependences/saisies/.ok b/design_system_dependences/saisies/.ok deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/design_system_dependences/saisies/v5.2.0/CHANGELOG.md b/design_system_dependences/saisies/CHANGELOG.md similarity index 89% rename from design_system_dependences/saisies/v5.2.0/CHANGELOG.md rename to design_system_dependences/saisies/CHANGELOG.md index 08cd5b4b941d464a244a173f38d66095f3569b99..3ef752d1d29c76bcf9d5045cdde53247867fbad5 100644 --- a/design_system_dependences/saisies/v5.2.0/CHANGELOG.md +++ b/design_system_dependences/saisies/CHANGELOG.md @@ -1,5 +1,28 @@ # Changelog +## 5.3.0 - 2024-01-27 +### Added + +- #381 Option `sans_vide` pour la fonction `saisies_lister_champs_par_section()` + + +### Changed + +- formidable/#211 La saisie `champ` ne renvoie rien si aucun champ ne répond aux conditions, sauf si la saisie est obligatoire + +### Fixed + +- Faire systématiquement fonctionner l'affichage conditionnel des étapes côtés public +- #391 Accolade fermante en trop dans les boutons d'étape (si titrage) +- #389 Passer `_T_ou_typo()` sur le libellé du dernier bouton de validation en multiétapes +- #376 Permettre d'avoir des onglets horizontaux au sein d'un onglet vertical +- #379 Pas de `fieldset` pour une saisie `case` sans `label_case` ou sans `label` +- #381 Pour la saisie `champ`, ne pas afficher les sections vides +- #384 Appliquer les trigger `afficher_si_visible_pre` ; `afficher_si_visible_post` ; `afficher_si_masque_pre` ; `afficher_si_masque_post` lorsqu'on masque/démasque un onglet +- #385 Avant de passer d'un onglet à l'autre, vérifier, le cas échéant, que les champs de l'onglet ont bien une valeur valide (attribut `required` etc) +- #385 Lorsqu'une saisie a été masquée par `afficher_si`, remettre si besoin l'attribut `required` lors du réaffichage +- #385 Se rendre automatiquement sur le premier onglet avec un champ non validé lors de la validation HTML du formulaire +- #385 Pour les saisies masquées par `afficher_si`, désactiver temporairement les attributs entrainant des contraintes de validation (https://developer.mozilla.org/en-US/docs/Web/HTML/Constraint_validation) ## 5.2.0 - 2023-12-30 ### Added diff --git a/design_system_dependences/saisies/v5.2.0/README.md b/design_system_dependences/saisies/README.md similarity index 100% rename from design_system_dependences/saisies/v5.2.0/README.md rename to design_system_dependences/saisies/README.md diff --git a/design_system_dependences/saisies/v5.2.0/UPGRADE_5.0.md b/design_system_dependences/saisies/UPGRADE_5.0.md similarity index 100% rename from design_system_dependences/saisies/v5.2.0/UPGRADE_5.0.md rename to design_system_dependences/saisies/UPGRADE_5.0.md diff --git a/design_system_dependences/saisies/v5.2.0/action/deplacer_saisie.php b/design_system_dependences/saisies/action/deplacer_saisie.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/action/deplacer_saisie.php rename to design_system_dependences/saisies/action/deplacer_saisie.php diff --git a/design_system_dependences/saisies/v5.2.0/aide/saisies.html b/design_system_dependences/saisies/aide/saisies.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/aide/saisies.html rename to design_system_dependences/saisies/aide/saisies.html index ba1fc9ef3299680ce034c334979de4fb3cb99fd7..5c1c77192fef6db17034c134290e6045cdd1190f 100644 --- a/design_system_dependences/saisies/v5.2.0/aide/saisies.html +++ b/design_system_dependences/saisies/aide/saisies.html @@ -1,10 +1,10 @@ [(#PLUGIN{yaml}|oui) <h1>Références complètes des saisies</h1> -<p>Cette documentation a été générée à partir de la [v(#PLUGIN{saisies,version})] du plugin Saisies.</p> [(#ENV{format}|=={brut}|oui)<textarea style="width:100%; height:100%;">] +<p>Cette documentation a été générée à partir de la [v(#PLUGIN{saisies,version})] du plugin Saisies.</p> [(#VAL|saisies_generer_aide) [(#ENV{format}|=={brut}|oui)</textarea>] ] diff --git a/design_system_dependences/saisies/v5.2.0/balise/configurer_saisie.php b/design_system_dependences/saisies/balise/configurer_saisie.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/balise/configurer_saisie.php rename to design_system_dependences/saisies/balise/configurer_saisie.php diff --git a/design_system_dependences/saisies/v5.2.0/balise/generer_saisies.php b/design_system_dependences/saisies/balise/generer_saisies.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/balise/generer_saisies.php rename to design_system_dependences/saisies/balise/generer_saisies.php diff --git a/design_system_dependences/saisies/v5.2.0/balise/saisie.php b/design_system_dependences/saisies/balise/saisie.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/balise/saisie.php rename to design_system_dependences/saisies/balise/saisie.php diff --git a/design_system_dependences/saisies/v5.2.0/balise/voir_saisie.php b/design_system_dependences/saisies/balise/voir_saisie.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/balise/voir_saisie.php rename to design_system_dependences/saisies/balise/voir_saisie.php diff --git a/design_system_dependences/saisies/v5.2.0/balise/voir_saisies.php b/design_system_dependences/saisies/balise/voir_saisies.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/balise/voir_saisies.php rename to design_system_dependences/saisies/balise/voir_saisies.php diff --git a/design_system_dependences/saisies/v5.2.0/champs_extras/calculer_balise_lister_valeurs_choix_grille.php b/design_system_dependences/saisies/champs_extras/calculer_balise_lister_valeurs_choix_grille.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/champs_extras/calculer_balise_lister_valeurs_choix_grille.php rename to design_system_dependences/saisies/champs_extras/calculer_balise_lister_valeurs_choix_grille.php diff --git a/design_system_dependences/saisies/v5.2.0/champs_extras/serialiser_choix_grille.php b/design_system_dependences/saisies/champs_extras/serialiser_choix_grille.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/champs_extras/serialiser_choix_grille.php rename to design_system_dependences/saisies/champs_extras/serialiser_choix_grille.php diff --git a/design_system_dependences/saisies/v5.2.0/composer.json b/design_system_dependences/saisies/composer.json similarity index 100% rename from design_system_dependences/saisies/v5.2.0/composer.json rename to design_system_dependences/saisies/composer.json diff --git a/design_system_dependences/saisies/v5.2.0/css/formulaires_constructeur.css b/design_system_dependences/saisies/css/formulaires_constructeur.css similarity index 100% rename from design_system_dependences/saisies/v5.2.0/css/formulaires_constructeur.css rename to design_system_dependences/saisies/css/formulaires_constructeur.css diff --git a/design_system_dependences/saisies/v5.2.0/css/saisies.css b/design_system_dependences/saisies/css/saisies.css similarity index 95% rename from design_system_dependences/saisies/v5.2.0/css/saisies.css rename to design_system_dependences/saisies/css/saisies.css index 9ec68f5659175626cf1153458cf10a895c956085..509b4d7da9057fb65b927d63c0c10a69be8ffc1a 100644 --- a/design_system_dependences/saisies/v5.2.0/css/saisies.css +++ b/design_system_dependences/saisies/css/saisies.css @@ -109,7 +109,7 @@ fieldset.plie > legend:before{ .saisies-onglets-verticaux { margin-bottom: calc(var(--spip-form-spacing-y) / 2); } -.saisies-onglets-verticaux .saisies-menu-onglets { +.saisies-onglets-verticaux > .saisies-menu-onglets { width: 100%; } @media (min-width: 580px) { @@ -118,17 +118,17 @@ fieldset.plie > legend:before{ column-gap: var(--spip-form-spacing-x); margin-bottom: calc(var(--spip-form-spacing-y) / 2); } - .saisies-onglets-verticaux .saisies-menu-onglets { + .saisies-onglets-verticaux > .saisies-menu-onglets { max-width: 15em; min-width: 15em; } } -.saisies-onglets-verticaux .saisies-contenus-onglets { +.saisies-onglets-verticaux > .saisies-contenus-onglets { flex-basis: 100%; } -.saisies-onglets-verticaux .saisies-menu-onglets__items { +.saisies-onglets-verticaux > .saisies-menu-onglets > .saisies-menu-onglets__items { flex-direction: column; } diff --git a/design_system_dependences/saisies/v5.2.0/demo/configurer_saisie.html b/design_system_dependences/saisies/demo/configurer_saisie.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/demo/configurer_saisie.html rename to design_system_dependences/saisies/demo/configurer_saisie.html diff --git a/design_system_dependences/saisies/v5.2.0/demo/generer_saisies.html b/design_system_dependences/saisies/demo/generer_saisies.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/demo/generer_saisies.html rename to design_system_dependences/saisies/demo/generer_saisies.html diff --git a/design_system_dependences/saisies/v5.2.0/demo/page-saisies_cvt.html b/design_system_dependences/saisies/demo/page-saisies_cvt.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/demo/page-saisies_cvt.html rename to design_system_dependences/saisies/demo/page-saisies_cvt.html diff --git a/design_system_dependences/saisies/v5.2.0/demo/saisie.html b/design_system_dependences/saisies/demo/saisie.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/demo/saisie.html rename to design_system_dependences/saisies/demo/saisie.html diff --git a/design_system_dependences/saisies/v5.2.0/demo/voir_saisie.html b/design_system_dependences/saisies/demo/voir_saisie.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/demo/voir_saisie.html rename to design_system_dependences/saisies/demo/voir_saisie.html diff --git a/design_system_dependences/saisies/v5.2.0/demo/voir_saisies.html b/design_system_dependences/saisies/demo/voir_saisies.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/demo/voir_saisies.html rename to design_system_dependences/saisies/demo/voir_saisies.html diff --git a/design_system_dependences/saisies/v5.2.0/formulaires/configurer_saisies.html b/design_system_dependences/saisies/formulaires/configurer_saisies.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/formulaires/configurer_saisies.html rename to design_system_dependences/saisies/formulaires/configurer_saisies.html diff --git a/design_system_dependences/saisies/v5.2.0/formulaires/configurer_saisies.php b/design_system_dependences/saisies/formulaires/configurer_saisies.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/formulaires/configurer_saisies.php rename to design_system_dependences/saisies/formulaires/configurer_saisies.php diff --git a/design_system_dependences/saisies/v5.2.0/formulaires/construire_formulaire.html b/design_system_dependences/saisies/formulaires/construire_formulaire.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/formulaires/construire_formulaire.html rename to design_system_dependences/saisies/formulaires/construire_formulaire.html diff --git a/design_system_dependences/saisies/v5.2.0/formulaires/construire_formulaire.php b/design_system_dependences/saisies/formulaires/construire_formulaire.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/formulaires/construire_formulaire.php rename to design_system_dependences/saisies/formulaires/construire_formulaire.php diff --git a/design_system_dependences/saisies/v5.2.0/formulaires/inc-construire_formulaire-actions.html b/design_system_dependences/saisies/formulaires/inc-construire_formulaire-actions.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/formulaires/inc-construire_formulaire-actions.html rename to design_system_dependences/saisies/formulaires/inc-construire_formulaire-actions.html diff --git a/design_system_dependences/saisies/v5.2.0/formulaires/inc-generer_saisies_configurables.html b/design_system_dependences/saisies/formulaires/inc-generer_saisies_configurables.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/formulaires/inc-generer_saisies_configurables.html rename to design_system_dependences/saisies/formulaires/inc-generer_saisies_configurables.html diff --git a/design_system_dependences/saisies/v5.2.0/formulaires/inc-saisies-cvt-boutons.html b/design_system_dependences/saisies/formulaires/inc-saisies-cvt-boutons.html similarity index 86% rename from design_system_dependences/saisies/v5.2.0/formulaires/inc-saisies-cvt-boutons.html rename to design_system_dependences/saisies/formulaires/inc-saisies-cvt-boutons.html index f185708d4589ea652219b8b888df73bab62d071e..5c5389d7ada3b1ec068a9605e15f5d96e843f40b 100644 --- a/design_system_dependences/saisies/v5.2.0/formulaires/inc-saisies-cvt-boutons.html +++ b/design_system_dependences/saisies/formulaires/inc-saisies-cvt-boutons.html @@ -17,9 +17,9 @@ [(#ENV*{_saisies/options/etapes_precedent_suivant_titrer}|oui) #SET{etape,#ENV*{_saisies_par_etapes}|saisies_determiner_recul_rapide{#ENV{_etape}}} #SET{etape,#ENV*{_saisies_par_etapes/etape_#GET{etape}}} - #SET{label_precedent,#GET{label_precedent}|trim|label_ponctuer|concat{' ',#ENV*{label}}|wrap{'<span class="titre-etape">'}}} + #SET{label_precedent,#GET{label_precedent}|trim|label_ponctuer|concat{' ',#ENV*{label}}|wrap{'<span class="titre-etape">'}} ] <button type="submit" class="submit submit_precedent" name="aller_a_etape" value="[(#ENV{_saisies}|saisies_determiner_recul_rapide{#ENV{_etape}})]"><span class="btn__label">[(#GET{label_precedent}|_T_ou_typo)]</span></button> ] - <button type="submit" class="submit[ (#ENV{_etapes}|?{submit_suivant,submit_main})]" value="1" data-label_enregistrer="#GET{label_enregistrer}"><span class="btn__label">[(#GET{label_valider}|_T_ou_typo)]</span></button> + <button type="submit" class="submit[ (#ENV{_etapes}|?{submit_suivant,submit_main})]" value="1" data-label_enregistrer="[(#GET{label_enregistrer}|_T_ou_typo)]"><span class="btn__label">[(#GET{label_valider}|_T_ou_typo)]</span></button> </p> diff --git a/design_system_dependences/saisies/v5.2.0/formulaires/inc-saisies-cvt-etapes-courante.html b/design_system_dependences/saisies/formulaires/inc-saisies-cvt-etapes-courante.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/formulaires/inc-saisies-cvt-etapes-courante.html rename to design_system_dependences/saisies/formulaires/inc-saisies-cvt-etapes-courante.html diff --git a/design_system_dependences/saisies/v5.2.0/formulaires/inc-saisies-cvt-etapes-defaut.html b/design_system_dependences/saisies/formulaires/inc-saisies-cvt-etapes-defaut.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/formulaires/inc-saisies-cvt-etapes-defaut.html rename to design_system_dependences/saisies/formulaires/inc-saisies-cvt-etapes-defaut.html diff --git a/design_system_dependences/saisies/v5.2.0/formulaires/inc-saisies-cvt-etapes-recapitulatif.html b/design_system_dependences/saisies/formulaires/inc-saisies-cvt-etapes-recapitulatif.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/formulaires/inc-saisies-cvt-etapes-recapitulatif.html rename to design_system_dependences/saisies/formulaires/inc-saisies-cvt-etapes-recapitulatif.html diff --git a/design_system_dependences/saisies/v5.2.0/formulaires/inc-saisies-cvt-etapes.html b/design_system_dependences/saisies/formulaires/inc-saisies-cvt-etapes.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/formulaires/inc-saisies-cvt-etapes.html rename to design_system_dependences/saisies/formulaires/inc-saisies-cvt-etapes.html diff --git a/design_system_dependences/saisies/v5.2.0/formulaires/inc-saisies-cvt.html b/design_system_dependences/saisies/formulaires/inc-saisies-cvt.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/formulaires/inc-saisies-cvt.html rename to design_system_dependences/saisies/formulaires/inc-saisies-cvt.html diff --git a/design_system_dependences/saisies/v5.2.0/formulaires/saisies_cvt.html b/design_system_dependences/saisies/formulaires/saisies_cvt.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/formulaires/saisies_cvt.html rename to design_system_dependences/saisies/formulaires/saisies_cvt.html diff --git a/design_system_dependences/saisies/v5.2.0/formulaires/saisies_cvt.php b/design_system_dependences/saisies/formulaires/saisies_cvt.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/formulaires/saisies_cvt.php rename to design_system_dependences/saisies/formulaires/saisies_cvt.php diff --git a/design_system_dependences/saisies/v5.2.0/images/formulaire-saisie-defaut-xx.svg b/design_system_dependences/saisies/images/formulaire-saisie-defaut-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/formulaire-saisie-defaut-xx.svg rename to design_system_dependences/saisies/images/formulaire-saisie-defaut-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies-xx.svg b/design_system_dependences/saisies/images/saisies-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies-xx.svg rename to design_system_dependences/saisies/images/saisies-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_articles-xx.svg b/design_system_dependences/saisies/images/saisies_articles-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_articles-xx.svg rename to design_system_dependences/saisies/images/saisies_articles-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_auteurs-xx.svg b/design_system_dependences/saisies/images/saisies_auteurs-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_auteurs-xx.svg rename to design_system_dependences/saisies/images/saisies_auteurs-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_case-xx.svg b/design_system_dependences/saisies/images/saisies_case-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_case-xx.svg rename to design_system_dependences/saisies/images/saisies_case-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_checkbox-xx.svg b/design_system_dependences/saisies/images/saisies_checkbox-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_checkbox-xx.svg rename to design_system_dependences/saisies/images/saisies_checkbox-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_choix_grille-xx.svg b/design_system_dependences/saisies/images/saisies_choix_grille-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_choix_grille-xx.svg rename to design_system_dependences/saisies/images/saisies_choix_grille-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_conteneur_inline.svg b/design_system_dependences/saisies/images/saisies_conteneur_inline.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_conteneur_inline.svg rename to design_system_dependences/saisies/images/saisies_conteneur_inline.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_destinataires-xx.svg b/design_system_dependences/saisies/images/saisies_destinataires-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_destinataires-xx.svg rename to design_system_dependences/saisies/images/saisies_destinataires-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_documents-xx.svg b/design_system_dependences/saisies/images/saisies_documents-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_documents-xx.svg rename to design_system_dependences/saisies/images/saisies_documents-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_evenements-xx.svg b/design_system_dependences/saisies/images/saisies_evenements-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_evenements-xx.svg rename to design_system_dependences/saisies/images/saisies_evenements-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_explication-xx.svg b/design_system_dependences/saisies/images/saisies_explication-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_explication-xx.svg rename to design_system_dependences/saisies/images/saisies_explication-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_fieldset-xx.svg b/design_system_dependences/saisies/images/saisies_fieldset-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_fieldset-xx.svg rename to design_system_dependences/saisies/images/saisies_fieldset-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_grille-xx.svg b/design_system_dependences/saisies/images/saisies_grille-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_grille-xx.svg rename to design_system_dependences/saisies/images/saisies_grille-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_hidden-xx.svg b/design_system_dependences/saisies/images/saisies_hidden-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_hidden-xx.svg rename to design_system_dependences/saisies/images/saisies_hidden-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_icones_src.svg b/design_system_dependences/saisies/images/saisies_icones_src.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_icones_src.svg rename to design_system_dependences/saisies/images/saisies_icones_src.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_input-xx.svg b/design_system_dependences/saisies/images/saisies_input-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_input-xx.svg rename to design_system_dependences/saisies/images/saisies_input-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_input_colors-xx.svg b/design_system_dependences/saisies/images/saisies_input_colors-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_input_colors-xx.svg rename to design_system_dependences/saisies/images/saisies_input_colors-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_input_date-xx.svg b/design_system_dependences/saisies/images/saisies_input_date-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_input_date-xx.svg rename to design_system_dependences/saisies/images/saisies_input_date-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_input_email-xx.svg b/design_system_dependences/saisies/images/saisies_input_email-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_input_email-xx.svg rename to design_system_dependences/saisies/images/saisies_input_email-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_input_number-xx.svg b/design_system_dependences/saisies/images/saisies_input_number-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_input_number-xx.svg rename to design_system_dependences/saisies/images/saisies_input_number-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_input_password-xx.svg b/design_system_dependences/saisies/images/saisies_input_password-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_input_password-xx.svg rename to design_system_dependences/saisies/images/saisies_input_password-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_mots-xx.svg b/design_system_dependences/saisies/images/saisies_mots-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_mots-xx.svg rename to design_system_dependences/saisies/images/saisies_mots-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_radio-xx.svg b/design_system_dependences/saisies/images/saisies_radio-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_radio-xx.svg rename to design_system_dependences/saisies/images/saisies_radio-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_rubriques-xx.svg b/design_system_dependences/saisies/images/saisies_rubriques-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_rubriques-xx.svg rename to design_system_dependences/saisies/images/saisies_rubriques-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_rubriques_articles-xx.svg b/design_system_dependences/saisies/images/saisies_rubriques_articles-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_rubriques_articles-xx.svg rename to design_system_dependences/saisies/images/saisies_rubriques_articles-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_select-xx.svg b/design_system_dependences/saisies/images/saisies_select-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_select-xx.svg rename to design_system_dependences/saisies/images/saisies_select-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_select_multiple-xx.svg b/design_system_dependences/saisies/images/saisies_select_multiple-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_select_multiple-xx.svg rename to design_system_dependences/saisies/images/saisies_select_multiple-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_textarea-xx.svg b/design_system_dependences/saisies/images/saisies_textarea-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_textarea-xx.svg rename to design_system_dependences/saisies/images/saisies_textarea-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/images/saisies_toggle-xx.svg b/design_system_dependences/saisies/images/saisies_toggle-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/images/saisies_toggle-xx.svg rename to design_system_dependences/saisies/images/saisies_toggle-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/inc/saisies.php b/design_system_dependences/saisies/inc/saisies.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inc/saisies.php rename to design_system_dependences/saisies/inc/saisies.php diff --git a/design_system_dependences/saisies/v5.2.0/inc/saisies_afficher.php b/design_system_dependences/saisies/inc/saisies_afficher.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inc/saisies_afficher.php rename to design_system_dependences/saisies/inc/saisies_afficher.php diff --git a/design_system_dependences/saisies/v5.2.0/inc/saisies_afficher_si_commun.php b/design_system_dependences/saisies/inc/saisies_afficher_si_commun.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inc/saisies_afficher_si_commun.php rename to design_system_dependences/saisies/inc/saisies_afficher_si_commun.php diff --git a/design_system_dependences/saisies/v5.2.0/inc/saisies_afficher_si_js.php b/design_system_dependences/saisies/inc/saisies_afficher_si_js.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inc/saisies_afficher_si_js.php rename to design_system_dependences/saisies/inc/saisies_afficher_si_js.php diff --git a/design_system_dependences/saisies/v5.2.0/inc/saisies_afficher_si_php.php b/design_system_dependences/saisies/inc/saisies_afficher_si_php.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inc/saisies_afficher_si_php.php rename to design_system_dependences/saisies/inc/saisies_afficher_si_php.php diff --git a/design_system_dependences/saisies/v5.2.0/inc/saisies_aide.php b/design_system_dependences/saisies/inc/saisies_aide.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inc/saisies_aide.php rename to design_system_dependences/saisies/inc/saisies_aide.php diff --git a/design_system_dependences/saisies/v5.2.0/inc/saisies_data.php b/design_system_dependences/saisies/inc/saisies_data.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inc/saisies_data.php rename to design_system_dependences/saisies/inc/saisies_data.php diff --git a/design_system_dependences/saisies/v5.2.0/inc/saisies_formulaire.php b/design_system_dependences/saisies/inc/saisies_formulaire.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inc/saisies_formulaire.php rename to design_system_dependences/saisies/inc/saisies_formulaire.php diff --git a/design_system_dependences/saisies/v5.2.0/inc/saisies_identifiants.php b/design_system_dependences/saisies/inc/saisies_identifiants.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inc/saisies_identifiants.php rename to design_system_dependences/saisies/inc/saisies_identifiants.php diff --git a/design_system_dependences/saisies/v5.2.0/inc/saisies_info.php b/design_system_dependences/saisies/inc/saisies_info.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inc/saisies_info.php rename to design_system_dependences/saisies/inc/saisies_info.php diff --git a/design_system_dependences/saisies/v5.2.0/inc/saisies_lister.php b/design_system_dependences/saisies/inc/saisies_lister.php similarity index 99% rename from design_system_dependences/saisies/v5.2.0/inc/saisies_lister.php rename to design_system_dependences/saisies/inc/saisies_lister.php index 6a7e6dbabd34f7c62b39a36b6b8e89e4372a1de0..d3aeb5f23f0ad01a2563408ecc08ccff8c898388 100644 --- a/design_system_dependences/saisies/v5.2.0/inc/saisies_lister.php +++ b/design_system_dependences/saisies/inc/saisies_lister.php @@ -528,6 +528,7 @@ function saisies_chercher($saisies, $id_ou_nom_ou_chemin, $retourner_chemin = fa * - string `callback_section` nom de la fonction de rappel sur les section, à défaut prend le nom ; exemple : `'saisies_saisie_get_label'` * - string `callback_champ` nom de la fonction de rappel sur les champ, à défaut renvoie la saisie complète ; exemple : `'saisies_saisie_get_label'` * - int `profondeur_max_output` indique sur combien de niveau doit être le tableau d'output, si pas défini / <= 0 , va jusqu'au bout de la hiérarchie, sinon ca aplatit les niveaux les plus profonds + * - bool `sans_vide`: si True, ne pas renvoyer les section vide * - array|string forcer_type: liste de type à prendre, en excluant les autres * @return array **/ @@ -545,6 +546,7 @@ function saisies_lister_champs_par_section(array $saisies, array $options = []): return $s; }; $profondeur_max_output = intval($options['profondeur_max_output'] ?? 0); + $sans_vide = $options['sans_vide'] ?? false; $forcer_type = $options['forcer_type'] ?? []; if (!is_array($forcer_type)) { @@ -583,6 +585,9 @@ function saisies_lister_champs_par_section(array $saisies, array $options = []): } } + if ($sans_vide) { + $resultat = array_filter($resultat); + } // Avant de ressortir, diminuer la profondeur actuelle $profondeur_actuelle--; return $resultat; diff --git a/design_system_dependences/saisies/v5.2.0/inc/saisies_lister_disponibles.php b/design_system_dependences/saisies/inc/saisies_lister_disponibles.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inc/saisies_lister_disponibles.php rename to design_system_dependences/saisies/inc/saisies_lister_disponibles.php diff --git a/design_system_dependences/saisies/v5.2.0/inc/saisies_manipuler.php b/design_system_dependences/saisies/inc/saisies_manipuler.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inc/saisies_manipuler.php rename to design_system_dependences/saisies/inc/saisies_manipuler.php diff --git a/design_system_dependences/saisies/v5.2.0/inc/saisies_migrer_afficher_si_remplissage.php b/design_system_dependences/saisies/inc/saisies_migrer_afficher_si_remplissage.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inc/saisies_migrer_afficher_si_remplissage.php rename to design_system_dependences/saisies/inc/saisies_migrer_afficher_si_remplissage.php diff --git a/design_system_dependences/saisies/v5.2.0/inc/saisies_name.php b/design_system_dependences/saisies/inc/saisies_name.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inc/saisies_name.php rename to design_system_dependences/saisies/inc/saisies_name.php diff --git a/design_system_dependences/saisies/v5.2.0/inc/saisies_request.php b/design_system_dependences/saisies/inc/saisies_request.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inc/saisies_request.php rename to design_system_dependences/saisies/inc/saisies_request.php diff --git a/design_system_dependences/saisies/v5.2.0/inc/saisies_verifier.php b/design_system_dependences/saisies/inc/saisies_verifier.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inc/saisies_verifier.php rename to design_system_dependences/saisies/inc/saisies_verifier.php diff --git a/design_system_dependences/saisies/v5.2.0/inclure/configurer_saisie.html b/design_system_dependences/saisies/inclure/configurer_saisie.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inclure/configurer_saisie.html rename to design_system_dependences/saisies/inclure/configurer_saisie.html diff --git a/design_system_dependences/saisies/v5.2.0/inclure/configurer_saisie_fonctions.php b/design_system_dependences/saisies/inclure/configurer_saisie_fonctions.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inclure/configurer_saisie_fonctions.php rename to design_system_dependences/saisies/inclure/configurer_saisie_fonctions.php diff --git a/design_system_dependences/saisies/v5.2.0/inclure/generer_saisies.html b/design_system_dependences/saisies/inclure/generer_saisies.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inclure/generer_saisies.html rename to design_system_dependences/saisies/inclure/generer_saisies.html diff --git a/design_system_dependences/saisies/v5.2.0/inclure/saisies_aide.html b/design_system_dependences/saisies/inclure/saisies_aide.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inclure/saisies_aide.html rename to design_system_dependences/saisies/inclure/saisies_aide.html diff --git a/design_system_dependences/saisies/v5.2.0/inclure/saisies_aide/addendum.html b/design_system_dependences/saisies/inclure/saisies_aide/addendum.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inclure/saisies_aide/addendum.html rename to design_system_dependences/saisies/inclure/saisies_aide/addendum.html diff --git a/design_system_dependences/saisies/v5.2.0/inclure/saisies_aide/options.html b/design_system_dependences/saisies/inclure/saisies_aide/options.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inclure/saisies_aide/options.html rename to design_system_dependences/saisies/inclure/saisies_aide/options.html diff --git a/design_system_dependences/saisies/v5.2.0/inclure/saisies_aide/saisies.html b/design_system_dependences/saisies/inclure/saisies_aide/saisies.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inclure/saisies_aide/saisies.html rename to design_system_dependences/saisies/inclure/saisies_aide/saisies.html diff --git a/design_system_dependences/saisies/v5.2.0/inclure/saisies_aide/tableau.html b/design_system_dependences/saisies/inclure/saisies_aide/tableau.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inclure/saisies_aide/tableau.html rename to design_system_dependences/saisies/inclure/saisies_aide/tableau.html diff --git a/design_system_dependences/saisies/v5.2.0/inclure/voir_saisies.html b/design_system_dependences/saisies/inclure/voir_saisies.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/inclure/voir_saisies.html rename to design_system_dependences/saisies/inclure/voir_saisies.html diff --git a/design_system_dependences/saisies/v5.2.0/javascript/saisies.js b/design_system_dependences/saisies/javascript/saisies.js similarity index 81% rename from design_system_dependences/saisies/v5.2.0/javascript/saisies.js rename to design_system_dependences/saisies/javascript/saisies.js index 0734a91fea79e2acbb57d9a8320ccdb1cd3ce2db..8cf29aef3215c73a6dc9adb1089003aae20e12db 100644 --- a/design_system_dependences/saisies/v5.2.0/javascript/saisies.js +++ b/design_system_dependences/saisies/javascript/saisies.js @@ -61,7 +61,8 @@ function saisies_fieldset_onglet() { // Classes utilisées var classes = { // conteneur général - wrapper: 'saisies-onglets', + wrapper_horizontal: 'saisies-onglets', + wrapper_vertical: 'saisies-onglets saisies-onglets-verticaux', // Menu tablist: 'saisies-menu-onglets', tablist_items: 'saisies-menu-onglets__items', @@ -72,18 +73,19 @@ function saisies_fieldset_onglet() { scrollable: 'scrollable', // contenus (les fieldsets) tabscontents: 'saisies-contenus-onglets', - tabcontent: 'saisies-contenu-onglet', // en complément de .fieldset_onglet + tabcontent: 'saisies-contenu-onglet afficher_si_sans_visuel', // en complément de .fieldset_onglet } var selecteur_fieldset = '.fieldset.fieldset_onglet:not(.pliable)'; var storage = window.sessionStorage; - // Générer les onglets var init = function() { $.each(collections_fieldsets(), function(i, $fieldsets) { + // On peut avoir des onglets horizontaux dans les onglets verticaux, donc il faut reinitialiser à chaque niveau + classes.wrapper = classes.wrapper_horizontal; // A-t-on ne serait-ce qu'un onglet vertical ? Si oui, on considère que tout est en vertical $fieldsets.each(function() { if ($(this).hasClass('fieldset_onglet_vertical')) { - classes.wrapper = classes.wrapper + ' ' + 'saisies-onglets-verticaux'; + classes.wrapper = classes.wrapper_vertical; return false; } }); @@ -112,7 +114,6 @@ function saisies_fieldset_onglet() { id_onglet = 'onglet-' + id_contenu; // On ajoute les attributs nécessaire : id, classe, role et aria - // on supprime ensuite tout ce qui est afficher si // puis on le cache d'office et on le déplace dans le conteneur. $contenu @@ -121,7 +122,6 @@ function saisies_fieldset_onglet() { .attr('role', 'tabpanel') .attr('aria-labelledby', id_onglet) .attr('data-saisies-onglet', true) // pour s'assurer de ne pas passer plusieurs fois - .removeAttr('data-afficher_si') .hide().attr('hidden', '') .appendTo($contenus); @@ -130,13 +130,17 @@ function saisies_fieldset_onglet() { // On crée l'onglet avec son interaction var $onglet = $('<li class="'+classes.tablist_item+'"><a class="'+classes.tablist_link+'" href="#'+id_contenu+'" id="'+id_onglet+'" aria-controls="'+id_contenu+'" role="tab" aria-selected="false" tabindex="-1">'+titre+'</a></li>'); + var autoriser_changement = false; $onglet .attr('data-afficher_si', afficher_si) .click(function() { - activer_onglet($(this).find('.'+classes.tablist_link)); - $(this).siblings().each(function() { - desactiver_onglet($(this).find('.'+classes.tablist_link)); + $(this).siblings().has('.' + classes.active).each(function() { + var onglet_reference = $(this).find('a').attr('href'); + autoriser_changement = container_reportValidity(onglet_reference); }); + if (autoriser_changement) { + activer_onglet($(this).find('.'+classes.tablist_link)); + } return false; }); @@ -147,7 +151,6 @@ function saisies_fieldset_onglet() { // Si c'est onglet actif, on ferme l'onglet et on cherche le premier onglet dispo if ($lien.attr('aria-selected') == 'true') { $nouvel_onglet = $this_onglet.siblings().not('.afficher_si_masque').first().children('a') - desactiver_onglet($lien); activer_onglet($nouvel_onglet); } }); @@ -171,7 +174,6 @@ function saisies_fieldset_onglet() { if ($contenu.find('.editer.erreur').length) { $onglet.children('a').addClass(classes.error); } - // On ajoute l'onglet au menu $menu.find('.'+classes.tablist_items).append($onglet); }); @@ -204,6 +206,20 @@ function saisies_fieldset_onglet() { $onglet_defaut = $menu.find('.'+classes.tablist_link).first(); } activer_onglet($onglet_defaut, 0, false); + + }); + + // Si un problème de validation sur un champ, basculer vers le fieldset qui contient l'élèment invalide + // Note : on initialise cela en dehors de l'initialisation des onglets + // Car un même champ peut être dans plusieurs onglets (onglets imbriqués) + // Et on ne veut pas de double écouteur + $('.' + classes.tabscontents + ' [name]').on('invalid', function() { + // On fait cela lot d'onglets par lot d'onglets + $(this).parents('form').find('.' + classes.tabscontents).each(function() { + var id_fieldset = '#' + $(this).find('> fieldset:invalid').first().attr('id'); + var $onglet = $('a[href="' + id_fieldset + '"]'); + activer_onglet($onglet); + }); }); } @@ -212,8 +228,8 @@ function saisies_fieldset_onglet() { var collections_fieldsets = function() { var collections = []; $(selecteur_fieldset).each( function() { - $fieldsets_niveau = $(this).add($(this).nextUntil(':not('+selecteur_fieldset+')')), - parsed = $(this).data('saisies-onglet-parsed') || false; + $fieldsets_niveau = $(this).add($(this).nextUntil(':not('+selecteur_fieldset+')')), + parsed = $(this).data('saisies-onglet-parsed') || false; if (!parsed) { collections.push($fieldsets_niveau); $fieldsets_niveau.each( function() { @@ -225,8 +241,11 @@ function saisies_fieldset_onglet() { } // Activer un onglet + // en commencant par désactiver son voisin // @param object $onglet Élément <a> var activer_onglet = function( $onglet, duree = 150, persistant = true ) { + $onglet_actuel = $onglet.parent().siblings().has('.' + classes.active).find('.' + classes.tablist_link); + desactiver_onglet($onglet_actuel); if ($onglet.length) { var $contenu = $(escapeId($onglet.attr('href'))); $onglet.addClass(classes.active).attr('aria-selected', true).removeAttr('tabindex'); @@ -270,6 +289,18 @@ function saisies_fieldset_onglet() { return Math.abs(h); } + /* + * Vérifier la validité de l'ensemble des champs contenu dans element + * @param string selector : un critère de selection + * @return bool + **/ + var container_reportValidity = function(selector) { + var retour = true; + $(selector).find('[name]').each(function() { + retour = retour && $(this).get(0).reportValidity();//Un seul `false` et tout est `false` + }); + return retour; + } // C'est parti init(); } diff --git a/design_system_dependences/saisies/v5.2.0/javascript/saisies_afficher_si.js b/design_system_dependences/saisies/javascript/saisies_afficher_si.js similarity index 78% rename from design_system_dependences/saisies/v5.2.0/javascript/saisies_afficher_si.js rename to design_system_dependences/saisies/javascript/saisies_afficher_si.js index 6c1c43ce256a5621fd6804690614a2b7e4918c36..85f99c2af9f1ea73c92e9b4f78170dbcdb58c698 100644 --- a/design_system_dependences/saisies/v5.2.0/javascript/saisies_afficher_si.js +++ b/design_system_dependences/saisies/javascript/saisies_afficher_si.js @@ -69,7 +69,11 @@ function afficher_si_set_current_data(form) { }); } function verifier_afficher_si(saisie, chargement = false) { - if ((saisie.hasClass('erreur') || $('.erreur', saisie).length) && chargement) {//Tjr afficher au chargement s'il y une erreur. Si cela arrive c'est qu'il y a quelque part une incohérence entre l'évaluation JS et l'évaluation PHP des afficher si. + if ( + (saisie.hasClass('erreur') || $('.erreur', saisie).length) + && !saisie.hasClass('saisies-menu-onglets__item') + && !saisie.hasClass('saisies-contenu-onglet') + ) {//Tjr afficher au chargement s'il y une erreur. Si cela arrive c'est qu'il y a quelque part une incohérence entre l'évaluation JS et l'évaluation PHP des afficher si. Attention ! Ne pas appliquer aux onglets qui ont des classes erreurs, ca c'est volontaire console.log('Attention : saisies masquée par afficher_si avec une erreur...' + saisie.attr('data-id')); return true; } @@ -82,27 +86,75 @@ function animer_afficher_si(saisie, condition, chargement){ if (!saisie.hasClass('afficher_si_visible')) { saisie.trigger('afficher_si_visible_pre'); saisie.removeClass('afficher_si_masque_chargement').removeClass('afficher_si_masque').addClass('afficher_si_visible').removeAttr('aria-hiden'); - if (!saisie.hasClass('etapes__item') && !saisie.hasClass('saisie_hidden')) { + if (!saisie.hasClass('afficher_si_sans_visuel')) { afficher_si_show(saisie); } - saisie.find('[data-afficher-si-required]').attr('required', true).attr('data-afficher-si-required',false); + afficher_si_restaure_validation(saisie); saisie.trigger('afficher_si_visible_post'); } } else { if (!saisie.hasClass('afficher_si_masque')) { saisie.trigger('afficher_si_masque_pre'); - if (!saisie.hasClass('etapes__item') && !saisie.hasClass('saisie_hidden')) { + if (!saisie.hasClass('afficher_si_sans_visuel')) { afficher_si_hide(saisie); } if (chargement) { saisie.addClass('afficher_si_masque_chargement'); } saisie.addClass('afficher_si_masque').removeClass('afficher_si_visible').attr('aria-hiden', true); - saisie.find('[required]').attr('required', false).attr('data-afficher-si-required', null); + afficher_si_disable_validation(saisie); saisie.trigger('afficher_si_masque_post'); } } } +/** + * Prend les attribut de validation au sein d'une saisie et les supprime + * tout en stockant en mémoire dans des data-truc + * @param $saisie la saisie (conteneur) +**/ +function afficher_si_disable_validation($saisie) { + for (attribut of afficher_si_validation_attributs) { + if (attribut in afficher_si_validation_attributs_valeurs) { + var selecteur = afficher_si_validation_attributs_valeurs[attribut].map((x) => '[' + attribut + '=' + x + ']').join(', '); + } else { + var selecteur = '[' + attribut + ']'; + } + var enfants = $saisie.find(selecteur); + enfants.each(function() { + $(this).attr('data-afficher_si-' + attribut, $(this).attr(attribut)).attr(attribut, null); + }); + } +} + +/** + * Rétabli si besoin les attribut de validation au sein d'une saisie + * @param $saisie la saisie (conteneur) +**/ +function afficher_si_restaure_validation($saisie) { + for (attribut of afficher_si_validation_attributs) { + var enfants = $saisie.find('[data-afficher_si-' + attribut + ']'); + enfants.each(function() { + if ($(this).parents('.afficher_si_masque').length == 0) { + $(this).attr(attribut, $(this).attr('data-afficher_si-' + attribut)).attr('data-afficher_si-' + attribut, null); + } + }); + } +} + + +var afficher_si_validation_attributs = [ + 'required', + 'minlength', + 'maxlength', + 'min', + 'max', + 'type', + 'step', + 'pattern' +]; +var afficher_si_validation_attributs_valeurs = {'type': ['email', 'url']}; +// Ref https://developer.mozilla.org/en-US/docs/Web/HTML/Constraint_validation#validation-related_attributes + function afficher_si(args) { if (afficher_si_current_data.hasOwnProperty(args['champ'])) { @@ -242,7 +294,7 @@ function afficher_si_init_chemin_etapes(form) { for (etape in etapes) { var afficher_si_etape = etapes[etape]['afficher_si'] ?? ''; if (afficher_si_etape) { - form.find('.etapes__item.' + etape).attr('data-afficher_si', afficher_si_etape); + form.find('.etapes__item.' + etape).attr('data-afficher_si', afficher_si_etape).addClass('afficher_si_sans_visuel'); } } } diff --git a/design_system_dependences/saisies/v5.2.0/javascript/saisies_textarea_counter.js b/design_system_dependences/saisies/javascript/saisies_textarea_counter.js similarity index 100% rename from design_system_dependences/saisies/v5.2.0/javascript/saisies_textarea_counter.js rename to design_system_dependences/saisies/javascript/saisies_textarea_counter.js diff --git a/design_system_dependences/saisies/v5.2.0/javascript/textarea-counter/textarea-counter.md b/design_system_dependences/saisies/javascript/textarea-counter/textarea-counter.md similarity index 100% rename from design_system_dependences/saisies/v5.2.0/javascript/textarea-counter/textarea-counter.md rename to design_system_dependences/saisies/javascript/textarea-counter/textarea-counter.md diff --git a/design_system_dependences/saisies/v5.2.0/lang/paquet-saisies.xml b/design_system_dependences/saisies/lang/paquet-saisies.xml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/paquet-saisies.xml rename to design_system_dependences/saisies/lang/paquet-saisies.xml diff --git a/design_system_dependences/saisies/v5.2.0/lang/paquet-saisies_ar.php b/design_system_dependences/saisies/lang/paquet-saisies_ar.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/paquet-saisies_ar.php rename to design_system_dependences/saisies/lang/paquet-saisies_ar.php diff --git a/design_system_dependences/saisies/v5.2.0/lang/paquet-saisies_de.php b/design_system_dependences/saisies/lang/paquet-saisies_de.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/paquet-saisies_de.php rename to design_system_dependences/saisies/lang/paquet-saisies_de.php diff --git a/design_system_dependences/saisies/v5.2.0/lang/paquet-saisies_en.php b/design_system_dependences/saisies/lang/paquet-saisies_en.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/paquet-saisies_en.php rename to design_system_dependences/saisies/lang/paquet-saisies_en.php diff --git a/design_system_dependences/saisies/v5.2.0/lang/paquet-saisies_es.php b/design_system_dependences/saisies/lang/paquet-saisies_es.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/paquet-saisies_es.php rename to design_system_dependences/saisies/lang/paquet-saisies_es.php diff --git a/design_system_dependences/saisies/v5.2.0/lang/paquet-saisies_fr.php b/design_system_dependences/saisies/lang/paquet-saisies_fr.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/paquet-saisies_fr.php rename to design_system_dependences/saisies/lang/paquet-saisies_fr.php diff --git a/design_system_dependences/saisies/v5.2.0/lang/paquet-saisies_fr_tu.php b/design_system_dependences/saisies/lang/paquet-saisies_fr_tu.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/paquet-saisies_fr_tu.php rename to design_system_dependences/saisies/lang/paquet-saisies_fr_tu.php diff --git a/design_system_dependences/saisies/v5.2.0/lang/paquet-saisies_it.php b/design_system_dependences/saisies/lang/paquet-saisies_it.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/paquet-saisies_it.php rename to design_system_dependences/saisies/lang/paquet-saisies_it.php diff --git a/design_system_dependences/saisies/v5.2.0/lang/paquet-saisies_nl.php b/design_system_dependences/saisies/lang/paquet-saisies_nl.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/paquet-saisies_nl.php rename to design_system_dependences/saisies/lang/paquet-saisies_nl.php diff --git a/design_system_dependences/saisies/v5.2.0/lang/paquet-saisies_pt_br.php b/design_system_dependences/saisies/lang/paquet-saisies_pt_br.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/paquet-saisies_pt_br.php rename to design_system_dependences/saisies/lang/paquet-saisies_pt_br.php diff --git a/design_system_dependences/saisies/v5.2.0/lang/paquet-saisies_ru.php b/design_system_dependences/saisies/lang/paquet-saisies_ru.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/paquet-saisies_ru.php rename to design_system_dependences/saisies/lang/paquet-saisies_ru.php diff --git a/design_system_dependences/saisies/v5.2.0/lang/paquet-saisies_sk.php b/design_system_dependences/saisies/lang/paquet-saisies_sk.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/paquet-saisies_sk.php rename to design_system_dependences/saisies/lang/paquet-saisies_sk.php diff --git a/design_system_dependences/saisies/v5.2.0/lang/saisies.xml b/design_system_dependences/saisies/lang/saisies.xml similarity index 72% rename from design_system_dependences/saisies/v5.2.0/lang/saisies.xml rename to design_system_dependences/saisies/lang/saisies.xml index 5d101c9d1756b005bf1c24774db663ba568082f8..90983e8d5cdee7a91c90ebd14e0243de8a490964 100644 --- a/design_system_dependences/saisies/v5.2.0/lang/saisies.xml +++ b/design_system_dependences/saisies/lang/saisies.xml @@ -5,15 +5,15 @@ url="https://trad.spip.net" source="https://git.spip.net/spip-contrib-extensions/saisies.git" reference="fr"> - <langue code="ar" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=ar" total="275" traduits="16" relire="0" modifs="7" nouveaux="252" pourcent="5.82"> + <langue code="ar" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=ar" total="276" traduits="16" relire="0" modifs="7" nouveaux="253" pourcent="5.80"> <traducteur nom="George" lien="https://trad.spip.net/auteur/جورج-Ù‚Ù†Ø¯Ù„ÙØª" /> </langue> - <langue code="ca" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=ca" total="275" traduits="77" relire="0" modifs="17" nouveaux="181" pourcent="28.00" /> - <langue code="de" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=de" total="275" traduits="183" relire="0" modifs="7" nouveaux="85" pourcent="66.55"> + <langue code="ca" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=ca" total="276" traduits="77" relire="0" modifs="17" nouveaux="182" pourcent="27.90" /> + <langue code="de" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=de" total="276" traduits="183" relire="0" modifs="7" nouveaux="86" pourcent="66.30"> <traducteur nom="klaus++" lien="https://trad.spip.net/auteur/klaus" /> <traducteur nom="Torsten Willmann" lien="https://trad.spip.net/auteur/torsten-willmann" /> </langue> - <langue code="en" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=en" total="275" traduits="227" relire="2" modifs="7" nouveaux="39" pourcent="82.55"> + <langue code="en" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=en" total="276" traduits="227" relire="2" modifs="7" nouveaux="40" pourcent="82.25"> <traducteur nom="George" lien="https://trad.spip.net/auteur/جورج-Ù‚Ù†Ø¯Ù„ÙØª" /> <traducteur nom="Hanjo" lien="https://trad.spip.net/auteur/hanjo" /> <traducteur nom="jack31" lien="https://trad.spip.net/auteur/jack31" /> @@ -21,41 +21,41 @@ <traducteur nom="maieul" lien="https://trad.spip.net/auteur/maieul" /> <traducteur nom="Paolo" lien="https://trad.spip.net/auteur/paolo" /> </langue> - <langue code="es" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=es" total="275" traduits="254" relire="0" modifs="2" nouveaux="19" pourcent="92.36"> + <langue code="es" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=es" total="276" traduits="254" relire="0" modifs="2" nouveaux="20" pourcent="92.03"> <traducteur nom="Cerezo" lien="https://trad.spip.net/auteur/cerezo" /> <traducteur nom="danielquisbert" lien="https://trad.spip.net/auteur/danielquisbert" /> <traducteur nom="kent1" lien="https://trad.spip.net/auteur/kent1" /> <traducteur nom="Raquel S. Bujaldón" lien="https://trad.spip.net/auteur/raquel-s-bujaldon" /> <traducteur nom="severo" lien="https://trad.spip.net/auteur/severo" /> </langue> - <langue code="fa" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=fa" total="275" traduits="91" relire="0" modifs="17" nouveaux="167" pourcent="33.09"> + <langue code="fa" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=fa" total="276" traduits="91" relire="0" modifs="17" nouveaux="168" pourcent="32.97"> <traducteur nom="Davood Hossein" lien="https://trad.spip.net/auteur/davood-hossein" /> </langue> - <langue code="fr" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=fr" total="275" traduits="275" relire="0" modifs="0" nouveaux="0" pourcent="100.00" /> - <langue code="fr_tu" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=fr_tu" total="275" traduits="257" relire="0" modifs="1" nouveaux="17" pourcent="93.45"> + <langue code="fr" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=fr" total="276" traduits="276" relire="0" modifs="0" nouveaux="0" pourcent="100.00" /> + <langue code="fr_tu" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=fr_tu" total="276" traduits="257" relire="0" modifs="1" nouveaux="18" pourcent="93.12"> <traducteur nom="beatnick" lien="https://trad.spip.net/auteur/beatnick" /> <traducteur nom="Cerf" lien="https://trad.spip.net/auteur/cerf" /> <traducteur nom="maieul" lien="https://trad.spip.net/auteur/maieul" /> <traducteur nom="RealET" lien="https://trad.spip.net/auteur/realet" /> </langue> - <langue code="it" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=it" total="275" traduits="239" relire="0" modifs="3" nouveaux="33" pourcent="86.91"> + <langue code="it" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=it" total="276" traduits="239" relire="0" modifs="3" nouveaux="34" pourcent="86.59"> <traducteur nom="Alberto" lien="https://trad.spip.net/auteur/alberto" /> </langue> - <langue code="nl" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=nl" total="275" traduits="177" relire="0" modifs="29" nouveaux="69" pourcent="64.36"> + <langue code="nl" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=nl" total="276" traduits="177" relire="0" modifs="29" nouveaux="70" pourcent="64.13"> <traducteur nom="Hanjo" lien="https://trad.spip.net/auteur/hanjo" /> <traducteur nom="maieul" lien="https://trad.spip.net/auteur/maieul" /> <traducteur nom="mpossoz" lien="https://trad.spip.net/auteur/mpossoz" /> </langue> - <langue code="pt_br" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=pt_br" total="275" traduits="262" relire="0" modifs="0" nouveaux="13" pourcent="95.27"> + <langue code="pt_br" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=pt_br" total="276" traduits="262" relire="0" modifs="0" nouveaux="14" pourcent="94.93"> <traducteur nom="placido" lien="https://trad.spip.net/auteur/placido" /> <traducteur nom="Ricardo Porto" lien="https://trad.spip.net/auteur/ricardo-porto" /> </langue> - <langue code="ru" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=ru" total="275" traduits="122" relire="0" modifs="30" nouveaux="123" pourcent="44.36"> + <langue code="ru" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=ru" total="276" traduits="122" relire="0" modifs="30" nouveaux="124" pourcent="44.20"> <traducteur nom="nazar" lien="https://trad.spip.net/auteur/nazar" /> <traducteur nom="olly" lien="https://trad.spip.net/auteur/olly" /> <traducteur nom="Serge Markitanenko" lien="https://trad.spip.net/auteur/serge-markitanenko" /> </langue> - <langue code="sk" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=sk" total="275" traduits="136" relire="0" modifs="25" nouveaux="114" pourcent="49.45"> + <langue code="sk" url="https://trad.spip.net/tradlang_module/saisies?lang_cible=sk" total="276" traduits="136" relire="0" modifs="25" nouveaux="115" pourcent="49.28"> <traducteur nom="jaro" lien="https://trad.spip.net/auteur/jaro" /> </langue> </traduction> diff --git a/design_system_dependences/saisies/v5.2.0/lang/saisies_ar.php b/design_system_dependences/saisies/lang/saisies_ar.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/saisies_ar.php rename to design_system_dependences/saisies/lang/saisies_ar.php diff --git a/design_system_dependences/saisies/v5.2.0/lang/saisies_ca.php b/design_system_dependences/saisies/lang/saisies_ca.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/saisies_ca.php rename to design_system_dependences/saisies/lang/saisies_ca.php diff --git a/design_system_dependences/saisies/v5.2.0/lang/saisies_de.php b/design_system_dependences/saisies/lang/saisies_de.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/saisies_de.php rename to design_system_dependences/saisies/lang/saisies_de.php diff --git a/design_system_dependences/saisies/v5.2.0/lang/saisies_en.php b/design_system_dependences/saisies/lang/saisies_en.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/saisies_en.php rename to design_system_dependences/saisies/lang/saisies_en.php diff --git a/design_system_dependences/saisies/v5.2.0/lang/saisies_es.php b/design_system_dependences/saisies/lang/saisies_es.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/saisies_es.php rename to design_system_dependences/saisies/lang/saisies_es.php diff --git a/design_system_dependences/saisies/v5.2.0/lang/saisies_fa.php b/design_system_dependences/saisies/lang/saisies_fa.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/saisies_fa.php rename to design_system_dependences/saisies/lang/saisies_fa.php diff --git a/design_system_dependences/saisies/v5.2.0/lang/saisies_fr.php b/design_system_dependences/saisies/lang/saisies_fr.php similarity index 99% rename from design_system_dependences/saisies/v5.2.0/lang/saisies_fr.php rename to design_system_dependences/saisies/lang/saisies_fr.php index 30dba594da044c7a5a07f4505178b87a4cb0115c..445d26b8e52207ee25598be60a9712cd75ff72d5 100644 --- a/design_system_dependences/saisies/v5.2.0/lang/saisies_fr.php +++ b/design_system_dependences/saisies/lang/saisies_fr.php @@ -197,7 +197,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( 'option_nom_label' => 'Nom du champ', 'option_obligatoire_label' => 'Champ obligatoire', 'option_onglet_label' => 'Onglet', - 'option_onglet_label_case' => 'Afficher sous forme d’onglet.', + 'option_onglet_label_case' => 'Afficher sous forme d’onglet', 'option_onglet_vertical_explication' => 'Il suffit qu’un seul onglet dans un groupe soit marqué comme vertical pour que l’ensemble des onglets soient verticaux.', 'option_onglet_vertical_label_case' => 'Onglet vertical', 'option_option_destinataire_intro_label' => 'Label du premier choix vide (lorsque sous forme de liste)', @@ -207,9 +207,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( 'option_oui_non_valeur_oui_explication' => 'Valeur postée si le oui est sélectionné.', 'option_placeholder_label' => 'Placeholder', 'option_pliable_label' => 'Pliable', - 'option_pliable_label_case' => 'Le groupe de champs pourra être replié.', + 'option_pliable_label_case' => 'Le groupe de champs pourra être replié', 'option_plie_label' => 'Déjà plié', - 'option_plie_label_case' => 'Si le groupe de champs est pliable, il sera déjà plié à l’affichage du formulaire.', + 'option_plie_label_case' => 'Si le groupe de champs est pliable, il sera déjà plié à l’affichage du formulaire', 'option_poster_afficher_si_label_case' => 'Poster les valeurs de toutes les saisies masquées', 'option_previsualisation_explication' => 'Si le porte-plume est activé, ajoute un onglet pour prévisualiser le rendu du texte saisi.', 'option_previsualisation_label' => 'Activer la prévisualisation', diff --git a/design_system_dependences/saisies/v5.2.0/lang/saisies_fr_tu.php b/design_system_dependences/saisies/lang/saisies_fr_tu.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/saisies_fr_tu.php rename to design_system_dependences/saisies/lang/saisies_fr_tu.php diff --git a/design_system_dependences/saisies/v5.2.0/lang/saisies_it.php b/design_system_dependences/saisies/lang/saisies_it.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/saisies_it.php rename to design_system_dependences/saisies/lang/saisies_it.php diff --git a/design_system_dependences/saisies/v5.2.0/lang/saisies_nl.php b/design_system_dependences/saisies/lang/saisies_nl.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/saisies_nl.php rename to design_system_dependences/saisies/lang/saisies_nl.php diff --git a/design_system_dependences/saisies/v5.2.0/lang/saisies_pt_br.php b/design_system_dependences/saisies/lang/saisies_pt_br.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/saisies_pt_br.php rename to design_system_dependences/saisies/lang/saisies_pt_br.php diff --git a/design_system_dependences/saisies/v5.2.0/lang/saisies_ru.php b/design_system_dependences/saisies/lang/saisies_ru.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/saisies_ru.php rename to design_system_dependences/saisies/lang/saisies_ru.php diff --git a/design_system_dependences/saisies/v5.2.0/lang/saisies_sk.php b/design_system_dependences/saisies/lang/saisies_sk.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/lang/saisies_sk.php rename to design_system_dependences/saisies/lang/saisies_sk.php diff --git a/design_system_dependences/saisies/v5.2.0/modeles/formulaire_aide_memoire.html b/design_system_dependences/saisies/modeles/formulaire_aide_memoire.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/modeles/formulaire_aide_memoire.html rename to design_system_dependences/saisies/modeles/formulaire_aide_memoire.html diff --git a/design_system_dependences/saisies/v5.2.0/paquet.xml b/design_system_dependences/saisies/paquet.xml similarity index 99% rename from design_system_dependences/saisies/v5.2.0/paquet.xml rename to design_system_dependences/saisies/paquet.xml index fa6b702a9c08350dd3172e4108f5eb5604617ce4..a23709089d487fb4fa126f155e1b94d9dbdcb825 100644 --- a/design_system_dependences/saisies/v5.2.0/paquet.xml +++ b/design_system_dependences/saisies/paquet.xml @@ -1,7 +1,7 @@ <paquet prefix="saisies" categorie="outil" - version="5.2.0" + version="5.3.0" etat="stable" compatibilite="[4.0.0;4.2.*]" logo="saisies.svg" diff --git a/design_system_dependences/saisies/v5.2.0/phpstan.neon.dist b/design_system_dependences/saisies/phpstan.neon.dist similarity index 100% rename from design_system_dependences/saisies/v5.2.0/phpstan.neon.dist rename to design_system_dependences/saisies/phpstan.neon.dist diff --git a/design_system_dependences/saisies/v5.2.0/phpunit.xml.dist b/design_system_dependences/saisies/phpunit.xml.dist similarity index 100% rename from design_system_dependences/saisies/v5.2.0/phpunit.xml.dist rename to design_system_dependences/saisies/phpunit.xml.dist diff --git a/design_system_dependences/saisies/v5.2.0/prive/exec/construire_formulaire.html b/design_system_dependences/saisies/prive/exec/construire_formulaire.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/prive/exec/construire_formulaire.html rename to design_system_dependences/saisies/prive/exec/construire_formulaire.html diff --git a/design_system_dependences/saisies/v5.2.0/prive/listes/articles_originaux_recursifs.html b/design_system_dependences/saisies/prive/listes/articles_originaux_recursifs.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/prive/listes/articles_originaux_recursifs.html rename to design_system_dependences/saisies/prive/listes/articles_originaux_recursifs.html diff --git a/design_system_dependences/saisies/v5.2.0/prive/listes/rubriques_recursives.html b/design_system_dependences/saisies/prive/listes/rubriques_recursives.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/prive/listes/rubriques_recursives.html rename to design_system_dependences/saisies/prive/listes/rubriques_recursives.html diff --git a/design_system_dependences/saisies/v5.2.0/prive/squelettes/contenu/configurer_saisies.html b/design_system_dependences/saisies/prive/squelettes/contenu/configurer_saisies.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/prive/squelettes/contenu/configurer_saisies.html rename to design_system_dependences/saisies/prive/squelettes/contenu/configurer_saisies.html diff --git a/design_system_dependences/saisies/v5.2.0/prive/squelettes/contenu/saisies_doc.html b/design_system_dependences/saisies/prive/squelettes/contenu/saisies_doc.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/prive/squelettes/contenu/saisies_doc.html rename to design_system_dependences/saisies/prive/squelettes/contenu/saisies_doc.html diff --git a/design_system_dependences/saisies/v5.2.0/prive/squelettes/navigation/saisies_doc.html b/design_system_dependences/saisies/prive/squelettes/navigation/saisies_doc.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/prive/squelettes/navigation/saisies_doc.html rename to design_system_dependences/saisies/prive/squelettes/navigation/saisies_doc.html diff --git a/design_system_dependences/saisies/v5.2.0/prive/style_prive_plugin_saisies.html b/design_system_dependences/saisies/prive/style_prive_plugin_saisies.html similarity index 86% rename from design_system_dependences/saisies/v5.2.0/prive/style_prive_plugin_saisies.html rename to design_system_dependences/saisies/prive/style_prive_plugin_saisies.html index 55047ad5b3670866497710cebfd5f51f4ba03b2d..7cdf316861908feaa1c174c3a294574f37d1c0dc 100644 --- a/design_system_dependences/saisies/v5.2.0/prive/style_prive_plugin_saisies.html +++ b/design_system_dependences/saisies/prive/style_prive_plugin_saisies.html @@ -41,7 +41,7 @@ .saisies-menu-onglets__lien { border-bottom: 2px solid hsla(0, 0%, 0%, 0.066); } -.saisies-onglets-verticaux .saisies-menu-onglets__lien { +.saisies-onglets-verticaux > .saisies-menu-onglets .saisies-menu-onglets__lien { border-#RIGHT: 2px solid hsla(0, 0%, 0%, 0.066); border-bottom: 0; width: 100%; @@ -69,13 +69,13 @@ } @media (min-width: 580px) { - .saisies-onglets-verticaux .saisies-menu-onglets { + .saisies-onglets-verticaux > .saisies-menu-onglets { max-width: var(--spip-form-label-width) !important; /**Ne pas se laisser surprendre par les styles par défaut en 15em **/ min-width: var(--spip-form-label-width) !important; } } -.saisies-onglets-verticaux .saisies-menu-onglets__lien.actif { +.saisies-onglets-verticaux > .saisies-menu-onglets .saisies-menu-onglets__lien.actif { background-color: hsla(0, 0%, 0%, 0.05); border-bottom-color: hsla(0, 0%, 0%, 0.066); border-right-color: #ENV{foncee}; @@ -85,16 +85,16 @@ du contenu d'un onglet vertical décalée vers le bas **/ -.saisies-onglets-verticaux .saisies-contenu-onglet > fieldset{ +.saisies-onglets-verticaux > .saisies-contenu-onglet > fieldset{ padding-top: 0; padding-bottom: 0; } -.saisies-onglets-verticaux .saisies-contenu-onglet > fieldset > .editer-groupe:first-of-type, -.saisies-onglets-verticaux .saisies-contenu-onglet > fieldset > .editer-groupe:first-of-type > div.editer:first-of-type;/** On cible volontairement div.editer pour ne pas avoir .fieldset.editer, où il est nécessaire de garder un peu de padding-top pour pas que le libellé/legend soit collé à la suite**/ +.saisies-onglets-verticaux > .saisies-contenu-onglet > fieldset > .editer-groupe:first-of-type, +.saisies-onglets-verticaux > .saisies-contenu-onglet > fieldset > .editer-groupe:first-of-type > div.editer:first-of-type;/** On cible volontairement div.editer pour ne pas avoir .fieldset.editer, où il est nécessaire de garder un peu de padding-top pour pas que le libellé/legend soit collé à la suite**/ { padding-top: 0; } -.saisies-onglets-verticaux .saisies-menu-onglets__lien { +.saisies-onglets-verticaux > .saisies-menu-onglets .saisies-menu-onglets__lien { white-space: normal;/* Les onglets horizontaux ont nowrap*/ } @@ -114,7 +114,7 @@ .formulaire_spip .saisies-onglets fieldset:not(.editer) fieldset:not(.editer) { margin-left: 0; } -.formulaire_spip .saisies-onglets fieldset:not(.editer) fieldset:not(.editer) fieldset:not(.editer) { +.formulaire_spip .saisies-onglets fieldset:not(.editer) > fieldset:not(.editer) > fieldset:not(.editer) { margin-left: var(--spip-form-fieldset-offset); } diff --git a/design_system_dependences/saisies/v5.2.0/prive/themes/spip/images/formulaire-action-annuler-xx.svg b/design_system_dependences/saisies/prive/themes/spip/images/formulaire-action-annuler-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/prive/themes/spip/images/formulaire-action-annuler-xx.svg rename to design_system_dependences/saisies/prive/themes/spip/images/formulaire-action-annuler-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/prive/themes/spip/images/formulaire-action-configurer-xx.svg b/design_system_dependences/saisies/prive/themes/spip/images/formulaire-action-configurer-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/prive/themes/spip/images/formulaire-action-configurer-xx.svg rename to design_system_dependences/saisies/prive/themes/spip/images/formulaire-action-configurer-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/prive/themes/spip/images/formulaire-action-deplacer-xx.svg b/design_system_dependences/saisies/prive/themes/spip/images/formulaire-action-deplacer-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/prive/themes/spip/images/formulaire-action-deplacer-xx.svg rename to design_system_dependences/saisies/prive/themes/spip/images/formulaire-action-deplacer-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/prive/themes/spip/images/formulaire-action-dupliquer-xx.svg b/design_system_dependences/saisies/prive/themes/spip/images/formulaire-action-dupliquer-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/prive/themes/spip/images/formulaire-action-dupliquer-xx.svg rename to design_system_dependences/saisies/prive/themes/spip/images/formulaire-action-dupliquer-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/prive/themes/spip/images/formulaire-action-enregistrer-xx.svg b/design_system_dependences/saisies/prive/themes/spip/images/formulaire-action-enregistrer-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/prive/themes/spip/images/formulaire-action-enregistrer-xx.svg rename to design_system_dependences/saisies/prive/themes/spip/images/formulaire-action-enregistrer-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/prive/themes/spip/images/formulaire-action-reinitialiser-xx.svg b/design_system_dependences/saisies/prive/themes/spip/images/formulaire-action-reinitialiser-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/prive/themes/spip/images/formulaire-action-reinitialiser-xx.svg rename to design_system_dependences/saisies/prive/themes/spip/images/formulaire-action-reinitialiser-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/prive/themes/spip/images/formulaire-action-supprimer-xx.svg b/design_system_dependences/saisies/prive/themes/spip/images/formulaire-action-supprimer-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/prive/themes/spip/images/formulaire-action-supprimer-xx.svg rename to design_system_dependences/saisies/prive/themes/spip/images/formulaire-action-supprimer-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/prive/themes/spip/images/saisies-xx.svg b/design_system_dependences/saisies/prive/themes/spip/images/saisies-xx.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/prive/themes/spip/images/saisies-xx.svg rename to design_system_dependences/saisies/prive/themes/spip/images/saisies-xx.svg diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/_base.html b/design_system_dependences/saisies/saisies-vues/_base.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/_base.html rename to design_system_dependences/saisies/saisies-vues/_base.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/auteurs.html b/design_system_dependences/saisies/saisies-vues/auteurs.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/auteurs.html rename to design_system_dependences/saisies/saisies-vues/auteurs.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/case.html b/design_system_dependences/saisies/saisies-vues/case.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/case.html rename to design_system_dependences/saisies/saisies-vues/case.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/checkbox.html b/design_system_dependences/saisies/saisies-vues/checkbox.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/checkbox.html rename to design_system_dependences/saisies/saisies-vues/checkbox.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/choix_grille.html b/design_system_dependences/saisies/saisies-vues/choix_grille.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/choix_grille.html rename to design_system_dependences/saisies/saisies-vues/choix_grille.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/conteneur_inline.html b/design_system_dependences/saisies/saisies-vues/conteneur_inline.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/conteneur_inline.html rename to design_system_dependences/saisies/saisies-vues/conteneur_inline.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/couleur.html b/design_system_dependences/saisies/saisies-vues/couleur.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/couleur.html rename to design_system_dependences/saisies/saisies-vues/couleur.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/date.html b/design_system_dependences/saisies/saisies-vues/date.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/date.html rename to design_system_dependences/saisies/saisies-vues/date.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/date_jour_mois_annee.html b/design_system_dependences/saisies/saisies-vues/date_jour_mois_annee.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/date_jour_mois_annee.html rename to design_system_dependences/saisies/saisies-vues/date_jour_mois_annee.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/destinataires.html b/design_system_dependences/saisies/saisies-vues/destinataires.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/destinataires.html rename to design_system_dependences/saisies/saisies-vues/destinataires.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/explication.html b/design_system_dependences/saisies/saisies-vues/explication.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/explication.html rename to design_system_dependences/saisies/saisies-vues/explication.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/fieldset.html b/design_system_dependences/saisies/saisies-vues/fieldset.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/fieldset.html rename to design_system_dependences/saisies/saisies-vues/fieldset.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/groupe_mots.html b/design_system_dependences/saisies/saisies-vues/groupe_mots.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/groupe_mots.html rename to design_system_dependences/saisies/saisies-vues/groupe_mots.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/mot.html b/design_system_dependences/saisies/saisies-vues/mot.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/mot.html rename to design_system_dependences/saisies/saisies-vues/mot.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/oui_non.html b/design_system_dependences/saisies/saisies-vues/oui_non.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/oui_non.html rename to design_system_dependences/saisies/saisies-vues/oui_non.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/radio.html b/design_system_dependences/saisies/saisies-vues/radio.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/radio.html rename to design_system_dependences/saisies/saisies-vues/radio.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/secteur.html b/design_system_dependences/saisies/saisies-vues/secteur.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/secteur.html rename to design_system_dependences/saisies/saisies-vues/secteur.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/selecteur.html b/design_system_dependences/saisies/saisies-vues/selecteur.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/selecteur.html rename to design_system_dependences/saisies/saisies-vues/selecteur.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/selecteur_article.html b/design_system_dependences/saisies/saisies-vues/selecteur_article.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/selecteur_article.html rename to design_system_dependences/saisies/saisies-vues/selecteur_article.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/selecteur_article_fonctions.php b/design_system_dependences/saisies/saisies-vues/selecteur_article_fonctions.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/selecteur_article_fonctions.php rename to design_system_dependences/saisies/saisies-vues/selecteur_article_fonctions.php diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/selecteur_document.html b/design_system_dependences/saisies/saisies-vues/selecteur_document.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/selecteur_document.html rename to design_system_dependences/saisies/saisies-vues/selecteur_document.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/selecteur_rubrique.html b/design_system_dependences/saisies/saisies-vues/selecteur_rubrique.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/selecteur_rubrique.html rename to design_system_dependences/saisies/saisies-vues/selecteur_rubrique.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/selecteur_rubrique_article.html b/design_system_dependences/saisies/saisies-vues/selecteur_rubrique_article.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/selecteur_rubrique_article.html rename to design_system_dependences/saisies/saisies-vues/selecteur_rubrique_article.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/selecteur_site.html b/design_system_dependences/saisies/saisies-vues/selecteur_site.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/selecteur_site.html rename to design_system_dependences/saisies/saisies-vues/selecteur_site.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/selection.html b/design_system_dependences/saisies/saisies-vues/selection.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/selection.html rename to design_system_dependences/saisies/saisies-vues/selection.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies-vues/selection_multiple.html b/design_system_dependences/saisies/saisies-vues/selection_multiple.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies-vues/selection_multiple.html rename to design_system_dependences/saisies/saisies-vues/selection_multiple.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies.svg b/design_system_dependences/saisies/saisies.svg similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies.svg rename to design_system_dependences/saisies/saisies.svg diff --git a/design_system_dependences/saisies/v5.2.0/saisies/_base.html b/design_system_dependences/saisies/saisies/_base.html similarity index 89% rename from design_system_dependences/saisies/v5.2.0/saisies/_base.html rename to design_system_dependences/saisies/saisies/_base.html index 1ddf2cc354eceea6794695567a4d48ccfa048eb4..d9b0d814a787c275d37c6a3cc3b9cea6e2b1e4d0 100644 --- a/design_system_dependences/saisies/v5.2.0/saisies/_base.html +++ b/design_system_dependences/saisies/saisies/_base.html @@ -46,24 +46,27 @@ #SET{disable,#ENV{disable,#ENV{disable_avec_post}}|et{#ENV{disable,#ENV{disable_avec_post}}|!={non}}|?{#ENV{disable}|is_array|?{#ENV{disable,#ARRAY},disabled},''}} #SET{readonly,#ENV{readonly}|et{#ENV{readonly}|!={non}}|?{readonly,''}} - - [(#REM)<!-- Si la saisie est autonome, ne pas l'encapusler-->] #SET{saisies_autonomes,#VAL|saisies_autonomes} [(#ENV{type_saisie}|in_array{#GET{saisies_autonomes}}|oui) [(#INCLURE{fond=saisies/#ENV{type_saisie},env,nom=#GET{name},obligatoire=#GET{obligatoire},disable=#GET{disable},readonly=#GET{readonly}})] ] - [(#ENV{type_saisie}|in_array{#GET{saisies_autonomes}}|non) - [(#REM)<!-- définir l'encapsulation de la saisie et du label (problèmatique d'accessibilité)-->] #SET{conteneur_tag,div} #SET{conteneur_label,label} - [(#ENV{type_saisie}|in_array{#LISTE{oui_non,radio,checkbox,case,choix_grille}}|oui) + #SET{attribut_for, champ_#ENV{id,#ENV{nom}}|saisie_nom2classe} + [(#ENV{type_saisie}|in_array{#LISTE{oui_non,radio,checkbox,choix_grille}}|oui) #SET{conteneur_tag,fieldset} #SET{conteneur_label,legend} + #SET{attribut_for,''} + ] + [(#ENV{type_saisie}|=={case}|et{#ENV{label_case}|oui}|et{#ENV{label}|oui}) + #SET{conteneur_tag,fieldset} + #SET{conteneur_label,legend} + #SET{attribut_for,''} ] [(#REM)<!-- affichage des erreur -->] @@ -82,8 +85,6 @@ ] #SET{erreur,#ENV{erreurs}|saisies_trouver_erreur{#GET{nom}}} - - [(#REM)<!-- gestion des describedby -->] #SET{describedby, ''} [(#ENV*{explication}|oui) #SET{describedby, #GET{describedby}|concat{' ',explication_#ENV{nom}|saisie_nom2classe} ] @@ -93,9 +94,8 @@ <[(#GET{conteneur_tag})] class="editer editer_[(#ENV{nom}|saisie_nom2classe)][ (#GET{obligatoire})][ (#GET{erreur}|oui)erreur][ (#GET{disable}|oui)disabled][ (#ENV{conteneur_class,#ENV{li_class}})][ (#ENV{type_saisie}|saisie_type2classe)]"[ data-id="(#ENV{id_saisie})"][ data-afficher_si="(#ENV*{afficher_si}|saisies_afficher_si_js{#ENV{_saisies}})"]> #ENV**{inserer_debut} - [(#REM)<!-- tout ce qui se trouve avant les champs de form au sens html -->] - [<[(#GET{conteneur_label})] class="editer-label[ (#GET{conteneur_label}|=={legend}|oui)label][ (#ENV{label_class})]"[(#ENV{type_saisie}|match{oui_non|radio|checkbox|case|fichiers}|non) for="champ_[(#ENV{id,#ENV{nom}}|saisie_nom2classe)]"][(#ENV{type_saisie}|=={fichiers}|et{#ENV{nb_fichiers,1}|=={1}}) for="[(#ENV{id,#ENV{nom}}|saisie_nom2classe)]_0"]>(#ENV*{label})[(#ENV{aide}|oui)#AIDER{#ENV{aide}}][<span class='obligatoire'>(#GET{obligatoire}|oui)[(#ENV*{info_obligatoire}|is_null|?{<:info_obligatoire_02:>,#ENV*{info_obligatoire}})]</span>]</[(#GET{conteneur_label})]>] + [<[(#GET{conteneur_label})] class="editer-label[ (#GET{conteneur_label}|=={legend}|oui)label][ (#ENV{label_class})]"[ for="(#GET{attribut_for})"]>(#ENV*{label})[(#ENV{aide}|oui)#AIDER{#ENV{aide}}][<span class='obligatoire'>(#GET{obligatoire}|oui)[(#ENV*{info_obligatoire}|is_null|?{<:info_obligatoire_02:>,#ENV*{info_obligatoire}})]</span>]</[(#GET{conteneur_label})]>] [<span class='erreur_message' id="[erreur_(#ENV{nom}|saisie_nom2classe)]">(#GET{erreur})</span> #SET{describedby, #GET{describedby}|concat{' ',erreur_#ENV{nom}|saisie_nom2classe} ] [<p class="explication" id="[explication_(#ENV{nom}|saisie_nom2classe)]">(#ENV*{explication})</p>] @@ -104,7 +104,6 @@ [(#REM)<!-- appeler la saisie proprement dite -->] [(#INCLURE{fond=saisies/#ENV{type_saisie},env,nom=#GET{name}, disable=#GET{disable},readonly=#GET{readonly},describedby=#GET{describedby}|trim})] - [<p class="explication explication_apres" id="[explication_apres(#ENV{nom}|saisie_nom2classe)]">(#ENV*{explication_apres})</p>] [(#REM)<!-- gerer le disable avec post -->] diff --git a/design_system_dependences/saisies/v5.2.0/saisies/_base/afficher_si.yaml b/design_system_dependences/saisies/saisies/_base/afficher_si.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/_base/afficher_si.yaml rename to design_system_dependences/saisies/saisies/_base/afficher_si.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/_base/explication.yaml b/design_system_dependences/saisies/saisies/_base/explication.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/_base/explication.yaml rename to design_system_dependences/saisies/saisies/_base/explication.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/_base/obligatoire.yaml b/design_system_dependences/saisies/saisies/_base/obligatoire.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/_base/obligatoire.yaml rename to design_system_dependences/saisies/saisies/_base/obligatoire.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/_base/options_dev.yaml b/design_system_dependences/saisies/saisies/_base/options_dev.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/_base/options_dev.yaml rename to design_system_dependences/saisies/saisies/_base/options_dev.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/articles_originaux.html b/design_system_dependences/saisies/saisies/articles_originaux.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/articles_originaux.html rename to design_system_dependences/saisies/saisies/articles_originaux.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/auteurs.html b/design_system_dependences/saisies/saisies/auteurs.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/auteurs.html rename to design_system_dependences/saisies/saisies/auteurs.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/auteurs.php b/design_system_dependences/saisies/saisies/auteurs.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/auteurs.php rename to design_system_dependences/saisies/saisies/auteurs.php diff --git a/design_system_dependences/saisies/v5.2.0/saisies/auteurs.yaml b/design_system_dependences/saisies/saisies/auteurs.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/auteurs.yaml rename to design_system_dependences/saisies/saisies/auteurs.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/case.html b/design_system_dependences/saisies/saisies/case.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/case.html rename to design_system_dependences/saisies/saisies/case.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/case.php b/design_system_dependences/saisies/saisies/case.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/case.php rename to design_system_dependences/saisies/saisies/case.php diff --git a/design_system_dependences/saisies/v5.2.0/saisies/case.yaml b/design_system_dependences/saisies/saisies/case.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/case.yaml rename to design_system_dependences/saisies/saisies/case.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/champ.html b/design_system_dependences/saisies/saisies/champ.html similarity index 91% rename from design_system_dependences/saisies/v5.2.0/saisies/champ.html rename to design_system_dependences/saisies/saisies/champ.html index 52678f414834051d4e800e4f926250d241f39e27..f095940eeb8476b4eac4a257d1d0d91c7cd45cb0 100644 --- a/design_system_dependences/saisies/v5.2.0/saisies/champ.html +++ b/design_system_dependences/saisies/saisies/champ.html @@ -6,6 +6,7 @@ #ENV{formulaire}|saisies_lister_champs_par_section{ #ARRAY{ forcer_type,#ENV{forcer_type}, + sans_vide,true, callback_section, saisies_saisie_get_label, callback_champ, saisies_saisie_get_label, profondeur_max_output,1 @@ -16,4 +17,6 @@ [(#ENV{type_choix}|=={radio}|oui) #SET{data,#ARRAY{'',#VAL{saisies:saisie_champ_option_aucun}|_T}|array_merge{#GET{data}}} ] +[(#GET{data}|ou{#ENV{obligatoire}}|oui) <INCLURE{fond=saisies/_base,env,type_saisie=#ENV{type_choix,radio},data=#GET{data},option_intro=<:saisies:saisie_champ_option_aucun:>}> +] diff --git a/design_system_dependences/saisies/v5.2.0/saisies/checkbox.html b/design_system_dependences/saisies/saisies/checkbox.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/checkbox.html rename to design_system_dependences/saisies/saisies/checkbox.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/checkbox.php b/design_system_dependences/saisies/saisies/checkbox.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/checkbox.php rename to design_system_dependences/saisies/saisies/checkbox.php diff --git a/design_system_dependences/saisies/v5.2.0/saisies/checkbox.yaml b/design_system_dependences/saisies/saisies/checkbox.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/checkbox.yaml rename to design_system_dependences/saisies/saisies/checkbox.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/choisir_objet.html b/design_system_dependences/saisies/saisies/choisir_objet.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/choisir_objet.html rename to design_system_dependences/saisies/saisies/choisir_objet.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/choisir_objets.html b/design_system_dependences/saisies/saisies/choisir_objets.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/choisir_objets.html rename to design_system_dependences/saisies/saisies/choisir_objets.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/choisir_objets_edit.html b/design_system_dependences/saisies/saisies/choisir_objets_edit.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/choisir_objets_edit.html rename to design_system_dependences/saisies/saisies/choisir_objets_edit.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/choix_grille.html b/design_system_dependences/saisies/saisies/choix_grille.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/choix_grille.html rename to design_system_dependences/saisies/saisies/choix_grille.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/choix_grille.yaml b/design_system_dependences/saisies/saisies/choix_grille.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/choix_grille.yaml rename to design_system_dependences/saisies/saisies/choix_grille.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/conteneur_inline.html b/design_system_dependences/saisies/saisies/conteneur_inline.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/conteneur_inline.html rename to design_system_dependences/saisies/saisies/conteneur_inline.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/conteneur_inline.php b/design_system_dependences/saisies/saisies/conteneur_inline.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/conteneur_inline.php rename to design_system_dependences/saisies/saisies/conteneur_inline.php diff --git a/design_system_dependences/saisies/v5.2.0/saisies/conteneur_inline.yaml b/design_system_dependences/saisies/saisies/conteneur_inline.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/conteneur_inline.yaml rename to design_system_dependences/saisies/saisies/conteneur_inline.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/couleur.html b/design_system_dependences/saisies/saisies/couleur.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/couleur.html rename to design_system_dependences/saisies/saisies/couleur.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/date.html b/design_system_dependences/saisies/saisies/date.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/date.html rename to design_system_dependences/saisies/saisies/date.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/date.php b/design_system_dependences/saisies/saisies/date.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/date.php rename to design_system_dependences/saisies/saisies/date.php diff --git a/design_system_dependences/saisies/v5.2.0/saisies/date.yaml b/design_system_dependences/saisies/saisies/date.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/date.yaml rename to design_system_dependences/saisies/saisies/date.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/date_jour_mois_annee.html b/design_system_dependences/saisies/saisies/date_jour_mois_annee.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/date_jour_mois_annee.html rename to design_system_dependences/saisies/saisies/date_jour_mois_annee.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/destinataires.html b/design_system_dependences/saisies/saisies/destinataires.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/destinataires.html rename to design_system_dependences/saisies/saisies/destinataires.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/destinataires.yaml b/design_system_dependences/saisies/saisies/destinataires.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/destinataires.yaml rename to design_system_dependences/saisies/saisies/destinataires.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/email.html b/design_system_dependences/saisies/saisies/email.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/email.html rename to design_system_dependences/saisies/saisies/email.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/email.php b/design_system_dependences/saisies/saisies/email.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/email.php rename to design_system_dependences/saisies/saisies/email.php diff --git a/design_system_dependences/saisies/v5.2.0/saisies/email.yaml b/design_system_dependences/saisies/saisies/email.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/email.yaml rename to design_system_dependences/saisies/saisies/email.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/explication.html b/design_system_dependences/saisies/saisies/explication.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/explication.html rename to design_system_dependences/saisies/saisies/explication.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/explication.php b/design_system_dependences/saisies/saisies/explication.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/explication.php rename to design_system_dependences/saisies/saisies/explication.php diff --git a/design_system_dependences/saisies/v5.2.0/saisies/explication.yaml b/design_system_dependences/saisies/saisies/explication.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/explication.yaml rename to design_system_dependences/saisies/saisies/explication.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/fieldset.html b/design_system_dependences/saisies/saisies/fieldset.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/fieldset.html rename to design_system_dependences/saisies/saisies/fieldset.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/fieldset.php b/design_system_dependences/saisies/saisies/fieldset.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/fieldset.php rename to design_system_dependences/saisies/saisies/fieldset.php diff --git a/design_system_dependences/saisies/v5.2.0/saisies/fieldset.yaml b/design_system_dependences/saisies/saisies/fieldset.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/fieldset.yaml rename to design_system_dependences/saisies/saisies/fieldset.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/groupe_mots.html b/design_system_dependences/saisies/saisies/groupe_mots.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/groupe_mots.html rename to design_system_dependences/saisies/saisies/groupe_mots.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/hidden.html b/design_system_dependences/saisies/saisies/hidden.html similarity index 82% rename from design_system_dependences/saisies/v5.2.0/saisies/hidden.html rename to design_system_dependences/saisies/saisies/hidden.html index 878e684c4857fbd776ce8371bc67862d7bf62b46..5d592658cd7e4ca8cc1499ac2cf7fc54efd4b4d5 100644 --- a/design_system_dependences/saisies/v5.2.0/saisies/hidden.html +++ b/design_system_dependences/saisies/saisies/hidden.html @@ -1,4 +1,4 @@ -<div class="editer editer_[(#ENV{nom}|saisie_nom2classe)][ (#ENV{conteneur_class,#ENV{li_class}})][ (#ENV{type_saisie}|saisie_type2classe)]" [(#ENV{tout_afficher}|!={oui}|?{style="display:none;"})][ data-id="(#ENV{id_saisie})"][ data-afficher_si="(#ENV*{afficher_si}|saisies_afficher_si_js{#ENV{_saisies}})"]> +<div class="editer editer_[(#ENV{nom}|saisie_nom2classe)][ (#ENV{conteneur_class,#ENV{li_class}})][ (#ENV{type_saisie}|saisie_type2classe)] afficher_si_sans_visuel" [(#ENV{tout_afficher}|!={oui}|?{style="display:none;"})][ data-id="(#ENV{id_saisie})"][ data-afficher_si="(#ENV*{afficher_si}|saisies_afficher_si_js{#ENV{_saisies}})"]> #ENV*{inserer_debut} [(#ENV{tout_afficher}|!={oui}|oui) [<span class='erreur_message'>(#ENV{erreurs/#ENV{nom}})</span>] diff --git a/design_system_dependences/saisies/v5.2.0/saisies/hidden.php b/design_system_dependences/saisies/saisies/hidden.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/hidden.php rename to design_system_dependences/saisies/saisies/hidden.php diff --git a/design_system_dependences/saisies/v5.2.0/saisies/hidden.yaml b/design_system_dependences/saisies/saisies/hidden.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/hidden.yaml rename to design_system_dependences/saisies/saisies/hidden.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/input.html b/design_system_dependences/saisies/saisies/input.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/input.html rename to design_system_dependences/saisies/saisies/input.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/input.php b/design_system_dependences/saisies/saisies/input.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/input.php rename to design_system_dependences/saisies/saisies/input.php diff --git a/design_system_dependences/saisies/v5.2.0/saisies/input.yaml b/design_system_dependences/saisies/saisies/input.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/input.yaml rename to design_system_dependences/saisies/saisies/input.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/mot.html b/design_system_dependences/saisies/saisies/mot.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/mot.html rename to design_system_dependences/saisies/saisies/mot.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/mot.yaml b/design_system_dependences/saisies/saisies/mot.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/mot.yaml rename to design_system_dependences/saisies/saisies/mot.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/oui_non.html b/design_system_dependences/saisies/saisies/oui_non.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/oui_non.html rename to design_system_dependences/saisies/saisies/oui_non.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/oui_non.php b/design_system_dependences/saisies/saisies/oui_non.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/oui_non.php rename to design_system_dependences/saisies/saisies/oui_non.php diff --git a/design_system_dependences/saisies/v5.2.0/saisies/oui_non.yaml b/design_system_dependences/saisies/saisies/oui_non.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/oui_non.yaml rename to design_system_dependences/saisies/saisies/oui_non.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/pays.html b/design_system_dependences/saisies/saisies/pays.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/pays.html rename to design_system_dependences/saisies/saisies/pays.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/police.html b/design_system_dependences/saisies/saisies/police.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/police.html rename to design_system_dependences/saisies/saisies/police.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/position_construire_formulaire.html b/design_system_dependences/saisies/saisies/position_construire_formulaire.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/position_construire_formulaire.html rename to design_system_dependences/saisies/saisies/position_construire_formulaire.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/radio.html b/design_system_dependences/saisies/saisies/radio.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/radio.html rename to design_system_dependences/saisies/saisies/radio.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/radio.php b/design_system_dependences/saisies/saisies/radio.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/radio.php rename to design_system_dependences/saisies/saisies/radio.php diff --git a/design_system_dependences/saisies/v5.2.0/saisies/radio.yaml b/design_system_dependences/saisies/saisies/radio.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/radio.yaml rename to design_system_dependences/saisies/saisies/radio.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/recherche.html b/design_system_dependences/saisies/saisies/recherche.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/recherche.html rename to design_system_dependences/saisies/saisies/recherche.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/secteur.html b/design_system_dependences/saisies/saisies/secteur.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/secteur.html rename to design_system_dependences/saisies/saisies/secteur.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/selecteur.html b/design_system_dependences/saisies/saisies/selecteur.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/selecteur.html rename to design_system_dependences/saisies/saisies/selecteur.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/selecteur_article.html b/design_system_dependences/saisies/saisies/selecteur_article.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/selecteur_article.html rename to design_system_dependences/saisies/saisies/selecteur_article.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/selecteur_article.yaml b/design_system_dependences/saisies/saisies/selecteur_article.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/selecteur_article.yaml rename to design_system_dependences/saisies/saisies/selecteur_article.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/selecteur_document.html b/design_system_dependences/saisies/saisies/selecteur_document.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/selecteur_document.html rename to design_system_dependences/saisies/saisies/selecteur_document.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/selecteur_document.yaml b/design_system_dependences/saisies/saisies/selecteur_document.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/selecteur_document.yaml rename to design_system_dependences/saisies/saisies/selecteur_document.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/selecteur_langue.html b/design_system_dependences/saisies/saisies/selecteur_langue.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/selecteur_langue.html rename to design_system_dependences/saisies/saisies/selecteur_langue.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/selecteur_rubrique.html b/design_system_dependences/saisies/saisies/selecteur_rubrique.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/selecteur_rubrique.html rename to design_system_dependences/saisies/saisies/selecteur_rubrique.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/selecteur_rubrique.yaml b/design_system_dependences/saisies/saisies/selecteur_rubrique.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/selecteur_rubrique.yaml rename to design_system_dependences/saisies/saisies/selecteur_rubrique.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/selecteur_rubrique_article.html b/design_system_dependences/saisies/saisies/selecteur_rubrique_article.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/selecteur_rubrique_article.html rename to design_system_dependences/saisies/saisies/selecteur_rubrique_article.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/selecteur_rubrique_article.yaml b/design_system_dependences/saisies/saisies/selecteur_rubrique_article.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/selecteur_rubrique_article.yaml rename to design_system_dependences/saisies/saisies/selecteur_rubrique_article.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/selecteur_site.html b/design_system_dependences/saisies/saisies/selecteur_site.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/selecteur_site.html rename to design_system_dependences/saisies/saisies/selecteur_site.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/selection.html b/design_system_dependences/saisies/saisies/selection.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/selection.html rename to design_system_dependences/saisies/saisies/selection.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/selection.php b/design_system_dependences/saisies/saisies/selection.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/selection.php rename to design_system_dependences/saisies/saisies/selection.php diff --git a/design_system_dependences/saisies/v5.2.0/saisies/selection.yaml b/design_system_dependences/saisies/saisies/selection.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/selection.yaml rename to design_system_dependences/saisies/saisies/selection.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/selection_multiple.html b/design_system_dependences/saisies/saisies/selection_multiple.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/selection_multiple.html rename to design_system_dependences/saisies/saisies/selection_multiple.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/selection_multiple.php b/design_system_dependences/saisies/saisies/selection_multiple.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/selection_multiple.php rename to design_system_dependences/saisies/saisies/selection_multiple.php diff --git a/design_system_dependences/saisies/v5.2.0/saisies/selection_multiple.yaml b/design_system_dependences/saisies/saisies/selection_multiple.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/selection_multiple.yaml rename to design_system_dependences/saisies/saisies/selection_multiple.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/selection_par_groupe.html b/design_system_dependences/saisies/saisies/selection_par_groupe.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/selection_par_groupe.html rename to design_system_dependences/saisies/saisies/selection_par_groupe.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/statuts_auteurs.html b/design_system_dependences/saisies/saisies/statuts_auteurs.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/statuts_auteurs.html rename to design_system_dependences/saisies/saisies/statuts_auteurs.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/statuts_objet.html b/design_system_dependences/saisies/saisies/statuts_objet.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/statuts_objet.html rename to design_system_dependences/saisies/saisies/statuts_objet.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/telephone.html b/design_system_dependences/saisies/saisies/telephone.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/telephone.html rename to design_system_dependences/saisies/saisies/telephone.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/textarea.html b/design_system_dependences/saisies/saisies/textarea.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/textarea.html rename to design_system_dependences/saisies/saisies/textarea.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/textarea.php b/design_system_dependences/saisies/saisies/textarea.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/textarea.php rename to design_system_dependences/saisies/saisies/textarea.php diff --git a/design_system_dependences/saisies/v5.2.0/saisies/textarea.yaml b/design_system_dependences/saisies/saisies/textarea.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/textarea.yaml rename to design_system_dependences/saisies/saisies/textarea.yaml diff --git a/design_system_dependences/saisies/v5.2.0/saisies/true_false.html b/design_system_dependences/saisies/saisies/true_false.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/true_false.html rename to design_system_dependences/saisies/saisies/true_false.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/type_mime.html b/design_system_dependences/saisies/saisies/type_mime.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/type_mime.html rename to design_system_dependences/saisies/saisies/type_mime.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies/type_mime_fonctions.php b/design_system_dependences/saisies/saisies/type_mime_fonctions.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/type_mime_fonctions.php rename to design_system_dependences/saisies/saisies/type_mime_fonctions.php diff --git a/design_system_dependences/saisies/v5.2.0/saisies/url.html b/design_system_dependences/saisies/saisies/url.html similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies/url.html rename to design_system_dependences/saisies/saisies/url.html diff --git a/design_system_dependences/saisies/v5.2.0/saisies_administrations.php b/design_system_dependences/saisies/saisies_administrations.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies_administrations.php rename to design_system_dependences/saisies/saisies_administrations.php diff --git a/design_system_dependences/saisies/v5.2.0/saisies_afficher_si_js/defaut.php b/design_system_dependences/saisies/saisies_afficher_si_js/defaut.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies_afficher_si_js/defaut.php rename to design_system_dependences/saisies/saisies_afficher_si_js/defaut.php diff --git a/design_system_dependences/saisies/v5.2.0/saisies_fonctions.php b/design_system_dependences/saisies/saisies_fonctions.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/saisies_fonctions.php rename to design_system_dependences/saisies/saisies_fonctions.php diff --git a/design_system_dependences/saisies/v5.2.0/saisies_pipelines.php b/design_system_dependences/saisies/saisies_pipelines.php similarity index 99% rename from design_system_dependences/saisies/v5.2.0/saisies_pipelines.php rename to design_system_dependences/saisies/saisies_pipelines.php index 59b2d8fa87da163a19ea3dd3ba603b800a4acfb0..a8223d9886483da3fc65ef2a799ebbe413c6b497 100644 --- a/design_system_dependences/saisies/v5.2.0/saisies_pipelines.php +++ b/design_system_dependences/saisies/saisies_pipelines.php @@ -117,7 +117,7 @@ function saisies_generer_head($html_content = '', $tester_saisies = false) { $ins_js .= "\n<script type='text/javascript' src='$js'></script>\n"; } // Afficher_si - if (!$tester_saisies || strpos($html_content, 'data-afficher_si') !== false) { + if (!$tester_saisies || strpos($html_content, 'afficher_si') !== false) { $ins_js .= afficher_si_definir_fonctions(); $js = timestamp(find_in_path('javascript/saisies_afficher_si.js')); $ins_js .= "\n<script type='text/javascript' src='$js'></script>\n"; diff --git a/design_system_dependences/saisies/v5.2.0/install.log b/design_system_dependences/saisies/v5.2.0/install.log deleted file mode 100644 index 496ede61b926f2da81c2b7c184ec476b427f498d..0000000000000000000000000000000000000000 --- a/design_system_dependences/saisies/v5.2.0/install.log +++ /dev/null @@ -1,3 +0,0 @@ -installation: charger_plugin -date: 2024-01-16T13:05:58Z -source: ../tmp/cache/chargeur/v5.2.0-e295d2ac-saisies-222af-v5.2.0.zip diff --git a/design_system_dependences/saisies/v5.2.0/verifier/afficher_si.php b/design_system_dependences/saisies/verifier/afficher_si.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/verifier/afficher_si.php rename to design_system_dependences/saisies/verifier/afficher_si.php diff --git a/design_system_dependences/saisies/v5.2.0/verifier/saisies_option_data.php b/design_system_dependences/saisies/verifier/saisies_option_data.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/verifier/saisies_option_data.php rename to design_system_dependences/saisies/verifier/saisies_option_data.php diff --git a/design_system_dependences/saisies/v5.2.0/verifier/valeurs_acceptables.php b/design_system_dependences/saisies/verifier/valeurs_acceptables.php similarity index 100% rename from design_system_dependences/saisies/v5.2.0/verifier/valeurs_acceptables.php rename to design_system_dependences/saisies/verifier/valeurs_acceptables.php diff --git a/design_system_dependences/saisies/v5.2.0/verifier/valeurs_acceptables.yaml b/design_system_dependences/saisies/verifier/valeurs_acceptables.yaml similarity index 100% rename from design_system_dependences/saisies/v5.2.0/verifier/valeurs_acceptables.yaml rename to design_system_dependences/saisies/verifier/valeurs_acceptables.yaml diff --git a/design_system_dependences/spip-bonux/CHANGELOG.md b/design_system_dependences/spip-bonux/CHANGELOG.md new file mode 100644 index 0000000000000000000000000000000000000000..9cc562bf9b907613f93042c356775decbad081ba --- /dev/null +++ b/design_system_dependences/spip-bonux/CHANGELOG.md @@ -0,0 +1,8 @@ +# Changelog + +## Unreleased + +### Fixed + +- spip-contrib-extensions/saisies/254 : refaire fonctionner `_T_ou_typo()` en SPIP 4.2 et > + diff --git a/design_system_dependences/spip-bonux/demo/boucle_et_saut.html b/design_system_dependences/spip-bonux/demo/boucle_et_saut.html new file mode 100644 index 0000000000000000000000000000000000000000..c43b737c3577ccf916297d7131ceff6241c7e758 --- /dev/null +++ b/design_system_dependences/spip-bonux/demo/boucle_et_saut.html @@ -0,0 +1,15 @@ +[(#REM) + + Squelette + (c) 2009 xxx + Distribue sous licence GPL + +] +<BOUCLE_art(ARTICLES){par id_article}{0,10}{'-'}> +#TOTAL_BOUCLE:#COMPTEUR_BOUCLE:#ID_ARTICLE +</BOUCLE_art> +<hr /> +<BOUCLE_art2(ARTICLES){par id_article}{0,10}{'-'}> +#TOTAL_BOUCLE:#COMPTEUR_BOUCLE:#ID_ARTICLE +[(#SAUTER{1})] +</BOUCLE_art2> diff --git a/design_system_dependences/spip-bonux/demo/boucles_iterations.html b/design_system_dependences/spip-bonux/demo/boucles_iterations.html new file mode 100644 index 0000000000000000000000000000000000000000..c90d2fc32c9550ef9924ea09019a001bf72939ac --- /dev/null +++ b/design_system_dependences/spip-bonux/demo/boucles_iterations.html @@ -0,0 +1,37 @@ +<BOUCLE_test10(POUR){tableau 1:10}> +#CLE/#VALEUR<br /> +</BOUCLE_test10> +#TOTAL_BOUCLE +</B_test10> + +<hr /> +<BOUCLE_test11(POUR){tableau 1:2:10}> +#CLE/#VALEUR<br /> +</BOUCLE_test11> +#TOTAL_BOUCLE +</B_test11> + +<hr /> + +<BOUCLE_test12(POUR){tableau 10:-2:1}> +#CLE/#VALEUR<br /> +</BOUCLE_test12> +#TOTAL_BOUCLE +</B_test12> + +<B_test13> + <nav role="navigation" class="pagination">#PAGINATION</nav> +<BOUCLE_test13(POUR){tableau 1:100}{pagination}> +#CLE/#VALEUR<br /> +</BOUCLE_test13> +[#TOTAL_BOUCLE/#GRAND_TOTAL] +</B_test13> + +<hr /> + +<BOUCLE_test14(POUR){tableau 1:7}> + <BOUCLE_test15(POUR){tableau 1:#VALEUR}> + #VALEUR + </BOUCLE_test15> + <br /> +</BOUCLE_test14> diff --git a/design_system_dependences/spip-bonux/demo/noeud.html b/design_system_dependences/spip-bonux/demo/noeud.html new file mode 100644 index 0000000000000000000000000000000000000000..84440052d57022e3f8aeb07b4b940159e4503ed4 --- /dev/null +++ b/design_system_dependences/spip-bonux/demo/noeud.html @@ -0,0 +1,16 @@ +[(#REM) + + Squelette + (c) xxx + Distribue sous licence GPL + +] +#CACHE{0} + +<BOUCLE_rubn(RUBRIQUES){noeud}> +<li>#ID_RUBRIQUE</li> +</BOUCLE_rubn> +<hr /> +<BOUCLE_rubf(RUBRIQUES){!feuille}> +<li>#ID_RUBRIQUE</li> +</BOUCLE_rubf> \ No newline at end of file diff --git a/design_system_dependences/spip-bonux/inc/date_gestion.php b/design_system_dependences/spip-bonux/inc/date_gestion.php new file mode 100644 index 0000000000000000000000000000000000000000..c95e47fbc67fb7a5cc7eaa1b4d4d4096856f4a10 --- /dev/null +++ b/design_system_dependences/spip-bonux/inc/date_gestion.php @@ -0,0 +1,46 @@ +<?php + +/** + * Plugin Spip-Bonux + * Le plugin qui lave plus SPIP que SPIP + * (c) 2008 Mathieu Marcillaud, Cedric Morin, Tetue + * Licence GPL + */ + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +/** + * Recuperer les champs date_xx et heure_xx, verifier leur coherence et les reformater + * + * @param string $suffixe + * @param bool $horaire + * @param array $erreurs + * @return int + */ +function verifier_corriger_date_saisie($suffixe, $horaire, &$erreurs) { + include_spip('inc/filtres'); + $date = _request("date_$suffixe") . ($horaire ? ' ' . trim(_request("heure_$suffixe")) . ':00' : ''); + $date = recup_date($date); + if (!$date) { + return ''; + } + $ret = null; + if (!$ret = mktime(0, 0, 0, $date[1], $date[2], $date[0])) { + $erreurs["date_$suffixe"] = _T('spip_bonux:erreur_date'); + } elseif (!$ret = mktime($date[3], $date[4], $date[5], $date[1], $date[2], $date[0])) { + $erreurs["date_$suffixe"] = _T('spip_bonux:erreur_heure'); + } + if ($ret) { + if (trim(_request("date_$suffixe") !== ($d = date('d/m/Y', $ret)))) { + $erreurs["date_$suffixe"] = _T('spip_bonux:erreur_date_corrigee'); + set_request("date_$suffixe", $d); + } + if ($horaire and trim(_request("heure_$suffixe") !== ($h = date('H:i', $ret)))) { + $erreurs["heure_$suffixe"] = _T('spip_bonux:erreur_heure_corrigee'); + set_request("heure_$suffixe", $h); + } + } + return $ret; +} diff --git a/design_system_dependences/spip-bonux/inc/exporter_csv.php b/design_system_dependences/spip-bonux/inc/exporter_csv.php new file mode 100644 index 0000000000000000000000000000000000000000..9480acdf752ffeefeb5eb6d95750f56fe20587e2 --- /dev/null +++ b/design_system_dependences/spip-bonux/inc/exporter_csv.php @@ -0,0 +1,222 @@ +<?php + +/** + * Plugin Spip-Bonux + * Le plugin qui lave plus SPIP que SPIP + * (c) 2008 Mathieu Marcillaud, Cedric Morin, Tetue + * Licence GPL + * + * Fonctions d'export d'une requete sql ou d'un tableau + * au format CSV + * Merge du plugin csv_import et spip-surcharges + * + */ + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +include_spip('inc/charsets'); +include_spip('inc/filtres'); +include_spip('inc/texte'); + +/** + * Exporter un champ pour un export CSV : pas de retour a la ligne, + * et echapper les guillements par des doubles guillemets + * + * NB : on supprime les retours lignes qui sont pourtant supportes par le standard CSV et LibreOffice, mais pas par Excel + * + * @param string $champ + * @return string + */ +function exporter_csv_champ($champ) { + $champ = str_replace("\r\n", "\n", $champ); + $champ = str_replace("\r", "\n", $champ); + $champ = preg_replace(",\n\s+,ms", "\n", $champ); + $champ = preg_replace(',\s[\s]+,ms', ' ', $champ); + $champ = str_replace('"', '""', $champ); + + return '"' . $champ . '"'; +} + +/** + * Exporter un champ pour un export CSV sans retour a la ligne, + * (qui sont supportees par le standard CSV et LibreOffice, mais pas par Excel) + * + * et echapper les guillements par des doubles guillemets + * + * @param string $champ + * @return string + */ +function exporter_csv_champ_no_lf($champ) { + $champ = preg_replace(',[\s]+,ms', ' ', $champ); + $champ = str_replace('"', '""', $champ); + + return '"' . $champ . '"'; +} + +/** + * Exporter une ligne complete au format CSV, avec delimiteur fourni + * + * @uses exporter_csv_champ() + * @uses exporter_csv_champ_no_lf() + * + * @param int $nb + * @param array $ligne + * @param string $delim + * @param string|null $importer_charset + * Si défini exporte dans le charset indiqué + * @param callable $callback + * @return string + */ +function exporter_csv_ligne_numerotee($nb, $ligne, $delim = ',', $importer_charset = null, $callback = null, $fonction_exporter_champ = null) { + if ($callback) { + $ligne = call_user_func($callback, $nb, $ligne, $importer_charset); + } + if (!$fonction_exporter_champ or !function_exists($fonction_exporter_champ)) { + $fonction_exporter_champ = 'exporter_csv_champ'; + } + $output = join($delim, array_map($fonction_exporter_champ, $ligne)) . "\r\n"; + if ($importer_charset) { + $output = str_replace('’', '\'', $output); + $output = unicode2charset(html2unicode(charset2unicode($output)), $importer_charset); + } + return $output; +} + +/** + * @deprecated + * + * @param $ligne + * @param string $delim + * @param null $importer_charset + * @return string + */ +function exporter_csv_ligne($ligne, $delim = ',', $importer_charset = null) { + return exporter_csv_ligne_numerotee(null, $ligne, $delim, $importer_charset); +} + +/** + * Exporte une ressource sous forme de fichier CSV + * + * La ressource peut etre un tableau ou une resource SQL issue d'une requete + * L'extension est choisie en fonction du delimiteur : + * - si on utilise ',' c'est un vrai csv avec extension csv + * - si on utilise ';' ou tabulation c'est pour E*cel, et on exporte en iso-truc, avec une extension .xls + * + * @uses exporter_csv_ligne() + * + * @param string $titre + * titre utilise pour nommer le fichier + * @param array|resource $resource + * @param array $options + * string $delim : delimiteur + * array $entetes : tableau d'en-tetes pour nommer les colonnes (genere la premiere ligne) + * bool $envoyer : pour envoyer le fichier exporte (permet le telechargement) + * string $charset : charset de l'export si different de celui du site + * callable callback : fonction callback a appeler sur chaque ligne pour mettre en forme/completer les donnees + * @return string + */ +function inc_exporter_csv_dist($titre, $resource, $options = []) { + + // support ancienne syntaxe + // inc_exporter_csv_dist($titre, $resource, $delim = ', ', $entetes = null, $envoyer = true) + if (!is_array($options)) { + $args = func_get_args(); + $options = []; + foreach ([2 => 'delim', 3 => 'entetes', 4 => 'envoyer'] as $k => $option) { + if (!empty($args[$k])) { + $options[$option] = $args[$k]; + } + } + } + + $default_options = [ + 'delim' => ', ', + 'entetes' => null, + 'envoyer' => true, + 'charset' => null, + 'callback' => null, + ]; + $options = array_merge($default_options, $options); + + $filename = preg_replace(',[^-_\w]+,', '_', translitteration(textebrut(typo($titre)))); + + if ($options['delim'] == 'TAB') { + $options['delim'] = "\t"; + } + if (!in_array($options['delim'], [',', ';', "\t"])) { + $options['delim'] = ','; + } + + $charset = $GLOBALS['meta']['charset']; + $importer_charset = null; + $fonction_exporter_champ = null; + if ($options['delim'] == ',') { + $extension = 'csv'; + } else { + $extension = 'xls'; + # Excel n'accepte pas l'utf-8 ni les entites html... on transcode tout ce qu'on peut + $charset = 'iso-8859-1'; + # Excel n'accepte pas les retours ligne dans les CSV + $fonction_exporter_champ = 'exporter_csv_champ_no_lf'; + } + // mais si une option charset est explicite, elle a la priorite + if (!empty($options['charset'])) { + $charset = $options['charset']; + } + + $importer_charset = (($charset === $GLOBALS['meta']['charset']) ? null : $charset); + + $filename = "$filename.$extension"; + + $output = ''; + $nb = 0; + if (!empty($options['entetes']) and is_array($options['entetes'])) { + $output = exporter_csv_ligne_numerotee($nb, $options['entetes'], $options['delim'], $importer_charset, $options['callback'], $fonction_exporter_champ); + } + // les donnees commencent toujours a la ligne 1, qu'il y ait ou non des entetes + $nb++; + + if ($options['envoyer']) { + $disposition = ($options['envoyer'] === 'attachment' ? 'attachment' : 'inline'); + header("Content-Type: text/comma-separated-values; charset=$charset"); + header("Content-Disposition: $disposition; filename=$filename"); + + // Vider tous les tampons + $level = @ob_get_level(); + while ($level--) { + @ob_end_flush(); + } + } + + // si envoyer=='attachment' on passe par un fichier temporaire + // sinon on ecrit directement sur stdout + if ($options['envoyer'] and $options['envoyer'] !== 'attachment') { + $fichier = 'php://output'; + } + else { + $fichier = sous_repertoire(_DIR_CACHE, 'export') . $filename; + } + + $fp = fopen($fichier, 'w'); + $length = fwrite($fp, $output); + + while ($row = is_array($resource) ? array_shift($resource) : sql_fetch($resource)) { + $output = exporter_csv_ligne_numerotee($nb, $row, $options['delim'], $importer_charset, $options['callback'], $fonction_exporter_champ); + $length += fwrite($fp, $output); + $nb++; + } + fclose($fp); + + if ($options['envoyer']) { + if ($options['envoyer'] === 'attachment') { + header("Content-Length: $length"); + readfile($fichier); + } + // si on a envoye inline, c'est deja tout bon + exit; + } + + return $fichier; +} diff --git a/design_system_dependences/spip-bonux/inc/exporter_xls.php b/design_system_dependences/spip-bonux/inc/exporter_xls.php new file mode 100644 index 0000000000000000000000000000000000000000..e8ac1f2a0cc9dc67902322b9b2b0401bdd281ab7 --- /dev/null +++ b/design_system_dependences/spip-bonux/inc/exporter_xls.php @@ -0,0 +1,134 @@ +<?php + +/** + * Plugin Spip-Bonux + * Le plugin qui lave plus SPIP que SPIP + * (c) 2008 Mathieu Marcillaud, Cedric Morin, Tetue + * Licence GPL + * + * Fonctions d'export d'une requete sql ou d'un tableau + * au format CSV + * Merge du plugin csv_import et spip-surcharges + * + */ + +use Export\ExportDataExcel; + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +include_spip('inc/charsets'); +include_spip('inc/filtres'); +include_spip('inc/texte'); + + +/** + * Preparer une ligne avant export XLS : charset si besoin + callback + * + * @param int $nb + * @param array $ligne + * @param string|null $importer_charset + * Si défini exporte dans le charset indiqué + * @param callable $callback + * @return string + */ +function exporter_xls_preparer_ligne_numerotee($nb, $ligne, $importer_charset = null, $callback = null) { + if ($callback) { + $ligne = call_user_func($callback, $nb, $ligne, $importer_charset); + } + foreach ($ligne as $k => $v) { + $ligne[$k] = str_replace('’', '\'', $ligne[$k]); + $ligne[$k] = rtrim($ligne[$k]); + if ($importer_charset and !is_numeric($v)) { + $ligne[$k] = unicode2charset(html2unicode(charset2unicode($ligne[$k])), $importer_charset); + } + } + return $ligne; +} + +/** + * Exporte une ressource sous forme de fichier CSV + * + * La ressource peut etre un tableau ou une resource SQL issue d'une requete + * L'extension est choisie en fonction du delimiteur : + * - si on utilise ',' c'est un vrai csv avec extension csv + * - si on utilise ';' ou tabulation c'est pour E*cel, et on exporte en iso-truc, avec une extension .xls + * + * @uses exporter_xls_ligne() + * + * @param string $titre + * titre utilise pour nommer le fichier + * @param array|resource $resource + * @param array $options + * array $entetes : tableau d'en-tetes pour nommer les colonnes (genere la premiere ligne) + * bool $envoyer : pour envoyer le fichier exporte (permet le telechargement) + * string $charset : charset de l'export si different de celui du site + * callable callback : fonction callback a appeler sur chaque ligne pour mettre en forme/completer les donnees + * @return string + */ +function inc_exporter_xls_dist($titre, $resource, $options = []) { + + include_spip('lib/php-export-data/src/ExportData'); + include_spip('lib/php-export-data/src/ExportDataExcel'); + + $default_options = [ + 'entetes' => null, + 'envoyer' => true, + 'charset' => null, + 'callback' => null, + ]; + $options = array_merge($default_options, $options); + + $filename = preg_replace(',[^-_\w]+,', '_', translitteration(textebrut(typo($titre)))); + + + $extension = 'xls'; + + $charset = $GLOBALS['meta']['charset']; + // mais si une option charset est explicite, elle a la priorite + if (!empty($options['charset'])) { + $charset = $options['charset']; + } + + $importer_charset = (($charset === $GLOBALS['meta']['charset']) ? null : $charset); + $filename = "$filename.$extension"; + $fichier = sous_repertoire(_DIR_CACHE, 'export') . $filename; + + if ($options['envoyer']) { + // Vider tous les tampons + $level = @ob_get_level(); + while ($level--) { + @ob_end_flush(); + } + } + + $exporter = new ExportDataExcel($options['envoyer'] ? 'browser' : 'file', $fichier); + $exporter->encoding = $charset; + + $exporter->initialize(); // start export + + $nb = 0; + if (!empty($options['entetes']) and is_array($options['entetes'])) { + $ligne = exporter_xls_preparer_ligne_numerotee($nb, $options['entetes'], $importer_charset, $options['callback']); + $exporter->addRow($ligne); + } + + // les donnees commencent toujours a la ligne 1, qu'il y ait ou non des entetes + $nb++; + + while ($row = is_array($resource) ? array_shift($resource) : sql_fetch($resource)) { + $ligne = exporter_xls_preparer_ligne_numerotee($nb, $row, $importer_charset, $options['callback']); + $exporter->addRow($ligne); + $nb++; + } + + $exporter->finalize(); // writes the footer, flushes remaining data to browser. + + if ($options['envoyer']) { + // si on a envoye inline, c'est deja tout bon + exit; + } + + return $fichier; +} diff --git a/design_system_dependences/spip-bonux/inc/importer_csv.php b/design_system_dependences/spip-bonux/inc/importer_csv.php new file mode 100644 index 0000000000000000000000000000000000000000..91245861b7c10a725daa9339dcf8d59db0778d1a --- /dev/null +++ b/design_system_dependences/spip-bonux/inc/importer_csv.php @@ -0,0 +1,163 @@ +<?php + +/** + * Plugin Spip-Bonux + * Le plugin qui lave plus SPIP que SPIP + * (c) 2008 Mathieu Marcillaud, Cedric Morin, Tetue + * Licence GPL + * + * Fonctions de lecture d'un fichier CSV pour transformation en array() + * + */ + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +include_spip('inc/charsets'); + +/** + * Based on an example by ramdac at ramdac dot org + * Returns a multi-dimensional array from a CSV file optionally using the + * first row as a header to create the underlying data as associative arrays. + * + * @param string $file Filepath including filename + * @param bool $head Use first row as header. + * @param string $delim Specify a delimiter other than a comma. + * @param int $len Line length to be passed to fgetcsv + * @return array or false on failure to retrieve any rows. + */ + +/** + * Importer le charset d'une ligne + * + * Importe un texte de CSV dans un charset et le passe dans le charset du site (utf8 probablement) + * Les CSV peuvent sous ms@@@ avoir le charset 'iso-8859-1', mais pasfois aussi 'windows-1252' :/ + * + * @param mixed $texte + * @param bool|string $definir_charset_source + * false : ne fait rien + * string : utilisera pour les prochains imports le charset indiqué + * true : remet le charset d'import par défaut de la fonction + * @return array + */ +function importer_csv_importcharset($texte, $definir_charset_source = false) { + // le plus frequent, en particulier avec les trucs de ms@@@ + static $charset_source = 'iso-8859-1'; + if ($definir_charset_source) { + if ($definir_charset_source === true) { + $charset_source = 'iso-8859-1'; + } else { + $charset_source = $definir_charset_source; + } + } + // mais open-office sait faire mieux, donc mefiance ! + if (is_utf8($texte)) { + $charset = 'utf-8'; + } else { + $charset = $charset_source; + } + return importer_charset($texte, $charset); +} + +/** + * enlever les accents des cles presentes dans le head, + * sinon ca pose des problemes ... + * + * @param string $key + * @return string + */ +function importer_csv_nettoie_key($key) { + return translitteration($key); +} + +/** + * Lit un fichier csv et retourne un tableau + * si $head est true, la premiere ligne est utilisee en header + * pour generer un tableau associatif + * + * @param string $file + * @param array $options + * bool $head + * string $delim + * string $enclos + * int $len + * string $charset_source : Permet de définir un charset source du CSV, si différent de utf-8 ou iso-8859-1 + * @return false|array + */ +function inc_importer_csv_dist($file, $options = []) { + + // support ancienne syntaxe + // inc_importer_csv_dist($file, $head = false, $delim = ',', $enclos = '"', $len = 10000, $charset_source = '') + if (!is_array($options)) { + $args = func_get_args(); + $options = []; + foreach ([1 => 'head', 2 => 'delim', 3 => 'enclos', 4 => 'len', 5 => 'charset_source'] as $k => $option) { + if (!empty($args[$k])) { + $options[$option] = $args[$k]; + } + } + } + + $default_options = [ + 'head' => false, + 'delim' => ',', + 'enclos' => '"', + 'len' => 10000, + 'charset_source' => '', + ]; + $options = array_merge($default_options, $options); + + + $return = false; + if ( + @file_exists($file) + and $handle = fopen($file, 'r') + ) { + if ($options['charset_source']) { + importer_csv_importcharset('', $options['charset_source']); + } + if ($options['head']) { + $header = fgetcsv($handle, $options['len'], $options['delim'], $options['enclos']); + if ($header) { + $header = array_map('importer_csv_importcharset', $header); + $header = array_map('importer_csv_nettoie_key', $header); + $header_type = []; + foreach ($header as $heading) { + if (!isset($header_type[$heading])) { + $header_type[$heading] = 'scalar'; + } else { + $header_type[$heading] = 'array'; + } + } + } + } + + while (($data = fgetcsv($handle, $options['len'], $options['delim'], $options['enclos'])) !== false) { + $data = array_map('importer_csv_importcharset', $data); + if ($options['head'] and isset($header)) { + $row = []; + foreach ($header as $key => $heading) { + if ($header_type[$heading] == 'array') { + if (!isset($row[$heading])) { + $row[$heading] = []; + } + if (isset($data[$key]) and strlen($data[$key])) { + $row[$heading][] = $data[$key]; + } + } else { + $row[$heading] = (isset($data[$key])) ? $data[$key] : ''; + } + } + $return[] = $row; + } else { + $return[] = $data; + } + } + if ($options['charset_source']) { + importer_csv_importcharset('', true); + } + } + + return $return; +} diff --git a/design_system_dependences/spip-bonux/lang/paquet-spip_bonux.xml b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux.xml new file mode 100644 index 0000000000000000000000000000000000000000..b478717ce72e914901b266f483b11bbf164d4408 --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux.xml @@ -0,0 +1,45 @@ +<traduction + module="paquet-spip_bonux" + id="paquet-spip_bonux--spip-bonux-edf6b" + gestionnaire="salvatore" + url="https://trad.spip.net" + source="https://git.spip.net/spip-contrib-extensions/spip-bonux.git" + reference="fr"> + <langue code="ar" url="https://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=ar"> + <traducteur nom="George" lien="https://trad.spip.net/auteur/جورج-Ù‚Ù†Ø¯Ù„ÙØª" /> + </langue> + <langue code="de" url="https://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=de"> + <traducteur nom="klaus++" lien="https://trad.spip.net/auteur/klaus" /> + <traducteur nom="Martin" lien="https://trad.spip.net/auteur/martin" /> + </langue> + <langue code="en" url="https://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=en" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Alberto" lien="https://trad.spip.net/auteur/alberto" /> + <traducteur nom="Gilles" lien="https://trad.spip.net/auteur/gilles" /> + <traducteur nom="jack31" lien="https://trad.spip.net/auteur/jack31" /> + </langue> + <langue code="es" url="https://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=es"> + <traducteur nom="Raquel S. Bujaldón" lien="https://trad.spip.net/auteur/raquel-s-bujaldon" /> + </langue> + <langue code="fa" url="https://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=fa"> + <traducteur nom="Davood Hossein" lien="https://trad.spip.net/auteur/davood-hossein" /> + </langue> + <langue code="fr" url="https://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=fr" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00" /> + <langue code="it" url="https://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=it" total="2" traduits="2" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Alberto" lien="https://trad.spip.net/auteur/alberto" /> + </langue> + <langue code="ja" url="https://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=ja"> + <traducteur nom="origenius" lien="https://trad.spip.net/auteur/origenius" /> + </langue> + <langue code="nl" url="https://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=nl"> + <traducteur nom="Hanjo" lien="https://trad.spip.net/auteur/hanjo" /> + </langue> + <langue code="pt_br" url="https://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=pt_br"> + <traducteur nom="Ricardo Porto" lien="https://trad.spip.net/auteur/ricardo-porto" /> + </langue> + <langue code="ru" url="https://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=ru"> + <traducteur nom="Serge Markitanenko" lien="https://trad.spip.net/auteur/serge-markitanenko" /> + </langue> + <langue code="sk" url="https://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=sk"> + <traducteur nom="jaro" lien="https://trad.spip.net/auteur/jaro" /> + </langue> +</traduction> diff --git a/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_ar.php b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_ar.php new file mode 100644 index 0000000000000000000000000000000000000000..df5b947f8d78c1189b025255a3d9f6b8ed658333 --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_ar.php @@ -0,0 +1,16 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=ar +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // S + 'spip_bonux_description' => 'الملØÙ‚ الذي يجعل SPIP أكثر بياضاً من SPIPØŒ ويقدم هدايا ممتعة! +جداول، عدادات، الخ.', # MODIF + 'spip_bonux_slogan' => 'الملØÙ‚ الذي يجعل SPIP أكثر بياضاً من.' # MODIF +); diff --git a/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_de.php b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_de.php new file mode 100644 index 0000000000000000000000000000000000000000..9032fb8c3c39ec6cb594c6f893a626d0c0df3d86 --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_de.php @@ -0,0 +1,16 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=de +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // S + 'spip_bonux_description' => 'Das Plug-in, das SPIPer wäscht als SPIP, mit tollen Extras! +Tabellen, Zähler, usw.', # MODIF + 'spip_bonux_slogan' => 'Das Plug-in, das SPIPer wäscht als SPIP.' # MODIF +); diff --git a/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_en.php b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_en.php new file mode 100644 index 0000000000000000000000000000000000000000..1904db2e67ac5a68aa1e70be926ef77c5e9796fe --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_en.php @@ -0,0 +1,16 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=en +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // S + 'spip_bonux_description' => 'The plugin with great gifts inside! + Charts, counters, etc.', + 'spip_bonux_slogan' => 'The plugin that make SPIP better than SPIP.' +); diff --git a/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_es.php b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_es.php new file mode 100644 index 0000000000000000000000000000000000000000..3f201797041e4e77cf137e082caa9efd48a3edac --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_es.php @@ -0,0 +1,16 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=es +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // S + 'spip_bonux_description' => 'El plugin que lava más SPIP que SPIP, ¡con bonitos regalos dentro! + Tableros, contador, etcétera.', # MODIF + 'spip_bonux_slogan' => 'El plugin que lava más SPIP que SPIP.' # MODIF +); diff --git a/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_fa.php b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_fa.php new file mode 100644 index 0000000000000000000000000000000000000000..c4296e6d0ffe0aa1679f9dba1051ee01767c1a70 --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_fa.php @@ -0,0 +1,15 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=fa +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // S + 'spip_bonux_description' => 'پلاگيني كه اسپيپ را از اسپيپ بهتر مي‌سازد، با هداياي داخلي قشنگ، تابلو، شمارشگر Ùˆ غيره. ', # MODIF + 'spip_bonux_slogan' => 'پلاگيني كه اسپيپ را از اسپيپ بهتر مي‌سازد ' # MODIF +); diff --git a/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_fr.php b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_fr.php new file mode 100644 index 0000000000000000000000000000000000000000..82c0963d877103a30f2a4e18f1cd6ed3b891938d --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_fr.php @@ -0,0 +1,14 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// Fichier source, a modifier dans https://git.spip.net/spip-contrib-extensions/spip-bonux.git +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // S + 'spip_bonux_description' => 'Le plugin avec des chouettes cadeaux dedans ! + Tableaux, compteur, etc.', + 'spip_bonux_slogan' => 'Le plugin SPIP avec une cerise dessus' +); diff --git a/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_it.php b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_it.php new file mode 100644 index 0000000000000000000000000000000000000000..6feaa441ecd54b1e0bcfd912fc451f1a4ae0325e --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_it.php @@ -0,0 +1,16 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=it +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // S + 'spip_bonux_description' => 'Il pugin che rende SPIP migliore! + Tabelle, contatori ecc...', + 'spip_bonux_slogan' => 'Il plugin SPIP con una ciliegina sulla torta' +); diff --git a/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_ja.php b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_ja.php new file mode 100644 index 0000000000000000000000000000000000000000..b446034808dbdc70a717e9aed2119e411e7f6558 --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_ja.php @@ -0,0 +1,15 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=ja +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // S + 'spip_bonux_description' => 'SPIPã«ã„ã‚ã„ã‚ãªæ©Ÿèƒ½ï¼ˆãƒœãƒ¼ãƒŠã‚¹ï¼‰ã‚’è¿½åŠ ã™ã‚‹ãƒ—ラグインã§ã™ã€‚楽ã—ã¿ã«ã—ã¦ãã ã•ã„。', # MODIF + 'spip_bonux_slogan' => 'SPIPã«æ©Ÿèƒ½ï¼ˆãƒœãƒ¼ãƒŠã‚¹ï¼‰ã‚’è¿½åŠ ã™ã‚‹ãƒ—ラグイン' # MODIF +); diff --git a/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_nl.php b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_nl.php new file mode 100644 index 0000000000000000000000000000000000000000..a03038e9650376d997b9fbadbf07e2bc0115ed61 --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_nl.php @@ -0,0 +1,16 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=nl +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // S + 'spip_bonux_description' => 'De plugin die SPIP nog SPIPper maakt met leuke extraatjes! + Tabellen, teller, enz.', # MODIF + 'spip_bonux_slogan' => 'De plugin die SPIP nog SPIPper maakt.' # MODIF +); diff --git a/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_pt_br.php b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_pt_br.php new file mode 100644 index 0000000000000000000000000000000000000000..3c8113fe85b9005fd3760bc6002bc17941306228 --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_pt_br.php @@ -0,0 +1,17 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=pt_br +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // S + 'spip_bonux_description' => 'O plugin que lava mais SPIP que SPIP, com +Le plugin qui lave plus SPIP que SPIP, com brindes no pacote! + Tabela, contador etc.', # MODIF + 'spip_bonux_slogan' => 'O plugin que lava mais SPIP que SPIP.' # MODIF +); diff --git a/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_ru.php b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_ru.php new file mode 100644 index 0000000000000000000000000000000000000000..7e80eab31b49d107dea68792e1f9b321cde2b38a --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_ru.php @@ -0,0 +1,15 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=ru +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // S + 'spip_bonux_description' => 'SPIP Bonux необходим Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ многих других плагинов. Он ÑущеÑтвенно раÑширÑет возможноÑти SPIP, Ð´ÐµÐ»Ð°Ñ ÐµÐ³Ð¾ лучше чем SPIP :)))', # MODIF + 'spip_bonux_slogan' => 'SPIP Bonux ÑущеÑтвенно раÑширÑет возможноÑти SPIP, Ð´ÐµÐ»Ð°Ñ ÐµÐ³Ð¾ лучше чем SPIP :)))' # MODIF +); diff --git a/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_sk.php b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_sk.php new file mode 100644 index 0000000000000000000000000000000000000000..3928ed4b05173161fbd5c766a03f8b1e5c5da996 --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/paquet-spip_bonux_sk.php @@ -0,0 +1,16 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-spip_bonux?lang_cible=sk +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // S + 'spip_bonux_description' => 'Zásuvný modul, ktorý preÄistà SPIP ako SPIP s peknými darÄekmi vnútri! + Tabuľky, poÄÃtadlo, a i.', # MODIF + 'spip_bonux_slogan' => 'Zásuvný modul, ktorý preÄistà SPIP ako SPIP.' # MODIF +); diff --git a/design_system_dependences/spip-bonux/lang/spip_bonux.xml b/design_system_dependences/spip-bonux/lang/spip_bonux.xml new file mode 100644 index 0000000000000000000000000000000000000000..baee520b312dd31afd85923cb328529f8ab4836c --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/spip_bonux.xml @@ -0,0 +1,43 @@ +<traduction + module="spip_bonux" + id="spip_bonux--spip-bonux-edf6b" + gestionnaire="salvatore" + url="https://trad.spip.net" + source="https://git.spip.net/spip-contrib-extensions/spip-bonux.git" + reference="fr"> + <langue code="ar" url="https://trad.spip.net/tradlang_module/spip_bonux?lang_cible=ar" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="George" lien="https://trad.spip.net/auteur/جورج-Ù‚Ù†Ø¯Ù„ÙØª" /> + </langue> + <langue code="de" url="https://trad.spip.net/tradlang_module/spip_bonux?lang_cible=de" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Martin" lien="https://trad.spip.net/auteur/martin" /> + <traducteur nom="Torsten Willmann" lien="https://trad.spip.net/auteur/torsten-willmann" /> + </langue> + <langue code="en" url="https://trad.spip.net/tradlang_module/spip_bonux?lang_cible=en" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="kent1" lien="https://trad.spip.net/auteur/kent1" /> + </langue> + <langue code="es" url="https://trad.spip.net/tradlang_module/spip_bonux?lang_cible=es" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Raquel S. Bujaldón" lien="https://trad.spip.net/auteur/raquel-s-bujaldon" /> + </langue> + <langue code="fa" url="https://trad.spip.net/tradlang_module/spip_bonux?lang_cible=fa" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Davood Hossein" lien="https://trad.spip.net/auteur/davood-hossein" /> + </langue> + <langue code="fr" url="https://trad.spip.net/tradlang_module/spip_bonux?lang_cible=fr" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00" /> + <langue code="it" url="https://trad.spip.net/tradlang_module/spip_bonux?lang_cible=it" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Alberto" lien="https://trad.spip.net/auteur/alberto" /> + </langue> + <langue code="ja" url="https://trad.spip.net/tradlang_module/spip_bonux?lang_cible=ja" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="origenius" lien="https://trad.spip.net/auteur/origenius" /> + </langue> + <langue code="nl" url="https://trad.spip.net/tradlang_module/spip_bonux?lang_cible=nl" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Hanjo" lien="https://trad.spip.net/auteur/hanjo" /> + </langue> + <langue code="pt_br" url="https://trad.spip.net/tradlang_module/spip_bonux?lang_cible=pt_br" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Ricardo Porto" lien="https://trad.spip.net/auteur/ricardo-porto" /> + </langue> + <langue code="ru" url="https://trad.spip.net/tradlang_module/spip_bonux?lang_cible=ru" total="13" traduits="12" relire="0" modifs="1" nouveaux="0" pourcent="92.31"> + <traducteur nom="Serge Markitanenko" lien="https://trad.spip.net/auteur/serge-markitanenko" /> + </langue> + <langue code="sk" url="https://trad.spip.net/tradlang_module/spip_bonux?lang_cible=sk" total="13" traduits="13" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="jaro" lien="https://trad.spip.net/auteur/jaro" /> + </langue> +</traduction> diff --git a/design_system_dependences/spip-bonux/lang/spip_bonux_ar.php b/design_system_dependences/spip-bonux/lang/spip_bonux_ar.php new file mode 100644 index 0000000000000000000000000000000000000000..666468678a06d36f3e8126ef37b1d2b839ebddaa --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/spip_bonux_ar.php @@ -0,0 +1,36 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/spip_bonux?lang_cible=ar +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // A + 'afficher_calendrier' => 'عرض الروزنامة', + 'annee_precedente' => 'السنة السابقة', + 'annee_suivante' => 'السنة التالية', + 'annuler_recherche' => 'إلغاء Ø§Ù„Ø¨ØØ«', + + // B + 'bouton_fermer' => 'إغلاق', + + // E + 'erreur_date' => 'هذا التاريخ غير صØÙŠØ', + 'erreur_date_corrigee' => 'تم تصØÙŠØ التاريخ', + 'erreur_heure' => 'هذه الساعة غير صØÙŠØØ©', + 'erreur_heure_corrigee' => 'تم تصØÙŠØ الساعة', + + // I + 'id_rapide' => 'Ø¥Ø¶Ø§ÙØ© سريعة', + + // M + 'mois_precedent' => 'الشهر السابق', + 'mois_suivant' => 'الشهر التالي', + + // P + 'pages' => 'Ø§Ù„ØµÙØØ§Øª' +); diff --git a/design_system_dependences/spip-bonux/lang/spip_bonux_de.php b/design_system_dependences/spip-bonux/lang/spip_bonux_de.php new file mode 100644 index 0000000000000000000000000000000000000000..2b06ac9db09e97fab6d46b17da7f8f493d47310a --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/spip_bonux_de.php @@ -0,0 +1,36 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/spip_bonux?lang_cible=de +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // A + 'afficher_calendrier' => 'Kalender anzeigen', + 'annee_precedente' => 'Vorheriges Jahr', + 'annee_suivante' => 'Folgendes Jahr', + 'annuler_recherche' => 'Suche abbrechen', + + // B + 'bouton_fermer' => 'Schließen', + + // E + 'erreur_date' => 'Dieses Datum ist nicht korrekt', + 'erreur_date_corrigee' => 'Das Datum wurde korrigiert', + 'erreur_heure' => 'Diese Uhrzeit ist nicht korrekt', + 'erreur_heure_corrigee' => 'Die Uhrzeit wurde korrigiert', + + // I + 'id_rapide' => 'Schnelleingabe', + + // M + 'mois_precedent' => 'Vorheriger Monat', + 'mois_suivant' => 'Folgender Monat', + + // P + 'pages' => 'Seiten' +); diff --git a/design_system_dependences/spip-bonux/lang/spip_bonux_en.php b/design_system_dependences/spip-bonux/lang/spip_bonux_en.php new file mode 100644 index 0000000000000000000000000000000000000000..6c433880ca8ece86f6a9593b1c588b369d331447 --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/spip_bonux_en.php @@ -0,0 +1,36 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/spip_bonux?lang_cible=en +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // A + 'afficher_calendrier' => 'Display the calendar', + 'annee_precedente' => 'Previous year', + 'annee_suivante' => 'Next year', + 'annuler_recherche' => 'Cancel the search', + + // B + 'bouton_fermer' => 'Close', + + // E + 'erreur_date' => 'This date is incorrect', + 'erreur_date_corrigee' => 'The date has been corrected', + 'erreur_heure' => 'This hour is incorrect', + 'erreur_heure_corrigee' => 'The hour has been corrected', + + // I + 'id_rapide' => 'Ajout rapide', + + // M + 'mois_precedent' => 'Previous month', + 'mois_suivant' => 'Next month', + + // P + 'pages' => 'Pages' +); diff --git a/design_system_dependences/spip-bonux/lang/spip_bonux_es.php b/design_system_dependences/spip-bonux/lang/spip_bonux_es.php new file mode 100644 index 0000000000000000000000000000000000000000..82b21412f21f75c5fc5d18eeef500166556b6150 --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/spip_bonux_es.php @@ -0,0 +1,36 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/spip_bonux?lang_cible=es +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // A + 'afficher_calendrier' => 'Mostrar el calendario', + 'annee_precedente' => 'Año anterior', + 'annee_suivante' => 'Año siguiente', + 'annuler_recherche' => 'Cancelar la búsqueda', + + // B + 'bouton_fermer' => 'Cerrar', + + // E + 'erreur_date' => 'Esta fecha es incorrecta', + 'erreur_date_corrigee' => 'La fecha ha sido corregida', + 'erreur_heure' => 'Esta hora es incorrecta', + 'erreur_heure_corrigee' => 'La hora ha sido corregida', + + // I + 'id_rapide' => 'Añadido rápido', + + // M + 'mois_precedent' => 'Mes anterior', + 'mois_suivant' => 'Mes siguiente', + + // P + 'pages' => 'Páginas' +); diff --git a/design_system_dependences/spip-bonux/lang/spip_bonux_fa.php b/design_system_dependences/spip-bonux/lang/spip_bonux_fa.php new file mode 100644 index 0000000000000000000000000000000000000000..5dd5baa1a38fa2625980c077ebcc7807bc89ea9b --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/spip_bonux_fa.php @@ -0,0 +1,36 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/spip_bonux?lang_cible=fa +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // A + 'afficher_calendrier' => 'نمايش تقويم ', + 'annee_precedente' => 'سال پيش ', + 'annee_suivante' => 'سال بعد', + 'annuler_recherche' => 'لغو جستجو', + + // B + 'bouton_fermer' => 'بستن', + + // E + 'erreur_date' => 'اين تاريخ غلط ست', + 'erreur_date_corrigee' => 'تاريخ تصØÙŠØ شده است', + 'erreur_heure' => 'اين ساعت غلط است', + 'erreur_heure_corrigee' => 'ساعت تصØÙŠØ شده است', + + // I + 'id_rapide' => 'Ø§ÙØ²ÙˆØ¯Ù† سريع ', + + // M + 'mois_precedent' => 'ماه پيش ', + 'mois_suivant' => 'ماه بعد ', + + // P + 'pages' => 'ØµÙØÙ‡â€ŒÙ‡Ø§' +); diff --git a/design_system_dependences/spip-bonux/lang/spip_bonux_fr.php b/design_system_dependences/spip-bonux/lang/spip_bonux_fr.php new file mode 100644 index 0000000000000000000000000000000000000000..f5282e9a4853842fc97a869684c75f4e2f357e22 --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/spip_bonux_fr.php @@ -0,0 +1,34 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// Fichier source, a modifier dans https://git.spip.net/spip-contrib-extensions/spip-bonux.git +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // A + 'afficher_calendrier' => 'Afficher le calendrier', + 'annee_precedente' => 'Année précédente', + 'annee_suivante' => 'Année suivante', + 'annuler_recherche' => 'Annuler la recherche', + + // B + 'bouton_fermer' => 'Fermer', + + // E + 'erreur_date' => 'Cette date est incorrecte', + 'erreur_date_corrigee' => 'La date a été corrigée', + 'erreur_heure' => 'Cette heure est incorrecte', + 'erreur_heure_corrigee' => 'L’heure a été corrigée', + + // I + 'id_rapide' => 'Ajout rapide', + + // M + 'mois_precedent' => 'Mois précédent', + 'mois_suivant' => 'Mois suivant', + + // P + 'pages' => 'Pages' +); diff --git a/design_system_dependences/spip-bonux/lang/spip_bonux_it.php b/design_system_dependences/spip-bonux/lang/spip_bonux_it.php new file mode 100644 index 0000000000000000000000000000000000000000..009e1eb665d811cf0e5a0bf1c7a3f7b896587110 --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/spip_bonux_it.php @@ -0,0 +1,36 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/spip_bonux?lang_cible=it +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // A + 'afficher_calendrier' => 'Mostra il calendario', + 'annee_precedente' => 'Anno precedente', + 'annee_suivante' => 'Anno prossimo', + 'annuler_recherche' => 'Annulla la ricerca', + + // B + 'bouton_fermer' => 'Chiudere', + + // E + 'erreur_date' => 'Questa data non è corretta', + 'erreur_date_corrigee' => 'La data è stata corretta', + 'erreur_heure' => 'Quest’orario non è corretto', + 'erreur_heure_corrigee' => 'L’orario è stato corretto', + + // I + 'id_rapide' => 'Aggiunta rapida', + + // M + 'mois_precedent' => 'Mese precedente', + 'mois_suivant' => 'Mese prossimo', + + // P + 'pages' => 'Pagine' +); diff --git a/design_system_dependences/spip-bonux/lang/spip_bonux_ja.php b/design_system_dependences/spip-bonux/lang/spip_bonux_ja.php new file mode 100644 index 0000000000000000000000000000000000000000..b6f78d2b5b565c367c24ef5c5b0f12f9f8ec11f8 --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/spip_bonux_ja.php @@ -0,0 +1,36 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/spip_bonux?lang_cible=ja +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // A + 'afficher_calendrier' => 'カレンダーを表示ã™ã‚‹', + 'annee_precedente' => 'å‰ã®å¹´', + 'annee_suivante' => '次ã®å¹´', + 'annuler_recherche' => '検索をå–り消ã™', + + // B + 'bouton_fermer' => 'é–‰ã˜ã‚‹', + + // E + 'erreur_date' => 'ã“ã®æ—¥ä»˜ã¯æ£ã—ãã¯ã‚りã¾ã›ã‚“。', + 'erreur_date_corrigee' => '日付ãŒä¿®æ£ã•れã¾ã—ãŸã€‚', + 'erreur_heure' => 'æ™‚é–“ã¯æ£ã—ãã‚りã¾ã›ã‚“。', + 'erreur_heure_corrigee' => '時間ãŒä¿®æ£ã•れã¾ã—ãŸã€‚', + + // I + 'id_rapide' => 'ã‚¯ã‚¤ãƒƒã‚¯è¿½åŠ ', + + // M + 'mois_precedent' => 'å‰ã®æœˆ', + 'mois_suivant' => 'æ¬¡ã®æœˆ', + + // P + 'pages' => 'ページ' +); diff --git a/design_system_dependences/spip-bonux/lang/spip_bonux_nl.php b/design_system_dependences/spip-bonux/lang/spip_bonux_nl.php new file mode 100644 index 0000000000000000000000000000000000000000..b6767cbd2129424850bb2a7d5c7fd930186f7865 --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/spip_bonux_nl.php @@ -0,0 +1,36 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/spip_bonux?lang_cible=nl +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // A + 'afficher_calendrier' => 'Toon de kalender', + 'annee_precedente' => 'Vorig jaar', + 'annee_suivante' => 'Volgend jaar', + 'annuler_recherche' => 'Stop met zoeken', + + // B + 'bouton_fermer' => 'Sluiten', + + // E + 'erreur_date' => 'Deze datum is onjuist', + 'erreur_date_corrigee' => 'De datum is aangepast', + 'erreur_heure' => 'Dit tijdstip is onjuist', + 'erreur_heure_corrigee' => 'De tijd is aangepast', + + // I + 'id_rapide' => 'Voeg snel toe', + + // M + 'mois_precedent' => 'Vorige maand', + 'mois_suivant' => 'Volgende maand', + + // P + 'pages' => 'Blz.' +); diff --git a/design_system_dependences/spip-bonux/lang/spip_bonux_pt_br.php b/design_system_dependences/spip-bonux/lang/spip_bonux_pt_br.php new file mode 100644 index 0000000000000000000000000000000000000000..e0e8809f6d576b26df2f5f3d72cdd15395b81a67 --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/spip_bonux_pt_br.php @@ -0,0 +1,36 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/spip_bonux?lang_cible=pt_br +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // A + 'afficher_calendrier' => 'Exibir o calendário', + 'annee_precedente' => 'Ano anterior', + 'annee_suivante' => 'Próximo ano', + 'annuler_recherche' => 'Cancelar a busca', + + // B + 'bouton_fermer' => 'Fechar', + + // E + 'erreur_date' => 'Esta data está incorreta', + 'erreur_date_corrigee' => 'A data foi corrigida', + 'erreur_heure' => 'Esta hora está incorreta', + 'erreur_heure_corrigee' => 'A hora foi corrigida', + + // I + 'id_rapide' => 'Inclusão rápida', + + // M + 'mois_precedent' => 'Mês anterior', + 'mois_suivant' => 'Mês seguinte', + + // P + 'pages' => 'Päginas' +); diff --git a/design_system_dependences/spip-bonux/lang/spip_bonux_ru.php b/design_system_dependences/spip-bonux/lang/spip_bonux_ru.php new file mode 100644 index 0000000000000000000000000000000000000000..b51719c81b52d32bd51ed1c36134649332b908b3 --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/spip_bonux_ru.php @@ -0,0 +1,36 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/spip_bonux?lang_cible=ru +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // A + 'afficher_calendrier' => 'Показать календарь', + 'annee_precedente' => 'Предыдущий год', # MODIF + 'annee_suivante' => 'Следующий год', + 'annuler_recherche' => 'Отменить поиÑк', + + // B + 'bouton_fermer' => 'Закрыть', + + // E + 'erreur_date' => 'ÐÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ð´Ð°Ñ‚Ð°', + 'erreur_date_corrigee' => 'Дата была иÑправлена', + 'erreur_heure' => 'Ðеправильный чаÑ', + 'erreur_heure_corrigee' => 'Ð§Ð°Ñ Ð±Ñ‹Ð» иÑправлен', + + // I + 'id_rapide' => 'БыÑтрое добавление', + + // M + 'mois_precedent' => 'Предыдущий меÑÑц', + 'mois_suivant' => 'Следующий меÑÑц', + + // P + 'pages' => 'Страницы' +); diff --git a/design_system_dependences/spip-bonux/lang/spip_bonux_sk.php b/design_system_dependences/spip-bonux/lang/spip_bonux_sk.php new file mode 100644 index 0000000000000000000000000000000000000000..80f830343113ee0de580735a3d496446679eac8d --- /dev/null +++ b/design_system_dependences/spip-bonux/lang/spip_bonux_sk.php @@ -0,0 +1,36 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/spip_bonux?lang_cible=sk +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // A + 'afficher_calendrier' => 'ZobraziÅ¥ kalendár', + 'annee_precedente' => 'PredoÅ¡lý rok', + 'annee_suivante' => 'Nasledujúci rok', + 'annuler_recherche' => 'ZruÅ¡iÅ¥ vyhľadávanie', + + // B + 'bouton_fermer' => 'ZatvoriÅ¥', + + // E + 'erreur_date' => 'Tento dátum je nesprávny', + 'erreur_date_corrigee' => 'Dátum bol opravený', + 'erreur_heure' => 'Tento Äas je nesprávny', + 'erreur_heure_corrigee' => 'ÄŒas bol opravený', + + // I + 'id_rapide' => 'Rýchle pridanie', + + // M + 'mois_precedent' => 'Minulý mesiac', + 'mois_suivant' => 'Budúci mesiac', + + // P + 'pages' => 'Stránky' +); diff --git a/design_system_dependences/spip-bonux/lib/php-export-data/.gitignore b/design_system_dependences/spip-bonux/lib/php-export-data/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..2ee911b490bb98b3e4bb5ee8aad6de6701a30227 --- /dev/null +++ b/design_system_dependences/spip-bonux/lib/php-export-data/.gitignore @@ -0,0 +1,12 @@ +nbproject/ +nbproject/project.properties +tmp/ +vendor/ +composer.lock +/composer.lock +/composer.phar +/.idea +build/coverage +build/logs +cache.properties +/bin \ No newline at end of file diff --git a/design_system_dependences/spip-bonux/lib/php-export-data/LICENSE b/design_system_dependences/spip-bonux/lib/php-export-data/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..7ab0e8c6f6add782abc0260615e483dc4b25e0cc --- /dev/null +++ b/design_system_dependences/spip-bonux/lib/php-export-data/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 Eli Dickinson + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/design_system_dependences/spip-bonux/lib/php-export-data/README.md b/design_system_dependences/spip-bonux/lib/php-export-data/README.md new file mode 100644 index 0000000000000000000000000000000000000000..e7509a2a58f8c52d6a83114ad10ed57e463bbf0c --- /dev/null +++ b/design_system_dependences/spip-bonux/lib/php-export-data/README.md @@ -0,0 +1,51 @@ +# php-export-data +-- by Eli Dickinson + +Improved version by Nursit https://github.com/nursit/php-export-data +* forked from https://github.com/diego3/php-export-data +* forked from http://github.com/elidickinson/php-export-data + +Released under the permissive MIT License: http://www.opensource.org/licenses/mit-license.php + +A simple library for exporting tabular data to Excel-friendly XML, CSV, or TSV. It supports streaming exported data to a file or directly to the browser as a download so it is suitable for exporting large datasets (you won't run out of memory). + +Excel XML code is based on Excel_XML by Oliver Schwarz (http://github.com/oliverschwarz/php-excel) + +## Composer Install + +```shell +composer require diego3/php-export-data +``` +## How to use it + +```php +// When executed in a browser, this script will prompt for download +// of 'test.xls' which can then be opened by Excel or OpenOffice. + +use Export\ExportDataExcel; + +// 'browser' tells the library to stream the data directly to the browser. +// other options are 'file' or 'string' +// 'test.xls' is the filename that the browser will use when attempting to +// save the download +$exporter = new ExportDataExcel('browser', 'test.xls'); + +$exporter->initialize(); // starts streaming data to web browser + +// pass addRow() an array and it converts it to Excel XML format and sends +// it to the browser +$exporter->addRow(array("This", "is", "a", "test")); +$exporter->addRow(array(1, 2, 3, "123-456-7890")); + +// doesn't care how many columns you give it +$exporter->addRow(array("foo")); + +$exporter->finalize(); // writes the footer, flushes remaining data to browser. +exit(); // all done +``` + + +See the test/ directory for more examples. + + +Some other options for creating Excel files from PHP are listed here: http://stackoverflow.com/questions/3930975/alternative-for-php-excel/3931142#3931142 diff --git a/design_system_dependences/spip-bonux/lib/php-export-data/composer.json b/design_system_dependences/spip-bonux/lib/php-export-data/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..ae8b477f8f4fdcc92760f8a7aed68343e518450f --- /dev/null +++ b/design_system_dependences/spip-bonux/lib/php-export-data/composer.json @@ -0,0 +1,35 @@ +{ + "name": "diego3/php-export-data", + "type": "library", + "description": "A simple library for exporting tabular data to Excel-friendly XML, CSV, or TSV", + "keywords": ["library", "excel", "csv"], + "homepage": "http://github.com/diego3/php-export-data", + "license": "MIT", + "authors": [ + { + "name": "Diego Rosa dos Santos", + "email": "www.diegosantos.com.br@gmail.com", + "role": "Developer" + }, + { + "name": "Eli Dickinson", + "email": "eli@elidickinson.com", + "role": "Developer" + } + ], + + "require": { + "php": ">=5.3.0" + }, + + "require-dev": { + "phpunit/phpunit" : "4.5.*" + }, + + "autoload": { + "psr-4": { + "Export\\": "src/", + "ExportTest\\": "test/src/" + } + } +} \ No newline at end of file diff --git a/design_system_dependences/spip-bonux/lib/php-export-data/src/ExportData.php b/design_system_dependences/spip-bonux/lib/php-export-data/src/ExportData.php new file mode 100644 index 0000000000000000000000000000000000000000..a159ac38bae4b459871732b5e745a2daf6ff4037 --- /dev/null +++ b/design_system_dependences/spip-bonux/lib/php-export-data/src/ExportData.php @@ -0,0 +1,97 @@ +<?php + +namespace Export; + +/** + * ExportData is the base class for exporters to specific file formats. See other + * classes below. + * + * php-export-data by Eli Dickinson, http://github.com/elidickinson/php-export-data + * + */ +abstract class ExportData { + + protected $exportTo; // Set in constructor to one of 'browser', 'file', 'string' + protected $stringData; // stringData so far, used if export string mode + protected $tempFile; // handle to temp file (for export file mode) + protected $tempFilename; // temp file name and path (for export file mode) + public $filename; // file mode: the output file name; browser mode: file name for download; string mode: not used + + public function __construct($exportTo = "browser", $filename = "exportdata") { + if (!in_array($exportTo, array('browser', 'file', 'string'))) { + throw new Exception("$exportTo is not a valid ExportData export type"); + } + $this->exportTo = $exportTo; + $this->filename = $filename; + } + + public function initialize() { + switch ($this->exportTo) { + case 'browser': + $this->sendHttpHeaders(); + break; + case 'string': + $this->stringData = ''; + break; + case 'file': + $this->tempFilename = tempnam(sys_get_temp_dir(), 'exportdata'); + $this->tempFile = fopen($this->tempFilename, "w"); + break; + } + + $this->write($this->generateHeader()); + } + + public function addRow($row) { + $this->write($this->generateRow($row)); + } + + public function finalize() { + $this->write($this->generateFooter()); + + switch ($this->exportTo) { + case 'browser': + flush(); + break; + case 'string': + // do nothing + break; + case 'file': + // close temp file and move it to correct location + fclose($this->tempFile); + rename($this->tempFilename, $this->filename); + break; + } + } + + public function getString() { + return $this->stringData; + } + + abstract public function sendHttpHeaders(); + + protected function write($data) { + switch ($this->exportTo) { + case 'browser': + echo $data; + break; + case 'string': + $this->stringData .= $data; + break; + case 'file': + fwrite($this->tempFile, $data); + break; + } + } + + protected function generateHeader() { + // can be overridden by subclass to return any data that goes at the top of the exported file + } + + protected function generateFooter() { + // can be overridden by subclass to return any data that goes at the bottom of the exported file + } + + // In subclasses generateRow will take $row array and return string of it formatted for export type + abstract protected function generateRow($row); +} diff --git a/design_system_dependences/spip-bonux/lib/php-export-data/src/ExportDataCSV.php b/design_system_dependences/spip-bonux/lib/php-export-data/src/ExportDataCSV.php new file mode 100644 index 0000000000000000000000000000000000000000..20a98d6797cf6a448d97fb76052c2f8e64eeedb6 --- /dev/null +++ b/design_system_dependences/spip-bonux/lib/php-export-data/src/ExportDataCSV.php @@ -0,0 +1,24 @@ +<?php + +namespace Export; + +/** + * ExportDataCSV - Exports to CSV (comma separated value) format. + */ +class ExportDataCSV extends ExportData { + + public function generateRow($row) { + foreach ($row as $key => $value) { + // Escape inner quotes and wrap all contents in new quotes. + // Note that we are using \" to escape double quote not "" + $row[$key] = '"' . str_replace('"', '\"', $value) . '"'; + } + return implode(",", $row) . "\n"; + } + + public function sendHttpHeaders() { + header("Content-type: text/csv"); + header("Content-Disposition: attachment; filename=" . basename($this->filename)); + } + +} diff --git a/design_system_dependences/spip-bonux/lib/php-export-data/src/ExportDataExcel.php b/design_system_dependences/spip-bonux/lib/php-export-data/src/ExportDataExcel.php new file mode 100644 index 0000000000000000000000000000000000000000..426e7b7b1c2f9e8a8f127d65fef78f3b65417a5c --- /dev/null +++ b/design_system_dependences/spip-bonux/lib/php-export-data/src/ExportDataExcel.php @@ -0,0 +1,182 @@ +<?php + +namespace Export; + +/** + * ExportDataExcel exports data into an XML format (spreadsheetML) that can be + * read by MS Excel 2003 and newer as well as OpenOffice + * + * Creates a workbook with a single worksheet (title specified by + * $title). + * + * Note that using .XML is the "correct" file extension for these files, but it + * generally isn't associated with Excel. Using .XLS is tempting, but Excel 2007 will + * throw a scary warning that the extension doesn't match the file type. + * + * Based on Excel XML code from Excel_XML (http://github.com/oliverschwarz/php-excel) + * by Oliver Schwarz + */ +class ExportDataExcel extends ExportData { + + const XmlHeader = "<?xml version=\"1.0\" encoding=\"%s\"?\>\n<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:x=\"urn:schemas-microsoft-com:office:excel\" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:html=\"http://www.w3.org/TR/REC-html40\">"; + const XmlFooter = "</Workbook>"; + + public $encoding = 'UTF-8'; // encoding type to specify in file. + // Note that you're on your own for making sure your data is actually encoded to this encoding + public $title = 'Sheet1'; // title for Worksheet + + public function generateHeader() { + + // workbook header + $output = stripslashes(sprintf(self::XmlHeader, $this->encoding)) . "\n"; + + // Set up styles + $output .= "<Styles>\n"; + + // default style + $output .= "<Style ss:ID=\"Default\" ss:Name=\"Normal\"><Alignment ss:Vertical=\"Top\"/></Style>\n"; + // multiline text style + $output .= "<Style ss:ID=\"sTXT\"><Alignment ss:Vertical=\"Top\" ss:WrapText=\"1\"/></Style>\n"; + // date style + $output .= "<Style ss:ID=\"sDT\"><Alignment ss:Vertical=\"Top\"/><NumberFormat ss:Format=\"Short Date\"/></Style>\n"; + // Number style + $output .= "<Style ss:ID=\"sNUM\"><NumberFormat ss:Format=\"Standard\"/></Style>\n"; + + $output .= "</Styles>\n"; + + // worksheet header + $output .= sprintf("<Worksheet ss:Name=\"%s\">\n <Table>\n", htmlentities($this->title)); + + return $output; + } + + public function generateFooter() { + $output = ''; + + // worksheet footer + $output .= " </Table>\n</Worksheet>\n"; + + // workbook footer + $output .= self::XmlFooter; + + return $output; + } + + public function generateRow($row) { + $output = ''; + $output .= " <Row>\n"; + foreach ($row as $k => $v) { + $output .= $this->generateCell($v); + } + $output .= " </Row>\n"; + return $output; + } + + protected function formatDate($year, $month, $day, $hours, $minutes, $seconds) { + return str_pad(intval($year), 4, 0, STR_PAD_LEFT) + . '-' . str_pad(intval($month), 2, 0, STR_PAD_LEFT) + . '-' . str_pad(intval($day), 2, 0, STR_PAD_LEFT) + . 'T' . str_pad(intval($hours), 2, 0, STR_PAD_LEFT) + . ':' . str_pad(intval($minutes), 2, 0, STR_PAD_LEFT) + . ':' . str_pad(intval($seconds), 2, 0, STR_PAD_LEFT); + } + + protected function detectTime($item) { + static $zero = array(0, 0, 0); + if (!strlen(trim($item))){ + return $zero; + } + + if (preg_match('#(^T|/s+)?([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})\s*$#', $item, $match)) { + array_shift($match); + array_shift($match); + return $match; + } + + return false; + } + + /** + * Sniff for valid dates; should look something like 2010-07-14 or 14/07/2010 etc. Can + * also have an optional time after the date. + * + * Note we want to be very strict in what we consider a date. There is the possibility + * of really screwing up the data if we try to reformat a string that was not actually + * intended to represent a date. + * + * @param $item + * @return false|string + */ + protected function detectDate($item) { + if ($item = trim($item)) { + if (preg_match('#^([0-9]{1,2})/([0-9]{1,2})/([0-9]{4}|[0-9]{1,2})#', $item, $match)) { + $day = $match[1]; + $month = $match[2]; + $year = $match[3]; + if (strlen($year) <= 2) { + $year = 2000 + $year; + } + if ($time = $this->detectTime(substr($item, strlen($match[0])))) { + list($hours, $minutes, $seconds) = $time; + return $this->formatDate($year, $month, $day, $hours, $minutes, $seconds); + } + } elseif (preg_match('#^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})#', $item, $match)) { + $year = $match[1]; + $month = $match[2]; + $day = $match[3]; + if ($time = $this->detectTime(substr($item, strlen($match[0])))) { + list($hours, $minutes, $seconds) = $time; + return $this->formatDate($year, $month, $day, $hours, $minutes, $seconds); + } + } + } + return false; + } + + private function generateCell($item) { + $output = ''; + $style = ''; + + // Tell Excel to treat as a number. Note that Excel only stores roughly 15 digits, so keep + // as text if number is longer than that. + if (preg_match("/^-?\d+(?:[.,]\d+)?$/", $item) && (strlen($item) < 15)) { + $type = 'Number'; + + // decimal numbers formated as number, but keep integers with default style + if (strpos($item, '.') or strpos($item, ',')) { + $style = 'sNUM'; + } + } + elseif ($date = $this->detectDate($item)){ + $type = 'DateTime'; + $item = $date; + $style = 'sDT'; // defined in header; tells excel to format date for display + } else { + $type = 'String'; + } + + $item = htmlspecialchars($item, ENT_QUOTES, $this->encoding); + // not necessary, better keeping ' for quote + //$item = str_replace(''', ''', $item); + + if (!$style and (strpos($item, "\r") !== false or strpos($item, "\n") !== false)) { + $item = str_replace("\r\n", "\n", $item); + $item = str_replace("\r", "\n", $item); + $item = str_replace("\n", "
", $item); + $style = 'sTXT'; + } + + $output .= " "; + $output .= $style ? "<Cell ss:StyleID=\"$style\">" : "<Cell>"; + $output .= sprintf("<Data ss:Type=\"%s\">%s</Data>", $type, $item); + $output .= "</Cell>\n"; + + return $output; + } + + public function sendHttpHeaders() { + header("Content-Type: application/vnd.ms-excel; charset=" . $this->encoding); + header("Content-Disposition: inline; filename=\"" . basename($this->filename) . "\""); + } + +} diff --git a/design_system_dependences/spip-bonux/lib/php-export-data/src/ExportDataTSV.php b/design_system_dependences/spip-bonux/lib/php-export-data/src/ExportDataTSV.php new file mode 100644 index 0000000000000000000000000000000000000000..170236cd729a323330c25c6d474357f659c02b7d --- /dev/null +++ b/design_system_dependences/spip-bonux/lib/php-export-data/src/ExportDataTSV.php @@ -0,0 +1,24 @@ +<?php + +namespace Export; + +/** + * ExportDataTSV - Exports to TSV (tab separated value) format. + */ +class ExportDataTSV extends ExportData { + + public function generateRow($row) { + foreach ($row as $key => $value) { + // Escape inner quotes and wrap all contents in new quotes. + // Note that we are using \" to escape double quote not "" + $row[$key] = '"' . str_replace('"', '\"', $value) . '"'; + } + return implode("\t", $row) . "\n"; + } + + public function sendHttpHeaders() { + header("Content-type: text/tab-separated-values"); + header("Content-Disposition: attachment; filename=" . basename($this->filename)); + } + +} diff --git a/design_system_dependences/spip-bonux/modeles/pagination_noancre.html b/design_system_dependences/spip-bonux/modeles/pagination_noancre.html new file mode 100644 index 0000000000000000000000000000000000000000..113bf55abdf548672032be380c7189e6b852a297 --- /dev/null +++ b/design_system_dependences/spip-bonux/modeles/pagination_noancre.html @@ -0,0 +1,16 @@ +#SET{bornes,#ENV{page_courante}|bornes_pagination{#ENV{nombre_pages},10}} +#SET{premiere, #GET{bornes}|reset} +#SET{derniere, #GET{bornes}|end} +#SET{pages,#GET{premiere}|range{#GET{derniere}}} +#SET{separateur,#ENV{separateur,'|'}} +[(#SET{label,[(#ENV{label}|sinon{<span class='pagination_label'><:spip_bonux:pages:></span>})]})] +<B_pages> +[(#GET{label})] +[<a href='[(#ENV{url}|parametre_url{#ENV{debut},''})]' class='lien_pagination' rel='nofollow'>(#GET{premiere}|>{1}|?{'...',''})</a> [<span class='sep separateur'>(#GET*{separateur})</span>]] +<BOUCLE_pages(POUR){tableau #GET{pages}}> +[(#SET{item, #VALEUR|moins{1}|mult{#ENV{pas}} })] +[(#ENV{url}|parametre_url{#ENV{debut},#GET{item}}|lien_ou_expose{#VALEUR,#VALEUR|=={#ENV{page_courante}},lien_pagination,'',nofollow})] +[<span class='sep separateur'>(#VALEUR|<{#GET{derniere}}|?{#GET{separateur}})</span>] +</BOUCLE_pages> +[[<span class='sep separateur'>(#GET*{separateur})</span>] <a href='[(#ENV{url}|parametre_url{#ENV{debut},#ENV{nombre_pages}|moins{1}|mult{#ENV{pas}}})]' class='lien_pagination' rel='nofollow'>(#GET{derniere}|<{#ENV{nombre_pages}}|?{'...',''})</a>] +</B_pages> \ No newline at end of file diff --git a/design_system_dependences/spip-bonux/paquet.xml b/design_system_dependences/spip-bonux/paquet.xml new file mode 100644 index 0000000000000000000000000000000000000000..ee91b7348c23e6ccb866b36b9a924dc5a2eefde1 --- /dev/null +++ b/design_system_dependences/spip-bonux/paquet.xml @@ -0,0 +1,22 @@ +<paquet + prefix="spip_bonux" + categorie="outil" + version="4.1.2" + etat="test" + compatibilite="[4.0.0;4.2.*]" + logo="spip_bonux.svg" + documentation="https://contrib.spip.net/4589" +> + + <nom>SPIP Bonux</nom> + <!-- Le plugin SPIP avec une cerise dessus --> + + <auteur>Cedric Morin</auteur> + <auteur>Matthieu Marcillaud</auteur> + <auteur>romy.tetue.net</auteur> + + <copyright>2008-2022</copyright> + + <licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL</licence> + <pipeline nom="affichage_final" /> +</paquet> diff --git a/design_system_dependences/spip-bonux/phpcs.xml.dist b/design_system_dependences/spip-bonux/phpcs.xml.dist new file mode 100644 index 0000000000000000000000000000000000000000..d9eeaef3bec5bb0594a779b9d8bdba67eb15a4f5 --- /dev/null +++ b/design_system_dependences/spip-bonux/phpcs.xml.dist @@ -0,0 +1,15 @@ +<?xml version="1.0"?> +<ruleset> + <file>.</file> + <exclude-pattern>vendor/*</exclude-pattern> + <exclude-pattern>lang/*</exclude-pattern> + <exclude-pattern>lib/*</exclude-pattern> + + <rule ref="SPIP40"/> + + <config name="ignore_warnings_on_exit" value="1"/> + <arg name="cache" value=".php_cs.cache"/> + <arg name="report-full" value=".php_cs.txt"/> + <arg name="report-summary"/> + <arg value="s"/> +</ruleset> diff --git a/design_system_dependences/spip-bonux/public/spip_bonux_balises.php b/design_system_dependences/spip-bonux/public/spip_bonux_balises.php new file mode 100644 index 0000000000000000000000000000000000000000..fc297f98ec96693e7a5a619d03103a2dad64407a --- /dev/null +++ b/design_system_dependences/spip-bonux/public/spip_bonux_balises.php @@ -0,0 +1,144 @@ +<?php + +/** + * Plugin Spip-Bonux + * Le plugin qui lave plus SPIP que SPIP + * (c) 2008 Mathieu Marcillaud, Cedric Morin, Tetue + * Licence GPL + * + */ + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +/** + * Empile un element dans un tableau declare par #SET{tableau,#ARRAY} + * #SET_PUSH{tableau,valeur} + * + * @param Champ $p : objet balise + * @return Champ + * La balise ne retourne rien ("") +**/ +function balise_SET_PUSH_dist($p) { + $_nom = interprete_argument_balise(1, $p); + $_valeur = interprete_argument_balise(2, $p); + + if ($_nom and $_valeur) { + // si le tableau n'existe pas encore, on le cree + // on ajoute la valeur ensuite (sans passer par array_push) + $p->code = "vide((\$cle=$_nom) + . vide((!isset(\$Pile['vars'][\$cle]) OR !is_array(\$Pile['vars'][\$cle]))?\$Pile['vars'][\$cle]=array():'') + . vide(\$Pile['vars'][\$cle][]=$_valeur))"; + } else { + $p->code = "''"; + } + + $p->interdire_scripts = false; // la balise ne renvoie rien + return $p; +} + +/** + * Si 3 arguments : Cree un tableau nom_tableau de t1 + t2 + * #SET_MERGE{nom_tableau,t1,t2} + * #SET_MERGE{nom_tableau,#GET{tableau},#ARRAY{cle,valeur}} + * + * Si 2 arguments : Merge t1 dans nom_tableau + * #SET_MERGE{nom_tableau,t1} + * #SET_MERGE{nom_tableau,#GET{tableau}} + * + * @param Champ $p : objet balise + * @return Champ + * La balise ne retourne rien ("") +**/ +function balise_SET_MERGE_dist($p) { + $_nom = interprete_argument_balise(1, $p); + $_t1 = interprete_argument_balise(2, $p); + $_t2 = interprete_argument_balise(3, $p); + + if ($_nom and $_t1 and !$_t2) { + // 2 arguments : merge de $_nom et $_t1 dans $_nom + // si le tableau n'existe pas encore, on le cree + $p->code = "vide((\$cle=$_nom) + . vide((!isset(\$Pile['vars'][\$cle]) OR !is_array(\$Pile['vars'][\$cle]))?\$Pile['vars'][\$cle]=array():'') + . vide(is_array(\$new=$_t1)?'':\$new=array(\$new)) + . vide(\$Pile['vars'][\$cle] = array_merge(\$Pile['vars'][\$cle],\$new)))"; + } elseif ($_nom and $_t1 and $_t2) { + // 3 arguments : merge de $_t1 et $_t2 dans $_nom + // si le tableau n'existe pas encore, on le cree + $p->code = "vide((\$cle=$_nom) + . vide((!isset(\$Pile['vars'][\$cle]) OR !is_array(\$Pile['vars'][\$cle]))?\$Pile['vars'][\$cle]=array():'') + . vide(is_array(\$new1=$_t1)?'':\$new1=array(\$new1)) + . vide(is_array(\$new2=$_t2)?'':\$new2=array(\$new2)) + . vide(\$Pile['vars'][\$cle] = array_merge(\$new1,\$new2)))"; + } else { + $p->code = "''"; + } + + $p->interdire_scripts = false; // la balise ne renvoie rien + return $p; +} + +/** + * Balise #COMPTEUR associee au critere compteur + * + * @param Champ $p + * @return Champ + */ +function balise_COMPTEUR_dist($p) { + calculer_balise_criteres('compteur', $p); + if ($p->code == "''") { + calculer_balise_criteres('compteur', $p, 'compteur_left'); + } + return $p; +} + +/** Balise #SOMME associee au critere somme */ +function balise_SOMME_dist($p) { + return calculer_balise_criteres('somme', $p); +} + +/** Balise #COMPTE associee au critere compte */ +function balise_COMPTE_dist($p) { + return calculer_balise_criteres('compte', $p); +} + +/** Balise #MOYENNE associee au critere moyenne */ +function balise_MOYENNE_dist($p) { + return calculer_balise_criteres('moyenne', $p); +} + +/** Balise #MINIMUM associee au critere moyenne */ +function balise_MINIMUM_dist($p) { + return calculer_balise_criteres('minimum', $p); +} + +/** Balise #MAXIMUM associee au critere moyenne */ +function balise_MAXIMUM_dist($p) { + return calculer_balise_criteres('maximum', $p); +} + +/** Balise #STATS associee au critere stats + * #STATS{id_article,moyenne} + */ +function balise_STATS_dist($p) { + if ( + isset($p->param[0][2][0]) + and $nom = ($p->param[0][2][0]->texte) + ) { + return calculer_balise_criteres($nom, $p, 'stats'); + } + return $p; +} + +function calculer_balise_criteres($nom, $p, $motif = '') { + $p->code = "''"; + $motif = $motif ? $motif : $nom; + if ( + isset($p->param[0][1][0]) + and $champ = ($p->param[0][1][0]->texte) + ) { + return rindex_pile($p, $nom . "_$champ", $motif); + } + return $p; +} diff --git a/design_system_dependences/spip-bonux/public/spip_bonux_criteres.php b/design_system_dependences/spip-bonux/public/spip_bonux_criteres.php new file mode 100644 index 0000000000000000000000000000000000000000..2a9add4fff259115e49b6af706b27c079d5a0cf6 --- /dev/null +++ b/design_system_dependences/spip-bonux/public/spip_bonux_criteres.php @@ -0,0 +1,178 @@ +<?php + +/** + * Plugin Spip-Bonux + * Le plugin qui lave plus SPIP que SPIP + * (c) 2008 Mathieu Marcillaud, Cedric Morin, Tetue + * Licence GPL + * + */ + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +/** + * Permet de faire un comptage par table liee + * + * @syntaxe `{compteur table[, champ]}` + * @link https://contrib.spip.net/Classer-les-articles-par-nombre-de#forum409210 + * + * @example + * Pour avoir les auteurs classes par articles et + * le nombre d'article de chacun : + * + * ``` + * <BOUCLE1(AUTEURS){compteur articles}{par compteur_articles}> + * #ID_AUTEUR : #COMPTEUR{articles} + * </BOUCLE1> + * ``` + * + * @note + * Avec un seul argument {compteur autre_table} le groupby est fait + * implicitement sur la cle primaire de la boucle en cours. + * Avec un second argument {compteur autre_table,champ_fusion} + * le groupby est fait sur le champ_fusion" + * + * @param string $idb + * Identifiant de la boucle + * @param Boucle[] $boucles + * AST du squelette + * @param Critere $crit + * Paramètres du critère dans cette boucle + * @param bool $left + * true pour utiliser un left join plutôt qu'un inner join. + * @return void + */ +function critere_compteur($idb, &$boucles, $crit, $left = false) { + $boucle = &$boucles[$idb]; + + if (isset($crit->param[1])) { + $_fusion = calculer_liste($crit->param[1], [], $boucles, $boucle->id_parent); + } else { + $_fusion = "''"; + } + $params = $crit->param; + $table = reset($params); + $table = $table[0]->texte; + $op = false; + if (preg_match(',^(\w+)([<>=])([0-9]+)$,', $table, $r)) { + $table = $r[1]; + if (count($r) >= 3) { + $op = $r[2]; + } + if (count($r) >= 4) { + $op_val = $r[3]; + } + } + $type = objet_type($table); + $type_id = id_table_objet($type); + + /** + * Si la clé primaire est une clé multiple, on prend la première partie + * Utile pour compter les versions de spip_versions par exemple + */ + if (count($types = explode(',', $type_id)) > 1) { + $type_id = $types[0]; + } + $table_sql = table_objet_sql($type); + + $trouver_table = charger_fonction('trouver_table', 'base'); + $arrivee = [$table, $trouver_table($table, $boucle->sql_serveur)]; + $depart = [$boucle->id_table,$trouver_table($boucle->id_table, $boucle->sql_serveur)]; + + // noter les jointures deja installees + $joins = array_keys($boucle->from); + if ($compt = calculer_jointure($boucle, $depart, $arrivee)) { + if ($_fusion != "''") { + // en cas de jointure, on ne veut pas du group_by sur la cle primaire ! + // cela casse le compteur ! + foreach ($boucle->group as $k => $group) { + if ($group == $boucle->id_table . '.' . $boucle->primary) { + unset($boucle->group[$k]); + } + } + $boucle->group[] = '".($gb=' . $_fusion . ')."'; + } + + $boucle->select[] = "COUNT($compt.$type_id) AS compteur_$table"; + if ($op) { + $boucle->having[] = ["'" . $op . "'", "'compteur_" . $table . "'",$op_val]; + } + if ($left) { + foreach ($boucle->from as $k => $val) { + if (!in_array($k, $joins)) { + $boucle->from_type[$k] = 'left'; + } + } + } + } +} + +/** + * {compteur_left xxx} permet de faire la meme chose que {compteur xxx} + * mais avec un LEFT JOIN pour ne pas ignorer ceux qui ont un compteur nul + * @param <type> $idb + * @param <type> $boucles + * @param <type> $crit + */ +function critere_compteur_left($idb, &$boucles, $crit) { + critere_compteur($idb, $boucles, $crit, true); +} + +/** Critere {somme champ} #SOMME{champ} */ +function critere_somme($idb, &$boucles, $crit) { + calcul_critere_fonctions(['SUM' => 'somme'], $idb, $boucles, $crit); +} + +/** Critere {compte champ} #COMPTE{champ} */ +function critere_compte($idb, &$boucles, $crit) { + calcul_critere_fonctions(['COUNT' => 'compte'], $idb, $boucles, $crit); +} + +/** Critere {moyenne champ} #MOYENNE{champ} */ +function critere_moyenne($idb, &$boucles, $crit) { + calcul_critere_fonctions(['AVG' => 'moyenne'], $idb, $boucles, $crit); +} + +/** Critere {minimum champ} #MINIMUM{champ} */ +function critere_minimum($idb, &$boucles, $crit) { + calcul_critere_fonctions(['MIN' => 'minimum'], $idb, $boucles, $crit); +} + +/** Critere {maximum champ} #MAXIMUM{champ} */ +function critere_maximum($idb, &$boucles, $crit) { + calcul_critere_fonctions(['MAX' => 'maximum'], $idb, $boucles, $crit); +} + +/** Critere {stats champ} calcul la totale : somme, compte, minimum, moyenne, maximum */ +function critere_stats($idb, &$boucles, $crit) { + calcul_critere_fonctions([ + 'SUM' => 'somme', + 'COUNT' => 'compte', + 'AVG' => 'moyenne', + 'MIN' => 'minimum', + 'MAX' => 'maximum', + ], $idb, $boucles, $crit); +} + +/* $func : array(FUNC => balise) */ +function calcul_critere_fonctions($func, $idb, &$boucles, $crit) { + $boucle = &$boucles[$idb]; + + $params = $crit->param; + $champ = reset($params); + $champ = $champ[0]->texte; + + // option DISTINCT {compte DISTINCT(id_article) } + $filter = ''; + if (preg_match('/^([a-zA-Z]+)\(\s*([a-zA-Z_]+)\s*\)$/', trim($champ), $r)) { + $filter = $r[1]; // DISTINCT + $champ = $r[2]; // id_article + } + + $sel = $filter ? "$filter($champ)" : $champ; + foreach ($func as $f => $as) { + $boucle->select[] = "$f($sel) AS $as" . "_$champ"; + } +} diff --git a/design_system_dependences/spip-bonux/spip_bonux.svg b/design_system_dependences/spip-bonux/spip_bonux.svg new file mode 100644 index 0000000000000000000000000000000000000000..7afc1dadbb6ee8d8f876475943f2fdd2e5d9aa62 --- /dev/null +++ b/design_system_dependences/spip-bonux/spip_bonux.svg @@ -0,0 +1,5 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64"> + <circle cx="42" cy="14.2" r="10.3" fill="#e895b7"/> + <path d="M51.7 15.4c-1.2-.4-2.4-.6-3.8-.6-.7 0-1.3.1-2 .2-1.5.2-2.9.7-4.1 1.4-.9-1.9-2-3.6-3.5-5.1C37 10 35.4 9 33.6 8.1c-2.3-1.1-4.8-1.6-7.3-1.6-9.4 0-17 7.6-17 17v.5c-3.2 1.1-5.5 4.1-5.7 7.5-.3 4.7 3.3 8.7 8 9l3 17.5c.2 1.4 1.4 2.4 2.8 2.4h29.2c1.4 0 2.6-1 2.8-2.4l3.1-18.4c3.4-1.4 6-4.2 7.2-7.7 2.2-6.8-1.4-14.2-8-16.5" fill="#fff"/> + <path d="M51.7 15.4c-1.2-.4-2.4-.6-3.8-.6-.7 0-1.3.1-2 .2-1.5.2-2.9.7-4.1 1.4-.9-1.9-2-3.6-3.5-5.1C37 10 35.4 9 33.6 8.1c-2.3-1.1-4.8-1.6-7.3-1.6-9.4 0-17 7.6-17 17v.5c-3.2 1.1-5.5 4.1-5.7 7.5-.3 4.7 3.3 8.7 8 9l3 17.5c.2 1.4 1.4 2.4 2.8 2.4h29.2c1.4 0 2.6-1 2.8-2.4l3.1-18.4c3.4-1.4 6-4.2 7.2-7.7 2.2-6.8-1.4-14.2-8-16.5M23.5 54.7h-3.7l-2.4-14.2h6.1v14.2zm11.3 0h-5.7V40.5h5.7v14.2zm9.4 0h-3.7V40.5h6.1l-2.4 14.2zm3.4-19.9H12.2c-1.2 0-2.3-.8-2.7-1.9-.5-1.5.2-3.1 1.7-3.6l.4-.2c2.1-.9 3.4-3 3.4-5.3v-1.1c.3-5.9 5.3-10.7 11.3-10.7 4.4 0 8.5 2.6 10.3 6.6l.2.4c1.5 2.7 4.8 3.7 7.5 2.3l.5-.2c.9-.4 1.8-.5 2.7-.5 3.9 0 7.1 3.2 7.1 7.1.1 4-3.1 7.1-7 7.1z" fill="#666"/> +</svg> \ No newline at end of file diff --git a/design_system_dependences/spip-bonux/spip_bonux_fonctions.php b/design_system_dependences/spip-bonux/spip_bonux_fonctions.php new file mode 100644 index 0000000000000000000000000000000000000000..3cc64721368b572c1e84da12586ee24fc4e64ac1 --- /dev/null +++ b/design_system_dependences/spip-bonux/spip_bonux_fonctions.php @@ -0,0 +1,175 @@ +<?php + +/** + * Plugin Spip-Bonux + * Le plugin qui lave plus SPIP que SPIP + * (c) 2008 Mathieu Marcillaud, Cedric Morin, Tetue + * Licence GPL + * + */ + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +include_spip('public/spip_bonux_criteres'); +include_spip('public/spip_bonux_balises'); + +/** + * une fonction pour generer une balise img a partir d'un nom de fichier + * + * @param string $img + * @param string $alt + * @param string $class + * + * @return string + */ +function tag_img($img, $alt = '', $class = '') { + $balise_img = chercher_filtre('balise_img'); + + return $balise_img($img, $alt, $class); +} + +if (!defined('_PREVISU_TEMPORAIRE_VALIDITE')) { + define('_PREVISU_TEMPORAIRE_VALIDITE', 12); +} + +function previsu_verifier_cle_temporaire($cle) { + $validite = _PREVISU_TEMPORAIRE_VALIDITE; // validite de 12h maxi par défaut + $old = 0; + + do { + $date = date('Y-m-d H', strtotime("-$old hour")); + if ($cle == previsu_cle_temporaire($date)) { + return true; + } + } while ($old++ < $validite); + + return false; +} + +function previsu_cle_temporaire($date = null) { + include_spip('inc/securiser_action'); + + if (!$date) { + $date = date('Y-m-d H'); + } + + $url = self(); + $cle = md5($url . $date . secret_du_site()); + + return $cle; +} + +if (!function_exists('push_table_valeur')) { + /** + * Filtre ajoutant une valeur à la fin d'une liste, possiblement dans une clé d'un tableau (comme table_valeur()). + * + * Attention, cette fonction est bien un "push", c'est-à -dire qu'elle ajoute un élément à la fin d'une liste. + * + * `#TABLEAU|push_table_valeur{a/b/c, valeur, #CONDITION}` + * - si la clé "c" est une liste : on ajoute "valeur" à la fin + * - si la clé "c" n'existe pas : on crée une liste et on met la première valeur dedans + * - si la clé "c" est un scalaire : on ne fait rien + * - si les clés autres que la dernière n'existent pas : on en fait des tableaux en cascade + * + * @see table_valeur + * @filtre + * + * @param array|object|string $table + * Table ou objet dont on veut modifier ou augmenter une des clés/propriétés. Peut être une chaîne à désérialiser contenant ce tableau ou cet objet. + * @param string $chemin + * Une suite de clés ou de propriétés d'objet, séparées par le caractère "/" : un/element/ici + * @param mixed $valeur + * Une valeur à ajouter au paramètre précédent. + * @param mixed $condition =true + * Une valeur quelconque qui sera testée de manière booléenne pour savoir si on fait le traitement ou pas. + * Cela allège l'écriture si l'ajout de valeur ne doit se faire que sous condition, notamment que s'il y a une valeur à ajouter. + * @param string $cle_finale + * Une clé dans laquelle placer la valeur si précisée + * + * @return array|object + * Retourne le tableau ou l'objet initial, modifié suivant les paramètres. + */ + function push_table_valeur($table, $chemin, $valeur, $condition = true, $cle_finale = false) { + // Si la condition est fausse, on ne fait rien du tout + if ($condition) { + $table = is_string($table) ? @unserialize($table) : $table; + $element_a_modifier =& $table; + + // S'il y a un emplacement donné, on cherche si c'est un tableau + if ($chemin and is_string($chemin) and $chemin = explode('/', $chemin) and is_array($chemin)) { + $i = 0; + foreach ($chemin as $cle) { + $i += 1; + // On ne fait que s'il la clé vaut quelque chose + if ($cle !== '') { + // Si c'est un tableau, on vérifie si la clé existe + if (is_array($element_a_modifier)) { + // Si la clé n'existe pas : on met un tableau vide qui se remplira + if (!isset($element_a_modifier[$cle])) { + $element_a_modifier[$cle] = []; + } + $element_a_modifier =& $element_a_modifier[$cle]; + } elseif (is_object($element_a_modifier)) { + // Si c'est un objet on vérifie si la propriété existe + // Si la propriété n'existe pas : on met un tableau vide qui se remplira + if (!isset($element_a_modifier->$cle)) { + $element_a_modifier->$cle = []; + } + $element_a_modifier =& $element_a_modifier->$cle; + } + } + } + } + + // Maintenant on est au bon endroit de ce qu'on veut modifier : + + // Si l'élément à modifier est bien un tableau : on push la valeur dedans + if (is_array($element_a_modifier)) { + if ($cle_finale and is_string($cle_finale)) { + $element_a_modifier[$cle_finale] = $valeur; + } else { + array_push($element_a_modifier, $valeur); + } + } + // Sinon (si c'est un scalaire) on ne fait rien et il faudra utiliser set_table_valeur() par exemple + } + + return $table; + } +} + +/** + * Filtre slugify + * + * @deprecated 4.1 Utiliser itentifiant_slug() de SPIP. Mêmes paramètres & options. + * @uses itentifiant_slug() + * + * @param string $texte + * @param string $type + * @param array $options + * @return string + */ +function filtre_slugify_dist($texte, $type = '', $options = []) { + $identifiant_slug = chercher_filtre('identifiant_slug'); + return $identifiant_slug($texte, $type, $options); +} + +if (!function_exists('slugify')) { + /** + * Fonction slugify + * + * @deprecated 4.1 Utiliser itentifiant_slug() de SPIP. Mêmes paramètres & options. + * @uses itentifiant_slug() + * + * @param string $texte + * @param string $type + * @param array $options + * @return string + */ + function slugify($texte, $type = '', $options = []) { + $identifiant_slug = chercher_filtre('identifiant_slug'); + return $identifiant_slug($texte, $type, $options); + } +} diff --git a/design_system_dependences/spip-bonux/spip_bonux_options.php b/design_system_dependences/spip-bonux/spip_bonux_options.php new file mode 100644 index 0000000000000000000000000000000000000000..6d549b24e29ec2ddec73635f353d0fd9ed4cc91d --- /dev/null +++ b/design_system_dependences/spip-bonux/spip_bonux_options.php @@ -0,0 +1,255 @@ +<?php + +/** + * Plugin Spip-Bonux + * Le plugin qui lave plus SPIP que SPIP + * (c) 2008 Mathieu Marcillaud, Cedric Morin, Tetue + * Licence GPL + * + */ + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + + +if (!defined('_PREVISU_TEMPORAIRE_ACTIVE')) { + define('_PREVISU_TEMPORAIRE_ACTIVE', true); +} + +if ( + _request('var_mode') == 'preview' + and _PREVISU_TEMPORAIRE_ACTIVE + and $cle = _request('var_relecture') +) { + include_spip('spip_bonux_fonctions'); + if (previsu_verifier_cle_temporaire($cle)) { + include_spip('inc/autoriser'); + autoriser_exception('previsualiser', '', 0); + define('_VAR_PREVIEW_EXCEPTION', true); + } +} + +function spip_bonux_affichage_final($flux) { + if (_PREVISU_TEMPORAIRE_ACTIVE and defined('_VAR_PREVIEW') and _VAR_PREVIEW and !empty($GLOBALS['html'])) { + $p = stripos($flux, '</body>'); + $url_relecture = parametre_url(self(), 'var_mode', 'preview', '&'); + $js = ''; + if (!defined('_VAR_PREVIEW_EXCEPTION')) { + include_spip('plugins/installer'); + include_spip('inc/securiser_action'); + $url_relecture = parametre_url($url_relecture, 'var_previewtoken', calculer_token_previsu(url_absolue($url_relecture)), '&'); + $label = 'Relecture temporaire'; + } else { + $label = _T('previsualisation'); + $js = "jQuery('.spip-previsu').html('Relecture temporaire');"; + } + $js .= "jQuery('#spip-admin').append('<a class=\"spip-admin-boutons review_link\" href=\"$url_relecture\">$label</a>');"; + $js = "jQuery(function(){ $js });"; + $js = "<script>$js</script>"; + $flux = substr_replace($flux, $js, $p, 0); + } + return $flux; +} + +if (!function_exists('_T_ou_typo')) { + /** + * une fonction qui regarde si $texte est une chaine de langue + * de la forme <:qqch:> + * si oui applique _T() + * si non applique typo() suivant le mode choisi + * + * @param mixed $valeur + * Une valeur à tester. Si c'est un tableau, la fonction s'appliquera récursivement dessus. + * @param string $mode_typo + * Le mode d'application de la fonction typo(), avec trois valeurs possibles "toujours", "jamais" ou "multi". + * @return mixed + * Retourne la valeur éventuellement modifiée. + */ + function _T_ou_typo($valeur, $mode_typo = 'toujours', $connect = null, $env = []) { + if (!in_array($mode_typo, ['toujours', 'multi', 'jamais'])) { + $mode_typo = 'toujours'; + } + + // Si la valeur est bien une chaine (et pas non plus un entier déguisé) + if (is_string($valeur) and !is_numeric($valeur)) { + $presence_idiome = strpos($valeur, '<:'); + // Si la chaine est du type <:truc:> on passe à _T() + if ($presence_idiome === 0 + and preg_match('/^\<:([^>]*?):\>$/', $valeur, $match) + ) { + $valeur = _T($match[1]); + } else { + // Sinon on la passe a typo() si c'est pertinent + if ($presence_idiome !== false) { + if (class_exists(Spip\Texte\Collecteur\Idiomes::class)) {//SPIP 4.2 et > + $idiomes = new Spip\Texte\Collecteur\Idiomes(); + $presence_idiome = $idiomes->collecter($valeur, ['detecter_presence'=>True]); + } else {// SPIP 4.1 et < + include_spip('inc/texte'); + $presence_idiome = preg_match(_EXTRAIRE_IDIOME, $valeur); + } + } + + if ( + $mode_typo === 'toujours' + or ($mode_typo === 'multi' and ($presence_idiome or strpos($valeur, '<multi>') !== false)) + ) { + include_spip('inc/texte'); + // définir le connect pour éviter de déclencher les sécurités dans typo + // mais si on est en GLOBALS['filtrer_javascript'] == -1 alors le résultat passera dans safehtml + $env['espace_prive'] = false; + $valeur = typo($valeur, true, $connect ?? '', $env); + // et sécuriser quand même le tout + $valeur = interdire_scripts($valeur); + } + } + } + // Si c'est un tableau, on réapplique la fonction récursivement + elseif (is_array($valeur)) { + foreach ($valeur as $cle => $valeur2) { + $valeur[$cle] = _T_ou_typo($valeur2, $mode_typo, $connect, $env); + } + } + + return $valeur; + } +} +/** + * Insère toutes les valeurs du tableau $arr2 après (ou avant) $cle dans le tableau $arr1. + * Si $cle n'est pas trouvé, les valeurs de $arr2 seront ajoutés à la fin de $arr1. + * + * La fonction garde autant que possible les associations entre les clés. Elle fonctionnera donc aussi bien + * avec des tableaux à index numérique que des tableaux associatifs. + * Attention tout de même, elle utilise array_merge() donc les valeurs de clés étant en conflits seront écrasées. + * + * @param array $arr1 Tableau dans lequel se fera l'insertion + * @param unknown_type $cle Clé de $arr1 après (ou avant) laquelle se fera l'insertion + * @param array $arr2 Tableau contenant les valeurs à insérer + * @param bool $avant Indique si l'insertion se fait avant la clé (par défaut c'est après) + * @return array Retourne le tableau avec l'insertion + */ +if (!function_exists('spip_array_insert')) { +function spip_array_insert($arr1, $cle, $arr2, $avant = false) { + $index = array_search($cle, array_keys($arr1)); + if ($index === false) { + $index = count($arr1); // insert @ end of array if $key not found + } else { + if (!$avant) { + $index++; + } + } + $fin = array_splice($arr1, $index); + return array_merge($arr1, $arr2, $fin); +} +} + + +if (!function_exists('text_truncate')) { +/** +* Truncates text. +* +* Cuts a string to the length of $length and replaces the last characters +* with the ending if the text is longer than length. +* +* ### Options: +* +* - `ending` Will be used as Ending and appended to the trimmed string +* - `exact` If false, $text will not be cut mid-word +* - `html` If true, HTML tags would be handled correctly +* +* @param string $text String to truncate. +* @param integer $length Length of returned string, including ellipsis. +* @param array $options An array of html attributes and options. +* @return string Trimmed string. +* @access public +* @link https://api.cakephp.org/4.0/class-Cake.Utility.Text.html#truncate +*/ +function text_truncate($text, $length = 100, $options = []) { + $default = [ + 'ending' => '...', 'exact' => true, 'html' => false + ]; + $options = array_merge($default, $options); + extract($options); + + if ($html) { + if (mb_strlen(preg_replace('/<.*?>/', '', $text)) <= $length) { + return $text; + } + $totalLength = mb_strlen(strip_tags($ending)); + $openTags = []; + $truncate = ''; + + preg_match_all('/(<\/?([\w+]+)[^>]*>)?([^<>]*)/', $text, $tags, PREG_SET_ORDER); + foreach ($tags as $tag) { + if (!preg_match('/img|br|input|hr|area|base|basefont|col|frame|isindex|link|meta|param/s', $tag[2])) { + if (preg_match('/<[\w]+[^>]*>/s', $tag[0])) { + array_unshift($openTags, $tag[2]); + } elseif (preg_match('/<\/([\w]+)[^>]*>/s', $tag[0], $closeTag)) { + $pos = array_search($closeTag[1], $openTags); + if ($pos !== false) { + array_splice($openTags, $pos, 1); + } + } + } + $truncate .= $tag[1]; + + $contentLength = mb_strlen(preg_replace('/&[0-9a-z]{2,8};|&#[0-9]{1,7};|&#x[0-9a-f]{1,6};/i', ' ', $tag[3])); + if ($contentLength + $totalLength > $length) { + $left = $length - $totalLength; + $entitiesLength = 0; + if (preg_match_all('/&[0-9a-z]{2,8};|&#[0-9]{1,7};|&#x[0-9a-f]{1,6};/i', $tag[3], $entities, PREG_OFFSET_CAPTURE)) { + foreach ($entities[0] as $entity) { + if ($entity[1] + 1 - $entitiesLength <= $left) { + $left--; + $entitiesLength += mb_strlen($entity[0]); + } else { + break; + } + } + } + $truncate .= mb_substr($tag[3], 0, $left + $entitiesLength); + break; + } else { + $truncate .= $tag[3]; + $totalLength += $contentLength; + } + if ($totalLength >= $length) { + break; + } + } + } else { + if (mb_strlen($text) <= $length) { + return $text; + } else { + $truncate = mb_substr($text, 0, $length - mb_strlen($ending)); + } + } + if (!$exact) { + $spacepos = mb_strrpos($truncate, ' '); + if (isset($spacepos)) { + if ($html) { + $bits = mb_substr($truncate, $spacepos); + preg_match_all('/<\/([a-z]+)>/', $bits, $droppedTags, PREG_SET_ORDER); + if (!empty($droppedTags)) { + foreach ($droppedTags as $closingTag) { + if (!in_array($closingTag[1], $openTags)) { + array_unshift($openTags, $closingTag[1]); + } + } + } + } + $truncate = mb_substr($truncate, 0, $spacepos); + } + } + $truncate .= $ending; + + if ($html) { + foreach ($openTags as $tag) { + $truncate .= '</' . $tag . '>'; + } + } + + return $truncate; +} +} diff --git a/design_system_dependences/spip-bonux/tests/Texte/TouTypoTest.php b/design_system_dependences/spip-bonux/tests/Texte/TouTypoTest.php new file mode 100644 index 0000000000000000000000000000000000000000..6d5a24d909b933a129651845e9342e9993bfab09 --- /dev/null +++ b/design_system_dependences/spip-bonux/tests/Texte/TouTypoTest.php @@ -0,0 +1,444 @@ +<?php + +/** + * Test unitaire de la fonction propre du fichier inc/texte.php + */ + +namespace Spip\Bonux\Tests\Texte; + +use PHPUnit\Framework\TestCase; + +class TouTypoTest extends TestCase +{ + public static function setUpBeforeClass(): void + { + $GLOBALS['filtrer_javascript'] = 0; + find_in_path('inc/texte.php', '', true); + } + + protected function setUp(): void + { + $GLOBALS['meta']['type_urls'] = 'page'; + $GLOBALS['type_urls'] = 'page'; + // ce test est en fr + changer_langue('fr'); + } + + /** + * @dataProvider providerTexteTOuTypo + */ + public function testTexteTOuTypo($expected, ...$args): void + { + $actual = _T_ou_typo(...$args); + $this->assertSame($expected, $actual); + $this->assertEquals($expected, $actual); + } + + public function providerTexteTOuTypo(): array + { + return array( + 'string_1' => + array( + '', + '', + ), + 'string_2' => + array( + '0', + '0', + ), + 'string_3' => + array( + 'Un texte avec des <a href="http://spip.net">liens</a> [Article 1->art1] [spip->https://www.spip.net] https://www.spip.net', + 'Un texte avec des <a href="http://spip.net">liens</a> [Article 1->art1] [spip->https://www.spip.net] https://www.spip.net', + ), + 'string_4' => + array( + 'Un texte avec des entités &<>"', + 'Un texte avec des entités &<>"', + ), + 'string_5' => + array( + 'Un texte avec des entit&eacute ;s echap&eacute ; &amp ;&lt ;&gt ;&quot ;', + 'Un texte avec des entit&eacute;s echap&eacute; &amp;&lt;&gt;&quot;', + ), + 'string_6' => + array( + 'Un texte avec des entités numériques &<>"', + 'Un texte avec des entités numériques &<>"', + ), + 'string_7' => + array( + 'Un texte avec des entit&#233 ;s num&#233 ;riques echap&#233 ;es &#38 ;&#60 ;&#62 ;&quot ;', + 'Un texte avec des entit&#233;s num&#233;riques echap&#233;es &#38;&#60;&#62;&quot;', + ), + 'string_8' => + array( + 'Un texte sans entites &<>"’', + 'Un texte sans entites &<>"\'', + ), + 'string_9' => + array( + '{{{Des raccourcis}}} {italique} {{gras}} <code class="spip_code spip_code_inline" dir="ltr">du code</code>', + '{{{Des raccourcis}}} {italique} {{gras}} <code>du code</code>', + ), + 'string_10' => + array( + 'Un modele <tt><modeleinexistant|lien=[->https://www.spip.net]></tt>', + 'Un modele <modeleinexistant|lien=[->https://www.spip.net]>', + ), + 'string_11' => + array( + 'Un texte avec des retour +a la ligne et meme des + +paragraphes', + 'Un texte avec des retour +a la ligne et meme des + +paragraphes', + ), + 'string_w_idiome_1_default' => + array( + 'Cette information est obligatoire', + '<:info_obligatoire:>', + ), + 'string_w_idiome_2_default' => + array( + 'Cette information est obligatoire et aussi (obligatoire) alors ?', + '<:info_obligatoire:> et aussi <:info_obligatoire_02:> alors?', + ), + 'string_w_idiome_3_default' => + array( + 'Une chaine de langue qui existe pas <:modulerien:info_quinexistepas :> et donc', + 'Une chaine de langue qui existe pas <:modulerien:info_quinexistepas:> et donc', + ), + 'string_w_idiome_4_default' => + array( + 'Du texte d’abord et ensuite Cette information est obligatoire et aussi (obligatoire) alors ?', + 'Du texte d\'abord et ensuite <:info_obligatoire:> et aussi <:info_obligatoire_02:> alors?', + ), + 'string_w_idiome_5_default' => + array( + 'Une chaine avec idiome et html non trivial (obligatoire) <strong style="color:#000099">alors</strong> ?', + 'Une chaine avec idiome et html non trivial <:info_obligatoire_02:> <strong style="color:#000099">alors</strong>?', + ), + 'string_w_idiome_6_default' => + array( + '<span class="apercu_texte" style="color:red">Cette information est obligatoire</span>', + '<span class="apercu_texte" style="color:red"><:info_obligatoire:></span>', + ), + 'string_w_idiome_7_default' => + array( + 'Obligatoire', + '<multi>[fr]Obligatoire[en]Requested</multi>', + ), + 'string_w_idiome_8_default' => + array( + 'Ce champs est obligatoire et aussi une autre multi Obligatoire alors ?', + '<multi>[fr]Ce champs est obligatoire[en]This information is Requested</multi> et aussi une autre multi <multi>[fr]Obligatoire[en]Requested</multi> alors?', + ), + 'string_w_idiome_9_default' => + array( + 'Du texte d’abord et ensuite Ce champs est obligatoire et aussi une autre multi Obligatoire alors ?', + 'Du texte d\'abord et ensuite <multi>[fr]Ce champs est obligatoire[en]This information is Requested</multi> et aussi une autre multi <multi>[fr]Obligatoire[en]Requested</multi> alors?', + ), + 'string_w_idiome_10_default' => + array( + 'Une chaine avec multi et html non trivial Obligatoire <strong style="color:#000099">alors</strong> ?', + 'Une chaine avec multi et html non trivial <multi>[fr]Obligatoire[en]Requested</multi> <strong style="color:#000099">alors</strong>?', + ), + 'string_w_idiome_11_default' => + array( + '<span class="apercu_texte" style="color:red">Obligatoire</span>', + '<span class="apercu_texte" style="color:red"><multi>[fr]Obligatoire[en]Requested</multi></span>', + ), + 'string_w_idiome_1_toujours' => + array( + 'Cette information est obligatoire', + '<:info_obligatoire:>', + 'toujours', + ), + 'string_w_idiome_2_toujours' => + array( + 'Cette information est obligatoire et aussi (obligatoire) alors ?', + '<:info_obligatoire:> et aussi <:info_obligatoire_02:> alors?', + 'toujours', + ), + 'string_w_idiome_3_toujours' => + array( + 'Une chaine de langue qui existe pas <:modulerien:info_quinexistepas :> et donc', + 'Une chaine de langue qui existe pas <:modulerien:info_quinexistepas:> et donc', + 'toujours', + ), + 'string_w_idiome_4_toujours' => + array( + 'Du texte d’abord et ensuite Cette information est obligatoire et aussi (obligatoire) alors ?', + 'Du texte d\'abord et ensuite <:info_obligatoire:> et aussi <:info_obligatoire_02:> alors?', + 'toujours', + ), + 'string_w_idiome_5_toujours' => + array( + 'Une chaine avec idiome et html non trivial (obligatoire) <strong style="color:#000099">alors</strong> ?', + 'Une chaine avec idiome et html non trivial <:info_obligatoire_02:> <strong style="color:#000099">alors</strong>?', + 'toujours', + ), + 'string_w_idiome_6_toujours' => + array( + '<span class="apercu_texte" style="color:red">Cette information est obligatoire</span>', + '<span class="apercu_texte" style="color:red"><:info_obligatoire:></span>', + 'toujours', + ), + 'string_w_idiome_7_toujours' => + array( + 'Obligatoire', + '<multi>[fr]Obligatoire[en]Requested</multi>', + 'toujours', + ), + 'string_w_idiome_8_toujours' => + array( + 'Ce champs est obligatoire et aussi une autre multi Obligatoire alors ?', + '<multi>[fr]Ce champs est obligatoire[en]This information is Requested</multi> et aussi une autre multi <multi>[fr]Obligatoire[en]Requested</multi> alors?', + 'toujours', + ), + 'string_w_idiome_9_toujours' => + array( + 'Du texte d’abord et ensuite Ce champs est obligatoire et aussi une autre multi Obligatoire alors ?', + 'Du texte d\'abord et ensuite <multi>[fr]Ce champs est obligatoire[en]This information is Requested</multi> et aussi une autre multi <multi>[fr]Obligatoire[en]Requested</multi> alors?', + 'toujours', + ), + 'string_w_idiome_10_toujours' => + array( + 'Une chaine avec multi et html non trivial Obligatoire <strong style="color:#000099">alors</strong> ?', + 'Une chaine avec multi et html non trivial <multi>[fr]Obligatoire[en]Requested</multi> <strong style="color:#000099">alors</strong>?', + 'toujours', + ), + 'string_w_idiome_11_toujours' => + array( + '<span class="apercu_texte" style="color:red">Obligatoire</span>', + '<span class="apercu_texte" style="color:red"><multi>[fr]Obligatoire[en]Requested</multi></span>', + 'toujours', + ), + 'string_w_idiome_1_multi' => + array( + 'Cette information est obligatoire', + '<:info_obligatoire:>', + 'multi', + ), + 'string_w_idiome_2_multi' => + array( + 'Cette information est obligatoire et aussi (obligatoire) alors ?', + '<:info_obligatoire:> et aussi <:info_obligatoire_02:> alors?', + 'multi', + ), + 'string_w_idiome_3_multi' => + array( + 'Une chaine de langue qui existe pas <:modulerien:info_quinexistepas :> et donc', + 'Une chaine de langue qui existe pas <:modulerien:info_quinexistepas:> et donc', + 'multi', + ), + 'string_w_idiome_4_multi' => + array( + 'Du texte d’abord et ensuite Cette information est obligatoire et aussi (obligatoire) alors ?', + 'Du texte d\'abord et ensuite <:info_obligatoire:> et aussi <:info_obligatoire_02:> alors?', + 'multi', + ), + 'string_w_idiome_5_multi' => + array( + 'Une chaine avec idiome et html non trivial (obligatoire) <strong style="color:#000099">alors</strong> ?', + 'Une chaine avec idiome et html non trivial <:info_obligatoire_02:> <strong style="color:#000099">alors</strong>?', + 'multi', + ), + 'string_w_idiome_6_multi' => + array( + '<span class="apercu_texte" style="color:red">Cette information est obligatoire</span>', + '<span class="apercu_texte" style="color:red"><:info_obligatoire:></span>', + 'multi', + ), + 'string_w_idiome_7_multi' => + array( + 'Obligatoire', + '<multi>[fr]Obligatoire[en]Requested</multi>', + 'multi', + ), + 'string_w_idiome_8_multi' => + array( + 'Ce champs est obligatoire et aussi une autre multi Obligatoire alors ?', + '<multi>[fr]Ce champs est obligatoire[en]This information is Requested</multi> et aussi une autre multi <multi>[fr]Obligatoire[en]Requested</multi> alors?', + 'multi', + ), + 'string_w_idiome_9_multi' => + array( + 'Du texte d’abord et ensuite Ce champs est obligatoire et aussi une autre multi Obligatoire alors ?', + 'Du texte d\'abord et ensuite <multi>[fr]Ce champs est obligatoire[en]This information is Requested</multi> et aussi une autre multi <multi>[fr]Obligatoire[en]Requested</multi> alors?', + 'multi', + ), + 'string_w_idiome_10_multi' => + array( + 'Une chaine avec multi et html non trivial Obligatoire <strong style="color:#000099">alors</strong> ?', + 'Une chaine avec multi et html non trivial <multi>[fr]Obligatoire[en]Requested</multi> <strong style="color:#000099">alors</strong>?', + 'multi', + ), + 'string_w_idiome_11_multi' => + array( + '<span class="apercu_texte" style="color:red">Obligatoire</span>', + '<span class="apercu_texte" style="color:red"><multi>[fr]Obligatoire[en]Requested</multi></span>', + 'multi', + ), + 'string_w_idiome_1_jamais' => + array( + 'Cette information est obligatoire', + '<:info_obligatoire:>', + 'jamais', + ), + 'string_w_idiome_2_jamais' => + array( + '<:info_obligatoire:> et aussi <:info_obligatoire_02:> alors?', + '<:info_obligatoire:> et aussi <:info_obligatoire_02:> alors?', + 'jamais', + ), + 'string_w_idiome_3_jamais' => + array( + 'Une chaine de langue qui existe pas <:modulerien:info_quinexistepas:> et donc', + 'Une chaine de langue qui existe pas <:modulerien:info_quinexistepas:> et donc', + 'jamais', + ), + 'string_w_idiome_4_jamais' => + array( + 'Du texte d\'abord et ensuite <:info_obligatoire:> et aussi <:info_obligatoire_02:> alors?', + 'Du texte d\'abord et ensuite <:info_obligatoire:> et aussi <:info_obligatoire_02:> alors?', + 'jamais', + ), + 'string_w_idiome_5_jamais' => + array( + 'Une chaine avec idiome et html non trivial <:info_obligatoire_02:> <strong style="color:#000099">alors</strong>?', + 'Une chaine avec idiome et html non trivial <:info_obligatoire_02:> <strong style="color:#000099">alors</strong>?', + 'jamais', + ), + 'string_w_idiome_6_jamais' => + array( + '<span class="apercu_texte" style="color:red"><:info_obligatoire:></span>', + '<span class="apercu_texte" style="color:red"><:info_obligatoire:></span>', + 'jamais', + ), + 'string_w_idiome_7_jamais' => + array( + '<multi>[fr]Obligatoire[en]Requested</multi>', + '<multi>[fr]Obligatoire[en]Requested</multi>', + 'jamais', + ), + 'string_w_idiome_8_jamais' => + array( + '<multi>[fr]Ce champs est obligatoire[en]This information is Requested</multi> et aussi une autre multi <multi>[fr]Obligatoire[en]Requested</multi> alors?', + '<multi>[fr]Ce champs est obligatoire[en]This information is Requested</multi> et aussi une autre multi <multi>[fr]Obligatoire[en]Requested</multi> alors?', + 'jamais', + ), + 'string_w_idiome_9_jamais' => + array( + 'Du texte d\'abord et ensuite <multi>[fr]Ce champs est obligatoire[en]This information is Requested</multi> et aussi une autre multi <multi>[fr]Obligatoire[en]Requested</multi> alors?', + 'Du texte d\'abord et ensuite <multi>[fr]Ce champs est obligatoire[en]This information is Requested</multi> et aussi une autre multi <multi>[fr]Obligatoire[en]Requested</multi> alors?', + 'jamais', + ), + 'string_w_idiome_10_jamais' => + array( + 'Une chaine avec multi et html non trivial <multi>[fr]Obligatoire[en]Requested</multi> <strong style="color:#000099">alors</strong>?', + 'Une chaine avec multi et html non trivial <multi>[fr]Obligatoire[en]Requested</multi> <strong style="color:#000099">alors</strong>?', + 'jamais', + ), + 'string_w_idiome_11_jamais' => + array( + '<span class="apercu_texte" style="color:red"><multi>[fr]Obligatoire[en]Requested</multi></span>', + '<span class="apercu_texte" style="color:red"><multi>[fr]Obligatoire[en]Requested</multi></span>', + 'jamais', + ), + 'string_w_idiome_1_toujours_ecrire' => + array( + 'Cette information est obligatoire', + '<:info_obligatoire:>', + 'toujours', + '', + ['espace_prive' => true], + ), + 'string_w_idiome_2_toujours_ecrire' => + array( + 'Cette information est obligatoire et aussi (obligatoire) alors ?', + '<:info_obligatoire:> et aussi <:info_obligatoire_02:> alors?', + 'toujours', + '', + ['espace_prive' => true], + ), + 'string_w_idiome_3_toujours_ecrire' => + array( + 'Une chaine de langue qui existe pas <:modulerien:info_quinexistepas :> et donc', + 'Une chaine de langue qui existe pas <:modulerien:info_quinexistepas:> et donc', + 'toujours', + '', + ['espace_prive' => true], + ), + 'string_w_idiome_4_toujours_ecrire' => + array( + 'Du texte d’abord et ensuite Cette information est obligatoire et aussi (obligatoire) alors ?', + 'Du texte d\'abord et ensuite <:info_obligatoire:> et aussi <:info_obligatoire_02:> alors?', + 'toujours', + '', + ['espace_prive' => true], + ), + 'string_w_idiome_5_toujours_ecrire' => + array( + 'Une chaine avec idiome et html non trivial (obligatoire) <strong style="color:#000099">alors</strong> ?', + 'Une chaine avec idiome et html non trivial <:info_obligatoire_02:> <strong style="color:#000099">alors</strong>?', + 'toujours', + '', + ['espace_prive' => true], + ), + 'string_w_idiome_6_toujours_ecrire' => + array( + '<span class="apercu_texte" style="color:red">Cette information est obligatoire</span>', + '<span class="apercu_texte" style="color:red"><:info_obligatoire:></span>', + 'toujours', + '', + ['espace_prive' => true], + ), + 'string_w_idiome_7_toujours_ecrire' => + array( + 'Obligatoire', + '<multi>[fr]Obligatoire[en]Requested</multi>', + 'toujours', + '', + ['espace_prive' => true], + ), + 'string_w_idiome_8_toujours_ecrire' => + array( + 'Ce champs est obligatoire et aussi une autre multi Obligatoire alors ?', + '<multi>[fr]Ce champs est obligatoire[en]This information is Requested</multi> et aussi une autre multi <multi>[fr]Obligatoire[en]Requested</multi> alors?', + 'toujours', + '', + ['espace_prive' => true], + ), + 'string_w_idiome_9_toujours_ecrire' => + array( + 'Du texte d’abord et ensuite Ce champs est obligatoire et aussi une autre multi Obligatoire alors ?', + 'Du texte d\'abord et ensuite <multi>[fr]Ce champs est obligatoire[en]This information is Requested</multi> et aussi une autre multi <multi>[fr]Obligatoire[en]Requested</multi> alors?', + 'toujours', + '', + ['espace_prive' => true], + ), + 'string_w_idiome_10_toujours_ecrire' => + array( + 'Une chaine avec multi et html non trivial Obligatoire <strong style="color:#000099">alors</strong> ?', + 'Une chaine avec multi et html non trivial <multi>[fr]Obligatoire[en]Requested</multi> <strong style="color:#000099">alors</strong>?', + 'toujours', + '', + ['espace_prive' => true], + ), + 'string_w_idiome_11_toujours_ecrire' => + array( + '<span class="apercu_texte" style="color:red">Obligatoire</span>', + '<span class="apercu_texte" style="color:red"><multi>[fr]Obligatoire[en]Requested</multi></span>', + 'toujours', + '', + ['espace_prive' => true], + ), + ); + } +} diff --git a/design_system_dependences/spip-bonux/tests/balises/set_merge.html b/design_system_dependences/spip-bonux/tests/balises/set_merge.html new file mode 100644 index 0000000000000000000000000000000000000000..86b149f7757a7814387bb49f3c4650dc1f3b3fe1 --- /dev/null +++ b/design_system_dependences/spip-bonux/tests/balises/set_merge.html @@ -0,0 +1,60 @@ +[(#REM) + + la balise SET_MERGE sert a merger des valeurs dans un tableau #SET + #SET_MERGE{tab,t1} : merge tab et t1 dans tab + #SET_MERGE{tab,t1,t2} : merge t1 et t2 dans tab +] + +[(#REM) ----- 2 arguments ------ ] +[(#REM) + SET SET+GET|merge = SET MERGE +] + #SET{Aa,#ARRAY{a,aaa}} #SET{Aaa,#ARRAY{a,aaa}} + #SET{Ab,#ARRAY{b,bbb}} + [(#SET{Ac,[(#GET{Aa}|array_merge{#GET{Ab}})]})] + #SET_MERGE{Aaa,#GET{Ab}} + [(#GET{Ac}|!=={#GET{Aaa}}|oui)[(#SET{err,"Aaa et Ac sont differents"})]] + + +[(#REM) + SET_MERGE peut etre fait sans declarer un SET prealable +] + #SET{Ba,#ARRAY{a,aaa}} + #SET_MERGE{Bb,#GET{Ba}} + [(#GET{Ba}|!=={#GET{Bb}}|oui)[(#SET{err,"Ba et Bb sont différents"})]] + +[(#REM) + Si une chaine est donnee a MERGE, elle est transformee en tableau +] + #SET_MERGE{C,coucou} + [(#GET{C}|!=={#ARRAY{0,coucou}})[(#SET{err,"(C) String non compris par #SET_MERGE"})]] + + +[(#REM) ----- 3 arguments ------ ] +[(#REM) + SET SET+GET|merge = SET MERGE +] + #SET{Fa,#ARRAY{a,aaa}} + #SET{Fb,#ARRAY{b,bbb}} + [(#SET{Fc,[(#GET{Fa}|array_merge{#GET{Fb}})]})] + #SET_MERGE{Fd,#GET{Fa},#GET{Fb}} + [(#GET{Fc}|!=={#GET{Fd}}|oui)[(#SET{err,"Fc et Fd sont differents"})]] + + +[(#REM) + MERGE peut etre fait sans declarer un SET prealable +] + #SET{Ga,#ARRAY{a,aaa}} + #SET{Gb,#ARRAY{b,bbb}} + [(#SET{Gc,[(#GET{Ga}|array_merge{#GET{Gb}})]})] + #SET_MERGE{Gd,#GET{Ga},#GET{Gb}} + [(#GET{Gc}|!=={#GET{Gd}}|oui)[(#SET{err,"Gc et Gd sont différents"})]] + + +[(#REM) + Si une chaine est donnee a MERGE, elle est transformee en tableau +] + #SET_MERGE{H,coucou,toutou} + [(#GET{H}|!=={#ARRAY{0,coucou,1,toutou}})[(#SET{err,"(H) String non compris par #SET_MERGE"})]] + +[(#GET{err}|?{ERREUR,OK}) #GET{err} ] diff --git a/design_system_dependences/spip-bonux/tests/balises/set_push.html b/design_system_dependences/spip-bonux/tests/balises/set_push.html new file mode 100644 index 0000000000000000000000000000000000000000..74bc38eb8db319acfb4996bacefe08b517528405 --- /dev/null +++ b/design_system_dependences/spip-bonux/tests/balises/set_push.html @@ -0,0 +1,25 @@ +[(#REM) + + la balise SET_PUSH sert a ajouter des valeurs dans un tableau #SET + +] + +[(#REM) + SET GET|push = SET PUSH +] + #SET{A,#ARRAY} + #SET{B,#ARRAY} + [(#SET{A,[(#GET{A}|push{abc})]})] + #SET_PUSH{B,abc} + [(#GET{A}|!=={#GET{B}}|oui)[(#SET{err,"A et B sont différents"})]] + + +[(#REM) + SET_PUSH peut être fait sans declarer un SET prealable +] + #SET_PUSH{C,abc} + [(#GET{A}|!=={#GET{C}}|oui)[(#SET{err,"A et C sont différents"})]] + + + +[(#GET{err}|?{ERREUR,OK}) #GET{err} ] diff --git a/design_system_dependences/switchcase/v0.5.1/.gitattributes b/design_system_dependences/switchcase/.gitattributes similarity index 100% rename from design_system_dependences/switchcase/v0.5.1/.gitattributes rename to design_system_dependences/switchcase/.gitattributes diff --git a/design_system_dependences/switchcase/.ok b/design_system_dependences/switchcase/.ok deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/design_system_dependences/switchcase/v0.5.1/doc.txt b/design_system_dependences/switchcase/doc.txt similarity index 100% rename from design_system_dependences/switchcase/v0.5.1/doc.txt rename to design_system_dependences/switchcase/doc.txt diff --git a/design_system_dependences/switchcase/v0.5.1/images/switchcase-32.png b/design_system_dependences/switchcase/images/switchcase-32.png similarity index 100% rename from design_system_dependences/switchcase/v0.5.1/images/switchcase-32.png rename to design_system_dependences/switchcase/images/switchcase-32.png diff --git a/design_system_dependences/switchcase/v0.5.1/images/switchcase-xx.svg b/design_system_dependences/switchcase/images/switchcase-xx.svg similarity index 100% rename from design_system_dependences/switchcase/v0.5.1/images/switchcase-xx.svg rename to design_system_dependences/switchcase/images/switchcase-xx.svg diff --git a/design_system_dependences/switchcase/v0.5.1/lang/paquet-switchcase_fr.php b/design_system_dependences/switchcase/lang/paquet-switchcase_fr.php similarity index 100% rename from design_system_dependences/switchcase/v0.5.1/lang/paquet-switchcase_fr.php rename to design_system_dependences/switchcase/lang/paquet-switchcase_fr.php diff --git a/design_system_dependences/switchcase/v0.5.1/paquet.xml b/design_system_dependences/switchcase/paquet.xml similarity index 100% rename from design_system_dependences/switchcase/v0.5.1/paquet.xml rename to design_system_dependences/switchcase/paquet.xml diff --git a/design_system_dependences/switchcase/v0.5.1/switchcase.svg b/design_system_dependences/switchcase/switchcase.svg similarity index 100% rename from design_system_dependences/switchcase/v0.5.1/switchcase.svg rename to design_system_dependences/switchcase/switchcase.svg diff --git a/design_system_dependences/switchcase/v0.5.1/switchcase_fonctions.php b/design_system_dependences/switchcase/switchcase_fonctions.php similarity index 100% rename from design_system_dependences/switchcase/v0.5.1/switchcase_fonctions.php rename to design_system_dependences/switchcase/switchcase_fonctions.php diff --git a/design_system_dependences/switchcase/v0.5.1/switchcase_options.php b/design_system_dependences/switchcase/switchcase_options.php similarity index 100% rename from design_system_dependences/switchcase/v0.5.1/switchcase_options.php rename to design_system_dependences/switchcase/switchcase_options.php diff --git a/design_system_dependences/switchcase/v0.5.1/tests/test_switchcase.html b/design_system_dependences/switchcase/tests/test_switchcase.html similarity index 100% rename from design_system_dependences/switchcase/v0.5.1/tests/test_switchcase.html rename to design_system_dependences/switchcase/tests/test_switchcase.html diff --git a/design_system_dependences/switchcase/v0.5.1/install.log b/design_system_dependences/switchcase/v0.5.1/install.log deleted file mode 100644 index 673a8ece8fb95ec8e9fee7256ca87e5e52724ee0..0000000000000000000000000000000000000000 --- a/design_system_dependences/switchcase/v0.5.1/install.log +++ /dev/null @@ -1,3 +0,0 @@ -installation: charger_plugin -date: 2024-01-16T12:57:08Z -source: ../tmp/cache/chargeur/v0.5.1-7063c879-switchcase-d1f0d-v0.5.1.zip diff --git a/design_system_dependences/tradrub/base/tradrub.php b/design_system_dependences/tradrub/base/tradrub.php new file mode 100644 index 0000000000000000000000000000000000000000..f69d06808d6375b2bc72a5641194d69f678b68b9 --- /dev/null +++ b/design_system_dependences/tradrub/base/tradrub.php @@ -0,0 +1,79 @@ +<?php + +/** + * Fonctions de déclarations des tables dans la bdd + * et de sélection spécifique de la langue dans la rubrique... + * + * @package SPIP\Tradrub\Pipelines + * @license + * Licence GPL (c) 2008-2010 Stephane Laurent (Bill), Matthieu Marcillaud + */ + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +/** + * Ajouter id_trad à la table rubriques + * + * @pipeline declarer_tables_objets_sql + * @param array $tables + * Description des objets editoriaux + * @return array + * Description des objets editoriaux + */ +function tradrub_declarer_tables_objets_sql($tables) { + // Extension de la table rubriques + $tables['spip_rubriques']['field']['id_trad'] = "bigint(21) DEFAULT '0' NOT NULL"; + $tables['spip_rubriques']['texte_definir_comme_traduction_objet'] = 'tradrub:texte_definir_comme_traduction_rubrique'; + return $tables; +} + +/** + * Ajout lors de l'insertion d'une traduction de rubrique + * de la langue, qui peut ne pas être connue mais héritée + * de la rubrique parente à la destination + * + * @param array $flux Données du pipeline + * @return array Données du pipeline +**/ +function tradrub_pre_insertion($flux) { + // pour les rubriques + if ($flux['args']['table'] == 'spip_rubriques') { + // si on crée une traduction + if ($id_rubrique_source = _request('lier_trad')) { + $id_parent_trad = $flux['data']['id_parent']; + + $row = sql_fetsel('lang, id_secteur', 'spip_rubriques', 'id_rubrique=' . intval($id_parent_trad)); + $lang_rub = isset($row['lang']) ? $row['lang'] : ''; + $lang = ''; + $choisie = 'non'; + + // La langue a la creation : si les liens de traduction sont autorises + // dans les rubriques, on essaie avec la langue de l'auteur, + // ou a defaut celle de la rubrique + // Sinon c'est la langue de la rubrique qui est choisie + heritee + if (in_array('spip_rubriques', explode(',', $GLOBALS['meta']['multi_objets']))) { + lang_select($GLOBALS['visiteur_session']['lang']); + if (in_array($GLOBALS['spip_lang'], explode(',', $GLOBALS['meta']['langues_multilingue']))) { + $lang = $GLOBALS['spip_lang']; + $choisie = 'oui'; + } + } + + if (!$lang) { + $choisie = 'non'; + $lang = $lang_rub ? $lang_rub : $GLOBALS['meta']['langue_site']; + } + + $flux['data']['lang'] = $lang; + $flux['data']['langue_choisie'] = $choisie; + + // ici on ignore changer_lang qui est poste en cas de trad, + // car l'heuristique du choix de la langue est pris en charge ici + // en fonction de la config du site et de la rubrique choisie + set_request('changer_lang'); + } + } + return $flux; +} diff --git a/design_system_dependences/tradrub/inc/precharger_rubrique.php b/design_system_dependences/tradrub/inc/precharger_rubrique.php new file mode 100644 index 0000000000000000000000000000000000000000..35824075a6811a1b903d778effefb4b5edaa7f37 --- /dev/null +++ b/design_system_dependences/tradrub/inc/precharger_rubrique.php @@ -0,0 +1,54 @@ +<?php + +/** + * Fonctions de pré-remplissage des traductions + * + * @package SPIP\Tradrub\Objets + * @license + * Licence GPL (c) 2008-2010 Stephane Laurent (Bill), Matthieu Marcillaud + */ + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + + +include_spip('inc/precharger_objet'); + +/** + * Retourne les valeurs à charger pour un formulaire d'édition d'une rubrique + * + * Lors d'une création, certains champs peuvent être préremplis + * (c'est le cas des traductions) + * + * @param string|int $id + * Identifiant de la rubrique, ou "new" pour une création + * @param int $id_rubrique + * Identifiant éventuel de la rubrique parente + * @param int $lier_trad + * Identifiant éventuel de la traduction de référence + * @return array + * Couples clés / valeurs des champs du formulaire à charger. +**/ +function inc_precharger_rubrique_dist($id, $id_rubrique = 0, $lier_trad = 0) { + return precharger_objet('rubrique', $id, $id_rubrique, $lier_trad, 'titre'); +} + +/** + * Récupère les valeurs d'une traduction de référence pour la création + * d'une rubrique (préremplissage du formulaire). + * + * @note Fonction facultative si pas de changement dans les traitements + * + * @param string|int $id + * Identifiant de la rubrique, ou "new" pour une création + * @param int $id_rubrique + * Identifiant éventuel de la rubrique parente + * @param int $lier_trad + * Identifiant éventuel de la traduction de référence + * @return array + * Couples clés / valeurs des champs du formulaire à charger +**/ +function inc_precharger_traduction_rubrique_dist($id, $id_rubrique = 0, $lier_trad = 0) { + return precharger_traduction_objet('rubrique', $id, $id_rubrique, $lier_trad, 'titre'); +} diff --git a/design_system_dependences/tradrub/lang/paquet-tradrub.xml b/design_system_dependences/tradrub/lang/paquet-tradrub.xml new file mode 100644 index 0000000000000000000000000000000000000000..dacaeafc06fe69240df86b0bd1481e8fa19ddef3 --- /dev/null +++ b/design_system_dependences/tradrub/lang/paquet-tradrub.xml @@ -0,0 +1,31 @@ +<traduction + module="paquet-tradrub" + id="paquet-tradrub--tradrub-1fec6" + gestionnaire="salvatore" + url="https://trad.spip.net" + source="https://git.spip.net/spip-contrib-extensions/tradrub.git" + reference="fr"> + <langue code="de" url="https://trad.spip.net/tradlang_module/paquet-tradrub?lang_cible=de" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="klaus++" lien="https://trad.spip.net/auteur/klaus" /> + </langue> + <langue code="en" url="https://trad.spip.net/tradlang_module/paquet-tradrub?lang_cible=en" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="kent1" lien="https://trad.spip.net/auteur/kent1" /> + </langue> + <langue code="es" url="https://trad.spip.net/tradlang_module/paquet-tradrub?lang_cible=es" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Raquel S. Bujaldón" lien="https://trad.spip.net/auteur/raquel-s-bujaldon" /> + </langue> + <langue code="fr" url="https://trad.spip.net/tradlang_module/paquet-tradrub?lang_cible=fr" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00" /> + <langue code="it" url="https://trad.spip.net/tradlang_module/paquet-tradrub?lang_cible=it" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Alberto" lien="https://trad.spip.net/auteur/alberto" /> + </langue> + <langue code="nl" url="https://trad.spip.net/tradlang_module/paquet-tradrub?lang_cible=nl" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Hanjo" lien="https://trad.spip.net/auteur/hanjo" /> + <traducteur nom="Suske" lien="https://trad.spip.net/auteur/suske" /> + </langue> + <langue code="ru" url="https://trad.spip.net/tradlang_module/paquet-tradrub?lang_cible=ru" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Serge Markitanenko" lien="https://trad.spip.net/auteur/serge-markitanenko" /> + </langue> + <langue code="sk" url="https://trad.spip.net/tradlang_module/paquet-tradrub?lang_cible=sk" total="3" traduits="3" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="jaro" lien="https://trad.spip.net/auteur/jaro" /> + </langue> +</traduction> diff --git a/design_system_dependences/tradrub/lang/paquet-tradrub_de.php b/design_system_dependences/tradrub/lang/paquet-tradrub_de.php new file mode 100644 index 0000000000000000000000000000000000000000..6f40bd51a3a18bb709cd5bba3eb0a4960fb1f2eb --- /dev/null +++ b/design_system_dependences/tradrub/lang/paquet-tradrub_de.php @@ -0,0 +1,16 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-tradrub?lang_cible=de +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // T + 'tradrub_description' => 'Dieses Plugin fügt den Rubriken dem Übsersetzungssystem der Artikel nachempfundene Funktionen hinzu: Ein neues Feld id_trad verbindet die Übersetzungen von Rubriken.', + 'tradrub_nom' => 'Übersetzungen der Rubriken', + 'tradrub_slogan' => 'Verwaltung von Übersetzungslinks zwischen Rubriken' +); diff --git a/design_system_dependences/tradrub/lang/paquet-tradrub_en.php b/design_system_dependences/tradrub/lang/paquet-tradrub_en.php new file mode 100644 index 0000000000000000000000000000000000000000..d9fd261c3677c3b1cc5120b32882209b0ad47c0c --- /dev/null +++ b/design_system_dependences/tradrub/lang/paquet-tradrub_en.php @@ -0,0 +1,16 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-tradrub?lang_cible=en +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // T + 'tradrub_description' => 'This plugin adds a system inspired by the translations of articles: it adds a field <code>id_trad</code> to the sections database table and then links the translations of the sections.', + 'tradrub_nom' => 'Translations between sections', + 'tradrub_slogan' => 'Management of translation links between sections' +); diff --git a/design_system_dependences/tradrub/lang/paquet-tradrub_es.php b/design_system_dependences/tradrub/lang/paquet-tradrub_es.php new file mode 100644 index 0000000000000000000000000000000000000000..f87e77bc40db7e281a323eee7a8314157374a339 --- /dev/null +++ b/design_system_dependences/tradrub/lang/paquet-tradrub_es.php @@ -0,0 +1,16 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-tradrub?lang_cible=es +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // T + 'tradrub_description' => 'Este plugin agrega un sistema inspirado en las traducciones de los artÃculos: añade un campo id_trad en la tabla secciones y relaciona asà las traducciones de las secciones.', + 'tradrub_nom' => 'Traducción entre secciones', + 'tradrub_slogan' => 'Gestión de enlaces de traducción entre las secciones' +); diff --git a/design_system_dependences/tradrub/lang/paquet-tradrub_fr.php b/design_system_dependences/tradrub/lang/paquet-tradrub_fr.php new file mode 100644 index 0000000000000000000000000000000000000000..d93ec7a5438e99d4d5c41ef9b5e3e640939b0e99 --- /dev/null +++ b/design_system_dependences/tradrub/lang/paquet-tradrub_fr.php @@ -0,0 +1,14 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// Fichier source, a modifier dans https://git.spip.net/spip-contrib-extensions/tradrub.git +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // T + 'tradrub_description' => 'Ce plugin rajoute un système inspiré par celui des traductions des articles : il ajoute un champ id_trad à la table rubriques et lie ainsi les traductions des rubriques.', + 'tradrub_nom' => 'Traduction entre rubriques', + 'tradrub_slogan' => 'Gestion de liens de traduction entre les rubriques' +); diff --git a/design_system_dependences/tradrub/lang/paquet-tradrub_it.php b/design_system_dependences/tradrub/lang/paquet-tradrub_it.php new file mode 100644 index 0000000000000000000000000000000000000000..97124b86fcf75ebb447cb12de72ed49485489d30 --- /dev/null +++ b/design_system_dependences/tradrub/lang/paquet-tradrub_it.php @@ -0,0 +1,16 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-tradrub?lang_cible=it +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // T + 'tradrub_description' => 'Questo plugin aggiunge un sistema ispirato a quello delle traduzioni degli articoli: aggiunge un campo id_trad alla tabella delle intestazioni e quindi collega le traduzioni delle intestazioni.', + 'tradrub_nom' => 'Traduzione tra rubriche', + 'tradrub_slogan' => 'Gestione dei collegamenti di traduzione tra le rubriche' +); diff --git a/design_system_dependences/tradrub/lang/paquet-tradrub_nl.php b/design_system_dependences/tradrub/lang/paquet-tradrub_nl.php new file mode 100644 index 0000000000000000000000000000000000000000..c6515a7169cd4cc1237c9237ad147d5874b38335 --- /dev/null +++ b/design_system_dependences/tradrub/lang/paquet-tradrub_nl.php @@ -0,0 +1,16 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-tradrub?lang_cible=nl +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // T + 'tradrub_description' => 'Deze plugin voegt een vertalingssysteem toe dat gelijkaardig is aan die van de artikelen: het brengt een id_trad veld in de "rubriques" tabel en linkt hierdoor de vertalingen van de rubrieken.', + 'tradrub_nom' => 'Vertaling voor de rubrieken', + 'tradrub_slogan' => 'Beheer van vertalingen tussen de rubrieken' +); diff --git a/design_system_dependences/tradrub/lang/paquet-tradrub_ru.php b/design_system_dependences/tradrub/lang/paquet-tradrub_ru.php new file mode 100644 index 0000000000000000000000000000000000000000..6be131b1534eec120e50f85d86cbaa70b7d8d05e --- /dev/null +++ b/design_system_dependences/tradrub/lang/paquet-tradrub_ru.php @@ -0,0 +1,16 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-tradrub?lang_cible=ru +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // T + 'tradrub_description' => 'Плагин реализует такие возможноÑти по организации переводов Ñтатей как и аналогичный вÑтроенный функционал Ð´Ð»Ñ Ñтатей. Он добавлÑет поле <code>id_trad<code> в таблицу разделов в базе данных Ñайта.', + 'tradrub_nom' => 'СиÑтема переводов Ð´Ð»Ñ Ñ€Ð°Ð·Ð´ÐµÐ»Ð° (TradRub)', + 'tradrub_slogan' => 'ÐžÑ€Ð³Ð°Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð¾Ð² разделов Ñайта' +); diff --git a/design_system_dependences/tradrub/lang/paquet-tradrub_sk.php b/design_system_dependences/tradrub/lang/paquet-tradrub_sk.php new file mode 100644 index 0000000000000000000000000000000000000000..6d1e2eda02391a8d6dc552b86def00706d8a0e89 --- /dev/null +++ b/design_system_dependences/tradrub/lang/paquet-tradrub_sk.php @@ -0,0 +1,16 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/paquet-tradrub?lang_cible=sk +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // T + 'tradrub_description' => 'Tento zásuvný modul pridáva systém inÅ¡pirovaný prekladom Älánkov: pridáva pole id_trad do tabuľky rubriky a odkazy, ako aj preklady rubrÃk.', + 'tradrub_nom' => 'Preklad medzi rubrikami', + 'tradrub_slogan' => 'Riadenie odkazov na preklad medzi rubrikami' +); diff --git a/design_system_dependences/tradrub/lang/tradrub.xml b/design_system_dependences/tradrub/lang/tradrub.xml new file mode 100644 index 0000000000000000000000000000000000000000..981fdee619e55dbc90ffcf6612ed7b62c538db4e --- /dev/null +++ b/design_system_dependences/tradrub/lang/tradrub.xml @@ -0,0 +1,24 @@ +<traduction + module="tradrub" + id="tradrub--tradrub-1fec6" + gestionnaire="salvatore" + url="https://trad.spip.net" + source="https://git.spip.net/spip-contrib-extensions/tradrub.git" + reference="fr"> + <langue code="de" url="https://trad.spip.net/tradlang_module/tradrub?lang_cible=de" total="1" traduits="1" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="klaus++" lien="https://trad.spip.net/auteur/klaus" /> + </langue> + <langue code="en" url="https://trad.spip.net/tradlang_module/tradrub?lang_cible=en" total="1" traduits="1" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Serge Markitanenko" lien="https://trad.spip.net/auteur/serge-markitanenko" /> + </langue> + <langue code="fr" url="https://trad.spip.net/tradlang_module/tradrub?lang_cible=fr" total="1" traduits="1" relire="0" modifs="0" nouveaux="0" pourcent="100.00" /> + <langue code="pt_br" url="https://trad.spip.net/tradlang_module/tradrub?lang_cible=pt_br" total="1" traduits="1" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Ricardo Porto" lien="https://trad.spip.net/auteur/ricardo-porto" /> + </langue> + <langue code="ru" url="https://trad.spip.net/tradlang_module/tradrub?lang_cible=ru" total="1" traduits="1" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Serge Markitanenko" lien="https://trad.spip.net/auteur/serge-markitanenko" /> + </langue> + <langue code="uk" url="https://trad.spip.net/tradlang_module/tradrub?lang_cible=uk" total="1" traduits="1" relire="0" modifs="0" nouveaux="0" pourcent="100.00"> + <traducteur nom="Serge Markitanenko" lien="https://trad.spip.net/auteur/serge-markitanenko" /> + </langue> +</traduction> diff --git a/design_system_dependences/tradrub/lang/tradrub_de.php b/design_system_dependences/tradrub/lang/tradrub_de.php new file mode 100644 index 0000000000000000000000000000000000000000..4b9daec9d823bfce754f25e7178cadb6ee871a8c --- /dev/null +++ b/design_system_dependences/tradrub/lang/tradrub_de.php @@ -0,0 +1,14 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/tradrub?lang_cible=de +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // T + 'texte_definir_comme_traduction_rubrique' => 'Diese Rubrik ist eine Übersetzung der Rubrik Nummer:' +); diff --git a/design_system_dependences/tradrub/lang/tradrub_en.php b/design_system_dependences/tradrub/lang/tradrub_en.php new file mode 100644 index 0000000000000000000000000000000000000000..8418898d67712abeedb867d96b172f14ebf1f516 --- /dev/null +++ b/design_system_dependences/tradrub/lang/tradrub_en.php @@ -0,0 +1,14 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/tradrub?lang_cible=en +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // T + 'texte_definir_comme_traduction_rubrique' => 'This section is a translation of the section number:' +); diff --git a/design_system_dependences/tradrub/lang/tradrub_fr.php b/design_system_dependences/tradrub/lang/tradrub_fr.php new file mode 100644 index 0000000000000000000000000000000000000000..2d2cb5219f31531559c21d7b507cac53564f2b5e --- /dev/null +++ b/design_system_dependences/tradrub/lang/tradrub_fr.php @@ -0,0 +1,12 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// Fichier source, a modifier dans https://git.spip.net/spip-contrib-extensions/tradrub.git +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // T + 'texte_definir_comme_traduction_rubrique' => 'Cette rubrique est une traduction de la rubrique numéro :' +); diff --git a/design_system_dependences/tradrub/lang/tradrub_pt_br.php b/design_system_dependences/tradrub/lang/tradrub_pt_br.php new file mode 100644 index 0000000000000000000000000000000000000000..5c18afc46453380ea5097d54378f5fe02223ad47 --- /dev/null +++ b/design_system_dependences/tradrub/lang/tradrub_pt_br.php @@ -0,0 +1,14 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/tradrub?lang_cible=pt_br +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // T + 'texte_definir_comme_traduction_rubrique' => 'Esta seção é uma tradução da seção número:' +); diff --git a/design_system_dependences/tradrub/lang/tradrub_ru.php b/design_system_dependences/tradrub/lang/tradrub_ru.php new file mode 100644 index 0000000000000000000000000000000000000000..0de3fec2ce6e0634de8699c95dcfe6ce20668066 --- /dev/null +++ b/design_system_dependences/tradrub/lang/tradrub_ru.php @@ -0,0 +1,14 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/tradrub?lang_cible=ru +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // T + 'texte_definir_comme_traduction_rubrique' => 'Ðтот раздел ÑвлÑетÑÑ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð¾Ð¼ раздела номер: ' +); diff --git a/design_system_dependences/tradrub/lang/tradrub_uk.php b/design_system_dependences/tradrub/lang/tradrub_uk.php new file mode 100644 index 0000000000000000000000000000000000000000..7adb13ff3ee96147fb553b0fda26e40e2c3307b8 --- /dev/null +++ b/design_system_dependences/tradrub/lang/tradrub_uk.php @@ -0,0 +1,14 @@ +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// extrait automatiquement de https://trad.spip.net/tradlang_module/tradrub?lang_cible=uk +// ** ne pas modifier le fichier ** + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // T + 'texte_definir_comme_traduction_rubrique' => 'Цей розділ Ñ” перекладом розділу з номером: ' +); diff --git a/design_system_dependences/tradrub/paquet.xml b/design_system_dependences/tradrub/paquet.xml new file mode 100644 index 0000000000000000000000000000000000000000..12949838fb4749178b0fc1cd2019e7c77f4d094c --- /dev/null +++ b/design_system_dependences/tradrub/paquet.xml @@ -0,0 +1,20 @@ +<paquet + prefix="tradrub" + categorie="edition" + version="4.0.3" + etat="stable" + compatibilite="[4.0.0;4.2.*]" + logo="tradrub.svg" + schema="1.0.0" + documentation="https://contrib.spip.net/4737" +> + + <nom>TradRub</nom> + + <auteur lien="http://magraine.net/">Matthieu Marcillaud</auteur> + <licence>GNU/GPL</licence> + + <pipeline nom="declarer_tables_objets_sql" inclure="base/tradrub.php" /> + <pipeline nom="pre_insertion" inclure="base/tradrub.php" /> + +</paquet> diff --git a/design_system_dependences/tradrub/phpcs.xml.dist b/design_system_dependences/tradrub/phpcs.xml.dist new file mode 100644 index 0000000000000000000000000000000000000000..d9eeaef3bec5bb0594a779b9d8bdba67eb15a4f5 --- /dev/null +++ b/design_system_dependences/tradrub/phpcs.xml.dist @@ -0,0 +1,15 @@ +<?xml version="1.0"?> +<ruleset> + <file>.</file> + <exclude-pattern>vendor/*</exclude-pattern> + <exclude-pattern>lang/*</exclude-pattern> + <exclude-pattern>lib/*</exclude-pattern> + + <rule ref="SPIP40"/> + + <config name="ignore_warnings_on_exit" value="1"/> + <arg name="cache" value=".php_cs.cache"/> + <arg name="report-full" value=".php_cs.txt"/> + <arg name="report-summary"/> + <arg value="s"/> +</ruleset> diff --git a/design_system_dependences/tradrub/tradrub.svg b/design_system_dependences/tradrub/tradrub.svg new file mode 100644 index 0000000000000000000000000000000000000000..dcf04bd3728ecd3b1e0d5e42556ebfbd7ef39e49 --- /dev/null +++ b/design_system_dependences/tradrub/tradrub.svg @@ -0,0 +1,6 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64"> + <path fill="#444" d="M45.5 22c4.8 0 9.3 1.3 13.1 3.6V4.8c0-1.5-1.2-2.8-2.8-2.8h-51C3.3 2 2 3.2 2 4.8V42l18.6-.1C23.2 30.5 33.3 22 45.5 22z" /> + <path fill="#fff" d="M45.5 22c2.8 0 5.6.5 8.1 1.3V9.1c0-1.2-.9-2.1-2.1-2.1h-38c-1.2 0-2.1.9-2.1 2.1v27.7l11-.1C26.4 28 35.3 22 45.5 22z" /> + <path fill="#666" d="M20 47.5C20 33.4 31.4 22 45.5 22c4.8 0 9.3 1.3 13.1 3.6V13l-21.7.1L25.8 2h-21C3.3 2 2 3.2 2 4.8v45.4C2 51.7 3.2 53 4.8 53h15.8c-.4-1.8-.6-3.6-.6-5.5z" /> + <path fill="#1d83d4" d="M40.6 33.4c.3-1.6.5-2.8.8-3.7.4-1.1 1.1-1.7 2.1-1.7.5 0 1 .1 1.3.3.8.4 1.2.9 1.2 1.7 0 .2 0 .5-.1.8-.1.4-.3 1.1-.4 2.1 1.9-.3 3.8-.7 5.6-1.1.3-.2.6-.2.9-.2 1 0 1.7.5 1.9 1.5.1.3.2.6.2.9 0 1.1-.6 1.8-1.9 2.1-1.7.4-4.1.9-7.4 1.3-.2 1.1-.3 2.5-.4 4 1.6-.4 3.3-.7 5-.9.1-.2.1-.4.2-.5.2-.6.4-1 .5-1.2.4-.4.8-.5 1.4-.5 1.7 0 2.6.7 2.6 2 0 .2 0 .4-.1.7 2 .5 3.7 1.3 4.9 2.5 2.1 1.8 3.2 4.1 3.2 6.9 0 4.1-1.9 7.3-5.9 9.3-1.1.6-2.5 1.1-3.8 1.4-.6.2-1.1.3-1.4.3-1.1 0-1.7-.6-1.7-1.8 0-.7.5-1.3 1.5-1.7 2.2-.8 3.7-1.8 4.7-2.8 1.1-1.2 1.7-2.9 1.7-4.9 0-3-1.5-4.9-4.4-5.9C50.6 49 48 52.4 45 54.8v.2c.2.8.4 1.3.4 1.6.2.4.2.9.2 1.3 0 1-.4 1.7-1.3 2-.4.2-.8.3-1.1.3-1 0-1.6-.5-1.9-1.5-.1-.4-.2-.7-.3-.8-2.1 1.2-3.9 1.9-5.2 1.9s-2.4-.6-3.2-1.8c-.6-1-1-2.3-1-4 0-4.1 2.7-7.7 8.2-10.8.1-1.3.2-3.2.4-5.4-1.9.1-3.3.2-4 .2s-1.2-.2-1.6-.4c-.5-.4-.8-1-.8-1.7 0-.9.4-1.6 1.1-1.9.4-.2.7-.3 1.1-.3h.4c1-.1 2.4-.1 4.2-.3zm-1 14.4c-2.5 1.9-3.7 3.8-3.7 5.6 0 1.1.3 1.7.9 1.7.7 0 1.8-.5 3.3-1.5-.4-2.1-.5-4-.5-5.8zm8.4-3.7c-1.2.2-2.6.5-3.9 1.1v1.3c0 1 0 2.1.1 3.4 1.5-1.7 2.8-3.6 3.8-5.8z" /> +</svg> diff --git a/design_system_dependences/tradrub/tradrub_administrations.php b/design_system_dependences/tradrub/tradrub_administrations.php new file mode 100644 index 0000000000000000000000000000000000000000..0e863194eba3d5f39a7aa797a055ddea01e207b9 --- /dev/null +++ b/design_system_dependences/tradrub/tradrub_administrations.php @@ -0,0 +1,55 @@ +<?php + +/** + * Création / suppression des champs dans la bdd + * + * @package SPIP\Tradrub\Installation + * @license + * Licence GPL (c) 2008-2010 Stephane Laurent (Bill), Matthieu Marcillaud + */ + +if (!defined('_ECRIRE_INC_VERSION')) { + return; +} + + +/** + * Upgrade de la base + * + * @param string $nom_meta_base_version + * Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP + * @param string $version_cible + * Version du schéma de données dans ce plugin (déclaré dans paquet.xml) + * @return void + */ +function tradrub_upgrade($nom_meta_base_version, $version_cible) { + $maj = []; + $maj['create'] = [ + ['maj_tables', ['spip_rubriques']], + ['sql_alter', 'TABLE spip_rubriques ADD INDEX (id_trad)'] + ]; + + include_spip('base/upgrade'); + maj_plugin($nom_meta_base_version, $version_cible, $maj); +} + +/** + * Desinstallation du plugin + * + * Suppression de la colonne id_trad uniquement s'il ne reste + * pas de traduction. + * + * @param string $nom_meta_base_version + * Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP + * @return void + */ +function tradrub_vider_tables($nom_meta_base_version) { + // supprimer la colonne seulement s'il ne reste pas de traductions + $il_en_reste = sql_countsel('spip_rubriques', [ + 'id_trad <> ' . sql_quote(0), + 'id_trad <> id_rubrique']); + if (!$il_en_reste) { + sql_alter('TABLE spip_rubriques DROP id_trad'); + } + effacer_meta($nom_meta_base_version); +}