Sunbird: comment héberger un calendrier sur le Web?

Vous pouvez discuter dans cette catégorie des logiciels et extensions tiers créés à partir des technologies Mozilla.
Répondre
Sim
Iguane
Messages : 568
Enregistré le : 29 sept. 2003, 10:23

Sunbird: comment héberger un calendrier sur le Web?

Message par Sim » 01 nov. 2004, 21:21

Il semble possible de mettre un calendrier Sunbird sur un site distant et de le consulter de partout, mais concrètement comment fait-on ? où trouve-t-on de ces sites distants Webdav où héberger son calendrier??? Merci
Ubuntu LTS

Humpfff
Tyrannosaurus Rex
Messages : 2451
Enregistré le : 05 avr. 2004, 13:23

Message par Humpfff » 01 nov. 2004, 23:59

Des pistes par ici, si ça peut t'aider :
http://www.geckozone.org/forum/viewtopi ... ar+sunbird
http://www.geckozone.org/forum/viewtopi ... ar+sunbird
N'hésites pas à faire une recherche sur ce forum avec les mots-clé "Calendar" ou "Sunbird"

Sim
Iguane
Messages : 568
Enregistré le : 29 sept. 2003, 10:23

Message par Sim » 02 nov. 2004, 07:49

merci beaucoup... je dois avouer que pour une fois côté recherche préalable j'avais été bien paresseux... toutes mes excuses!
Ubuntu LTS

Sim
Iguane
Messages : 568
Enregistré le : 29 sept. 2003, 10:23

Message par Sim » 11 nov. 2004, 11:41

J'ai pu installer un calendrier distant sur icalx en suivant pour Sunbird l'équivalent des indications données pour le Calendar de la suite Mozilla à l'adresse:
http://www.geckozone.org/forum/viewtopi ... ar+sunbird
fournie plus haut par Humpff. En gros cela marche et j'ai pu accéder au calendrier à partir de plusieurs machines etc. toutefois il reste quelque chose que je n'arrive pas à bien cerner:
- lorsqu'on dispose d'un calendrier distant installé sur icalx il serait très bien d'en avoir aussi une (des) copie(s) locales pour le cas où l'ordinateur étant en état de marche la connexion Internet elle serait accidentellement inaccessible, est-ce que quelque chose comme ça est possible? est-ce qu'un calendrier distant peut avoir aussi une version/copie/sauvegarde locale??
Ubuntu LTS

Sim
Iguane
Messages : 568
Enregistré le : 29 sept. 2003, 10:23

Message par Sim » 11 nov. 2004, 22:23

personne ne sait ce qu'il en est de cette affaire de copie locale vs calendrier distant????
Ubuntu LTS

Sim
Iguane
Messages : 568
Enregistré le : 29 sept. 2003, 10:23

Message par Sim » 11 nov. 2004, 22:59

bon je viens de comprendre qu'il y a un moyen simple: on va sur son compte icalx et là on trouve le calendrier en .ics (le format utilisé par Sunbird) et aussi en html. On peut ouvrir l'un ou l'autre en cliquant dessus puis tout simplement l'enregistrer sur son disque local. Mais la question que je me posais était est-ce qu'on peut faire ça à partir de Sunbird?
Ubuntu LTS

penpen

Message par penpen » 12 nov. 2004, 22:57

Personnellement j'utilise mon espace personnel chez free pour stocker mes calendriers distants.
Ensuite un script php (une adaptation de celui fourni par phpicalendar) me permet d'émuler le fonctionnement d'un serveur webdav. L'url de souscription au calendrier distant est du style: http://monsite/calendrier/calendars/pub ... ravail.ics

Coté pratique, l'application phpicalendar permet de consulter mes calendriers sur internet depuis n'importe quel ordinateur sans installer sunbird.

Edern

Message par Edern » 15 nov. 2004, 18:52

penpen a écrit :Personnellement j'utilise mon espace personnel chez free pour stocker mes calendriers distants.
Ensuite un script php (une adaptation de celui fourni par phpicalendar) me permet d'émuler le fonctionnement d'un serveur webdav. L'url de souscription au calendrier distant est du style: http://monsite/calendrier/calendars/pub ... ravail.ics

