Commit a55a84ce authored by david.verdin's avatar david.verdin
Browse files

[-feature] Retrieving all the work done by Julien Jourdan. DON'T FORGET TO...

[-feature] Retrieving all the work done by Julien Jourdan. DON'T FORGET TO INCLUDE COMMIT COMMENTS FROM BRANCH https://svn.cru.fr/sympa/branches/branche-julien INTO THE RELEASE NOTES.


git-svn-id: https://subversion.renater.fr/sympa/trunk@6184 05aa8bb8-cd2b-0410-b1d7-8918dfa770ce
parent 069d06ef
......@@ -857,7 +857,7 @@ sub del {
}
my $user_entry = $list->get_subscriber($email);
unless ((defined $user_entry) && ($user_entry->{'subscribed'} == 1)) {
unless ((defined $user_entry)) {
&do_log('info', 'DEL %s %s from %s refused, not on list', $listname, $email, $sender);
die SOAP::Fault->faultcode('Client')
->faultstring('Not subscribed')
......@@ -866,25 +866,18 @@ sub del {
my $gecos = $user_entry->{'gecos'};
if ($user_entry->{'included'} == 1) {
unless ($list->update_user($email, {'subscribed' => 0, 'update_date' => time})) {
&do_log('info', 'DEL %s %s from %s failed, database update failed', $email, $listname, $sender);
die SOAP::Fault->faultcode('Server')
->faultstring('Unable to update subscriber informations')
->faultdetail('Database update failed');
}
} else {
## Really delete and rewrite to disk.
my $u;
unless ($u = $list->delete_user($email)){
my $error = "Unable to delete user $email from list $listname for command 'del'";
&do_log('info', 'DEL %s %s from %s failed, '.$error);
die SOAP::Fault->faultcode('Server')
->faultstring('Unable to remove subscriber informations')
->faultdetail('Database access failed');
}
## Really delete and rewrite to disk.
my $u;
unless ($u = $list->delete_user('users' => [$email], 'exclude' =>' 1')){
my $error = "Unable to delete user $email from list $listname for command 'del'";
&do_log('info', 'DEL %s %s from %s failed, '.$error);
die SOAP::Fault->faultcode('Server')
->faultstring('Unable to remove subscriber informations')
->faultdetail('Database access failed');
}
## Send a notice to the removed user, unless the owner indicated
## quiet del.
unless ($quiet || $action =~ /quiet/i) {
......@@ -1084,7 +1077,7 @@ sub signoff {
}
## Really delete and rewrite to disk.
$list->delete_user($sender);
$list->delete_user('users' => [$sender], 'exclude' =>' 1');
## Notify the owner
if ($action =~ /notify/i) {
......
......@@ -44,6 +44,9 @@ CREATE TABLE subscriber_table (
subscribed_subscriber number NULL constraint cons_subscribed_subscriber CHECK (subscribed_subscriber in (0,1)),
included_subscriber number NULL constraint cons_included_subscriber CHECK (included_subscriber in (0,1)),
include_sources_subscriber varchar2(50),
suspend_subscriber number,
suspend_start_date_subscriber number,
suspend_end_date_subscriber number,
CONSTRAINT ind_subscriber PRIMARY KEY (list_subscriber,user_subscriber,robot_subscriber)
);
CREATE TABLE admin_table (
......@@ -64,6 +67,13 @@ CREATE TABLE admin_table (
CONSTRAINT ind_admin PRIMARY KEY (list_admin,user_admin,robot_admin,role_admin)
);
CREATE TABLE exclusion_table (
list_exclusion varchar2(50),
user_exclusion varchar2(100),
date_exclusion date,
CONSTRAINT ind_exclusion PRIMARY KEY (list_exclusion,user_exclusion)
);
CREATE TABLE netidmap_table (
netid_netidmap varchar2 (100) NOT NULL,
serviceid_netidmap varchar2 (100) NOT NULL,
......
......@@ -37,6 +37,9 @@ CREATE TABLE subscriber_table (
subscribed_subscriber smallint,
included_subscriber smallint,
include_sources_subscriber varchar(50),
suspend_subscriber smallint,
suspend_start_date_subscriber int4,
suspend_end_date_subscriber int4,
CONSTRAINT ind_subscriber PRIMARY KEY (robot_subscriber,list_subscriber,user_subscriber)
);
CREATE INDEX subscriber_idx ON subscriber_table (robot_subscriber,list_subscriber,user_subscriber);
......@@ -63,7 +66,16 @@ CREATE TABLE admin_table (
);
CREATE INDEX admin_idx ON admin_table(robot_admin, list_admin, role_admin, user_admin);
CREATE INDEX admin_idx2 ON admin_table(user_admin);
DROP TABLE exclusion_table;
CREATE TABLE exclusion_table (
list_exclusion varchar(50),
user_exclusion varchar(100),
date_exclusion int4,
CONSTRAINT ind_exclusion PRIMARY KEY (list_exclusion, user_exclusion)
);
CREATE INDEX exclusion_idx ON exclusion_table(list_exclusion, user_exclusion);
DROP TABLE netidmap_table;
CREATE TABLE netidmap_table (
netid_netidmap varchar (100) NOT NULL,
......
......@@ -29,6 +29,9 @@ CREATE TABLE subscriber_table (
included_subscriber boolean,
include_sources_subscriber text,
bounce_score_subscriber integer,
suspend_subscriber boolean,
suspend_start_date_subscriber integer,
suspend_end_date_subscriber integer,
PRIMARY KEY (robot_subscriber, list_subscriber, user_subscriber)
);
CREATE INDEX subscriber_idx ON subscriber_table (user_subscriber,list_subscriber,robot_subscriber);
......@@ -52,6 +55,14 @@ CREATE TABLE admin_table (
);
CREATE INDEX admin_idx ON admin_table(list_admin, user_admin, robot_admin, role_admin);
CREATE TABLE exclusion_table (
list_exclusion text,
user_exclusion text,
date_exclusion integer,
PRIMARY KEY (list_exclusion, user_exclusion)
);
CREATE INDEX exclusion_idx ON exclusion_table(list_exclusion, user_exclusion);
CREATE TABLE netidmap_table (
netid_netidmap text NOT NULL,
serviceid_netidmap text NOT NULL,
......
......@@ -43,6 +43,9 @@ create table subscriber_table
subscribed_subscriber numeric null ,
included_subscriber numeric null ,
include_sources_subscriber varchar(50) null ,
suspend_subscriber numeric null ,
suspend_start_date_subscriber numeric null ,
suspend_end_date_subscriber numeric null ,
constraint ind_subscriber primary key (list_subscriber, user_subscriber, robot_subscriber)
)
go
......@@ -88,6 +91,21 @@ go
create index role_admin_fk on admin_table (role_admin)
go
create table exclusion_table
(
list_exclusion varchar(50) null,
user_exclusion varchar(100) null,
date_exclusion numeric null,
constraint ind_exclusion primary key (list_exclusion, user_exclusion)
)
go
create index list_exclusion_fk on exclusion_table (list_exclusion)
go
create index user_exclusion_fk on exclusion_table (user_exclusion)
go
create table netidmap_table
(
netid_netidmap varchar (100) NOT NULL,
......
......@@ -35,6 +35,9 @@ CREATE TABLE subscriber_table (
subscribed_subscriber int(1),
included_subscriber int(1),
include_sources_subscriber varchar(50),
suspend_subscriber int(1),
suspend_start_date_subscriber int(11),
suspend_end_date_subscriber int(11),
PRIMARY KEY (robot_subscriber, list_subscriber, user_subscriber),
INDEX user_index (user_subscriber)
);
......@@ -58,9 +61,17 @@ CREATE TABLE admin_table (
INDEX user_index (user_admin)
);
CREATE TABLE exclusion_table (
list_exclusion varchar(50) NOT NULL,
user_exclusion varchar(100) NOT NULL,
date_exclusion int(11),
PRIMARY KEY (list_exclusion, user_exclusion),
INDEX user_index (user_exclusion)
);
CREATE TABLE netidmap_table (
netid_netidmap varchar (100) NOT NULL,
serviceid_netidmap varchar (100) NOT NULL,
serviceid_netidmap varchar (100) NOT NULL,
robot_netidmap varchar (80) NOT NULL,
email_netidmap varchar (100),
PRIMARY KEY (netid_netidmap, serviceid_netidmap, robot_netidmap)
......
......@@ -188,11 +188,14 @@ sub messageasstring {
############################################################
# merge_msg #
############################################################
# Merge a message with custom attributes of a user. #
# #
# #
# #
# #
# #
# IN : - MIME:Entity #
# - $rcpt : a receipient #
# - $bulk : HASH #
# - $data : HASH with user's data #
# OUT : 1 | undef #
# #
############################################################
sub merge_msg {
......
......@@ -766,7 +766,7 @@ sub subscribe {
## Unless rejected by scenario, don't go further if the user is subscribed already.
my $user_entry = $list->get_subscriber($sender);
if ( defined($user_entry) && ($user_entry->{'subscribed'} == 1)) {
if ( defined($user_entry)) {
&report::reject_report_cmd('user','already_subscriber',{'email'=>$sender, 'listname'=>$list->{'name'}},$cmd_line);
&do_log('err','User %s is subscribed to %s already. Ignoring subscription request.', $sender, $list->{'name'});
return undef;
......@@ -1121,7 +1121,7 @@ sub signoff {
## remove it if found, otherwise just reject the
## command.
my $user_entry = $list->get_subscriber($email);
unless ((defined $user_entry) && ($user_entry->{'subscribed'} == 1)) {
unless ((defined $user_entry)) {
&report::reject_report_cmd('user','your_email_not_found',{'email'=> $email, 'listname' => $list->{'name'}},$cmd_line);
&do_log('info', 'SIG %s from %s refused, not on list', $which, $email);
......@@ -1135,24 +1135,13 @@ sub signoff {
return 'not_allowed';
}
if ($user_entry->{'included'} == 1) {
unless ($list->update_user($email,
{'subscribed' => 0,
'update_date' => time})) {
&do_log('info', 'SIG %s from %s failed, database update failed', $which, $email);
my $error = "Unable to update user $user in list $listname";
&report::reject_report_cmd('intern',$error,{'listname'=>$which},$cmd_line,$sender,$robot);
return undef;
}
}else {
## Really delete and rewrite to disk.
unless ($list->delete_user($email)){
my $error = "Unable to delete user $user from list $listname";
&report::reject_report_cmd('intern',$error,{'listname'=>$which},$cmd_line,$sender,$robot);
}
## Really delete and rewrite to disk.
unless ($list->delete_user('users' => [$email], 'exclude' =>' 1')){
my $error = "Unable to delete user $user from list $listname";
&report::reject_report_cmd('intern',$error,{'listname'=>$which},$cmd_line,$sender,$robot);
}
## Notify the owner
if ($action =~ /notify/i) {
unless ($list->send_notify_to_owner('notice',{'who' => $email,
......@@ -1795,7 +1784,7 @@ sub del {
## just reject the message.
my $user_entry = $list->get_subscriber($who);
unless ((defined $user_entry) && ($user_entry->{'subscribed'} == 1)) {
unless ((defined $user_entry)) {
&report::reject_report_cmd('user','your_email_not_found',{'email'=> $who, 'listname' => $which},$cmd_line);
&do_log('info', 'DEL %s %s from %s refused, not on list', $which, $who, $sender);
return 'not_allowed';
......@@ -1804,24 +1793,14 @@ sub del {
## Get gecos before deletion
my $gecos = $user_entry->{'gecos'};
if ($user_entry->{'included'} == 1) {
unless ($list->update_user($who,
{'subscribed' => 0,
'update_date' => time})) {
&do_log('info', 'DEL %s %s from %s failed, database update failed', $which, $who, $sender);
my $error = "Unable to update user $who in list $which";
&report::reject_report_cmd('intern',$error,{'listname'=>$which},$cmd_line,$sender,$robot);
return undef;
}
}else {
## Really delete and rewrite to disk.
my $u;
unless ($u = $list->delete_user($who)){
my $error = "Unable to delete user $who from list $which for command 'del'";
&report::reject_report_cmd('intern',$error,{'listname'=>$which},$cmd_line,$sender,$robot);
}
## Really delete and rewrite to disk.
my $u;
unless ($u = $list->delete_user('users' => [$who], 'exclude' =>' 1')){
my $error = "Unable to delete user $who from list $which for command 'del'";
&report::reject_report_cmd('intern',$error,{'listname'=>$which},$cmd_line,$sender,$robot);
}
## Send a notice to the removed user, unless the owner indicated
## quiet del.
......
This diff is collapsed.
......@@ -694,7 +694,10 @@ sub probe_db {
'include_sources_subscriber' => 'varchar(50)',
'bounce_score_subscriber' => 'smallint(6)',
'bounce_address_subscriber' => 'varchar(100)',
'custom_attribute_subscriber' => 'text'},
'custom_attribute_subscriber' => 'text',
'suspend_subscriber' => "int(1)",
'suspend_start_date_subscriber' => 'int(11)',
'suspend_end_date_subscriber' => 'int(11)'},
'admin_table' => {'list_admin' => 'varchar(50)',
'user_admin' => 'varchar(100)',
'robot_admin' => 'varchar(80)',
......@@ -709,6 +712,9 @@ sub probe_db {
'include_sources_admin' => 'varchar(50)',
'info_admin' => 'varchar(150)',
'profile_admin' => "enum('privileged','normal')"},
'exclusion_table' => {'list_exclusion' => 'varchar(50)',
'user_exclusion' => 'varchar(100)',
'date_exclusion' => 'int(11)'},
'netidmap_table' => {'netid_netidmap' => 'varchar(100)',
'serviceid_netidmap' => 'varchar(100)',
'email_netidmap' => 'varchar(100)',
......@@ -784,7 +790,10 @@ sub probe_db {
'include_sources_subscriber' => 'text',
'bounce_score_subscriber' => 'integer',
'bounce_address_subscriber' => 'text',
'custom_attribute_subscriber' => 'text'},
'custom_attribute_subscriber' => 'text',
'suspend_subscriber' => "boolean",
'suspend_start_date_subscriber' => 'integer',
'suspend_end_date_subscriber' => 'integer'},
'admin_table' => {'list_admin' => 'text',
'user_admin' => 'text',
'robot_admin' => 'text',
......@@ -799,6 +808,9 @@ sub probe_db {
'include_sources_admin' => 'text',
'info_admin' => 'text',
'profile_admin' => 'text'},
'exclusion_table' => {'list_exclusion' => 'text',
'user_exclusion' => 'text',
'date_exclusion' => 'integer'},
'netidmap_table' => {'netid_netidmap' => 'text',
'serviceid_netidmap' => 'text',
'email_netidmap' => 'text',
......@@ -849,10 +861,8 @@ sub probe_db {
'lock_bulkspool' => 'integer'},
'conf_table' => {'robot_conf' => 'text',
'label_conf' => 'text',
'value_conf' => 'text'}
},
);
'value_conf' => 'text'}});
my %not_null = ('email_user' => 1,
'list_subscriber' => 1,
'robot_subscriber' => 1,
......@@ -863,6 +873,8 @@ sub probe_db {
'user_admin' => 1,
'role_admin' => 1,
'date_admin' => 1,
'list_exclusion' => 1,
'user_exclusion' => 1,
'netid_netidmap' => 1,
'serviceid_netidmap' => 1,
'robot_netidmap' => 1,
......@@ -882,6 +894,7 @@ sub probe_db {
my %primary = ('user_table' => ['email_user'],
'subscriber_table' => ['robot_subscriber','list_subscriber','user_subscriber'],
'admin_table' => ['robot_admin','list_admin','role_admin','user_admin'],
'exclusion_table' => ['list_exclusion','user_exclusion'],
'netidmap_table' => ['netid_netidmap','serviceid_netidmap','robot_netidmap'],
'logs_table' => ['id_logs'],
'session_table' => ['id_session'],
......
......@@ -1144,7 +1144,6 @@ sub DoFile {
my ($file) = @_;
&do_log('debug', 'DoFile(%s)', $file);
my ($listname, $robot);
my $status;
......@@ -1453,7 +1452,6 @@ sub DoFile {
}else {
$status = &DoMessage($rcpt, $message, $robot);
}
## Mail back the result.
if (&report::is_there_any_report_cmd()) {
......
......@@ -117,6 +117,7 @@ webtemplate_DATA = active_lists.tt2 \
setlang.tt2 \
set_pending_list_request.tt2 \
show_cert.tt2 \
show_exclude.tt2 \
show_sessions.tt2 \
sigrequest.tt2 \
skinsedit.tt2 \
......@@ -125,6 +126,7 @@ webtemplate_DATA = active_lists.tt2 \
subindex.tt2 \
suboptions.tt2 \
subrequest.tt2 \
suspend_request.tt2 \
ticket.tt2 \
title.tt2 \
tt2_error.tt2 \
......
......@@ -2,22 +2,19 @@
<div class="block">
[% IF !subaction %]
<h2>[%|loc%]Sendind a message to the list[%END%] <a class="input" href="[% path_cgi %]/nomenu/help/sendmsg" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a></h3>
<h2>[%|loc%]Sending a message to the list[%END%] <a class="input" href="[% path_cgi %]/nomenu/help/sendmsg" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a></h3>
<br />
[% END %]
<p>
[%|loc(list,host)%]The best way to post an email to the list is to compose an email to the list email address <b>%1@%2</b> using your favourite email client. We also provide a form below to compose an email through the web interface.[%END%]
</p>
<form class="noborder" action="[% path_cgi %]" method="post" name="compose_mail">
[% IF subaction == "html_news_letter" %]
<h2>[%|loc%]Sending an html page to the list [%END%] <a class="input" href="[% path_cgi %]/nomenu/help/sendmsg" title="[%|loc%]Open in a new window[%END%]" onclick="window.open('','wws_help','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=400,height=200')" target="wws_help">[%|loc%]Help[%END%]</a></h3>
<br />
[% END %]
<fieldset>
[%|loc(user.email)%]From: %1[%END%]<br />
[%|loc(mailto)%]To: %1[%END%]<br />
......@@ -26,8 +23,8 @@
<input type="hidden" name="html_news_letter" value="[% subaction %]" />
[% END %]
<input type="hidden" name="action" value="send_mail"/>
<input class="MainMenuLinks" type="submit" name="sub_action_sendmailtolist" value="Send to the list" [%- IF topic_required -%] onclick="return checkbox_check_topic(compose_mail)" [% END %]/>
<input class="MainMenuLinks" type="submit" name="sub_action_sendmailtome" value="Send to me" [%- IF topic_required -%] onclick="return checkbox_check_topic(compose_mail)" [% END %]/>
<input class="MainMenuLinks" type="submit" name="sub_action_sendmailtolist" value="[%|loc%]Send to the list[%END%]" [%- IF topic_required -%] onclick="return checkbox_check_topic(compose_mail)" [% END %]/>
<input class="MainMenuLinks" type="submit" name="sub_action_sendmailtome" value="[%|loc%]Send to me[%END%]" [%- IF topic_required -%] onclick="return checkbox_check_topic(compose_mail)" [% END %]/>
<br />
<input type="hidden" name="in_reply_to" value="[% in_reply_to %]" />
......@@ -59,7 +56,22 @@
[% END %]
[% IF !subaction %]
[% balise_email = '['_'%'_' user.email '_'%'_']' %]
[% balise_fingerprint = '['_'%'_' user.fingerprint '_'%'_']' %]
<textarea name="body" cols="80" rows="25"></textarea>
<br />
<br />
<b>Personnalisation de messages : (on rajoute les balises TT2 : [ % et % ])</b><br />
user.email : destinataire par exemple, [% balise_email %]<br />
listname : nom de la liste <br />
robot : serveur utilis <br /><br />
user.custom_attribute.civility.value : civilit (Mr, ...) <br />
user.custom_attribute.name.value : nom <br />
user.custom_attribute.surname.value : prnom <br />
--- Il suffit de remplacer le paramtre du milieu par le nom donn au paramtre personnalis <br /><br />
user.friendly_date : abonn depuis le <br />
user.gecos : nom prnom par dfaut, surnom donn dans les paramtres utilisateurs sinon <br />
etc ...
[% END %]
[% IF subaction == "html_news_letter" %]
<label for="url">[%|loc%]URL:[%END%] <input id="url" type="text" size="45" name="url" value="[% url %]" /></label>
......
......@@ -2124,5 +2124,116 @@ span.bottom_page {
border: none!important;
}
/********************/
/* For the calendar */
/********************/
.divCal {
position:absolute;
border:1px [% color_9 %];
background:[% color_9 %];
z-index:500;
}
.divCal a{
text-decoration:none;
width:100%;
}
.divCal table {
font-size:12px;
font-family:Tahoma;
text-align:center;
margin:0px;
width:140px;
}
.divCal td {
margin : 0px;
border:1px solid [% color_8 %];
}
.divCal .zoneTitre {
font-size:12px;
font-family:Tahoma;
text-align:center;
margin:0px;
background:[% color_9 %];
}
.divCal .zoneNav {
font-size:10px;
font-family:Tahoma;
text-align:center;
margin:0px;
cursor:pointer;
}
.divCal .zoneMois {
font-family:Tahoma;
width:70px;
margin:0px;
}
.divCal .zoneAnnee {
font-size:10px;
font-weight:bold;
text-align:right;
margin:0px;
width:100%;
}
.divCal .nSemaine {
font-family:Tahoma;
width:30px;
margin:0px;
color:[% color_4 %];
}
.divCal div{
margin : 0px;
}
.divCal .td {
color:[% color_5 %];
} /*par defaut*/
.divCal .tdx .enWeekend {
background:[% color_8 %];
}
.divCal .tdx .enFeriee {
background:[% color_8 %];
}
.divCal .tdx .enMois {
color:black;
font-weight:bold;
}
.divCal .tdx .aujourdhui {
border:2px solid [% color_7 %];
}
.divCal .tdxNow {
color:black;
font-weight:bold;
}
.divCal .tdxNow:hover {
background:[% color_4 %];
}
.divCal .tdx:hover {
background:[% color_3 %];
}
.divCal .tdx:hover .enWeekend {
background:[% color_6 %];
}
.divCal .tdx:hover .enMois {
color:[% color_2 %];
font-weight:bold;
background:[% color_6 %];
} /*pour firefox */
[% END %]
......@@ -68,6 +68,7 @@ a.input {
margin-top:0;
}
</style>
<![endif]-->
......
......@@ -112,6 +112,7 @@
<li>[%|helploc%]<strong>urlize mode</strong>: this mode allows you not to receive attached documents. However these documents are available in the list archive and you can access them through a <acronym title="Uniform Resource Locator" lang="en" xml:lang="en">URL</acronym> provided in the message.[%END%]</li>
<li>[%|helploc%]<strong>you do not receive your own posts</strong>: this mode allows you not to receive a copy of your own messages.[%END%]</li>
<li>[%|helploc%]<strong>standard (direct reception)</strong>: this mode is the default delivery mode; it cancels any other delivery mode.[%END%]</li>
<li>[%|helploc%]<strong>suspended</strong>: this mode allows you to suspend your subscription to one or more lists for a specified period or not.[%END%]</li>
</ul></li>
<li>[%|helploc%]<strong>Choose a visibility option</strong>:[%END%]
<ul>
......
......@@ -825,4 +825,294 @@ myAddEventListener(window, 'load', makeColorSelectors);
// end browsers -->
</script>
<script type="text/javascript">
/***********************************************************************
* script MICRO-CAL (V4.2) par Amroune Selim (amrounix@gmail.com)
* all copies, releases, modifications or improvements are allowed.
************************************************************************
* Using script to manage the calendar.
* Used by suspend_request.tt2
* Select a start date and end date.
*************************************************************************/
var param_ddeb = {"dfin" : "date_fin", "titre" : "[%|loc%]Start date[%END%]" };
var param_dfin = {"ddeb" : "date_deb", "titre" : "[%|loc%]End date[%END%]" };
/* vars */
var pDefaut = {
"mois" : new Array("[%|loc%]January[%END%]","[%|loc%]February[%END%]","[%|loc%]March[%END%]","[%|loc%]April[%END%]","[%|loc%]May[%END%]","[%|loc%]June[%END%]","[%|loc%]July[%END%]","[%|loc%]August[%END%]","[%|loc%]September[%END%]","[%|loc%]October[%END%]","[%|loc%]November[%END%]","[%|loc%]December[%END%]"),
"jour" : new Array("[%|loc%]Su[%END%]","[%|loc%]Mo[%END%]","[%|loc%]Tu[%END%]","[%|loc%]We[%END%]","[%|loc%]Th[%END%]","[%|loc%]Fr[%END%]","[%|loc%]Sa[%END%]"),
"jLib" : new Array("[%|loc%]Sunday[%END%]","[%|loc%]Monday[%END%]","[%|loc%]Tuesday[%END%]","[%|loc%]Wednesday[%END%]","[%|loc%]Thursday[%END%]","[%|loc%]Friday[%END%]","[%|loc%]Saturday[%END%]"),
"titre" : "[%|loc%]Calendar[%END%]",
"aujourdhui" : "[%|loc%]today[%END%]",
"debutSemaine" : 1, /*debut de la semaine 0=dim,1=lun,...*/