Skip to content
Extraits de code Groupes Projets
Valider bb593800 rédigé par cedric@yterium.com's avatar cedric@yterium.com
Parcourir les fichiers

generalisation du branchement sur objet, fusion des deux meta...

generalisation du branchement sur objet, fusion des deux meta documents_article et documents_rubrique en une seule meta documents_objets
parent 6c244c5a
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -19,6 +19,7 @@ formulaires/editer_document.html -text
formulaires/editer_document.php -text
formulaires/illustrer_document.html -text
formulaires/illustrer_document.php -text
formulaires/inc-choisir-objets.html -text
formulaires/inc-lister_archive_jointe.html -text
formulaires/inc-upload_document.html -text
formulaires/joindre_document.html -text
......
......@@ -279,6 +279,16 @@ function medias_upgrade($nom_meta_base_version,$version_cible){
sql_alter("TABLE spip_documents CHANGE mode mode varchar(10) DEFAULT 'document' NOT NULL");
ecrire_meta($nom_meta_base_version,$current_version="0.11.0",'non');
}
if (version_compare($current_version,'0.12.0','<')){
// generalisation des metas documents_article et documents_rubriques
$config = array();
if (isset($GLOBALS['meta']['documents_article']) AND $GLOBALS['meta']['documents_article']!=='non')
$config[] = 'spip_articles';
if (isset($GLOBALS['meta']['documents_rubrique']) AND $GLOBALS['meta']['documents_rubrique']!=='non')
$config[] = 'spip_rubriques';
ecrire_meta('documents_objets',implode(',',$config));
ecrire_meta($nom_meta_base_version,$current_version="0.12.0",'non');
}
}
medias_check_statuts();
}
......
......@@ -4,37 +4,17 @@
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[(#ENV{editable})
<p><:texte_documents_joints:></p>
<p><:texte_documents_joints_2:></p>
<form method='post' action='#ENV{action}' enctype='multipart/form-data'><div>
[(#REM) declarer les hidden qui declencheront le service du formulaire
parametre : url d'action ]
#ACTION_FORMULAIRE{#ENV{action}}
<ul>
#SET{name,documents_article}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
#SET{name,documents_objets}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
[
<label><:medias:label_activer_document_objets:></label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]<div class="choix">
<input type="radio" name="#GET{name}" id="#GET{name}_oui" value="oui"
[(#ENV{#GET{name}}|=={oui}|oui)checked="checked"] /><label for="#GET{name}_oui"><:item_autoriser_documents_joints:></label>
</div>
<div class="choix">
<input type="radio" name="#GET{name}" id="#GET{name}_non" value="non"
[(#ENV{#GET{name}}|=={oui}|non)checked="checked"] /><label for="#GET{name}_non"><:item_non_autoriser_documents_joints:></label>
</div>
</li>
#SET{name,documents_rubrique}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
[
<span class='erreur_message'>(#GET{erreurs})</span>
]<div class="choix">
<input type="radio" name="#GET{name}" id="#GET{name}_oui" value="oui"
[(#ENV{#GET{name}}|=={oui}|oui)checked="checked"] /><label for="#GET{name}_oui"><:item_autoriser_documents_joints_rubriques:></label>
</div>
<div class="choix">
<input type="radio" name="#GET{name}" id="#GET{name}_non" value="non"
[(#ENV{#GET{name}}|=={oui}|non)checked="checked"] /><label for="#GET{name}_non"><:item_non_autoriser_documents_joints_rubriques:></label>
</div>
]<p class="explication"><:texte_documents_joints_2:></p>
#INCLURE{fond=formulaires/inc-choisir-objets,name=#GET{name},selected=#ENV**{#GET{name}}}
</li>
#SET{name,documents_date}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
<li class="editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
......
......@@ -14,25 +14,21 @@ if (!defined('_ECRIRE_INC_VERSION')) return;
function formulaires_configurer_documents_charger_dist(){
foreach(array(
"documents_article",
"documents_rubrique",
"documents_objets",
"documents_date",
) as $m)
$valeurs[$m] = $GLOBALS['meta'][$m];
$valeurs['documents_objets']=explode(',',$valeurs['documents_objets']);
return $valeurs;
}
function formulaires_configurer_documents_traiter_dist(){
$res = array('editable'=>true);
foreach(array(
"documents_article",
"documents_rubrique",
"documents_date",
) as $m)
if (!is_null($v=_request($m)))
ecrire_meta($m, $v=='oui'?'oui':'non');
if (!is_null($v=_request($m='documents_date')))
ecrire_meta($m, $v=='oui'?'oui':'non');
if (!is_null($v=_request($m='documents_objets')))
ecrire_meta($m, is_array($v)?impode(',',$v):'');
$res['message_ok'] = _T('config_info_enregistree');
return $res;
......
<BOUCLE_objets(POUR){tableau #REM|lister_tables_objets_sql}{cle!=#ENV{exclus,''}}>
#SET{id,#ENV{name}|replace{\W,'_'}|concat{'_',#CLE}}
<div class="choix choix_#CLE">
<input type="checkbox" id="#GET{id}" name="#ENV{name}[]" value="#CLE"[(#CLE|in_any{#ENV{selected}})checked="checked"] />
<label for="#GET{id}">[(#VALEUR{texte_objets}|_T)]</label>
</div>
</BOUCLE_objets>
<input type="hidden" name="#ENV{name}[]" value="" />
......@@ -93,6 +93,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
// L
'logo' => 'Logo',
'label_activer_document_objets' => 'Activer les documents pour les contenus&nbsp;:',
'label_refdoc_joindre' => 'Document num&eacute;ro',
'label_parents' => 'Ce document est li&eacute; &agrave;',
'label_fichier' => 'Fichier',
......
......@@ -67,18 +67,29 @@ function autoriser_document_tailler_dist($faire,$quoi,$id,$qui,$options) {
return true;
}
// On ne peut joindre un document qu'a un article qu'on a le droit d'editer
// mais il faut prevoir le cas d'une *creation* par un redacteur, qui correspond
// au hack id_article = 0-id_auteur
// http://doc.spip.org/@autoriser_joindredocument_dist
/**
* On ne peut joindre un document qu'a un objet qu'on a le droit d'editer
* mais il faut prevoir le cas d'une *creation* par un redacteur, qui correspond
* au hack id_objet = 0-id_auteur
* Il faut aussi que les documents aient ete actives sur les objets concernes
* ou que ce soit un article, sur lequel on peut toujours uploader des images
*
* http://doc.spip.org/@autoriser_joindredocument_dist
*
* @return bool
*/
function autoriser_joindredocument_dist($faire, $type, $id, $qui, $opt){
return
autoriser('modifier', $type, $id, $qui, $opt)
OR (
$type == 'article'
AND $id<0
AND abs($id) == $qui['id_auteur']
AND autoriser('ecrire', $type, $id, $qui, $opt)
(autoriser('modifier', $type, $id, $qui, $opt)
OR (
$id<0
AND abs($id) == $qui['id_auteur']
AND autoriser('ecrire', $type, $id, $qui, $opt)
)
)
AND
(
$type=='article' OR in_array(table_objet_sql($type),explode(',',$GLOBALS['meta']['documents_objets']))
);
}
......
......@@ -42,8 +42,7 @@ function medias_post_insertion($flux){
}
function medias_configurer_liste_metas($config){
$config['documents_article'] = 'non';
$config['documents_rubrique'] = 'non';
$config['documents_objets'] = '';
$config['documents_date'] = 'non';
return $config;
}
......@@ -82,21 +81,19 @@ function medias_post_edition($flux){
return $flux;
}
// liste des exec avec la colonne document
$GLOBALS['medias_exec_colonne_document'][] = 'article_edit';
$GLOBALS['medias_exec_colonne_document'][] = 'breve_edit';
$GLOBALS['medias_exec_colonne_document'][] = 'rubriques_edit';
/**
* Pipeline afficher_complement_objet
* afficher le portfolio et ajout de document sur les fiches objet (article, rubrique..)
* afficher le portfolio et ajout de document sur les fiches objet
* sur lesquelles les medias ont ete activees
* Pour les articles, on ajoute toujours !
*
* @param $flux
* @return
*/
function medias_afficher_complement_objet($flux){
if ($type=$flux['args']['type']
AND $id=intval($flux['args']['id'])) {
AND $id=intval($flux['args']['id'])
AND (autoriser('joindredocument',$type,$id))) {
$documenter_objet = charger_fonction('documenter_objet','inc');
$flux['data'] .= $documenter_objet($id,$type);
}
......@@ -104,8 +101,7 @@ function medias_afficher_complement_objet($flux){
}
function medias_affiche_gauche($flux){
if (in_array($flux['args']['exec'],$GLOBALS['medias_exec_colonne_document'])
AND $table = preg_replace(",_edit$,","",$flux['args']['exec'])
if ($table = preg_replace(",_edit$,","",$flux['args']['exec'])
AND $type = objet_type($table)
AND $id_table_objet = id_table_objet($type)
AND ($id = intval($flux['args'][$id_table_objet]) OR $id = 0-$GLOBALS['visiteur_session']['id_auteur'])
......
......@@ -3,7 +3,7 @@
<auteur>Collectif SPIP, Cedric Morin &amp; Romy Duhem-Verdiere pour la mediatheque</auteur>
<icon>images/portfolio-64.png</icon>
<version>2.0.0</version>
<version_base>0.11.0</version_base>
<version_base>0.12.0</version_base>
<etat>dev</etat>
<description>Gestion des medias de SPIP</description>
<install>base/medias.php</install>
......
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