Browse Source

Poursuite ré-écriture pour SPIP3 :

- Mise à plat procédure d'upgrade du plugin
- Report des évolutions de la v1 (champ lien, choix theme,...)
- squelette d'affichage de l'évènement sur le modèle de la dist - 1er jet
svn/attic/branches/V2/109924
julienlfy@gmail.com 11 years ago
parent
commit
29acc9eef6
  1. 3
      .gitattributes
  2. 356
      action/editer_evenement.php
  3. 8
      base/simplecal_base.php
  4. 85
      evenement.html
  5. 217
      formulaires/configurer_evenements.html
  6. 52
      formulaires/configurer_evenements.php
  7. 35
      formulaires/editer_evenement.html
  8. 4
      formulaires/editer_evenement.php
  9. 68
      inc-forum-evenement.html
  10. 41
      inc/simplecal_conf.php
  11. 35
      inc/simplecal_utils.php
  12. 9
      lang/simplecal_en.php
  13. 9
      lang/simplecal_fr.php
  14. 10
      paquet.xml
  15. 68
      simplecal_administrations.php
  16. 1
      simplecal_options.php
  17. 9
      simplecal_pipelines.php

3
.gitattributes vendored

@ -3,6 +3,7 @@ action/editer_evenement.php -text
balise/simple_calendrier.php -text
balise/simplecal_dates.php -text
base/simplecal_base.php -text
/evenement.html -text
exec/simplecal_demo.php -text
formulaires/configurer_evenements.html -text
formulaires/configurer_evenements.php -text
@ -16,7 +17,9 @@ img_pack/simplecal-logo-16.png -text
img_pack/simplecal-logo-24.png -text
img_pack/simplecal-logo-32.png -text
img_pack/simplecal-logo-96.png -text
/inc-forum-evenement.html -text
inc/simplecal_classement.php -text
inc/simplecal_conf.php -text
inc/simplecal_filtres.php -text
inc/simplecal_utils.php -text
lang/paquet-simplecal_fr.php -text

356
action/editer_evenement.php

