uawdijnntqw1x1x1
IP : 216.73.216.249
Hostname : webm001.cluster110.gra.hosting.ovh.net
Kernel : Linux webm001.cluster110.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
OS : Linux
PATH:
/
home
/
etiennec
/
www
/
..
/
www
/
b594c
/
..
/
f1f54
/
formulaires.tar
/
/
inc-inscription-explication.html000066600000000435152502550740013072 0ustar00[(#REM) on affiche plus ce message en cas d'erreur pour eviter d'allonger trop le formulaire] [(#ENV*{message_erreur}|non) [<legend class="mode"><:pass_vousinscrire:></legend> <p class="explication mode">(#ENV{_mode}|=={1comite}|?{<:pass_espace_prive_bla:>,<:pass_forum_bla:>})</p>] ] inscription.html000066600000004502152502550740010005 0ustar00<div class="formulaire_spip formulaire_inscription ajax" id="formulaire_inscription"> [<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}"> #ACTION_FORMULAIRE{#ENV{action}} <fieldset> [(#REM) on affiche plus ce message en cas d'erreur pour eviter d'allonger trop le formulaire] [(#ENV*{message_erreur}|non) [<legend><:pass_vousinscrire:></legend> <p class='explication'>(#ENV*{_commentaire})</p>] ]<legend><:form_forum_identifiants:></legend> <p class='explication'><:form_forum_indiquer_nom_email:></p> <ul> <li class='saisie_nom_inscription obligatoire[ (#ENV*{erreurs}|table_valeur{nom_inscription}|oui)erreur]'> <label for="nom_inscription"><:form_pet_votre_nom:></label> [<span class="erreur_message">(#ENV*{erreurs}|table_valeur{nom_inscription})</span>] <input type="text" class="text" name="nom_inscription" id="nom_inscription" value="#ENV{nom_inscription}" size="30" /> </li> <li class='saisie_mail_inscription obligatoire[ (#ENV*{erreurs}|table_valeur{mail_inscription}|oui)erreur]'> <label for="mail_inscription"><:form_pet_votre_email:></label> [<span class="erreur_message">(#ENV*{erreurs}|table_valeur{mail_inscription})</span>] <input type="text" class="text" name="mail_inscription" id="mail_inscription" value="#ENV{mail_inscription}" size="30" /> </li> </ul> </fieldset> [(#REM) Piege a robots spammeurs ] <p style="display: none;"> <label for="nobot"><:antispam_champ_vide:></label> <input type="text" class="text" name="nobot" id="nobot" value="#ENV{nobot}" size="10" /> </p> <p class="boutons"><input type="submit" class="submit" value="<:bouton_valider:>" /></p> </form> [<script type="text/javascript"><!-- document.getElementById('(#ENV{focus})').focus(); --></script>] ] </div> [(#ENV{focus,''}|?{' '}) <div style="text-align: #LANG_RIGHT;"> <script type="text/javascript">/*<!#EVAL{chr(91)}CDATA#EVAL{chr(91)}*/ document.write("<a style='color: #e86519' href='") document.write((window.opener) ? "javascript:close()" : "./") document.write("'><:pass_quitter_fenetre:><" + "/a>"); /*#EVAL{chr(93)}[(#EVAL{chr(93)})]>*/</script> <noscript> [<a href='./'><:pass_retour_public:></a>] </noscript> </div>]oubli.php000066600000006201152502550740006377 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2011 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined('_ECRIRE_INC_VERSION')) return; // chargement des valeurs par defaut des champs du formulaire function formulaires_oubli_charger_dist(){ $valeurs = array('oubli'=>''); return $valeurs; } // http://doc.spip.org/@message_oubli function message_oubli($email, $param) { $r = formulaires_oubli_mail($email); if (is_array($r) AND $r[1]) { include_spip('inc/acces'); # pour creer_uniqid include_spip('inc/texte'); # pour corriger_typo $cookie = creer_uniqid(); sql_updateq("spip_auteurs", array("cookie_oubli" => $cookie), "id_auteur=" . $r[1]['id_auteur']); $nom = textebrut(corriger_typo($GLOBALS['meta']["nom_site"])); $envoyer_mail = charger_fonction('envoyer_mail','inc'); if ($envoyer_mail($email, ("[$nom] " . _T('pass_oubli_mot')), _T('pass_mail_passcookie', array('nom_site_spip' => $nom, 'adresse_site' => url_de_base(), 'sendcookie' => generer_url_public('spip_pass', "$param=$cookie", true)))) ) return _T('pass_recevoir_mail'); else return _T('pass_erreur_probleme_technique'); } return _T('pass_erreur_probleme_technique'); } // la saisie a ete validee, on peut agir function formulaires_oubli_traiter_dist(){ $message = message_oubli(_request('oubli'),'p'); return array('message_ok'=>$message); } // fonction qu'on peut redefinir pour filtrer les adresses mail // http://doc.spip.org/@test_oubli function test_oubli_dist($email) { include_spip('inc/filtres'); # pour email_valide() if (!email_valide($email) ) return _T('pass_erreur_non_valide', array('email_oubli' => htmlspecialchars($email))); return array('mail' => $email); } function formulaires_oubli_verifier_dist(){ $erreurs = array(); $email = _request('oubli'); $r = formulaires_oubli_mail($email); if (!is_array($r)) $erreurs['oubli'] = $r; else { if (!$r[1]) $erreurs['oubli'] = _T('pass_erreur_non_enregistre', array('email_oubli' => htmlspecialchars($email))); elseif ($r[1]['statut'] == '5poubelle' OR $r[1]['pass'] == '') $erreurs['oubli'] = _T('pass_erreur_acces_refuse'); } return $erreurs; } function formulaires_oubli_mail($email) { if (function_exists('test_oubli')) $f = 'test_oubli'; else $f = 'test_oubli_dist'; $declaration = $f($email); if (!is_array($declaration)) return $declaration; else { include_spip('base/abstract_sql'); return array($declaration, sql_fetsel("id_auteur,statut,pass", "spip_auteurs", "email =" . sql_quote($declaration['mail']))); } } ?> oubli.html000066600000002376152502550740006565 0ustar00<div class="formulaire_spip formulaire_oubli"> [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>] [(#ENV*{editable}|?{' '}) <form id="oubli_form" action="[(#ENV{action})]" method="post"> [(#REM) activer le traitement auto et dispatch sur charger/verifier/traiter] #ACTION_FORMULAIRE{#ENV{action}} <fieldset> <legend><:pass_nouveau_pass:></legend> <ul> <li class="saisie_oubli obligatoire[ (#ENV*{erreurs}|table_valeur{oubli}|oui)erreur]"> <label for="oubli"><:form_pet_votre_email:></label> [<span class='erreur'>(#ENV**{erreurs}|table_valeur{oubli})</span>] <input type='text' class='text' name='oubli' id='oubli' value="#ENV**{oubli}" /> </li> </ul> </fieldset> [(#REM) Piege a robots spammeurs ] <p style="display: none;"> <label for="nobot"><:antispam_champ_vide:></label> <input type="text" class="text" name="nobot" id="nobot" value="#ENV{nobot}" size="10" /> </p> <p class="boutons"><input type="submit" class="submit" value="<:pass_ok:>" /></p> </form> <script type='text/javascript'>/*<!#EVAL{chr(91)}CDATA#EVAL{chr(91)}*/ document.getElementById('oubli').focus() /*#EVAL{chr(93)}[(#EVAL{chr(93)})]>*/</script> ] </div>recherche.php000066600000002371152502550740007221 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2011 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined('_ECRIRE_INC_VERSION')) return; // chargement des valeurs par defaut des champs du formulaire function formulaires_recherche_charger_dist($lien_filtre = NULL,$lien_arg = NULL){ $lien = $lien_filtre ? $lien_filtre : $lien_arg; if ($GLOBALS['spip_lang'] != $GLOBALS['meta']['langue_site']) $lang = $GLOBALS['spip_lang']; else $lang=''; return array( 'action' => ($lien ? $lien : generer_url_public('recherche')), # action specifique, ne passe pas par Verifier, ni Traiter 'recherche' => _request('recherche'), 'lang' => $lang ); } ?> ecrire_auteur.php000066600000005466152502550740010137 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2011 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ function formulaires_ecrire_auteur_charger_dist($id_auteur, $id_article, $mail){ include_spip('inc/texte'); $puce = definir_puce(); $valeurs = array( 'sujet_message_auteur'=>'', 'texte_message_auteur'=>'', 'email_message_auteur'=>$GLOBALS['visiteur_session']['email'] ); // id du formulaire (pour en avoir plusieurs sur une meme page) $valeurs['id'] = ($id_auteur ? '_'.$id_auteur : '_ar'.$id_article); // passer l'id_auteur au squelette $valeurs['id_auteur'] = $id_auteur; $valeurs['id_article'] = $id_article; return $valeurs; } function formulaires_ecrire_auteur_verifier_dist($id_auteur, $id_article, $mail){ $erreurs = array(); include_spip('inc/filtres'); if (!$adres = _request('email_message_auteur')) $erreurs['email_message_auteur'] = _T("info_obligatoire"); elseif(!email_valide($adres)) $erreurs['email_message_auteur'] = _T('form_prop_indiquer_email'); else { include_spip('inc/session'); session_set('email', $adres); } if (!$sujet=_request('sujet_message_auteur')) $erreurs['sujet_message_auteur'] = _T("info_obligatoire"); elseif(!(strlen($sujet)>3)) $erreurs['sujet_message_auteur'] = _T('forum_attention_trois_caracteres'); if (!$texte=_request('texte_message_auteur')) $erreurs['texte_message_auteur'] = _T("info_obligatoire"); elseif(!(strlen($texte)>10)) $erreurs['texte_message_auteur'] = _T('forum_attention_dix_caracteres'); if (!_request('confirmer') AND !count($erreurs)) $erreurs['previsu']=' '; return $erreurs; } function formulaires_ecrire_auteur_traiter_dist($id_auteur, $id_article, $mail){ $adres = _request('email_message_auteur'); $sujet=_request('sujet_message_auteur'); $texte=_request('texte_message_auteur'); $texte .= "\n\n-- "._T('envoi_via_le_site')." ".supprimer_tags(extraire_multi($GLOBALS['meta']['nom_site']))." (".$GLOBALS['meta']['adresse_site']."/) --\n"; $envoyer_mail = charger_fonction('envoyer_mail','inc'); if ($envoyer_mail($mail, $sujet, $texte, $adres, "X-Originating-IP: ".$GLOBALS['ip'])) $message = _T('form_prop_message_envoye'); else $message = _T('pass_erreur_probleme_technique'); return array('message_ok'=>$message); } ?> administration.html000066600000003063152502550740010472 0ustar00 <div[ class="(#ENV{divclass,spip-admin-bloc})"] id="spip-admin" dir="#LANG_DIR">[ <a href="(#ENV{analyser})" class="spip-admin-boutons" id="analyser"><:analyse_xml:>[ ((#ENV{xhtml_error}))]</a>] [<a href="[(#ENV{voir_article})]" class="spip-admin-boutons" id="voir_article"><:article:> (#ENV{id_article})</a>] [<a href="[(#ENV{voir_breve})]" class="spip-admin-boutons" id="voir_breve"><:breve:> (#ENV{id_breve})</a>] [<a href="[(#ENV{voir_rubrique})]" class="spip-admin-boutons" id="voir_rubrique"><:rubrique:> (#ENV{id_rubrique})</a>] [<a href="[(#ENV{voir_mot})]" class="spip-admin-boutons" id="voir_mot"><:mots_clef:> (#ENV{id_mot})</a>] [(#ENV{id_syndic}|oui)[(#AUTORISER{modifier,site,#ENV{id_syndic}}|oui) <a href="[(#ENV{voir_site})]" class="spip-admin-boutons" id="voir_site"><:info_site:> [(#ENV{id_syndic})]</a>]] [<a href="[(#ENV{voir_auteur})]" class="spip-admin-boutons" id="voir_auteur"><:auteur:> (#ENV{id_auteur})</a>][ <a href="(#ENV{ecrire})" class="spip-admin-boutons" id="ecrire"><:espace_prive:></a>] <a href="[(#SELF|parametre_url{var_mode,#ENV{calcul}})]" class="spip-admin-boutons" id="var_mode"><:admin_recalculer:>[(#ENV{use_cache})]</a>[ <a href="(#ENV{statistiques})" class="spip-admin-boutons" id="statistiques">[<:info_visites:> (#ENV{visites})][; <:info_popularite_5:> (#ENV{popularite})]</a>][ <a href="(#ENV{preview})" class="spip-admin-boutons" id="preview"><:previsualisation:></a>][ <a href="(#ENV{debug})" class="spip-admin-boutons" id="debug"><:admin_debug:></a>] </div>inscription.php000066600000017223152502550740007634 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2011 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined('_ECRIRE_INC_VERSION')) return; function formulaires_inscription_charger_dist($mode, $focus, $id=0) { $valeurs = array('nom_inscription'=>'','mail_inscription'=>'', 'id'=>$id); if ($mode=='1comite') $valeurs['_commentaire'] = _T('pass_espace_prive_bla'); else $valeurs['_commentaire'] = _T('pass_forum_bla'); if (!tester_config($id, $mode)) $valeurs['editable'] = false; return $valeurs; } // Si inscriptions pas autorisees, retourner une chaine d'avertissement function formulaires_inscription_verifier_dist($mode, $focus, $id=0) { $erreurs = array(); include_spip('inc/filtres'); if (!tester_config($id, $mode) OR (strlen(_request('nobot'))>0)) $erreurs['message_erreur'] = _T('rien_a_faire_ici'); if (!$nom = _request('nom_inscription')) $erreurs['nom_inscription'] = _T("info_obligatoire"); if (!$mail = _request('mail_inscription')) $erreurs['mail_inscription'] = _T("info_obligatoire"); // compatibilite avec anciennes fonction surchargeables // plus de definition par defaut if (!count($erreurs)){ if (function_exists('test_inscription')) $f = 'test_inscription'; else $f = 'test_inscription_dist'; $declaration = $f($mode, $mail, $nom, $id); if (is_string($declaration)) { $k = (strpos($declaration, 'mail') !== false) ? 'mail_inscription' : 'nom_inscription'; $erreurs[$k] = _T($declaration); } else { include_spip('base/abstract_sql'); if ($row = sql_fetsel("statut, id_auteur, login, email", "spip_auteurs", "email=" . sql_quote($declaration['email']))){ if (($row['statut'] == '5poubelle') AND !$declaration['pass']) // irrecuperable $erreurs['message_erreur'] = _T('form_forum_access_refuse'); elseif (($row['statut'] != 'nouveau') AND !$declaration['pass']) // deja inscrit $erreurs['message_erreur'] = _T('form_forum_email_deja_enregistre'); spip_log($row['id_auteur'] . " veut se resinscrire"); } } } return $erreurs; } function formulaires_inscription_traiter_dist($mode, $focus, $id=0) { $nom = _request('nom_inscription'); $mail_complet = _request('mail_inscription'); if (function_exists('test_inscription')) $f = 'test_inscription'; else $f = 'test_inscription_dist'; $desc = $f($mode, $mail_complet, $nom, $id); if (!is_array($desc)) { $desc = _T($desc); } else { include_spip('base/abstract_sql'); $res = sql_select("statut, id_auteur, login, email", "spip_auteurs", "email=" . sql_quote($desc['email'])); if (!$res) $desc = _T('titre_probleme_technique'); else { $row = sql_fetch($res); // s'il n'existe pas deja, creer les identifiants $desc = $row ? $row : inscription_nouveau($desc); } } if (is_array($desc)) { // generer le mot de passe (ou le refaire si compte inutilise) $desc['pass'] = creer_pass_pour_auteur($desc['id_auteur']); // charger de suite cette fonction, pour ses utilitaires $envoyer_mail = charger_fonction('envoyer_mail','inc'); if (function_exists('envoyer_inscription')) $f = 'envoyer_inscription'; else $f = 'envoyer_inscription_dist'; list($sujet,$msg,$from,$head) = $f($desc, $nom, $mode, $id); if (!$envoyer_mail($mail_complet, $sujet, $msg, $from, $head)) $desc = _T('form_forum_probleme_mail'); // Notifications if ($notifications = charger_fonction('notifications', 'inc')) { $notifications('inscription', $desc['id_auteur'], array('nom' => $desc['nom'], 'email' => $desc['email']) ); } } return array('message_ok'=>is_string($desc) ? $desc : _T('form_forum_identifiant_mail')); } // fonction qu'on peut redefinir pour filtrer les adresses mail et les noms, // et donner des infos supplementaires // Std: controler que le nom (qui sert a calculer le login) est plausible // et que l'adresse est valide. On les normalise au passage (trim etc). // Retour: // - si ok un tableau avec au minimum email, nom, mode (redac / forum) // - si ko une chaine de langue servant d'argument a _T expliquant le refus // http://doc.spip.org/@test_inscription_dist function test_inscription_dist($mode, $mail, $nom, $id=0) { include_spip('inc/filtres'); $nom = trim(corriger_caracteres($nom)); if((strlen ($nom) < _LOGIN_TROP_COURT) OR (strlen($nom) > 64)) return 'ecrire:info_login_trop_court'; if (!$r = email_valide($mail)) return 'info_email_invalide'; return array('email' => $r, 'nom' => $nom, 'bio' => $mode); } // On enregistre le demandeur comme 'nouveau', en memorisant le statut final // provisoirement dans le champ Bio, afin de ne pas visualiser les inactifs // A sa premiere connexion il obtiendra son statut final. // http://doc.spip.org/@inscription_nouveau function inscription_nouveau($desc) { if (!isset($desc['login'])) $desc['login'] = test_login($desc['nom'], $desc['email']); $desc['statut'] = 'nouveau'; $n = sql_insertq('spip_auteurs', $desc); if (!$n) return _T('titre_probleme_technique'); $desc['id_auteur'] = $n; return $desc; } // construction du mail envoyant les identifiants // fonction redefinissable qui doit retourner un tableau // dont les elements seront les arguments de inc_envoyer_mail // http://doc.spip.org/@envoyer_inscription_dist function envoyer_inscription_dist($desc, $nom, $mode, $id) { $nom_site_spip = nettoyer_titre_email($GLOBALS['meta']["nom_site"]); $adresse_site = $GLOBALS['meta']["adresse_site"]; if ($mode == '6forum') { $adresse_login = generer_url_public('login'); $msg = 'form_forum_voici1'; } else { $adresse_login = $adresse_site .'/'. _DIR_RESTREINT_ABS; $msg = 'form_forum_voici2'; } $msg = _T('form_forum_message_auto')."\n\n" . _T('form_forum_bonjour', array('nom'=>$nom))."\n\n" . _T($msg, array('nom_site_spip' => $nom_site_spip, 'adresse_site' => $adresse_site . '/', 'adresse_login' => $adresse_login)) . "\n\n- " . _T('form_forum_login')." " . $desc['login'] . "\n- " . _T('form_forum_pass'). " " . $desc['pass'] . "\n\n"; return array("[$nom_site_spip] "._T('form_forum_identifiants'), $msg); } // http://doc.spip.org/@test_login function test_login($nom, $mail) { include_spip('inc/charsets'); $nom = strtolower(translitteration($nom)); $login_base = preg_replace("/[^\w\d_]/", "_", $nom); // il faut eviter que le login soit vraiment trop court if (strlen($login_base) < 3) { $mail = strtolower(translitteration(preg_replace('/@.*/', '', $mail))); $login_base = preg_replace("/[^\w\d]/", "_", $mail); } if (strlen($login_base) < 3) $login_base = 'user'; // eviter aussi qu'il soit trop long (essayer d'attraper le prenom) if (strlen($login_base) > 10) { $login_base = preg_replace("/^(.{4,}(_.{1,7})?)_.*/", '\1', $login_base); $login_base = substr($login_base, 0,13); } $login = $login_base; for ($i = 1; ; $i++) { if (!sql_countsel('spip_auteurs', "login='$login'")) return $login; $login = $login_base.$i; } } // http://doc.spip.org/@creer_pass_pour_auteur function creer_pass_pour_auteur($id_auteur) { include_spip('inc/acces'); $pass = creer_pass_aleatoire(8, $id_auteur); include_spip('action/editer_auteur'); instituer_auteur($id_auteur, array('pass'=>$pass)); return $pass; } ?> mot_de_passe.php000066600000006722152502550740007737 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2011 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined('_ECRIRE_INC_VERSION')) return; // chargement des valeurs par defaut des champs du formulaire /** * Chargement de l'auteur qui peut changer son mot de passe. * Soit un cookie d'oubli fourni par #FORMULAIRE_OUBLI est passe dans l'url par &p= * Soit un id_auteur est passe en parametre #FORMULAIRE_MOT_DE_PASSE{#ID_AUTEUR} * Dans les deux cas on verifie que l'auteur est autorise * * @param int $id_auteur * @return array */ function formulaires_mot_de_passe_charger_dist($id_auteur=null){ include_spip('base/abstract_sql'); $valeurs = array(); if ($id_auteur=intval($id_auteur)) { $id_auteur = sql_getfetsel('id_auteur','spip_auteurs',array('id_auteur='.intval($id_auteur),"statut<>'5poubelle'","pass<>''")); } elseif ($p=_request('p')) { $p = preg_replace(',[^0-9a-f.],i','',$p); if ($p AND $id_auteur = sql_getfetsel('id_auteur','spip_auteurs',array('cookie_oubli='.sql_quote($p),"statut<>'5poubelle'","pass<>''"))) $valeurs['_hidden'] = '<input type="hidden" name="p" value="'.$p.'" />'; } if ($id_auteur){ $valeurs['id_auteur'] = $id_auteur; // a toutes fins utiles pour le formulaire } else { $valeurs['_hidden'] = _T('pass_erreur_code_inconnu'); $valeurs['editable'] = false; // pas de saisie } return $valeurs; } /** * Verification de la saisie du mot de passe. * On verifie qu'un mot de passe est saisi, et que sa longuer est suffisante * Ce serait le lieu pour verifier sa qualite (caracteres speciaux ...) * * @param int $id_auteur */ function formulaires_mot_de_passe_verifier_dist($id_auteur=null){ $erreurs = array(); if (!_request('oubli')) $erreurs['oubli'] = _T('info_obligatoire'); else if (strlen(_request('oubli')) < 6) $erreurs['oubli'] = _T('info_passe_trop_court'); return $erreurs; } /** * Modification du mot de passe d'un auteur. * Utilise le cookie d'oubli fourni en url ou l'argument du formulaire pour identifier l'auteur * * @param int $id_auteur */ function formulaires_mot_de_passe_traiter_dist($id_auteur=null){ $message = ''; include_spip('base/abstract_sql'); if ($id_auteur=intval($id_auteur)) { $row = sql_fetsel('id_auteur,login','spip_auteurs',array('id_auteur='.intval($id_auteur),"statut<>'5poubelle'","pass<>''")); } elseif ($p=_request('p')) { $p = preg_replace(',[^0-9a-f.],i','',$p); $row = sql_fetsel('id_auteur,login,source','spip_auteurs',array('cookie_oubli='.sql_quote($p),"statut<>'5poubelle'","pass<>''")); } if ($row && ($id_auteur = $row['id_auteur']) && ($oubli = _request('oubli'))) { include_spip('action/editer_auteur'); auteurs_set($id_auteur, array('pass'=>$oubli,'cookie_oubli'=>'')); $login = $row['login']; $message = "<b>" . _T('pass_nouveau_enregistre') . "</b>". "<p>" . _T('pass_rappel_login', array('login' => $login)); } return array('message_ok'=>$message); } ?> ecrire_auteur.html000066600000005306152502550740010305 0ustar00<div class="formulaire_spip formulaire_ecrire_auteur ajax" id="formulaire_ecrire_auteur#ENV{id}"> <br class='bugajaxie' /> [<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}#formulaire_ecrire_auteur#ENV{id}' enctype='multipart/form-data'> [(#REM) declarer les hidden qui declencheront le service du formulaire parametre : url d'action ] #ACTION_FORMULAIRE{#ENV{action}} [(#REM) Previsualisation... ] [(#ENV*{erreurs}|table_valeur{previsu}|oui) <fieldset class="previsu"> <legend><:previsualisation:></legend> <ul> <li><strong>#ENV{sujet_message_auteur}</strong> - <em>#ENV{email_message_auteur}</em></li> <li>[(#ENV{texte_message_auteur}|nl2br)]</li> </ul> <p class="boutons"><input type="submit" class="submit" name="confirmer" value="<:form_prop_confirmer_envoi:>" /></p> </fieldset> ] [(#REM) Sinon, formulaire normal ] <fieldset> <legend><:envoyer_message:></legend> <ul> <li class='saisie_email_message_auteur obligatoire[ (#ENV*{erreurs}|table_valeur{email_message_auteur}|oui)erreur]'> <label for="email_message_auteur#ENV{id}"><:form_pet_votre_email:></label> [<span class="erreur_message">(#ENV*{erreurs}|table_valeur{email_message_auteur})</span>] <input type="text" class="text" name="email_message_auteur" id="email_message_auteur#ENV{id}" value="#ENV{email_message_auteur}" size="30" /> </li> <li class='saisie_sujet_message_auteur obligatoire[ (#ENV*{erreurs}|table_valeur{sujet_message_auteur}|oui)erreur]'> <label for="sujet_message_auteur#ENV{id}"><:form_prop_sujet:></label> [<span class="erreur_message">(#ENV*{erreurs}|table_valeur{sujet_message_auteur})</span>] <input type="text" class="text" name="sujet_message_auteur" id="sujet_message_auteur#ENV{id}" value="#ENV{sujet_message_auteur}" size="30" /> </li> <li class='saisie_texte_message_auteur obligatoire[ (#ENV*{erreurs}|table_valeur{texte_message_auteur}|oui)erreur]'> <label for="texte_message_auteur#ENV{id}"><:info_texte_message:></label> [<span class="erreur_message">(#ENV*{erreurs}|table_valeur{texte_message_auteur})</span>] <textarea name="texte_message_auteur" id="texte_message_auteur#ENV{id}" rows="8" cols="60">#ENV{texte_message_auteur}</textarea> </li> </ul> </fieldset> [(#REM) Piege a robots spammeurs ] <p style="display: none;"> <label for="nobot"><:antispam_champ_vide:></label> <input type="text" class="text" name="nobot" id="nobot" value="#ENV{nobot}" size="10" /> </p> <p class="boutons"><input type="submit" class="submit" name="valide" value="<:form_prop_envoyer:>" /></p> </form> ] </div> mot_de_passe.html000066600000002410152502550740010102 0ustar00<div class="formulaire_spip formulaire_mot_de_passe"> [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>] [(#ENV*{editable}|?{' '}) <form id="oubli_form" action="[(#ENV{action})]" method="post"> [(#REM) activer le traitement auto et dispatch sur charger/verifier/traiter] #ACTION_FORMULAIRE{#ENV{action}} <fieldset> <legend><:pass_nouveau_pass:></legend> <ul> <li class="saisie_oubli obligatoire[ (#ENV*{erreurs}|table_valeur{oubli}|oui)erreur]"> <label for="oubli"><:pass_choix_pass:></label> [<span class='erreur'>(#ENV**{erreurs}|table_valeur{oubli})</span>] <input type='password' class='password' name='oubli' id='oubli' value="#ENV**{oubli}" /> </li> </ul> </fieldset> [(#REM) Piege a robots spammeurs ] <p style="display: none;"> <label for="nobot"><:antispam_champ_vide:></label> <input type="text" class="text" name="nobot" id="nobot" value="#ENV{nobot}" size="10" /> </p> <p class="boutons"><input type="submit" class="submit" value="<:pass_ok:>" /></p> </form> <script type='text/javascript'>/*<!#EVAL{chr(91)}CDATA#EVAL{chr(91)}*/ document.getElementById('oubli').focus() /*#EVAL{chr(93)}[(#EVAL{chr(93)})]>*/</script> ] </div>recherche.html000066600000000575152502550740007402 0ustar00<div class="formulaire_recherche" id="formulaire_recherche"> <form action="[(#ENV{action})]" method="get"> [(#ENV{action}|form_hidden)] [<input type="hidden" name="lang" value="(#ENV{lang})" />] <label for="recherche">RECHERCHER</label> <input type="text" class="text" size="10" name="recherche" id="recherche"[ value="(#ENV{recherche})"] accesskey="4" /> </form> </div> site.php000066600000004240152503000500006213 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2011 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined('_ECRIRE_INC_VERSION')) return; function formulaires_site_charger_dist($id_rubrique) { return array('nom_site'=>'','url_site'=>'http://','description_site'=>''); } function formulaires_site_verifier_dist($id_rubrique){ $erreurs = array(); if (!$nom = _request('nom_site')) $erreurs['nom_site'] = _T("info_obligatoire"); else { if((strlen ($nom) < 2) OR (strlen(_request('nobot'))>0)) $erreurs['email_message_auteur'] = _T('form_prop_indiquer_nom_site'); } if (!$url = _request('url_site')) $erreurs['url_site'] = _T("info_obligatoire"); if (!count($erreurs)) { // Tester l'URL du site include_spip('inc/distant'); if (!recuperer_page($url)) $erreurs['url_site'] = _T('form_pet_url_invalide'); } return $erreurs; } function formulaires_site_traiter_dist($id_rubrique){ $res = array('message_erreur'=>_T('titre_probleme_technique')); $nom = _request('nom_site'); $url = _request('url_site'); $desc = _request('description_site'); include_spip('base/abstract_sql'); if ($id_syndic = sql_insertq('spip_syndic', array( 'nom_site' => $nom, 'url_site' => $url, 'id_rubrique' => $id_rubrique, 'id_secteur' => sql_getfetsel('id_secteur','spip_rubriques','id_rubrique='.sql_quote($id_rubrique)), 'descriptif' => $desc, 'date' => date('Y-m-d H:i:s'), 'date_syndic' => date('Y-m-d H:i:s'), 'statut' => 'prop', 'syndication' => 'non'))) $res = array('message_ok' => _T('form_prop_enregistre'), 'id_syndic'=>$id_syndic); return $res; } ?> inc-forum_previsu.html000066600000002444152503000500011104 0ustar00<fieldset class="previsu"> <legend><:previsualisation:></legend> <ul> <li> <ul class='forum previsu'> <li class="forum-fil"> <div class="forum-message"> <div class="forum-chapo"> [<strong class="forum-titre"><a href="#">(#ENV*{titre})</a></strong>] [<small><:par_auteur:> <span>(#SESSION{session_nom}|safehtml|sinon{[(#SESSION{nom}|typo)]})</span></small>] </div> <div class="forum-texte"> [(#ENV*{texte}|lignes_longues)] [<div class="notes">(#ENV*{notes}|lignes_longues)</div>] [<p class=""><:voir_en_ligne:> : <a href="(#ENV{url_site}|attribut_html)" class="spip_out">[(#ENV*{nom_site}|sinon{[(#ENV{url_site}|couper{80})]})]</a></p>] [<div class="forum-document"><:info_document:> : (#ENV{ajouter_document}|table_valeur{name})</div>] <B_mots><p class="reponse_formulaire"><:forum_avez_selectionne:> <BOUCLE_mots(MOTS){id_mot IN #ENV**{ajouter_mot}}{par num type}{par type}{par num titre}{par titre}{', '}>#TITRE</BOUCLE_mots> </p></B_mots> </div> </div> </li> </ul> [<li class="reponse_formulaire">(#ENV*{erreur})</li>] </li> </ul> [<p class="boutons"><input type="submit" class="submit" name="confirmer_previsu_forum" value="(#ENV*{bouton})" /></p>] </fieldset> <div class='nettoyeur'></div>inc-login_forum.html000066600000002434152503000500010516 0ustar00[(#REM) Formulaire d'identification sur le forum Si la session est authentifiee, on propose la deconnexion Si la session n'est pas authentifiee, on presente un formulaire nom/email Pour les forums sur abonnement, un squelette specifique presente les regles ] <fieldset> <legend><:forum_qui_etes_vous:></legend> [(#SESSION{auth}|?{' '}) [<p class='explication'><:forum_votre_nom:> <strong>(#SESSION{nom}|typo)</strong> <span class="details">[<a href="#URL_LOGOUT" rel="nofollow"><:icone_deconnecter:></a>]</span></p>] ] [(#SESSION{auth}|?{'',' '}) <ul> <li class='saisie_session_nom'> <label for="session_nom"><:forum_votre_nom:></label> <input type="text" class="text" name="session_nom" id="session_nom" value="[(#SESSION**{nom}|sinon{#SESSION**{session_nom}}|entites_html)]" size="40" /> [(#CONFIG{accepter_inscriptions}|=={oui}|?{' '}) <span class="details">[<a href="[(#URL_PAGE{login}|parametre_url{url,#SELF})]" rel="nofollow"><:lien_connecter:></a>]</span> ] </li> <li class='saisie_session_email'> <label for="session_email"><:forum_votre_email:></label> <input type="text" class="text" name="session_email" id="session_email" value="[(#SESSION**{email}|sinon{#SESSION**{session_email}}|entites_html)]" size="40" /> </li> </ul> ] </fieldset>inc-forum_bloc_choix_mots.html000066600000000603152503000500012555 0ustar00#SET{table,#VAL{'(^|,)('}|concat{#ENV{table,rienderien}}|concat{#CONFIG{mots_cles_forums}|choixsiegal{oui,'|forum',''},')(,|$)'} <BOUCLE_G(GROUPES_MOTS) {tables_liees==#GET{table}}> [(#ID_GROUPE|in_any{#ENV**{ajouter_groupe},' '}) <fieldset> <legend><:mots_clefs:> : #TITRE</legend> <INCLURE{fond=formulaires/inc-choix_mots}{id_groupe}{ajouter_mot}{unseul}> </fieldset> ]</BOUCLE_G>inc-login_forum_abo.html000066600000001613152503000500011335 0ustar00[(#REM) Presenter les regles du jeu du forum sur abonnement avec un lien vers la connexion / l'inscription / le rappel ] <fieldset> <legend><:Forum:> <:bouton_radio_modere_abonnement:></legend> <p class="explication"><:forum_vous_enregistrer:> <:forum_vous_inscrire:></p> <p class="retour"> [<a href="[(#URL_PAGE{login}|parametre_url{url,#SELF})]"><:login:></a>] [[<a href="(#ENV{inscription})&mode=6forum[(&id_rubrique=(#ENV{id_rubrique})]&focus=nom_inscription" target="spip_pass" onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=340'); return false;"><:login_sinscrire:></a>]] [[<a href="(#ENV{oubli})" target="spip_pass" onclick="javascript:window.open(this.href, 'spip_pass', 'scrollbars=yes, resizable=yes, width=480, height=340'); return false;"><:login_motpasseoublie:></a>]] </p> </fieldset>inc-choix_mots.html000066600000000757152503000500010360 0ustar00<B_mots> <ul class="choix_mots"> <BOUCLE_mots(MOTS){id_groupe} {par titre}> <li class='saisie_mot'> <input type="[(#ENV{unseul}|choixsiegal{oui,radio,checkbox})]" class="[(#ENV{unseul}|choixsiegal{oui,radio,checkbox})]" name="ajouter_mot[[(#ENV{unseul}|choixsiegal{oui,#ID_GROUPE,''})]]" id="mot#ID_MOT" value="#ID_MOT" [(#ID_MOT|in_any{#ENV**{ajouter_mot}, ''}|?{'checked="checked"',''})] /> [<label for="mot#ID_MOT">(#TITRE|supprimer_numero)</label>] </li> </BOUCLE_mots> </ul> </B_mots>signature.html000066600000006107152503000500007431 0ustar00<div class="formulaire_spip formulaire_signature ajax" id="sp#ENV{id_article}"> [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok,#ENV*{_confirm}|affiche_reponse_confirmation})</p>] [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] [(#ENV{editable}) <form method="post" action="#ENV{action}#sp#ENV{id_article}"><div> #ACTION_FORMULAIRE{#ENV{action}} <input type="hidden" name="url_page" value="[(#SELF|url_absolue)]" /> [<fieldset> <legend><:info_descriptif:></legend> <div class='explication'>(#ENV*{_texte}|propre)</div> </fieldset>] <fieldset> <legend><:form_forum_identifiants:></legend> <ul> <li class='saisie_nom_email[ (#ENV*{erreurs}|table_valeur{session_nom}|oui)erreur] obligatoire'> <label for="session_nom"><:form_pet_votre_nom:></label> [<span class="erreur_message">(#ENV*{erreurs}|table_valeur{session_nom})</span>] <input type="text" class="text" name="session_nom" id="session_nom" value="#ENV{session_nom}" size="30" /> </li> <li class='saisie_adresse_email[ (#ENV*{erreurs}|table_valeur{session_email}|oui)erreur] obligatoire'> <label for="session_email"><:form_pet_votre_email:></label> [<span class="erreur_message">(#ENV*{erreurs}|table_valeur{session_email})</span>] <input type="text" class="text" name="session_email" id="session_email" value="#ENV{session_email}" size="30" /> </li> </ul> </fieldset> <fieldset> <legend><:info_lien_hypertexte:></legend> [<p class='explication'>(#ENV{site_obli})<:form_pet_votre_site:></p>] <ul> <li class='saisie_signature_nom_site[ (#ENV*{erreurs}|table_valeur{signature_nom_site}|oui)erreur][(#ENV{site_obli})obligatoire]'> <label for="signature_nom_site"><:form_pet_nom_site2:></label> [<span class="erreur_message">(#ENV*{erreurs}|table_valeur{signature_nom_site})</span>] <input type="text" class="text" name="signature_nom_site" id="signature_nom_site" value="#ENV{signature_nom_site}" size="30" /> </li> <li class='saisie_signature_url_site[ (#ENV*{erreurs}|table_valeur{signature_url_site}|oui)erreur][(#ENV{site_obli})obligatoire]'> <label for="signature_url_site"><:form_pet_adresse_site:></label> [<span class="erreur_message">(#ENV*{erreurs}|table_valeur{signature_url_site})</span>] <input type="text" class="text" name="signature_url_site" id="signature_url_site" value="#ENV{signature_url_site}" size="30" /> </li> </ul> </fieldset> [(#REM) Piege a robots spammeurs ] <p style="display: none;"> <label for="nobot_signature#ENV{id_article}"><:antispam_champ_vide:></label> <input type="text" class="text" name="nobot" id="nobot_signature#ENV{id_article}" value="#ENV{nobot}" size="10" /> </p> [(#ENV{_message}) <fieldset> <legend><:form_pet_message_commentaire:></legend> <ul> <li class='saisie_message'> <label for="message"><:info_texte_message:></label> <textarea name="message" id="message" rows="6" cols="60">#ENV{message}</textarea> </li> </ul> </fieldset>] <p class="boutons"><input type="submit" class="submit" value="<:bouton_valider:>" /></p> </div> </form> ] </div>forum.html000066600000014444152503000500006563 0ustar00<div class="formulaire_spip formulaire_forum ajax" id="formulaire_forum"> [(#REM) pour IE qui sinon se perd dans l'ajax !, ne pas retirer]<br class='bugajaxie' /> [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>] [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] [(#ENV{login_forum_abo}) <INCLURE{fond=formulaires/inc-login_forum_abo}{env} /> ] [(#ENV{editable}) [(#REM) Bloc de previsualisation du forum envoye Si on valide la previsu, on n'envoie pas en ajax car, si le post reussit il faudra certainement redessiner toute la page pour afficher le nouveau forum ][<form action="#ENV{action}#formulaire_forum" method="post" class="noajax"> <div> [(#ACTION_FORMULAIRE{#ENV{action}})] <input type='hidden' name='titre' value="#ENV{titre}" /> <input type='hidden' name='texte' value="#ENV{texte}" /> <input type='hidden' name='url_site' value="#ENV{url_site}" /> <input type='hidden' name='nom_site' value="#ENV{nom_site}" /> [<input type="hidden" name="id_forum" value="(#ENV*{id_forum})" />] [(#INCLURE{fond=formulaires/inc-forum_ajouter_mot}{ajouter_mot})] (#ENV*{erreurs}|table_valeur{previsu}) </div> </form>] <form action="#ENV{action}#formulaire_forum" method="post" enctype='multipart/form-data'><div> [(#ACTION_FORMULAIRE{#ENV{action}})] [<input type="hidden" name="id_forum" value="(#ENV*{id_forum})" />] [<fieldset class="moderation_info"> <legend><:bouton_radio_modere_priori:></legend> <p class="explication">(#ENV{modere})<:forum_info_modere:></p> </fieldset>] [(#ENV**{afficher_texte}|choixsiegal{'non', ' ',''}) [<input type="hidden" name="titre" value="(#ENV{titre})" />] <p class="spip_bouton"><input type="submit" class="submit" value="<:forum_valider:>" /></p>] [(#ENV**{afficher_texte}|choixsiegal{'non', '',' '}) <fieldset> <legend><:form_pet_message_commentaire:></legend>[ (#CONFIG{forums_titre}|!={non}|non) <input type="hidden" name="titre" id="titre"[ value="(#ENV{titre})"] /> ]<ul> [<li class='saisie_mots_forum'>(#INCLURE{fond=formulaires/inc-forum_bloc_choix_mots}{table=#ENV*{table}}{ajouter_mot})</li>] [(#CONFIG{forums_titre}|!={non}|oui) <li class='saisie_titre[ (#ENV**{erreurs}|table_valeur{titre}|oui)erreur]'> <label for="titre"><:forum_titre:></label> [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{titre})</span>] <input type="text" class="text" name="titre" id="titre"[ value="(#ENV{titre})"] size="60" /> </li> ] [(#CONFIG{forums_texte}|!={non}|?{ <li class='saisie_texte[ (#ENV**{erreurs}|table_valeur{texte}|oui)erreur]'> <label for='texte'><:forum_texte|typo:></label> [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{texte})</span>] <p class='explication'><:info_creation_paragraphe:></p> <textarea name="texte" id="texte" rows="12" cols="60">[(#ENV{texte})]</textarea> </li> })] </ul></fieldset> [(#CONFIG{forums_urlref}|!={non}|?{ <fieldset> <legend><:forum_lien_hyper:></legend> <p class='explication'><:forum_page_url:></p> <ul> <li class='saisie_nom_site[ (#ENV**{erreurs}|table_valeur{nom_site}|oui)erreur]'><label for="nom_site"><:forum_titre:></label> [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{nom_site})</span>] <input type="text" class="text" name="nom_site" id="nom_site" size="40" value="[(#ENV{nom_site})]" /></li> <li class='saisie_url_site[ (#ENV**{erreurs}|table_valeur{url_site}|oui)erreur]'><label for="url_site"><:forum_url:></label> [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{url_site})</span>] <input type="text" class="text" name="url_site" id="url_site" style="text-align: left;" dir="ltr" size="40" value="[(#ENV{url_site})]" /></li> </ul></fieldset> })] [ <fieldset> <legend><:bouton_ajouter_document:></legend> <ul> <li class='saisie_document_forum[ (#ENV**{erreurs}|table_valeur{document_forum}|oui)erreur]'> [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{document_forum})</span>] <input type="hidden" name="cle_ajouter_document" value="(#ENV{cle_ajouter_document})" /> [<div id="ajouter_document_up">(#ENV{ajouter_document}) <label for="supprimer_document_ajoute"><input type='checkbox' name='supprimer_document_ajoute' id='supprimer_document_ajoute' /> <:lien_supprimer:></label> </div>] <div> [<label for="ajouter_document">(#ENV{formats_documents_forum}|join{', '})</label>] <input class='file' type="file" name="ajouter_document" id="ajouter_document"[ accept="(#ENV{formats_documents_forum}|join{','})"] /> </div> <script type='text/javascript'> jQuery('#ajouter_document_up') .next() .hide() .prev() .find(':checkbox') .bind('change', function(){ jQuery('#ajouter_document_up').hide().next().show(); }) ; </script> </li> </ul></fieldset> ] <INCLURE{fond=formulaires/inc-login_forum}{env} /> [(#REM) Piege a robots spammeurs ] <p style="display: none;"> <label for="nobot_forum"><:antispam_champ_vide:></label> <input type="text" class="text" name="nobot" id="nobot_forum" value="#ENV{nobot}" size="10" /> </p> <p class="boutons"><input type="submit" class="submit" value="<:forum_voir_avant:>" /></p> ] </div> </form> [(#REM) Sauver les donnees du formulaire dans un cookie, si on quitte la page, et les remettre quand on revient (dans les limites de 4ko etc) ] <script type="text/javascript">/*<!#EVAL{chr(91)}CDATA#EVAL{chr(91)}*/ if (window.jQuery)(function($){ var a = $.cookie('spip_contenu_formulaire_#ENV{_sign}'); var saveauto = true; if (a) { $('#formulaire_forum textarea#EVAL{chr(91)}name=texte#EVAL{chr(93)}') .val(a); $.cookie('spip_contenu_formulaire_#ENV{_sign}', null); } /* virer le cookie a la validation finale du message */ $('input#EVAL{chr(91)}name=confirmer_previsu_forum#EVAL{chr(93)}') .live('click', function(e) { saveauto = false; }); $(window) .bind('unload', function(){ if (saveauto){ var s = $('#formulaire_forum textarea#EVAL{chr(91)}name=texte#EVAL{chr(93)}').val(); if (s) $.cookie('spip_contenu_formulaire_#ENV{_sign}', s); else $.cookie('spip_contenu_formulaire_#ENV{_sign}', null); }else{ /* on vide le champs texte après le submit car refuser_traiter_formulaire_ajax(); va reposter le formulaire, et donc reposer un cookie car saveauto sera false la seconde fois. */ $('#formulaire_forum textarea#EVAL{chr(91)}name=texte#EVAL{chr(93)}').val(''); } }); }(jQuery)); /*#EVAL{chr(93)}[(#EVAL{chr(93)})]>*/</script> ] </div> signature.php000066600000031531152503000500007253 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2011 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined('_ECRIRE_INC_VERSION')) return; function formulaires_signature_charger_dist($id_article, $petition, $texte, $site_obli, $message) { $valeurs = array( 'id_article' => $id_article, 'session_nom' => sinon($GLOBALS['visiteur_session']['session_nom'], $GLOBALS['visiteur_session']['nom']), 'session_email'=> sinon($GLOBALS['visiteur_session']['session_email'], $GLOBALS['visiteur_session']['email']), 'signature_nom_site'=>'', 'signature_url_site'=>'http://', '_texte'=>$petition, '_message'=>$message, 'message'=>'', 'site_obli' => $site_obli, 'debut_signatures'=>'' // pour le nettoyer de l'url d'action ! ); if ($c = _request('var_confirm')) { $valeurs['_confirm'] = $c; $valeurs['editable'] = false; } return $valeurs; } function affiche_reponse_confirmation($confirm) { $reponse_confirmation = charger_fonction('reponse_confirmation','formulaires/signature/'); return $reponse_confirmation($confirm); # calculee plus tot: assembler.php } function formulaires_signature_verifier_dist($id_article, $petition, $texte, $site_obli, $message) { $erreurs = array(); $oblis = array('session_email','session_email'); if ($site_obli){ $oblis[] = 'signature_nom_site'; $oblis[] = 'signature_url_site'; set_request('signature_url_site', vider_url(_request('signature_url_site'))); } foreach ($oblis as $obli) if (!_request($obli)) $erreurs[$obli] = _T('info_obligatoire'); if ($nom = _request('session_nom') AND strlen($nom) < 2) $erreurs['nom_email'] = _T('form_indiquer_nom'); include_spip('inc/filtres'); if (($mail=_request('session_email')) == _T('info_mail_fournisseur')) $erreurs['adresse_email'] = _T('form_indiquer'); elseif ($mail AND !email_valide($mail)) $erreurs['adresse_email'] = _T('form_email_non_valide'); elseif (strlen(_request('nobot')) OR (@preg_match_all(',\bhref=[\'"]?http,i', // bug PHP $message # , PREG_PATTERN_ORDER ) >2)) { #$envoyer_mail = charger_fonction('envoyer_mail','inc'); #envoyer_mail('email_moderateur@example.tld', 'spam intercepte', var_export($_POST,1)); $erreurs['message_erreur'] = _T('form_pet_probleme_liens'); } if ($site_obli){ if (!vider_url($url_site = _request('signature_url_site'))) { $erreurs['signature_url_site'] = _T('form_indiquer_nom_site'); } elseif (!count($erreurs)) { include_spip('inc/distant'); if (!recuperer_page($url_site, false, true, 0)) $erreurs['signature_url_site'] = _T('form_pet_url_invalide'); } } if (!count($erreurs)){ // tout le monde est la. include_spip('base/abstract_sql'); $row = sql_fetsel('*', 'spip_petitions', "id_article=".intval($id_article)); if (!$row) $erreurs['message_erreur'] = _T('form_pet_probleme_technique'); else { $email_unique = $row['email_unique'] == "oui"; $site_unique = $row['site_unique'] == "oui"; // Refuser si deja signe par le mail ou le site quand demande // Il y a un acces concurrent potentiel, // mais ca n'est qu'un cas particulier de qq n'ayant jamais confirme'. // On traite donc le probleme a la confirmation. if ($email_unique) { $r = sql_countsel('spip_signatures', "id_article=$id_article AND ad_email=" . sql_quote($mail) . " AND statut='publie'"); if ($r) $erreurs['message_erreur'] = _T('form_pet_deja_signe'); } if ($site_unique) { $r = sql_countsel('spip_signatures', "id_article=$id_article AND url_site=" . sql_quote($url_site) . " AND (statut='publie' OR statut='poubelle')"); if ($r) $erreurs['message_erreur'] = _T('form_pet_site_deja_enregistre'); } } } return $erreurs; } function formulaires_signature_traiter_dist($id_article, $petition, $texte, $site_obli, $message) { $reponse = _T('form_pet_probleme_technique'); include_spip('base/abstract_sql'); if (spip_connect()) { $controler_signature = charger_fonction('controler_signature', 'inc'); $reponse = $controler_signature($id_article, _request('session_nom'), _request('session_email'), _request('message'), _request('signature_nom_site'), _request('signature_url_site'), _request('url_page')); } return array('message_ok'=>$reponse); } // Retour a l'ecran du lien de confirmation d'une signature de petition. // Si var_confirm est non vide, c'est l'appel dans public/assembler.php // pour vider le cache au demarrage afin que la nouvelle signature apparaisse. // Sinon, c'est l'execution du formulaire et on retourne le message // de confirmation ou d'erreur construit lors de l'appel par assembler.php // Le controle d'unicite du mail ou du site (si requis) refait ici correspond // au cas de mails de demande de confirmation laisses sans reponse // http://doc.spip.org/@reponse_confirmation_dist function formulaires_signature_reponse_confirmation_dist($var_confirm = '') { static $confirm = null; // reponse mise en cache dans la session ? $code_message = 'signature_message_'.strval($var_confirm); if (isset($GLOBALS['visiteur_session'][$code_message])) return $GLOBALS['visiteur_session'][$code_message]; // reponse deja calculee depuis public/assembler.php if (isset($confirm)) return $confirm; if ($var_confirm == 'publie' OR $var_confirm == 'poubelle') return ''; if (!spip_connect()) { $confirm = _T('form_pet_probleme_technique'); return ''; } include_spip('inc/texte'); include_spip('inc/filtres'); // Suppression d'une signature par un moderateur ? // Cf. plugin notifications if (isset($_GET['refus'])) { // verifier validite de la cle de suppression // l'id_signature est dans var_confirm include_spip('inc/securiser_action'); if ($id_signature = intval($var_confirm) AND ( $_GET['refus'] == _action_auteur("supprimer signature $id_signature", '', '', 'alea_ephemere') OR $_GET['refus'] == _action_auteur("supprimer signature $id_signature", '', '', 'alea_ephemere_ancien') )) { sql_updateq("spip_signatures", array("statut" => 'poubelle'), "id_signature=$id_signature"); $confirm = _T('info_signature_supprimee'); } else $confirm = _T('info_signature_supprimee_erreur'); return ''; } $row = sql_fetsel('*', 'spip_signatures', "statut=" . sql_quote($var_confirm), '', "1"); if (!$row) { $confirm = _T('form_pet_aucune_signature'); return ''; } $id_signature = $row['id_signature']; $id_article = $row['id_article']; $adresse_email = $row['ad_email']; $url_site = $row['url_site']; $row = sql_fetsel('email_unique, site_unique', 'spip_petitions', "id_article=$id_article"); $email_unique = $row['email_unique'] == "oui"; $site_unique = $row['site_unique'] == "oui"; sql_updateq('spip_signatures', array('statut' => 'publie', 'date_time' => date('Y-m-d H:i:s')), "id_signature=$id_signature"); if ($email_unique) { $r = "id_article=$id_article AND ad_email=" . sql_quote($adresse_email); if (signature_entrop($r)) $confirm = _T('form_pet_deja_signe'); } if ($site_unique) { $r = "id_article=$id_article AND url_site=" . sql_quote($url_site); if (signature_entrop($r)) $confirm = _T('form_pet_site_deja_enregistre'); } include_spip('inc/session'); if (!$confirm) { $confirm = _T('form_pet_signature_validee'); // noter dans la session que l'email est valide // de facon a permettre de signer les prochaines // petitions sans refaire un tour d'email session_set('email_confirme', $adresse_email); // invalider les pages ayant des boucles signatures include_spip('inc/invalideur'); suivre_invalideur("id='varia/pet$id_article'"); } // Conserver la reponse dans la session du visiteur if ($confirm) session_set($code_message, $confirm); } // // Recevabilite de la signature d'une petition // les controles devraient mantenant etre faits dans formulaires_signature_verifier() // // http://doc.spip.org/@inc_controler_signature_dist function inc_controler_signature_dist($id_article, $nom, $mail, $message, $site, $url_site, $url_page) { include_spip('inc/texte'); include_spip('inc/filtres'); // tout le monde est la. // cela a ete verifie en amont, dans formulaires_signature_verifier() if (!$row = sql_fetsel('*', 'spip_petitions', "id_article=$id_article")) return _T('form_pet_probleme_technique'); $statut = ""; if (!$ret = signature_a_confirmer($id_article, $url_page, $nom, $mail, $site, $url_site, $message, $lang, $statut)) return _T('form_pet_probleme_technique'); $id_signature = sql_insertq('spip_signatures', array( 'id_article' => $id_article, 'date_time' => date('Y-m-d H:i:s'), 'statut' => $statut, 'ad_email' => $mail, 'url_site' => $url_site)); if (!$id_signature) return _T('form_pet_probleme_technique'); include_spip('inc/modifier'); revision_signature($id_signature, array( 'nom_email' => $nom, 'ad_email' => $mail, 'message' => $message, 'nom_site' => $site, 'url_site' => $url_site )); return $ret; } // http://doc.spip.org/@signature_a_confirmer function signature_a_confirmer($id_article, $url_page, $nom, $mail, $site, $url, $msg, $lang, &$statut) { // Si on est deja connecte et que notre mail a ete valide d'une maniere // ou d'une autre, on entre directement la signature dans la base, sans // envoyer d'email. Sinon email de verification if ( // Cas 1: on est loge et on signe avec son vrai email ( isset($GLOBALS['visiteur_session']['statut']) AND $GLOBALS['visiteur_session']['session_email'] == $GLOBALS['visiteur_session']['email'] AND strlen($GLOBALS['visiteur_session']['email']) ) // Cas 2: on a deja signe une petition, et on conserve le meme email OR ( isset($GLOBALS['visiteur_session']['email_confirme']) AND $GLOBALS['visiteur_session']['session_email'] == $GLOBALS['visiteur_session']['email_confirme'] AND strlen($GLOBALS['visiteur_session']['session_email']) ) ) { // Si on est en ajax on demande a reposter sans ajax, car il faut // recharger toute la page pour afficher la signature refuser_traiter_formulaire_ajax(); $statut = 'publie'; // invalider le cache ! include_spip('inc/invalideur'); suivre_invalideur("id='varia/pet$id_article'"); // message de reussite : en ajax, preciser qu'il faut recharger la page // pour voir le resultat return _T('form_pet_signature_validee'); } // // Cas normal : envoi d'une demande de confirmation // $row = sql_fetsel('titre,lang', 'spip_articles', "id_article=$id_article"); $lang = lang_select($row['lang']); $titre = textebrut(typo($row['titre'])); if ($lang) lang_select(); if (!strlen($statut)) $statut = signature_test_pass(); if ($lang != $GLOBALS['meta']['langue_site']) $url_page = parametre_url($url_page, "lang", $lang,'&'); $url_page = parametre_url($url_page, 'var_confirm', $statut, '&') . "#sp$id_article"; $r = _T('form_pet_mail_confirmation', array('titre' => $titre, 'nom_email' => $nom, 'nom_site' => $site, 'url_site' => $url, 'url' => $url_page, 'message' => $msg)); $titre = _T('form_pet_confirmation')." ". $titre; $envoyer_mail = charger_fonction('envoyer_mail','inc'); if ($envoyer_mail($mail,$titre, $r)) return _T('form_pet_envoi_mail_confirmation',array('email'=>$mail)); return false; # erreur d'envoi de l'email } // Pour eviter le recours a un verrou (qui bloque l'acces a la base), // on commence par inserer systematiquement la signature // puis on demande toutes celles ayant la propriete devant etre unique // (mail ou site). S'il y en a plus qu'une on les retire sauf la premiere // En cas d'acces concurrents il y aura des requetes de retraits d'elements // deja detruits. Bizarre ? C'est mieux que de bloquer! // http://doc.spip.org/@signature_entrop function signature_entrop($where) { $where .= " AND statut='publie'"; $query = sql_select('id_signature', 'spip_signatures', $where,'',"date_time desc"); $n = sql_count($query); if ($n>1) { $entrop = array(); for ($i=$n-1;$i;$i--) { $r = sql_fetch($query); $entrop[]=$r['id_signature']; } sql_free($query); $where .= " OR " . sql_in('id_signature', $entrop); sql_delete('spip_signatures', $where); } return $entrop; } // Creer un mot de passe aleatoire et verifier qu'il est unique // dans la table des signatures // http://doc.spip.org/@signature_test_pass function signature_test_pass() { include_spip('inc/acces'); do { $passw = creer_pass_aleatoire(); } while (sql_countsel('spip_signatures', "statut='$passw'") > 0); return $passw; } ?> forum.php000066600000027364152503000500006413 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2011 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ function formulaires_forum_charger_dist( $titre, $table, $type, $script, $id_rubrique, $id_forum, $id_article, $id_breve, $id_syndic, $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) { // exiger l'authentification des posteurs pour les forums sur abo if ($type == "abo") { if (!$GLOBALS["visiteur_session"]['statut']) { return array( 'action' => '', #ne sert pas dans ce cas, on la vide pour mutualiser le cache 'editable'=>false, 'login_forum_abo'=>' ', 'inscription' => generer_url_public('identifiants', 'lang='.$GLOBALS['spip_lang']), 'oubli' => generer_url_public('spip_pass','lang='.$GLOBALS['spip_lang'],true), ); } } // Tableau des valeurs servant au calcul d'une signature de securite. // Elles seront placees en Input Hidden pour que inc/forum_insert // recalcule la meme chose et verifie l'identite des resultats. // Donc ne pas changer la valeur de ce tableau entre le calcul de // la signature et la fabrication des Hidden // Faire attention aussi a 0 != '' // id_rubrique est parfois passee pour les articles, on n'en veut pas $ids = array(); if ($id_rubrique > 0 AND ($id_article OR $id_breve OR $id_syndic)) $id_rubrique = 0; foreach (array('id_article', 'id_breve', 'id_forum', 'id_rubrique', 'id_syndic') as $o) { $ids[$o] = ($x = intval($$o)) ? $x : ''; } // ne pas mettre '', sinon le squelette n'affichera rien. $previsu = ' '; // au premier appel (pas de Post-var nommee "retour_forum") // memoriser eventuellement l'URL de retour pour y revenir apres // envoi du message ; aux appels suivants, reconduire la valeur. // Initialiser aussi l'auteur if ($retour_forum = rawurldecode(_request('retour'))) $retour_forum = str_replace('&var_mode=recalcul','',$retour_forum); else { // par defaut, on veut prendre url_forum(), mais elle ne sera connue // qu'en sortie, on inscrit donc une valeur absurde ("!") $retour_forum = "!"; // sauf si on a passe un parametre en argument (exemple : {#SELF}) if ($url_param_retour) $retour_forum = str_replace('&', '&', $url_param_retour); $retour_forum = rawurlencode($retour_forum); } if (_request('retour_forum')){ $arg = forum_fichier_tmp(join('', $ids)); $securiser_action = charger_fonction('securiser_action', 'inc'); // on sait que cette fonction est dans le fichier associe $hash = calculer_action_auteur("ajout_forum-$arg"); } // pour les hidden $script_hidden = ""; foreach ($ids as $id => $v) $script_hidden .= "<input type='hidden' name='$id' value='$v' />"; $script_hidden .= "<input type='hidden' name='arg' value='$arg' />"; $script_hidden .= "<input type='hidden' name='hash' value='$hash' />"; $script_hidden .= "<input type='hidden' name='verif_".substr($hash,0,32)."' value='ok' />"; $script_hidden .= "<input type='hidden' name='afficher_texte' value='$afficher_texte' />"; $script_hidden .= "<input type='hidden' name='retour_forum' value='$retour_forum' />"; // l'ajout de documents est-il autorise ? // cf. verifier.php if ($formats = forum_documents_acceptes()) { include_spip('inc/securiser_action'); $cle_ajouter_document = calculer_cle_action('ajouter-document-'.join('-',array_map('intval',$ids))); } return array( 'modere' => (($type != 'pri') ? '' : ' '), 'nom_site' => '', 'table' => $table, 'texte' => '', 'config' => array('afficher_barre' => ($GLOBALS['meta']['forums_afficher_barre']!='non'?' ':'')), 'titre' => str_replace('~', ' ', extraire_multi($titre)), 'action' => $script, # ce sur quoi on fait le action='...' '_hidden' => $script_hidden, # pour les variables hidden 'url_site' => "http://", 'cle_ajouter_document' => $cle_ajouter_document, 'formats_documents_forum' => $formats, 'ajouter_document' => $_FILES['ajouter_document']['name'], 'nobot' => _request('nobot'), 'ajouter_groupe' => $ajouter_groupe, 'ajouter_mot' => (is_array($ajouter_mot) ? $ajouter_mot : array($ajouter_mot)), 'id_forum' => $id_forum, // passer id_forum au formulaire pour lui permettre d'afficher a quoi l'internaute repond '_sign'=>implode('_',$ids) ); } // Une securite qui nous protege contre : // - les doubles validations de forums (derapages humains ou des brouteurs) // - les abus visant a mettre des forums malgre nous sur un article (??) // On installe un fichier temporaire dans _DIR_TMP (et pas _DIR_CACHE // afin de ne pas bugguer quand on vide le cache) // Le lock est leve au moment de l'insertion en base (inc-messforum) // Ce systeme n'est pas fonctionnel pour les forums sans previsu (notamment // si $afficher_texte = 'non') // http://doc.spip.org/@forum_fichier_tmp function forum_fichier_tmp($arg) { # astuce : mt_rand pour autoriser les hits simultanes while (($alea = time() + @mt_rand()) + intval($arg) AND @file_exists($f = _DIR_TMP."forum_$alea.lck")) {}; spip_touch ($f); # et maintenant on purge les locks de forums ouverts depuis > 4 h if ($dh = @opendir(_DIR_TMP)) while (($file = @readdir($dh)) !== false) if (preg_match('/^forum_([0-9]+)\.lck$/', $file) AND (time()-@filemtime(_DIR_TMP.$file) > 4*3600)) spip_unlink(_DIR_TMP.$file); return $alea; } function formulaires_forum_verifier_dist( $titre, $table, $type, $script, $id_rubrique, $id_forum, $id_article, $id_breve, $id_syndic, $ajouter_mot, $ajouter_groupe, $afficher_texte, $url_param_retour) { include_spip('inc/acces'); include_spip('inc/texte'); include_spip('inc/forum'); include_spip('inc/session'); include_spip('base/abstract_sql'); $erreurs = array(); // desactiver id_rubrique si un id_article ou autre existe dans le contexte if ($id_article OR $id_breve OR $id_forum OR $id_syndic) $id_rubrique = 0; // stocker un eventuel document dans un espace temporaire // portant la cle du formulaire ; et ses metadonnees avec if (!isset($GLOBALS['visiteur_session']['tmp_forum_document'])) session_set('tmp_forum_document', sous_repertoire(_DIR_TMP,'documents_forum').md5(uniqid(rand()))); $tmp = $GLOBALS['visiteur_session']['tmp_forum_document']; $doc = &$_FILES['ajouter_document']; if (isset($_FILES['ajouter_document']) AND $_FILES['ajouter_document']['tmp_name']) { // securite : // verifier si on possede la cle (ie on est autorise a poster) // (sinon tant pis) ; cf. charger.php pour la definition de la cle if (_request('cle_ajouter_document') != calculer_cle_action($a = "ajouter-document-$id_article-$id_breve-$id_forum-$id_rubrique-$id_syndic")) { $erreurs['document_forum'] = _T('public:documents_interdits_forum') . "ajouter-document-$id_article-$id_breve-$id_forum-$id_rubrique-$id_syndic" .", " ._request('cle_ajouter_document') ; unset($_FILES['ajouter_document']); } else { include_spip('inc/ajouter_documents'); list($extension,$doc['name']) = fixer_extension_document($doc); $acceptes = forum_documents_acceptes(); if (!in_array($extension, $acceptes)) { # normalement on n'arrive pas ici : pas d'upload si aucun format if (!$formats = join(', ',$acceptes)) $formats = '-'; //_L('aucun'); $erreurs['document_forum'] = _T('public:formats_acceptes', array('formats' => $formats)); } else { include_spip('inc/getdocument'); if (!deplacer_fichier_upload($doc['tmp_name'], $tmp.'.bin')) $erreurs['document_forum'] = _T('copie_document_impossible'); # else if (...) # verifier le type_document autorise # retailler eventuellement les photos } // si ok on stocke les meta donnees, sinon on efface if (isset($erreurs['document_forum'])) { spip_unlink($tmp.'.bin'); unset ($_FILES['ajouter_document']); } else { $doc['tmp_name'] = $tmp.'.bin'; ecrire_fichier($tmp.'.txt', serialize($doc)); } } } // restaurer le document uploade au tour precedent else if (file_exists($tmp.'.bin')) { if (_request('supprimer_document_ajoute')) { spip_unlink($tmp.'.bin'); spip_unlink($tmp.'.txt'); } else if (lire_fichier($tmp.'.txt', $meta)) $doc = @unserialize($meta); } if (strlen($texte = _request('texte')) < 10 AND !$ajouter_mot AND $GLOBALS['meta']['forums_texte'] == 'oui') $erreurs['texte'] = _T('forum_attention_dix_caracteres'); else if (defined('_FORUM_LONGUEUR_MAXI') AND _FORUM_LONGUEUR_MAXI > 0 AND strlen($texte) > _FORUM_LONGUEUR_MAXI) $erreurs['texte'] = _T('forum_attention_trop_caracteres', array( 'compte' => strlen($texte), 'max' => _FORUM_LONGUEUR_MAXI )); if (strlen($titre=_request('titre')) < 3 AND $GLOBALS['meta']['forums_titre'] == 'oui') $erreurs['titre'] = _T('forum_attention_trois_caracteres'); if (!count($erreurs) AND !_request('confirmer_previsu_forum')){ if ($afficher_texte != 'non') { $previsu = inclure_previsu($texte, $titre, _request('url_site'), _request('nom_site'), _request('ajouter_mot'), $doc, $id_rubrique, $id_forum, $id_article, $id_breve, $id_syndic); $erreurs['previsu'] = $previsu; } } return $erreurs; } function forum_documents_acceptes() { $formats = trim($GLOBALS['meta']['formats_documents_forum']); if (!$formats) return array(); if ($formats !== '*') $formats = array_filter(preg_split(',[^a-zA-Z0-9/+_],', $formats)); else { include_spip('base/typedoc'); $formats = array_keys($GLOBALS['tables_mime']); } sort($formats); return $formats; } // http://doc.spip.org/@inclure_previsu function inclure_previsu($texte,$titre, $url_site, $nom_site, $ajouter_mot, $doc, $id_rubrique, $id_forum, $id_article, $id_breve, $id_syndic) { global $table_des_traitements; $bouton = _T('forum_message_definitif'); include_spip('public/assembler'); include_spip('public/composer'); // appliquer les traitements de #TEXTE a la previsu // comme on voit c'est complique... y a peut-etre plus simple ? // recuperer les filtres eventuels de 'mes_fonctions.php' sur les balises include_spip('public/parametrer'); $evaltexte = isset($table_des_traitements['TEXTE']['forums']) ? $table_des_traitements['TEXTE']['forums'] : $table_des_traitements['TEXTE'][0]; $evaltexte = '$tmptexte = '.str_replace('%s', '$texte', $evaltexte).';'; // evaluer... eval($evaltexte); // supprimer les <form> de la previsualisation // (sinon on ne peut pas faire <cadre>...</cadre> dans les forums) return preg_replace("@<(/?)form\b@ism", '<\1div', inclure_balise_dynamique(array('formulaires/inc-forum_previsu', 0, array( 'titre' => safehtml(typo($titre)), 'texte' => $tmptexte, 'notes' => safehtml(calculer_notes()), 'url_site' => vider_url($url_site), 'nom_site' => safehtml(typo($nom_site)), 'ajouter_mot' => (is_array($ajouter_mot) ? $ajouter_mot : array($ajouter_mot)), 'ajouter_document' => $doc, 'erreur' => $erreur, 'bouton' => $bouton, 'id_rubrique' => $id_rubrique, 'id_forum' => $id_forum, 'id_article' => $id_article, 'id_breve' => $id_breve, 'id_syndic' => $id_syndic ) ), false)); } function formulaires_forum_traiter_dist() { // le formulaire forum n'est jamais traite en ajax car il s'acheve par une redirection vers // la bonne page qui doit etre reaffichee dans son ensemble refuser_traiter_formulaire_ajax(); $forum_insert = charger_fonction('forum_insert', 'inc'); list($redirect,$id_forum) = $forum_insert(); return array('redirect'=>$redirect,'id_forum'=>$id_forum); } ?> site.html000066600000003447152503000500006400 0ustar00<div class="formulaire_spip formulaire_site ajax" id="formulaire_site"> [<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}"> #ACTION_FORMULAIRE{#ENV{action}} <fieldset> <legend><:info_site:></legend> <p class='explication'><:proposer_site:></p> <ul> <li class='saisie_nom_site obligatoire[ (#ENV*{erreurs}|table_valeur{nom_site}|oui)erreur]'> <label for="nom_site"><:form_prop_nom_site:></label> [<span class="erreur_message">(#ENV*{erreurs}|table_valeur{nom_site})</span>] <input type="text" class="text" name="nom_site" id="nom_site" value="#ENV{nom_site}" size="30" /> </li> <li class='saisie_url_site[ (#ENV*{erreurs}|table_valeur{url_site}|oui)erreur]'> <label for="url_site"><:form_prop_url_site:></label> [<span class="erreur_message">(#ENV*{erreurs}|table_valeur{url_site})</span>] <input type="text" class="text" name="url_site" id="url_site" value="#ENV{url_site}" size="30" /> </li> <li class='saisie_description_site[ (#ENV*{erreurs}|table_valeur{description_site}|oui)erreur]'> <label for="description_site"><:form_prop_description:></label> [<span class="erreur_message">(#ENV*{erreurs}|table_valeur{description_site})</span>] <textarea name="description_site" id="description_site" rows="6" cols="60">#ENV{description_site}</textarea> </li> </ul> </fieldset> [(#REM) Piege a robots spammeurs ] <p style="display: none;"> <label for="nobot"><:antispam_champ_vide:></label> <input type="text" class="text" name="nobot" id="nobot" value="#ENV{nobot}" size="10" /> </p> <p class="boutons"><input type="submit" class="submit" value="<:bouton_valider:>" /></p> </form> ] </div>save_recherche.html000066600000000761152503000500010376 0ustar00<div class="formulaire_spip formulaire_recherche" id="formulaire_recherche"> <form action="[(#ENV{action})]" method="get"><div> [(#ENV{action}|form_hidden)] [<input type="hidden" name="lang" value="(#ENV{lang})" />] <label for="recherche"><:info_rechercher_02:></label> <input type="text" class="text" size="10" name="recherche" id="recherche"[ value="(#ENV{recherche})"] accesskey="4" /><input type="submit" class="submit" value=">>" title="<:info_rechercher:>" /> </div></form> </div> inc-forum_ajouter_mot.html000066600000000170152503000500011731 0ustar00<BOUCLE_mot(MOTS){id_mot IN #ENV{ajouter_mot}}><input type="hidden" name="ajouter_mot[]" value="#ID_MOT" /></BOUCLE_mot>inc-lister-sauvegardes.html000066600000003434152503075630012030 0ustar00<B_dump> <div class='liste-objets dump' id='#ENV{id,sauvegardes}'> <table class='spip liste'> <thead> [<caption><strong class='caption'>(#ENV{titre,''})</strong></caption>] <tr class="first_row"> [(#ENV{name,''}|oui)<th></th>] <th scope='col'>[(#SELF|parametre_url{tri,nom}|ancre_url{##ENV{id,sauvegardes}}|lien_ou_expose{<:info_nom:>,#ENV{tri,nom}|=={nom},ajax})]</th> <th scope='col'>[(#SELF|parametre_url{tri,taille}|ancre_url{##ENV{id,sauvegardes}}|lien_ou_expose{<:label_poids_fichier:>,#ENV{tri,nom}|=={taille},ajax})]</th> <th scope='col'>[(#SELF|parametre_url{tri,date}|ancre_url{##ENV{id,sauvegardes}}|lien_ou_expose{<:public:date:>,#ENV{tri,nom}|=={date},ajax})]</th> [(#ENV{download,''}|oui) <th scope='col'></th> ] </tr> </thead> <tbody> <BOUCLE_dump(POUR){tableau #ENV{_dir_dump,#REM|dump_repertoire}|dump_lister_sauvegardes{#ENV{tri,nom}}}> <tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})]"> [<td><input type='radio' name="(#ENV{name,''})" value="#VALEUR{fichier}" id="dump_#COMPTEUR_BOUCLE" [(#ENV{#ENV{name}}|=={#VALEUR{fichier}}|oui)checked="checked"] /></td>] <td class="fichier principale"> <label for="dump_#COMPTEUR_BOUCLE" title="[(#VALEUR{fichier}|basename{.sqlite}|attribut_html)]">[(#VALEUR{fichier}|basename{.sqlite})]</label> </td> <td class="taille"> [(#VALEUR{taille}|taille_en_octets)] </td> <td> [(#VAL{'Y-m-d H:i:s'}|date{#VALEUR{date}}|affdate_heure)] </td> [(#ENV{download,''}|oui) <td> <a href="#URL_ACTION_AUTEUR{telecharger_dump,#VALEUR{fichier}}" title="<:bouton_download|attribut_html:>">[(#CHEMIN_IMAGE{telecharger-16.png}|balise_img{<:bouton_download:>})]</a> </td> ] </tr> </BOUCLE_dump> </tbody> </table> </div> </B_dump>sauvegarder.html000066600000004120152503075630007751 0ustar00<div class="formulaire_spip formulaire_#FORM formulaire_#FORM-#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 <input type='hidden' name='reinstall' value='non' /> <ul> #SET{name,nom_sauvegarde}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}#SET{obli,obligatoire} <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"> <label for="#GET{name}"><:dump:label_nom_fichier_sauvegarde:></label> [<span class='erreur_message'>(#GET{erreurs})</span>] <input type='text' class='text' name='#GET{name}' id='#GET{name}' value="#ENV{#GET{name}}" /> </li> #SET{name,tables}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}#SET{obli,obligatoire} [<li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"> <label><:install_tables_base:></label> [<span class='erreur_message'>(#GET{erreurs})</span>] <div class="choix"> <input type="checkbox" name="tout_sauvegarder" id="tout_sauvegarder" value="oui"[(#ENV{tout_sauvegarder}|oui)checked="checked"] onclick="$(this).blur();" onchange="jQuery(this).prop('checked')?jQuery('#liste_tables').hide('fast'):jQuery('#liste_tables').show('fast');" /><label for="tout_sauvegarder"><:dump:tout_sauvegarder:>[ <br />\(<:texte_choix_table_prefix:><b> (#ENV{_prefixe}|=={spip}|non|?{#ENV{_prefixe}})</b>\)]</label> <div id="liste_tables"[(#ENV{tout_sauvegarder}|oui)style="display:none;"]> (#ENV*{_tables}) </div> </div> </li>] </ul> [(#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' value='<:dump:texte_sauvegarde_base:>' /></p> </div></form> ] </div> sauvegarder.php000066600000006552152503075630007607 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2014 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined("_ECRIRE_INC_VERSION")) return; include_spip('base/dump'); include_spip('inc/dump'); /** * Charger #FORMULAIRE_SAUVEGARDER * @return array */ function formulaires_sauvegarder_charger_dist(){ $dir_dump = dump_repertoire(); // ici on liste tout, les tables exclue sont simplement non cochees $exclude = lister_tables_noexport(); list($tables,) = base_liste_table_for_dump($exclude); $tables = base_lister_toutes_tables('',$tables); $valeurs = array( '_dir_dump'=>joli_repertoire($dir_dump), '_dir_img'=>joli_repertoire(_DIR_IMG), '_spipnet' => $GLOBALS['home_server'] . '/' . $GLOBALS['spip_lang'] . '_article1489.html', 'nom_sauvegarde' => basename(dump_nom_fichier($dir_dump,'sqlite'),'.sqlite'), 'tout_sauvegarder' => (_request('nom_sauvegarde') AND !_request('tout_sauvegarder'))?'':'oui', '_tables' => "<ol class='spip'><li class='choix'>\n" . join("</li>\n<li class='choix'>", base_saisie_tables('tables', $tables, $exclude, _request('nom_sauvegarde')?(_request('tables')?_request('tables'):array()):null) ) . "</li></ol>\n", /* Si la fonction n'existe pas (vieux plugin migration actif), on met 'spip', ca n'affichera rien mais ne perturbe pas la sauvegarde qui utilisera bien le bon prefixe */ '_prefixe' => function_exists('base_prefixe_tables')?base_prefixe_tables(''):'spip', ); return $valeurs; } /** * Verifier * @return array */ function formulaires_sauvegarder_verifier_dist() { $erreurs = array(); if (!$nom = _request('nom_sauvegarde')) $erreurs['nom_sauvegarde'] = _T('info_obligatoire'); elseif (!preg_match(',^[\w_][\w_.]*$,', $nom) OR basename($nom)!==$nom) $erreurs['nom_sauvegarde'] = _T('dump:erreur_nom_fichier'); return $erreurs; } /** * Traiter * @return array */ function formulaires_sauvegarder_traiter_dist() { $status_file = base_dump_meta_name(0); $dir_dump = dump_repertoire(); $archive = $dir_dump . basename(_request('nom_sauvegarde'),".sqlite"); if (_request('tout_sauvegarder')) { // ici on prend toutes les tables sauf celles exclues par defaut // (tables de cache en pratique) $exclude = lister_tables_noexport(); list($tables,) = base_liste_table_for_dump($exclude); $tables = base_lister_toutes_tables('',$tables,$exclude); } else $tables = _request('tables'); include_spip('inc/dump'); $res = dump_init($status_file, $archive, $tables); if ($res===true) { // on lance l'action sauvegarder qui va realiser la sauvegarde // et finira par une redirection vers la page sauvegarde_fin include_spip('inc/actions'); $redirect = generer_action_auteur('sauvegarder', $status_file); return array('message_ok'=>'ok','redirect'=>$redirect); } else return array('message_erreur'=>$res); } ?>inc-lister-sauvegardes_fonctions.php000066600000000122152503075630013724 0ustar00<?php if (!defined("_ECRIRE_INC_VERSION")) return; include_spip('inc/dump'); ?>restaurer.html000066600000006405152503075630007465 0ustar00<div class="formulaire_spip formulaire_#FORM formulaire_#FORM-#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> [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{erreurs}|table_valeur{message_confirm})</p>] [(#REM) declarer les hidden qui declencheront le service du formulaire parametre : url d'action ] #ACTION_FORMULAIRE <ul> #SET{name,choisi}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}#SET{obli,obligatoire} [<li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"> <label for="#GET{name}"><:dump:label_nom_fichier_sauvegarde:></label> (#ENV{choisi}) [<a href="#" onclick="jQuery('li.editer_fichier,li.editer_nom_sauvegarde').show('fast');jQuery('li.editer_choisi').hide('fast');return false;" ><:bouton_changer:></a>] </li>] #SET{name,fichier}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}#SET{obli,obligatoire} <li class="editer pleine_largeur editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"[(#ENV{choisi}|oui)style='display:none;']> <label for="#GET{name}"><:dump:label_selectionnez_fichier:></label> [<span class='erreur_message'>(#GET{erreurs})</span>] [<div class="choix"> (#INCLURE{fond=formulaires/inc-lister-sauvegardes,env,ajax,name=fichier,id=sauvegarde,titre=<:dump:sauvegardes_existantes:>} |sinon{<:dump:info_aucune_sauvegarde_trouvee:>}) </div>] </li> #SET{name,nom_sauvegarde}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}#SET{obli,obligatoire} <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"[(#ENV{choisi}|oui)style='display:none;']> <label for="#GET{name}"><:dump:label_nom_fichier_restaurer:></label> [<span class='erreur_message'>(#GET{erreurs})</span>] <input type='text' class='text' name='#GET{name}' id='#GET{name}' value="#ENV{#GET{name}}" onfocus="jQuery('#dump_0').attr('checked','chedked');"/> <input type="radio" name="zzz" value="" id="dump_0" style="display:none;"/> </li> [#SET{name,tout_restaurer}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}#SET{obli,obligatoire} <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"> <label><:install_tables_base:></label> [<span class='erreur_message'>(#GET{erreurs})</span>] <div class="choix"> <input type="checkbox" name="tout_restaurer" id="tout_restaurer" value="oui"[(#ENV{tout_restaurer}|oui)checked="checked"] onchange="jQuery(this).prop('checked')?jQuery('#liste_tables').hide('fast'):jQuery('#liste_tables').show('fast');" /> <label for="tout_restaurer"><:dump:tout_restaurer:></label> </div> <div id="liste_tables"[(#ENV{tout_restaurer}|oui)style="display:none;"]> (#ENV**{erreurs}|table_valeur{tables}) </div> </li>] </ul> [(#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' value='<:dump:bouton_restaurer_base:>' /></p> </div></form> ] </div>restaurer.php000066600000010452152503075630007305 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2014 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined("_ECRIRE_INC_VERSION")) return; include_spip('base/dump'); include_spip('inc/dump'); /** * Charger #FORMULAIRE_RESTAURER * @return array */ function formulaires_restaurer_charger_dist(){ // ici on liste tout, les tables exclue sont simplement non cochees $valeurs = array( '_dir_dump' => dump_repertoire(), 'choisi' => _request('fichier')?_request('fichier'):_request('nom'), 'nom_sauvegarde' => '', 'tout_restaurer' => (_request('check_tables') AND !_request('tout_restaurer'))?'':'oui', 'fichier' => '', 'tri' => 'nom', ); return $valeurs; } /** * Verifier * @return array */ function formulaires_restaurer_verifier_dist() { $erreurs = array(); if (!$fichier=_request('fichier') AND !$nom = _request('nom_sauvegarde')) $erreurs['fichier'] = _T('info_obligatoire'); elseif ($fichier) { $fichier = basename($fichier); // securite if (!file_exists(dump_repertoire().$fichier)) $erreurs['fichier'] = _T('dump:erreur_nom_fichier'); else $nom = $fichier; } else { $nom = basename($nom); // securite if (!file_exists(dump_repertoire().$nom)) { $erreurs['nom_sauvegarde'] = _T('dump:erreur_nom_fichier'); $nom = ""; } } if (!$nom) { $erreurs['message_erreur'] = _T('dump:erreur_restaurer_verifiez'); } if ($nom) { $archive = dump_repertoire().$nom; if (!$args = dump_connect_args($archive)) $erreurs['tout_restaurer'] = _T('dump:erreur_sqlite_indisponible'); dump_serveur($args); $tables = base_lister_toutes_tables('dump'); $tables = base_saisie_tables('tables', $tables, array(), _request('tables')?_request('tables'):array(),'dump'); $erreurs['tables'] = "<ol class='spip'><li class='choix'>\n" . join("</li>\n<li class='choix'>", $tables ) . "</li></ol><input type='hidden' name='check_tables' value='oui' />\n"; if (!count(_request('tables')) AND !_request('tout_restaurer') AND _request('check_tables')) $erreurs['tout_restaurer'] = _T('dump:selectionnez_table_a_restaurer'); } if ($nom AND (!count($erreurs) OR (count($erreurs)==1 AND isset($erreurs['tables']))) ) { if (_request('confirm')!==$nom) { $erreurs['message_confirm'] = _T('dump:info_selection_sauvegarde',array('fichier'=> '<i>'.joli_repertoire(dump_repertoire().$nom)."</i>")) ."<br /><input type='checkbox' name='confirm' value='$nom' id='confirm' /> "; $erreurs['message_confirm'].="<label for='confirm'><strong>"; if (_request('tables')) $erreurs['message_confirm'].=_T('dump:confirmer_ecraser_tables_selection'); else $erreurs['message_confirm'].=_T('dump:confirmer_ecraser_base'); $erreurs['message_confirm'].="</strong></label>"; } else // passer a traiter() unset($erreurs['tables']); } return $erreurs; } /** * Traiter * @return array */ function formulaires_restaurer_traiter_dist() { $archive = (_request('fichier')?_request('fichier'):_request('nom')); $dir_dump = dump_repertoire(); $archive = $dir_dump . basename($archive,".sqlite"); $status_file = base_dump_meta_name(0)."_restauration"; if (_request('tout_restaurer')) { $args = dump_connect_args($archive); dump_serveur($args); $tables = base_lister_toutes_tables('dump'); } else $tables = _request('tables'); include_spip('inc/dump'); $res = dump_init($status_file, $archive, $tables,array('spip_meta'=>"impt='oui'")); if ($res===true) { // on lance l'action restaurer qui va realiser la sauvegarde // et finira par une redirection vers la page sauvegarde_fin include_spip('inc/actions'); $redirect = generer_action_auteur('restaurer', $status_file); return array('message_ok'=>'ok','redirect'=>$redirect); } else return array('message_erreur'=>$res); } ?>configurer_breves.php000066600000002253152503075720011002 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2014 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined("_ECRIRE_INC_VERSION")) return; function formulaires_configurer_breves_charger_dist(){ foreach(array( "activer_breves", ) as $m) $valeurs[$m] = $GLOBALS['meta'][$m]; return $valeurs; } function formulaires_configurer_breves_traiter_dist(){ $res = array('editable'=>true); foreach(array( "activer_breves", ) as $m) if (!is_null($v=_request($m))) ecrire_meta($m, $v=='oui'?'oui':'non'); $res['message_ok'] = _T('config_info_enregistree'); return $res; } configurer_breves.html000066600000003237152503075720011162 0ustar00<div class="formulaire_spip formulaire_configurer formulaire_#FORM formulaire_#FORM-#ENV{id,nouveau}"> <h3 class='titrem'><img src="#CHEMIN_IMAGE{breve-24.png}" class="cadre-icone" /><:breves:titre_breves:>#AIDER{confbreves}</h3> [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>] [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] [(#ENV{editable}) <p><:breves:texte_breves:></p> <form method='post' action='#ENV{action}'><div> [(#REM) declarer les hidden qui declencheront le service du formulaire parametre : url d'action ] #ACTION_FORMULAIRE{#ENV{action}} <ul> #SET{name,activer_breves}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} <li class="editer long_label editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"> <label for="#GET{name}"><:breves:info_breves:></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"><:breves:item_utiliser_breves:></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"><:breves:item_non_utiliser_breves:></label> </div> </li> </ul> [(#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' value='<:bouton_enregistrer:>' /></p> </div></form> ] </div>editer_breve.php000066600000005461152503075720007734 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2014 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined("_ECRIRE_INC_VERSION")) return; include_spip('inc/actions'); include_spip('inc/editer'); function formulaires_editer_breve_charger_dist($id_breve='new', $id_rubrique=0, $retour='', $lier_trad=0, $config_fonc='breves_edit_config', $row=array(), $hidden=''){ $valeurs = formulaires_editer_objet_charger('breve',$id_breve,$id_rubrique,$lier_trad,$retour,$config_fonc,$row,$hidden); // un bug a permis a un moment que des breves soient dans des sous rubriques // lorsque ce cas se presente, il faut relocaliser la breve dans son secteur, plutot que n'importe ou if ($valeurs['id_parent']) $valeurs['id_parent'] = sql_getfetsel('id_secteur','spip_rubriques','id_rubrique='.intval($valeurs['id_parent'])); return $valeurs; } /** * Identifier le formulaire en faisant abstraction des parametres qui * ne representent pas l'objet edite */ function formulaires_editer_breve_identifier_dist($id_breve='new', $id_rubrique=0, $retour='', $lier_trad=0, $config_fonc='breves_edit_config', $row=array(), $hidden=''){ return serialize(array(intval($id_breve),$lier_trad)); } // Choix par defaut des options de presentation function breves_edit_config($row) { global $spip_lang; $config = $GLOBALS['meta']; $config['lignes'] = 8; $config['langue'] = $spip_lang; $config['restreint'] = ($row['statut'] == 'publie'); return $config; } function formulaires_editer_breve_verifier_dist($id_breve='new', $id_rubrique=0, $retour='', $lier_trad=0, $config_fonc='breves_edit_config', $row=array(), $hidden=''){ // auto-renseigner le titre si il n'existe pas titre_automatique('titre',array('texte')); // on ne demande pas le titre obligatoire : il sera rempli a la volee dans editer_article si vide $erreurs = formulaires_editer_objet_verifier('breve',$id_breve,array('id_parent')); return $erreurs; } // http://code.spip.net/@inc_editer_article_dist function formulaires_editer_breve_traiter_dist($id_breve='new', $id_rubrique=0, $retour='', $lier_trad=0, $config_fonc='breves_edit_config', $row=array(), $hidden=''){ return formulaires_editer_objet_traiter('breve',$id_breve,$id_rubrique,$lier_trad,$retour,$config_fonc,$row,$hidden); } ?> editer_breve.html000066600000007245152503075720010113 0ustar00<div class='formulaire_spip formulaire_editer formulaire_editer_breve formulaire_editer_breve-#ENV{id_breve,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}} <input type='hidden' name='id_breve' value='#ENV{id_breve}' /> <ul> <li class="editer editer_titre obligatoire[ (#ENV**{erreurs}|table_valeur{titre}|oui)erreur]"> <label for="titre"><:info_titre:></label>[ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{titre})</span> ]<input type='text' class='text' name='titre' id='titre' value="#ENV*{titre}" placeholder="<:breves:titre_nouvelle_breve:>" /> </li> [<li class="editer editer_parent[ (#ENV**{erreurs}|table_valeur{id_parent}|oui)erreur]"> <label for="id_parent"><:entree_interieur_rubrique:><em class='aide'>#AIDER{id_parent}</em></label>[ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{id_parent})</span> ] (#VAL|chercher_rubrique{#ENV{id_breve},#ENV{id_rubrique}|sinon{#ENV{id_parent}},'breve',#ENV{id_secteur},#ENV**{config}|table_valeur{restreint},0,form_simple}) </li>] <li class="editer editer_texte[ (#ENV**{erreurs}|table_valeur{texte}|oui)erreur]"> <label for="text_area"><:breves:entree_texte_breve:></label>[ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{texte})</span> ][(#ENV**{_texte_trop_long,''}) ]<textarea name='texte' id='text_area' rows='[(#ENV**{config}|table_valeur{lignes}|plus{2})]' cols='40'>[(#ENV**{texte})]</textarea> </li> <li class="editer editer_liens_sites fieldset"> <fieldset> <h3 class="legend"><:entree_liens_sites:></h3> <ul> <li class="editer editer_lien_titre[ (#ENV**{erreurs}|table_valeur{lien_titre}|oui)erreur]"> <label for="lien_titre"><:info_titre:><em class='aide'>#AIDER{lien_titre}</em></label>[ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{lien_titre})</span> ]<input type='text' class='text' name='lien_titre' id='lien_titre' value="[(#ENV**{lien_titre})]" /> </li> <li class="editer editer_lien_url[ (#ENV**{erreurs}|table_valeur{lien_url}|oui)erreur]"> <label for="lien_url"><:info_url:></label>[ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{lien_url})</span> ]<input type='text' class='text' name='lien_url' id='lien_url' value="[(#ENV**{lien_url})]" /> </li> </ul> </fieldset> </li> [(#SESSION{statut}|=={0minirezo}|oui) <li class="fieldset"> <fieldset> <ul> <li class="editer editer_statut obligatoire"> <label for='statut'><:breves:entree_breve_publiee:><em class='aide'>#AIDER{statut}</em> </label><select name='statut' id='statut' size='1'> <option value='prop'[(#ENV**{statut}|=={prop}|?{' selected="selected"'})] style='background-color: white'><:breves:item_breve_proposee:></option> <option value='refuse'[(#ENV**{statut}|=={refuse}|?{' selected="selected"'})] class='danger'><:breves:item_breve_refusee:></option> <option value='publie'[(#ENV**{statut}|=={publie}|?{' selected="selected"'})] style='background-color: #B4E8C5'><:breves:item_breve_validee:></option> </select> </li> </ul> </fieldset> </li> ] </ul> [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ] <!--extra--> <p class="boutons"><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p> </div></form> ] </div> changer_fichier_document.php000066600000004371152503077130012267 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2014 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined("_ECRIRE_INC_VERSION")) return; function formulaires_changer_fichier_document_charger_dist($id_document){ $valeurs = sql_fetsel('id_document,fichier,distant','spip_documents','id_document='.intval($id_document)); if (!$valeurs) return array('editable'=>false); $charger = charger_fonction('charger','formulaires/joindre_document'); $valeurs = array_merge($valeurs,$charger($id_document,0,'','choix')); $valeurs['_hidden'] .= "<input name='id_document' value='$id_document' type='hidden' />"; return $valeurs; } function formulaires_changer_fichier_document_verifier_dist($id_document){ $erreurs = array(); if (_request('copier_local')){ } else { $verifier = charger_fonction('verifier','formulaires/joindre_document'); $erreurs = $verifier($id_document); } return $erreurs; } function formulaires_changer_fichier_document_traiter_dist($id_document){ if (_request('copier_local')){ $copier_local = charger_fonction('copier_local','action'); $res = array('editable'=>true); if (($err=$copier_local($id_document))===true) $res['message_ok'] = _T('medias:document_copie_locale_succes'); else $res['message_erreur'] = $err; } else { // liberer le nom de l'ancien fichier pour permettre le remplacement par un fichier du meme nom if ($ancien_fichier = sql_getfetsel('fichier','spip_documents','id_document='.intval($id_document)) AND @file_exists($f = get_spip_doc($ancien_fichier))){ spip_unlink($f); } $traiter = charger_fonction('traiter','formulaires/joindre_document'); $res = $traiter($id_document); } return $res; } ?>configurer_documents.html000066600000004207152503077130011670 0ustar00<div class="formulaire_spip formulaire_configurer formulaire_#FORM formulaire_#FORM-#ENV{id,nouveau}"> <h3 class='titrem'><img src="#CHEMIN_IMAGE{document-24.png}" class="cadre-icone" /><:medias:titre_documents_joints:></h3> [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>] [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] [(#ENV{editable}) <p><:medias:texte_documents_joints:></p> <p class="explication"><:medias:texte_documents_joints_2:></p> <form method='post' action='#ENV{action}'><div> [(#REM) declarer les hidden qui declencheront le service du formulaire parametre : url d'action ] #ACTION_FORMULAIRE{#ENV{action}} <ul> #SET{name,documents_objets}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} <li class="editer long_label editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"> <label><:medias:label_activer_document_objets:></label>[ <span class='erreur_message'>(#GET{erreurs})</span> ]#INCLURE{fond=formulaires/inc-choisir-objets,name=#GET{name},selected=#ENV**{#GET{name}},exclus=spip_documents} </li> #SET{name,documents_date}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} <li class="editer pleine_largeur editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"> [ <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"><:medias:item_autoriser_selectionner_date_en_ligne:></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"><:medias:item_non_autoriser_selectionner_date_en_ligne:></label> </div> </li> </ul> [(#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' value='<:bouton_enregistrer:>' /></p> </div></form> ] </div>configurer_documents.php000066600000002526152503077130011515 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2014 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined('_ECRIRE_INC_VERSION')) return; function formulaires_configurer_documents_charger_dist(){ foreach(array( "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); if (!is_null($v=_request($m='documents_date'))) ecrire_meta($m, $v=='oui'?'oui':'non'); if (!is_null($v=_request($m='documents_objets'))) ecrire_meta($m, is_array($v)?implode(',',$v):''); $res['message_ok'] = _T('config_info_enregistree'); return $res; } editer_document.php000066600000020164152503077130010441 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2014 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined("_ECRIRE_INC_VERSION")) return; include_spip('inc/actions'); include_spip('inc/editer'); include_spip('inc/documents'); include_spip('inc/config'); function formulaires_editer_document_charger_dist($id_document='new', $id_parent='', $retour='', $lier_trad=0, $config_fonc='documents_edit_config', $row=array(), $hidden=''){ $valeurs = formulaires_editer_objet_charger('document',$id_document,$id_parent,$lier_trad,$retour,$config_fonc,$row,$hidden); // relier les parents $valeurs['parents'] = array(); $valeurs['_hidden'] = ""; $parents = sql_allfetsel('objet,id_objet','spip_documents_liens','id_document='.intval($id_document)); foreach($parents as $p){ if (in_array($p['objet'],array('article','rubrique')) AND $p['id_objet']>0) $valeurs['parents'][] = $p['objet'].'|'.$p['id_objet']; else $valeurs['_hidden'] .= "<input type='hidden' name='parents[]' value='".$p['objet'].'|'.$p['id_objet']."' />"; } // en fonction de la config du site on a le droit ou pas de modifier la date if ($valeurs['_editer_date'] = (lire_config('documents_date') == 'oui' ? ' ' : '')){ $valeurs['saisie_date'] = affdate($valeurs['date'],'d/m/Y'); $valeurs['saisie_heure'] = affdate($valeurs['date'],'H:i'); } elseif (isset($valeurs['date'])){ unset($valeurs['date']); } // en fonction du format $valeurs['_editer_dimension'] = autoriser('tailler','document',$id_document)?' ':''; // type du document et inclusion $row = sql_fetsel('titre as type_document,inclus','spip_types_documents','extension='.sql_quote($valeurs['extension'])); $valeurs['type_document'] = $row['type_document']; $valeurs['_inclus'] = $row['inclus']; if (in_array($valeurs['extension'],array('jpg','gif','png'))){ $valeurs['apercu'] = get_spip_doc($valeurs['fichier']); } // verifier les infos de taille et dimensions sur les fichiers locaux // cas des maj de fichier directes par ftp if ($valeurs['distant']!=='oui'){ include_spip('inc/renseigner_document'); $infos = renseigner_taille_dimension_image(get_spip_doc($valeurs['fichier']),$valeurs['extension']); if ($infos['taille']!=$valeurs['taille'] OR ($infos['type_image'] && ($infos['largeur']!=$valeurs['largeur'])) OR ($infos['type_image'] && ($infos['hauteur']!=$valeurs['hauteur']))){ $valeurs['_taille_modif'] = $infos['taille']; $valeurs['_largeur_modif'] = $infos['largeur']; $valeurs['_hauteur_modif'] = $infos['hauteur']; $valeurs['_hidden'].= "<input type='hidden' name='_taille_modif' value='".$infos['taille']."' />" . "<input type='hidden' name='_largeur_modif' value='".$infos['largeur']."' />" . "<input type='hidden' name='_hauteur_modif' value='".$infos['hauteur']."' />"; } } // pour l'upload d'un nouveau doc if ($valeurs['fichier']){ $charger = charger_fonction('charger','formulaires/joindre_document'); $valeurs = array_merge($valeurs,$charger($id_document,0,'','choix')); $valeurs['_hidden'] .= "<input name='id_document' value='$id_document' type='hidden' />"; } return $valeurs; } // Choix par defaut des options de presentation function documents_edit_config($row) { global $spip_lang; $config = array();//$GLOBALS['meta']; $config['lignes'] = 8; $config['langue'] = $spip_lang; $config['restreint'] = ($row['statut'] == 'publie'); return $config; } function formulaires_editer_document_verifier_dist($id_document='new', $id_parent='', $retour='', $lier_trad=0, $config_fonc='documents_edit_config', $row=array(), $hidden=''){ $erreurs = formulaires_editer_objet_verifier('document',$id_document,is_numeric($id_document)?array():array('titre')); // verifier l'upload si on a demande a changer le document if (_request('joindre_upload') OR _request('joindre_ftp') OR _request('joindre_distant')){ if (_request('copier_local')){ } else { $verifier = charger_fonction('verifier','formulaires/joindre_document'); $erreurs = array_merge($erreurs,$verifier($id_document)); } } // On ne vérifie la date que si on avait le droit de la modifier if (lire_config('documents_date') == 'oui'){ if (!$date = recup_date(_request('saisie_date').' '._request('saisie_heure').':00') OR !($date = mktime($date[3],$date[4],0,$date[1],$date[2],$date[0]))) $erreurs['saisie_date'] = _T('medias:format_date_incorrect'); else { set_request('saisie_date',date('d/m/Y',$date)); set_request('saisie_heure',date('H:i',$date)); set_request('date',date("Y-m-d H:i:s",$date)); } } return $erreurs; } // http://code.spip.net/@inc_editer_article_dist function formulaires_editer_document_traiter_dist($id_document='new', $id_parent='', $retour='', $lier_trad=0, $config_fonc='documents_edit_config', $row=array(), $hidden=''){ if (is_null(_request('parents'))) set_request('parents',array()); // verifier les infos de taille et dimensions sur les fichiers locaux // cas des maj de fichier directes par ftp foreach(array('taille','largeur','hauteur') as $c) if (($v=_request("_{$c}_modif")) AND !_request($c)){ set_request($c,$v); } $res = formulaires_editer_objet_traiter('document',$id_document,$id_parent,$lier_trad,$retour,$config_fonc,$row,$hidden); set_request('parents'); $autoclose = "<script type='text/javascript'>if (window.jQuery) jQuery.modalboxclose();</script>"; if (_request('copier_local') OR _request('joindre_upload') OR _request('joindre_ftp') OR _request('joindre_distant') OR _request('joindre_zip')){ $autoclose = ""; if (_request('copier_local')){ $copier_local = charger_fonction('copier_local','action'); $res = array('editable'=>true); if (($err=$copier_local($id_document))===true) $res['message_ok'] = (isset($res['message_ok'])?$res['message_ok'].'<br />':'')._T('medias:document_copie_locale_succes'); else $res['message_erreur'] = (isset($res['message_erreur'])?$res['message_erreur'].'<br />':'').$err; set_request('credits'); // modifie par la copie locale } else { // liberer le nom de l'ancien fichier pour permettre le remplacement par un fichier du meme nom if ($ancien_fichier = sql_getfetsel('fichier','spip_documents','id_document='.intval($id_document)) AND @file_exists($rename = get_spip_doc($ancien_fichier))){ @rename($rename,"$rename--.old"); } $traiter = charger_fonction('traiter','formulaires/joindre_document'); $res2 = $traiter($id_document); if (isset($res2['message_erreur'])){ $res['message_erreur'] = $res2['message_erreur']; // retablir le fichier ! if ($rename) @rename("$rename--.old",$rename); } else // supprimer vraiment le fichier initial spip_unlink("$rename--.old"); } // on annule les saisies largeur/hauteur : l'upload a pu charger les siens set_request('largeur'); set_request('hauteur'); } else{ // regarder si une demande de rotation a eu lieu // c'est un bouton image, dont on a pas toujours le name en request, on fait avec $angle = 0; if (_request('tournerL90') OR _request('tournerL90_x')) $angle = -90; if (_request('tournerR90') OR _request('tournerR90_x')) $angle = 90; if (_request('tourner180') OR _request('tourner180_x')) $angle = 180; if ($angle){ $autoclose = ""; $tourner = charger_fonction('tourner','action'); action_tourner_post($id_document,$angle); } } if (!isset($res['redirect'])) $res['editable'] = true; if (!isset($res['message_erreur'])) $res['message_ok'] = _T('info_modification_enregistree').$autoclose; if ($res['message_ok']) $res['message_ok'].='<script type="text/javascript">if (window.jQuery) ajaxReload("document_infos");</script>'; return $res; } ?> changer_fichier_document.html000066600000002303152503077130012435 0ustar00<div class='formulaire_spip formulaire_changer_fichier_document' id='formulaire_changer_fichier_document-#ENV{id,new}'> [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>] [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] [(#ENV{editable}) <form action="#ENV{action}#formulaire_changer_fichier_document-#ENV{id,new}" method="post" enctype='multipart/form-data'><div> [(#ACTION_FORMULAIRE{#ENV{action}})] <ul> <li class="editer editer_fichier[ (#ENV**{erreurs}|table_valeur{fichier}|oui)erreur]"> <label for="fichier"><:medias:label_fichier:></label>[ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{fichier})</span> ] [(#ENV{fichier}) ] <p class='actions'> [(#ENV{distant}|=={oui}|oui) <input type='submit' class='submit' name='copier_local' value='<:medias:bouton_copier_local|attribut_html:>' />] [<a href='#' onclick='jQuery("#changer_fichier_document").toggle("fast");return false;'><:bouton_changer:></a>] </p> <div id='changer_fichier_document' style='display:none;'> [(#INCLURE{fond=formulaires/inc-upload_document, env})] </div> </li> </ul> </div></form> ] </div>illustrer_document.php000066600000006336152503077130011217 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2014 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined("_ECRIRE_INC_VERSION")) return; function formulaires_illustrer_document_charger_dist($id_document){ include_spip('inc/documents'); $valeurs = sql_fetsel('id_document,mode,id_vignette,extension,media','spip_documents','id_document='.intval($id_document)); if (!$valeurs /*OR in_array($valeurs['extension'],array('jpg','gif','png'))*/) return array('editable'=>false,'id'=>$id_document); $valeurs['id'] = $id_document; $valeurs['_hidden'] = "<input name='id_document' value='$id_document' type='hidden' />"; $valeurs['mode'] = 'vignette'; // pour les id dans le dom $vignette = sql_fetsel('fichier,largeur,hauteur,id_document','spip_documents','id_document='.$valeurs['id_vignette']); $valeurs['vignette'] = get_spip_doc($vignette['fichier']); $valeurs['hauteur'] = $vignette['hauteur']; $valeurs['largeur'] = $vignette['largeur']; $valeurs['id_vignette'] = $vignette['id_document']; $valeurs['_pipeline'] = array('editer_contenu_objet',array('type'=>'illustrer_document','id'=>$id_document)); return $valeurs; } function formulaires_illustrer_document_verifier_dist($id_document){ $erreurs = array(); if (_request('supprimer')){ } else { $id_vignette = sql_getfetsel('id_vignette','spip_documents','id_document='.intval($id_document)); $verifier = charger_fonction('verifier','formulaires/joindre_document'); $erreurs = $verifier($id_vignette,0,'','vignette'); } return $erreurs; } function formulaires_illustrer_document_traiter_dist($id_document){ $id_vignette = sql_getfetsel('id_vignette','spip_documents','id_document='.intval($id_document)); $res = array('editable'=>true); if (_request('supprimer')){ $supprimer_document = charger_fonction('supprimer_document','action'); if ($id_vignette AND $supprimer_document($id_vignette)) $res['message_ok'] = _T('medias:vignette_supprimee'); else $res['message_erreur'] = _T('medias:erreur_suppression_vignette'); } else { $ajouter_documents = charger_fonction('ajouter_documents', 'action'); include_spip('inc/joindre_document'); $files = joindre_trouver_fichier_envoye(); $ajoute = $ajouter_documents($id_vignette,$files,'',0,'vignette'); if (is_numeric(reset($ajoute)) AND $id_vignette = reset($ajoute)){ include_spip('action/editer_document'); document_modifier($id_document,array("id_vignette" => $id_vignette,'mode'=>'document')); $res['message_ok'] = _T('medias:document_installe_succes'); } else $res['message_erreur'] = reset($ajoute); } // todo : // generer les case docs si c'est necessaire // rediriger sinon return $res; } ?>joindre_document.php000066600000027073152503077130010625 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2014 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined("_ECRIRE_INC_VERSION")) return; function joindre_determiner_mode($mode,$id_document,$objet){ if ($mode=='auto'){ if (intval($id_document)) $mode = sql_getfetsel('mode','spip_documents','id_document='.intval($id_document)); if (!in_array($mode,array('choix','document','image'))){ $mode='choix'; if ($objet AND !in_array(table_objet_sql($objet),explode(',',$GLOBALS['meta']["documents_objets"]))) $mode = 'image'; } } return $mode; } function formulaires_joindre_document_charger_dist($id_document='new',$id_objet=0,$objet='',$mode = 'auto',$galerie = false, $proposer_media=true, $proposer_ftp=true){ $valeurs = array(); $mode = joindre_determiner_mode($mode,$id_document,$objet); $valeurs['id'] = $id_document; $valeurs['_mode'] = $mode; $valeurs['url'] = 'http://'; $valeurs['fichier_upload'] = $valeurs['_options_upload_ftp'] = $valeurs['_dir_upload_ftp'] = ''; $valeurs['joindre_upload'] = $valeurs['joindre_distant'] = $valeurs['joindre_ftp'] = $valeurs['joindre_mediatheque'] = ''; $valeurs['editable'] = ' '; if (intval($id_document)) $valeurs['editable'] = autoriser('modifier','document',$id_document)?' ':''; $valeurs['proposer_media'] = is_string($proposer_media) ? (preg_match('/^(false|non|no)$/i', $proposer_media) ? false : true) : $proposer_media; $valeurs['proposer_ftp'] = is_string($proposer_ftp) ? (preg_match('/^(false|non|no)$/i', $proposer_ftp) ? false : true) : $proposer_ftp; # regarder si un choix d'upload FTP est vraiment possible if ( $valeurs['proposer_ftp'] AND test_espace_prive() # ?? AND ($mode != 'image') AND ($mode != 'vignette') # si c'est pour un document //AND !$vignette_de_doc # pas pour une vignette (NB: la ligne precedente suffit, mais si on la supprime il faut conserver ce test-ci) AND $GLOBALS['flag_upload'] ) { include_spip('inc/documents'); if ($dir = determine_upload('documents')) { // quels sont les docs accessibles en ftp ? $valeurs['_options_upload_ftp'] = joindre_options_upload_ftp($dir, $mode); // s'il n'y en a pas, on affiche un message d'aide // en mode document, mais pas en mode image if ($valeurs['_options_upload_ftp'] OR ($mode == 'document' OR $mode=='choix')) $valeurs['_dir_upload_ftp'] = "<b>".joli_repertoire($dir)."</b>"; } } // On ne propose le FTP que si on a des choses a afficher $valeurs['proposer_ftp'] = ($valeurs['_options_upload_ftp'] or $valeurs['_dir_upload_ftp']); if ($galerie){ # passer optionnellement une galerie jointe au form # plus utilise nativement, on prefere la mise a jour # apres upload par ajaxReload('documents') $valeurs['_galerie'] = $galerie; } if ($objet AND $id_objet){ $valeurs['id_objet'] = $id_objet; $valeurs['objet'] = $objet; $valeurs['refdoc_joindre'] = ''; if ($valeurs['editable']){ include_spip('inc/autoriser'); $valeurs['editable'] = autoriser('joindredocument',$objet,$id_objet)?' ':''; } } return $valeurs; } function formulaires_joindre_document_verifier_dist($id_document='new',$id_objet=0,$objet='',$mode = 'auto',$galerie = false, $proposer_media=true, $proposer_ftp=true){ include_spip('inc/joindre_document'); $erreurs = array(); // on joint un document deja dans le site if (_request('joindre_mediatheque')){ $refdoc_joindre = intval(preg_replace(',^(doc|document|img),','',_request('refdoc_joindre'))); if (!sql_getfetsel('id_document','spip_documents','id_document='.intval($refdoc_joindre))) $erreurs['message_erreur'] = _T('medias:erreur_aucun_document'); } // sinon c'est un upload else { $files = joindre_trouver_fichier_envoye(); if (is_string($files)) $erreurs['message_erreur'] = $files; elseif(is_array($files)){ // erreur si on a pas trouve de fichier if (!count($files)) $erreurs['message_erreur'] = _T('medias:erreur_aucun_fichier'); else{ // regarder si on a eu une erreur sur l'upload d'un fichier foreach($files as $file){ if (isset($file['error']) AND $test = joindre_upload_error($file['error'])){ if (is_string($test)) $erreurs['message_erreur'] = $test; else $erreurs['message_erreur'] = _T('medias:erreur_aucun_fichier'); } } // si ce n'est pas deja un post de zip confirme // regarder si il faut lister le contenu du zip et le presenter if (!count($erreurs) AND !_request('joindre_zip') AND $contenu_zip = joindre_verifier_zip($files)){ list($fichiers,$erreurs,$tmp_zip) = $contenu_zip; if ($fichiers) $erreurs['lister_contenu_archive'] = recuperer_fond("formulaires/inc-lister_archive_jointe",array('chemin_zip'=>$tmp_zip,'liste_fichiers_zip'=>$fichiers,'erreurs_fichier_zip'=>$erreurs)); else $erreurs['message_erreur'] = _T('medias:erreur_aucun_fichier'); } } } if (count($erreurs) AND defined('_tmp_dir')) effacer_repertoire_temporaire(_tmp_dir); } return $erreurs; } function formulaires_joindre_document_traiter_dist($id_document='new',$id_objet=0,$objet='',$mode = 'auto',$galerie = false, $proposer_media=true, $proposer_ftp=true){ $res = array('editable'=>true); $ancre = ''; // on joint un document deja dans le site if (_request('joindre_mediatheque')){ $refdoc_joindre = _request('refdoc_joindre'); $refdoc_joindre = strtr($refdoc_joindre,";,"," "); $refdoc_joindre = preg_replace(',\b(doc|document|img),','',$refdoc_joindre); // expliciter les intervales xxx-yyy while(preg_match(",\b(\d+)-(\d+)\b,",$refdoc_joindre,$m)) $refdoc_joindre = str_replace($m[0],implode(" ",range($m[1],$m[2])),$refdoc_joindre); $refdoc_joindre = explode(" ",$refdoc_joindre); include_spip('action/editer_document'); foreach($refdoc_joindre as $j){ if ($j = intval(preg_replace(',^(doc|document|img),','',$j))){ // lier le parent en plus $champs = array('ajout_parents' => array("$objet|$id_objet")); document_modifier($j,$champs); if (!$ancre) $ancre = $j; $sel[] = $j; $res['message_ok'] = _T('medias:document_attache_succes'); } } if ($sel) $res['message_ok'] = singulier_ou_pluriel(count($sel),'medias:document_attache_succes','medias:nb_documents_attache_succes'); set_request('refdoc_joindre',''); // vider la saisie } // sinon c'est un upload else { $ajouter_documents = charger_fonction('ajouter_documents', 'action'); $mode = joindre_determiner_mode($mode,$id_document,$objet); include_spip('inc/joindre_document'); $files = joindre_trouver_fichier_envoye(); $nouveaux_doc = $ajouter_documents($id_document,$files,$objet,$id_objet,$mode); if (defined('_tmp_zip')) unlink(_tmp_zip); if (defined('_tmp_dir')) effacer_repertoire_temporaire(_tmp_dir); // checker les erreurs eventuelles $messages_erreur = array(); $nb_docs = 0; $sel = array(); foreach ($nouveaux_doc as $doc) { if (!is_numeric($doc)) $messages_erreur[] = $doc; // cas qui devrait etre traite en amont elseif(!$doc) $messages_erreur[] = _T('medias:erreur_insertion_document_base',array('fichier'=>'<em>???</em>')); else{ if (!$ancre) $ancre = $doc; $sel[] = $doc; } } if (count($messages_erreur)) $res['message_erreur'] = implode('<br />',$messages_erreur); if ($sel) $res['message_ok'] = singulier_ou_pluriel(count($sel),'medias:document_installe_succes','medias:nb_documents_installe_succes'); if ($ancre) $res['redirect'] = "#doc$ancre"; } if (count($sel) OR isset($res['message_ok'])){ $callback = ""; if ($ancre) $callback .= "jQuery('#doc$ancre a.editbox').eq(0).focus();"; if (count($sel)){ // passer les ids document selectionnes aux pipelines $res['ids'] = $sel; $sel = "#doc".implode(",#doc",$sel); $callback .= "jQuery('$sel').animateAppend();"; } $js = "if (window.jQuery) jQuery(function(){ajaxReload('documents',{callback:function(){ $callback }});});"; $js = "<script type='text/javascript'>$js</script>"; if (isset($res['message_erreur'])) $res['message_erreur'].= $js; else $res['message_ok'] .= $js; } return $res; } /** * Retourner le contenu du select HTML d'utilisation de fichiers envoyes * * @param string $dir * @param string $mode * @return string */ function joindre_options_upload_ftp($dir, $mode = 'document') { $fichiers = preg_files($dir); $exts = $dirs = $texte_upload = array(); // en mode "charger une image", ne proposer que les inclus $inclus = ($mode == 'image' OR $mode =='vignette') ? " AND inclus='image'" : ''; foreach ($fichiers as $f) { $f = preg_replace(",^$dir,",'',$f); if (preg_match(",\.([^.]+)$,", $f, $match)) { $ext = strtolower($match[1]); if (!isset($exts[$ext])) { include_spip('action/ajouter_documents'); $ext = corriger_extension($ext); if (sql_fetsel('extension', 'spip_types_documents', $a = "extension='$ext'" . $inclus)) $exts[$ext] = 'oui'; else $exts[$ext] = 'non'; } $k = 2*substr_count($f,'/'); $n = strrpos($f, "/"); if ($n === false) $lefichier = $f; else { $lefichier = substr($f, $n+1, strlen($f)); $ledossier = substr($f, 0, $n); if (!in_array($ledossier, $dirs)) { $texte_upload[] = "\n<option value=\"$ledossier\">" . str_repeat(" ",$k) ._T('medias:tout_dossier_upload', array('upload' => $ledossier)) ."</option>"; $dirs[]= $ledossier; } } if ($exts[$ext] == 'oui') $texte_upload[] = "\n<option value=\"$f\">" . str_repeat(" ",$k+2) . $lefichier . "</option>"; } } $texte = join('', $texte_upload); if (count($texte_upload)>1) { $texte = "\n<option value=\"/\" style='font-weight: bold;'>" ._T('medias:info_installer_tous_documents') ."</option>" . $texte; } return $texte; } /** * Lister les fichiers contenus dans un zip * * @param unknown_type $files * @return unknown */ function joindre_liste_contenu_tailles_archive($files) { include_spip('inc/charsets'); # pour le nom de fichier $res = ''; if (is_array($files)) foreach ($files as $nom => $file) { $nom = translitteration($nom); $date = date_interface(date("Y-m-d H:i:s", $file['mtime'])); $taille = taille_en_octets($file['size']); $res .= "<li title=\"".attribut_html($title)."\"><b>$nom</b> – $taille<br /> $date</li>\n"; } return $res; } function joindre_liste_erreurs_to_li($erreurs){ if (count($erreurs)==1) return "<p>".reset($erreurs)."</p>"; $res = implode("</li><li>",$erreurs); if (strlen($res)) $res = "<li>$res</li></ul>"; if (count($erreurs)>4) $res = "<p style='cursor:pointer;' onclick='jQuery(this).siblings(\"ul\").toggle();return false;'>"._T("medias:erreurs_voir",array('nb'=>count($erreurs)))."</p><ul class=\"spip none-js\">".$res."</ul>"; else $res = "<ul class=\"spip\">$res</ul>"; return $res; } ?> editer_document.html000066600000015235152503077130010621 0ustar00<div class='formulaire_spip formulaire_editer formulaire_editer_document formulaire_editer_document-#ENV{id_document,nouveau}'> [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>] [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] [(#ENV{editable}) <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}} <input type='hidden' name='id_document' value='#ENV{id_document}' /> [(#REM) un bouton submit pour enregistrer qui sera declenche par le return il ne doit pas etre hidden pour marcher dans safari ] <div style="position:absolute;#LANG_LEFT:-10000px;"><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></div> <ul> <li class="editer editer_titre[ (#ENV**{erreurs}|table_valeur{titre}|oui)erreur]"> <label for="titre">[(#ENV{mode}|=={document}|?{<:medias:entree_titre_document:>,<:medias:entree_titre_image:>})]</label>[ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{titre})</span> ]<input type='text' class='text' name='titre' id='titre' value="[(#ENV**{titre,''})]" /> </li> <li class='editer editer_parent[ (#ENV**{erreurs}|table_valeur{parents}|oui)erreur]'> <label for="parents"><:medias:label_parents:></label>[ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{parents})</span> ]<INCLURE{fond=formulaires/selecteur/articles, selected=#ENV{parents}, name=parents, rubriques=1, articles=1} /> </li> [<li class="editer editer_fichier[ (#ENV**{erreurs}|table_valeur{fichier}|oui)erreur]"> <label for="fichier"><:medias:label_fichier:></label>[ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{fichier})</span> ] (#ENV{fichier}) <p class='actions'> [(#ENV{distant}|=={oui}|oui) <input type='submit' class='submit' name='copier_local' value='<:medias:bouton_copier_local|attribut_html:>' />] [(#PIPELINE{editer_document_actions,#ARRAY{args,#ARRAY{id_document,#ENV{id_document,nouveau}},data,''}})] [<a href='#' onclick='jQuery("#changer_fichier_document").toggle("fast");return false;'><:bouton_changer:></a>] </p> #SET{upload,#INCLURE{fond=formulaires/inc-upload_document, env, joindre_upload=oui}} <div id='changer_fichier_document' class="[(#GET{upload}|match{erreur}|non)none-js]"> #GET{upload} </div> </li>] <li class="editer editer_apercu"> <label><:medias:label_apercu:></label> [(#ENV{apercu}|oui) <div class="tourner"> <input class="image" type="image" name="tournerL90" src="#CHEMIN_IMAGE{tourner-gauche-12.png}" alt="<:medias:image_tourner_gauche:>" /> <input class="image" type="image" name="tournerR90" src="#CHEMIN_IMAGE{tourner-droite-12.png}" alt="<:medias:image_tourner_droite:>" /> <input class="image" type="image" name="tourner180" src="#CHEMIN_IMAGE{tourner-180-12.png}" alt="<:medias:image_tourner_180:>" /> </div> [<a href='#ENV{apercu}'>(#ENV{apercu}|image_reduire{300,200})</a>] ] [(#ENV{apercu}|non) [(#ENV**{_inclus}|=={embed}|?{ [(#MODELE{emb,id_document=#ENV{id_document,''},hauteur=200,largeur=300})] , [(#MODELE{doc,id_document=#ENV{id_document,''},hauteur=200,largeur=300}|extraire_balise{a})] })] ] </li> <li class="editer editer_infos"> <label><:medias:label_caracteristiques:></label> [<span class='type'>(#ENV{type_document}) - </span>] <span class='taille'>[(#LARGEUR|ou{#HAUTEUR}|oui)[(#VAL{info_largeur_vignette}|_T{#ARRAY{largeur_vignette,#LARGEUR,hauteur_vignette,#HAUTEUR}})] - ][(#TAILLE|taille_en_octets|texte_backend)]</span> [(#ENV{_taille_modif}|oui)<div class='taille_modifiee'><:medias:fichier_modifie:><br />[(#ENV{_largeur_modif}|ou{#ENV{_hauteur_modif}}|oui)[(#VAL{info_largeur_vignette}|_T{#ARRAY{largeur_vignette,#ENV{_largeur_modif},hauteur_vignette,#ENV{_hauteur_modif}}})] - ][(#ENV{_taille_modif}|taille_en_octets|texte_backend)]</div>] [(#PIPELINE{afficher_metas_document,#ARRAY{args,#ARRAY{'quoi','editer_document','id_document',#ENV{id_document}},data,''}})] </li> <li class="editer editer_descriptif[ (#ENV**{erreurs}|table_valeur{descriptif}|oui)erreur]"> <label for="descriptif"><:info_description:></label>[ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{descriptif})</span> ]<textarea name='descriptif' id='descriptif'[ lang='(#LANGUE)'] rows='2' cols='40'>[(#ENV**{descriptif})]</textarea> </li> [(#ENV{_editer_date}) <li class="editer editer_date[ (#ENV**{erreurs}|table_valeur{saisie_date}|oui)erreur][ (#ENV**{erreurs}|table_valeur{saisie_heure}|oui)erreur]"> <label for="saisie_date" class='date'><:date:></label>[ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{saisie_date})</span> ]<input type='text' class='text date' name='saisie_date' id='saisie_date' size="10" maxlength="10" value="[(#ENV{saisie_date})]" /> <span class='choix heure'> <label for='saisie_heure' class='heure'><:medias:info_heure:></label>[ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{saisie_heure})</span>] <input type='text' class='text heure' name='saisie_heure' id='heure' size="5" maxlength="5" value="[(#ENV{saisie_heure})]" /> </span> </li> ] <li class="editer editer_credits[ (#ENV**{erreurs}|table_valeur{credits}|oui)erreur]"> <label for="credits"><:medias:label_credits:></label>[ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{credits})</span> ]<input type='text' class='text' name='credits' id='credits' value="#ENV**{credits,''}" /> </li> [(#ENV{_editer_dimension}) <li class="editer editer_dimensions[ (#ENV**{erreurs}|table_valeur{dimensions}|oui)erreur]"> <label><:medias:entree_dimensions:></label>[ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{dimensions})</span> ] <span class='choix largeur'> <label for='largeur' class='largeur'><:medias:info_largeur:></label> <input type='text' class='text' name='largeur' id='largeur' value="[(#ENV{largeur})]" /> </span> <span class='choix hauteur'> <label for='hauteur' class='hauteur'><:medias:info_hauteur:></label> <input type='text' class='text' name='hauteur' id='hauteur' value="[(#ENV{hauteur})]" /> </span> </li> ] </ul> [(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ] <!--extra--> <p class="boutons"><span class='image_loading'> </span><input type='submit' class='submit' value='<:bouton_enregistrer:>' /></p> </div></form> #INCLURE{fond=formulaires/dateur/inc-dateur} ] </div> inc-lister_archive_jointe.html000066600000004324152503077130012566 0ustar00<fieldset><legend><:medias:upload_fichier_zip:></legend> <div class='explication'><:medias:upload_fichier_zip_texte:></div> <input type='hidden' name='chemin_zip' value='#ENV{chemin_zip}' /> <ul> <li class='editer editer_options_upload_zip[ (#ENV*{erreurs_fichier_zip}|oui)erreur]'> <label><:medias:upload_fichier_zip_texte2:></label> <div class='choix'> <input type='radio' checked='checked' name='options_upload_zip' id='options_upload_zip_telquel' value='upload' onchange='jQuery("#editer_options_deballe_zip").slideUp();' /> <label for='options_upload_zip_telquel'><:medias:upload_zip_telquel:></label> </div> [<div class='choix'> <input type='radio' name='options_upload_zip' id='options_upload_zip_deballe' value='deballe' onchange='jQuery("#editer_options_deballe_zip").slideDown();' /> <label for='options_upload_zip_deballe'><:medias:upload_zip_decompacter:> <ol class="spip"> (#ENV*{liste_fichiers_zip}|joindre_liste_contenu_tailles_archive) </ol> </label> <ul> <li class='editer editer_options_deballe_zip' id='editer_options_deballe_zip'> <div class='choix'> <input type='checkbox' name='options_deballe_zip_conserver' id='options_deballe_zip_conserver' value='1' /> <label for='options_deballe_zip_conserver'><:medias:upload_zip_conserver:></label> </div> <div class='choix'> <input type='checkbox' name='options_deballe_zip_titrer' id='options_deballe_zip_titrer' value='1' /> <label for='options_deballe_zip_titrer'><:medias:upload_zip_titrer:></label> </div> <div class='choix'> <input type='checkbox' name='options_deballe_zip_mode_document' id='options_deballe_zip_mode_document' value='1' /> <label for='options_deballe_zip_mode_document'><:medias:upload_zip_mode_document:></label> </div> </li> </ul> </div>] [ <div class='erreur_message'>(#ENV*{erreurs_fichier_zip}|joindre_liste_erreurs_to_li)</div> ] </li> </ul> <p class='boutons'><input class='submit' type='submit' name='joindre_zip' value='<:bouton_valider|attribut_html:>' /></p> <script type='text/javascript'> if (window.jQuery){ jQuery(document).ready(function(){jQuery("#editer_options_deballe_zip").hide();}); } </script> </fieldset>joindre_document.html000066600000002642152503077130010775 0ustar00[(#ENV{editable}) <div class='formulaire_spip formulaire_joindre formulaire_joindre_document' id='formulaire_joindre_document-#ENV{id,new}'> [(#ENV{_mode}|=={image}|oui) <h3 class='titrem'>[(#CHEMIN_IMAGE{image-24.png}|balise_img{'',cadre-icone})][(#ENV{id,new}|intval|?{<:medias:bouton_remplacer_image:>,<:medias:bouton_ajouter_image:>}) #AIDER{ins_img}]</h3> ][(#ENV{_mode}|=={document}|oui) <h3 class='titrem'>[(#CHEMIN_IMAGE{doc-24.png}|balise_img{'',cadre-icone})][(#ENV{id,new}|intval|?{<:medias:bouton_remplacer_document:>,<:medias:bouton_ajouter_document:>}) #AIDER{ins_doc}]</h3> ][(#ENV{_mode}|=={choix}|oui) <h3 class='titrem'>[(#CHEMIN_IMAGE{doc-24.png}|balise_img{'',cadre-icone})][(#ENV{id,new}|intval|?{<:medias:bouton_remplacer_image_document:>,<:medias:bouton_ajouter_image_document:>}) #AIDER{ins_doc}]</h3> ] <span class="image_loading"></span> [<div class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</div>] [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV**{message_erreur})</p>] <form action="#ENV{action}#formulaire_joindre_document-#ENV{id,new}" method="post" enctype='multipart/form-data'><div> [(#ACTION_FORMULAIRE{#ENV{action}})] [(#INCLURE{fond=formulaires/inc-upload_document, env, mediatheque=#ENV{objet,''}|et{#ENV{id_objet,''}}|et{#ENV{proposer_media}}})] </div></form> </div>] [(#ENV{_galerie,''}|oui) [(#INCLURE{fond=#ENV{_galerie}, env, ajax})] ] illustrer_document.html000066600000003166152503077130011372 0ustar00<div class='formulaire_spip formulaire_illustrer_document' id='formulaire_illustrer_document-#ENV{id,new}'> [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>] [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] [(#ENV{editable}) <form action="#ENV{action}#formulaire_illustrer_document-#ENV{id,new}" method="post" enctype='multipart/form-data'><div> [(#ACTION_FORMULAIRE{#ENV{action}})] <ul> <li class="editer editer_fichier[ (#ENV**{erreurs}|table_valeur{fichier}|oui)erreur]"> <label for="fichier"><:medias:label_fichier_vignette:></label>[ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{fichier})</span> ][ (#CONFIG{taille_preview}|intval|?{#ENV*{vignette}|image_reduire{#CONFIG{taille_preview}},#ENV*{vignette}|balise_img}) ][(#ENV*{vignette}|non)<:medias:aucune_vignette:> [(#CONFIG{creer_preview}|=={oui}|et{#ENV{media}|=={image}})<br /><:medias:miniature_automatique_active:>] ] <p class='actions'> [(#ENV{id_vignette}|oui|et{#AUTORISER{supprimer,document,#ENV{id_vignette}}}) <input type='submit' class='submit' name='supprimer' value='<:medias:bouton_supprimer|attribut_html:>' />] [(#ENV{id_vignette}|non|ou{#AUTORISER{modifier,document,#ENV{id_vignette}}}) [<a href='#' onclick='jQuery("#illustrer_document").toggle("fast");return false;'><:bouton_changer:></a>]] <span class='image_loading'> </span> </p> <div id='illustrer_document' style='display:none;'> [(#INCLURE{fond=formulaires/inc-upload_document, env, joindre_upload=oui})] </div> </li> </ul> </div></form> ] </div>inc-upload_document.html000066600000015441152503077130011377 0ustar00#SET{domid,_#ENV{mode}|concat{'_',#ENV{id,new}}} #SET{methode,upload} [(#ENV{joindre_mediatheque}|oui)#SET{methode,mediatheque}] [(#ENV{joindre_distant}|oui)#SET{methode,distant}] [(#ENV{joindre_ftp}|oui)#SET{methode,ftp}] <div id="defaultsubmit#GET{domid}" class="none"></div> [ (#REM) Formulaire d'upload de fichier ]<div class='joindre_mode#GET{domid}[(#GET{methode}|=={upload}|non)none-js]' id='joindre_upload#GET{domid}'> <ul> <li class='editer editer_fichier_upload[ (#ENV**{erreurs}|table_valeur{fichier_upload}|oui)erreur]'> <label for='fichier_upload#GET{domid}'><:bouton_upload:></label>[ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{fichier_upload})</span> ]<input class='file multi' type="file" name="fichier_upload[]" value='#ENV{fichier_upload}' id="fichier_upload#GET{domid}" size='11' /> <!--editer_fichier_upload--> </li> </ul> <div class='sourceup'> <:medias:bouton_download_depuis:> <:medias:bouton_download_local:> [(#ENV{mediatheque,''}|oui) | <a href='#' onclick="change_methode('#GET{domid}','mediatheque');return false;"><:medias:bouton_download_par_mediatheque:></a>] [(#ENV{proposer_ftp,''}|oui) | <a href='#' onclick="change_methode('#GET{domid}','ftp');return false;"><:medias:bouton_download_par_ftp:></a>] | <a href='#' onclick="change_methode('#GET{domid}','distant');return false;"><:medias:bouton_download_sur_le_web:></a> </div> <p class='boutons'><input class='submit' type="submit" name="joindre_upload" value="<:bouton_upload:>"/></p> </div>[ (#REM) Formulaire pour document dans mediatheque ][(#ENV{mediatheque,''}|oui) <div class='joindre_mode#GET{domid}[(#GET{methode}|=={mediatheque}|non)none-js]' id='joindre_mediatheque#GET{domid}'> <ul> <li class='editer editer_refdoc_joindre[ (#ENV**{erreurs}|table_valeur{refdoc_joindre}|oui)erreur]'> <label for='refdoc_joindre#GET{domid}'><:medias:label_refdoc_joindre:></label>[ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{refdoc_joindre})</span> ]<input class='text' type="text" name="refdoc_joindre" value='#ENV{refdoc_joindre}' id="refdoc_joindre#GET{domid}"/> <input class='submit' type="button" name="parcourir" value="<:medias:bouton_parcourir:>" onclick="jQuery.modalboxload('#URL_ECRIRE{popin-choisir_document,var_zajax=contenu&selectfunc=mediaselect#GET{domid}}',{autoResize: true});" /> <!--editer_refdoc_joindre--> </li> </ul> <script type="text/javascript">/*<!\[CDATA\[*/ function mediaselect#GET{domid}(id){jQuery.modalboxclose();jQuery("#refdoc_joindre#GET{domid}").attr('value','doc'+id).focus();jQuery('#joindre_mediatheque#GET{domid}>.boutons input').get(0).click();} /*\]\]>*/</script> <div class='sourceup'> <:medias:bouton_download_depuis:> <a href='#' onclick="change_methode('#GET{domid}','upload');return false;"><:medias:bouton_download_local:></a> | <:medias:bouton_download_par_mediatheque:> [(#ENV{proposer_ftp,''}|oui) | <a href='#' onclick="change_methode('#GET{domid}','ftp');return false;"><:medias:bouton_download_par_ftp:></a>] | <a href='#' onclick="change_methode('#GET{domid}','distant');return false;"><:medias:bouton_download_sur_le_web:></a> </div> <p class='boutons'><input class='submit' type="submit" name="joindre_mediatheque" value="<:medias:bouton_attacher_document:>"/></p> </div> ][ (#REM) Formulaire pour upload ftp ][(#ENV{proposer_ftp,''}|oui) <div class='joindre_mode#GET{domid}[(#GET{methode}|=={ftp}|non)none-js]' id='joindre_ftp#GET{domid}'> [ <ul> <li class='editer editer_cheminftp[ (#ENV**{erreurs}|table_valeur{cheminftp}|oui)erreur]'> <label for='cheminftp#GET{domid}'>[(#VAL{info_selectionner_fichier}|_T{#ARRAY{upload,#ENV*{_dir_upload_ftp}}})]</label>[ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{cheminftp})</span> ]<select name='cheminftp' id='cheminftp#GET{domid}' size='1'> <option value=''>>></option> (#ENV*{_options_upload_ftp}) </select> <!--editer_cheminftp--> </li> </ul>][(#ENV{_dir_upload_ftp}|et{#ENV{_options_upload_ftp}|non}|oui) <p class="infos"> [(#VAL{info_installer_ftp}|_T{#ARRAY{upload,#ENV*{_dir_upload_ftp}}})] #AIDER{ins_upload} </p> ] <div class='sourceup'> <:medias:bouton_download_depuis:> <a href='#' onclick="change_methode('#GET{domid}','upload');return false;"><:medias:bouton_download_local:></a> [(#ENV{mediatheque,''}|oui) | <a href='#' onclick="change_methode('#GET{domid}','mediatheque');return false;"><:medias:bouton_download_par_mediatheque:></a>] | <:medias:bouton_download_par_ftp:> | <a href='#' onclick="change_methode('#GET{domid}','distant');return false;"><:medias:bouton_download_sur_le_web:></a> </div> <p class='boutons'> [(#ENV*{_options_upload_ftp}|oui) <input class='submit' type="submit" name="joindre_ftp" value="<:bouton_choisir:>"/> ] </p> </div> ][ (#REM) Formulaire pour document distant ]<div class='joindre_mode#GET{domid}[(#GET{methode}|=={distant}|non)none-js]' id='joindre_distant#GET{domid}'> <ul> <li class='editer editer_url[ (#ENV**{erreurs}|table_valeur{url}|oui)erreur]'> <label for='url#GET{domid}'><:medias:info_referencer_doc_distant:></label>[ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{url})</span> ]<input class='text' type="text" name="url" value='#ENV{url}' id="url#GET{domid}"/> <!--editer_url--> </li> </ul> <div class='sourceup'> <:medias:bouton_download_depuis:> <a href='#' onclick="change_methode('#GET{domid}','upload');return false;"><:medias:bouton_download_local:></a> [(#ENV{mediatheque,''}|oui) | <a href='#' onclick="change_methode('#GET{domid}','mediatheque');return false;"><:medias:bouton_download_par_mediatheque:></a>] [(#ENV{proposer_ftp,''}|oui) | <a href='#' onclick="change_methode('#GET{domid}','ftp');return false;"><:medias:bouton_download_par_ftp:></a>] | <:medias:bouton_download_sur_le_web:> </div> <p class='boutons'><input class='submit' type="submit" name="joindre_distant" value="<:bouton_choisir:>"/></p> </div>[ (#REM) Formulaire pour deballer un zip ][<ul><li class='fieldset deballer_zip'>(#ENV**{erreurs}|table_valeur{lister_contenu_archive})</li></ul>] <script type='text/javascript'>/*<!#EVAL{chr(91)}CDATA#EVAL{chr(91)}*/ if (window.jQuery){ function change_methode(domid,methode){ var id = "#joindre_"+methode+domid; if (jQuery(id).is(':hidden')) { jQuery('div.joindre_mode'+domid+':visible').slideUp('fast'); jQuery(id).slideDown('fast'); } // placer en haut du formulaire les boutons submit par defaut correspondant a la methode active jQuery("#defaultsubmit"+domid).html('').append(jQuery(id).find('.boutons').eq(-1).find('input').clone(true)); } jQuery(function(){change_methode('#GET{domid}','#GET{methode}');}); } /*#EVAL{chr(93)}[(#EVAL{chr(93)})]>*/</script> inc-destinataires-message.html000066600000001363152503077350012500 0ustar00<div class="fake-input clearfix"> <span class="selected"> [(#REM) Premier element vide et cache qui sert de modele pour le js] <span class="dest" style="display: none;"><img src='#CHEMIN_IMAGE{supprimer-12.png}' width="12" height="12" onclick="jQuery(this).parent().remove();" /></span> <BOUCLE_d(POUR){tableau #ENV{#ENV{name}}}> <span class="dest"><input type="hidden" name="#ENV{name}[]" value="#VALEUR" /> <BOUCLE_a(AUTEURS){id_auteur=#VALEUR}{tout}>#NOM</BOUCLE_a>#VALEUR<//B_a> <img src='#CHEMIN_IMAGE{supprimer-12.png}' width="12" height="12" onclick="jQuery(this).parent().remove();" /></span> </BOUCLE_d> </span> <input type="text" class="text destinataires" data-name="#ENV{name}[]" value="" id="#ENV{name}" /> </div> configurer_messagerie_agenda.php000066600000002307152503077350013140 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2014 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined('_ECRIRE_INC_VERSION')) return; function formulaires_configurer_messagerie_agenda_charger_dist(){ foreach(array( "messagerie_agenda", ) as $m) $valeurs[$m] = $GLOBALS['meta'][$m]; return $valeurs; } function formulaires_configurer_messagerie_agenda_traiter_dist(){ $res = array('editable'=>true); foreach(array( "messagerie_agenda", ) as $m) if (!is_null($v=_request($m))) ecrire_meta($m, $v=='oui'?'oui':'non'); $res['message_ok'] = _T('config_info_enregistree'); return $res; } editer_message.html000066600000011420152503077350010423 0ustar00<div class="ajax formulaire_spip formulaire_editer formulaire_#FORM formulaire_#FORM-#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}} #SET{fl,organiseur} <ul> [(#ENV{_destiner}|oui) #SET{name,destinataires}#SET{obli,'obligatoire'}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"> <label for="#GET{name}">[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label>[ <span class='erreur_message'>(#GET{erreurs})</span> ] #INCLURE{fond=formulaires/inc-destinataires-message,name=#GET{name},env} </li> ] #SET{name,titre}#SET{obli,'obligatoire'}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"> <label for="#GET{name}">[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label>[ <span class='erreur_message'>(#GET{erreurs})</span> ]<input type="text" class="text" name="#GET{name}" value="#ENV*{#GET{name}}" id="#GET{name}" [(#HTML5|et{#GET{obli}})required='required']/> </li> <li class="editer editer_rv[ (#ENV**{erreurs}|table_valeur{rv}|oui)erreur]"> <div class="choix"> <input type='checkbox' name='rv' id='rv' value='oui' [(#ENV{rv}|=={oui}|oui)checked='checked'] onclick="if (this.checked==true) { $('li.editer_date_debut_fin').show('fast');} else {$('li.editer_date_debut_fin').hide('fast');}" /> <label for="rv"><:item_afficher_calendrier:></label>[ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{rv})</span> ] </div> </li> <li class="editer editer_date_debut editer_date_debut_fin[ (#ENV**{erreurs}|table_valeur{date_debut}|oui)erreur][(#ENV{rv}|=={oui}|non)none]"> <label for="date_debut"><:organiseur:info_message_date_debut:></label>[ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{date_debut})</span> ]<input type='text' class='text date' name='date_debut' id='date_debut' size='10' maxlength='10' value="[(#ENV{date_debut})]" /> <input type='text' class='text heure' name='heure_debut' id='heure_debut' size='4' maxlength='5' value="[(#ENV{heure_debut})]" /> </li> <li class="editer editer_date_fin editer_date_debut_fin[ (#ENV**{erreurs}|table_valeur{date_fin}|oui)erreur][(#ENV{rv}|=={oui}|non)none]"> <label for="date_fin" class='date_fin'><:organiseur:info_message_date_fin:></label>[ <span class='erreur_message'>(#ENV**{erreurs}|table_valeur{date_fin})</span> ]<input type='text' class='text date' name='date_fin' id='date_fin' size='10' maxlength='10' value="[(#ENV{date_fin})]" /> <input type='text' class='text heure' name='heure_fin' id='heure_fin' size='4' maxlength='5' value="[(#ENV{heure_fin})]" /> </li> #SET{name,texte}#SET{obli,'obligatoire'}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} <li class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"> <label for="#GET{name}">[(#GET{fl}|concat{':label_',#GET{name}}|_T)]</label>[ <span class='erreur_message'>(#GET{erreurs})</span> ]<textarea class="textarea" name="#GET{name}" rows="10"> #ENV*{#GET{name}}</textarea> </li> [(#REM) Piege a robots spammeurs ] #SET{name,antispam}#SET{obli,''}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} <li class="editer none editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]"> <label for="nobotnobot-#ID"><:antispam_champ_vide:></label>[ <span class='erreur_message'>(#GET{erreurs})</span> ]<input type="text" class="text" name="#GET{name}" value="#ENV*{#GET{name}}" id="nobotnobot-#ID" /> </li> </ul> <!--extra--> <p class='boutons'><span class='image_loading'> </span> [(#ENV{statut}|=={publie}|non) <input type='submit' class='submit' name="draft" value='<:organiseur:bouton_enregistrer_brouillon:>' /> ] <input type='submit' class='submit' name="send" value='<:organiseur:bouton_envoyer_message:>' /> </p> </div></form> #INCLURE{fond=formulaires/dateur/inc-dateur} ] </div> [(#ENV{_destiner}|oui) <script type="text/javascript"> if (typeof formulaire_editer_message_init=="undefined"){ var formulaire_editer_message_init=''; // eviter double dl si plusieurs forms dans la page var url_trouver_destinataire = '[(#URL_ACTION_AUTEUR{quete_autocomplete,#SESSION{id_auteur}}|replace{&,&})]'; jQuery.getScript('#CHEMIN{javascript/jquery.autocomplete.js}',function(){ jQuery.getScript('#CHEMIN{formulaires/editer_message.js}'); }); } </script> ]configurer_messagerie_agenda.html000066600000003123152503077350013312 0ustar00<div class="formulaire_spip formulaire_configurer formulaire_#FORM formulaire_#FORM-#ENV{id,nouveau}"> <h3 class='titrem'><img src="#CHEMIN_IMAGE{messagerie-24.png}" class="cadre-icone" /><:titre_messagerie_agenda:></h3> [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>] [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] [(#ENV{editable}) <p><:texte_messagerie_agenda:></p> <form method='post' action='#ENV{action}'><div> [(#REM) declarer les hidden qui declencheront le service du formulaire parametre : url d'action ] #ACTION_FORMULAIRE{#ENV{action}} <ul> #SET{name,messagerie_agenda}#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}} <li class="editer 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_messagerie_agenda:></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_messagerie_agenda:></label> </div> </li> </ul> [(#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' value='<:bouton_enregistrer:>' /></p> </div></form> ] </div> editer_message.js000066600000002456152503077350010104 0ustar00function formulaire_editer_message_set_dest(input,data,value){ console.log(data); console.log(value); var id_auteur; var box = jQuery(input).siblings('.selected'); if (data[1]) { id_auteur = data[1]; var nom = value; if (box.find('input[value='+id_auteur+']').length==0){ box.find('.on').removeClass('on'); box.append(" <span class='dest on'>" + value +"<input type='hidden' name='" + jQuery(input).attr('data-name') + "' value='"+id_auteur+"' /> " + $(box).find('span.dest:first').html() +"</span>"); } else box.find('input[value='+id_auteur+']').closest('span').addClass('on').siblings('.on').removeClass('on'); } jQuery(input).attr('value','');//.get(0).focus(); } function formulaire_editer_message_init(){ jQuery("input.destinataires:not(.autocompleted)").each(function(){ var me = this; jQuery(me) .autocomplete(url_trouver_destinataire, {minChars:2, mustMatchOrEmpty:1,autoFill:true,matchSubset:0, matchContains:1, cacheLength:10 }) .bind('result',function(e,data,value){return formulaire_editer_message_set_dest(me,data,value);}) .parent().bind('click',function(){jQuery(me).get(0).focus();}); }) .addClass('autocompleted'); } if (window.jQuery){ jQuery(function(){ formulaire_editer_message_init(); onAjaxLoad(formulaire_editer_message_init); }); } editer_message.php000066600000013033152503077350010250 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2014 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined('_ECRIRE_INC_VERSION')) return; include_spip('inc/editer'); function formulaires_editer_message_charger_dist($id_message='new',$type='message',$retour='',$accepter_email='oui',$destinataires='',$titre='',$texte=''){ include_spip('inc/autoriser'); if ( (!intval($id_message) AND !autoriser('envoyermessage',$type)) OR (intval($id_message) AND !autoriser('modifier','message',$id_message)) ) return false; $valeurs = formulaires_editer_objet_charger('message',$id_message,0,0,$retour,''); // les destinataires sont stockes en chaine separe par une virgule dans la base if (strlen($valeurs['destinataires'])) $valeurs['destinataires'] = explode(",",$valeurs['destinataires']); if (!intval($id_message)){ $valeurs['type'] = $type; $valeurs['destinataires'] = ($destinataires ? explode(",",$destinataires):array()); $valeurs['titre'] = $titre; $valeurs['texte'] = $texte; $t=time(); $valeurs["date_heure"] = date('Y-m-d H:i:00',$t); $valeurs["date_fin"] = date('Y-m-d H:i:00',$t+3600); $valeurs["rv"] = ""; } // dispatcher date et heure list($valeurs["date_debut"],$valeurs["heure_debut"]) = explode(' ',date('d/m/Y H:i',strtotime($valeurs["date_heure"]))); list($valeurs["date_fin"],$valeurs["heure_fin"]) = explode(' ',date('d/m/Y H:i',strtotime($valeurs["date_fin"]))); if (in_array($valeurs['type'],array('pb','affich'))) $valeurs['_destiner'] = ''; else $valeurs['_destiner'] = ' '; return $valeurs; } function formulaires_editer_message_verifier_dist($id_message='new',$type='message',$retour='',$accepter_email='oui',$destinataires='',$titre='',$texte=''){ $oblis = array('titre'); if (!_request('draft')) $oblis[] = 'texte'; if (intval($id_message) AND $t=sql_getfetsel('type','spip_messages','id_message='.intval($id_message))) $type = $t; if (!in_array($type,array('pb','affich')) // pas de destinataire obligatoire pour un brouillon AND !_request('draft')) $oblis['destinataires'] = 'destinataires'; if ($d=_request('destinataires')) set_request('destinataires',implode(',',$d)); $erreurs = formulaires_editer_objet_verifier('message',$id_message,$oblis); if ($d) set_request('destinataires',$d); include_spip('inc/messages'); if (!$erreurs['destinataires'] AND isset($oblis['destinataires']) AND $e = messagerie_verifier_destinataires(_request('destinataires'),array('accepter_email'=>($accepter_email=='oui')))) $erreurs['destinataires'] = implode(', ',$e); if (_request('rv')=='oui'){ include_spip('inc/date_gestion'); $date_debut = verifier_corriger_date_saisie('debut',true,$erreurs); $date_fin = verifier_corriger_date_saisie('fin',true,$erreurs); if ($date_debut AND $date_fin AND $date_fin<$date_debut) $erreurs['date_fin'] = _T('organiseur:erreur_date_avant_apres'); } else set_request('rv',''); return $erreurs; } function formulaires_editer_message_traiter_dist($id_message='new',$type='message',$retour='',$accepter_email='oui',$destinataires='',$titre='',$texte=''){ // preformater le post // fixer le type de message // sans modifier le type d'un message existant if (intval($id_message) AND $t=sql_getfetsel('type','spip_messages','id_message='.intval($id_message))) $type = $t; set_request('type',$type); // formater les destinataires $d = _request('destinataires'); if (!$d) $d = array(); include_spip('inc/messages'); $d = messagerie_nettoyer_destinataires($d); // si email non acceptes, extraire les seuls id_auteur de la liste proposee if ($accepter_email!=='oui'){ // separer id_auteur et email $d = messagerie_destiner($d); // ne conserver que les id_auteur $d = reset($d); } // reinjecter sous forme de chaine set_request('destinataires',implode(',',$d)); // fixer l'auteur ! set_request('id_auteur',$GLOBALS['visiteur_session']['id_auteur']); if (_request('rv')=='oui'){ include_spip('inc/date_gestion'); $erreurs = array(); $date_debut = verifier_corriger_date_saisie('debut',true,$erreurs); $date_fin = verifier_corriger_date_saisie('fin',true,$erreurs); set_request('date_heure',date('Y-m-d H:i:s',$date_debut)); set_request('date_fin',date('Y-m-d H:i:s',$date_fin)); } else { set_request('date_heure'); set_request('date_fin'); } // on gere par les traitements standard // la diffusion du message se fait par pipeline post_edition sur instituer // et notification $res = formulaires_editer_objet_traiter('message',$id_message,0,0,$retour,''); if ($id_message = $res['id_message'] AND !_request('draft')){ include_spip('action/editer_objet'); objet_modifier('message',$id_message,array('statut'=>'publie')); // apres en message envoyes, retourner sur la boite d'envoi plutot que sur le message if ($res['redirect']==generer_url_ecrire('message','id_message='.$id_message)) $res['redirect'] = generer_url_ecrire('messages','quoi=envoi'); } set_request('destinataires',explode(',',_request('destinataires'))); return $res; } configurer_compteur.html000066600000004452152503100030011511 0ustar00<div class='formulaire_spip formulaire_configurer formulaire_configurer_compteur' id='formulaire_configurer_compteur'> <h3 class='titrem'>[(#CHEMIN_IMAGE{statistique-24.png}|balise_img{'',cadre-icone})]<:statistiques:info_forum_statistiques:> #AIDER{confstat}</h3> [<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>] [<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>] <form action="#ENV{action}#formulaire_configurer_compteur" method="post"><div> [(#ACTION_FORMULAIRE{#ENV{action}})] <ul> <li class='editer configurer_activer_statistiques[ (#ENV**{erreurs}|table_valeur{activer_statistiques}|oui)erreur]'> [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{activer_statistiques})</span>] <div class='choix'> <input class='checkbox' type="checkbox" name="activer_statistiques" value='oui' [checked="(#ENV{activer_statistiques}|=={oui}|?{checked})"] id="activer_statistiques"/> <label for="activer_statistiques"><:statistiques:item_gerer_statistiques:></label> </div> </li> <li class='editer configurer_activer_captures_referers[ (#ENV**{erreurs}|table_valeur{activer_captures_referers}|oui)erreur]'> <div class='explication'><:statistiques:info_question_vignettes_referer:></div> [<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{activer_captures_referers})</span>] <div class='choix'> <input class='checkbox' type="checkbox" name="activer_captures_referers" value='oui' [checked="(#ENV{activer_captures_referers}|=={oui}|?{checked})"] id="activer_captures_referers"/> <label for="activer_captures_referers"><:statistiques:info_question_vignettes_referer_oui:></label> </div> </li> </ul> <p class='boutons'><input class='submit' type="submit" name="ok" value="<:bouton_enregistrer:>"/></p> </div></form> </div> <script type='text/javascript'> function actualise_capture_referers(){ if (jQuery('#activer_statistiques').prop('checked')) jQuery('#formulaire_configurer_compteur li.configurer_activer_captures_referers').show(); else jQuery('#formulaire_configurer_compteur li.configurer_activer_captures_referers').hide(); } jQuery(document).ready(function(){ jQuery('#activer_statistiques').bind('change',actualise_capture_referers); actualise_capture_referers(); }); </script> configurer_compteur.php000066600000002671152503100030011335 0ustar00<?php /***************************************************************************\ * SPIP, Systeme de publication pour l'internet * * * * Copyright (c) 2001-2014 * * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James * * * * Ce programme est un logiciel libre distribue sous licence GNU/GPL. * * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. * \***************************************************************************/ if (!defined("_ECRIRE_INC_VERSION")) return; function formulaires_configurer_compteur_charger_dist(){ $valeurs = array(); $valeurs['activer_statistiques'] = $GLOBALS['meta']['activer_statistiques']; $valeurs['activer_captures_referers'] = $GLOBALS['meta']['activer_captures_referers']; return $valeurs; } function formulaires_configurer_compteur_verifier_dist(){ $erreurs = array(); // les checkbox foreach(array('activer_statistiques','activer_captures_referers') as $champ) if (_request($champ)!='oui') set_request($champ,'non'); return $erreurs; } function formulaires_configurer_compteur_traiter_dist(){ include_spip('inc/config'); appliquer_modifs_config(); return array('message_ok'=>_T('config_info_enregistree')); } ?>
/home/etiennec/www/../www/b594c/../f1f54/formulaires.tar