
@ -1 +1,37 @@
|
||||
* text=auto !eol |
||||
action/supprimer_lettre.php -text |
||||
base/malettre.php -text |
||||
formulaires/configurer_malettre.html -text |
||||
formulaires/editer_malettre.html -text |
||||
formulaires/editer_malettre.php -text |
||||
formulaires/envoi_malettre.html -text |
||||
formulaires/envoi_malettre.php -text |
||||
images/banner_newsletter_defaut.png -text |
||||
images/malettre-16.png -text |
||||
images/malettre-24.png -text |
||||
images/malettre-36.png -text |
||||
images/malettre-48.png -text |
||||
images/malettre.png -text |
||||
inclure/agenda_lettre.html -text |
||||
inclure/liste_lettre.html -text |
||||
lang/malettre_fr.php -text |
||||
lang/malettre_nl.php -text |
||||
lang/paquet-malettre_fr.php -text |
||||
lib/class.phpmailer.php -text |
||||
/malettre_administrations.php -text |
||||
/malettre_autoriser.php -text |
||||
/malettre_fonctions.php -text |
||||
/paquet.xml -text |
||||
prive/listes/inc-lister-articlesmalettre.html -text |
||||
prive/listes/inc-lister-evenementsmalettre.html -text |
||||
prive/squelettes/contenu/configurer_malettre.html -text |
||||
prive/squelettes/contenu/malettre.html -text |
||||
prive/squelettes/contenu/malettre_archive.html -text |
||||
prive/squelettes/contenu/malettre_envoi.html -text |
||||
prive/squelettes/navigation/malettre.html -text |
||||
prive/squelettes/navigation/malettre_archive.html -text |
||||
prive/squelettes/navigation/malettre_envoi.html -text |
||||
prive/themes/spip/images/malettre-16.png -text |
||||
prive/themes/spip/images/malettre-24.png -text |
||||
public/malettre.html -text |
||||
public/malettre_txt.html -text |
||||
|
@ -0,0 +1,35 @@
|
||||
<?php |
||||
|
||||
if (!defined("_ECRIRE_INC_VERSION")) return; |
||||
|
||||
function action_supprimer_lettre_dist() { |
||||
$securiser_action = charger_fonction('securiser_action', 'inc'); |
||||
$arg = $securiser_action(); |
||||
|
||||
if (!preg_match(",^(\d+)$,", $arg, $r)) { |
||||
spip_log("action_supprimer_lettre_dist $arg pas compris"); |
||||
} else { |
||||
action_supprimer_lettre_post($r[1]); |
||||
} |
||||
} |
||||
|
||||
function action_supprimer_lettre_post($id_malettre) { |
||||
$id_malettre = intval($id_malettre); |
||||
|
||||
// recuperer les urls pour les effacer |
||||
$result = sql_select('*',"spip_meslettres", "id_malettre=" . intval($id_malettre),'','',1); |
||||
while ($row = sql_fetch($result)){ |
||||
$url_html = $row['url_html']; |
||||
spip_unlink(_DIR_IMG .$url_html); |
||||
$url_txt = $row['url_txt']; |
||||
spip_unlink(_DIR_IMG.$url_txt); |
||||
} |
||||
|
||||
// effacer base |
||||
sql_delete("spip_meslettres", "id_malettre=" . intval($id_malettre)); |
||||
|
||||
include_spip('inc/invalideur'); |
||||
suivre_invalideur("id='id_malettre/$id_malettre'"); |
||||
|
||||
} |
||||
?> |
@ -0,0 +1,42 @@
|
||||
<?php |
||||
|
||||
if (!defined("_ECRIRE_INC_VERSION")) return; |
||||
|
||||
function malettre_declarer_tables_interfaces($interface){ |
||||
$interface['table_des_tables']['meslettres']='meslettres'; |
||||
return $interface; |
||||
} |
||||
|
||||
|
||||
function malettre_declarer_tables_objets_sql($tables){ |
||||
|
||||
/* Declaration de la table archive des lettres */ |
||||
$tables['spip_meslettres'] = array( |
||||
/* Declarations principales */ |
||||
'table_objet' => 'meslettres', |
||||
'table_objet_surnoms' => array('meslettres'), |
||||
'type' => 'meslettres', |
||||
'type_surnoms' => array('meslettres'), |
||||
|
||||
/* La table */ |
||||
'field'=> array( |
||||
"id_malettre" => "bigint(21) NOT NULL", |
||||
"titre" => "text NOT NULL", |
||||
"lang" => "varchar(255) NOT NULL", |
||||
"url_html" => "varchar(255) NULL", |
||||
"url_txt" => "varchar(255) NOT NULL", |
||||
"date" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL" |
||||
), |
||||
'key' => array( |
||||
"PRIMARY KEY" => "id_malettre", |
||||
), |
||||
'principale' => 'oui' |
||||
|
||||
); |
||||
|
||||
|
||||
return $tables; |
||||
} |
||||
|
||||
|
||||
?> |
@ -0,0 +1,134 @@
|
||||
<div class="ajax formulaire_spip formulaire_configurer formulaire_#FORM formulaire_#FORM-#ENV{id,nouveau}"> |
||||
<h3 class="titrem"> |
||||
[(#CHEMIN{images/malettre-24.png}|image_reduire{24}|inserer_attribut{class,cadre-icone}|inserer_attribut{alt,''})] |
||||
<:malettre:config:></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}) |
||||
<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> |
||||
[(#REM) ------------------------ EDITO ------------------------ ] |
||||
#SET{erreurs,#ENV**{erreurs}|table_valeur{id_article_edito}} |
||||
<li class="editer_id_article_edito[ (#GET{erreurs}|oui)erreur]"> |
||||
<h3 class="legend"><:malettre:edito:></h3> |
||||
<label><:malettre:edito_article_numero:></label> |
||||
[<span class='erreur_message'>(#GET{erreurs})</span>] |
||||
<input type="text" name="id_article_edito" class="text" size="3" id='id_article_edito' value="[(#ENV{id_article_edito}|intval)]" /> |
||||
[<a href="[(#URL_ECRIRE{article}|parametre_url{id_article,#ENV{id_article_edito}})]">(#INFO_TITRE{article,#ENV{id_article_edito}})</a>] |
||||
</li> |
||||
|
||||
[(#REM) ------------------------ CHOIX OBJETS ------------------------ ] |
||||
<li><h3 class="legend"><:malettre:choix_objets:></h3></li> |
||||
|
||||
#SET{erreurs,#ENV**{erreurs}|table_valeur{choix_objets}} |
||||
<li class="editer_choix_objets[ (#GET{erreurs}|oui)erreur]"> |
||||
<label><:malettre:choix_objets:></label> |
||||
[<span class='erreur_message'>(#GET{erreurs})</span>] |
||||
<div class="choix"> |
||||
<input type="checkbox" name="lister_articles" class="checkbox" value="on" id='lister_articles'[ (#ENV{lister_articles}|oui)checked="checked"] /> |
||||
<label for='lister_articles'><:malettre:lister_articles:></label> |
||||
</div> |
||||
|
||||
[(#PLUGIN{agenda}|oui) |
||||
<div class="choix"> |
||||
<input type="checkbox" name="lister_evenements" class="checkbox" value="on" id='lister_evenements'[ (#ENV{lister_evenements}|oui)checked="checked"] /> |
||||
<label for='lister_evenements'><:malettre:lister_evenements:></label> |
||||
</div> |
||||
] |
||||
</li> |
||||
|
||||
[(#REM) ------------------------ EXPEDITEURS ------------------------ ] |
||||
<li class="fieldset fieldset_expediteurs"> |
||||
<fieldset> |
||||
<h3 class="legend"><:malettre:expediteurs:></h3> |
||||
<table> |
||||
<tr> |
||||
<td></td> |
||||
<td><:malettre:nom:></td> |
||||
<td><:malettre:email:></td> |
||||
</tr> |
||||
<tr> |
||||
<td><:malettre:adresse{num=1}:></td> |
||||
<td><input type="text" name="expediteur_nom1" value="#ENV{expediteur_nom1, pierre dupond}" id="expediteur_nom1" /></td> |
||||
<td><input type="text" name="expediteur_email1" value="#ENV{expediteur_email1, p@mondomaine.org}" id="expediteur_email1" /></td> |
||||
</tr> |
||||
<tr> |
||||
<td><:malettre:adresse{num=2}:></td> |
||||
<td><input type="text" name="expediteur_nom2" value="#ENV{expediteur_nom2,}" id="expediteur_nom2" /></td> |
||||
<td><input type="text" name="expediteur_email2" value="#ENV{expediteur_email2,}" id="expediteur_email2" /></td> |
||||
</tr> |
||||
<tr> |
||||
<td><:malettre:adresse{num=3}:></td> |
||||
<td><input type="text" name="expediteur_nom3" value="#ENV{expediteur_nom3,}" id="expediteur_nom3" /></td> |
||||
<td><input type="text" name="expediteur_email3" value="#ENV{expediteur_email3,}" id="expediteur_email3" /></td> |
||||
</tr> |
||||
</table> |
||||
</fieldset> |
||||
</li> |
||||
|
||||
|
||||
[(#REM) ------------------------ DESTINATAIRES ------------------------ ] |
||||
<li class="fieldset fieldset_destinataires"> |
||||
<fieldset> |
||||
<h3 class="legend">Destinataires</h3> |
||||
<table> |
||||
<tr> |
||||
<td></td> |
||||
<td><:malettre:nom:></td> |
||||
<td><:malettre:email:></td> |
||||
</tr> |
||||
<tr> |
||||
<td><:malettre:adresse{num=1}:></td> |
||||
<td><input type="text" name="adresse_nom1" value="#ENV{adresse_nom1, lettre d'information}" id="adresse_nom1" /></td> |
||||
<td><input type="text" name="adresse_email1" value="#ENV{adresse_email1, info@liste.mondomaine.org}" id="adresse_email1" /></td> |
||||
</tr> |
||||
<tr> |
||||
<td><:malettre:adresse{num=2}:></td> |
||||
<td><input type="text" name="adresse_nom2" value="#ENV{adresse_nom2,}" id="adresse_nom2" /></td> |
||||
<td><input type="text" name="adresse_email2" value="#ENV{adresse_email2,}" id="adresse_email2" /></td> |
||||
</tr> |
||||
<tr> |
||||
<td><:malettre:adresse{num=3}:></td> |
||||
<td><input type="text" name="adresse_nom3" value="#ENV{adresse_nom3,}" id="adresse_nom3" /></td> |
||||
<td><input type="text" name="adresse_email3" value="#ENV{adresse_email3,}" id="adresse_email3" /></td> |
||||
</tr> |
||||
<tr> |
||||
<td><:malettre:adresse{num=4}:></td> |
||||
<td><input type="text" name="adresse_nom4" value="#ENV{adresse_nom4,}" id="adresse_nom4" /></td> |
||||
<td><input type="text" name="adresse_email4" value="#ENV{adresse_email4,}" id="adresse_email4" /></td> |
||||
</tr> |
||||
<tr> |
||||
<td><:malettre:adresse{num=5}:></td> |
||||
<td><input type="text" name="adresse_nom5" value="#ENV{adresse_nom5,}" id="adresse_nom5" /></td> |
||||
<td><input type="text" name="adresse_email5" value="#ENV{adresse_email5,}" id="adresse_email5" /></td> |
||||
</tr> |
||||
<tr> |
||||
<td><:malettre:adresse{num=6}:></td> |
||||
<td><input type="text" name="adresse_nom6" value="#ENV{adresse_nom6,}" id="adresse_nom6" /></td> |
||||
<td><input type="text" name="adresse_email6" value="#ENV{adresse_email6,}" id="adresse_email6" /></td> |
||||
</tr> |
||||
<tr> |
||||
<td><:malettre:adresse{num=7}:></td> |
||||
<td><input type="text" name="adresse_nom7" value="#ENV{adresse_nom7,}" id="adresse_nom7" /></td> |
||||
<td><input type="text" name="adresse_email7" value="#ENV{adresse_email7,}" id="adresse_email7" /></td> |
||||
</tr> |
||||
</table> |
||||
</fieldset> |
||||
</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> |
@ -0,0 +1,38 @@
|
||||
<div class="formulaire_spip formulaire_malettre"> |
||||
|
||||
[<div class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</div>] |
||||
[<div class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</div>] |
||||
|
||||
[(#EDITABLE|oui) |
||||
<form action="#ENV{action}" method="post"><div> |
||||
#ACTION_FORMULAIRE{#ENV{action}} |
||||
<ul style="padding:5px;"> |
||||
<!-- lang --> |
||||
[(#SAISIE{hidden,lang_select,valeur_forcee=#LANG})] |
||||
|
||||
<!-- titre --> |
||||
[(#SAISIE{input,lettre_title,size=25,maxlength=255,label=<strong><:malettre:compose_sujet:></strong>})] |
||||
|
||||
<!-- edito --> |
||||
[(#CONFIG{malettre/id_article_edito}|=={0}|non) |
||||
<h5><:malettre:compose_contenu:> - <a href="[(#URL_ECRIRE{article}|parametre_url{id_article,#CONFIG{malettre/id_article_edito}})]"><:malettre:compose_edito:></a></h5> |
||||
<div style="background:#eee;padding:10px;margin:0 10px 10px 10px;border:1px solid #999;"> |
||||
[(#INFO_TEXTE{article,#CONFIG{malettre/id_article_edito}})] |
||||
</div> |
||||
] |
||||
|
||||
<!-- liste articles --> |
||||
[(#CONFIG{malettre/lister_articles}|=={on}|oui) |
||||
<INCLURE{fond=prive/listes/inc-lister-articlesmalettre} />] |
||||
|
||||
<!-- liste evt --> |
||||
[(#CONFIG{malettre/lister_evenements}|=={on}|oui) |
||||
<INCLURE{fond=prive/listes/inc-lister-evenementsmalettre} />] |
||||
|
||||
|
||||
</ul> |
||||
<p class="boutons"><input type="submit" class="submit" value="<:malettre:compose_submit:>" /></p> |
||||
</div></form> |
||||
] |
||||
|
||||
</div> |
@ -0,0 +1,132 @@
|
||||
<?php |
||||
/** |
||||
* Formulaire pour composer la lettre |
||||
*/ |
||||
|
||||
include_spip('inc/actions'); |
||||
include_spip('inc/editer'); |
||||
|
||||
/** |
||||
* Chargement des valeurs par dรฉfaut du formulaire |
||||
*/ |
||||
function formulaires_editer_malettre_charger_dist(){ |
||||
$contexte = array(); |
||||
return $contexte; |
||||
} |
||||
|
||||
/** |
||||
* Vรฉrification des valeurs du formulaire |
||||
*/ |
||||
function formulaires_editer_malettre_verifier_dist(){ |
||||
$erreurs = array(); |
||||
return $erreurs; |
||||
} |
||||
|
||||
/** |
||||
* Traitement des valeurs du formulaire |
||||
*/ |
||||
function formulaires_editer_malettre_traiter_dist(){ |
||||
|
||||
include_spip("inc/charsets"); |
||||
include_spip("inc_presentation"); |
||||
|
||||
// chemin |
||||
$path = _DIR_IMG; |
||||
$path_archive = "lettre"; |
||||
$path_archive_full = $path.$path_archive; |
||||
$path_url = lire_meta("adresse_site"); |
||||
$path_url_archive = $path_url."/IMG"; |
||||
|
||||
$p=explode(basename(_DIR_PLUGINS)."/",str_replace('\\','/',realpath(dirname(__file__)))); |
||||
define('_DIR_PLUGIN_MALETTRE',(_DIR_PLUGINS.end($p))); |
||||
$path_plugin = dirname(__file__)."/../"; |
||||
|
||||
$errorFlag = false; |
||||
|
||||
// ancien editer_malettre |
||||
$lettre_title = trim(strip_tags(_request('lettre_title'))); |
||||
$lettre_title = str_replace("\"","'", $lettre_title); |
||||
|
||||
$lang = _request('lang_select'); |
||||
if ($lang=="") |
||||
$lang = $GLOBALS['meta']['langue_site']; |
||||
|
||||
|
||||
// VERSION HTML & TXT |
||||
$sourceHTML = ""; |
||||
$sourceTXT = ""; |
||||
$selection = ""; // stocke les id des articles retenus separee par une virgule |
||||
|
||||
|
||||
// radio button |
||||
$add = _request('add'); |
||||
if (is_array($add)) |
||||
$selection = implode(",", $add); |
||||
|
||||
// csv articles |
||||
$art_csv = _request('art_csv'); |
||||
$csv = explode(",", $art_csv); |
||||
if (is_array($csv)) { |
||||
foreach ($csv as $value2) { |
||||
$selection .= ",".trim($value2); |
||||
} |
||||
} |
||||
// radio button |
||||
$addeve = _request('addeve'); |
||||
if (is_array($addeve)) |
||||
$selection_eve = implode(",", $addeve); |
||||
|
||||
// csv evenements |
||||
$eve_csv = _request('eve_csv'); |
||||
$csv_eve = explode(",", $eve_csv); |
||||
if (is_array($csv_eve)) { |
||||
foreach ($csv_eve as $value2) { |
||||
$selection_eve .= ",".trim($value2); |
||||
} |
||||
} |
||||
|
||||
// edito |
||||
$id_article_edito = lire_config("malettre/id_article_edito"); |
||||
|
||||
// calcul du patron |
||||
$flag_preserver = true; // empecher ajout feuille spip_admin.css |
||||
$sourceHTML .= malettre_get_contents("malettre",$id_article_edito,$selection,$selection_eve,$lang); |
||||
$sourceTXT .= malettre_get_contents("malettre_txt",$id_article_edito,$selection,$selection_eve,$lang); |
||||
|
||||
//$message = "titre: $lettre_title / sel; $selection / sek, $selection_eve / <textarea>$sourceHTML</textarea>"; |
||||
|
||||
// ecriture fichier |
||||
if ($handle = fopen($path_archive_full."/.malettre.html", w)) { |
||||
fwrite($handle, $sourceHTML); |
||||
fclose($handle); |
||||
|
||||
if ($handle = fopen($path_archive_full."/.malettre_txt.html", w)) { |
||||
fwrite($handle, $sourceTXT); |
||||
fclose($handle); |
||||
} else { |
||||
$errorFlag = true; |
||||
$message = _T('malettre:erreur_ecriture')."($path.$path_archive)"; |
||||
} |
||||
} else { |
||||
$errorFlag = true; |
||||
$message = _T('malettre:erreur_ecriture')."($path.$path_archive)"; |
||||
} |
||||
|
||||
|
||||
|
||||
$redirect = ""; |
||||
// pas d'erreur, on passe ร l'รฉtape suivante: choix destinaires |
||||
if (!$errorFlag) { |
||||
refuser_traiter_formulaire_ajax(); |
||||
$redirect = parametre_url(generer_url_ecrire('malettre_envoi'),'lettre_title',$lettre_title ); |
||||
} |
||||
|
||||
// message |
||||
return array( |
||||
"editable" => false, |
||||
"message_ok" => "$message", |
||||
'redirect' => $redirect |
||||
); |
||||
} |
||||
|
||||
?> |
@ -0,0 +1,58 @@
|
||||
<div class="formulaire_spip formulaire_envoi_malettre"> |
||||
|
||||
[<div class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</div>] |
||||
[<div class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</div>] |
||||
|
||||
[(#EDITABLE|oui) |
||||
<form action="#ENV{action}" method="post"><div> |
||||
#ACTION_FORMULAIRE{#ENV{action}} |
||||
<ul style="padding:5px;"> |
||||
<!-- lang --> |
||||
[(#SAISIE{hidden,lang_select,valeur_forcee=#LANG})] |
||||
|
||||
<!-- titre --> |
||||
[(#SAISIE{input,lettre_title,size=25,maxlength=255,label=<strong><:malettre:compose_sujet:></strong>})] |
||||
|
||||
<!-- expediteur --> |
||||
#SET{expedi,#ARRAY} |
||||
[(#CONFIG{malettre/expediteur_email1}|oui) [(#SET{expedi,#GET{expedi}|array_merge{#ARRAY{i1, #CONFIG{malettre/expediteur_nom1} <#CONFIG{malettre/expediteur_email1}> }}})] ] |
||||
[(#CONFIG{malettre/expediteur_email2}|oui) [(#SET{expedi,#GET{expedi}|array_merge{#ARRAY{i2, #CONFIG{malettre/expediteur_nom2} <#CONFIG{malettre/expediteur_email2}> }}})] ] |
||||
[(#CONFIG{malettre/expediteur_email3}|oui) [(#SET{expedi,#GET{expedi}|array_merge{#ARRAY{i3', #CONFIG{malettre/expediteur_nom3} <#CONFIG{malettre/expediteur_email3}> }}})] ] |
||||
|
||||
[(#SAISIE{selection,expediteur,cacher_option_intro=oui,label=<strong><:malettre:expediteur:></strong>,datas=#GET{expedi}})] |
||||
[(#SAISIE{input,expediteur_more,size=25,maxlength=255,label=<:malettre:autre:><br /><i>(<:malettre:email_seulement:>)</i>})] |
||||
|
||||
<!-- destinataires --> |
||||
#SET{desti,#ARRAY} |
||||
<!-- FIXME passerelle vers plugin mes abonnes --> |
||||
[(#CONFIG{malettre/adresse_email1}|oui) [(#SET{desti,#GET{desti}|array_merge{#ARRAY{i1, #CONFIG{malettre/adresse_nom1} <#CONFIG{malettre/adresse_email1}> }}})] ] |
||||
[(#CONFIG{malettre/adresse_email2}|oui) [(#SET{desti,#GET{desti}|array_merge{#ARRAY{i2, #CONFIG{malettre/adresse_nom2} <#CONFIG{malettre/adresse_email2}> }}})] ] |
||||
[(#CONFIG{malettre/adresse_email3}|oui) [(#SET{desti,#GET{desti}|array_merge{#ARRAY{i3, #CONFIG{malettre/adresse_nom3} <#CONFIG{malettre/adresse_email3}> }}})] ] |
||||
[(#CONFIG{malettre/adresse_email4}|oui) [(#SET{desti,#GET{desti}|array_merge{#ARRAY{i4, #CONFIG{malettre/adresse_nom4} <#CONFIG{malettre/adresse_email4}> }}})] ] |
||||
[(#CONFIG{malettre/adresse_email5}|oui) [(#SET{desti,#GET{desti}|array_merge{#ARRAY{i5, #CONFIG{malettre/adresse_nom5} <#CONFIG{malettre/adresse_email5}> }}})] ] |
||||
[(#CONFIG{malettre/adresse_email6}|oui) [(#SET{desti,#GET{desti}|array_merge{#ARRAY{i6, #CONFIG{malettre/adresse_nom6} <#CONFIG{malettre/adresse_email6}> }}})] ] |
||||
[(#CONFIG{malettre/adresse_email7}|oui) [(#SET{desti,#GET{desti}|array_merge{#ARRAY{i7, #CONFIG{malettre/adresse_nom7} <#CONFIG{malettre/adresse_email7}> }}})] ] |
||||
|
||||
[(#SAISIE{checkbox,desti,label=<strong><:malettre:destinataires:></strong>,datas=#GET{desti}})] |
||||
[(#SAISIE{input,desti_more,size=25,maxlength=255,label=<:malettre:autre:><br /><i>(<:malettre:email_seulement:>)</i>})] |
||||
|
||||
|
||||
</ul> |
||||
|
||||
<p class="boutons"><input type="submit" class="submit" value="<:malettre:lettre_envoyer:>" /></p> |
||||
|
||||
<br /> |
||||
<h5><:malettre:apercu:></h5> |
||||
<iframe height="400" style="overflow:scroll;width:98%;margin-bottom:15px;" src="#CHEMIN{IMG/lettre/.malettre.html}?nocache=#DATE"></iframe> |
||||
|
||||
<h5><:malettre:version_html:></h5> |
||||
<textarea cols='70' rows='20'>#ENV{sourcehtml}</textarea> |
||||
|
||||
<h5><:malettre:version_txt:></h5> |
||||
<textarea cols='70' rows='20'>#ENV{sourcetxt}</textarea> |
||||
|
||||
|
||||
</div></form> |
||||
] |
||||
|
||||
</div> |
@ -0,0 +1,273 @@
|
||||
<?php |
||||
/** |
||||
* Formulaire pour envoi la lettre (avec ou sa facteur) |
||||
*/ |
||||
|
||||
include_spip('inc/actions'); |
||||
include_spip('inc/editer'); |
||||
include_spip('inc/distant'); |
||||
|
||||
|
||||
/** |
||||
* Chargement des valeurs par dรฉfaut du formulaire |
||||
*/ |
||||
function formulaires_envoi_malettre_charger_dist(){ |
||||
if (_request('lettre_title')) |
||||
$lettre_title = strip_tags(_request('lettre_title')); |
||||
else $lettre_title = ""; |
||||
|
||||
|
||||
$sourcehtml = recuperer_page(lire_meta("adresse_site")."/IMG/lettre/.malettre.html"); |
||||
$sourcetxt = recuperer_page(lire_meta("adresse_site")."/IMG/lettre/.malettre_txt.html"); |
||||
|
||||
$contexte = array( |
||||
'lettre_title'=>$lettre_title, |
||||
'expediteur' => '', |
||||
'expediteur_more' => '', |
||||
'desti' => '', |
||||
'desti_more' => '', |
||||
'sourcehtml'=>$sourcehtml, |
||||
'sourcetxt'=>$sourcetxt |
||||
); |
||||
|
||||
return $contexte; |
||||
|
||||
} |
||||
|
||||
/** |
||||
* Vรฉrification des valeurs du formulaire |
||||
*/ |
||||
function formulaires_envoi_malettre_verifier_dist(){ |
||||
$erreurs = array(); |
||||
|
||||
if (_request('lettre_title')=="") |
||||
$erreurs['lettre_title'] = _T("malettre:obligatoire"); |
||||
if ((_request('expediteur')=="") AND (_request('expediteur_more')=="")) |
||||
$erreurs['expediteur'] = _T("malettre:obligatoire"); |
||||
if ((_request('desti')=="") AND (_request('desti_more')=="")) |
||||
$erreurs['desti'] = _T("malettre:obligatoire"); |
||||
|
||||
return $erreurs; |
||||
} |
||||
|
||||
/** |
||||
* Traitement des valeurs du formulaire |
||||
*/ |
||||
function formulaires_envoi_malettre_traiter_dist(){ |
||||
|
||||
include_spip("inc/charsets"); |
||||
include_spip("inc_presentation"); |
||||
include_spip('inc/config'); |
||||
|
||||
|
||||
$message = ""; |
||||
|
||||
// -------------------------------- |
||||
// chemin |
||||
$path = _DIR_IMG; |
||||
$path_archive = "lettre"; |
||||
$path_archive_full = $path.$path_archive; |
||||
$path_url = lire_meta("adresse_site"); |
||||
$path_url_archive = $path_url."/IMG"; |
||||
|
||||
$p=explode(basename(_DIR_PLUGINS)."/",str_replace('\\','/',realpath(dirname(__file__)))); |
||||
define('_DIR_PLUGIN_MALETTRE',(_DIR_PLUGINS.end($p))); |
||||
$path_plugin = dirname(__file__)."/../"; |
||||
|
||||
|
||||
// |
||||
// envoi de la lettre |
||||
// |
||||
|
||||
// lang |
||||
$lang = _request('lang_select'); |
||||
if ($lang=="") |
||||
$lang = $GLOBALS['meta']['langue_site']; |
||||
|
||||
// titre |
||||
$lettre_title = trim(strip_tags(_request('lettre_title'))); |
||||
$lettre_title = str_replace("\"","'", $lettre_title); |
||||
if ($lettre_title == "") { // ร supprimer ou integrer ou multilingue ? |
||||
$months=array(1=>'Janvier', 2=>'Fevrier', 3=>'Mars', 4=>'Avril', 5=>'Mai', 6=>'Juin', 7=>'Juillet', 8=>'Aout', 9=>'Septembre', 10=>'Octobre', 11=>'Novembre', 12=>'Decembre'); |
||||
$today = getdate(mktime()-(24*3600)); |
||||
$sujet = "Les nouveautes de ".$months[$today[mon]]." ".date("Y"); |
||||
} else { |
||||
$sujet = $lettre_title; |
||||
} |
||||
|
||||
|
||||
// hash |
||||
$lettre_hash = substr(md5(time()),0,5); |
||||
$url_lettre_archive_short = "lettre_".date("Ymd")."_".$lettre_hash."_"._request('lang_select').".html"; |
||||
$url_lettre_archive_txt_short = "lettre_".date("Ymd")."_".$lettre_hash."_"._request('lang_select').".txt"; |
||||
$url_lettre_archive = "$path_url_archive/$path_archive/$url_lettre_archive_short"; |
||||
$url_lettre_archive_txt = "$path_url_archive/$path_archive/$url_lettre_archive_txt_short"; |
||||
|
||||
// recup contenu HTML |
||||
$texte = $path_archive_full."/.malettre.html"; |
||||
$fr=fopen($texte,"r"); |
||||
while(!feof($fr)){ |
||||
$recup = ''; |
||||
while(!feof($fr)) |
||||
$recup .= fgets($fr,1024); |
||||
} |
||||
fclose($fr); |
||||
$recup = str_replace("{URL_MALETTRE}",$url_lettre_archive,$recup); |
||||
$recup = str_replace("{TITRE_MALETTRE}",$sujet,$recup); |
||||
|
||||
// recup contenu TXT |
||||
$texte = $path_archive_full."/.malettre_txt.html"; |
||||
$fr=fopen($texte,"r"); |
||||
while(!feof($fr)){ |
||||
$recup_txt = ''; |
||||
while(!feof($fr)) |
||||
$recup_txt .= fgets($fr,1024); |
||||
} |
||||
fclose($fr); |
||||
$recup_txt = str_replace("{URL_MALETTRE}",$url_lettre_archive,$recup_txt); |
||||
|
||||
// recup expediteur |
||||
$exp_email = _request('expediteur_more'); |
||||
if ($exp_email=="") { |
||||
$id_expediteur = intval(substr(_request('expediteur'),1)); |
||||
$exp_name = lire_config("malettre/expediteur_nom$id_expediteur"); |
||||
$exp_mail = lire_config("malettre/expediteur_email$id_expediteur"); |
||||
if ($exp_mail=="") |
||||
die("expediteur inconnu"); |
||||
|
||||
} else { |
||||
$exp_name = $exp_mail; |
||||
} |
||||
|
||||
|
||||
|
||||
// recup destinataire |
||||
$destinataire = array(); |
||||
$desti = _request('desti'); |
||||
foreach ($desti as $desti_item) { // on lit la config pour retrouver l'email |
||||
$id_desti = intval(substr($desti_item,1)); |
||||
$desti_mail = lire_config("malettre/adresse_email$id_desti"); |
||||
if ($desti_mail !="") |
||||
$destinataire[] = $desti_mail; |
||||
} |
||||
|
||||
$desti_more = _request('desti_more'); |
||||
if ($desti_more!="") $destinataire[] = $desti_more; |
||||
/* FIXME: |
||||
if (_request('mes_abonnes')=='oui') { |
||||
if ($resultats = sql_select('email', 'spip_mesabonnes')) { |
||||
while ($res = sql_fetch($resultats)) |
||||
$desti[] = $res['email']; |
||||
} |
||||
} |
||||
*/ |
||||
|
||||
|
||||
$message = "<h3>"._T('malettre:envoi')." <i style='color:#999;'>$sujet</i></h3>\n"; |
||||
$message = "<div style='border:1px solid;background:#eee;margin:10px 0;padding:10px;font-family:arial,sans-serif;font-size:0.9em;'>"; |
||||
|
||||
// envoi lettre |
||||
// a ameliorer grandement flood |
||||
// utiliser une methode ajax pour temporiser l'envoi par flot |
||||
// ou tout simple deleger a facteur ? |
||||
$i = 0; |
||||
$j = 0; |
||||
if (is_array($destinataire)) { |
||||
foreach ($destinataire as $k=>$adresse) { // envoi a tous les destinataires |
||||
if (!defined('_DIR_PLUGIN_FACTEUR')){ |
||||
include_spip("lib/class.phpmailer"); // mettre ร jour http://code.google.com/a/apache-extras.org/p/phpmailer/ ou necessite facteur ? |
||||
$mail = new PHPMailer(); |
||||
|
||||
$mail->From = "$exp_email"; |
||||
$mail->FromName = "$exp_name"; |
||||
$mail->AddReplyTo("$exp_email"); |
||||
$mail->AddAddress($adresse,$adresse); |
||||
$i++; |
||||
|
||||
$mail->WordWrap = 50; // set word wrap |
||||
$mail->IsHTML(true); // send as HTML |
||||
$mail->CharSet = "utf-8"; |
||||
|
||||
$mail->Subject = "$lettre_title"; |
||||
$mail->Body = $recup; |
||||
$mail->AltBody = $recup_txt; |
||||
$res = $mail->Send(); |
||||
} |
||||
else { |
||||
$envoyer_mail = charger_fonction('envoyer_mail','inc'); |
||||
$corps = array( |
||||
"html" => $recup, |
||||
"texte" => $recup_txt, |
||||
"nom_envoyeur" => $exp_name, |
||||
"from" => $exp_email, |
||||
"renvoyer_a" => $exp_email |
||||
); |
||||
$envoyer_mail($adresse,$lettre_title,$corps); |
||||
} |
||||
|
||||
if(!$res) { |
||||
$message.= "<div style='color:red'><strong>$adresse</strong> - "._T('malettre:erreur_envoi')."</div>"; |
||||
//$message.= "Mailer Error: " . $mail->ErrorInfo; |
||||
$success_flag = false; |
||||
$j++; |
||||
} else { |
||||
$message.= "<div style='color:green'><strong>$adresse</strong> - <span style='color:green'>"._T('malettre:succes_envoi')."</span></div>"; |
||||
} |
||||
echo $msg; |
||||
} |
||||
} else { |
||||
$message.= "<div style='color:red'>"._T('malettre:erreur_no_dest')."</div>"; |
||||
} |
||||
$message.= "</div>"; |
||||
|
||||
$message.= "<div> $i / $j </div>"; |
||||
|
||||
// archivage de la lettre en dur |
||||
// FIXME: utiliser les methodes natives pour ecrire les fichiers |
||||
$message.= "<div style=\"margin:15px 0;\">"._T('malettre:archives_placer'); |
||||
|
||||
$lettre_archive = "$path_archive_full/lettre_".date("Ymd")."_".$lettre_hash."_"._request('lang_select').".html"; |
||||
$f_archive=fopen($lettre_archive,"w"); |
||||
fwrite($f_archive,$recup); |
||||
fclose($f_archive); |
||||
$message.= " <a href='$url_lettre_archive' target='_blank'>html</a> - "; |
||||
|
||||
$lettre_archive = "$path_archive_full/lettre_".date("Ymd")."_".$lettre_hash."_"._request('lang_select').".txt"; |
||||
$f_archive=fopen($lettre_archive,"w"); |
||||
fwrite($f_archive,$recup_txt); |
||||
fclose($f_archive); |
||||
$message.= "<a href='$url_lettre_archive_txt' target='_blank'>txt</a></div>"; |
||||
|
||||
// stockage en base |
||||
include_spip('base/abstract_sql'); |
||||
|
||||
sql_insertq('spip_meslettres',array( |
||||
'titre' => $lettre_title, |
||||
'lang' => $lang, |
||||
'url_html' => "lettre/$url_lettre_archive_short", |
||||
'url_txt' => "lettre/$url_lettre_archive_txt_short", |
||||
'date' => date('Y-m-d H:i:s') |
||||
)); |
||||
|
||||
|
||||
$message.= "<p><a href='".generer_url_ecrire("malettre_archive")."'>"._T('malettre:archives_gerer')."</a></p>\n"; |
||||
|
||||
|
||||
|
||||
// -------------------------------- |
||||
|
||||
|
||||
|
||||
|
||||
|
||||
$redirect = ""; |
||||
|
||||
// message |
||||
return array( |
||||
"editable" => false, |
||||
"message_ok" => "$message", |
||||
'redirect' => $redirect |
||||
); |
||||
} |
||||
|
||||
?> |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 716 B |
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 2.1 KiB |
After Width: | Height: | Size: 586 B |
@ -0,0 +1,19 @@
|
||||
<BOUCLE_vevent(EVENEMENTS spip_articles){id_evenement=#ENV{id,#ENV{id_evenement}}}{tout}> |
||||
<BOUCLE_artri(ARTICLES){id_evenement}>[(#SET{lien_article,[(#TITRE)]})][(#SET{txt,[(#TEXTE|couper{120}|Ptobr)]})]</BOUCLE_artri> |
||||
<tr><td style="vertical-align:top"> |
||||
<div style="color:#555; float:left;padding:5px 10px 5px;"> |
||||
[<a href="[(#URL_ARTICLE|url_absolue)]"><img src="(#LOGO_EVENEMENT|sinon{#LOGO_ARTICLE}|image_reduire{0,110}|image_reduire{110,0}|image_recadre{110,110,top}|sinon{[(#CHEMIN{img/agenda_logo.jpg}|image_reduire{80,80}|image_recadre{100,80,top})]}|extraire_attribut{src}|url_absolue)" alt="" border="0" /></a>] |
||||
</div></td><td><div style="color:#555; text-align: justify;padding: 5px 0px 5px;"> |
||||
<h2 style="margin:0; padding:0; color:#A5B152; font-size:14px">#TITRE</h2> |
||||
[<h4 style="margin:0; padding:0;font-size:12px">(#DATE_DEBUT|agenda_affdate_debut_fin{#DATE_FIN,''})</h4>] |
||||
<B_mots> |
||||
<h4 style="margin:2px 0; padding:0;font-size:12px"><BOUCLE_mots(MOTS){id_evenement}{par num titre,titre}{','}> |
||||
#SET{mot,#TITRE} |
||||
<a href="[(#URL_MOT|url_absolue)]" style="color:#57B2FF;">#TITRE</a></BOUCLE_mots> |
||||
</h4> |
||||
</B_mots> |
||||
[<div style="color:#666;">(#DESCRIPTIF|sinon{#GET{txt}|liens_absolus|Ptobr})</div>] |
||||
<p style="color:#848484; margin:0.2em 0 0">[(#HORAIRE|=={oui}|oui)[(#DATE_DEBUT|affdate{H:i})][-(#DATE_FIN|affdate{H:i})]][(#LIEU|!={#GET{mot}}|oui)[ (#LIEU|Ptobr)][ (#ADRESSE|PtoBR)]][(#INSCRIPTION|oui)[ / ((#PLACES) ]<:agenda:personnes:>)]</p> |
||||
[<p style="margin:0.2em 0 0">À retrouver dans... <a href="[(#URL_ARTICLE|url_absolue)]" style="color:#57B2FF;">(#GET{lien_article})</a></p>] |
||||
</div></td></tr><tr><td colspan="2"><hr style="height:1px;padding:0;border:0;border-top:1px solid #eeeeee;" /></td></tr></BOUCLE_vevent> |
||||
|
@ -0,0 +1,31 @@
|
||||
[(#REM) archives lettre |
||||
]<B_archive> |
||||
<table class="spip"><tbody> |
||||
<tr> |
||||
<th width="15">Nยฐ</th> |
||||
<th width="230"><:info_titre:></th> |
||||
<th width="40"><:date:></th> |
||||
<th width="30"></th> |
||||
<th width="30"></th> |
||||
<th width="30"></th> |
||||
</tr> |
||||
<BOUCLE_archive(MESLETTRES){pagination 5}{!par date}> |
||||
<tr> |
||||
<td width="20">#ID_MALETTRE</td> |
||||
<td width="230"><a href='#'[ onclick="malettref.location.href='(#CHEMIN{IMG/#URL_HTML})'"] style='color:green;'>#TITRE</a> - <small>#LANG</small></td> |
||||
<td width="40">[(#DATE|affdate_court)]</td> |
||||
<td width="30">[<a href="(#CHEMIN{IMG/#URL_HTML})" target="_blank">html</a>]</td> |
||||
<td width="30">[<a href="(#CHEMIN{IMG/#URL_TXT})" target="_blank">txt</a>]</td> |
||||
<td width="30"><a href='[(#URL_ACTION_AUTEUR{supprimer_lettre,#ID_MALETTRE,#SELF})]' onclick='return confirm("<:malettre:effacer_confirm:>");' style='color:red;'><:malettre:effacer:></a></td> |
||||
</tr> |
||||
</BOUCLE_archive> |
||||
</tbody></table> |
||||
<div class="pagination">[(#PAGINATION) - ]#GRAND_TOTAL <:malettre:lettres_dispo:></div> |
||||
|
||||
<iframe width="900" height="500" src='' id='malettref' name='malettref' style="both;border:1px solid #666;position:relative;left:-200px;margin:1em;background:#333;"></iframe> |
||||
|
||||
|
||||
</B_archive> |
||||
<div class="pagination">0 <:malettre:lettres_dispo:></div> |
||||
<//B_archive> |
||||
|
@ -0,0 +1,96 @@
|
||||
<?php |
||||
|
||||
// This is a SPIP language file -- Ceci est un fichier langue de SPIP |
||||
|
||||
$GLOBALS[$GLOBALS['idx_lang']] = array( |
||||
|
||||
// A |
||||
'archives' => 'Archives', |
||||
'archives_gerer' => 'Gérer les archives', |
||||
'archives_placer' => 'Lettre placée en archive', |
||||
'autre' => 'Autre :', |
||||
'apercu' => 'Apercu de la lettre', |
||||
'adresse'=> 'Adresse @num@',#NEW |
||||
|
||||
// C |
||||
'charger_derniere' => 'Charger la dernière lettre', |
||||
'config' => 'Configurer ma lettre', |
||||
'config_malettre'=>'Choisir l\'édito et les adresses emails courantes pour vos envois', |
||||
'consulter' => 'Consulter', |
||||
'compose_sujet' => 'Sujet du mail', |
||||
'compose_non_spip' => 'raccourcis SPIP non supportés', |
||||
'compose_contenu' => 'Texte d\'introduction', |
||||
'compose_edito' => 'éditer ce texte', |
||||
'compose_cochant' => 'Choisissez les articles que vous voulez publier dans la lettre en les cochant ...', |
||||
'compose_cochant_eve' => 'Choisissez les événements que vous voulez publier dans la lettre en les cochant ...', |
||||
'compose_liste' => 'ET / OU <br />indiquer les numéros des articles à publier séparés par une virgule', |
||||
'compose_liste_eve' => 'ET / OU <br />indiquer les numéros des événements à publier séparés par une virgule', |
||||
'compose_submit' => 'Ajouter à la lettre', |
||||
'choix_lang' => 'Composer la lettre en ', |
||||
'choix_objets'=>'Les listes d\'objets à cocher',#NEW |
||||
|
||||
// D |
||||
'destinataires' => "Destinataires", |
||||
|
||||
// E |
||||
'ecrire_nouvelle' => 'Ecrire une lettre', |
||||
'ecrire_nouvelle2' => 'Ecrire une nouvelle lettre', |
||||
'edito'=>'Edito', #NEW |
||||
'edito_article_numero'=>'Numéro de l\'article édito<br />(<i>0: pas d\'รฉdito</i>)',#NEW |
||||
'erreur_ecriture' => '<strong>erreur:</strong> impossible de créer la lettre au format HTML, vérifier le paramètre chemin d\'accès et les droits en écriture (chmod 777)', |
||||
'erreur_ecriture_stockage' => 'Répertoire de stockage de la lettre impossible à créer', |
||||
'erreur_envoi' => 'Erreur lors de l\'envoi du mail', |
||||
'erreur_no_dest' => 'Erreur: aucun destinataire', |
||||
'erreur_lecture' => 'Erreur: impossible de lire le dossier', |
||||
'expediteur' => 'Expéditeur', |
||||
'email'=>'Email',#NEW |
||||
'email_seulement' => "email seulement", |
||||
'envoi' => 'Envoi', |
||||
'effacer' => 'Effacer', |
||||
'effacer_confirm' => 'Etes vous sur de vouloir effacer cette lettre ?', |
||||
'expediteurs'=>'Expéditeurs',#NEW |
||||
|
||||
// I |
||||
'info' => 'Crรฉer votre lettre en selectionnant les รฉlรฉments.', |
||||
'info_archive' => 'Visualiser et gรฉrer les lettres envoyรฉes', #NEW |
||||
'info_envoi' => 'Prรฉvisualiser votre lettre et envoyer la ร ces destinataires', #NEW |
||||
|
||||
// L |
||||
'lang_toute' => 'toutes les langues', |
||||
'lettres_dispo' => 'lettre(s) disponible(s)', |
||||
'lettre_du' => 'lettre du', |
||||
'lettre_txt_auto' => 'Ceci est une message automatique - ne pas repondre', |
||||
'lettre_txt_titre' => 'LETTRE D\'INFORMATION DE', |
||||
'lettre_txt_html_dispo' => 'La version HTML de cette lettre est disponible en ligne: ', |
||||
'lettre_txt_unsub' => 'Modifier son abonnement: ', |
||||
'lettre_html_unsub' => 'se désinscrire de la lettre', |
||||
'lettre_envoyer' => 'Envoyer la lettre', #NEW |
||||
'lien' => 'Lien', |
||||
'lire_en_ligne' => 'Lire l\'article en ligne', |
||||
'lister_articles'=>'Lister les articles', |
||||
'lister_evenements'=>'Lister les événements', |
||||
'lien_documentation' => '<a href="http://www.spip-contrib.net/2803" class="spip_out">Documentation</a>',#NEW |
||||
|
||||
// M |
||||
'ma_lettre'=>'Ma lettre', |
||||
'ma_lettre_warning' => 'Si vous n\'arrivez pas à lire correctement cette lettre, allez directement sur', |
||||
'mes_abonnes' => 'Mes abonnés (@inscrits@ inscrits)', |
||||
|
||||
//N |
||||
'nom'=>'Nom',#NEW |
||||
|
||||
// 0 |
||||
'obligatoire' => 'Champs obligatoire', |
||||
|
||||
// S |
||||
'succes_envoi' => 'Lettre bien envoyée !', |
||||
|
||||
// V |
||||
'version_html' => 'Version HTML', |
||||
'version_txt' => 'Version Texte', |
||||
'voir' => 'Voir' |
||||
|
||||
); |
||||
|
||||
|
||||
?> |
@ -0,0 +1,73 @@
|
||||
|
||||
<?php |
||||
|
||||
// This is a SPIP language file -- Ceci est un fichier langue de SPIP |
||||
|
||||
$GLOBALS[$GLOBALS['idx_lang']] = array( |
||||
|
||||
// A |
||||
'archives' => 'Archieven', |
||||
'archives_gerer' => 'Archieven beheren', |
||||
'archives_placer' => 'Brief wordt in archief geplaatst', |
||||
'autre' => 'Ander :', |
||||
'apercu' => 'Kort overzicht', |
||||
|
||||
// C |
||||
'charger_derniere' => 'De laatste brief downloaden', |
||||
'config' => 'Configureren', |
||||
'consulter' => 'Raadplegen', |
||||
'compose_sujet' => 'Onderwerp van mail', |
||||
'compose_non_spip' => 'SPIP kortere niet gedragen', |
||||
'compose_contenu' => 'Inleidingstekst', |
||||
'compose_edito' => 'deze tekst uitgeven', |
||||
'compose_cochant' => 'Kies de artikelen die u in de brief wil publiceren door aan te duiden ...', |
||||
'compose_liste' => 'EN / OF <br />de nummers van de te publiceren artikelen aangeven gescheiden door een komma', |
||||
'compose_submit' => 'Aan de brief toevoegen', |
||||
'choix_lang' => 'De brief schrijven in ', |
||||
|
||||
// D |
||||
'destinataires' => 'Ontvangers', |
||||
|
||||
// E |
||||
'ecrire_nouvelle' => 'Een brief schrijven', |
||||
'ecrire_nouvelle2' => 'Een nieuwe brief schrijven', |
||||
'erreur_ecriture' => '<strong>fout:</strong> onmogelijk om de brief in het formaat HTML te creยทen, de parameter weg van toegang en de rechten in schrift te controleren (chmod 777)', |
||||
'erreur_ecriture_stockage' => 'Lijst van opslag van de brief onmogelijk te creยทen', |
||||
'erreur_envoi' => 'Fout bij de verzending van mail', |
||||
'erreur_no_dest' => 'Fout: geen ontvangers', |
||||
'erreur_lecture' => 'De fout: onmogelijk om het dossier te lezen', |
||||
'expediteur' => 'Afzender', |
||||
'email_seulement' => 'e-mail alleen', |
||||
'envoi' => 'Zenden', |
||||
'effacer' => 'Uitwissen', |
||||
'effacer_confirm' => 'Bent u zeker deze brief uit te willen wissen?', |
||||
|
||||
// I |
||||
'info' => 'Deze bladzijde maakt het mogelijk om een brief op maat te creยทen door uw artikelen te kiezen.', |
||||
|
||||
// L |
||||
'lang_toute' => 'alle talen', |
||||
'lettres_dispo' => 'beschikbare brief / brieven', |
||||
'lettre_du' => 'brief van', |
||||
'lettre_txt_auto' => 'Dit is een automatisch bericht - niet beantwoorden', |
||||
'lettre_txt_titre' => 'INFORMATIEBRIEF VAN', |
||||
'lettre_txt_html_dispo' => 'De versie HTML van deze brief is on-line beschikbaar: ', |
||||
'lettre_txt_unsub' => 'abonnement wijzigen: ', |
||||
'lettre_html_unsub' => 'zich voor de brief uitschrijven', |
||||
|
||||
// M |
||||
'ma_lettre'=>'Mijn brief', |
||||
'ma_lettre_warning' => 'Als u er niet in slaagt deze brief juist te lezen, ga meteen naar', |
||||
|
||||
// S |
||||
'succes_envoi' => 'de brief is goed vertsuurd', |
||||
|
||||
// V |
||||
'version_html' => 'HTML Versie', |
||||
'version_txt' => 'Tekst versie', |
||||
'voir' => 'zien' |
||||
|
||||
); |
||||
|
||||
|
||||
?> |
@ -0,0 +1,14 @@
|
||||
<?php |
||||
// This is a SPIP language file -- Ceci est un fichier langue de SPIP |
||||
|
||||
if (!defined('_ECRIRE_INC_VERSION')) return; |
||||
|
||||
$GLOBALS[$GLOBALS['idx_lang']] = array( |
||||
|
||||
// P |
||||
'malettre_description' => 'Crรฉer le contenu d\'une newsletter en sélectionnant manuellement รฉdito, articles, รฉvรฉnements |
||||
pour l\'envoyer ensuite ร un gestionnaire de listes de type SYMPA, Mailman, ... ', |
||||
'malettre_slogan' => 'Compose une lettre d\'information sur mesure' |
||||
); |
||||
|
||||
?> |
@ -0,0 +1,37 @@
|
||||
<?php |
||||
|
||||
// Sรฉcuritรฉ |
||||
if (!defined('_ECRIRE_INC_VERSION')) return; |
||||
|
||||
/** |
||||
* Installation/maj des tables gis |
||||
* |
||||
* @param string $nom_meta_base_version |
||||
* @param string $version_cible |
||||
*/ |
||||
function malettre_upgrade($nom_meta_base_version, $version_cible){ |
||||
$maj = array(); |
||||
|
||||
// Premiรจre installation |
||||
$maj['create'] = array( |
||||
array('maj_tables', array('spip_meslettres')), |
||||
array('malettre_creer_repertoire_documents') |
||||
); |
||||
|
||||
include_spip('base/upgrade'); |
||||
maj_plugin($nom_meta_base_version, $version_cible, $maj); |
||||
} |
||||
|
||||
function malettre_vider_tables() { |
||||
sql_drop_table("spip_meslettres"); |
||||
effacer_meta('malettre_base_version'); |
||||
} |
||||
|
||||
|
||||
|
||||
function malettre_creer_repertoire_documents() { |
||||
include_spip('inc/getdocument'); |
||||
creer_repertoire_documents('lettre'); |
||||
} |
||||
|
||||
?> |
@ -0,0 +1,17 @@
|
||||
<?php |
||||
if (!defined("_ECRIRE_INC_VERSION")) return; |
||||
|
||||
|
||||
// fonction pour le pipeline, n'a rien a effectuer |
||||
function malettre_autoriser(){} |
||||
|
||||
// declarations d'autorisations |
||||
function autoriser_malettre_bouton_dist($faire, $type, $id, $qui, $opt) { |
||||
return autoriser('voir', 'malettre', $id, $qui, $opt); |
||||
} |
||||
|
||||
function autoriser_malettre_voir_dist($faire, $type, $id, $qui, $opt) { |
||||
return (in_array($qui['statut'],array('0minirezo'))); // pour l'instant uniquement les admins |
||||
} |
||||
|
||||
?> |
@ -0,0 +1,25 @@
|
||||
<?php |
||||
|
||||
// |
||||
// recuperer la page lettre avec le contexte |
||||
// |
||||
function malettre_get_contents($patron,$id_edito=0,$selection,$selection_eve,$lang) { |
||||
|
||||
$date = date('Y-m-d'); |
||||
$texte_patron = recuperer_fond( |
||||
"public/$patron", |
||||
array( |
||||
'date' => $date, |
||||
'id_edito'=>$id_edito, |
||||
'selection'=>$selection, |
||||
'selection_eve'=>$selection_eve, |
||||
'lang'=>$lang |
||||
) |
||||
); |
||||
|
||||
return $texte_patron; |
||||
|
||||
} |
||||
|
||||
|
||||
?> |
@ -0,0 +1,25 @@
|
||||
<paquet |
||||
prefix="malettre" |
||||
categorie="communication" |
||||
version="3.0.0" |
||||
schema="1.0.0" |
||||
etat="test" |
||||
compatibilite="[3.0.0-dev;3.0.*]" |
||||
logo="images/malettre.png" |
||||
documentation="http://www.spip-contrib.net/Plugin-Ma-lettre" |
||||
> |
||||
<nom>Ma lettre</nom> |
||||
<!-- Compose sur mesure une lettre d'information --> |
||||
|
||||
<auteur lien="http://www.erational.org">erational</auteur> |
||||
<copyright>2012</copyright> |
||||
<licence>GPL v3</licence> |
||||
|
||||
<necessite nom="saisies" compatibilite="[1.19.0;]" /> |
||||
|
||||
<pipeline nom="declarer_tables_interfaces" inclure="base/malettre.php" /> |
||||
<pipeline nom="declarer_tables_objets_sql" inclure="base/malettre.php" /> |
||||
<pipeline nom="autoriser" inclure="malettre_autoriser.php" /> |
||||
|
||||
<menu nom="malettre" titre="malettre:ma_lettre" parent="menu_edition" icone="images/malettre-16.png" /> |
||||
</paquet> |
@ -0,0 +1,28 @@
|
||||
<h5><:malettre:compose_cochant:></h5> |
||||
<B_liste> |
||||
<table class="spip" width="100%" border="0"> |
||||
<tbody> |
||||
<BOUCLE_liste(ARTICLES) |
||||
{id_groupe ?} |
||||
{id_auteur ?} |
||||
{id_rubrique ?} |
||||
{id_mot ?} |
||||
{pagination 20} |
||||
{recherche ?} |
||||
{!par id_article} |
||||
> |
||||
<tr width="100%"> |
||||
<td bgcolor="[(#COMPTEUR_BOUCLE|alterner{#fff,#eee})]"><a href="?exec=articles&id_article=#ID_ARTICLE">n°#ID_ARTICLE - #TITRE</a></td> |
||||
<td bgcolor="[(#COMPTEUR_BOUCLE|alterner{#fff,#eee})]" align="center"><input type="checkbox" value="#ID_ARTICLE" name="add[]"> |
||||
</td></tr> |
||||
</BOUCLE_liste> |
||||
<!--<tr><td colspan="2"> FIXME l'ajax re-init tout le formulaire |
||||
<p class="pagination">#PAGINATION</p> |
||||
</td><tr>--> |
||||
<tr><td colspan="2"> |
||||
<p><:malettre:compose_liste:> |
||||
<textarea name="art_csv" id="art_csv" cols="50" rows="5"></textarea> |
||||
</p> |
||||
</td></tr> |
||||
</tbody> |
||||
</table> </B_liste> |
@ -0,0 +1,33 @@
|
||||
<B_liste> |
||||
<h5><:malettre:compose_cochant_eve:></h5> |
||||
<table class="spip" width="100%" border="0"> |
||||
<tbody> |
||||
<BOUCLE_liste(EVENEMENTS) |
||||
{id_auteur ?} |
||||
{id_rubrique ?} |
||||
{id_mot ?} |
||||
{pagination 15} |
||||
{recherche ?} |
||||
{!par id_evenement} |
||||
{statut=publie} |
||||
> |
||||
<tr width="100%"> |
||||
<td bgcolor="[(#COMPTEUR_BOUCLE|alterner{#fff,#eee})]"><a href="?exec=evenements_edit&id_evenement=#ID_EVENEMENT">n°#ID_EVENEMENT - #TITRE </a>[- <small>(#DESCRIPTIF|couper{30,...})</small>]</td> |
||||
<td bgcolor="[(#COMPTEUR_BOUCLE|alterner{#fff,#eee})]" align="center"><input type="checkbox" value="#ID_EVENEMENT" name="addeve[]"> |
||||
</td></tr> |
||||
</BOUCLE_liste> |
||||
<!--<tr><td colspan="2"> |
||||
<p class="pagination">#PAGINATION</p> |
||||
</td><tr> --> |
||||
<tr><td colspan="2"> |
||||
<p><:malettre:compose_liste_eve:> |
||||
<textarea name="eve_csv" id="eve_csv" cols="50" rows="5"></textarea> |
||||
</p> |
||||
</td></tr> |
||||
</tbody> |
||||
</table> |
||||
</B_liste> |
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,3 @@
|
||||
<div class="ajax"> |
||||
#FORMULAIRE_CONFIGURER_MALETTRE |
||||
</div> |
@ -0,0 +1,10 @@
|
||||
[(#REM) |
||||
page composer lettre |
||||
|
||||
|
||||
] |
||||
[(#AUTORISER{voir, malettre}) |
||||
<div class='ajax'> |
||||
#FORMULAIRE_EDITER_MALETTRE |
||||
</div> |
||||
] |
@ -0,0 +1,12 @@
|
||||
[(#REM) |
||||
page archive lettre |
||||
|
||||
|
||||
] |
||||
[(#AUTORISER{voir, malettre}) |
||||
<h1 class="grostitre"><:malettre:archives:></h1> |
||||
|
||||
<div class='ajax'> |
||||
<INCLURE{fond=inclure/liste_lettre,env,ajax} /> |
||||
</div> |
||||
] |
@ -0,0 +1,10 @@
|
||||
[(#REM) |
||||
page envoi lettre |
||||
|
||||
|
||||
] |
||||
[(#AUTORISER{voir, malettre}) |
||||
<div class='ajax'> |
||||
#FORMULAIRE_ENVOI_MALETTRE |
||||
</div> |
||||
] |
@ -0,0 +1,9 @@
|
||||
[(#BOITE_OUVRIR{[(#CHEMIN_IMAGE{malettre-24.png}|balise_img{'',cadre-icone})],'simple'})] |
||||
<p><:malettre:info:></p> |
||||
<ul> |
||||
<!--<li><a href="#URL_ECRIRE{malettre}"><:malettre:ecrire_nouvelle:></a></li>--> |
||||
<li><a href="#URL_ECRIRE{malettre_envoi}"><:malettre:charger_derniere:></a></li> |
||||
<li><a href="#URL_ECRIRE{malettre_archive}"><:malettre:archives_gerer:></a></li> |
||||
<li><a href="#URL_ECRIRE{configurer_malettre}"><:malettre:config:></a></li> |
||||
</ul> |
||||
#BOITE_FERMER |
@ -0,0 +1,6 @@
|
||||
[(#BOITE_OUVRIR{[(#CHEMIN_IMAGE{malettre-24.png}|balise_img{'',cadre-icone})],'simple'})] |
||||
<p><:malettre:info_archive:></p> |
||||
<ul> |
||||
<li><a href="#URL_ECRIRE{malettre}"><:malettre:ecrire_nouvelle:></a></li> |
||||
</ul> |
||||
#BOITE_FERMER |
@ -0,0 +1,6 @@
|
||||
[(#BOITE_OUVRIR{[(#CHEMIN_IMAGE{malettre-24.png}|balise_img{'',cadre-icone})],'simple'})] |
||||
<p><:malettre:info_envoi:></p> |
||||
<ul> |
||||
<li><a href="#URL_ECRIRE{malettre}"><:malettre:ecrire_nouvelle:></a></li> |
||||
</ul> |
||||
#BOITE_FERMER |
After Width: | Height: | Size: 520 B |
After Width: | Height: | Size: 1.1 KiB |
@ -0,0 +1,90 @@
|
||||
[(#REM) |
||||
squelette de la newsletter au format HTML |
||||
ce squelette pour etre surcharge pour s'adapter ร vos besoins |
||||
|
||||
parametre: |
||||
- date |
||||
- id_edito: id de l'article edito |
||||
- selection: id des articles selectionnes (separe par une virgule) |
||||
|
||||
le code HTML est archaique pour assurer l'affichage dans les webmails et logiciels emails |
||||
|
||||
|
||||
]#CACHE{0} |
||||
#HTTP_HEADER{Content-Type: text/html}[(#REM)pour supprimer les boutons admin] |
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
||||
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="#LANG"> |
||||
<head> |
||||
<title>#NOM_SITE_SPIP</title> |
||||
<meta http-equiv="Content-Type" content="text/html; charset=#CHARSET" /> |
||||
<style type="text/css">a {color:#57B2FF;}</style> |
||||
</head> |
||||
|
||||
<body style="margin:0;padding:0;"> |
||||
<table width="100%" bgcolor="#FFFFFF" border="0" style="margin:0;padding:0;"> |
||||
<tr> |
||||
<td> </td> |
||||
<td width="650"> |
||||
<!-- contenu --> |
||||
<div style="margin:1em 0;"> |
||||
<div style="float:right;width:120px;padding:10px;margin:20px 0 0 0;background:#4CBDC1;font-family:Arial;font-size:1em;color:#FFFFFF;font-weight:bold;">[(#DATE|affdate_mois_annee)]</div> |
||||
|
||||
<a href="#URL_SITE_SPIP"><img src="[(#CHEMIN{images/banner_newsletter_defaut.png}|url_absolue)]" alt="" border="0" /></a> |
||||
</div> |
||||
|
||||
|
||||
[(#REM) edito] |
||||
<BOUCLE_edito(ARTICLES){id_article=#ENV{id_edito}}> |
||||
<div style="text-align:justify;margin-bottom:0.4em;padding:5px 10px 10px 10px;background:#fafafa;"> |
||||
[<div style="float:right;padding:10px 0 2px 15px;"><img src="(#LOGO_ARTICLE|image_reduire{0,110}|image_reduire{110,0}|extraire_attribut{src}|url_absolue)" alt="" border="0" /></div>] |
||||
|
||||
<h2 style="margin:0;padding:0;font-size:1em"><a href="[(#URL_ARTICLE|url_absolue))]" style="font-family:Arial;color:#A5B152;padding-left:0px;text-decoration:none;">#TITRE</a></h2> |
||||
[<div style="font-family:Arial;font-size:0.8em;color:#848484;">(#TEXTE|image_reduire{600}|liens_absolus)</div>] |
||||
</div> |
||||
</BOUCLE_edito> |
||||
<div style="clear:both;"></div> |
||||
|
||||
[(#REM) selection d'articles] |
||||
#SET{selection,#ENV**{selection}|explode{","}} |
||||
<BOUCLE_selection_bonux(POUR){tableau #GET{selection}}><BOUCLE_artx(ARTICLES){id_article=#VALEUR}> |
||||
<div style="clear:both;border-top:1px solid #ededed;"></div> |
||||
|
||||
<div style="text-align:justify;margin-bottom:0.4em;padding:5px 10px 10px 10px;"> |
||||
[<div style="float:right;padding:10px 0 2px 15px;"><img src="(#LOGO_ARTICLE|image_reduire{0,110}|image_reduire{110,0}|extraire_attribut{src}|url_absolue)" alt="" border="0" /></div>] |
||||
|
||||
<h2 style="margin:0;padding:0;font-size:1em"><a href="[(#URL_ARTICLE|url_absolue))]" style="font-family:Arial;color:#A5B152;padding-left:0px;text-decoration:none;">#TITRE</a></h2> |
||||
[<div style="font-family:Arial;font-size:0.8em;color:#848484;">(#INTRODUCTION)</div><br />] |
||||
<a href="[(#URL_ARTICLE|url_absolue))]" style="color:#57B2FF;font-family:Arial;font-size:0.8em;"><:lire_en_ligne:></a> |
||||
</div> |
||||
</BOUCLE_artx></BOUCLE_selection_bonux> |
||||
<div style="clear:both;"></div> |
||||
|
||||
[(#REM) selection d'evenements)] |
||||
|
||||
#SET{selection_eve,#ENV**{selection_eve}|explode{","}} |
||||
<B_eveselection_bonux> |
||||
<h3 style="font-family:Arial;font-size:1.2em;color:#666;"><:agenda:agenda:></h3> |
||||
<table width="600" bgcolor="#FFFFFF" border="0" style="font: 12px Arial, Helvetica, sans-serif;margin:0.4em 0;padding:0;"> |
||||
<BOUCLE_eveselection_bonux(POUR){tableau #GET{selection_eve}}><BOUCLE_eveartx(EVENEMENTS){id_evenement=#VALEUR}> |
||||
#INCLURE{fond=inclure/agenda_lettre,id_evenement} |
||||
</BOUCLE_eveartx></BOUCLE_eveselection_bonux> |
||||
</table> |
||||
</B_eveselection_bonux> |
||||
|
||||
<!-- pied --> |
||||
<div style="width:700px;padding:5px;background:#F0EEE1;font-family:Arial;font-size:0.8em;color:#333333;"> |
||||
<strong>#NOM_SITE_SPIP</strong><br /> |
||||
[(#DESCRIPTIF_SITE_SPIP)] |
||||
<a href="#URL_SITE_SPIP" style="color:#000000;">#URL_SITE_SPIP</a> |
||||
</div> |
||||
<!-- #pied --> |
||||
|
||||
|
||||
|
||||
<!-- #contenu --> |
||||
</td> |
||||
<td> </td> |
||||
</tr> |
||||
</table> |
||||
</body> |
||||
</html> |
@ -0,0 +1,55 @@
|
||||
[(#REM) |
||||
squelette de la newsletter au format texte |
||||
|
||||
parametre: |
||||
- date |
||||
- id_edito: id de l'article edito |
||||
- selection: id des articles selectionnes (separe par une virgule) |
||||
|
||||
]#CACHE{0} |
||||
#HTTP_HEADER{Content-Type: text/plain;}[(#REM)pour supprimer les boutons admin ] |
||||
Ceci est une message automatique - ne pas repondre |
||||
|
||||
-------------------------------------------------------------------- |
||||
LETTRE D'INFORMATION #NOM_SITE_SPIP |
||||
-------------------------------------------------------------------- |
||||
|
||||
<B_edito> |
||||
********************************* |
||||
EDITO |
||||
********************************* |
||||
<BOUCLE_edito(ARTICLES){id_article=#ENV{id_edito}}> |
||||
[(#TITRE|textebrut)] |
||||
------------------------------------------------- |
||||
[(#TEXTE|liens_absolus|couper{300}|PtoBR|textebrut)] |
||||
#URL_SITE_SPIP/[(#URL_ARTICLE|substr{3})] |
||||
</BOUCLE_edito> |
||||
|
||||
#SET{selection,#ENV**{selection}|explode{","}} |
||||
<BOUCLE_selection_bonux(POUR){tableau #GET{selection}}><BOUCLE_artx(ARTICLES){id_article=#VALEUR}> |
||||
|
||||
[(#TITRE|textebrut)] |
||||
------------------------------------------------- |
||||
[(#INTRODUCTION|liens_absolus|couper{300}|PtoBR|textebrut)] |
||||
[(#URL_ARTICLE|url_absolue)] |
||||
</BOUCLE_artx></BOUCLE_selection_bonux> |
||||
|
||||
#SET{selection_eve,#ENV**{selection_eve}|explode{","}} |
||||
<B_eveselection_bonux> |
||||
********************************* |
||||
<:agenda:agenda:> |
||||
<BOUCLE_eveselection_bonux(POUR){tableau #GET{selection_eve}}><BOUCLE_eveartx(EVENEMENTS){id_evenement=#VALEUR}> |
||||
|
||||
[(#TITRE|textebrut)] |
||||
------------------------------------------------- |
||||
[(#DATE_DEBUT|agenda_affdate_debut_fin{#DATE_FIN,''})] |
||||
[(#DESCRIPTIF|liens_absolus|couper{300}|PtoBR|textebrut)] |
||||
[(#URL_EVENEMENT|url_absolue)] |
||||
</BOUCLE_eveartx></BOUCLE_eveselection_bonux> |
||||
|
||||
-- |
||||
#NOM_SITE_SPIP |
||||
#URL_SITE_SPIP |
||||