Coté pratique, l'application phpicalendar permet de consulter mes calendriers sur internet depuis n'importe quel ordinateur sans installer sunbird.
Idem ! Sauf que je n'ai pas adapté les scripts de phpicalendar pour émuler du Webdav, je les utilise tels quels. A cause de ça je ne peux pas publier mes modifications de calendrier en direct live mais uniquement en faisant "publier entièrement le calendrier" ... m'enfin ça marche déjà pas mal !!

Penpen, tu peux publier ton calendrier Sunbird en direct live ?

Sim
Iguane
Messages : 568
Enregistré le : 29 sept. 2003, 10:23

Message par Sim » 15 nov. 2004, 19:07

intéressant tout ça... un peu plus de détails possible?? je croyais que l'espace personnel de Free ne pouvait pas être utilisé comme espace de stockage? comment vous faites au juste pour stocker sur Free?
Ubuntu LTS

penpen

Message par penpen » 15 nov. 2004, 21:33

Mes modifications son publiées en sur le calendrier distant (Je sais plus trop si il fait une publication complète ou incrémentale... Faudrait que je re-regarde).
Lorsque j'ajoute un évennement Sunbird demande la derniere version du calendrier le met à jour puis renvoi les modifications (ca doit donc être une publication complète).

Le script fournis par phpicalendar n'est pas compatible avec la configuration PHP de Free. Mais rien de bien méchant à modifier. Je peux vous fournir le script si vous voulez.

