Skip to content
Extraits de code Groupes Projets
Valider e2d0e144 rédigé par marcimat@rezo.net's avatar marcimat@rezo.net
Parcourir les fichiers

Suite de la gestion des rangs dans l’api d’édition de liens.

Lorsqu’on définit un rang, sa valeur est attribuée pour tous les roles de ce lien, pas uniquement pour le role en cours de qualification.
C’est un choix d’implémentation, mais il est cohérent avec les interfaces que l’on a d’ajout de roles sur les liens.

Permet de faire fonctionner les boutons "Ordonner les auteurs" et "Réinisialiser l’ordre" sur le plugin roles_auteurs (v2).
https://zone.spip.net/trac/spip-zone/changeset/114438

 
parent 2209ccea
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -834,10 +834,17 @@ function lien_set($objet_source, $primary, $table_lien, $id, $objets, $qualif) {
);
$args['id_objet'] = $id_objet;
if (lien_triables($table_lien) and isset($qualif['rang_lien']) and intval($qualif['rang_lien'])) {
// on decale les liens de rang_lien>=la valeur inseree pour faire la place
$w = lien_where($primary, '*', $objet, $id_objet, array('rang_lien>='.intval($qualif['rang_lien']),"$primary!=".intval($id)));
sql_update($table_lien, array('rang_lien'=>'rang_lien+1'), $w);
if (lien_triables($table_lien) and isset($qualif['rang_lien'])) {
if (intval($qualif['rang_lien'])) {
// on decale les liens de rang_lien>=la valeur inseree pour faire la place
$w = lien_where($primary, '*', $objet, $id_objet, array('rang_lien>='.intval($qualif['rang_lien']),"$primary!=".intval($id)));
sql_update($table_lien, array('rang_lien'=>'rang_lien+1'), $w);
}
// tous les liens de même rôle recoivent le rang indiqué aussi
if (roles_colonne($objet_source, $objet)) {
$w = lien_where($primary, $id, $objet, $id_objet);
sql_updateq($table_lien, array('rang_lien' => intval($qualif['rang_lien'])), $w);
}
$reordonner = true;
}
......
......@@ -184,7 +184,7 @@ function formulaires_editer_liens_charger_dist($a, $b, $c, $options = array()) {
* ordonner_lien doit être de la forme, et sert pour trier les liens
* ordonner_lien[objet1-id1-objet2-id2] = nouveau_rang
*
* desordonner_liens n'a pas de forme precise, il doit simplement estre non nul/non vide
* desordonner_liens n'a pas de forme précise, il doit simplement être non nul/non vide
*
* @param string $a
* @param string|int $b
......@@ -278,7 +278,7 @@ function formulaires_editer_liens_traiter_dist($a, $b, $c, $options = array()) {
foreach ($supprimer as $k => $v) {
if ($lien = lien_verifier_action($k, $v)) {
$lien = explode('-', $lien);
list($objet_source, $ids, $objet_lie, $idl, $role) = $lien;
list($objet_source, $ids, $objet_lie, $idl, $role) = array_pad($lien, 5, null);
// appliquer une condition sur le rôle si défini ('*' pour tous les roles)
$cond = (!is_null($role) ? array('role' => $role) : array());
if ($objet_lien == $objet_source) {
......@@ -407,7 +407,7 @@ function lien_verifier_action($k, $v) {
function lien_retrouver_qualif($objet_lien, $lien) {
// un role est défini dans la liaison
$defs = explode('-', $lien);
list($objet1, , $objet2, , $role) = $defs;
list($objet1, , $objet2, , $role) = array_pad($defs, 5, null);
if ($objet_lien == $objet1) {
$colonne_role = roles_colonne($objet1, $objet2);
} else {
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter