Valider 714458ef rédigé par esj's avatar esj
Parcourir les fichiers

Complément à r18368 sur la refonte du XHTML et des CSS des calendriers:

le format ICS sur lequel repose la structure de données de ce code admet que le champ ATTENDEE peut apparaître plusieurs fois, ce qui n'était pas pris en compte auparavant ici. On accepte à présent que cette structure de données possède un  sous-tableau pour spécifier ce cas, et on typographie autant de liens Mailto quand c'est un email valide. Tant qu'à faire, on introduit des classes nommées et on évacue encore un peu de styles en dur. A noter que le RFC d'ICS n'est plus le 2445, un [http://tools.ietf.org/html/rfc5545 nouveau RFC] étant paru il y a 2 ans.

Par ailleurs, r18480 n'avait pas vraiment rétabli la validité XML du formulaire de datation.
parent a3ccedcc
Chargement en cours
Chargement en cours
Chargement en cours
Chargement en cours
+30 −10
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -687,20 +687,27 @@ function http_calendrier_ics_div($evts, $date, $debut, $fin, $dimheure, $dimjour
		else $decale = ($echelle >= 120) ? 4 : 3;
		if ($bas > $bas_prec) $bas_prec = $bas;
			
		$colors = $evenement['CATEGORIES'];
		$url = isset($evenement['URL']) ? $evenement['URL'] : ''; 
		$desc = PtoBR(propre($evenement['DESCRIPTION']));
		$perso = substr($evenement['ATTENDEE'], 0,strpos($evenement['ATTENDEE'],'@'));
		$perso = construire_personne_ics($evenement['ATTENDEE']);
		$lieu = isset($evenement['LOCATION']) ?	$evenement['LOCATION'] : '';
		$sum = typo($evenement['SUMMARY']);
		if (!$sum) { $sum = $desc; $desc = '';}
		if (!$sum) { $sum = $lieu; $lieu = '';}
		if (!$sum) { $sum = $perso; $perso = '';}
		if ($sum)
			$sum = "<span class='calendrier-verdana'><span  style='font-weight: bold;'>$sum</span>$lieu $perso</span>";
		if (!$sum) { $sum = textebrut($perso);}
		if ($sum) {
			if ($url)
			  $sum = http_href(quote_amp($url), $sum, attribut_html($desc), '', "calendrier-summary calendrier-url $colors");
			else $sum = "<span class='calendrier-summary'>$sum</span>";
		}

		if (($largeur > 90) && $desc)
			$sum .=  "\n<br /><span class='calendrier-noir'>$desc</span>";
		$colors = $evenement['CATEGORIES'];
		$sum = ((!$url) ? $sum : http_href(quote_amp($url), $sum, attribut_html($desc),"border: 0",$colors));
		if ($lieu)
			$sum .= "\n<span class='calendrier-location'>$lieu</span>";
		if ($perso AND $perso != $sum)
			$sum .= "\n<span class='calendrier-attendee $colors'>$perso</span>";
		$sum = pipeline('agenda_rendu_evenement',array('args'=>array('evenement'=>$evenement,'type'=>'ics'),'data'=>$sum));

		$width = ($largeur - 2 * ($padding+1));
@@ -840,8 +847,8 @@ function http_calendrier_avec_heure($evenement, $amj)
	if (!$sum) $sum = $desc;
	if ($lieu = $evenement['LOCATION'])
	  $sum .= '<br />' . $lieu;
	if ($perso = $evenement['ATTENDEE'])
	  $sum .=  '<br />' . substr($evenement['ATTENDEE'], 0,strpos($evenement['ATTENDEE'],'@'));
	if ($perso = construire_personne_ics($evenement['ATTENDEE']))
	  $sum .=  '<br />' . $perso;
	if ($evenement['URL'])
	  $sum = http_href(quote_amp($evenement['URL']), $sum, attribut_html($desc), 'border: 0');

@@ -872,6 +879,19 @@ function http_calendrier_avec_heure($evenement, $amj)
	return "\n<div class='calendrier-arial10 calendrier-evenement $opacity'>$sum\n</div>\n"; 
}

// Gestion du sous-tableau ATTENDEE.
// dans les version anterieures, ce n'etait pas un tableau

function construire_personne_ics($personnes)
{
  $r = is_array($personnes) ? $personnes : array($personnes);
  foreach ($r as $k => $p) {
    if ($a = email_valide($p) AND preg_match('/^[^@]+/', $a, $m))
      $r[$k] = "<a href='mailto:$a'>".preg_replace('/[.]/', ' ', $m[0]). "</a>";
  }
  return join(' ', $r);
}