Pour l'espace de stockage chez free (espace pages perso), c'est de la théorie pour éviter les abus. Et puis, c'est pas vraiment uniquement à but de stockage puis ce que ça me permet d'afficher mon calendrier en ligne (un page internet donc).
(Soit dis en passant, je stocke plein de fichiers chez free, ils ne m'ont jamais rien dit).
Pour te donner une idée sim voilà une démo de phpicalendar: demo.

Sim
Iguane
Messages : 568
Enregistré le : 29 sept. 2003, 10:23

Message par Sim » 16 nov. 2004, 13:58

merci beaucoup - j'essaierai d'installer mon calendrier (qui est sous icalx) dans mon espace (encore jamais utilisé) de Free dès que j'aurai un peu de temps...
Ubuntu LTS

Invité

Icalx

Message par Invité » 17 nov. 2004, 14:42

Bonjour,

Intéressé par votre discussion, j'ai eu envi de créer un calendrier sur Icalx. Il est créé mais je ne comprends pas comment l'ouvrir.
Faut-il l'installer sur un serveur Web?
Si oui comment procéder?

Merci pour votre aide.

Bruno

Edern

Message par Edern » 18 nov. 2004, 10:50

penpen a écrit :Mes modifications son publiées en sur le calendrier distant (Je sais plus trop si il fait une publication complète ou incrémentale... Faudrait que je re-regarde).
Lorsque j'ajoute un évennement Sunbird demande la derniere version du calendrier le met à jour puis renvoi les modifications (ca doit donc être une publication complète).

Le script fournis par phpicalendar n'est pas compatible avec la configuration PHP de Free. Mais rien de bien méchant à modifier. Je peux vous fournir le script si vous voulez.

Pour l'espace de stockage chez free (espace pages perso), c'est de la théorie pour éviter les abus. Et puis, c'est pas vraiment uniquement à but de stockage puis ce que ça me permet d'afficher mon calendrier en ligne (un page internet donc).
(Soit dis en passant, je stocke plein de fichiers chez free, ils ne m'ont jamais rien dit).
Pour te donner une idée sim voilà une démo de phpicalendar: demo.
Penpen, normalement Sunbird fait la différence entre la publication à la volée comme tu le fais et puis la publication du calendrier "en entier". Dans ce dernier cas, tu fais toutes tes modifs sur ton calendrier et une fois que tu as fini tu fais un clic droit sur le calendrier "Publier le calendrier en entier".

Je veux bien que tu mettes à disposition ton script, ça me dépannerait bien ;-)

Merci pour tous ces renseignements !

A++

Sim
Iguane
Messages : 568
Enregistré le : 29 sept. 2003, 10:23

Message par Sim » 19 nov. 2004, 14:55

en ce qui concerne l'utilisation du FTP de Free, je viens de voir sur le site du fournisseur que les connexions FTP de Free ne sont possibles qu'à partir de la France métropolitaine!! donc si je comprends bien pas question de consulter ou modifier son calendrier quand on est en voyage! c'est suffisant pour me faire rester sur icalx!
Ubuntu LTS

penpen

Message par penpen » 20 nov. 2004, 14:25

Je viens de voir ca pour free (avant ca n'existait pas)... raison juridique apparament ( LCEN ? ). Je pourrais toujours changer de serveur ftp si je vais à l'étranger. Normalement n'importe quel espace web supportant le PHP >= 4.3 devrais faire l'affaire.

Edern voici le script:
(J'ai pas changé grand chose par rapport à celui proposé, c'est juste un patch codé rapidement pour que ca marche chez free)

Code : Tout sélectionner

<?php

/*
Extension to PHP iCalendar for supporting publishing from Apple iCal
Date: 11.12.2003
Author: Dietrich Ayala
Copyright 2003 Dietrich Ayala

Description:
This allows iCal to publish to your PHP iCalendar site *without* WebDAV support.
This helps with commercial hosts where WebDAV is not available.

Features:
- supports publishing and deleting calendars
- does not require WebDAV

Installation:
1. place this file in your PHP iCalendar calendars directory (or anywhere else)
2. configure path to PHP iCalendar config file (below)
3. make sure that PHP has write access to the calendars directory (or whatever you set $calendar_path to)
4. set up directory security on your calendars directory
5. turn on publishing in your PHP iCalendar config file by setting $phpicalendar_publishing to 1.

Usage (Apple iCal):
1. Open iCal, select a calendar for publishing
2. Select "Publish" from the "Calendar" menu
3. Configure to your liking, and set the URL to (eg): http://localhost/~dietricha/calendar/calendars/publish.php
4. Click the "Publish" button

Usage (Mozilla Calendar):
1. Your version of php and apache MUST support $_SERVER['PATH_INFO']
2. You must have supplied a username and password in your config.php
2. Create your calendar in Mozilla
3. Add something to it (it must not be empty)
4. Manually upload it to your calendars directory.
5. Make sure that the webserver can write to the calendar file.
(Mozilla will not save to the remote location without first downloading a copy
from the remote location)
6. Edit your calendar setup in mozilla
   Location http://example.com/path/to/publish.php/calendarname.ics
   calendarname.ics should be a unique filename and must end with .ics
7. Username (username from config.php)
8. Password (password from config.php)
9. Check "publish changes automatically"

Security:
The calendars directory should be configured to require authentication. This can be done via any methods
supported by your webserver. There is much documentation available on the web for doing per-directory
authentication for Apache. This protects any private calendar data, and prevents unauthorized users
from updating or deleting your calendar data.
There's also code below that forwards any GET requests to the PHP iCalendar front page.

Troubleshooting:
You can turn on logging by setting the PHPICALENDAR_LOG_PUBLISHING constant to 1 below.
This will write out a log file to the same directory as this script.
Don't forget to turn off logging when done!!

*/

// include PHP iCalendar configuration variables
include('../config.inc.php');

// set calendar path, or just use current directory
$calendar_path = (isset($calendar_path) && $calendar_path != '') ? $calendar_path : '';

// allow/disallow publishing

$phpicalendar_publishing = isset($phpicalendar_publishing) ? $phpicalendar_publishing : 0;
define( 'PHPICALENDAR_PUBLISHING', $phpicalendar_publishing );

// toggle logging
define( 'PHPICALENDAR_LOG_PUBLISHING', 0 );

/* force GET requests to main calendar view
if($_SERVER['REQUEST_METHOD'] == 'GET')
{
	header('Location: '.$default_path);
	return;
}
*/
if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="Calendar"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'You must be authorized!';
    exit;
} else {
    //    logmsg($_SERVER['PHP_AUTH_PW'] . '|' . $_SERVER['PHP_AUTH_USER']);
    if ($_SERVER['PHP_AUTH_USER'] != $auth_internal_username || $_SERVER['PHP_AUTH_PW'] != $auth_internal_password) {
	header('WWW-Authenticate: Basic realm="Calendar"');
	header('HTTP/1.0 401 Unauthorized');
	echo 'You must be authorized!';
	exit;
    }

// On définis PATH_INFO
$_SERVER['PATH_INFO'] = $_SERVER['SCRIPT_FILENAME']."/".$_SERVER["QUERY_STRING"];

    // only allow publishing if explicitly enabled
    if(PHPICALENDAR_PUBLISHING == 1) {
	// unpublishing
logmsg(date("d/m - H:i")." Méthode: ".$_SERVER['REQUEST_METHOD']);
	if($_SERVER['REQUEST_METHOD'] == 'DELETE') {
	    // get calendar filename
	    $calendar_file = $calendar_path.substr($_SERVER['REQUEST_URI'] , ( strrpos($_SERVER['REQUEST_URI'], '/') + 1) ) ;
	    logmsg('received request to delete '.$calendar_file);
	    // remove calendar file
	    if(!unlink($calendar_file)) {
		logmsg('unable to delete the calendar file');
	    } else {
		logmsg('deleted');
	    }
	    return;
	}
	
	// publishing
	if($_SERVER['REQUEST_METHOD'] == 'PUT') {
	    // get calendar data
	    if($fp = fopen('php://input','r')) {
		while(!@feof($fp)) {
		    $data .= fgets($fp,4096);
		}
logmsg(date("d/m - H:i").$data);
		@fclose($fp);
	    } else {
		logmsg('unable to read input data');
	    }
	    if(isset($data)) {
		// get calendar name
		$cal_arr = explode("\n",$data);
		
		foreach($cal_arr as $k => $v) {
		    if(strstr($v,'X-WR-CALNAME:')) {
			$arr = explode(':',$v);
			$calendar_name = trim($arr[1]);
			break;
		    }
		}
		
		$calendar_name = isset($calendar_name) ? $calendar_name : 'default';
logmsg(date("d/m - H:i").$calendar_name);
		
		if (isset($_SERVER['PATH_INFO'])) {
		    preg_match("/\/([ A-Za-z0-9.]*).ics/i",$_SERVER['PATH_INFO'],$matches);
		    $calendar_name = $matches[1];
		}
		
		// write to file
		if($fp = fopen($calendar_path.$calendar_name.'.ics','w+')) {
		    
		    fputs($fp, $data, strlen($data) );
		    @fclose($fp);
		}
		else {
		    logmsg( 'couldnt open file '.$calendar_path.$calendar_name.'.ics' );
		}
	    }
	}
	if ($_SERVER['REQUEST_METHOD'] == 'GET') {

	    if (isset($_SERVER['PATH_INFO'])) {
logmsg(date("d/m - H:i")." PATH_INFO marche: ".$_SERVER['PATH_INFO']);
		preg_match("/\/([ A-Za-z0-9._]*).ics/i",$_SERVER['PATH_INFO'],$matches);
logmsg(date("d/m - H:i")." matches? ".print_r($matches, true));
		$icsfile = $matches[1];
		// get calendar data
		if (file_exists($calendar_path . $icsfile . '.ics') &&
		    is_readable($calendar_path . $icsfile . '.ics') &&
		    is_file($calendar_path . $icsfile . '.ics')
		    ) {
		    echo file_get_contents($calendar_path . $icsfile . '.ics');
		} else {
logmsg(date("d/m - H:i")." le fichier existe pas: ".$icsfile);
		}
	    } else {
logmsg(date("d/m - H:i")." PATH_INFO ne marche pas");
          }
	}
    }
}
// for logging
function logmsg($str){
    if(defined('PHPICALENDAR_LOG_PUBLISHING') &&
       PHPICALENDAR_LOG_PUBLISHING == 1) {
	if($fp = fopen('publish_log.txt','a+')) {
	    $str .= "\n";
	    fputs($fp, $str, strlen($str) );
	    fclose($fp);
	}
    }
}
?>

Dans le fichier config.inc il faut penser à definir
$phpicalendar_publishing à 1.
$auth_method à internal.
$auth_internal_username
$auth_internal_password



Il y a une derniere manipulation aussi a faire. Il faut d'abord placer un calendrier sur le ftp. Puis souscrire à celui-ci. Sinon sunbird (ou le script ? ) n'est pas capable de créer la première fois le fichier.

Répondre

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité