Browse Source

Formulaire de logo : on considère que les vieux logos sont des rôles attribués (et donc on ne propose pas ces rôles dans le formulaire d'ajout). On permet de saisir plusieurs rôles également lors de l'ajout de documents (sauf pour les logos évidemment).

master
tcharlss@bravecassine.com 5 years ago
parent
commit
9731685504
  1. 36
      formulaires/editer_logo.php
  2. 10
      formulaires/inc-editer_liens_actions_roles_documents.html
  3. 29
      formulaires/inc-selecteur_role.html
  4. 3
      lang/roles_documents_fr.php
  5. 8
      roles_documents_fonctions.php
  6. 45
      roles_documents_pipelines.php

36
formulaires/editer_logo.php

@ -90,24 +90,31 @@ function formulaires_editer_logo_charger_dist($objet, $id_objet, $retour = '', $
$logos = array();
$config = array(
'logo' => lire_config('activer_logos'),
'on' => lire_config('activer_logos'),
'logo_survol' => lire_config('activer_logos_survol'),
'off' => lire_config('activer_logos_survol'),
);
$chercher_logo = charger_fonction('chercher_logo', 'inc');
// 1) Cherchons d'abord les logos historiques
$etats = array('on', 'off');
foreach($etats as $etat) {
if ($config[$etat] == 'oui'
$etats_vers_roles = array(
'on' => 'logo',
'off' => 'logo_survol',
);
$etats_attribues = array();
foreach(array_keys($etats_vers_roles) as $etat) {
$role = $etats_vers_roles[$etat];
if ($config[$role] == 'oui'
and $logo = $chercher_logo($id_objet, $id_table_objet, $etat)
) {
$logos[] = $logo;
$etats_attribues[] = $role;
}
}
// 1) Cherchons ensuite les documents avec des rôles de logos
$roles_logos = roles_documents_presents_sur_objet($objet, $id_objet, 0, true); // Tableau des rôles attribués ou non
// 2) Cherchons ensuite les documents avec des rôles de logos
$roles_logos = roles_documents_presents_sur_objet($objet, $id_objet, 0, true);
// On ajuste la liste avec les vieux logos et leurs états
$roles_logos['attribues'] = array_merge($roles_logos['attribues'], $etats_attribues);
$roles_logos['attribuables'] = array_diff($roles_logos['attribuables'], $etats_attribues);
foreach ($roles_logos['attribues'] as $role) {
// Vérifier la config de certains rôles connus
$config_actif = (!in_array($role, array_keys($config)) or (in_array($role, array_keys($config)) and $config[$role] == 'oui'));
@ -134,13 +141,14 @@ function formulaires_editer_logo_charger_dist($objet, $id_objet, $retour = '', $
// Valeurs initiales
$valeurs = array(
'editable' => $editable,
'logos' => $logos,
'objet' => $objet,
'id_objet' => $id_objet,
'role' => '', // le rôle qui sera sélectionné
'_options' => $options,
'editer_logo' => true, // Un flag pour identifier le contexte
'editable' => $editable,
'logos' => $logos,
'objet' => $objet,
'id_objet' => $id_objet,
'roles' => '', // le rôle qui sera sélectionné
'roles_attribuables' => $roles_logos['attribuables'], // rôles attribuables
'_options' => $options,
'editer_logo' => true, // Un flag pour identifier le contexte
);
// Valeurs du formulaire d'ajout de document

10
formulaires/inc-editer_liens_actions_roles_documents.html

@ -24,7 +24,7 @@
#SET{cle, document-#ENV{id_document}-#ENV{objet}-#ENV{id_objet}}
#SET{roles, #ENV{objet}|roles_documents_presents_sur_objet{#ENV{id_objet}, #ENV{id_document}, #ENV{principaux}}}
#SET{role_unique, #GET{roles/attribues}|count|=={1}}
#SET{no_dropdown, #GET{role_unique}|et{#GET{roles/non_attribues}|non}}
#SET{no_dropdown, #GET{role_unique}|et{#GET{roles/attribuables}|non}}
<BOUCLE_dropdown(CONDITION){si #GET{no_dropdown}|non}>
<div class="btn-group">
@ -45,19 +45,19 @@
</button>
</li>
</BOUCLE_roles_attribues>
[(#GET{roles/non_attribues}|oui)<li class="divider"></li>]
[(#GET{roles/attribuables}|oui)<li class="divider"></li>]
</B_roles_attribues>
[(#REM) Les rôles non attribués ]
<B_roles_non_attribues>
<B_roles_attribuables>
<li class='dropdown-header'><:roles:ajouter_role:></li>
<BOUCLE_roles_non_attribues(DATA){source table,#GET{roles/non_attribues}}>
<BOUCLE_roles_attribuables(DATA){source table,#GET{roles/attribuables}}>
<li>
<button type="submit" name="ajouter_lien\[#GET{cle}-#VALEUR\]" class="link btn btn-mini delete">
[(#CHEMIN_IMAGE{inserer-8.png}|balise_img{'+'})] [(#VALEUR|role{document})]
</button>
</li>
</BOUCLE_roles_non_attribues>
</BOUCLE_roles_attribuables>
</ul>

29
formulaires/inc-selecteur_role.html

@ -2,18 +2,31 @@
Sélection d'un role à attribuer à un document
Paramètres :
**obligatoire
*conseillé
- roles : rôle(s) sélectionné(s)
- **roles_attribuables : liste des rôles pour peupler le select
- multiple : 'oui' pour permettre une sélection de plusieurs rôles
- readonly : 'oui' pour interdire l'édition
]
<B_selecteur_roles>
#SET{multiple, #ENV{multiple}|?{multiple}}
#SET{readonly, #ENV{readonly}|?{readonly}}
<div class="selecteur-role">
<B_select_roles>
<label for="role"><:roles_documents:champ_role_logo_label:>&nbsp;:</label>
#SET{readonly, #TOTAL_BOUCLE|=={1}|?{readonly}}
<select name="role" id="role" class="select"[ readonly="(#GET{readonly})"]>
<BOUCLE_select_roles(DATA){source table, #ENV{roles}}>
<label for="roles">[(#GET{multiple}|?{<:roles_documents:champ_roles_label:>,<:roles_documents:champ_role_label:>})]&nbsp;:</label>
<select name="[(#GET{multiple}|?{roles\[\],roles})]" id="roles" class="select[(#GET{multiple}|oui) chosen]"[ readonly="(#GET{readonly})"][ multiple="(#GET{multiple})"]>
<BOUCLE_selecteur_roles(DATA){source table, #ENV{roles_attribuables}}>
#SET{selected, #VALEUR|=={#ENV{role}}|?{selected}}
<option value="#VALEUR"[ selected="(#GET{selected})"]>[(#VALEUR|role{document})]</option>
</BOUCLE_select_roles>
</BOUCLE_selecteur_roles>
</select>
</B_select_roles>
</div>
</div>
</B_selecteur_roles>

3
lang/roles_documents_fr.php

@ -12,7 +12,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'bouton_iconifier_logo' => 'Convertir en document',
// C
'champ_role_logo_label' => 'Rôle',
'champ_role_label' => 'Rôle',
'champ_roles_label' => 'Rôles',
// M
'media_logos' => 'Logos',

8
roles_documents_fonctions.php

@ -41,7 +41,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
* Tableau associatif avec 3 clés
* - possibles : tous les rôles possibles
* - attribués : ceux attribués
* - non_attribues : ceux non attribues
* - attribuables : ceux non attribues
*/
function roles_documents_presents_sur_objet($objet, $id_objet, $id_document=0, $principaux = null) {
static $done = array();
@ -75,7 +75,7 @@ function roles_documents_presents_sur_objet($objet, $id_objet, $id_document=0, $
$roles_attribues = array_column($res, 'role');
// Liste des rôles non attribués
$roles_non_attribues = array_diff($roles_possibles, $roles_attribues);
$roles_attribuables = array_diff($roles_possibles, $roles_attribues);
// On filtre éventuellement les rôles principaux (=logos)
if (!is_null($principaux)
@ -85,14 +85,14 @@ function roles_documents_presents_sur_objet($objet, $id_objet, $id_document=0, $
$filtrer = ($principaux ? 'array_intersect' : 'array_diff');
$roles_possibles = $filtrer($roles_possibles, $roles_principaux);
$roles_attribues = $filtrer($roles_attribues, $roles_principaux);
$roles_non_attribues = $filtrer($roles_non_attribues, $roles_principaux);
$roles_attribuables = $filtrer($roles_attribuables, $roles_principaux);
}
// On retourne le détail
$roles = array(
'possibles' => $roles_possibles,
'attribues' => $roles_attribues,
'non_attribues' => $roles_non_attribues,
'attribuables' => $roles_attribuables,
);
return $done[$hash] = $roles;

45
roles_documents_pipelines.php

@ -304,7 +304,7 @@ function roles_documents_formulaire_charger($flux) {
// Formulaire d'ajout de document
if ($flux['args']['form'] == 'joindre_document') {
$flux['data']['role'] = '';
$flux['data']['roles'] = '';
}
return $flux;
@ -325,24 +325,31 @@ function roles_documents_formulaire_traiter($flux) {
// Formulaire d'ajout de document
// En présence d'un role sélectionne, on requalifie le lien créé
// sauf si c'est le rôle par défaut
if ($flux['args']['form'] == 'joindre_document'
and $role = _request('role')
and $role != 'document'
and $roles = _request('roles')
and $objet = $flux['args']['args'][2]
and $id_objet = $flux['args']['args'][1]
and !empty($flux['data']['ids'])
) {
foreach ($flux['data']['ids'] as $id_document) {
$update = sql_updateq(
'spip_documents_liens',
array('role' => $role),
array(
'id_document=' . intval($id_document),
'objet=' . sql_quote($objet),
'id_objet=' . intval($id_objet),
'role=' . sql_quote('document'),
)
);
if (!is_array($roles)) {
$roles = array($roles);
}
foreach ($roles as $role) {
if ($role != 'document') {
$update = sql_updateq(
'spip_documents_liens',
array('role' => $role),
array(
'id_document=' . intval($id_document),
'objet=' . sql_quote($objet),
'id_objet=' . intval($id_objet),
'role=' . sql_quote('document'),
)
);
}
}
}
}
@ -377,9 +384,17 @@ function roles_documents_recuperer_fond($flux) {
$objet = $flux['args']['contexte']['objet'];
$id_objet = $flux['args']['contexte']['id_objet'];
$roles = roles_documents_presents_sur_objet($objet, $id_objet, 0, $principaux);
$roles_attribuables = isset($flux['args']['contexte']['roles_attribuables']) ?
$flux['args']['contexte']['roles_attribuables'] :
($editer_logo ?
$roles['attribuables'] :
$roles['possibles']
);
$multiple = !empty($flux['args']['contexte']['editer_logo']) ? false : true;
$contexte = array(
'role' => $flux['args']['contexte']['role'],
'roles' => $editer_logo ? $roles['non_attribues'] : $roles['possibles'],
'roles' => $flux['args']['contexte']['roles'],
'roles_attribuables' => $roles_attribuables,
'multiple' => $multiple,
);
$selecteur_roles = recuperer_fond('formulaires/inc-selecteur_role', $contexte);

Loading…
Cancel
Save