// fabrique un agenda sur 3 mois. 
// fonction appelee par le filtre agenda_affiche du squelette agenda_trimestre,
// lui-meme issu d'un Ajax construit par la fonction http_calendrier_navigation,
@@ -1449,7 +1469,7 @@ function quete_calendrier_interval_breves($avant, $apres, &$evenements) {
// http://doc.spip.org/@quete_calendrier_interval_rv
function quete_calendrier_interval_rv($avant, $apres) {
	global $connect_id_auteur;
	$evenements= array();
	$evenements= $auteurs = array();
	if (!$connect_id_auteur) return $evenements;
	$result=sql_select("M.id_message, M.titre, M.texte, M.date_heure, M.date_fin, M.type", "spip_messages AS M LEFT JOIN spip_auteurs_messages AS L ON (L.id_message=M.id_message)", "(L.id_auteur=$connect_id_auteur OR M.type='affich') AND M.rv='oui'  AND ((M.date_fin >= $avant OR M.date_heure >= $avant) AND M.date_heure <= $apres) AND M.statut='publie'", "M.id_message", "M.date_heure");
	while($row=sql_fetch($result)){
@@ -1495,7 +1515,7 @@ function quete_calendrier_interval_rv($avant, $apres) {
				'DESCRIPTION' => $row['texte'],
				'SUMMARY' => $row['titre'],
				'CATEGORIES' => $cat,
				'ATTENDEE' => (count($auteurs) == 0) ? '' : join($auteurs,", "));
				'ATTENDEE' => $auteurs);
			
			$j ++; 
			$ladate = date("Y-m-d",mktime (1,1,1,$mois_avant, ($j + $jour_avant), $annee_avant));
+5 −5
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -118,14 +118,14 @@ function dater_redac($id, $type, $script, $possedeDateRedac, $date_redac, $fct_a

	$js = "\"findObj_forcer('valider_date_redac-$id').style.visibility='visible';\"";
	$label =
		'<input type="radio" name="avec_redac" value="non" id="avec_redac_on$id"' .
		($possedeDateRedac ? '' : ' checked="checked"') .
		"<input type='radio' name='avec_redac' value='non' id='avec_redac_on$id'" .
		($possedeDateRedac ? '' : " checked='checked'") .
		" onclick=$js" .
		' /> <label for="avec_redac_on$id">'.
		" /> <label for='avec_redac_on$id'>" .
		_T('texte_date_publication_anterieure_nonaffichee').
		'</label>' .
		'<br /><input type="radio" name="avec_redac" value="oui" id="avec_redac_off$id"' .
		(!$possedeDateRedac ? '' : ' checked="checked"') .
		"<br /><input type='radio' name='avec_redac' value='oui' id='avec_redac_off$id'" .
		(!$possedeDateRedac ? '' : " checked='checked'") .
		" onclick=$js /> <label for='avec_redac_off$id'>" .
		_T('bouton_radio_afficher').
	  ' :</label> ';
+8 −1
Numéro de ligne d'origine Numéro de ligne de diff Ligne de diff
@@ -63,7 +63,6 @@ tr.calendrier-3jours > td > div {border: 0;}

.calendrier-evt { cursor: auto; position: absolute; overflow: hidden; -moz-opacity: 0.6; filter: alpha(opacity=60); font-family: Arial, Sans, sans-serif;}


.calendrier-annee { background: #AAA; padding: 3px; margin: 1px; font-family: Verdana, Geneva, Sans, sans-serif; font-size: 10px; font-weight: bold; color: #FFF; }
.calendrier-annee:hover { color: #000; background-color: #FFF; }

@@ -119,3 +118,11 @@ span.calendrier-jour-m { font-weight: normal; }
.calendrier-couleur13i { background: #666500; border: 1px solid #FFFFE0; color: #FFFFE0; } /* Caca d'oie */
.calendrier-couleur14 { background: #F5EEE5; border: 1px solid #8C6635; color: #8C6635; } /* Marron */
.calendrier-couleur14i { background: #8C6635; border: 1px solid #F5EEE5; color: #F5EEE5; } /* Marron */

.calendrier-summary {font-family: Verdana, Geneva, Sans, sans-serif; font-weight: bold;}

.calendrier-location {font-family: Verdana, Geneva, Sans, sans-serif; border:0}

.calendrier-attendee {border:0}

.calendrier-url {border: 0}