@ -14,22 +14,22 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
function action_editer_evenement_dist($arg=null) {
if (is_null($arg)){
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
}
if (is_null($arg)){
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
}
// Envoi depuis le formulaire d'edition d'un evenement
if (!$id_evenement = intval($arg)) {
$id_evenement = evenement_inserer(_request('id_parent'));
}
// Envoi depuis le formulaire d'edition d'un evenement
if (!$id_evenement = intval($arg)) {
$id_evenement = evenement_inserer(_request('id_parent'));
}
if (!$id_evenement)
return array(0,''); // erreur
if (!$id_evenement)
return array(0,''); // erreur
$err = evenement_modifier($id_evenement);
$err = evenement_modifier($id_evenement);
return array($id_evenement,$err);
return array($id_evenement,$err);
}
/**
@ -40,54 +40,60 @@ function action_editer_evenement_dist($arg=null) {
*/
function evenement_inserer($id_rubrique) {
include_spip('inc/rubriques');
// Si id_rubrique vaut 0 ou n'est pas definie, creer l'evenement
// dans la premiere rubrique racine
if (!$id_rubrique = intval($id_rubrique)) {
$id_rubrique = sql_getfetsel("id_rubrique", "spip_rubriques", "id_parent=0",'', '0+titre,titre', "1");
}
// La langue a la creation : c'est la langue de la rubrique
// TODO JULIEN : si pas de rubrique => langue par defaut du site
$row = sql_fetsel("lang, id_secteur", "spip_rubriques", "id_rubrique=$id_rubrique");
$lang = $row['lang'];
$id_rubrique = $row['id_secteur']; // garantir la racine
$champs = array(
'id_rubrique' => $id_rubrique,
'statut' => 'prepa',
'date' => date('Y-m-d H:i:s'),
'lang' => $lang,
'langue_choisie' => 'non');
// Envoyer aux plugins
$champs = pipeline('pre_insertion',
array(
'args' => array(
'table' => 'spip_evenements',
),
'data' => $champs
)
);
$id_evenement = sql_insertq("spip_evenements", $champs);
pipeline('post_insertion',
array(
'args' => array(
'table' => 'spip_evenements',
'id_objet' => $id_evenement
),
'data' => $champs
)
);
include_spip('inc/rubriques');
// Si id_rubrique vaut 0 ou n'est pas definie, creer l'evenement
// dans la premiere rubrique racine
if (!$id_rubrique = intval($id_rubrique)) {
$id_rubrique = sql_getfetsel("id_rubrique", "spip_rubriques", "id_parent=0",'', '0+titre,titre', "1");
} else {
$row = sql_fetsel("lang, id_secteur", "spip_rubriques", "id_rubrique=$id_rubrique");
}
// eviter $id_secteur = NULL (erreur sqlite) si la requete precedente echoue
// cas de id_rubrique = -1 par exemple avec plugin "pages"
$id_secteur = isset($row['id_secteur']) ? $row['id_secteur'] : 0;
// La langue a la creation : c'est la langue de la rubrique
// Si pas de rubrique => langue par defaut du site
$lang = isset($row['lang']) ? $row['lang'] : $GLOBALS['meta']['langue_site'];
$champs = array(
'id_rubrique' => $id_rubrique,
'id_secteur' => $id_secteur,
'statut' => 'prepa',
'date' => date('Y-m-d H:i:s'),
'lang' => $lang,
'langue_choisie' => 'non');
// Envoyer aux plugins
$champs = pipeline('pre_insertion',
array(
'args' => array(
'table' => 'spip_evenements',
),
'data' => $champs
)
);
$id_evenement = sql_insertq("spip_evenements", $champs);
pipeline('post_insertion',
array(
'args' => array(
'table' => 'spip_evenements',
'id_objet' => $id_evenement
),
'data' => $champs
)
);
// Lien auteur/evenement
if ($id_evenement > 0 AND $GLOBALS['visiteur_session']['id_auteur']) {
include_spip('action/editer_auteur');
auteur_associer($GLOBALS['visiteur_session']['id_auteur'], array('evenement'=>$id_evenement));
}
if ($id_evenement > 0 AND $GLOBALS['visiteur_session']['id_auteur']) {
include_spip('action/editer_auteur');
auteur_associer($GLOBALS['visiteur_session']['id_auteur'], array('evenement'=>$id_evenement));
}
return $id_evenement;
return $id_evenement;
}
@ -103,34 +109,34 @@ function evenement_inserer($id_rubrique) {
*/
function evenement_modifier ($id_evenement, $set=null) {
include_spip('inc/modifier');
$c = collecter_requests(
// white list
array('titre', 'date_debut', 'date_fin', 'lieu', 'descriptif', 'texte', 'type', 'id_objet'),
// black list
array('id_parent', 'statut'),
// donnees eventuellement fournies
$set
);
// Si l'evenement est publiee, invalider les caches et demander sa reindexation
$t = sql_getfetsel("statut", "spip_evenements", "id_evenement=$id_evenement");
if ($t == 'publie') {
$invalideur = "id='evenement/$id_evenement'";
$indexation = true;
}
modifier_contenu('evenement', $id_evenement,
array(
'nonvide' => array('titre' => _T('info_sans_titre')),
'invalideur' => $invalideur,
'indexation' => $indexation
),
$c);
$c = collecter_requests(array('id_parent', 'statut'),array(),$set);
$err = evenement_instituer($id_evenement, $c);
return $err;
include_spip('inc/modifier');
$c = collecter_requests(
// white list
array('titre', 'date_debut', 'date_fin', 'lieu', 'descriptif', 'texte', 'lien_titre', 'lien_url', 'type', 'id_objet'),
// black list
array('id_parent', 'statut'),
// donnees eventuellement fournies
$set
);
// Si l'evenement est publiee, invalider les caches et demander sa reindexation
$t = sql_getfetsel("statut", "spip_evenements", "id_evenement=$id_evenement");
if ($t == 'publie') {
$invalideur = "id='evenement/$id_evenement'";
$indexation = true;
}
modifier_contenu('evenement', $id_evenement,
array(
'nonvide' => array('titre' => _T('info_sans_titre')),
'invalideur' => $invalideur,
'indexation' => $indexation
),
$c);
$c = collecter_requests(array('id_parent', 'statut'),array(),$set);
$err = evenement_instituer($id_evenement, $c);
return $err;
}
/**
@ -141,100 +147,100 @@ function evenement_modifier ($id_evenement, $set=null) {
* @return string
*/
function evenement_instituer($id_evenement, $c) {
$champs = array();
// Changer le statut de l'evenement ?
$row = sql_fetsel("statut, id_rubrique, lang, langue_choisie", "spip_evenements", "id_evenement=".intval($id_evenement));
$id_rubrique = $row['id_rubrique'];
$statut_ancien = $statut = $row['statut'];
$langue_old = $row['lang'];
$langue_choisie_old = $row['langue_choisie'];
if ($c['statut']
AND $c['statut'] != $statut
AND autoriser('publierdans', 'rubrique', $id_rubrique)) {
$statut = $champs['statut'] = $c['statut'];
}
// Changer de rubrique ?
// Verifier que la rubrique demandee est a la racine et differente
// de la rubrique actuelle
if ($id_parent = intval($c['id_parent'])
AND $id_parent != $id_rubrique
AND (NULL !== ($lang=sql_getfetsel('lang', 'spip_rubriques', "id_parent=0 AND id_rubrique=".intval($id_parent))))) {
$champs['id_rubrique'] = $id_parent;
// - changer sa langue (si heritee)
if ($langue_choisie_old != "oui") {
if ($lang != $langue_old)
$champs['lang'] = $lang;
}
// si l'evenement est publiee
// et que le demandeur n'est pas admin de la rubrique
// repasser l'evenement en statut 'prop'.
if ($statut == 'publie') {
if (!autoriser('publierdans','rubrique',$id_parent))
$champs['statut'] = $statut = 'prop';
}
}
// Envoyer aux plugins
$champs = pipeline('pre_edition',
array(
'args' => array(
'table' => 'spip_evenements',
'id_objet' => $id_evenement,
'action'=>'instituer',
'statut_ancien' => $statut_ancien,
),
'data' => $champs
)
);
if (!$champs) return;
sql_updateq('spip_evenements', $champs, "id_evenement=".intval($id_evenement));
//
// Post-modifications
//
// Invalider les caches
include_spip('inc/invalideur');
suivre_invalideur("id='evenement/$id_evenement'");
// Au besoin, changer le statut des rubriques concernees
include_spip('inc/rubriques');
calculer_rubriques_if($id_rubrique, $champs, $statut_ancien);
// Pipeline
pipeline('post_edition',
array(
'args' => array(
'table' => 'spip_evenements',
'id_objet' => $id_evenement,
'action'=>'instituer',
'statut_ancien' => $statut_ancien,
),
'data' => $champs
)
);
// Notifications
if ($notifications = charger_fonction('notifications', 'inc')) {
$notifications('instituerevenement', $id_evenement,
array('statut' => $statut, 'statut_ancien' => $statut_ancien)
);
}
return ''; // pas d'erreur
$champs = array();
// Changer le statut de l'evenement ?
$row = sql_fetsel("statut, id_rubrique, lang, langue_choisie", "spip_evenements", "id_evenement=".intval($id_evenement));
$id_rubrique = $row['id_rubrique'];
$statut_ancien = $statut = $row['statut'];
$langue_old = $row['lang'];
$langue_choisie_old = $row['langue_choisie'];
if ($c['statut']
AND $c['statut'] != $statut
AND autoriser('publierdans', 'rubrique', $id_rubrique)) {
$statut = $champs['statut'] = $c['statut'];
}
// Changer de rubrique ?
// Verifier que la rubrique demandee est a la racine et differente
// de la rubrique actuelle
if ($id_parent = intval($c['id_parent'])
AND $id_parent != $id_rubrique
AND (NULL !== ($lang=sql_getfetsel('lang', 'spip_rubriques', "id_parent=0 AND id_rubrique=".intval($id_parent))))) {
$champs['id_rubrique'] = $id_parent;
// - changer sa langue (si heritee)
if ($langue_choisie_old != "oui") {
if ($lang != $langue_old)
$champs['lang'] = $lang;
}
// si l'evenement est publiee
// et que le demandeur n'est pas admin de la rubrique
// repasser l'evenement en statut 'prop'.
if ($statut == 'publie') {
if (!autoriser('publierdans','rubrique',$id_parent))
$champs['statut'] = $statut = 'prop';
}
}
// Envoyer aux plugins
$champs = pipeline('pre_edition',
array(
'args' => array(
'table' => 'spip_evenements',
'id_objet' => $id_evenement,
'action'=>'instituer',
'statut_ancien' => $statut_ancien,
),
'data' => $champs
)
);
if (!$champs) return;
sql_updateq('spip_evenements', $champs, "id_evenement=".intval($id_evenement));
//
// Post-modifications
//
// Invalider les caches
include_spip('inc/invalideur');
suivre_invalideur("id='evenement/$id_evenement'");
// Au besoin, changer le statut des rubriques concernees
include_spip('inc/rubriques');
calculer_rubriques_if($id_rubrique, $champs, $statut_ancien);
// Pipeline
pipeline('post_edition',
array(
'args' => array(
'table' => 'spip_evenements',
'id_objet' => $id_evenement,
'action'=>'instituer',
'statut_ancien' => $statut_ancien,
),
'data' => $champs
)
);
// Notifications
if ($notifications = charger_fonction('notifications', 'inc')) {
$notifications('instituerevenement', $id_evenement,
array('statut' => $statut, 'statut_ancien' => $statut_ancien)
);
}
return ''; // pas d'erreur
}
function insert_evenement($id_rubrique) {
return evenement_inserer($id_rubrique);
return evenement_inserer($id_rubrique);
}
function revisions_evenements ($id_evenement, $set=false) {
return evenement_modifier($id_evenement,$set);
return evenement_modifier($id_evenement,$set);
}
?>

8
base/simplecal_base.php

@ -1,6 +1,6 @@
<?php
/**
* Plugin Simple Calendrier pour Spip 2.1.2
* Plugin Simple Calendrier pour Spip 3.0
* Licence GPL (c) 2010-2011 Julien Lanfrey
*
*/
@ -18,7 +18,7 @@ function simplecal_declarer_tables_interfaces($interfaces) {
//$interface['table_des_traitements']['DATE_FIN'][] = 'normaliser_date(%s)';
// ---------------------------------------------------------------------------
// Champs de type 'date' pour la gestion des critères age, age_relatif, etc.
// Champs de type 'date' pour la gestion des criteres age, age_relatif, etc.
// ---------------------------------------------------------------------------
// Note : provoque l'enregistrement de la date de publication (lors de sa modif) dans date
//$interface['table_date']['evenements'] = 'date';
@ -42,7 +42,7 @@ function simplecal_declarer_tables_objets_sql($tables){
"lieu" => "varchar(255) NOT NULL",
"descriptif" => "text NOT NULL",
"texte" => "text NOT NULL",
"date" => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'", // création ou publication (selon statut)
"date" => "datetime NOT NULL DEFAULT '0000-00-00 00:00:00'", // creation ou publication (selon statut)
"statut" => "varchar(8) NOT NULL",
"lang" => "varchar(10) NOT NULL DEFAULT ''",
"langue_choisie" => "varchar(3) NULL DEFAULT 'non'",
@ -56,7 +56,7 @@ function simplecal_declarer_tables_objets_sql($tables){
"KEY id_rubrique" => "id_rubrique"
);
// champs candidats à la jointure
// champs candidats a la jointure
$join = array(
"id_evenement" => "id_evenement",
"id_secteur" => "id_secteur",

85
evenement.html

@ -0,0 +1,85 @@
<BOUCLE_principale(EVENEMENTS) {id_evenement}>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
[(#REM) Cf.: http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/
]<!--[if lt IE 7 ]> <html dir="#LANG_DIR" lang="#LANG" xmlns="http://www.w3.org/1999/xhtml" xml:lang="#LANG" class="[(#LANG_DIR)][ (#LANG)] no-js ie ie6"> <![endif]-->
<!--[if IE 7 ]> <html dir="#LANG_DIR" lang="#LANG" xmlns="http://www.w3.org/1999/xhtml" xml:lang="#LANG" class="[(#LANG_DIR)][ (#LANG)] no-js ie ie7"> <![endif]-->
<!--[if IE 8 ]> <html dir="#LANG_DIR" lang="#LANG" xmlns="http://www.w3.org/1999/xhtml" xml:lang="#LANG" class="[(#LANG_DIR)][ (#LANG)] no-js ie ie8"> <![endif]-->
<!--[if IE 9 ]> <html dir="#LANG_DIR" lang="#LANG" xmlns="http://www.w3.org/1999/xhtml" xml:lang="#LANG" class="[(#LANG_DIR)][ (#LANG)] no-js ie ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html dir="#LANG_DIR" lang="#LANG" xmlns="http://www.w3.org/1999/xhtml" xml:lang="#LANG" class="[(#LANG_DIR)][ (#LANG)] no-js"> <!--<![endif]-->
<head>
<script type='text/javascript'>/*<![CDATA[*/(function(H){H.className=H.className.replace(/\bno-js\b/,'js')})(document.documentElement);/*]]>*/</script>
<title>[(#TITRE|couper{80}|textebrut) - ][(#NOM_SITE_SPIP|textebrut)]</title>
[<link rel="canonical" href="(#URL_EVENEMENT|url_absolue)" />]
<INCLURE{fond=inclure/head} />
</head>
<body class="pas_surlignable page_evenement">
<div class="page">
<INCLURE{fond=inclure/header} />
<INCLURE{fond=inclure/nav,env} />
#FORMULAIRE_RECHERCHE
<div class="main">
[(#REM) Contenu principal : corps de l'evenement ]
<div class="wrapper">
<div class="content" id="content">
<p class="arbo"><a href="#URL_SITE_SPIP/" ><:accueil_site:></a><BOUCLE_ariane(RUBRIQUES){id_rubrique}> &gt; <a href="#URL_RUBRIQUE">[(#TITRE|couper{80})]</a></BOUCLE_ariane>[ &gt; <strong class="on">(#TITRE|couper{80})</strong>]</p>
<div class="cartouche">
<h1 class="#EDIT{titre}">[(#LOGO_EVENEMENT_RUBRIQUE|image_reduire{40,*}) ]#TITRE</h1>
<p class="info-publi"><abbr class="published" title="[(#DATE|date_iso)]">[(#DATE|nom_jour) ][(#DATE|affdate)]</abbr></p>
</div>
[<div class="#EDIT{texte} texte">(#TEXTE)</div>]
[<hr /><p class="#EDIT{hyperlien} hyperlien"><:voir_en_ligne:> : <a href="(#URL_SITE)">[(#NOM_SITE|sinon{[(#URL_SITE|couper{80})]})]</a></p>]
[<div class="notes"><hr />(#NOTES)</div>]
[(#REM) Forum de l'évènement
NB : pour desactiver les forums de l'évènement, supprimez simplement les lignes ci-dessous ]
<a href="#forum" name="forum" id="forum"></a>
<INCLURE{fond=inc-forum-evenement, id_evenement} />
[<h2><:forum:form_pet_message_commentaire:></h2>
(#FORMULAIRE_FORUM)]
</div><!--.content-->
</div><!--.wrapper-->
<div class="aside">
<INCLURE{fond=inclure/navsub, id_rubrique} />
[(#REM) Evenements dans la meme rubrique ]
<B_evenements>
<div class="menu menu_breves">
<h2><:autres_breves:></h2>
<ul>
<BOUCLE_evenements(EVENEMENTS) {id_rubrique} {!par date} {0,10}>
<li>[(#DATE|affdate_jourcourt) &ndash; ]<a href="#URL_EVENEMENT"[ class="(#EXPOSE)"]>#TITRE</a></li>
</BOUCLE_evenements>
</ul>
</div>
</B_evenements>
[(#REM) Menu de navigation mots-cles ]
<B_mots>
<div class="menu">
<h2><:mots_clefs:></h2>
<ul>
<BOUCLE_mots(MOTS) {id_evenement} {par titre}>
<li><a href="#URL_MOT" rel="tag">#TITRE</a></li>
</BOUCLE_mots>
</ul>
</div>
</B_mots>
</div><!--.aside-->
</div><!--.main-->
<INCLURE{fond=inclure/footer,self=#SELF} />
</div><!--.page-->
</body>
</html>
</BOUCLE_principale>[(#INCLURE{fond=404, erreur=<:aucun_evenement:>})]
<//B_principale>

217
formulaires/configurer_evenements.html

@ -1,105 +1,145 @@
<div class="formulaire_spip formulaire_configurer formulaire_#FORM formulaire_#FORM-#ENV{id,nouveau}">
<h3 class='titrem'><img src="#CHEMIN_IMAGE{evenement-24.png}" class="cadre-icone" /><:simplecal:titre_evenements:></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}" method="post">
<div>
[(#ACTION_FORMULAIRE{#ENV{action}})]
[<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}}
<fieldset><legend><:simplecal:config_blocautorisation:></legend>
<p><:simplecal:config_autorisation_explication:></p>
<ul>
<li>
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{simplecal_autorisation_redac})</span>]
<div class='choix'>
<input class='radio' type="radio" name="simplecal_autorisation_redac" value='non'[ (#ENV{simplecal_autorisation_redac}|=={non}|oui)checked="checked"] id="simplecal_autorisation_redac_non"/>
<label for="simplecal_autorisation_redac_non"[(#ENV{simplecal_autorisation_redac}|=={non}|oui) class="actif"]><:simplecal:config_autorisation_redac_non:></label>
</div>
<div class='choix'>
<input class='radio' type="radio" name="simplecal_autorisation_redac" value='oui'[ (#ENV{simplecal_autorisation_redac}|=={oui}|oui)checked="checked"] id="simplecal_autorisation_redac_oui"/>
<label for="simplecal_autorisation_redac_oui"[(#ENV{simplecal_autorisation_redac}|=={oui}|oui) class="actif"]><:simplecal:config_autorisation_redac_oui:></label>
</div>
</li>
</ul>
<p><:simplecal:config_autorisation_explication:></p>
<ul>
<li>
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{simplecal_autorisation_redac})</span>]
<div class='choix'>
<input class='radio' type="radio" name="simplecal_autorisation_redac" value='non'[ (#ENV{simplecal_autorisation_redac}|=={non}|oui)checked="checked"] id="simplecal_autorisation_redac_non" />
<label for="simplecal_autorisation_redac_non"[(#ENV{simplecal_autorisation_redac}|=={non}|oui) class="actif"]><:simplecal:config_autorisation_redac_non:></label>
</div>
<div class='choix'>
<input class='radio' type="radio" name="simplecal_autorisation_redac" value='oui'[ (#ENV{simplecal_autorisation_redac}|=={oui}|oui)checked="checked"] id="simplecal_autorisation_redac_oui" />
<label for="simplecal_autorisation_redac_oui"[(#ENV{simplecal_autorisation_redac}|=={oui}|oui) class="actif"]><:simplecal:config_autorisation_redac_oui:></label>
</div>
</li>
</ul>
</fieldset>
<fieldset><legend><:simplecal:config_blocrubrique:></legend>
<p><:simplecal:config_rubrique_explication:></p>
<ul>
<li>
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{simplecal_rubrique})</span>]
<div class='choix'>
<input class='radio' type="radio" name="simplecal_rubrique" value='partout'[ (#ENV{simplecal_rubrique}|=={partout}|oui)checked="checked"] id="simplecal_rubrique_partout"/>
<label for="simplecal_rubrique_partout"[ (#ENV{simplecal_rubrique}|=={partout}|oui)class="actif"]><:simplecal:config_rubrique_partout:></label>
</div>
<div class='choix'>
<input class='radio' type="radio" name="simplecal_rubrique" value='secteur'[ (#ENV{simplecal_rubrique}|=={secteur}|oui)checked="checked"] id="simplecal_rubrique_secteur"/>
<label for="simplecal_rubrique_secteur"[ (#ENV{simplecal_rubrique}|=={secteur}|oui)class="actif"]><:simplecal:config_rubrique_secteur:></label>
</div>
<div class='choix'>
<input class='radio' type="radio" name="simplecal_rubrique" value='non'[ (#ENV{simplecal_rubrique}|=={non}|oui)checked="checked"] id="simplecal_rubrique_non"/>
<label for="simplecal_rubrique_non"[ (#ENV{simplecal_rubrique}|=={non}|oui)class="actif"]><:simplecal:config_rubrique_non:></label>
</div>
</li>
</ul>
<p><:simplecal:config_rubrique_explication:></p>
<ul>
<li>
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{simplecal_rubrique})</span>]
<div class='choix'>
<input class='radio' type="radio" name="simplecal_rubrique" value='partout'[ (#ENV{simplecal_rubrique}|=={partout}|oui)checked="checked"] id="simplecal_rubrique_partout" />
<label for="simplecal_rubrique_partout"[ (#ENV{simplecal_rubrique}|=={partout}|oui)class="actif"]><:simplecal:config_rubrique_partout:></label>
</div>
<div class='choix'>
<input class='radio' type="radio" name="simplecal_rubrique" value='secteur'[ (#ENV{simplecal_rubrique}|=={secteur}|oui)checked="checked"] id="simplecal_rubrique_secteur" />
<label for="simplecal_rubrique_secteur"[ (#ENV{simplecal_rubrique}|=={secteur}|oui)class="actif"]><:simplecal:config_rubrique_secteur:></label>
</div>
<div class='choix'>
<input class='radio' type="radio" name="simplecal_rubrique" value='non'[ (#ENV{simplecal_rubrique}|=={non}|oui)checked="checked"] id="simplecal_rubrique_non" />
<label for="simplecal_rubrique_non"[ (#ENV{simplecal_rubrique}|=={non}|oui)class="actif"]><:simplecal:config_rubrique_non:></label>
</div>
</li>
</ul>
</fieldset>
<fieldset><legend><:simplecal:config_champs:></legend>
<p><:simplecal:config_champs_explication:></p>
<ul>
#SET{name,simplecal_descriptif}#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}"><:info_descriptif:></label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]<div class="choix">
<input type="radio" name="#GET{name}" id="#GET{name}_oui" value="oui"
[(#ENV{#GET{name}}|=={oui}|oui)checked="checked"] /><label for="#GET{name}_oui"><:item_oui:></label>
&nbsp;&nbsp;
<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:></label>
</div>
</li>
#SET{name,simplecal_texte}#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}"><:info_texte:></label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]<div class="choix">
<input type="radio" name="#GET{name}" id="#GET{name}_oui" value="oui"
[(#ENV{#GET{name}}|=={oui}|oui)checked="checked"] /><label for="#GET{name}_oui"><:item_oui:></label>
&nbsp;&nbsp;
<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:></label>
</div>
</li>
#SET{name,simplecal_lieu}#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}"><:simplecal:info_lieu:></label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]<div class="choix">
<input type="radio" name="#GET{name}" id="#GET{name}_oui" value="oui"
[(#ENV{#GET{name}}|=={oui}|oui)checked="checked"] /><label for="#GET{name}_oui"><:item_oui:></label>
&nbsp;&nbsp;
<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:></label>
</div>
</li>
#SET{name,simplecal_lien}#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}"><:info_lien_hypertexte:></label>[
<span class='erreur_message'>(#GET{erreurs})</span>
]<div class="choix">
<input type="radio" name="#GET{name}" id="#GET{name}_oui" value="oui"
[(#ENV{#GET{name}}|=={oui}|oui)checked="checked"] /><label for="#GET{name}_oui"><:item_oui:></label>
&nbsp;&nbsp;
<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:></label>
</div>
</li>
</ul>
</fieldset>
<fieldset><legend><:simplecal:config_blocreference:></legend>
<p><:simplecal:config_refobj_explication:></p>
<ul>
<li>
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{simplecal_refobj})</span>]
<div class='choix'>
<input class='radio' type="radio" name="simplecal_refobj" value='oui'[ (#ENV{simplecal_refobj}|=={oui}|oui)checked="checked"] id="simplecal_refobj_oui"/>
<label for="simplecal_refobj_oui"[ (#ENV{simplecal_refobj}|=={oui}|oui)class="actif"]><:simplecal:config_refobj_oui:></label>
</div>
<div class='choix'>
<input class='radio' type="radio" name="simplecal_refobj" value='non'[ (#ENV{simplecal_refobj}|=={non}|oui)checked="checked"] id="simplecal_refobj_non"/>
<label for="simplecal_refobj_non"[ (#ENV{simplecal_refobj}|=={non}|oui)class="actif"]><:simplecal:config_refobj_non:></label>
</div>
</li>
</ul>
<p><:simplecal:config_refobj_explication:></p>
<ul>
<li>
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{simplecal_refobj})</span>]
<div class='choix'>
<input class='radio' type="radio" name="simplecal_refobj" value='oui'[ (#ENV{simplecal_refobj}|=={oui}|oui)checked="checked"] id="simplecal_refobj_oui" />
<label for="simplecal_refobj_oui"[ (#ENV{simplecal_refobj}|=={oui}|oui)class="actif"]><:simplecal:config_refobj_oui:></label>
</div>
<div class='choix'>
<input class='radio' type="radio" name="simplecal_refobj" value='non'[ (#ENV{simplecal_refobj}|=={non}|oui)checked="checked"] id="simplecal_refobj_non" />
<label for="simplecal_refobj_non"[ (#ENV{simplecal_refobj}|=={non}|oui)class="actif"]><:simplecal:config_refobj_non:></label>
</div>
</li>
</ul>
</fieldset>
<fieldset><legend><:simplecal:config_blocthemes:></legend>
<p><:simplecal:config_themes_explication:></p>
<ul>
<li>
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{simplecal_themeprive})</span>]
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{simplecal_themepublic})</span>]
<table>
<tr>
<th>
<:simplecal:config_themeprive:> :
<br /><small>(<:simplecal:config_datepicker:>)</small>
</th>
<td valign="top">
[(#VAL{simplecal_themeprive}|simplecal_liste_themes{#ENV{simplecal_themeprive}})]
</td>
</tr>
<tr>
<th>
<:simplecal:config_themepublic:> :
<br /><small>(<:simplecal:config_minicalendrier:>)</small>
</th>
<td valign="top">
[(#VAL{simplecal_themepublic}|simplecal_liste_themes{#ENV{simplecal_themepublic}})]
</td>
</tr>
</table>
</li>
</ul>
<p><:simplecal:config_themes_explication:></p>
<ul>
<li>
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{simplecal_themepublic})</span>]
<table>
<tr>
<th>
<:simplecal:config_themepublic:> :
</th>
<td valign="top">
[(#VAL{simplecal_themepublic}|simplecal_liste_themes{#ENV{simplecal_themepublic}})]
</td>
</tr>
</table>
</li>
</ul>
</fieldset>
@ -110,7 +150,8 @@
<input type="submit" class="submit" name="ok" value="<:bouton_enregistrer:>" />
</p>
</div>
</form>
</form>
]
</div>

52
formulaires/configurer_evenements.php

@ -1,34 +1,58 @@
<?php
/**
* Plugin Simple Calendrier pour Spip 2.1.2
* Plugin Simple Calendrier pour Spip 3.0
* Licence GPL (c) 2010-2011 Julien Lanfrey
*
*/
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('inc/simplecal_conf');
function formulaires_configurer_evenements_charger_dist(){
$valeurs = array();
$valeurs['simplecal_autorisation_redac'] = $GLOBALS['meta']['simplecal_autorisation_redac'];
$valeurs['simplecal_rubrique'] = $GLOBALS['meta']['simplecal_rubrique'];
$valeurs['simplecal_refobj'] = $GLOBALS['meta']['simplecal_refobj'];
$valeurs['simplecal_themeprive'] = $GLOBALS['meta']['simplecal_themeprive'];
$valeurs['simplecal_themepublic'] = $GLOBALS['meta']['simplecal_themepublic'];
$metas = array(
"simplecal_autorisation_redac",
"simplecal_rubrique",
"simplecal_refobj",
"simplecal_descriptif",
"simplecal_texte",
"simplecal_lieu",
"simplecal_lien",
"simplecal_themepublic"
);
return $valeurs;
$valeurs = array();
foreach($metas as $m) {
$valeurs[$m] = $GLOBALS['meta'][$m];
}
return $valeurs;
}
function formulaires_configurer_evenements_verifier_dist(){
$retour = array();
$retour = array();
return $retour;
}
function formulaires_configurer_evenements_traiter_dist(){
include_spip('inc/config');
appliquer_modifs_config();
return array('message_ok'=>'');
$res = array('editable'=>true);
$metas = array(
"simplecal_autorisation_redac",
"simplecal_rubrique",
"simplecal_refobj",
"simplecal_descriptif",
"simplecal_texte",
"simplecal_lieu",
"simplecal_lien",
"simplecal_themepublic"
);
foreach($metas as $m) {
if (!is_null($v=_request($m))) {
ecrire_meta($m, $v);
}
}
$res['message_ok'] = _T('config_info_enregistree');
return $res;
}
?>

35
formulaires/editer_evenement.html

@ -49,24 +49,26 @@
<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>]
<!-- parametre 'breve' pour avoir une liste de secteur (chercher_rubrique pas tres generique...) -->
[(#VAL|chercher_rubrique{#ENV{id_evenement},#ENV{id_parent},'breve',#ENV{id_secteur},#ENV**{config}|table_valeur{restreint},0,form_simple})]
<!-- depuis peu, cela ne fonctionne plus car chercher_rubrique dans filtre_ecrire.php teste une autorisation sur l'objet... -->
[(#VAL|chercher_rubrique{#ENV{id_evenement},#ENV{id_parent},'evenement',#ENV{id_secteur},#ENV**{config}|table_valeur{restreint},0,form_simple})]
</li>]
[(#REM) 'Lieu' est un champ optionnel]
[(#CONFIG{simplecal_lieu}|=={oui}|oui)
<li class="editer_descriptif[ (#ENV**{erreurs}|table_valeur{lieu}|oui)erreur]">
<label for="lieu"><:simplecal:info_lieu:> : </label>
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{lieu})</span>]
<input type="text" id="lieu" name="lieu" value="#ENV{lieu}" class="text" size="20" />
</li>
</li>]
[(#REM) 'Descriptif' est un champ obligatoire]
[(#CONFIG{simplecal_descriptif}|=={oui}|oui)
<li class="editer_descriptif[ (#ENV**{erreurs}|table_valeur{descriptif}|oui)erreur]">
<label for="ta_descriptif"><:simplecal:info_descriptif_rapide:> : </label>
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{descriptif})</span>]
<textarea name='descriptif' id='ta_descriptif'[ lang='(#LANG)'] rows='5' cols='40'>[(#ENV**{descriptif})]</textarea>
</li>
</li>]
[(#REM) 'Reference' est un champ optionnel]
[(#CONFIG{simplecal_refobj}|=={oui}|oui)
@ -75,10 +77,10 @@
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{ref})</span>]
<div class="explication"><:simplecal:explication_ref:></div>
<input type="text" id="ref" name="ref" value="[(#ENV**{ref})]" class="text" size="20" />
</li>
]
</li>]
[(#REM) 'Texte' est un champ optionnel]
[(#CONFIG{simplecal_texte}|=={oui}|oui)
<li class="editer_descriptif[ (#ENV**{erreurs}|table_valeur{texte}|oui)erreur]">
<label for="texte">
[(#CONFIG{simplecal_refobj}|=={non}|oui)<:simplecal:info_texte:>]
@ -87,7 +89,28 @@
[<span class='erreur_message'>(#ENV**{erreurs}|table_valeur{texte})</span>]
<div class="explication"><:simplecal:explication_texte:></div>
<textarea name='texte' id='texte' class='inserer_barre_edition inserer_previsualisation'[ lang='(#LANG)'] rows='20' cols='40'>[(#ENV**{texte})]</textarea>
</li>]
[(#CONFIG{simplecal_lien}|=={oui}|oui)
<li class="editer_liens_sites fieldset">
<fieldset>
<h3 class="legend"><:entree_liens_sites:></h3>
<ul>
<li class="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_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>
]
</ul>

4
formulaires/editer_evenement.php

@ -133,6 +133,10 @@ function formulaires_editer_evenement_traiter_dist($id_evenement='new', $id_rubr
// On reconstitue les champs 'type' et 'id_objet' à partir du champ 'ref'
$config = $config_fonc($row);
//print_r($row);
//die("yeah !");
if ($config['simplecal_refobj'] == 'oui'){
$ref = trim(_request('ref'));
if ($ref){

68
inc-forum-evenement.html

@ -0,0 +1,68 @@
[(#REM) Cette balise (invisible) provoque le recalcul du forum
la premiere fois qu'un message est poste (cf. inc/invalideur). ]
[(#PARAMETRES_FORUM|?{''})]
[(#REM) Messages du forum ]
<B_comments>
<div class="comments comments-thread comments-thread-1">
<h2><:messages_forum:></h2>
<ul class="comments-items">
<BOUCLE_comments(FORUMS?) {id_rubrique ?}{id_evenement ?} {par date}>
<li class="comment-item comment-fil[ (#COMPTEUR_BOUCLE|alterner{'odd','even'})][ (#COMPTEUR_BOUCLE|=={1}|oui)first][ (#COMPTEUR_BOUCLE|=={#TOTAL_BOUCLE}|oui)last][ (#EXPOSE)]">
<div class="comment hreview">
<a href="#comment#ID_FORUM" name="comment#ID_FORUM" id="comment#ID_FORUM"></a>
<a href="#forum#ID_FORUM" name="forum#ID_FORUM" id="forum#ID_FORUM"></a>
<p class="comment-meta">
<a rel="self bookmark" href="#forum#ID_FORUM" title="<:forum:forum_permalink:> #ID_FORUM" class="permalink">[(#CONFIG{forums_titre}|!={non}|oui)<span class="permalink">#COMPTEUR_BOUCLE.</span>
<strong class="#EDIT{titre} comment-titre">[(#TITRE), ]</strong>]
<small><abbr class="dtreviewed"[ title="(#DATE|date_iso)"]>[(#DATE|affdate_jourcourt)][, (#DATE|heures)][:(#DATE|minutes)]</abbr>[<span class="sep">, </span><:par_auteur:> <span class="#EDIT{qui}">(#NOM|couper{80})</span>]</small></a>
</p>
<div class="#EDIT{texte} comment-content description">
[(#TEXTE|lignes_longues)]
[<div class="comment-notes">(#NOTES|safehtml|lignes_longues)</div>]
[<p class="#EDIT{hyperlien} hyperlien"><:voir_en_ligne:> : <a href="(#URL_SITE)" class="spip_out">[(#NOM_SITE|sinon{[(#URL_SITE|couper{80})]})]</a></p>]
<B_doc><div class="comment-doc"><BOUCLE_doc(DOCUMENTS){id_forum}>
[(#EXTENSION|match{'^(gif|jpg|png)$'}|?{
[(#MODELE{emb}|image_reduire{500,*})]
,
#LOGO_DOCUMENT{#URL_DOCUMENT}
})]
</BOUCLE_doc></div></B_doc>
</div>
</div>
<B_comments-fils>
<ul class="comments-items">
<BOUCLE_comments-fils(FORUMS){id_thread}{id_forum!=#_comments:ID_FORUM}{par date}>
<li class="comment-item comment-fil[ (#COMPTEUR_BOUCLE|=={1}|oui)first][ (#COMPTEUR_BOUCLE|=={#TOTAL_BOUCLE}|oui)last]">
<div class="comment hreview">
<a href="#comment#ID_FORUM" name="comment#ID_FORUM" id="comment#ID_FORUM"></a>
<a href="#forum#ID_FORUM" name="forum#ID_FORUM" id="forum#ID_FORUM"></a>
<p class="comment-meta">
<a rel="self bookmark" href="#forum#ID_FORUM" title="<:forum:forum_permalink:> #ID_FORUM" class="permalink">[(#CONFIG{forums_titre}|!={non}|oui)<span class="permalink">#COMPTEUR_BOUCLE.</span>
<strong class="#EDIT{titre} comment-titre">[(#TITRE), ]</strong>]
<small><abbr class="dtreviewed"[ title="(#DATE|date_iso)"]>[(#DATE|affdate_jourcourt)][, (#DATE|heures)][:(#DATE|minutes)]</abbr>[<span class="sep">, </span><:par_auteur:> <span class="#EDIT{qui}">(#NOM|couper{80})</span>]</small></a>
</p>
<div class="#EDIT{texte} comment-content description">
[(#TEXTE|lignes_longues)]
[<div class="comment-notes">(#NOTES|safehtml|lignes_longues)</div>]
[<p class="#EDIT{hyperlien} hyperlien"><:voir_en_ligne:> : <a href="(#URL_SITE)" class="spip_out">[(#NOM_SITE|sinon{[(#URL_SITE|couper{80})]})]</a></p>]
<B_doc2><div class="comment-doc"><BOUCLE_doc2(DOCUMENTS){id_forum}>
[(#EXTENSION|match{'^(gif|jpg|png)$'}|?{
[(#MODELE{emb}|image_reduire{500,*})]
,
#LOGO_DOCUMENT{#URL_DOCUMENT}
})]
</BOUCLE_doc2></div></B_doc2>
</div>
</div>
</li>
</BOUCLE_comments-fils>
</ul>
</B_comments-fils>
</li>
</BOUCLE_comments>
</ul>
</div>
</B_comments>

41
inc/simplecal_conf.php

@ -0,0 +1,41 @@
<?php
/**
* Plugin Simple Calendrier pour Spip 3
* Licence GPL (c) 2010-2011 Julien Lanfrey
*
*/
if (!defined("_ECRIRE_INC_VERSION")) return;
function simplecal_liste_themes($select_name, $choix){
// Version Php5
//$dir_theme = _DIR_SIMPLECAL_PRIVE.'css/datepicker/';
//$dirs = scandir($dir_theme, 0);
//$dirs = array_slice ($dirs, 2);
// Version Php4
$dir_theme = _DIR_SIMPLECAL_PRIVE.'css/datepicker/';
$dh = opendir($dir_theme);
while (false !== ($filename = readdir($dh))) {
$dirs[] = str_replace(".css", "", $filename);
}
sort($dirs);
$dirs = array_slice($dirs, 2); // retire les 2 premiers dossiers (. et ..)
// -----
$s="";
$s.="\n<select name=\"$select_name\">";
foreach ($dirs as $dir){
if ($dir == $choix){
$s.="\n\t<option name=\"$dir\" selected=\"selected\">$dir</option>";
} else {
$s.="\n\t<option name=\"$dir\">$dir</option>";
}
}
$s.="\n</select>";
return $s;
}
?>

35
inc/simplecal_utils.php

@ -195,39 +195,4 @@ function simplecal_get_where_rubrique_exclure($avec_and=true){
return $condition;
}
function simplecal_liste_themes($select_name, $choix){
// Version Php5 : ne fonctionne pas facilement sous OVH
//$dir_theme = _DIR_SIMPLECAL_PRIVE.'css/datepicker/';
//$dirs = scandir($dir_theme, 0);
//$dirs = array_slice ($dirs, 2);
// Version Php4
$dir_theme = _DIR_SIMPLECAL_PRIVE.'css/datepicker/';
$dh = opendir($dir_theme);
while (false !== ($filename = readdir($dh))) {
$dirs[] = $filename;
}
sort($dirs);
$dirs = array_slice ($dirs, 2); // retire les 2 premiers dossiers (. et ..)
// -----
$s="";
$s.="\n<select name=\"$select_name\">";
foreach ($dirs as $dir){
if ($dir == $choix){
$s.="\n\t<option name=\"$dir\" selected=\"selected\">$dir</option>";
} else {
$s.="\n\t<option name=\"$dir\">$dir</option>";
}
}
$s.="\n</select>";
return $s;
}
?>

9
lang/simplecal_en.php

@ -32,13 +32,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'config_refobj_oui' => "Enable text by reference",
'config_refobj_non' => "Disable text by reference",
'config_refobj_explication' => "Enable 'text by reference' to allow articles/breves to be in calendar.",
'config_themes_explication' => "You can choose a theme (color set) for the 'datepicker' in private area and for the 'little calendar' in public area.",
'config_themes_explication' => "You can choose a theme (color set) for the 'little calendar' in public area.",
'config_autorisation_explication' => "You can choose if event creation are enabled for editors.",
'config_rubrique_explication' => "If you want to manage a simple calendar for your site, let this option disabled. It is possible to use keywords for categorised your events.<br />But, if you want to manage multiple calendar, and display distinct events for each folder, you can enable it.",
'config_themeprive' => "Private area theme",
'config_themepublic' => "Public area theme",
'config_datepicker' => "date picker",
'config_minicalendrier' => "little calendar",
'config_themepublic' => "Mini-calendar theme (public section)",
'config_blocreference' => "References",
'config_blocthemes' => "Themes",
'config_blocautorisation' => "Autorisations",
@ -48,6 +45,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'config_rubrique_partout' => 'Yes, create events in folder.',
'config_rubrique_secteur' => 'Yes, create events in 1st level folder (sector).',
'config_rubrique_non' => 'No, it makes no sens for me.',
'config_champs' => 'Events content',
'config_champs_explication' => 'Based on the layout chosen for your site, you can decide which elements in the following list should be available.',
// D

9
lang/simplecal_fr.php

@ -30,13 +30,10 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'config_refobj_oui' => "Activer le texte par r&eacute;f&eacute;rence",
'config_refobj_non' => "D&eacute;sactiver le texte par r&eacute;f&eacute;rence",
'config_refobj_explication' => "Activer le 'texte par r&eacute;f&eacute;rence' pour permettre aux articles/breves de figurer dans le calendrier. C'est le texte de l'&eacute;v&egrave;nement qui pourra alors &ecirc;tre remplac&eacute; par celui de l'article/de la br&egrave;ve choisi...",
'config_themes_explication' => "Vous pouvez choisir un th&eacute;me (jeu de couleurs) pour l'affichage du 'datepicker' dans l'espace priv&eacute; ainsi que pour l'affichage du mini calendrier de l'espace public.",
'config_themes_explication' => "Vous pouvez choisir un th&eacute;me (jeu de couleurs) pour l'affichage du mini calendrier de l'espace public.",
'config_autorisation_explication' => "Indiquez qui est autoris&eacute; &agrave; cr&eacute;er des &eacute;v&egrave;nements.",
'config_rubrique_explication' => "Si vous souhaitez g&eacute;rer un simple agenda pour votre site, inutile d'activer cette option. Au besoin, il vous est toujours possible d'utiliser les mots cl&eacute;s pour cat&eacute;goriser vos &eacute;v&egrave;nements.<br />Si par contre, vous voulez g&eacute;rer plusieurs agendas, et afficher les &eacute;v&egrave;nements en fonction de la rubrique visit&eacute;e, cette option est faite pour vous.",
'config_themeprive' => "Th&egrave;me espace priv&eacute;",
'config_themepublic' => "Th&egrave;me espace public",
'config_datepicker' => "date picker",
'config_minicalendrier' => "mini-calendrier",
'config_themepublic' => "Th&egrave;me pour le mini-calendrier (espace public)",
'config_blocreference' => "R&eacute;f&eacute;rences",
'config_blocthemes' => "Th&egrave;mes",
'config_blocautorisation' => "Autorisations",
@ -46,6 +43,8 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'config_rubrique_partout' => 'Oui, cr&eacute;er les &eacute;v&egrave;nements dans les rubriques.',
'config_rubrique_secteur' => 'Oui, cr&eacute;er les &eacute;v&egrave;nements dans les secteurs seulement.',
'config_rubrique_non' => 'Non, cela n\'a pas de sens pour moi.',
'config_champs' => 'Contenu des &eacute;v&egrave;nements',
'config_champs_explication' => 'Selon la maquette adopt&eacute;e pour votre site, vous pouvez d&eacute;cider quels champs doivent &ecirc;tre disponibles.',
// D
'date' => 'Date',

10
paquet.xml

@ -5,7 +5,7 @@
etat="dev"
compatibilite="[3.0.0-dev;["
logo="prive/themes/spip/images/evenement-32.png"
schema="1.2.0"
schema="2.0.0"
documentation="http://www.spip-contrib.net/Simple-Calendrier-v1"
>
@ -19,7 +19,6 @@
<pipeline nom="configurer_liste_metas" inclure="simplecal_pipelines.php" /> <!-- OK SPIP3 -->
<pipeline nom="autoriser" inclure="simplecal_autoriser.php" />
<pipeline nom="header_prive" inclure="simplecal_pipelines.php" />
<pipeline nom="rechercher_liste_des_champs" inclure="simplecal_pipelines.php" />
<pipeline nom="insert_head" inclure="simplecal_pipelines.php" />
<pipeline nom="boite_infos" inclure="simplecal_pipelines.php" /> <!-- OK SPIP3 -->
<pipeline nom="affiche_milieu" inclure="simplecal_pipelines.php" /> <!-- OK SPIP3 -->
@ -31,12 +30,7 @@
<pipeline nom="accueil_informations" inclure="simplecal_pipelines.php" /> <!-- OK SPIP3 -->
<pipeline nom="compter_contributions_auteur" inclure="simplecal_pipelines.php" /> <!-- OK SPIP3 -->
<pipeline nom="optimiser_base_disparus" inclure="simplecal_pipelines.php" /> <!-- OK SPIP3 -->
<!-- prise en compte du squelette evenement.html pour les urls de type spip.php?evenement123 -->
<pipeline nom="declarer_url_objets" inclure="simplecal_pipelines.php" />
<pipeline nom="propres_creer_chaine_url" inclure="simplecal_pipelines.php" />
<!-- Prendre en compte la table des évènements dans les recherches -->
<pipeline nom="rechercher_liste_des_champs" inclure="simplecal_pipelines.php" />
@ -46,5 +40,5 @@
<menu nom="evenements" titre="simplecal:icone_evenements" parent="menu_edition" icone="images/evenement-24.png" action="evenements" parametres="mode=avenir" />
<menu nom="evenement_creer" titre="simplecal:icone_nouvel_evenement" parent="outils_rapides" icone="images/evenement-new-16.png" action="evenement_edit" parametres="new=oui" />
<menu nom="evenement_creer" titre="simplecal:icone_nouvel_evenement" parent="outils_rapides" icone="images/evenement-new-16.png" action="evenement_edit" parametres="new=oui" />
</paquet>

68
simplecal_administrations.php

@ -6,8 +6,11 @@
*
*/
if (!defined('_ECRIRE_INC_VERSION')) return;
/**
* Installation/maj des tables forum
* Installation/maj de la table evenement
*
* @param string $nom_meta_base_version
* @param string $version_cible
@ -16,13 +19,13 @@ function simplecal_upgrade($nom_meta_base_version,$version_cible){
// cas particulier :
// si plugin pas installe mais que la table existe
// considerer que c'est un upgrade depuis v 1.0.0
// considerer que c'est un upgrade depuis v 1.0
// pour gerer l'historique des installations SPIP <=2.1
if (!isset($GLOBALS['meta'][$nom_meta_base_version])){
$trouver_table = charger_fonction('trouver_table','base');
$trouver_table(''); // vider le cache des descriptions !
if ($desc = $trouver_table('spip_evenements') and isset($desc['field']['id_article'])){
ecrire_meta($nom_meta_base_version,'1.0.0');
ecrire_meta($nom_meta_base_version,'1.0');
}
// si pas de table en base, on fera une simple creation de base
}
@ -31,39 +34,64 @@ function simplecal_upgrade($nom_meta_base_version,$version_cible){
$maj['create'] = array(
array('maj_tables',array('spip_evenements')),
);
//1.1
$maj['1.1.0'] = array(
array('sql_alter',"TABLE spip_evenements ADD id_secteur bigint(21) NOT NULL DEFAULT '0' AFTER id_evenement"),
$maj['1.1'] = array(
array('sql_alter',"TABLE spip_evenements ADD id_secteur bigint(21) NOT NULL DEFAULT '0' AFTER id_evenement"),
array('sql_alter',"TABLE spip_evenements ADD id_rubrique bigint(21) NOT NULL DEFAULT '0' AFTER id_secteur"),
array('sql_alter',"TABLE spip_evenements ADD INDEX id_secteur (id_secteur)"),
array('sql_alter',"TABLE spip_evenements ADD INDEX id_rubrique (id_rubrique)"),
array('sql_alter',"TABLE spip_evenements DROP INDEX id_auteur"),
array('sql_alter',"TABLE spip_evenements DROP id_auteur"),
array('sql_alter',"TABLE spip_evenements CHANGE id_objet id_objet BIGINT(21) NOT NULL DEFAULT '0'")
array('sql_alter',"TABLE spip_evenements CHANGE id_objet id_objet BIGINT(21) NOT NULL DEFAULT '0'"),
);
$maj['1.2.0'] = array(
array('sql_alter',"TABLE spip_evenements CHANGE maj maj timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP")
$maj['1.2'] = array(
array('sql_alter',"TABLE spip_evenements CHANGE maj maj timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP"),
);
//TODO JULIEN : intercaler ici (1.3) la suppression du meta theme prive...
// Le point d'après devient donc 1.4 (car 1.3 = derniere version sous SPIP 2.1
$maj['1.3'] = array(
array('simplecal_meta_1_3'),
);
$maj['1.4'] = array(
array('sql_alter',"TABLE spip_evenements ADD lien_titre VARCHAR(255) NOT NULL AFTER texte"),
array('sql_alter',"TABLE spip_evenements ADD lien_url VARCHAR(255) NOT NULL AFTER lien_titre"),
array('simplecal_meta_1_4'),
);
// TODO JULIEN : initialiser ces colonnes avec 'non' et la langue par défaut du site...
// sinon, on n'a pas le lien "[Changer]" sur le menu de langue
// TODO JULIEN : migrer dans spip_mots_objets et spip_auteurs_objets
$maj['1.3.0'] = array(
// SPIP 3
include_spip('maj/svn10000'); // migration des mots cles/auteurs
$maj['2.0.0'] = array(
array('sql_alter',"TABLE spip_evenements ADD lang varchar(10) NOT NULL DEFAULT '' AFTER statut"),
array('sql_alter',"TABLE spip_evenements ADD langue_choisie varchar(3) NULL DEFAULT 'non' AFTER lang"),
array('maj_liens','mot','evenement'),
array('sql_drop_table',"spip_mots_evenements"),
array('sql_drop_table',"spip_auteurs_evenements")
array('maj_liens','auteur','evenement'),
array('sql_drop_table',"spip_auteurs_evenements"),
array('simplecal_meta_2_0_0'),
);
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
}
function simplecal_meta_1_3(){
effacer_meta('simplecal_themeprive');
}
function simplecal_meta_1_4(){
ecrire_meta('simplecal_descriptif', 'oui');
ecrire_meta('simplecal_texte', 'oui');
ecrire_meta('simplecal_lieu', 'oui');
ecrire_meta('simplecal_lien', 'non');
}
function simplecal_meta_2_0_0(){
// TODO : initialiser la colonne 'lang' avec la langue par défaut du site...
// sinon, on n'a pas le lien "[Changer]" sur le menu de langue
}
/**
* Desinstallation/suppression des tables
*
@ -77,7 +105,11 @@ function simplecal_vider_tables($nom_meta_base_version) {
effacer_meta('simplecal_refobj');
effacer_meta('simplecal_themeprive');
effacer_meta('simplecal_themepublic');
effacer_meta('simplecal_descriptif');
effacer_meta('simplecal_texte');
effacer_meta('simplecal_lieu');
effacer_meta('simplecal_lien');
effacer_meta($nom_meta_base_version);
}
?>
?>

1
simplecal_options.php

@ -12,7 +12,6 @@ define("_DIR_SIMPLECAL_PRIVE", _DIR_PLUGIN_SIMPLECAL."prive/");
include_spip('inc/simplecal_classement'); // pour la page evenements !
// ------------------------------------
// Plugin Corbeille - compatibilite
// ------------------------------------

9
simplecal_pipelines.php

@ -180,7 +180,10 @@ function simplecal_configurer_liste_metas($metas) {
$metas['simplecal_autorisation_redac'] = 'non'; // [oui, non]
$metas['simplecal_rubrique'] = 'non'; // [non, secteur, partout]
$metas['simplecal_refobj'] = 'non'; // [oui, non]
$metas['simplecal_themeprive'] = 'base';
$metas['simplecal_descriptif'] = 'oui'; // [oui, non]
$metas['simplecal_texte'] = 'oui'; // [oui, non]
$metas['simplecal_lieu'] = 'oui'; // [oui, non]
$metas['simplecal_lien'] = 'non'; // [oui, non]
$metas['simplecal_themepublic'] = 'base';
return $metas;
}
@ -231,10 +234,10 @@ function simplecal_compter_contributions_auteur($flux){
// Définir le squelette evenement.html pour les urls de type spip.php?evenement123
// http://programmer.spip.org/declarer_url_objets
function simplecal_declarer_url_objets($array){
/*function simplecal_declarer_url_objets($array){
$array[] = 'evenement';
return $array;
}
}*/
// cf. urls/propres.php

Loading…
Cancel
Save